Repository: suitetecsa/suitetecsa-sdk-python (language: python)

Issue:
Implementar métodos faltantes para nauta hogar.
Implementar los métodos necesarios para pagar el servicio de nauta hogar con el saldo de la cuenta.


Discussion / hints:

Fix patch:
diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml
old mode 100644
new mode 100755
index 41bd749..46ec02d
--- a/.github/workflows/python-app.yml
+++ b/.github/workflows/python-app.yml
@@ -36,4 +36,4 @@ jobs:
         flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
     - name: Test with pytest
       run: |
-        python -m pytest
+        py.test
diff --git a/.gitignore b/.gitignore
new file mode 100755
index 0000000..df8d229
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2059 @@
+venv/lib64
+venv/pyvenv.cfg
+venv/bin/activate
+venv/bin/activate.csh
+venv/bin/activate.fish
+venv/bin/Activate.ps1
+venv/bin/autopep8
+venv/bin/normalizer
+venv/bin/pip
+venv/bin/pip3
+venv/bin/pip3.10
+venv/bin/pip3.11
+venv/bin/py.test
+venv/bin/pycodestyle
+venv/bin/pyproject-build
+venv/bin/pytest
+venv/bin/python
+venv/bin/python3
+venv/bin/python3.11
+venv/lib/python3.11/site-packages/autopep8.py
+venv/lib/python3.11/site-packages/distutils-precedence.pth
+venv/lib/python3.11/site-packages/py.py
+venv/lib/python3.11/site-packages/pycodestyle.py
+venv/lib/python3.11/site-packages/six.py
+venv/lib/python3.11/site-packages/__pycache__/autopep8.cpython-311.pyc
+venv/lib/python3.11/site-packages/__pycache__/py.cpython-311.pyc
+venv/lib/python3.11/site-packages/__pycache__/pycodestyle.cpython-311.pyc
+venv/lib/python3.11/site-packages/__pycache__/six.cpython-311.pyc
+venv/lib/python3.11/site-packages/_distutils_hack/__init__.py
+venv/lib/python3.11/site-packages/_distutils_hack/override.py
+venv/lib/python3.11/site-packages/_distutils_hack/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/_distutils_hack/__pycache__/override.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__init__.py
+venv/lib/python3.11/site-packages/_pytest/_argcomplete.py
+venv/lib/python3.11/site-packages/_pytest/_version.py
+venv/lib/python3.11/site-packages/_pytest/cacheprovider.py
+venv/lib/python3.11/site-packages/_pytest/capture.py
+venv/lib/python3.11/site-packages/_pytest/compat.py
+venv/lib/python3.11/site-packages/_pytest/debugging.py
+venv/lib/python3.11/site-packages/_pytest/deprecated.py
+venv/lib/python3.11/site-packages/_pytest/doctest.py
+venv/lib/python3.11/site-packages/_pytest/faulthandler.py
+venv/lib/python3.11/site-packages/_pytest/fixtures.py
+venv/lib/python3.11/site-packages/_pytest/freeze_support.py
+venv/lib/python3.11/site-packages/_pytest/helpconfig.py
+venv/lib/python3.11/site-packages/_pytest/hookspec.py
+venv/lib/python3.11/site-packages/_pytest/junitxml.py
+venv/lib/python3.11/site-packages/_pytest/legacypath.py
+venv/lib/python3.11/site-packages/_pytest/logging.py
+venv/lib/python3.11/site-packages/_pytest/main.py
+venv/lib/python3.11/site-packages/_pytest/monkeypatch.py
+venv/lib/python3.11/site-packages/_pytest/nodes.py
+venv/lib/python3.11/site-packages/_pytest/nose.py
+venv/lib/python3.11/site-packages/_pytest/outcomes.py
+venv/lib/python3.11/site-packages/_pytest/pastebin.py
+venv/lib/python3.11/site-packages/_pytest/pathlib.py
+venv/lib/python3.11/site-packages/_pytest/py.typed
+venv/lib/python3.11/site-packages/_pytest/pytester_assertions.py
+venv/lib/python3.11/site-packages/_pytest/pytester.py
+venv/lib/python3.11/site-packages/_pytest/python_api.py
+venv/lib/python3.11/site-packages/_pytest/python_path.py
+venv/lib/python3.11/site-packages/_pytest/python.py
+venv/lib/python3.11/site-packages/_pytest/recwarn.py
+venv/lib/python3.11/site-packages/_pytest/reports.py
+venv/lib/python3.11/site-packages/_pytest/runner.py
+venv/lib/python3.11/site-packages/_pytest/scope.py
+venv/lib/python3.11/site-packages/_pytest/setuponly.py
+venv/lib/python3.11/site-packages/_pytest/setupplan.py
+venv/lib/python3.11/site-packages/_pytest/skipping.py
+venv/lib/python3.11/site-packages/_pytest/stash.py
+venv/lib/python3.11/site-packages/_pytest/stepwise.py
+venv/lib/python3.11/site-packages/_pytest/terminal.py
+venv/lib/python3.11/site-packages/_pytest/threadexception.py
+venv/lib/python3.11/site-packages/_pytest/timing.py
+venv/lib/python3.11/site-packages/_pytest/tmpdir.py
+venv/lib/python3.11/site-packages/_pytest/unittest.py
+venv/lib/python3.11/site-packages/_pytest/unraisableexception.py
+venv/lib/python3.11/site-packages/_pytest/warning_types.py
+venv/lib/python3.11/site-packages/_pytest/warnings.py
+venv/lib/python3.11/site-packages/_pytest/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/_argcomplete.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/_version.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/cacheprovider.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/capture.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/debugging.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/deprecated.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/doctest.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/faulthandler.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/fixtures.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/freeze_support.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/helpconfig.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/hookspec.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/junitxml.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/legacypath.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/logging.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/main.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/monkeypatch.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/nodes.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/nose.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/outcomes.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/pastebin.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/pathlib.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/pytester_assertions.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/pytester.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/python_api.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/python_path.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/python.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/recwarn.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/reports.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/runner.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/scope.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/setuponly.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/setupplan.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/skipping.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/stash.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/stepwise.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/terminal.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/threadexception.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/timing.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/tmpdir.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/unittest.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/unraisableexception.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/warning_types.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/__pycache__/warnings.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/_code/__init__.py
+venv/lib/python3.11/site-packages/_pytest/_code/code.py
+venv/lib/python3.11/site-packages/_pytest/_code/source.py
+venv/lib/python3.11/site-packages/_pytest/_code/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/_code/__pycache__/code.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/_code/__pycache__/source.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/_io/__init__.py
+venv/lib/python3.11/site-packages/_pytest/_io/saferepr.py
+venv/lib/python3.11/site-packages/_pytest/_io/terminalwriter.py
+venv/lib/python3.11/site-packages/_pytest/_io/wcwidth.py
+venv/lib/python3.11/site-packages/_pytest/_io/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/_io/__pycache__/saferepr.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/_io/__pycache__/terminalwriter.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/_io/__pycache__/wcwidth.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/_py/__init__.py
+venv/lib/python3.11/site-packages/_pytest/_py/error.py
+venv/lib/python3.11/site-packages/_pytest/_py/path.py
+venv/lib/python3.11/site-packages/_pytest/_py/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/_py/__pycache__/error.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/_py/__pycache__/path.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/assertion/__init__.py
+venv/lib/python3.11/site-packages/_pytest/assertion/rewrite.py
+venv/lib/python3.11/site-packages/_pytest/assertion/truncate.py
+venv/lib/python3.11/site-packages/_pytest/assertion/util.py
+venv/lib/python3.11/site-packages/_pytest/assertion/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/assertion/__pycache__/rewrite.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/assertion/__pycache__/truncate.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/assertion/__pycache__/util.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/config/__init__.py
+venv/lib/python3.11/site-packages/_pytest/config/argparsing.py
+venv/lib/python3.11/site-packages/_pytest/config/compat.py
+venv/lib/python3.11/site-packages/_pytest/config/exceptions.py
+venv/lib/python3.11/site-packages/_pytest/config/findpaths.py
+venv/lib/python3.11/site-packages/_pytest/config/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/config/__pycache__/argparsing.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/config/__pycache__/compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/config/__pycache__/exceptions.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/config/__pycache__/findpaths.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/mark/__init__.py
+venv/lib/python3.11/site-packages/_pytest/mark/expression.py
+venv/lib/python3.11/site-packages/_pytest/mark/structures.py
+venv/lib/python3.11/site-packages/_pytest/mark/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/mark/__pycache__/expression.cpython-311.pyc
+venv/lib/python3.11/site-packages/_pytest/mark/__pycache__/structures.cpython-311.pyc
+venv/lib/python3.11/site-packages/attr/__init__.py
+venv/lib/python3.11/site-packages/attr/__init__.pyi
+venv/lib/python3.11/site-packages/attr/_cmp.py
+venv/lib/python3.11/site-packages/attr/_cmp.pyi
+venv/lib/python3.11/site-packages/attr/_compat.py
+venv/lib/python3.11/site-packages/attr/_config.py
+venv/lib/python3.11/site-packages/attr/_funcs.py
+venv/lib/python3.11/site-packages/attr/_make.py
+venv/lib/python3.11/site-packages/attr/_next_gen.py
+venv/lib/python3.11/site-packages/attr/_typing_compat.pyi
+venv/lib/python3.11/site-packages/attr/_version_info.py
+venv/lib/python3.11/site-packages/attr/_version_info.pyi
+venv/lib/python3.11/site-packages/attr/converters.py
+venv/lib/python3.11/site-packages/attr/converters.pyi
+venv/lib/python3.11/site-packages/attr/exceptions.py
+venv/lib/python3.11/site-packages/attr/exceptions.pyi
+venv/lib/python3.11/site-packages/attr/filters.py
+venv/lib/python3.11/site-packages/attr/filters.pyi
+venv/lib/python3.11/site-packages/attr/py.typed
+venv/lib/python3.11/site-packages/attr/setters.py
+venv/lib/python3.11/site-packages/attr/setters.pyi
+venv/lib/python3.11/site-packages/attr/validators.py
+venv/lib/python3.11/site-packages/attr/validators.pyi
+venv/lib/python3.11/site-packages/attr/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/attr/__pycache__/_cmp.cpython-311.pyc
+venv/lib/python3.11/site-packages/attr/__pycache__/_compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/attr/__pycache__/_config.cpython-311.pyc
+venv/lib/python3.11/site-packages/attr/__pycache__/_funcs.cpython-311.pyc
+venv/lib/python3.11/site-packages/attr/__pycache__/_make.cpython-311.pyc
+venv/lib/python3.11/site-packages/attr/__pycache__/_next_gen.cpython-311.pyc
+venv/lib/python3.11/site-packages/attr/__pycache__/_version_info.cpython-311.pyc
+venv/lib/python3.11/site-packages/attr/__pycache__/converters.cpython-311.pyc
+venv/lib/python3.11/site-packages/attr/__pycache__/exceptions.cpython-311.pyc
+venv/lib/python3.11/site-packages/attr/__pycache__/filters.cpython-311.pyc
+venv/lib/python3.11/site-packages/attr/__pycache__/setters.cpython-311.pyc
+venv/lib/python3.11/site-packages/attr/__pycache__/validators.cpython-311.pyc
+venv/lib/python3.11/site-packages/attrs/__init__.py
+venv/lib/python3.11/site-packages/attrs/__init__.pyi
+venv/lib/python3.11/site-packages/attrs/converters.py
+venv/lib/python3.11/site-packages/attrs/exceptions.py
+venv/lib/python3.11/site-packages/attrs/filters.py
+venv/lib/python3.11/site-packages/attrs/py.typed
+venv/lib/python3.11/site-packages/attrs/setters.py
+venv/lib/python3.11/site-packages/attrs/validators.py
+venv/lib/python3.11/site-packages/attrs/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/attrs/__pycache__/converters.cpython-311.pyc
+venv/lib/python3.11/site-packages/attrs/__pycache__/exceptions.cpython-311.pyc
+venv/lib/python3.11/site-packages/attrs/__pycache__/filters.cpython-311.pyc
+venv/lib/python3.11/site-packages/attrs/__pycache__/setters.cpython-311.pyc
+venv/lib/python3.11/site-packages/attrs/__pycache__/validators.cpython-311.pyc
+venv/lib/python3.11/site-packages/attrs-22.2.0.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/attrs-22.2.0.dist-info/LICENSE
+venv/lib/python3.11/site-packages/attrs-22.2.0.dist-info/METADATA
+venv/lib/python3.11/site-packages/attrs-22.2.0.dist-info/RECORD
+venv/lib/python3.11/site-packages/attrs-22.2.0.dist-info/top_level.txt
+venv/lib/python3.11/site-packages/attrs-22.2.0.dist-info/WHEEL
+venv/lib/python3.11/site-packages/autopep8-2.0.1.dist-info/AUTHORS.rst
+venv/lib/python3.11/site-packages/autopep8-2.0.1.dist-info/entry_points.txt
+venv/lib/python3.11/site-packages/autopep8-2.0.1.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/autopep8-2.0.1.dist-info/LICENSE
+venv/lib/python3.11/site-packages/autopep8-2.0.1.dist-info/METADATA
+venv/lib/python3.11/site-packages/autopep8-2.0.1.dist-info/RECORD
+venv/lib/python3.11/site-packages/autopep8-2.0.1.dist-info/REQUESTED
+venv/lib/python3.11/site-packages/autopep8-2.0.1.dist-info/top_level.txt
+venv/lib/python3.11/site-packages/autopep8-2.0.1.dist-info/WHEEL
+venv/lib/python3.11/site-packages/beautifulsoup4-4.11.1.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/beautifulsoup4-4.11.1.dist-info/METADATA
+venv/lib/python3.11/site-packages/beautifulsoup4-4.11.1.dist-info/RECORD
+venv/lib/python3.11/site-packages/beautifulsoup4-4.11.1.dist-info/REQUESTED
+venv/lib/python3.11/site-packages/beautifulsoup4-4.11.1.dist-info/top_level.txt
+venv/lib/python3.11/site-packages/beautifulsoup4-4.11.1.dist-info/WHEEL
+venv/lib/python3.11/site-packages/bs4/__init__.py
+venv/lib/python3.11/site-packages/bs4/dammit.py
+venv/lib/python3.11/site-packages/bs4/diagnose.py
+venv/lib/python3.11/site-packages/bs4/element.py
+venv/lib/python3.11/site-packages/bs4/formatter.py
+venv/lib/python3.11/site-packages/bs4/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/__pycache__/dammit.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/__pycache__/diagnose.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/__pycache__/element.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/__pycache__/formatter.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/builder/__init__.py
+venv/lib/python3.11/site-packages/bs4/builder/_html5lib.py
+venv/lib/python3.11/site-packages/bs4/builder/_htmlparser.py
+venv/lib/python3.11/site-packages/bs4/builder/_lxml.py
+venv/lib/python3.11/site-packages/bs4/builder/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/builder/__pycache__/_html5lib.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/builder/__pycache__/_htmlparser.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/builder/__pycache__/_lxml.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/tests/__init__.py
+venv/lib/python3.11/site-packages/bs4/tests/test_builder_registry.py
+venv/lib/python3.11/site-packages/bs4/tests/test_builder.py
+venv/lib/python3.11/site-packages/bs4/tests/test_dammit.py
+venv/lib/python3.11/site-packages/bs4/tests/test_docs.py
+venv/lib/python3.11/site-packages/bs4/tests/test_element.py
+venv/lib/python3.11/site-packages/bs4/tests/test_formatter.py
+venv/lib/python3.11/site-packages/bs4/tests/test_html5lib.py
+venv/lib/python3.11/site-packages/bs4/tests/test_htmlparser.py
+venv/lib/python3.11/site-packages/bs4/tests/test_lxml.py
+venv/lib/python3.11/site-packages/bs4/tests/test_navigablestring.py
+venv/lib/python3.11/site-packages/bs4/tests/test_pageelement.py
+venv/lib/python3.11/site-packages/bs4/tests/test_soup.py
+venv/lib/python3.11/site-packages/bs4/tests/test_tag.py
+venv/lib/python3.11/site-packages/bs4/tests/test_tree.py
+venv/lib/python3.11/site-packages/bs4/tests/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/tests/__pycache__/test_builder_registry.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/tests/__pycache__/test_builder.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/tests/__pycache__/test_dammit.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/tests/__pycache__/test_docs.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/tests/__pycache__/test_element.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/tests/__pycache__/test_formatter.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/tests/__pycache__/test_html5lib.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/tests/__pycache__/test_htmlparser.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/tests/__pycache__/test_lxml.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/tests/__pycache__/test_navigablestring.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/tests/__pycache__/test_pageelement.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/tests/__pycache__/test_soup.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/tests/__pycache__/test_tag.cpython-311.pyc
+venv/lib/python3.11/site-packages/bs4/tests/__pycache__/test_tree.cpython-311.pyc
+venv/lib/python3.11/site-packages/build/__init__.py
+venv/lib/python3.11/site-packages/build/__main__.py
+venv/lib/python3.11/site-packages/build/env.py
+venv/lib/python3.11/site-packages/build/py.typed
+venv/lib/python3.11/site-packages/build/util.py
+venv/lib/python3.11/site-packages/build/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/build/__pycache__/__main__.cpython-311.pyc
+venv/lib/python3.11/site-packages/build/__pycache__/env.cpython-311.pyc
+venv/lib/python3.11/site-packages/build/__pycache__/util.cpython-311.pyc
+venv/lib/python3.11/site-packages/build-0.10.0.dist-info/entry_points.txt
+venv/lib/python3.11/site-packages/build-0.10.0.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/build-0.10.0.dist-info/LICENSE
+venv/lib/python3.11/site-packages/build-0.10.0.dist-info/METADATA
+venv/lib/python3.11/site-packages/build-0.10.0.dist-info/RECORD
+venv/lib/python3.11/site-packages/build-0.10.0.dist-info/REQUESTED
+venv/lib/python3.11/site-packages/build-0.10.0.dist-info/WHEEL
+venv/lib/python3.11/site-packages/certifi/__init__.py
+venv/lib/python3.11/site-packages/certifi/__main__.py
+venv/lib/python3.11/site-packages/certifi/cacert.pem
+venv/lib/python3.11/site-packages/certifi/core.py
+venv/lib/python3.11/site-packages/certifi/py.typed
+venv/lib/python3.11/site-packages/certifi/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/certifi/__pycache__/__main__.cpython-311.pyc
+venv/lib/python3.11/site-packages/certifi/__pycache__/core.cpython-311.pyc
+venv/lib/python3.11/site-packages/certifi-2022.12.7.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/certifi-2022.12.7.dist-info/LICENSE
+venv/lib/python3.11/site-packages/certifi-2022.12.7.dist-info/METADATA
+venv/lib/python3.11/site-packages/certifi-2022.12.7.dist-info/RECORD
+venv/lib/python3.11/site-packages/certifi-2022.12.7.dist-info/top_level.txt
+venv/lib/python3.11/site-packages/certifi-2022.12.7.dist-info/WHEEL
+venv/lib/python3.11/site-packages/charset_normalizer/__init__.py
+venv/lib/python3.11/site-packages/charset_normalizer/api.py
+venv/lib/python3.11/site-packages/charset_normalizer/cd.py
+venv/lib/python3.11/site-packages/charset_normalizer/constant.py
+venv/lib/python3.11/site-packages/charset_normalizer/legacy.py
+venv/lib/python3.11/site-packages/charset_normalizer/md__mypyc.cpython-311-x86_64-linux-gnu.so
+venv/lib/python3.11/site-packages/charset_normalizer/md.cpython-311-x86_64-linux-gnu.so
+venv/lib/python3.11/site-packages/charset_normalizer/md.py
+venv/lib/python3.11/site-packages/charset_normalizer/models.py
+venv/lib/python3.11/site-packages/charset_normalizer/py.typed
+venv/lib/python3.11/site-packages/charset_normalizer/utils.py
+venv/lib/python3.11/site-packages/charset_normalizer/version.py
+venv/lib/python3.11/site-packages/charset_normalizer/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/charset_normalizer/__pycache__/api.cpython-311.pyc
+venv/lib/python3.11/site-packages/charset_normalizer/__pycache__/cd.cpython-311.pyc
+venv/lib/python3.11/site-packages/charset_normalizer/__pycache__/constant.cpython-311.pyc
+venv/lib/python3.11/site-packages/charset_normalizer/__pycache__/legacy.cpython-311.pyc
+venv/lib/python3.11/site-packages/charset_normalizer/__pycache__/md.cpython-311.pyc
+venv/lib/python3.11/site-packages/charset_normalizer/__pycache__/models.cpython-311.pyc
+venv/lib/python3.11/site-packages/charset_normalizer/__pycache__/utils.cpython-311.pyc
+venv/lib/python3.11/site-packages/charset_normalizer/__pycache__/version.cpython-311.pyc
+venv/lib/python3.11/site-packages/charset_normalizer/assets/__init__.py
+venv/lib/python3.11/site-packages/charset_normalizer/assets/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/charset_normalizer/cli/__init__.py
+venv/lib/python3.11/site-packages/charset_normalizer/cli/normalizer.py
+venv/lib/python3.11/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/charset_normalizer/cli/__pycache__/normalizer.cpython-311.pyc
+venv/lib/python3.11/site-packages/charset_normalizer-3.0.1.dist-info/entry_points.txt
+venv/lib/python3.11/site-packages/charset_normalizer-3.0.1.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/charset_normalizer-3.0.1.dist-info/LICENSE
+venv/lib/python3.11/site-packages/charset_normalizer-3.0.1.dist-info/METADATA
+venv/lib/python3.11/site-packages/charset_normalizer-3.0.1.dist-info/RECORD
+venv/lib/python3.11/site-packages/charset_normalizer-3.0.1.dist-info/top_level.txt
+venv/lib/python3.11/site-packages/charset_normalizer-3.0.1.dist-info/WHEEL
+venv/lib/python3.11/site-packages/html5lib/__init__.py
+venv/lib/python3.11/site-packages/html5lib/_ihatexml.py
+venv/lib/python3.11/site-packages/html5lib/_inputstream.py
+venv/lib/python3.11/site-packages/html5lib/_tokenizer.py
+venv/lib/python3.11/site-packages/html5lib/_utils.py
+venv/lib/python3.11/site-packages/html5lib/constants.py
+venv/lib/python3.11/site-packages/html5lib/html5parser.py
+venv/lib/python3.11/site-packages/html5lib/serializer.py
+venv/lib/python3.11/site-packages/html5lib/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/__pycache__/_ihatexml.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/__pycache__/_inputstream.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/__pycache__/_tokenizer.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/__pycache__/_utils.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/__pycache__/constants.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/__pycache__/html5parser.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/__pycache__/serializer.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/_trie/__init__.py
+venv/lib/python3.11/site-packages/html5lib/_trie/_base.py
+venv/lib/python3.11/site-packages/html5lib/_trie/py.py
+venv/lib/python3.11/site-packages/html5lib/_trie/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/_trie/__pycache__/_base.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/_trie/__pycache__/py.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/filters/__init__.py
+venv/lib/python3.11/site-packages/html5lib/filters/alphabeticalattributes.py
+venv/lib/python3.11/site-packages/html5lib/filters/base.py
+venv/lib/python3.11/site-packages/html5lib/filters/inject_meta_charset.py
+venv/lib/python3.11/site-packages/html5lib/filters/lint.py
+venv/lib/python3.11/site-packages/html5lib/filters/optionaltags.py
+venv/lib/python3.11/site-packages/html5lib/filters/sanitizer.py
+venv/lib/python3.11/site-packages/html5lib/filters/whitespace.py
+venv/lib/python3.11/site-packages/html5lib/filters/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/filters/__pycache__/alphabeticalattributes.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/filters/__pycache__/base.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/filters/__pycache__/inject_meta_charset.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/filters/__pycache__/lint.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/filters/__pycache__/optionaltags.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/filters/__pycache__/sanitizer.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/filters/__pycache__/whitespace.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/treeadapters/__init__.py
+venv/lib/python3.11/site-packages/html5lib/treeadapters/genshi.py
+venv/lib/python3.11/site-packages/html5lib/treeadapters/sax.py
+venv/lib/python3.11/site-packages/html5lib/treeadapters/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/treeadapters/__pycache__/genshi.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/treeadapters/__pycache__/sax.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/treebuilders/__init__.py
+venv/lib/python3.11/site-packages/html5lib/treebuilders/base.py
+venv/lib/python3.11/site-packages/html5lib/treebuilders/dom.py
+venv/lib/python3.11/site-packages/html5lib/treebuilders/etree_lxml.py
+venv/lib/python3.11/site-packages/html5lib/treebuilders/etree.py
+venv/lib/python3.11/site-packages/html5lib/treebuilders/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/treebuilders/__pycache__/base.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/treebuilders/__pycache__/dom.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/treebuilders/__pycache__/etree_lxml.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/treebuilders/__pycache__/etree.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/treewalkers/__init__.py
+venv/lib/python3.11/site-packages/html5lib/treewalkers/base.py
+venv/lib/python3.11/site-packages/html5lib/treewalkers/dom.py
+venv/lib/python3.11/site-packages/html5lib/treewalkers/etree_lxml.py
+venv/lib/python3.11/site-packages/html5lib/treewalkers/etree.py
+venv/lib/python3.11/site-packages/html5lib/treewalkers/genshi.py
+venv/lib/python3.11/site-packages/html5lib/treewalkers/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/treewalkers/__pycache__/base.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/treewalkers/__pycache__/dom.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/treewalkers/__pycache__/etree_lxml.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/treewalkers/__pycache__/etree.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib/treewalkers/__pycache__/genshi.cpython-311.pyc
+venv/lib/python3.11/site-packages/html5lib-1.1.dist-info/AUTHORS.rst
+venv/lib/python3.11/site-packages/html5lib-1.1.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/html5lib-1.1.dist-info/LICENSE
+venv/lib/python3.11/site-packages/html5lib-1.1.dist-info/METADATA
+venv/lib/python3.11/site-packages/html5lib-1.1.dist-info/RECORD
+venv/lib/python3.11/site-packages/html5lib-1.1.dist-info/REQUESTED
+venv/lib/python3.11/site-packages/html5lib-1.1.dist-info/top_level.txt
+venv/lib/python3.11/site-packages/html5lib-1.1.dist-info/WHEEL
+venv/lib/python3.11/site-packages/idna/__init__.py
+venv/lib/python3.11/site-packages/idna/codec.py
+venv/lib/python3.11/site-packages/idna/compat.py
+venv/lib/python3.11/site-packages/idna/core.py
+venv/lib/python3.11/site-packages/idna/idnadata.py
+venv/lib/python3.11/site-packages/idna/intranges.py
+venv/lib/python3.11/site-packages/idna/package_data.py
+venv/lib/python3.11/site-packages/idna/py.typed
+venv/lib/python3.11/site-packages/idna/uts46data.py
+venv/lib/python3.11/site-packages/idna/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/idna/__pycache__/codec.cpython-311.pyc
+venv/lib/python3.11/site-packages/idna/__pycache__/compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/idna/__pycache__/core.cpython-311.pyc
+venv/lib/python3.11/site-packages/idna/__pycache__/idnadata.cpython-311.pyc
+venv/lib/python3.11/site-packages/idna/__pycache__/intranges.cpython-311.pyc
+venv/lib/python3.11/site-packages/idna/__pycache__/package_data.cpython-311.pyc
+venv/lib/python3.11/site-packages/idna/__pycache__/uts46data.cpython-311.pyc
+venv/lib/python3.11/site-packages/idna-3.4.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/idna-3.4.dist-info/LICENSE.md
+venv/lib/python3.11/site-packages/idna-3.4.dist-info/METADATA
+venv/lib/python3.11/site-packages/idna-3.4.dist-info/RECORD
+venv/lib/python3.11/site-packages/idna-3.4.dist-info/WHEEL
+venv/lib/python3.11/site-packages/iniconfig/__init__.py
+venv/lib/python3.11/site-packages/iniconfig/_parse.py
+venv/lib/python3.11/site-packages/iniconfig/_version.py
+venv/lib/python3.11/site-packages/iniconfig/exceptions.py
+venv/lib/python3.11/site-packages/iniconfig/py.typed
+venv/lib/python3.11/site-packages/iniconfig/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/iniconfig/__pycache__/_parse.cpython-311.pyc
+venv/lib/python3.11/site-packages/iniconfig/__pycache__/_version.cpython-311.pyc
+venv/lib/python3.11/site-packages/iniconfig/__pycache__/exceptions.cpython-311.pyc
+venv/lib/python3.11/site-packages/iniconfig-2.0.0.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/iniconfig-2.0.0.dist-info/METADATA
+venv/lib/python3.11/site-packages/iniconfig-2.0.0.dist-info/RECORD
+venv/lib/python3.11/site-packages/iniconfig-2.0.0.dist-info/WHEEL
+venv/lib/python3.11/site-packages/iniconfig-2.0.0.dist-info/licenses/LICENSE
+venv/lib/python3.11/site-packages/packaging/__init__.py
+venv/lib/python3.11/site-packages/packaging/_elffile.py
+venv/lib/python3.11/site-packages/packaging/_manylinux.py
+venv/lib/python3.11/site-packages/packaging/_musllinux.py
+venv/lib/python3.11/site-packages/packaging/_parser.py
+venv/lib/python3.11/site-packages/packaging/_structures.py
+venv/lib/python3.11/site-packages/packaging/_tokenizer.py
+venv/lib/python3.11/site-packages/packaging/markers.py
+venv/lib/python3.11/site-packages/packaging/py.typed
+venv/lib/python3.11/site-packages/packaging/requirements.py
+venv/lib/python3.11/site-packages/packaging/specifiers.py
+venv/lib/python3.11/site-packages/packaging/tags.py
+venv/lib/python3.11/site-packages/packaging/utils.py
+venv/lib/python3.11/site-packages/packaging/version.py
+venv/lib/python3.11/site-packages/packaging/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/packaging/__pycache__/_elffile.cpython-311.pyc
+venv/lib/python3.11/site-packages/packaging/__pycache__/_manylinux.cpython-311.pyc
+venv/lib/python3.11/site-packages/packaging/__pycache__/_musllinux.cpython-311.pyc
+venv/lib/python3.11/site-packages/packaging/__pycache__/_parser.cpython-311.pyc
+venv/lib/python3.11/site-packages/packaging/__pycache__/_structures.cpython-311.pyc
+venv/lib/python3.11/site-packages/packaging/__pycache__/_tokenizer.cpython-311.pyc
+venv/lib/python3.11/site-packages/packaging/__pycache__/markers.cpython-311.pyc
+venv/lib/python3.11/site-packages/packaging/__pycache__/requirements.cpython-311.pyc
+venv/lib/python3.11/site-packages/packaging/__pycache__/specifiers.cpython-311.pyc
+venv/lib/python3.11/site-packages/packaging/__pycache__/tags.cpython-311.pyc
+venv/lib/python3.11/site-packages/packaging/__pycache__/utils.cpython-311.pyc
+venv/lib/python3.11/site-packages/packaging/__pycache__/version.cpython-311.pyc
+venv/lib/python3.11/site-packages/packaging-23.0.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/packaging-23.0.dist-info/LICENSE
+venv/lib/python3.11/site-packages/packaging-23.0.dist-info/LICENSE.APACHE
+venv/lib/python3.11/site-packages/packaging-23.0.dist-info/LICENSE.BSD
+venv/lib/python3.11/site-packages/packaging-23.0.dist-info/METADATA
+venv/lib/python3.11/site-packages/packaging-23.0.dist-info/RECORD
+venv/lib/python3.11/site-packages/packaging-23.0.dist-info/WHEEL
+venv/lib/python3.11/site-packages/pip/__init__.py
+venv/lib/python3.11/site-packages/pip/__main__.py
+venv/lib/python3.11/site-packages/pip/py.typed
+venv/lib/python3.11/site-packages/pip/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/__pycache__/__main__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/__init__.py
+venv/lib/python3.11/site-packages/pip/_internal/build_env.py
+venv/lib/python3.11/site-packages/pip/_internal/cache.py
+venv/lib/python3.11/site-packages/pip/_internal/configuration.py
+venv/lib/python3.11/site-packages/pip/_internal/exceptions.py
+venv/lib/python3.11/site-packages/pip/_internal/main.py
+venv/lib/python3.11/site-packages/pip/_internal/pyproject.py
+venv/lib/python3.11/site-packages/pip/_internal/self_outdated_check.py
+venv/lib/python3.11/site-packages/pip/_internal/wheel_builder.py
+venv/lib/python3.11/site-packages/pip/_internal/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/__pycache__/build_env.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/__pycache__/cache.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/__pycache__/configuration.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/__pycache__/exceptions.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/__pycache__/main.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/__pycache__/pyproject.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/cli/__init__.py
+venv/lib/python3.11/site-packages/pip/_internal/cli/autocompletion.py
+venv/lib/python3.11/site-packages/pip/_internal/cli/base_command.py
+venv/lib/python3.11/site-packages/pip/_internal/cli/cmdoptions.py
+venv/lib/python3.11/site-packages/pip/_internal/cli/command_context.py
+venv/lib/python3.11/site-packages/pip/_internal/cli/main_parser.py
+venv/lib/python3.11/site-packages/pip/_internal/cli/main.py
+venv/lib/python3.11/site-packages/pip/_internal/cli/parser.py
+venv/lib/python3.11/site-packages/pip/_internal/cli/progress_bars.py
+venv/lib/python3.11/site-packages/pip/_internal/cli/req_command.py
+venv/lib/python3.11/site-packages/pip/_internal/cli/spinners.py
+venv/lib/python3.11/site-packages/pip/_internal/cli/status_codes.py
+venv/lib/python3.11/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/cli/__pycache__/main.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/cli/__pycache__/parser.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/commands/__init__.py
+venv/lib/python3.11/site-packages/pip/_internal/commands/cache.py
+venv/lib/python3.11/site-packages/pip/_internal/commands/check.py
+venv/lib/python3.11/site-packages/pip/_internal/commands/completion.py
+venv/lib/python3.11/site-packages/pip/_internal/commands/configuration.py
+venv/lib/python3.11/site-packages/pip/_internal/commands/debug.py
+venv/lib/python3.11/site-packages/pip/_internal/commands/download.py
+venv/lib/python3.11/site-packages/pip/_internal/commands/freeze.py
+venv/lib/python3.11/site-packages/pip/_internal/commands/hash.py
+venv/lib/python3.11/site-packages/pip/_internal/commands/help.py
+venv/lib/python3.11/site-packages/pip/_internal/commands/index.py
+venv/lib/python3.11/site-packages/pip/_internal/commands/install.py
+venv/lib/python3.11/site-packages/pip/_internal/commands/list.py
+venv/lib/python3.11/site-packages/pip/_internal/commands/search.py
+venv/lib/python3.11/site-packages/pip/_internal/commands/show.py
+venv/lib/python3.11/site-packages/pip/_internal/commands/uninstall.py
+venv/lib/python3.11/site-packages/pip/_internal/commands/wheel.py
+venv/lib/python3.11/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/commands/__pycache__/cache.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/commands/__pycache__/check.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/commands/__pycache__/completion.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/commands/__pycache__/debug.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/commands/__pycache__/download.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/commands/__pycache__/hash.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/commands/__pycache__/help.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/commands/__pycache__/index.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/commands/__pycache__/install.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/commands/__pycache__/list.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/commands/__pycache__/search.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/commands/__pycache__/show.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/distributions/__init__.py
+venv/lib/python3.11/site-packages/pip/_internal/distributions/base.py
+venv/lib/python3.11/site-packages/pip/_internal/distributions/installed.py
+venv/lib/python3.11/site-packages/pip/_internal/distributions/sdist.py
+venv/lib/python3.11/site-packages/pip/_internal/distributions/wheel.py
+venv/lib/python3.11/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/distributions/__pycache__/base.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/index/__init__.py
+venv/lib/python3.11/site-packages/pip/_internal/index/collector.py
+venv/lib/python3.11/site-packages/pip/_internal/index/package_finder.py
+venv/lib/python3.11/site-packages/pip/_internal/index/sources.py
+venv/lib/python3.11/site-packages/pip/_internal/index/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/index/__pycache__/collector.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/index/__pycache__/sources.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/locations/__init__.py
+venv/lib/python3.11/site-packages/pip/_internal/locations/_distutils.py
+venv/lib/python3.11/site-packages/pip/_internal/locations/_sysconfig.py
+venv/lib/python3.11/site-packages/pip/_internal/locations/base.py
+venv/lib/python3.11/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/locations/__pycache__/base.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/metadata/__init__.py
+venv/lib/python3.11/site-packages/pip/_internal/metadata/base.py
+venv/lib/python3.11/site-packages/pip/_internal/metadata/pkg_resources.py
+venv/lib/python3.11/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/metadata/__pycache__/base.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/models/__init__.py
+venv/lib/python3.11/site-packages/pip/_internal/models/candidate.py
+venv/lib/python3.11/site-packages/pip/_internal/models/direct_url.py
+venv/lib/python3.11/site-packages/pip/_internal/models/format_control.py
+venv/lib/python3.11/site-packages/pip/_internal/models/index.py
+venv/lib/python3.11/site-packages/pip/_internal/models/link.py
+venv/lib/python3.11/site-packages/pip/_internal/models/scheme.py
+venv/lib/python3.11/site-packages/pip/_internal/models/search_scope.py
+venv/lib/python3.11/site-packages/pip/_internal/models/selection_prefs.py
+venv/lib/python3.11/site-packages/pip/_internal/models/target_python.py
+venv/lib/python3.11/site-packages/pip/_internal/models/wheel.py
+venv/lib/python3.11/site-packages/pip/_internal/models/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/models/__pycache__/candidate.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/models/__pycache__/format_control.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/models/__pycache__/index.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/models/__pycache__/link.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/models/__pycache__/scheme.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/models/__pycache__/target_python.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/models/__pycache__/wheel.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/network/__init__.py
+venv/lib/python3.11/site-packages/pip/_internal/network/auth.py
+venv/lib/python3.11/site-packages/pip/_internal/network/cache.py
+venv/lib/python3.11/site-packages/pip/_internal/network/download.py
+venv/lib/python3.11/site-packages/pip/_internal/network/lazy_wheel.py
+venv/lib/python3.11/site-packages/pip/_internal/network/session.py
+venv/lib/python3.11/site-packages/pip/_internal/network/utils.py
+venv/lib/python3.11/site-packages/pip/_internal/network/xmlrpc.py
+venv/lib/python3.11/site-packages/pip/_internal/network/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/network/__pycache__/auth.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/network/__pycache__/cache.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/network/__pycache__/download.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/network/__pycache__/session.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/network/__pycache__/utils.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/operations/__init__.py
+venv/lib/python3.11/site-packages/pip/_internal/operations/check.py
+venv/lib/python3.11/site-packages/pip/_internal/operations/freeze.py
+venv/lib/python3.11/site-packages/pip/_internal/operations/prepare.py
+venv/lib/python3.11/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/operations/__pycache__/check.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/operations/build/__init__.py
+venv/lib/python3.11/site-packages/pip/_internal/operations/build/metadata_editable.py
+venv/lib/python3.11/site-packages/pip/_internal/operations/build/metadata_legacy.py
+venv/lib/python3.11/site-packages/pip/_internal/operations/build/metadata.py
+venv/lib/python3.11/site-packages/pip/_internal/operations/build/wheel_editable.py
+venv/lib/python3.11/site-packages/pip/_internal/operations/build/wheel_legacy.py
+venv/lib/python3.11/site-packages/pip/_internal/operations/build/wheel.py
+venv/lib/python3.11/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/operations/install/__init__.py
+venv/lib/python3.11/site-packages/pip/_internal/operations/install/editable_legacy.py
+venv/lib/python3.11/site-packages/pip/_internal/operations/install/legacy.py
+venv/lib/python3.11/site-packages/pip/_internal/operations/install/wheel.py
+venv/lib/python3.11/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/operations/install/__pycache__/legacy.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/req/__init__.py
+venv/lib/python3.11/site-packages/pip/_internal/req/constructors.py
+venv/lib/python3.11/site-packages/pip/_internal/req/req_file.py
+venv/lib/python3.11/site-packages/pip/_internal/req/req_install.py
+venv/lib/python3.11/site-packages/pip/_internal/req/req_set.py
+venv/lib/python3.11/site-packages/pip/_internal/req/req_tracker.py
+venv/lib/python3.11/site-packages/pip/_internal/req/req_uninstall.py
+venv/lib/python3.11/site-packages/pip/_internal/req/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/req/__pycache__/constructors.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/req/__pycache__/req_file.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/req/__pycache__/req_install.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/req/__pycache__/req_set.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/req/__pycache__/req_tracker.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/resolution/__init__.py
+venv/lib/python3.11/site-packages/pip/_internal/resolution/base.py
+venv/lib/python3.11/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/resolution/__pycache__/base.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/resolution/legacy/__init__.py
+venv/lib/python3.11/site-packages/pip/_internal/resolution/legacy/resolver.py
+venv/lib/python3.11/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/__init__.py
+venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/base.py
+venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/candidates.py
+venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/factory.py
+venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py
+venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/provider.py
+venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/reporter.py
+venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/requirements.py
+venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/resolver.py
+venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__init__.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/_log.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/appdirs.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/compat.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/compatibility_tags.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/datetime.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/deprecation.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/direct_url_helpers.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/distutils_args.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/egg_link.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/encoding.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/entrypoints.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/filesystem.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/filetypes.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/glibc.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/hashes.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/inject_securetransport.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/logging.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/misc.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/models.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/packaging.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/setuptools_build.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/subprocess.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/temp_dir.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/unpacking.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/urls.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/virtualenv.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/wheel.py
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/_log.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/distutils_args.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/inject_securetransport.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/logging.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/misc.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/models.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/urls.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/vcs/__init__.py
+venv/lib/python3.11/site-packages/pip/_internal/vcs/bazaar.py
+venv/lib/python3.11/site-packages/pip/_internal/vcs/git.py
+venv/lib/python3.11/site-packages/pip/_internal/vcs/mercurial.py
+venv/lib/python3.11/site-packages/pip/_internal/vcs/subversion.py
+venv/lib/python3.11/site-packages/pip/_internal/vcs/versioncontrol.py
+venv/lib/python3.11/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/vcs/__pycache__/git.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/distro.py
+venv/lib/python3.11/site-packages/pip/_vendor/six.py
+venv/lib/python3.11/site-packages/pip/_vendor/typing_extensions.py
+venv/lib/python3.11/site-packages/pip/_vendor/vendor.txt
+venv/lib/python3.11/site-packages/pip/_vendor/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/__pycache__/distro.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/__pycache__/six.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/_cmd.py
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/adapter.py
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/cache.py
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/compat.py
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/controller.py
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/filewrapper.py
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/heuristics.py
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/serialize.py
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/wrapper.py
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/__pycache__/compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/caches/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/certifi/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/certifi/__main__.py
+venv/lib/python3.11/site-packages/pip/_vendor/certifi/cacert.pem
+venv/lib/python3.11/site-packages/pip/_vendor/certifi/core.py
+venv/lib/python3.11/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/big5freq.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/big5prober.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/chardistribution.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/charsetgroupprober.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/charsetprober.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/codingstatemachine.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/compat.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/cp949prober.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/enums.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/escprober.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/escsm.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/eucjpprober.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/euckrfreq.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/euckrprober.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/euctwfreq.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/euctwprober.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/gb2312freq.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/gb2312prober.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/hebrewprober.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/jisfreq.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/jpcntx.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/langbulgarianmodel.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/langgreekmodel.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/langhebrewmodel.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/langhungarianmodel.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/langrussianmodel.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/langthaimodel.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/langturkishmodel.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/latin1prober.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/mbcharsetprober.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/mbcsgroupprober.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/mbcssm.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/sbcharsetprober.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/sbcsgroupprober.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/sjisprober.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/universaldetector.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/utf8prober.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/version.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/cli/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/cli/chardetect.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/metadata/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/metadata/languages.py
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/colorama/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/colorama/ansi.py
+venv/lib/python3.11/site-packages/pip/_vendor/colorama/ansitowin32.py
+venv/lib/python3.11/site-packages/pip/_vendor/colorama/initialise.py
+venv/lib/python3.11/site-packages/pip/_vendor/colorama/win32.py
+venv/lib/python3.11/site-packages/pip/_vendor/colorama/winterm.py
+venv/lib/python3.11/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/compat.py
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/database.py
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/index.py
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/locators.py
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/manifest.py
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/markers.py
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/metadata.py
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/resources.py
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/scripts.py
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/util.py
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/version.py
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/wheel.py
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/_ihatexml.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/_inputstream.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/_tokenizer.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/_utils.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/constants.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/html5parser.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/serializer.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/__pycache__/_ihatexml.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/__pycache__/_inputstream.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/__pycache__/_utils.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/__pycache__/constants.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/__pycache__/html5parser.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/__pycache__/serializer.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/_trie/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/_trie/_base.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/_trie/py.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/_trie/__pycache__/_base.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/_trie/__pycache__/py.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/filters/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/filters/base.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/filters/lint.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/filters/optionaltags.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/filters/sanitizer.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/filters/whitespace.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/filters/__pycache__/base.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/filters/__pycache__/lint.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treeadapters/sax.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/genshi.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treebuilders/base.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treebuilders/dom.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treebuilders/etree.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/base.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/dom.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treewalkers/base.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treewalkers/dom.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treewalkers/etree.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/dom.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/idna/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/idna/codec.py
+venv/lib/python3.11/site-packages/pip/_vendor/idna/compat.py
+venv/lib/python3.11/site-packages/pip/_vendor/idna/core.py
+venv/lib/python3.11/site-packages/pip/_vendor/idna/idnadata.py
+venv/lib/python3.11/site-packages/pip/_vendor/idna/intranges.py
+venv/lib/python3.11/site-packages/pip/_vendor/idna/package_data.py
+venv/lib/python3.11/site-packages/pip/_vendor/idna/uts46data.py
+venv/lib/python3.11/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/idna/__pycache__/core.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/msgpack/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/msgpack/_version.py
+venv/lib/python3.11/site-packages/pip/_vendor/msgpack/exceptions.py
+venv/lib/python3.11/site-packages/pip/_vendor/msgpack/ext.py
+venv/lib/python3.11/site-packages/pip/_vendor/msgpack/fallback.py
+venv/lib/python3.11/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/msgpack/__pycache__/_version.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/__about__.py
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/_manylinux.py
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/_musllinux.py
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/_structures.py
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/markers.py
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/requirements.py
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/specifiers.py
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/tags.py
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/utils.py
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/version.py
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/build.py
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/check.py
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/colorlog.py
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/compat.py
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/dirtools.py
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/envbuild.py
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/meta.py
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/wrappers.py
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/__pycache__/build.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/__pycache__/check.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/__pycache__/colorlog.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/__pycache__/compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/__pycache__/dirtools.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/__pycache__/envbuild.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/__pycache__/meta.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/__pycache__/wrappers.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/in_process/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/in_process/_in_process.py
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/in_process/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pep517/in_process/__pycache__/_in_process.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pkg_resources/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/pkg_resources/py31compat.py
+venv/lib/python3.11/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pkg_resources/__pycache__/py31compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/platformdirs/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/platformdirs/__main__.py
+venv/lib/python3.11/site-packages/pip/_vendor/platformdirs/android.py
+venv/lib/python3.11/site-packages/pip/_vendor/platformdirs/api.py
+venv/lib/python3.11/site-packages/pip/_vendor/platformdirs/macos.py
+venv/lib/python3.11/site-packages/pip/_vendor/platformdirs/unix.py
+venv/lib/python3.11/site-packages/pip/_vendor/platformdirs/version.py
+venv/lib/python3.11/site-packages/pip/_vendor/platformdirs/windows.py
+venv/lib/python3.11/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/progress/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/progress/bar.py
+venv/lib/python3.11/site-packages/pip/_vendor/progress/colors.py
+venv/lib/python3.11/site-packages/pip/_vendor/progress/counter.py
+venv/lib/python3.11/site-packages/pip/_vendor/progress/spinner.py
+venv/lib/python3.11/site-packages/pip/_vendor/progress/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/progress/__pycache__/bar.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/progress/__pycache__/colors.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/progress/__pycache__/counter.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/progress/__pycache__/spinner.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/__main__.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/cmdline.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/console.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/filter.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatter.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/lexer.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/modeline.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/plugin.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/regexopt.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/scanner.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/sphinxext.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/style.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/token.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/unistring.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/util.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/__pycache__/cmdline.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/filters/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/_mapping.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/bbcode.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/groff.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/html.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/img.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/irc.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/latex.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/other.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/rtf.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/svg.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/terminal.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/terminal256.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/lexers/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/lexers/_mapping.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/lexers/python.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/styles/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/actions.py
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/common.py
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/core.py
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/exceptions.py
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/helpers.py
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/results.py
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/testing.py
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/unicode.py
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/util.py
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/__pycache__/core.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/__pycache__/helpers.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/__pycache__/results.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/__pycache__/unicode.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/diagram/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__version__.py
+venv/lib/python3.11/site-packages/pip/_vendor/requests/_internal_utils.py
+venv/lib/python3.11/site-packages/pip/_vendor/requests/adapters.py
+venv/lib/python3.11/site-packages/pip/_vendor/requests/api.py
+venv/lib/python3.11/site-packages/pip/_vendor/requests/auth.py
+venv/lib/python3.11/site-packages/pip/_vendor/requests/certs.py
+venv/lib/python3.11/site-packages/pip/_vendor/requests/compat.py
+venv/lib/python3.11/site-packages/pip/_vendor/requests/cookies.py
+venv/lib/python3.11/site-packages/pip/_vendor/requests/exceptions.py
+venv/lib/python3.11/site-packages/pip/_vendor/requests/help.py
+venv/lib/python3.11/site-packages/pip/_vendor/requests/hooks.py
+venv/lib/python3.11/site-packages/pip/_vendor/requests/models.py
+venv/lib/python3.11/site-packages/pip/_vendor/requests/packages.py
+venv/lib/python3.11/site-packages/pip/_vendor/requests/sessions.py
+venv/lib/python3.11/site-packages/pip/_vendor/requests/status_codes.py
+venv/lib/python3.11/site-packages/pip/_vendor/requests/structures.py
+venv/lib/python3.11/site-packages/pip/_vendor/requests/utils.py
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__pycache__/api.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__pycache__/help.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__pycache__/models.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/resolvelib/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/resolvelib/providers.py
+venv/lib/python3.11/site-packages/pip/_vendor/resolvelib/reporters.py
+venv/lib/python3.11/site-packages/pip/_vendor/resolvelib/resolvers.py
+venv/lib/python3.11/site-packages/pip/_vendor/resolvelib/structs.py
+venv/lib/python3.11/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/resolvelib/compat/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py
+venv/lib/python3.11/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__main__.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/_cell_widths.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/_emoji_codes.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/_emoji_replace.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/_extension.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/_inspect.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/_log_render.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/_loop.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/_lru_cache.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/_palettes.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/_pick.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/_ratio.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/_spinners.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/_stack.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/_timer.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/_windows.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/_wrap.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/abc.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/align.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/ansi.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/bar.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/box.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/cells.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/color_triplet.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/color.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/columns.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/console.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/constrain.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/containers.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/control.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/default_styles.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/diagnose.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/emoji.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/errors.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/file_proxy.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/filesize.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/highlighter.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/json.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/jupyter.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/layout.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/live_render.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/live.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/logging.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/markup.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/measure.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/padding.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/pager.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/palette.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/panel.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/pretty.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/progress_bar.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/progress.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/prompt.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/protocol.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/region.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/repr.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/rule.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/scope.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/screen.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/segment.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/spinner.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/status.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/style.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/styled.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/syntax.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/table.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/tabulate.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/terminal_theme.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/text.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/theme.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/themes.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/traceback.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/tree.py
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/_emoji_replace.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/_lru_cache.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/align.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/box.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/color.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/console.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/control.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/json.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/live.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/measure.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/region.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/status.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/style.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/syntax.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/table.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/tabulate.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/text.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/_asyncio.py
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/_utils.py
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/after.py
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/before_sleep.py
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/before.py
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/nap.py
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/retry.py
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/stop.py
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/tornadoweb.py
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/wait.py
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/__pycache__/_utils.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/__pycache__/nap.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/__pycache__/retry.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/__pycache__/stop.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/tomli/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/tomli/_parser.py
+venv/lib/python3.11/site-packages/pip/_vendor/tomli/_re.py
+venv/lib/python3.11/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/_collections.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/_version.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/connection.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/connectionpool.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/exceptions.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/fields.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/filepost.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/poolmanager.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/request.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/response.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/appengine.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/securetransport.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/socks.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/packages/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/packages/six.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/connection.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/proxy.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/queue.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/request.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/response.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/retry.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/ssl_.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/ssltransport.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/timeout.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/url.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/wait.py
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/webencodings/__init__.py
+venv/lib/python3.11/site-packages/pip/_vendor/webencodings/labels.py
+venv/lib/python3.11/site-packages/pip/_vendor/webencodings/mklabels.py
+venv/lib/python3.11/site-packages/pip/_vendor/webencodings/tests.py
+venv/lib/python3.11/site-packages/pip/_vendor/webencodings/x_user_defined.py
+venv/lib/python3.11/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-311.pyc
+venv/lib/python3.11/site-packages/pip-22.0.2.dist-info/entry_points.txt
+venv/lib/python3.11/site-packages/pip-22.0.2.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/pip-22.0.2.dist-info/LICENSE.txt
+venv/lib/python3.11/site-packages/pip-22.0.2.dist-info/METADATA
+venv/lib/python3.11/site-packages/pip-22.0.2.dist-info/RECORD
+venv/lib/python3.11/site-packages/pip-22.0.2.dist-info/REQUESTED
+venv/lib/python3.11/site-packages/pip-22.0.2.dist-info/top_level.txt
+venv/lib/python3.11/site-packages/pip-22.0.2.dist-info/WHEEL
+venv/lib/python3.11/site-packages/pkg_resources/__init__.py
+venv/lib/python3.11/site-packages/pkg_resources/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/__init__.py
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/appdirs.py
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/pyparsing.py
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-311.pyc
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-311.pyc
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/__about__.py
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/__init__.py
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/_manylinux.py
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/_musllinux.py
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/_structures.py
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/markers.py
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/requirements.py
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/specifiers.py
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/tags.py
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/utils.py
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/version.py
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/__pycache__/_manylinux.cpython-311.pyc
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/__pycache__/_musllinux.cpython-311.pyc
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-311.pyc
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-311.pyc
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-311.pyc
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-311.pyc
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/__pycache__/tags.cpython-311.pyc
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-311.pyc
+venv/lib/python3.11/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-311.pyc
+venv/lib/python3.11/site-packages/pkg_resources/extern/__init__.py
+venv/lib/python3.11/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pkg_resources/tests/data/my-test-package-source/setup.py
+venv/lib/python3.11/site-packages/pkg_resources/tests/data/my-test-package-source/__pycache__/setup.cpython-311.pyc
+venv/lib/python3.11/site-packages/pluggy/__init__.py
+venv/lib/python3.11/site-packages/pluggy/_callers.py
+venv/lib/python3.11/site-packages/pluggy/_hooks.py
+venv/lib/python3.11/site-packages/pluggy/_manager.py
+venv/lib/python3.11/site-packages/pluggy/_result.py
+venv/lib/python3.11/site-packages/pluggy/_tracing.py
+venv/lib/python3.11/site-packages/pluggy/_version.py
+venv/lib/python3.11/site-packages/pluggy/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pluggy/__pycache__/_callers.cpython-311.pyc
+venv/lib/python3.11/site-packages/pluggy/__pycache__/_hooks.cpython-311.pyc
+venv/lib/python3.11/site-packages/pluggy/__pycache__/_manager.cpython-311.pyc
+venv/lib/python3.11/site-packages/pluggy/__pycache__/_result.cpython-311.pyc
+venv/lib/python3.11/site-packages/pluggy/__pycache__/_tracing.cpython-311.pyc
+venv/lib/python3.11/site-packages/pluggy/__pycache__/_version.cpython-311.pyc
+venv/lib/python3.11/site-packages/pluggy-1.0.0.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/pluggy-1.0.0.dist-info/LICENSE
+venv/lib/python3.11/site-packages/pluggy-1.0.0.dist-info/METADATA
+venv/lib/python3.11/site-packages/pluggy-1.0.0.dist-info/RECORD
+venv/lib/python3.11/site-packages/pluggy-1.0.0.dist-info/top_level.txt
+venv/lib/python3.11/site-packages/pluggy-1.0.0.dist-info/WHEEL
+venv/lib/python3.11/site-packages/pycodestyle-2.10.0.dist-info/entry_points.txt
+venv/lib/python3.11/site-packages/pycodestyle-2.10.0.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/pycodestyle-2.10.0.dist-info/LICENSE
+venv/lib/python3.11/site-packages/pycodestyle-2.10.0.dist-info/METADATA
+venv/lib/python3.11/site-packages/pycodestyle-2.10.0.dist-info/RECORD
+venv/lib/python3.11/site-packages/pycodestyle-2.10.0.dist-info/top_level.txt
+venv/lib/python3.11/site-packages/pycodestyle-2.10.0.dist-info/WHEEL
+venv/lib/python3.11/site-packages/pyproject_hooks/__init__.py
+venv/lib/python3.11/site-packages/pyproject_hooks/_compat.py
+venv/lib/python3.11/site-packages/pyproject_hooks/_impl.py
+venv/lib/python3.11/site-packages/pyproject_hooks/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pyproject_hooks/__pycache__/_compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/pyproject_hooks/__pycache__/_impl.cpython-311.pyc
+venv/lib/python3.11/site-packages/pyproject_hooks/_in_process/__init__.py
+venv/lib/python3.11/site-packages/pyproject_hooks/_in_process/_in_process.py
+venv/lib/python3.11/site-packages/pyproject_hooks/_in_process/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-311.pyc
+venv/lib/python3.11/site-packages/pyproject_hooks-1.0.0.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/pyproject_hooks-1.0.0.dist-info/LICENSE
+venv/lib/python3.11/site-packages/pyproject_hooks-1.0.0.dist-info/METADATA
+venv/lib/python3.11/site-packages/pyproject_hooks-1.0.0.dist-info/RECORD
+venv/lib/python3.11/site-packages/pyproject_hooks-1.0.0.dist-info/WHEEL
+venv/lib/python3.11/site-packages/pytest/__init__.py
+venv/lib/python3.11/site-packages/pytest/__main__.py
+venv/lib/python3.11/site-packages/pytest/py.typed
+venv/lib/python3.11/site-packages/pytest/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pytest/__pycache__/__main__.cpython-311.pyc
+venv/lib/python3.11/site-packages/pytest-7.2.1.dist-info/entry_points.txt
+venv/lib/python3.11/site-packages/pytest-7.2.1.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/pytest-7.2.1.dist-info/LICENSE
+venv/lib/python3.11/site-packages/pytest-7.2.1.dist-info/METADATA
+venv/lib/python3.11/site-packages/pytest-7.2.1.dist-info/RECORD
+venv/lib/python3.11/site-packages/pytest-7.2.1.dist-info/REQUESTED
+venv/lib/python3.11/site-packages/pytest-7.2.1.dist-info/top_level.txt
+venv/lib/python3.11/site-packages/pytest-7.2.1.dist-info/WHEEL
+venv/lib/python3.11/site-packages/requests/__init__.py
+venv/lib/python3.11/site-packages/requests/__version__.py
+venv/lib/python3.11/site-packages/requests/_internal_utils.py
+venv/lib/python3.11/site-packages/requests/adapters.py
+venv/lib/python3.11/site-packages/requests/api.py
+venv/lib/python3.11/site-packages/requests/auth.py
+venv/lib/python3.11/site-packages/requests/certs.py
+venv/lib/python3.11/site-packages/requests/compat.py
+venv/lib/python3.11/site-packages/requests/cookies.py
+venv/lib/python3.11/site-packages/requests/exceptions.py
+venv/lib/python3.11/site-packages/requests/help.py
+venv/lib/python3.11/site-packages/requests/hooks.py
+venv/lib/python3.11/site-packages/requests/models.py
+venv/lib/python3.11/site-packages/requests/packages.py
+venv/lib/python3.11/site-packages/requests/sessions.py
+venv/lib/python3.11/site-packages/requests/status_codes.py
+venv/lib/python3.11/site-packages/requests/structures.py
+venv/lib/python3.11/site-packages/requests/utils.py
+venv/lib/python3.11/site-packages/requests/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/requests/__pycache__/__version__.cpython-311.pyc
+venv/lib/python3.11/site-packages/requests/__pycache__/_internal_utils.cpython-311.pyc
+venv/lib/python3.11/site-packages/requests/__pycache__/adapters.cpython-311.pyc
+venv/lib/python3.11/site-packages/requests/__pycache__/api.cpython-311.pyc
+venv/lib/python3.11/site-packages/requests/__pycache__/auth.cpython-311.pyc
+venv/lib/python3.11/site-packages/requests/__pycache__/certs.cpython-311.pyc
+venv/lib/python3.11/site-packages/requests/__pycache__/compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/requests/__pycache__/cookies.cpython-311.pyc
+venv/lib/python3.11/site-packages/requests/__pycache__/exceptions.cpython-311.pyc
+venv/lib/python3.11/site-packages/requests/__pycache__/help.cpython-311.pyc
+venv/lib/python3.11/site-packages/requests/__pycache__/hooks.cpython-311.pyc
+venv/lib/python3.11/site-packages/requests/__pycache__/models.cpython-311.pyc
+venv/lib/python3.11/site-packages/requests/__pycache__/packages.cpython-311.pyc
+venv/lib/python3.11/site-packages/requests/__pycache__/sessions.cpython-311.pyc
+venv/lib/python3.11/site-packages/requests/__pycache__/status_codes.cpython-311.pyc
+venv/lib/python3.11/site-packages/requests/__pycache__/structures.cpython-311.pyc
+venv/lib/python3.11/site-packages/requests/__pycache__/utils.cpython-311.pyc
+venv/lib/python3.11/site-packages/requests-2.28.2.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/requests-2.28.2.dist-info/LICENSE
+venv/lib/python3.11/site-packages/requests-2.28.2.dist-info/METADATA
+venv/lib/python3.11/site-packages/requests-2.28.2.dist-info/RECORD
+venv/lib/python3.11/site-packages/requests-2.28.2.dist-info/REQUESTED
+venv/lib/python3.11/site-packages/requests-2.28.2.dist-info/top_level.txt
+venv/lib/python3.11/site-packages/requests-2.28.2.dist-info/WHEEL
+venv/lib/python3.11/site-packages/setuptools/__init__.py
+venv/lib/python3.11/site-packages/setuptools/_deprecation_warning.py
+venv/lib/python3.11/site-packages/setuptools/_imp.py
+venv/lib/python3.11/site-packages/setuptools/archive_util.py
+venv/lib/python3.11/site-packages/setuptools/build_meta.py
+venv/lib/python3.11/site-packages/setuptools/cli-32.exe
+venv/lib/python3.11/site-packages/setuptools/cli-64.exe
+venv/lib/python3.11/site-packages/setuptools/cli-arm64.exe
+venv/lib/python3.11/site-packages/setuptools/cli.exe
+venv/lib/python3.11/site-packages/setuptools/config.py
+venv/lib/python3.11/site-packages/setuptools/dep_util.py
+venv/lib/python3.11/site-packages/setuptools/depends.py
+venv/lib/python3.11/site-packages/setuptools/dist.py
+venv/lib/python3.11/site-packages/setuptools/errors.py
+venv/lib/python3.11/site-packages/setuptools/extension.py
+venv/lib/python3.11/site-packages/setuptools/glob.py
+venv/lib/python3.11/site-packages/setuptools/gui-32.exe
+venv/lib/python3.11/site-packages/setuptools/gui-64.exe
+venv/lib/python3.11/site-packages/setuptools/gui-arm64.exe
+venv/lib/python3.11/site-packages/setuptools/gui.exe
+venv/lib/python3.11/site-packages/setuptools/installer.py
+venv/lib/python3.11/site-packages/setuptools/launch.py
+venv/lib/python3.11/site-packages/setuptools/monkey.py
+venv/lib/python3.11/site-packages/setuptools/msvc.py
+venv/lib/python3.11/site-packages/setuptools/namespaces.py
+venv/lib/python3.11/site-packages/setuptools/package_index.py
+venv/lib/python3.11/site-packages/setuptools/py34compat.py
+venv/lib/python3.11/site-packages/setuptools/sandbox.py
+venv/lib/python3.11/site-packages/setuptools/script (dev).tmpl
+venv/lib/python3.11/site-packages/setuptools/script.tmpl
+venv/lib/python3.11/site-packages/setuptools/unicode_utils.py
+venv/lib/python3.11/site-packages/setuptools/version.py
+venv/lib/python3.11/site-packages/setuptools/wheel.py
+venv/lib/python3.11/site-packages/setuptools/windows_support.py
+venv/lib/python3.11/site-packages/setuptools/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/_deprecation_warning.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/_imp.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/archive_util.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/build_meta.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/config.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/dep_util.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/depends.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/dist.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/errors.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/extension.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/glob.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/installer.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/launch.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/monkey.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/msvc.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/namespaces.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/package_index.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/py34compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/sandbox.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/unicode_utils.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/version.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/wheel.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/__pycache__/windows_support.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__init__.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/_msvccompiler.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/archive_util.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/bcppcompiler.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/ccompiler.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/cmd.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/config.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/core.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/cygwinccompiler.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/debug.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/dep_util.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/dir_util.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/dist.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/errors.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/extension.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/fancy_getopt.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/file_util.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/filelist.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/log.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/msvc9compiler.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/msvccompiler.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/py35compat.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/py38compat.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/spawn.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/sysconfig.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/text_file.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/unixccompiler.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/util.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/version.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/versionpredicate.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/_msvccompiler.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/archive_util.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/bcppcompiler.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/ccompiler.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/cmd.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/config.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/core.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/cygwinccompiler.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/debug.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/dep_util.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/dir_util.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/dist.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/errors.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/extension.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/fancy_getopt.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/file_util.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/filelist.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/log.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/msvc9compiler.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/msvccompiler.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/py35compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/py38compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/spawn.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/sysconfig.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/text_file.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/unixccompiler.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/util.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/version.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/__pycache__/versionpredicate.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__init__.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/bdist_dumb.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/bdist_msi.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/bdist_rpm.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/bdist_wininst.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/bdist.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/build_clib.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/build_ext.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/build_py.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/build_scripts.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/build.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/check.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/clean.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/config.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/install_data.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/install_egg_info.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/install_headers.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/install_lib.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/install_scripts.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/install.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/py37compat.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/register.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/sdist.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/upload.py
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/bdist_dumb.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/bdist_msi.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/bdist_rpm.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/bdist_wininst.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/bdist.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/build_clib.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/build_ext.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/build_py.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/build_scripts.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/build.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/check.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/clean.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/config.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/install_data.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/install_egg_info.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/install_headers.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/install_lib.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/install_scripts.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/install.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/py37compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/register.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/sdist.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_distutils/command/__pycache__/upload.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_vendor/__init__.py
+venv/lib/python3.11/site-packages/setuptools/_vendor/ordered_set.py
+venv/lib/python3.11/site-packages/setuptools/_vendor/pyparsing.py
+venv/lib/python3.11/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_vendor/__pycache__/ordered_set.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_vendor/__pycache__/pyparsing.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_vendor/more_itertools/__init__.py
+venv/lib/python3.11/site-packages/setuptools/_vendor/more_itertools/more.py
+venv/lib/python3.11/site-packages/setuptools/_vendor/more_itertools/recipes.py
+venv/lib/python3.11/site-packages/setuptools/_vendor/more_itertools/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_vendor/more_itertools/__pycache__/more.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_vendor/more_itertools/__pycache__/recipes.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/__about__.py
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/__init__.py
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/_manylinux.py
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/_musllinux.py
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/_structures.py
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/markers.py
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/requirements.py
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/specifiers.py
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/tags.py
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/utils.py
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/version.py
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/__pycache__/_manylinux.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/__pycache__/_musllinux.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/__pycache__/specifiers.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/__pycache__/tags.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__init__.py
+venv/lib/python3.11/site-packages/setuptools/command/alias.py
+venv/lib/python3.11/site-packages/setuptools/command/bdist_egg.py
+venv/lib/python3.11/site-packages/setuptools/command/bdist_rpm.py
+venv/lib/python3.11/site-packages/setuptools/command/build_clib.py
+venv/lib/python3.11/site-packages/setuptools/command/build_ext.py
+venv/lib/python3.11/site-packages/setuptools/command/build_py.py
+venv/lib/python3.11/site-packages/setuptools/command/develop.py
+venv/lib/python3.11/site-packages/setuptools/command/dist_info.py
+venv/lib/python3.11/site-packages/setuptools/command/easy_install.py
+venv/lib/python3.11/site-packages/setuptools/command/egg_info.py
+venv/lib/python3.11/site-packages/setuptools/command/install_egg_info.py
+venv/lib/python3.11/site-packages/setuptools/command/install_lib.py
+venv/lib/python3.11/site-packages/setuptools/command/install_scripts.py
+venv/lib/python3.11/site-packages/setuptools/command/install.py
+venv/lib/python3.11/site-packages/setuptools/command/launcher manifest.xml
+venv/lib/python3.11/site-packages/setuptools/command/py36compat.py
+venv/lib/python3.11/site-packages/setuptools/command/register.py
+venv/lib/python3.11/site-packages/setuptools/command/rotate.py
+venv/lib/python3.11/site-packages/setuptools/command/saveopts.py
+venv/lib/python3.11/site-packages/setuptools/command/sdist.py
+venv/lib/python3.11/site-packages/setuptools/command/setopt.py
+venv/lib/python3.11/site-packages/setuptools/command/test.py
+venv/lib/python3.11/site-packages/setuptools/command/upload_docs.py
+venv/lib/python3.11/site-packages/setuptools/command/upload.py
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/alias.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/build_clib.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/build_ext.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/build_py.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/develop.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/dist_info.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/easy_install.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/egg_info.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/install_lib.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/install_scripts.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/install.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/py36compat.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/register.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/rotate.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/saveopts.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/sdist.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/setopt.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/test.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/upload_docs.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/command/__pycache__/upload.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools/extern/__init__.py
+venv/lib/python3.11/site-packages/setuptools/extern/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/setuptools-59.6.0.dist-info/entry_points.txt
+venv/lib/python3.11/site-packages/setuptools-59.6.0.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/setuptools-59.6.0.dist-info/LICENSE
+venv/lib/python3.11/site-packages/setuptools-59.6.0.dist-info/METADATA
+venv/lib/python3.11/site-packages/setuptools-59.6.0.dist-info/RECORD
+venv/lib/python3.11/site-packages/setuptools-59.6.0.dist-info/REQUESTED
+venv/lib/python3.11/site-packages/setuptools-59.6.0.dist-info/top_level.txt
+venv/lib/python3.11/site-packages/setuptools-59.6.0.dist-info/WHEEL
+venv/lib/python3.11/site-packages/six-1.16.0.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/six-1.16.0.dist-info/LICENSE
+venv/lib/python3.11/site-packages/six-1.16.0.dist-info/METADATA
+venv/lib/python3.11/site-packages/six-1.16.0.dist-info/RECORD
+venv/lib/python3.11/site-packages/six-1.16.0.dist-info/top_level.txt
+venv/lib/python3.11/site-packages/six-1.16.0.dist-info/WHEEL
+venv/lib/python3.11/site-packages/soupsieve/__init__.py
+venv/lib/python3.11/site-packages/soupsieve/__meta__.py
+venv/lib/python3.11/site-packages/soupsieve/css_match.py
+venv/lib/python3.11/site-packages/soupsieve/css_parser.py
+venv/lib/python3.11/site-packages/soupsieve/css_types.py
+venv/lib/python3.11/site-packages/soupsieve/pretty.py
+venv/lib/python3.11/site-packages/soupsieve/py.typed
+venv/lib/python3.11/site-packages/soupsieve/util.py
+venv/lib/python3.11/site-packages/soupsieve/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/soupsieve/__pycache__/__meta__.cpython-311.pyc
+venv/lib/python3.11/site-packages/soupsieve/__pycache__/css_match.cpython-311.pyc
+venv/lib/python3.11/site-packages/soupsieve/__pycache__/css_parser.cpython-311.pyc
+venv/lib/python3.11/site-packages/soupsieve/__pycache__/css_types.cpython-311.pyc
+venv/lib/python3.11/site-packages/soupsieve/__pycache__/pretty.cpython-311.pyc
+venv/lib/python3.11/site-packages/soupsieve/__pycache__/util.cpython-311.pyc
+venv/lib/python3.11/site-packages/soupsieve-2.3.2.post1.dist-info/entry_points.txt
+venv/lib/python3.11/site-packages/soupsieve-2.3.2.post1.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/soupsieve-2.3.2.post1.dist-info/METADATA
+venv/lib/python3.11/site-packages/soupsieve-2.3.2.post1.dist-info/RECORD
+venv/lib/python3.11/site-packages/soupsieve-2.3.2.post1.dist-info/WHEEL
+venv/lib/python3.11/site-packages/soupsieve-2.3.2.post1.dist-info/license_files/LICENSE.md
+venv/lib/python3.11/site-packages/urllib3/__init__.py
+venv/lib/python3.11/site-packages/urllib3/_collections.py
+venv/lib/python3.11/site-packages/urllib3/_version.py
+venv/lib/python3.11/site-packages/urllib3/connection.py
+venv/lib/python3.11/site-packages/urllib3/connectionpool.py
+venv/lib/python3.11/site-packages/urllib3/exceptions.py
+venv/lib/python3.11/site-packages/urllib3/fields.py
+venv/lib/python3.11/site-packages/urllib3/filepost.py
+venv/lib/python3.11/site-packages/urllib3/poolmanager.py
+venv/lib/python3.11/site-packages/urllib3/request.py
+venv/lib/python3.11/site-packages/urllib3/response.py
+venv/lib/python3.11/site-packages/urllib3/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/__pycache__/_collections.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/__pycache__/_version.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/__pycache__/connection.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/__pycache__/connectionpool.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/__pycache__/exceptions.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/__pycache__/fields.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/__pycache__/filepost.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/__pycache__/poolmanager.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/__pycache__/request.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/__pycache__/response.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/contrib/__init__.py
+venv/lib/python3.11/site-packages/urllib3/contrib/_appengine_environ.py
+venv/lib/python3.11/site-packages/urllib3/contrib/appengine.py
+venv/lib/python3.11/site-packages/urllib3/contrib/ntlmpool.py
+venv/lib/python3.11/site-packages/urllib3/contrib/pyopenssl.py
+venv/lib/python3.11/site-packages/urllib3/contrib/securetransport.py
+venv/lib/python3.11/site-packages/urllib3/contrib/socks.py
+venv/lib/python3.11/site-packages/urllib3/contrib/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/contrib/__pycache__/_appengine_environ.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/contrib/__pycache__/appengine.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/contrib/__pycache__/ntlmpool.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/contrib/__pycache__/securetransport.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/contrib/__pycache__/socks.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/contrib/_securetransport/__init__.py
+venv/lib/python3.11/site-packages/urllib3/contrib/_securetransport/bindings.py
+venv/lib/python3.11/site-packages/urllib3/contrib/_securetransport/low_level.py
+venv/lib/python3.11/site-packages/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/packages/__init__.py
+venv/lib/python3.11/site-packages/urllib3/packages/six.py
+venv/lib/python3.11/site-packages/urllib3/packages/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/packages/__pycache__/six.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/packages/backports/__init__.py
+venv/lib/python3.11/site-packages/urllib3/packages/backports/makefile.py
+venv/lib/python3.11/site-packages/urllib3/packages/backports/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/packages/backports/__pycache__/makefile.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/util/__init__.py
+venv/lib/python3.11/site-packages/urllib3/util/connection.py
+venv/lib/python3.11/site-packages/urllib3/util/proxy.py
+venv/lib/python3.11/site-packages/urllib3/util/queue.py
+venv/lib/python3.11/site-packages/urllib3/util/request.py
+venv/lib/python3.11/site-packages/urllib3/util/response.py
+venv/lib/python3.11/site-packages/urllib3/util/retry.py
+venv/lib/python3.11/site-packages/urllib3/util/ssl_.py
+venv/lib/python3.11/site-packages/urllib3/util/ssl_match_hostname.py
+venv/lib/python3.11/site-packages/urllib3/util/ssltransport.py
+venv/lib/python3.11/site-packages/urllib3/util/timeout.py
+venv/lib/python3.11/site-packages/urllib3/util/url.py
+venv/lib/python3.11/site-packages/urllib3/util/wait.py
+venv/lib/python3.11/site-packages/urllib3/util/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/util/__pycache__/connection.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/util/__pycache__/proxy.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/util/__pycache__/queue.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/util/__pycache__/request.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/util/__pycache__/response.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/util/__pycache__/retry.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/util/__pycache__/ssl_.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/util/__pycache__/ssl_match_hostname.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/util/__pycache__/ssltransport.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/util/__pycache__/timeout.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/util/__pycache__/url.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3/util/__pycache__/wait.cpython-311.pyc
+venv/lib/python3.11/site-packages/urllib3-1.26.14.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/urllib3-1.26.14.dist-info/LICENSE.txt
+venv/lib/python3.11/site-packages/urllib3-1.26.14.dist-info/METADATA
+venv/lib/python3.11/site-packages/urllib3-1.26.14.dist-info/RECORD
+venv/lib/python3.11/site-packages/urllib3-1.26.14.dist-info/top_level.txt
+venv/lib/python3.11/site-packages/urllib3-1.26.14.dist-info/WHEEL
+venv/lib/python3.11/site-packages/webencodings/__init__.py
+venv/lib/python3.11/site-packages/webencodings/labels.py
+venv/lib/python3.11/site-packages/webencodings/mklabels.py
+venv/lib/python3.11/site-packages/webencodings/tests.py
+venv/lib/python3.11/site-packages/webencodings/x_user_defined.py
+venv/lib/python3.11/site-packages/webencodings/__pycache__/__init__.cpython-311.pyc
+venv/lib/python3.11/site-packages/webencodings/__pycache__/labels.cpython-311.pyc
+venv/lib/python3.11/site-packages/webencodings/__pycache__/mklabels.cpython-311.pyc
+venv/lib/python3.11/site-packages/webencodings/__pycache__/tests.cpython-311.pyc
+venv/lib/python3.11/site-packages/webencodings/__pycache__/x_user_defined.cpython-311.pyc
+venv/lib/python3.11/site-packages/webencodings-0.5.1.dist-info/DESCRIPTION.rst
+venv/lib/python3.11/site-packages/webencodings-0.5.1.dist-info/INSTALLER
+venv/lib/python3.11/site-packages/webencodings-0.5.1.dist-info/METADATA
+venv/lib/python3.11/site-packages/webencodings-0.5.1.dist-info/metadata.json
+venv/lib/python3.11/site-packages/webencodings-0.5.1.dist-info/RECORD
+venv/lib/python3.11/site-packages/webencodings-0.5.1.dist-info/top_level.txt
+venv/lib/python3.11/site-packages/webencodings-0.5.1.dist-info/WHEEL
+.vscode/settings.json
+test/__pycache__/test_nauta.cpython-311-pytest-7.2.1.pyc
+test/__pycache__/test_user_portal.cpython-311-pytest-7.2.1.pyc
+PyLibSuitETECSA/utils/__pycache__/__init__.cpython-311.pyc
+PyLibSuitETECSA/utils/__pycache__/from_str.cpython-311.pyc
+PyLibSuitETECSA/utils/__pycache__/parser.cpython-311.pyc
+PyLibSuitETECSA/core/__pycache__/__init__.cpython-311.pyc
+PyLibSuitETECSA/core/__pycache__/exception.cpython-311.pyc
+PyLibSuitETECSA/core/__pycache__/models.cpython-311.pyc
+PyLibSuitETECSA/core/__pycache__/protocol.cpython-311.pyc
+PyLibSuitETECSA/core/__pycache__/session.cpython-311.pyc
+PyLibSuitETECSA/__pycache__/__init__.cpython-311.pyc
+PyLibSuitETECSA/__pycache__/api.cpython-311.pyc
diff --git a/.idea/.gitignore b/.idea/.gitignore
old mode 100644
new mode 100755
diff --git a/.idea/PyLibSuitETECSA.iml b/.idea/PyLibSuitETECSA.iml
old mode 100644
new mode 100755
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
old mode 100644
new mode 100755
diff --git a/.idea/copyright/MarilaSoft.xml b/.idea/copyright/MarilaSoft.xml
old mode 100644
new mode 100755
diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml
old mode 100644
new mode 100755
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
old mode 100644
new mode 100755
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
old mode 100644
new mode 100755
diff --git a/.idea/misc.xml b/.idea/misc.xml
old mode 100644
new mode 100755
diff --git a/.idea/modules.xml b/.idea/modules.xml
old mode 100644
new mode 100755
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
old mode 100644
new mode 100755
diff --git a/BuildDEB/control b/BuildDEB/control
old mode 100644
new mode 100755
diff --git a/BuildDEB/postinst b/BuildDEB/postinst
old mode 100644
new mode 100755
diff --git a/LICENSE b/LICENSE
old mode 100644
new mode 100755
index 33daaec..649fc48
--- a/LICENSE
+++ b/LICENSE
@@ -1,674 +1,21 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-  The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.  We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors.  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
-  To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  You must make sure that they, too, receive
-or can get the source code.  And you must show them these terms so they
-know their rights.
-
-  Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-  For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-  Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so.  This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software.  The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable.  Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products.  If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
-  Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                       TERMS AND CONDITIONS
-
-  0. Definitions.
-
-  "This License" refers to version 3 of the GNU General Public License.
-
-  "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-  "The Program" refers to any copyrightable work licensed under this
-License.  Each licensee is addressed as "you".  "Licensees" and
-"recipients" may be individuals or organizations.
-
-  To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy.  The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-  A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-  To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy.  Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-  To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies.  Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
-  An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License.  If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-  1. Source Code.
-
-  The "source code" for a work means the preferred form of the work
-for making modifications to it.  "Object code" means any non-source
-form of a work.
-
-  A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-  The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form.  A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-  The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities.  However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work.  For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-  The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-  The Corresponding Source for a work in source code form is that
-same work.
-
-  2. Basic Permissions.
-
-  All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met.  This License explicitly affirms your unlimited
-permission to run the unmodified Program.  The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work.  This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-  You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force.  You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright.  Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
-  Conveying under any other circumstances is permitted solely under
-the conditions stated below.  Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-  No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-  When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
-  4. Conveying Verbatim Copies.
-
-  You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-  You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-  You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-    a) The work must carry prominent notices stating that you modified
-    it, and giving a relevant date.
-
-    b) The work must carry prominent notices stating that it is
-    released under this License and any conditions added under section
-    7.  This requirement modifies the requirement in section 4 to
-    "keep intact all notices".
-
-    c) You must license the entire work, as a whole, under this
-    License to anyone who comes into possession of a copy.  This
-    License will therefore apply, along with any applicable section 7
-    additional terms, to the whole of the work, and all its parts,
-    regardless of how they are packaged.  This License gives no
-    permission to license the work in any other way, but it does not
-    invalidate such permission if you have separately received it.
-
-    d) If the work has interactive user interfaces, each must display
-    Appropriate Legal Notices; however, if the Program has interactive
-    interfaces that do not display Appropriate Legal Notices, your
-    work need not make them do so.
-
-  A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit.  Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-  You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-    a) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by the
-    Corresponding Source fixed on a durable physical medium
-    customarily used for software interchange.
-
-    b) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by a
-    written offer, valid for at least three years and valid for as
-    long as you offer spare parts or customer support for that product
-    model, to give anyone who possesses the object code either (1) a
-    copy of the Corresponding Source for all the software in the
-    product that is covered by this License, on a durable physical
-    medium customarily used for software interchange, for a price no
-    more than your reasonable cost of physically performing this
-    conveying of source, or (2) access to copy the
-    Corresponding Source from a network server at no charge.
-
-    c) Convey individual copies of the object code with a copy of the
-    written offer to provide the Corresponding Source.  This
-    alternative is allowed only occasionally and noncommercially, and
-    only if you received the object code with such an offer, in accord
-    with subsection 6b.
-
-    d) Convey the object code by offering access from a designated
-    place (gratis or for a charge), and offer equivalent access to the
-    Corresponding Source in the same way through the same place at no
-    further charge.  You need not require recipients to copy the
-    Corresponding Source along with the object code.  If the place to
-    copy the object code is a network server, the Corresponding Source
-    may be on a different server (operated by you or a third party)
-    that supports equivalent copying facilities, provided you maintain
-    clear directions next to the object code saying where to find the
-    Corresponding Source.  Regardless of what server hosts the
-    Corresponding Source, you remain obligated to ensure that it is
-    available for as long as needed to satisfy these requirements.
-
-    e) Convey the object code using peer-to-peer transmission, provided
-    you inform other peers where the object code and Corresponding
-    Source of the work are being offered to the general public at no
-    charge under subsection 6d.
-
-  A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-  A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling.  In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage.  For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product.  A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-  "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source.  The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
-  If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information.  But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-  The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed.  Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
-  Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-  7. Additional Terms.
-
-  "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law.  If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-  When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it.  (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.)  You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-  Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
-    a) Disclaiming warranty or limiting liability differently from the
-    terms of sections 15 and 16 of this License; or
-
-    b) Requiring preservation of specified reasonable legal notices or
-    author attributions in that material or in the Appropriate Legal
-    Notices displayed by works containing it; or
-
-    c) Prohibiting misrepresentation of the origin of that material, or
-    requiring that modified versions of such material be marked in
-    reasonable ways as different from the original version; or
-
-    d) Limiting the use for publicity purposes of names of licensors or
-    authors of the material; or
-
-    e) Declining to grant rights under trademark law for use of some
-    trade names, trademarks, or service marks; or
-
-    f) Requiring indemnification of licensors and authors of that
-    material by anyone who conveys the material (or modified versions of
-    it) with contractual assumptions of liability to the recipient, for
-    any liability that these contractual assumptions directly impose on
-    those licensors and authors.
-
-  All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10.  If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term.  If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-  If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-  Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
-  8. Termination.
-
-  You may not propagate or modify a covered work except as expressly
-provided under this License.  Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-  However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-  Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-  Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-  You are not required to accept this License in order to receive or
-run a copy of the Program.  Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance.  However,
-nothing other than this License grants you permission to propagate or
-modify any covered work.  These actions infringe copyright if you do
-not accept this License.  Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-  10. Automatic Licensing of Downstream Recipients.
-
-  Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License.  You are not responsible
-for enforcing compliance by third parties with this License.
-
-  An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations.  If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-  You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License.  For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-  11. Patents.
-
-  A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based.  The
-work thus licensed is called the contributor's "contributor version".
-
-  A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version.  For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-  In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement).  To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-  If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients.  "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-  If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-  A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License.  You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
-  Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-  12. No Surrender of Others' Freedom.
-
-  If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all.  For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
-  13. Use with the GNU Affero General Public License.
-
-  Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work.  The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-  14. Revised Versions of this License.
-
-  The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-  Each version is given a distinguishing version number.  If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation.  If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
-  If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
-  Later license versions may give you additional or different
-permissions.  However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-  15. Disclaimer of Warranty.
-
-  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. Limitation of Liability.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
-  17. Interpretation of Sections 15 and 16.
-
-  If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    pyselibrary
-    Copyright (C) 2019  marilasoft
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
-  If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-    pyselibrary  Copyright (C) 2019  marilasoft
-    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
-  You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
-  The GNU General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.  But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+MIT License
+
+Copyright (c) 2023 Lesly Cintra Laza <a.k.a. lesclaz>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/PyLibSuitETECSA/__about__.py b/PyLibSuitETECSA/__about__.py
old mode 100644
new mode 100755
index 9666337..2d55e7f
--- a/PyLibSuitETECSA/__about__.py
+++ b/PyLibSuitETECSA/__about__.py
@@ -1,14 +1,22 @@
-#  Copyright (c) 2022. MarilaSoft.
-#  #
-#  This program is free software: you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation, either version 3 of the License, or
-#  (at your option) any later version.
-#  #
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#  #
-#  You should have received a copy of the GNU General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2023 Lesly Cintra Laza <a.k.a. lesclaz>
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
diff --git a/PyLibSuitETECSA/__init__.py b/PyLibSuitETECSA/__init__.py
old mode 100644
new mode 100755
index 9666337..2d55e7f
--- a/PyLibSuitETECSA/__init__.py
+++ b/PyLibSuitETECSA/__init__.py
@@ -1,14 +1,22 @@
-#  Copyright (c) 2022. MarilaSoft.
-#  #
-#  This program is free software: you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation, either version 3 of the License, or
-#  (at your option) any later version.
-#  #
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#  #
-#  You should have received a copy of the GNU General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2023 Lesly Cintra Laza <a.k.a. lesclaz>
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
diff --git a/PyLibSuitETECSA/api.py b/PyLibSuitETECSA/api.py
old mode 100644
new mode 100755
index fbb6d6f..6b9c184
--- a/PyLibSuitETECSA/api.py
+++ b/PyLibSuitETECSA/api.py
@@ -1,28 +1,37 @@
-#  Copyright (c) 2022. MarilaSoft.
-#  #
-#  This program is free software: you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation, either version 3 of the License, or
-#  (at your option) any later version.
-#  #
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#  #
-#  You should have received a copy of the GNU General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-from typing import List, Any, Union
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2023 Lesly Cintra Laza <a.k.a. lesclaz>
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+import datetime
+from typing import Any
 
 from requests import RequestException
 
 from PyLibSuitETECSA.core.exception import LogoutException
-from PyLibSuitETECSA.core.models import Connection, Recharge, Transfer, \
-    QuotePaid
+from PyLibSuitETECSA.core.models import ActionResponse, Connection, Recharge, \
+    Transfer, QuoteFund
 from PyLibSuitETECSA.core.protocol import UserPortal, Nauta
 from PyLibSuitETECSA.core.session import NautaSession
-from PyLibSuitETECSA.core.utils import Action
+from PyLibSuitETECSA.utils import Action
 
 
 class UserPortalClient:
@@ -56,7 +65,9 @@ def login(self, captcha_code: str):
         :return: instancia de esta clase.
         """
         if not self.session:
-            self.init_session()
+            raise LogoutException(
+                'Debe crear una sesión antes de loguearte.'
+            )
 
         UserPortal.login(
             self.session,
@@ -67,7 +78,7 @@ def login(self, captcha_code: str):
 
         return self
 
-    def recharge(self, recharge_code: str) -> bool:
+    def recharge(self, recharge_code: str) -> ActionResponse:
         """
         Recarga el saldo de la cuenta registrada.
         :param recharge_code: Código de recarga.
@@ -77,35 +88,36 @@ def recharge(self, recharge_code: str) -> bool:
             self.session,
             recharge_code
         )
-
-        UserPortal.load_user_info(
-            self.session
-        )
         return is_confirmed
 
     def transfer(
-            self, mount_to_transfer: str,
+            self, mount_to_transfer: float | int | str,
             account_to_transfer: str
-    ) -> bool:
+    ) -> ActionResponse:
         """
         Transfiere saldo a otra cuenta nauta.
         :param mount_to_transfer: Monto a transferir.
         :param account_to_transfer: Cuenta de destino.
         :return:
         """
-        is_confirmed = UserPortal.transfer(
+        return UserPortal.transfer(
             self.session,
             mount_to_transfer,
             account_to_transfer,
             self.password
         )
 
-        UserPortal.load_user_info(
-            self.session
+    def pay_nauta_home(
+        self, mount_to_transfer: float | int | str
+    ) -> ActionResponse:
+        return UserPortal.transfer(
+            session=self.session,
+            mount_to_transfer=mount_to_transfer,
+            password=self.password,
+            nauta_hogar_paid=True
         )
-        return is_confirmed
 
-    def change_password(self, new_passwrd: str) -> bool:
+    def change_password(self, new_passwrd: str) -> ActionResponse:
         """
         Cambia la contraseña de acceso a internet de la cuenta registrada.
         :param new_passwrd: Nueva contraseña.
@@ -117,7 +129,7 @@ def change_password(self, new_passwrd: str) -> bool:
             new_passwrd
         )
 
-    def change_email_password(self, new_passwrd: str) -> bool:
+    def change_email_password(self, new_passwrd: str) -> ActionResponse:
         """
         Cambia la contraseña de la cuenta de correo asociada.
         :param new_passwrd: Nueva contraseña.
@@ -132,7 +144,7 @@ def change_email_password(self, new_passwrd: str) -> bool:
     def get_lasts(
             self, action: str = Action.GET_CONNECTIONS,
             large: int = 5
-    ) -> List[Any]:
+    ) -> list[Connection | Recharge | Transfer | QuoteFund] | None:
         """
         Devuelve las últimas `large` `action` realizadas por la cuenta.
         :param action: Acciones u operaciones que se requieren.
@@ -149,39 +161,43 @@ def get_lasts(
     def get_connections(
             self, year: int,
             month: int
-    ) -> Union[List[Connection], None]:
+    ) -> list[Connection] | None:
         """
         Devuelve las conexiones realizadas en el periodo mes-año especificado.
         :param year: Año en el que buscar.
         :param month: Mes en el que buscar.
         :return: Lista de Connection en el periodo solicitado.
         """
+        connections_summary = UserPortal.get_connections_summary(
+            self.session, year, month
+        )
         return UserPortal.get_connections(
-            self.session,
-            year,
-            month
+            self.session, connections_summary
         )
 
     def get_recharges(
             self, year: int,
             month: int
-    ) -> Union[List[Recharge], None]:
+    ) -> list[Recharge] | None:
         """
         Devuelve las recargas realizadas en el periodo mes-año especificado.
         :param year: Año en el que buscar.
         :param month: Mes en el que buscar.
         :return: Lista de Recharge en el periodo solicitado.
         """
+
+        recharges_summary = UserPortal.get_recharges_summary(
+            self.session, year, month
+        )
         return UserPortal.get_recharges(
             self.session,
-            year,
-            month
+            recharges_summary
         )
 
     def get_transfers(
             self, year: int,
             month: int
-    ) -> Union[List[Transfer], None]:
+    ) -> list[Transfer] | None:
         """
         Devuelve las transferencias realizadas en el periodo mes-año
         especificado.
@@ -189,16 +205,19 @@ def get_transfers(
         :param month: Mes en el que buscar.
         :return: Lista de Transfer en el periodo solicitado.
         """
+
+        transfers_summary = UserPortal.get_transfers_summary(
+            self.session, year, month
+        )
         return UserPortal.get_transfers(
             self.session,
-            year,
-            month
+            transfers_summary
         )
 
     def get_quotes_fund(
             self, year: int,
             month: int
-    ) -> Union[List[QuotePaid], None]:
+    ) -> list[QuoteFund] | None:
         """
         Devuelve las recargas hechas al servicio nauta Hogar en el periodo
         mes-año especificado.
@@ -206,10 +225,13 @@ def get_quotes_fund(
         :param month: Mes en el que buscar.
         :return: Lista de NautaHomePaid en el periodo solicitado.
         """
+
+        quotes_fund_summary = UserPortal.get_quotes_fund_summary(
+            self.session, year, month
+        )
         return UserPortal.get_quotes_fund(
             self.session,
-            year,
-            month
+            quotes_fund_summary
         )
 
     @property
@@ -221,140 +243,140 @@ def is_nauta_home(self) -> bool:
         return self.session.is_nauta_home
 
     @property
-    def blocking_date(self) -> Union[str, None]:
+    def blocking_date(self) -> datetime.datetime | None:
         """
         :return: Fecha de bloqueo de la cuenta registrada.
         """
         return self.session.blocking_date if self.session else None
 
     @property
-    def date_of_elimination(self) -> Union[str, None]:
+    def date_of_elimination(self) -> datetime.datetime | None:
         """
         :return: Fecha de eliminación de la cuenta registrada.
         """
         return self.session.date_of_elimination if self.session else None
 
     @property
-    def account_type(self) -> Union[str, None]:
+    def account_type(self) -> str | None:
         """
         :return: Tipo de cuenta de la cuenta registrada.
         """
         return self.session.account_type if self.session else None
 
     @property
-    def service_type(self) -> Union[str, None]:
+    def service_type(self) -> str | None:
         """
         :return: Tipo de servicio de la cuenta registrada.
         """
         return self.session.service_type if self.session else None
 
     @property
-    def credit(self) -> Union[str, None]:
+    def credit(self) -> float | None:
         """
         :return: Saldo disponible de la cuenta registrada.
         """
         return self.session.credit if self.session else None
 
     @property
-    def time(self) -> Union[str, None]:
+    def time(self) -> int | None:
         """
         :return: Tiempo disponible de la cuenta registrada.
         """
         return self.session.time if self.session else None
 
     @property
-    def mail_account(self) -> Union[str, None]:
+    def mail_account(self) -> str | None:
         """
         :return: Cuenta de correo asociada a la cuenta registrada.
         """
         return self.session.mail_account if self.session else None
 
     @property
-    def offer(self) -> Union[str, None]:
+    def offer(self) -> str | None:
         """
         :return: valor de oferta.
         """
         return self.session.offer if self.session else None
 
     @property
-    def monthly_fee(self) -> Union[str, None]:
+    def monthly_fee(self) -> float | None:
         """
         :return: valor cuota mensual.
         """
         return self.session.monthly_fee if self.session else None
 
     @property
-    def download_speeds(self) -> Union[str, None]:
+    def download_speeds(self) -> int | None:
         """
         :return: valor velocidad de bajada.
         """
         return self.session.download_speeds if self.session else None
 
     @property
-    def upload_speeds(self) -> Union[str, None]:
+    def upload_speeds(self) -> int | None:
         """
         :return: valor velocidad de subida.
         """
         return self.session.upload_speeds if self.session else None
 
     @property
-    def phone(self) -> Union[str, None]:
+    def phone(self) -> int | None:
         """
         :return: valor teléfono.
         """
         return self.session.phone if self.session else None
 
     @property
-    def link_identifiers(self) -> Union[str, None]:
+    def link_identifiers(self) -> str | None:
         """
         :return: valor identificador del enlace.
         """
         return self.session.link_identifiers if self.session else None
 
     @property
-    def link_status(self) -> Union[str, None]:
+    def link_status(self) -> str | None:
         """
         :return: valor estado del enlace.
         """
         return self.session.link_status if self.session else None
 
     @property
-    def activation_date(self) -> Union[str, None]:
+    def activation_date(self) -> datetime.datetime| None:
         """
         :return: valor fecha de activacion.
         """
         return self.session.activation_date if self.session else None
 
     @property
-    def blocking_date_home(self) -> Union[str, None]:
+    def blocking_date_home(self) -> datetime.datetime | None:
         """
         :return: valor fecha de bloqueo (`nauta hogar`).
         """
         return self.session.blocking_date_home if self.session else None
 
     @property
-    def date_of_elimination_home(self) -> Union[str, None]:
+    def date_of_elimination_home(self) -> datetime.datetime | None:
         """
         :return: valor fecha de eliminacion (`nauta hogar`).
         """
         return self.session.date_of_elimination_home if self.session else None
 
     @property
-    def quota_fund(self) -> Union[str, None]:
+    def quota_fund(self) -> float | None:
         """
         :return: valor fondo de cuota.
         """
         return self.session.quota_fund if self.session else None
 
     @property
-    def voucher(self) -> Union[str, None]:
+    def voucher(self) -> float | None:
         """
         :return: valor bono.
         """
         return self.session.voucher if self.session else None
 
     @property
-    def debt(self) -> Union[str, None]:
+    def debt(self) -> float | None:
         """
         :return: valor deuda.
         """
diff --git a/PyLibSuitETECSA/core/__init__.py b/PyLibSuitETECSA/core/__init__.py
old mode 100644
new mode 100755
index 9666337..7aa9dba
--- a/PyLibSuitETECSA/core/__init__.py
+++ b/PyLibSuitETECSA/core/__init__.py
@@ -1,14 +1,33 @@
-#  Copyright (c) 2022. MarilaSoft.
-#  #
-#  This program is free software: you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation, either version 3 of the License, or
-#  (at your option) any later version.
-#  #
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#  #
-#  You should have received a copy of the GNU General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2023 Lesly Cintra Laza <a.k.a. lesclaz>
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+# Una lista que contiene las claves de los atributos de la cuenta
+# proporcionados por el portal de usuario.
+USER_PORTAL_ATTRS = [
+    "username", "blocking_date", "date_of_elimination", "account_type",
+    "service_type", "credit", "time", "mail_account", "offer",
+    "monthly_fee", "download_speeds", "upload_speeds", "phone",
+    "link_identifiers", "link_status", "activation_date",
+    "blocking_date_home", "date_of_elimination_home", "quota_fund",
+    "voucher", "debt"
+]
diff --git a/PyLibSuitETECSA/core/exception.py b/PyLibSuitETECSA/core/exception.py
old mode 100644
new mode 100755
index fc2397b..b087132
--- a/PyLibSuitETECSA/core/exception.py
+++ b/PyLibSuitETECSA/core/exception.py
@@ -1,17 +1,26 @@
-#  Copyright (c) 2022. MarilaSoft.
-#  #
-#  This program is free software: you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation, either version 3 of the License, or
-#  (at your option) any later version.
-#  #
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#  #
-#  You should have received a copy of the GNU General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2023 Lesly Cintra Laza <a.k.a. lesclaz>
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
 
 class PreLoginException(Exception):
     pass
diff --git a/PyLibSuitETECSA/core/models.py b/PyLibSuitETECSA/core/models.py
old mode 100644
new mode 100755
index 8084dea..02a4c7b
--- a/PyLibSuitETECSA/core/models.py
+++ b/PyLibSuitETECSA/core/models.py
@@ -1,99 +1,123 @@
-#  Copyright (c) 2022. MarilaSoft.
-#  #
-#  This program is free software: you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation, either version 3 of the License, or
-#  (at your option) any later version.
-#  #
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#  #
-#  You should have received a copy of the GNU General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2023 Lesly Cintra Laza <a.k.a. lesclaz>
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
 
 from datetime import datetime
 
+from dataclasses import dataclass
+from typing import Any
+
+from PyLibSuitETECSA.utils import ATTR_TYPE
+from PyLibSuitETECSA.utils.from_str import to_bytes, to_datetime, to_float, to_seconds
+
+
+class DataModel:
+
+    def __setattr__(self, __name: str, __value: Any) -> None:
+        if type(__value) == str and __name in ATTR_TYPE:
+            match ATTR_TYPE[__name]:
+                case "str":
+                    self.__dict__[__name] = __value
+                case "int":
+                    self.__dict__[__name] = int(__value)
+                case "float":
+                    self.__dict__[__name] = to_float(__value)
+                case "seconds":
+                    self.__dict__[__name] = to_seconds(__value)
+                case "bytes":
+                    self.__dict__[__name] = to_bytes(__value)
+                case "datetime":
+                    self.__dict__[__name] = to_datetime(__value)
+                case _:
+                    raise AttributeError
+
+
+@dataclass
+class ConnectionsSummary(DataModel):
+
+    count: (str | int)
+    year_month_selected: str
+    total_time: (str | int)
+    total_import: (str | float)
+    uploaded: (str | int)
+    downloaded: (str | int)
+    total_traffic: (str | int)
+
 
-class ActionObject:
+@dataclass
+class Connection(DataModel):
 
-    @staticmethod
-    def __text_to_datetime(text: str) -> datetime:
-        date_, time_ = text.split(" ")
-        day, month, year = date_.split("/")
-        hours, minutes, seconds = time_.split(":")
-        return datetime(int(year), int(month), int(day),
-                        int(hours), int(minutes), int(seconds))
+    start_session: (str | datetime)
+    end_session: (str | datetime)
+    duration: (str | int)
+    uploaded: (str | int)
+    downloaded: (str | int)
+    import_: (str | float)
 
 
-class Connection(ActionObject):
+@dataclass
+class RechargesSummary(DataModel):
 
-    def __init__(self, **kwargs):
-        self.start_session = None
-        self.end_session = None
-        self.duration = None
-        self.upload = None
-        self.download = None
-        self.import_ = None
-        self.__dict__.update(kwargs)
+    count: (str | int)
+    year_month_selected: str
+    total_import: (str | float)
 
-    @property
-    def start_session_as_dt(self):
-        if self.start_session:
-            return self.__text_to_datetime(self.start_session)
 
-    @property
-    def end_session_as_dt(self):
-        if self.end_session:
-            return self.__text_to_datetime(self.end_session)
+@dataclass
+class Recharge(DataModel):
 
+    date: (str | datetime)
+    import_: (str | float)
+    channel: str
+    type_: str
 
-class Recharge(ActionObject):
 
-    def __init__(self, **kwargs):
-        self.date = None
-        self.import_ = None
-        self.channel = None
-        self.type_ = None
-        self.__dict__.update(kwargs)
+@dataclass
+class QuotesFundSummary(RechargesSummary):
+    pass
 
-    @property
-    def date_as_dt(self):
-        if self.date:
-            return self.__text_to_datetime(self.date)
 
+@dataclass
+class QuoteFund(Recharge):
 
-class QuotePaid(Recharge):
+    office: str
 
-    def __init__(self, **kwargs):
-        super().__init__(**kwargs)
-        self.office = None
-        self.__dict__.update(kwargs)
 
+@dataclass
+class TransfersSummary(RechargesSummary):
+    pass
 
-class Transfer(ActionObject):
 
-    def __init__(self, **kwargs):
-        self.date = None
-        self.import_ = None
-        self.destiny_account = None
+@dataclass
+class Transfer(DataModel):
 
-    @property
-    def date_as_dt(self):
-        if self.date:
-            return self.__text_to_datetime(self.date)
+    date: (str | datetime)
+    import_: (str | float)
+    destiny_account: str
 
 
-class User:
+@dataclass
+class ActionResponse:
 
-    def __init__(self, **kwargs):
-        self.username = None
-        self.block_date = None
-        self.delete_date = None
-        self.account_type = None
-        self.service_type = None
-        self.credit = None
-        self.remaining_time = None
-        self.mail_account = None
-        self.__dict__.update(kwargs)
+    status: str
+    message: str
diff --git a/PyLibSuitETECSA/core/protocol.py b/PyLibSuitETECSA/core/protocol.py
old mode 100644
new mode 100755
index 193bd59..07d10eb
--- a/PyLibSuitETECSA/core/protocol.py
+++ b/PyLibSuitETECSA/core/protocol.py
@@ -1,32 +1,45 @@
-#  Copyright (c) 2022. MarilaSoft.
-#  #
-#  This program is free software: you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation, either version 3 of the License, or
-#  (at your option) any later version.
-#  #
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#  #
-#  You should have received a copy of the GNU General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2023 Lesly Cintra Laza <a.k.a. lesclaz>
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+
 import re
 from datetime import date
 from typing import List, Any, Union
 
 import bs4
 import requests
+from PyLibSuitETECSA.core import USER_PORTAL_ATTRS
 
 from PyLibSuitETECSA.core.exception import GetInfoException, \
     TransferException, ChangePasswordException, LoginException, \
     RechargeException, PreLoginException, NotNautaHomeAccount, \
-    LogoutException, NautaException
-from PyLibSuitETECSA.core.models import Connection, Recharge, Transfer, \
-    QuotePaid
+    LogoutException, NautaException, ConnectionException
+from PyLibSuitETECSA.core.models import Connection, ConnectionsSummary, \
+    QuoteFund, QuotesFundSummary, Recharge, RechargesSummary, Transfer, \
+    ActionResponse, TransfersSummary
 from PyLibSuitETECSA.core.session import UserPortalSession, NautaSession
-from PyLibSuitETECSA.core.utils import Action, find_errors, Portal
+from PyLibSuitETECSA.utils import RE_SUCCESS_ACTION, Action, Portal
+from PyLibSuitETECSA.utils.parser import parse_errors
 
 
 class UserPortal:
@@ -36,82 +49,70 @@ class UserPortal:
     # Un diccionario que contiene las URL de las acciones que se pueden
     # realizar en el portal.
     __url = {
-        Action.LOGIN: f"{BASE_URL}user/login/es-es",
-        Action.LOAD_USER_INFO: f"{BASE_URL}useraaa/user_info",
-        Action.RECHARGE: f"{BASE_URL}useraaa/recharge_account",
-        Action.TRANSFER: f"{BASE_URL}useraaa/transfer_balance",
-        Action.CHANGE_PASSWORD: f"{BASE_URL}useraaa/change_password",
-        Action.CHANGE_EMAIL_PASSWORD: f"{BASE_URL}email/change_password",
+        Action.LOGIN: f"user/login/es-es",
+        Action.LOAD_USER_INFO: f"useraaa/user_info",
+        Action.RECHARGE: f"useraaa/recharge_account",
+        Action.TRANSFER: f"useraaa/transfer_balance",
+        Action.NAUTA_HOGAR_PAID: f"useraaa/transfer_nautahogarpaid",
+        Action.CHANGE_PASSWORD: f"useraaa/change_password",
+        Action.CHANGE_EMAIL_PASSWORD: f"mail/change_password",
         Action.GET_CONNECTIONS: {
-            "base": f"{BASE_URL}useraaa/service_detail/",
-            "summary": f"{BASE_URL}useraaa/service_detail_summary/",
-            "list": f"{BASE_URL}useraaa/service_detail_list/"
+            "base": f"useraaa/service_detail/",
+            "summary": f"useraaa/service_detail_summary/",
+            "list": f"useraaa/service_detail_list/"
         },
         Action.GET_RECHARGES: {
-            "base": f"{BASE_URL}useraaa/recharge_detail/",
-            "summary": f"{BASE_URL}useraaa/recharge_detail_summary/",
-            "list": f"{BASE_URL}useraaa/recharge_detail_list/"
+            "base": f"useraaa/recharge_detail/",
+            "summary": f"useraaa/recharge_detail_summary/",
+            "list": f"useraaa/recharge_detail_list/"
         },
         Action.GET_TRANSFERS: {
-            "base": f"{BASE_URL}useraaa/transfer_detail/",
-            "summary": f"{BASE_URL}useraaa/transfer_detail_summary/",
-            "list": f"{BASE_URL}useraaa/transfer_detail_list/",
+            "base": f"useraaa/transfer_detail/",
+            "summary": f"useraaa/transfer_detail_summary/",
+            "list": f"useraaa/transfer_detail_list/",
         },
         Action.GET_QUOTES_FUND: {
-            "base": f"{BASE_URL}useraaa/nautahogarpaid_detail/",
-            "summary": f"{BASE_URL}useraaa/nautahogarpaid_detail_summary/",
-            "list": f"{BASE_URL}useraaa/nautahogarpaid_detail_list/"
+            "base": f"useraaa/nautahogarpaid_detail/",
+            "summary": f"useraaa/nautahogarpaid_detail_summary/",
+            "list": f"useraaa/nautahogarpaid_detail_list/"
         },
-        Action.LOGOUT: f"{BASE_URL}user/logout"
-    }
-
-    # Un diccionario que contiene las excepciones que se pueden generar
-    # cuando se produce un error en el portal.
-    __up_exceptions = {
-        Action.LOAD_USER_INFO: GetInfoException,
-        Action.RECHARGE: RechargeException,
-        Action.TRANSFER: TransferException,
-        Action.GET_CONNECTIONS: GetInfoException,
-        Action.GET_RECHARGES: GetInfoException,
-        Action.GET_QUOTES_FUND: GetInfoException,
-        Action.GET_TRANSFERS: GetInfoException,
-        Action.CHANGE_PASSWORD: ChangePasswordException,
-        Action.CHANGE_EMAIL_PASSWORD: ChangePasswordException,
-        Action.LOGIN: LoginException
+        Action.LOGOUT: f"user/logout"
     }
 
-    # Un diccionario que contiene los atributos de la cuenta del usuario.
-    __attrs = {
-        "username": "usuario",
-        "account_type": "tipo de cuenta",
-        "service_type": "tipo de servicio",
-        "credit": "saldo disponible",
-        "time": "tiempo disponible de la cuenta",
-        "mail_account": "cuenta de correo",
-        "offer": "oferta",
-        "monthly_fee": "cuota mensual",
-        "download_speeds": "velocidad de bajada",
-        "upload_speeds": "velocidad de subida",
-        "phone": "teléfono",
-        "link_identifiers": "identificador del enlace",
-        "link_status": "estado del enlace",
-        "activation_date": "fecha de activación",
-        "blocking_date": "fecha de bloqueo",
-        "date_of_elimination": "fecha de eliminación",
-        "blocking_date_home": "fecha de bloqueo",
-        "date_of_elimination_home": "fecha de eliminación",
-        "quota_fund": "fondo de cuota",
-        "voucher": "bono",
-        "debt": "deuda"
-    }
+    @classmethod
+    def __build_url(
+        cls, action: str,
+        get_action: bool = False,
+        sub_action: str = None,
+        year_month_selected: str = None,
+        count_or_page: int = None
+    ) -> (str | None):
+        if not get_action:
+            return f'{cls.BASE_URL}{cls.__url[action]}'
+        elif get_action and sub_action:
+            url = f'{cls.BASE_URL}{cls.__url[action][sub_action]}'
+            match sub_action:
+                case "base" | "summary":
+                    return url
+                case "list":
+                    if not year_month_selected:
+                        raise AttributeError(
+                            'Atributo year_month_selected mp definido'
+                        )
+                    if not count_or_page:
+                        raise AttributeError(
+                            'Atributo count_or_page mp definido'
+                        )
+                    else:
+                        return f'{url}{year_month_selected}/{count_or_page}'
 
     @classmethod
     def __get_csrf(
-            cls, action: str,
+            cls, action: Action,
             session: UserPortalSession = None,
             url: str = None,
             soup: bs4.BeautifulSoup = None
-    ):
+    ) -> str:
         """
         Obtiene el token CSRF de la página
 
@@ -128,17 +129,22 @@ def __get_csrf(
         """
         if session:
             if not url:
-                url = cls.__url[action]
+                url = cls.__build_url(action)
             r = session.requests_session.get(url)
-            cls.__raise_if_error(r, action)
-            soup = bs4.BeautifulSoup(r.text, 'html.parser')
-        return soup.find("input", {"name": "csrf"}).attrs["value"]
+            soup = cls.__raise_if_error(
+                r,
+                ConnectionException,
+                "Error al obtener el token 'csrf'"
+            )
+        return soup.select_one('input[name=csrf]').attrs["value"]
 
     @classmethod
     def __raise_if_error(
             cls, r: requests.Response,
-            action: str
-    ):
+            exception: Exception,
+            message: str,
+            find_error: bool = True
+    ) -> bs4.BeautifulSoup:
         """
         Comprueba si la solicitud fue exitosa y si hay algún error en la
         respuesta.
@@ -150,14 +156,31 @@ def __raise_if_error(
         :type action: str
         """
         if not r.ok:
-            raise cls.__up_exceptions[action](
-                f"Fallo al realizar la operación: {r.status_code} - {r.reason}"
+            raise exception(
+                f"{message}: {r.status_code} :: {r.reason}"
             )
 
-        soup = bs4.BeautifulSoup(r.text, 'html.parser')
-        errors = find_errors(soup, Portal.USER_PORTAL)
-        if errors:
-            raise cls.__up_exceptions[action](errors)
+        if find_error:
+            soup = bs4.BeautifulSoup(r.text, 'html5lib')
+            error = parse_errors(soup, Portal.USER_PORTAL)
+            if error:
+                raise exception(error)
+            else:
+                return soup
+
+    @classmethod
+    def __update_session_parameters(
+        cls, session: UserPortalSession,
+        soup: bs4.BeautifulSoup
+    ) -> None:
+
+        parameters = soup.select_one('.z-depth-1').select('.m6')
+
+        for _, parameter in enumerate(parameters):
+            session.__setattr__(
+                USER_PORTAL_ATTRS[_],
+                parameter.select_one('p').text
+            )
 
     @staticmethod
     def get_captcha(session: UserPortalSession) -> bytes:
@@ -168,8 +191,16 @@ def get_captcha(session: UserPortalSession) -> bytes:
         :type session: UserPortalSession
         :return: La imagen captcha.
         """
-        return session.requests_session.get(
-            "https://www.portal.nauta.cu/captcha/?").content
+        r = session.requests_session.get(
+            "https://www.portal.nauta.cu/captcha/?"
+        )
+        UserPortal.__raise_if_error(
+            r,
+            ConnectionException,
+            "Error al Obtener la imagen Captcha",
+            find_error=False
+        )
+        return r.content
 
     @classmethod
     def create_session(cls) -> UserPortalSession:
@@ -183,14 +214,16 @@ def create_session(cls) -> UserPortalSession:
         """
         session = UserPortalSession()
 
-        resp = session.requests_session.get(
-            cls.__url[Action.LOGIN]
+        r = session.requests_session.get(
+            cls.__build_url(Action.LOGIN)
         )
 
-        if not resp.ok:
-            raise PreLoginException("Failed to create session")
+        soup = cls.__raise_if_error(
+            r,
+            PreLoginException,
+            "Fallo al crear la sesión"
+        )
 
-        soup = bs4.BeautifulSoup(resp.text, 'html.parser')
         session.csrf = cls.__get_csrf(Action.LOGIN, soup=soup)
 
         return session
@@ -226,22 +259,14 @@ def login(
             Action.LOGIN
         )
 
-        if not r.ok:
-            raise LoginException(
-                f"Fallo el inicio de sesión: {r.status_code} - {r.reason}")
-        cls.__raise_if_error(r, Action.LOGIN)
-
-        soup = bs4.BeautifulSoup(r.text, "html.parser")
-
-        session.__dict__.update(
-            **{
-                key: cls.__get_attr__(
-                    key,
-                    soup
-                )
-                for key in cls.__attrs.keys()}
+        soup = cls.__raise_if_error(
+            r,
+            LoginException,
+            "Falló el inicio de sesión"
         )
 
+        cls.__update_session_parameters(session, soup)
+
     @classmethod
     def load_user_info(cls, session: UserPortalSession) -> None:
         """
@@ -252,24 +277,23 @@ def load_user_info(cls, session: UserPortalSession) -> None:
         :param session: Sesión de portal de usuario
         :type session: UserPortalSession
         """
-        action = Action.LOAD_USER_INFO
         r = session.requests_session.get(
-            cls.__url[action]
+            cls.__build_url(Action.LOAD_USER_INFO)
         )
-        cls.__raise_if_error(r, action)
 
-        soup = bs4.BeautifulSoup(r.text, 'html.parser')
-        session.__dict__.update(
-            **{
-                key: cls.__get_attr__(
-                    key,
-                    soup
-                )
-                for key in cls.__attrs.keys()}
+        soup = cls.__raise_if_error(
+            r,
+            GetInfoException,
+            "Fallo al recuperar la info de la cuenta"
         )
 
+        cls.__update_session_parameters(session, soup)
+
     @classmethod
-    def recharge(cls, session: UserPortalSession, recharge_code: str) -> bool:
+    def recharge(
+        cls, session: UserPortalSession,
+        recharge_code: str
+    ) -> ActionResponse:
         """
         Recarga la cuenta
 
@@ -285,16 +309,23 @@ def recharge(cls, session: UserPortalSession, recharge_code: str) -> bool:
             "recharge_code": recharge_code,
             "btn_submit": ""
         }
-        response = cls.__post_action(session, data, action)
-        return cls.__is_confirmed(
-            bs4.BeautifulSoup(response.text, 'html.parser')
+
+        r = cls.__post_action(session, data, action)
+
+        soup = cls.__raise_if_error(
+            r,
+            RechargeException,
+            "Error al recargar la cuenta"
         )
 
+        return cls.__get_response(soup)
+
     @classmethod
     def transfer(
-            cls, session: UserPortalSession, mount_to_transfer: str,
-            account_to_transfer: str, password: str
-    ) -> bool:
+            cls, session: UserPortalSession, mount_to_transfer: float,
+            account_to_transfer: str, password: str,
+            nauta_hogar_paid: bool = False
+    ) -> ActionResponse:
         """
         Transfiere una cantidad de dinero de una cuenta a otra
 
@@ -308,24 +339,32 @@ def transfer(
         :param password: La contraseña de la cuenta para transferir el monto
         :type password: str
         """
-        action = Action.TRANSFER
+        action = Action.TRANSFER if not nauta_hogar_paid \
+            else Action.NAUTA_HOGAR_PAID
         data = {
             "csrf": cls.__get_csrf(action, session),
-            "transfer": mount_to_transfer,
+            "transfer": f'{mount_to_transfer:.2f}'.replace('.', ','),
             "password_user": password,
-            "id_cuenta": account_to_transfer,
             "action": "checkdata"
         }
-        response = cls.__post_action(session, data, action)
-        return cls.__is_confirmed(
-            bs4.BeautifulSoup(response.text, 'html.parser')
+        if not nauta_hogar_paid:
+            data["id_cuenta"] = account_to_transfer
+
+        r = cls.__post_action(session, data, action)
+
+        soup = cls.__raise_if_error(
+            r,
+            TransferException,
+            "Error al transferir el saldo"
         )
 
+        return cls.__get_response(soup)
+
     @classmethod
     def change_password(
             cls, session: UserPortalSession, old_password: str,
             new_password: str
-    ) -> bool:
+    ) -> ActionResponse:
         """
         Cambia la contraseña del usuario
 
@@ -345,16 +384,22 @@ def change_password(
             "repeat_new_password": new_password,
             "btn_submit": ""
         }
-        response = cls.__post_action(session, data, action)
-        return cls.__is_confirmed(
-            bs4.BeautifulSoup(response.text, 'html.parser')
+
+        r = cls.__post_action(session, data, action)
+
+        soup = cls.__raise_if_error(
+            r,
+            ChangePasswordException,
+            "Error al cambiar la contraseña"
         )
 
+        return cls.__get_response(soup)
+
     @classmethod
     def change_email_password(
             cls, session: UserPortalSession, old_password: str,
             new_password: str
-    ) -> bool:
+    ) -> ActionResponse:
         """
         Cambia la contraseña de la cuenta de correo electrónico asociada con la
         cuenta del usuario
@@ -376,11 +421,17 @@ def change_email_password(
             "repeat_new_password": new_password,
             "btn_submit": ""
         }
-        response = cls.__post_action(session, data, action)
-        return cls.__is_confirmed(
-            bs4.BeautifulSoup(response.text, 'html.parser')
+
+        r = cls.__post_action(session, data, action)
+
+        soup = cls.__raise_if_error(
+            r,
+            ChangePasswordException,
+            "Error al cambiar la contraseña"
         )
 
+        return cls.__get_response(soup)
+
     @classmethod
     def __post_action(
             cls, session: UserPortalSession, param: dict, action: str,
@@ -402,12 +453,11 @@ def __post_action(
         :return: Un objeto de respuesta.
         """
         if not url:
-            url = cls.__url[action]
+            url = cls.__build_url(action)
         r = session.requests_session.post(
             url,
             param
         )
-        cls.__raise_if_error(r, action)
 
         return r
 
@@ -436,12 +486,21 @@ def get_lasts(
             Action.GET_TRANSFERS: cls.get_transfers,
             Action.GET_QUOTES_FUND: cls.get_quotes_fund
         }
+        actions_summary = {
+            Action.GET_CONNECTIONS: cls.get_connections_summary,
+            Action.GET_RECHARGES: cls.get_recharges_summary,
+            Action.GET_TRANSFERS: cls.get_transfers_summary,
+            Action.GET_QUOTES_FUND: cls.get_quotes_fund_summary
+        }
 
         year = date.today().year
         month = date.today().month
 
         lasts = []
-        _actions = actions[action](session, year, month)
+        _action_summary = actions_summary[action](
+            session, year, month
+        )
+        _actions = actions[action](session, _action_summary)
         if _actions:
             lasts.extend(_actions)
 
@@ -484,6 +543,17 @@ def __get_action(
             Action.GET_TRANSFERS: "transfer_detail"
         }
 
+        message_action = {
+            Action.GET_CONNECTIONS:
+            "Error al obtener la lista de conexiones",
+            Action.GET_RECHARGES:
+            "Error al obtener la lista de recargas",
+            Action.GET_QUOTES_FUND:
+            "Error al obtener la lista de fondos de cuotas",
+            Action.GET_TRANSFERS:
+            "Error al obtener la lista de transferencias"
+        }
+
         year_month = f'{year}-{month:02}'
         r = cls.__post_action(
             session,
@@ -491,38 +561,69 @@ def __get_action(
                 "csrf": cls.__get_csrf(
                     action,
                     session,
-                    cls.__url[action]["base"]
+                    cls.__build_url(
+                        action,
+                        True,
+                        "base"
+                    )
                 ),
                 "year_month": year_month,
                 "list_type": list_type[action]
             },
             action,
-            cls.__url[action]["list"]
+            cls.__build_url(
+                action,
+                True,
+                "summary"
+            )
         )
-        soup = bs4.BeautifulSoup(r.text, 'html.parser')
-        table = soup.find(
-            "table",
-            {
-                "class": "striped bordered highlight responsive-table"
-            }
+        soup = cls.__raise_if_error(
+            r,
+            GetInfoException,
+            message_action[action]
         )
-        if table:
-            trs = soup.find_all("tr")
-            trs.pop(0)
-            return trs
+
+        return soup.select_one('#content').select('.card-content')
+
+    @classmethod
+    def __get_response(cls, soup: bs4.BeautifulSoup):
+        script_text = soup.find_all("script")[-1].contents[0].strip()
+        match_ = RE_SUCCESS_ACTION.match(script_text)
+        if match_:
+            soup = bs4.BeautifulSoup(match_.group("reason"), "html5lib")
+            return ActionResponse(
+                "success",
+                soup.select_one('li:is(.msg_message)').text
+            )
 
     @classmethod
-    def __is_confirmed(cls, soup: bs4.BeautifulSoup):
-        script_text = soup.find_all("script")[-1].get_text().strip()
-        re_success = re.compile(r"toastr\.success\('(?P<reason>[^']*?)'\)")
-        match = re_success.match(script_text)
-        if match:
-            soup = bs4.BeautifulSoup(match.group("reason"), "html.parser")
-            return soup.find("li", {"class": "msg_message"}).text is not None
+    def get_connections_summary(
+        cls, session: UserPortalSession, year: int, month: int
+    ) -> ConnectionsSummary:
+        [
+            connections,
+            total_time,
+            total_import,
+            uploaded,
+            downloaded,
+            total_traffic
+        ] = cls.__get_action(session, year, month, Action.GET_CONNECTIONS)
+        return ConnectionsSummary(
+            count=connections.select_one('input[name=count]').attrs['value'],
+            year_month_selected=connections.select_one(
+                'input[name=year_month_selected]'
+            ).attrs['value'],
+            total_time=total_time.select_one('.card-stats-number').text,
+            total_import=total_import.select_one('.card-stats-number').text,
+            uploaded=uploaded.select_one('.card-stats-number').text,
+            downloaded=downloaded.select_one('.card-stats-number').text,
+            total_traffic=total_traffic.select_one('.card-stats-number').text
+        )
 
     @classmethod
     def get_connections(
-            cls, session: UserPortalSession, year: int, month: int
+            cls, session: UserPortalSession,
+            connections_summary: ConnectionsSummary
     ) -> Union[List[Connection], None]:
         """
         Obtiene las conexiones del usuario en un mes y año dado
@@ -536,19 +637,57 @@ def get_connections(
         :type month: int
         :return: Una lista de objetos de conexión.
         """
-        trs = cls.__get_action(session, year, month, Action.GET_CONNECTIONS)
-        if trs:
-            return [Connection(start_session=tr.find_all("td")[0].text,
-                               end_session=tr.find_all("td")[1].text,
-                               duration=tr.find_all("td")[2].text,
-                               upload=tr.find_all("td")[3].text,
-                               download=tr.find_all("td")[4].text,
-                               import_=tr.find_all("td")[5].text) for tr in
-                    trs]
+
+        rows = cls.__parse_action_rows(
+            session,
+            Action.GET_CONNECTIONS,
+            connections_summary.year_month_selected,
+            connections_summary.count
+        )
+
+        if rows:
+            connections_list = []
+            for row in rows:
+                [
+                    start_session_tag,
+                    end_session_tag,
+                    duration_tag,
+                    upload_tag,
+                    download_tag,
+                    import_tag
+                ] = row.select('td')
+                connections_list.append(
+                    Connection(
+                        start_session=start_session_tag.text,
+                        end_session=end_session_tag.text,
+                        duration=duration_tag.text,
+                        uploaded=upload_tag.text,
+                        downloaded=download_tag.text,
+                        import_=import_tag.text
+                    )
+                )
+            return connections_list
+
+    @classmethod
+    def get_recharges_summary(
+        cls, session: UserPortalSession, year: int, month: int
+    ) -> RechargesSummary:
+        recharges, total_import = cls.__get_action(
+            session, year, month, Action.GET_RECHARGES
+        )
+        return RechargesSummary(
+            count=recharges.select_one('input[name=count]').attrs['value'],
+            year_month_selected=recharges.select_one(
+                'input[name=year_month_selected]'
+            ).attrs['value'],
+            total_import=total_import.select_one('.card-stats-number').text
+        )
 
     @classmethod
     def get_recharges(
-            cls, session: UserPortalSession, year: int, month: int
+            cls,
+            session: UserPortalSession,
+            recharges_summary: RechargesSummary
     ) -> Union[List[Recharge], None]:
         """
         Obtiene las recargas del usuario en un mes y año dado
@@ -562,17 +701,49 @@ def get_recharges(
         :type month: int
         :return: Una lista de objetos de recarga.
         """
-        trs = cls.__get_action(session, year, month, Action.GET_RECHARGES)
-        if trs:
-            return [Recharge(date=tr.find_all("td")[0].text,
-                             import_=tr.find_all("td")[1].text,
-                             channel=tr.find_all("td")[2].text,
-                             type_=tr.find_all("td")[3].text) for tr in trs]
+
+        rows = cls.__parse_action_rows(
+            session,
+            Action.GET_RECHARGES,
+            recharges_summary.year_month_selected,
+            recharges_summary.count
+        )
+
+        if rows:
+            recharges_list = []
+            for row in rows:
+                date, import_, channel, type_ = row
+
+                recharges_list.append(
+                    Recharge(
+                        date=date.text,
+                        import_=import_.text,
+                        channel=channel.text,
+                        type_=type_.text
+                    )
+                )
+            return recharges_list
+
+    @classmethod
+    def get_transfers_summary(
+        cls, session: UserPortalSession, year: int, month: int
+    ) -> TransfersSummary:
+        transfers, total_import = cls.__get_action(
+            session, year, month, Action.GET_TRANSFERS
+        )
+        return TransfersSummary(
+            count=transfers.select_one('input[name=count]').attrs['value'],
+            year_month_selected=transfers.select_one(
+                'input[name=year_month_selected]'
+            ).attrs['value'],
+            total_import=total_import.select_one('.card-stats-number').text
+        )
 
     @classmethod
     def get_transfers(
-            cls, session: UserPortalSession, year: int, month: int
-    ) -> Union[List[Transfer], None]:
+            cls, session: UserPortalSession,
+            transfers_summary: TransfersSummary
+    ) -> list[Transfer] | None:
         """
         Obtiene las transferencias del usuario en un mes y año dado
 
@@ -585,19 +756,49 @@ def get_transfers(
         :type month: int
         :return: Una lista de objetos de transferencia.
         """
-        trs = cls.__get_action(session, year, month, Action.GET_TRANSFERS)
-        if trs:
-            return [
-                Transfer(date=tr.find_all("td")[0].text,
-                         import_=tr.find_all("td")[1].text,
-                         destiny_account=tr.find_all("td")[2].text)
-                for tr in trs
-            ]
+
+        rows = cls.__parse_action_rows(
+            session,
+            Action.GET_TRANSFERS,
+            transfers_summary.year_month_selected,
+            transfers_summary.count
+        )
+
+        if rows:
+            transfers_list = []
+            for row in rows:
+                date, import_, destiny_account = row
+
+                transfers_list.append(
+                    Transfer(
+                        date=date.text,
+                        import_=import_.text,
+                        destiny_account=destiny_account.text
+                    )
+                )
+            return transfers_list
+
+    @classmethod
+    def get_quotes_fund_summary(
+        cls, session: UserPortalSession,
+        year: int, month: int
+    ) -> QuotesFundSummary:
+        quotes_fund, total_import = cls.__get_action(
+            session, year, month, Action.GET_QUOTES_FUND
+        )
+        return QuotesFundSummary(
+            count=quotes_fund.select_one('input[name=count]').attrs['value'],
+            year_month_selected=quotes_fund.select_one(
+                'input[name=year_month_selected]'
+            ).attrs['value'],
+            total_import=total_import.select_one('.card-stats-number').text
+        )
 
     @classmethod
     def get_quotes_fund(
-            cls, session: UserPortalSession, year: int, month: int
-    ) -> Union[List[QuotePaid], None]:
+            cls, session: UserPortalSession,
+            quotes_fund_summary: QuotesFundSummary
+    ) -> list[QuoteFund] | None:
         """
         Esta función devuelve una lista de objetos QuotePaid, que son las
         cotizaciones pagadas por el usuario en el mes y año dados
@@ -616,39 +817,81 @@ def get_quotes_fund(
                 "Esta cuenta no esta asociada al servicio Nauta Hogar."
             )
 
-        trs = cls.__get_action(session, year, month, Action.GET_QUOTES_FUND)
-        if trs:
-            return [
-                QuotePaid(date=tr.find_all("td")[0].text,
-                          import_=tr.find_all("td")[1].text,
-                          channel=tr.find_all("td")[2].text,
-                          office=tr.find_all("td")[3].text,
-                          type_=tr.find_all("td")[4].text) for tr in trs
-            ]
+        rows = cls.__parse_action_rows(
+            session,
+            Action.GET_QUOTES_FUND,
+            quotes_fund_summary.year_month_selected,
+            quotes_fund_summary.count
+        )
+
+        if rows:
+            quotes_fund_list = []
+            for row in rows:
+                date, import_, channel, type_, office = row
+
+                quotes_fund_list.append(
+                    QuoteFund(
+                        date=date.text,
+                        import_=import_.text,
+                        channel=channel.text,
+                        type_=type_.text,
+                        office=office.text
+                    )
+                )
+            return quotes_fund_list
 
     @classmethod
-    def __get_attr__(cls, attr: str, soup: bs4.BeautifulSoup) -> str:
-        """
-        Extrae el atributo pedido del html proporcionado
+    def __parse_action_rows(
+        cls,
+        session: UserPortalSession,
+        action: str,
+        year_month_selected: str,
+        count: int,
+    ) -> (list[bs4.Tag] | None):
+        rows_list = []
+
+        pages = (
+            count // 14 + 1
+            if count / 14 > count // 14
+            else count // 14
+        ) if count > 14 else 1
+
+        for page in range(1, pages + 1):
+            suffix = page if page != 1 else count
+            url = cls.__build_url(
+                action,
+                True,
+                'list',
+                year_month_selected,
+                suffix
+            )
+            tbody = cls.__get_tbody(
+                session,
+                url
+            )
+            if tbody:
+                rows_list.extend(
+                    tbody.select("tr")
+                )
+        return rows_list
 
-        :param cls: La clase desde la que se llama al método
-        :param attr: El atributo que queremos obtener de la página
-        :type attr: str
-        :param soup: el objeto BeautifulSoup
-        :type soup: bs4.BeautifulSoup
-        :return: El valor del atributo.
-        """
-        if attr == "blocking_date_home" or attr == "date_of_elimination_home":
-            index = 1
-        else:
-            index = 0
-        count = 0
-        for div in soup.find_all("div", {"class": "col s12 m6"}):
-            if div.find("h5").text.strip().lower() == cls.__attrs[attr]:
-                if index == 1 and count == 0:
-                    count = 1
-                    continue
-                return div.find("p").text
+    @classmethod
+    def __get_tbody(
+        cls,
+        session: UserPortalSession,
+        url: str
+    ) -> (bs4.Tag | None):
+        r = session.requests_session.get(
+            url
+        )
+        soup = cls.__raise_if_error(
+            r,
+            GetInfoException,
+            "Error al obtener la información."
+        )
+        return soup.select_one(
+            '.responsive-table > tbody'
+        )
 
 
 class Nauta:
@@ -719,7 +962,7 @@ def login(cls, session, username, password):
 
         if "online.do" not in r.url:
             soup = bs4.BeautifulSoup(r.text, "html.parser")
-            error = find_errors(soup, Portal.NAUTA)
+            error = parse_errors(soup, Portal.NAUTA)
             if error:
                 raise LoginException(error)
 
diff --git a/PyLibSuitETECSA/core/session.py b/PyLibSuitETECSA/core/session.py
old mode 100644
new mode 100755
index b4f081e..9539ceb
--- a/PyLibSuitETECSA/core/session.py
+++ b/PyLibSuitETECSA/core/session.py
@@ -1,29 +1,42 @@
-#  Copyright (c) 2022. MarilaSoft.
-#  #
-#  This program is free software: you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation, either version 3 of the License, or
-#  (at your option) any later version.
-#  #
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#  #
-#  You should have received a copy of the GNU General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
 
+# Copyright (c) 2023 Lesly Cintra Laza <a.k.a. lesclaz>
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+from typing import Any
 import requests
 
+from PyLibSuitETECSA.utils import ATTR_TYPE
+from PyLibSuitETECSA.utils.from_str import to_bytes, to_datetime, to_float, to_seconds
+
 
 class SessionObject(object):
     headers_ = {
-        'Accept': 'text/html,application/xhtml+xml,'
-                  'application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
+        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,'
+        'image/avif,image/webp,image/apng,*/*;q=0.8',
         'Accept-Encoding': 'gzip, deflate, br',
-        'Accept-Language': 'es-MX,es;q=0.8,en-US;q=0.5,en;q=0.3',
-        'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; '
-                      'rv:97.0) Gecko/20100101 Firefox/97.0'
+        'Accept-Language': 'es-419,es;q=0.6',
+        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) '
+        'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
+        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
     }
 
     def __init__(self):
@@ -35,6 +48,26 @@ def _create_requests_session(cls):
         requests_session.headers = cls.headers_
         return requests_session
 
+    def __setattr__(self, __name: str, __value: Any) -> None:
+        if type(__value) == str and __name in ATTR_TYPE:
+            match ATTR_TYPE[__name]:
+                case "str":
+                    self.__dict__[__name] = __value
+                case "int":
+                    self.__dict__[__name] = int(__value)
+                case "float":
+                    self.__dict__[__name] = to_float(__value)
+                case "seconds":
+                    self.__dict__[__name] = to_seconds(__value)
+                case "bytes":
+                    self.__dict__[__name] = to_bytes(__value)
+                case "datetime":
+                    self.__dict__[__name] = to_datetime(__value)
+                case _:
+                    raise AttributeError
+        else:
+            self.__dict__[__name] = __value
+
 
 class NautaSession(SessionObject):
 
diff --git a/PyLibSuitETECSA/core/utils.py b/PyLibSuitETECSA/core/utils.py
deleted file mode 100644
index 751e2ac..0000000
--- a/PyLibSuitETECSA/core/utils.py
+++ /dev/null
@@ -1,89 +0,0 @@
-#  Copyright (c) 2022. MarilaSoft.
-#  #
-#  This program is free software: you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation, either version 3 of the License, or
-#  (at your option) any later version.
-#  #
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#  #
-#  You should have received a copy of the GNU General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-import re
-from typing import Union
-
-import bs4
-
-
-class Action:
-    LOGIN = "login_action"
-    LOGOUT = "logout_action"
-    LOAD_USER_INFO = "load_user_info_action"
-    RECHARGE = "recharge_action"
-    TRANSFER = "transfer_action"
-    CHANGE_PASSWORD = "change_password_action"
-    CHANGE_EMAIL_PASSWORD = "change_email_password_action"
-    GET_CONNECTIONS = "get_connections_action"
-    GET_RECHARGES = "get_recharges_action"
-    GET_TRANSFERS = "get_transfers_action"
-    GET_QUOTES_FUND = "get_quotes_fund_action"
-
-
-class Portal:
-    USER_PORTAL = 0
-    NAUTA = 1
-
-
-VARIOUS_ERRORS = "Se han detectado algunos errores."
-
-# Un diccionario que contiene dos expresiones regulares. El primero se usa para
-# encontrar el mensaje de error en el portal de usuario, y el segundo se usa
-# para encontrar el mensaje de error en el portal Nauta.
-re_fail_reason = {
-    Portal.USER_PORTAL: re.compile(r"toastr\.error\('(?P<reason>[^']*?)'\)"),
-    Portal.NAUTA: re.compile(r'alert\("(?P<reason>[^"]*?)"\)')
-}
-
-
-def find_errors(
-        soup: bs4.BeautifulSoup, portal: str = Portal.USER_PORTAL
-) -> Union[list, str, None]:
-    """
-    Toma la última etiqueta de script en el HTML, extrae el texto y luego usa
-    una expresión regular para encontrar el mensaje de error.
-    
-    :param soup: bs4.hermosa sopa
-    :type soup: bs4.BeautifulSoup
-    :param portal: El portal para buscar errores en
-    :type portal: str
-    :return: Una lista de errores.
-    """
-    script_text = soup.find_all("script")[-1].get_text().strip()
-
-    match = re_fail_reason[portal].match(script_text)
-    if match:
-        soup = bs4.BeautifulSoup(match.group("reason"), "html.parser")
-        if portal == Portal.USER_PORTAL:
-            return __find_in_user_portal(soup)
-        else:
-            soup.text
-
-
-def __find_in_user_portal(soup: bs4.BeautifulSoup) -> Union[list, str, None]:
-    """
-    Devuelve una lista de mensajes de error si el error es un error de "varios
-    errores", de lo contrario, devuelve el mensaje de error
-    
-    :param soup: bs4.hermosa sopa
-    :type soup: bs4.BeautifulSoup
-    :return: Una lista de errores o una cadena de un error.
-    """
-    error = soup.find("li", {"class": "msg_error"})
-    if error:
-        return [
-            msg.text for msg in error.find_all("li", {"class": "sub-message"})
-        ] if soup.text.startswith(VARIOUS_ERRORS) else error.text
diff --git a/PyLibSuitETECSA/utils/__init__.py b/PyLibSuitETECSA/utils/__init__.py
new file mode 100755
index 0000000..13ac430
--- /dev/null
+++ b/PyLibSuitETECSA/utils/__init__.py
@@ -0,0 +1,97 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2023 Lesly Cintra Laza <a.k.a. lesclaz>
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+import re
+
+
+class Action:
+    LOGIN = "login_action"
+    LOGOUT = "logout_action"
+    LOAD_USER_INFO = "load_user_info_action"
+    RECHARGE = "recharge_action"
+    TRANSFER = "transfer_action"
+    NAUTA_HOGAR_PAID = "nauta_hogar_paid"
+    CHANGE_PASSWORD = "change_password_action"
+    CHANGE_EMAIL_PASSWORD = "change_email_password_action"
+    GET_CONNECTIONS = "get_connections_action"
+    GET_RECHARGES = "get_recharges_action"
+    GET_TRANSFERS = "get_transfers_action"
+    GET_QUOTES_FUND = "get_quotes_fund_action"
+
+
+class Portal:
+    USER_PORTAL = 0
+    NAUTA = 1
+
+
+VARIOUS_ERRORS = "Se han detectado algunos errores."
+
+# Un diccionario que contiene dos expresiones regulares. El primero se usa para
+# encontrar el mensaje de error en el portal de usuario, y el segundo se usa
+# para encontrar el mensaje de error en el portal Nauta.
+RE_FAIL_REASON = {
+    Portal.USER_PORTAL: re.compile(r"toastr\.error\('(?P<reason>[^']*?)'\)"),
+    Portal.NAUTA: re.compile(r'alert\("(?P<reason>[^"]*?)"\)')
+}
+RE_SUCCESS_ACTION = re.compile(r"toastr\.success\('(?P<reason>[^']*?)'\)")
+
+RE_DATETIME_FORMAT_ETECSA = re.compile(
+    r"(?P<day>\d{1,2})/(?P<month>\d{1,2})/(?P<year>\d{4})"
+    r"\s(?P<hour>\d{1,2}):\d{1,2}:\d{1,2}"
+)
+
+ATTR_TYPE = {
+    "year_month_selected": "str",
+    "channel": "str",
+    "type_": "str",
+    "office": "str",
+    "destiny_account": "str",
+    "status": "str",
+    "message": "str",
+    "count": "int",
+    "phone": "int",
+    "time": "seconds",
+    "total_time": "seconds",
+    "duration": "seconds",
+    "remaining_time": "seconds",
+    "uploaded": "bytes",
+    "downloaded": "bytes",
+    "total_traffic": "bytes",
+    "download_speeds": "bytes",
+    "upload_speeds": "bytes",
+    "total_import": "float",
+    "import_": "float",
+    "credit": "float",
+    "monthly_fee": "float",
+    "quota_fund": "float",
+    "voucher": "float",
+    "debt": "float",
+    "date": "datetime",
+    "start_session": "datetime",
+    "end_session": "datetime",
+    "blocking_date": "datetime",
+    "date_of_elimination": "datetime",
+    "activation_date": "datetime",
+    "blocking_date_home": "datetime",
+    "date_of_elimination_home": "datetime"
+}
diff --git a/PyLibSuitETECSA/utils/from_str.py b/PyLibSuitETECSA/utils/from_str.py
new file mode 100755
index 0000000..b7d0c9a
--- /dev/null
+++ b/PyLibSuitETECSA/utils/from_str.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2023 Lesly Cintra Laza <a.k.a. lesclaz>
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+
+from datetime import datetime
+
+
+def to_seconds(string: str) -> int:
+    hours, minutes, seconds = string.split(':')
+    return int(hours) * 3600 + int(minutes) * 60 + int(seconds)
+
+
+def to_float(string: str) -> int:
+    return float(string.replace('$', '').replace(',', '.')\
+        .replace(' CUP', ''))
+
+
+def to_bytes(string: str) -> int:
+    units = {
+        "tb": 4,
+        "gb": 3,
+        "mb": 2,
+        "kb": 1
+    }
+    import_, unit = string.replace(',', '.')\
+        .replace('ps', '').lower().split(' ')
+    to_multiply = 1024 ** units[unit] if unit != "bytes" else 1
+    return int(float(import_) * to_multiply)
+
+
+def to_datetime(string: str) -> datetime:
+    _expression = "%d/%m/%Y %H:%M:%S" \
+        if len(string) == 19 else "%d/%m/%Y"
+    if string != datetime.strptime(
+        string,
+        _expression
+    ).strftime(_expression):
+        raise ValueError
+    else:
+        return datetime.strptime(
+            string,
+            _expression
+        )
diff --git a/PyLibSuitETECSA/utils/parser.py b/PyLibSuitETECSA/utils/parser.py
new file mode 100755
index 0000000..c4aa67a
--- /dev/null
+++ b/PyLibSuitETECSA/utils/parser.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2023 Lesly Cintra Laza <a.k.a. lesclaz>
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+import bs4
+
+from PyLibSuitETECSA.utils import RE_FAIL_REASON, VARIOUS_ERRORS, Portal
+
+
+def parse_errors(
+        soup: bs4.BeautifulSoup, portal: str = Portal.USER_PORTAL
+) -> list[str] | str | None:
+    """
+    Toma la última etiqueta de script en el HTML, extrae el texto y luego usa
+    una expresión regular para encontrar el mensaje de error.
+
+    :param soup: bs4.hermosa sopa
+    :type soup: bs4.BeautifulSoup
+    :param portal: El portal para buscar errores en
+    :type portal: str
+    :return: Una lista de errores.
+    """
+    tag_script: bs4.Tag = soup.find_all("script")
+    if tag_script:
+        script_text = tag_script[-1].contents[0].strip()
+        match = RE_FAIL_REASON[portal].match(script_text)
+        if match:
+            soup = bs4.BeautifulSoup(match.group("reason"), "html5lib")
+            if portal == Portal.USER_PORTAL:
+                error = soup.select_one('li:is(.msg_error)')
+                if error:
+                    return [
+                        msg.text for msg in error.select('li:is(.sub-message)')
+                    ] if soup.text.startswith(VARIOUS_ERRORS) else error.text
+            else:
+                soup.text
diff --git a/README.md b/README.md
old mode 100644
new mode 100755
index 98660cd..cde8e34
--- a/README.md
+++ b/README.md
@@ -1,119 +1,197 @@
-PyLibSuitETECSA
-===========
+# PyLibSuitETECSA
+
 ## Una librería escrita en Python para SuitETECSA
 
-PyLibSuitETECSA fue creada con el objetivo de ofrecer una API que interactúe con los servicios ofrecidos 
-por [ETECSA](https://www.etecsa.cu/), para facilitar el desarrollo de aplicaciones Python dedicadas a la 
-gestión de estos mediante los portales [de usuario](https://www.portal.nauta.cu/) 
-y [cautivo](https://secure.etecsa.net:8443/) de nauta, ahorrándoles tiempo, esfuerzos, neuronas 
-y código a los desarrolladores.
+PyLibSuitETECSA es una API que interactúa con los servicios ofrecidos
+por [ETECSA](https://www.etecsa.cu/), para facilitar el desarrollo de aplicaciones
+Python dedicadas a la gestión de estos mediante los portales
+[de usuario](https://www.portal.nauta.cu/) y [cautivo](https://secure.etecsa.net:8443/)
+de nauta, ahorrándoles tiempo, esfuerzos y código a los desarrolladores.
+
+Hasta el momento PyLibSuitETECSA implementa funciones para:
+
+* En el caso del portal [de usuario](https://www.portal.nauta.cu/) de nauta:
+  * Iniciar sesión.
+  * Obtener información de la cuenta logueada.
+  * Recargar la cuenta logueada.
+  * Transferir saldo a otra cuenta nauta.
+  * Transferir saldo para pago de cuota (`solo para cuentas Nauta Hogar`).
+  * Cambiar la contraseña de la cuenta de acceso.
+  * Cambiar la contraseña de la cuenta de correo asociada.
+  * Obtener las conexiones realizadas en el periódo `año-mes` especificado.
+  * Obtener las recargas realizadas en el periódo `año-mes` especificado.
+  * Obtener las transferencias realizadas en el periódo `año-mes` especificado.
+  * Obtener los pagos de cuotas realizados en el periódo `año-mes` especificado (`solo para cuentas Nauta Hogar`).
+  * Obtener las útimas (`la cantidad puede ser definida por el desarrollador que use la librería; por defecto es 5`) operaciones (`las antes mencionadas`).
+* En el caso del portal [cautivo](https://secure.etecsa.net:8443/) de nauta:
+  * Inicia sesión.
+  * Cierra sesión.
+  * Obtiene el tiempo disponible en la cuenta.
+  * Obtiene el saldo de la cuenta.
+
+## Interactuar con el portal [de usuario](https://www.portal.nauta.cu/) de nauta
+
+Para interactuar con el portal [de usuario](https://www.portal.nauta.cu/) de nauta
+PyLibSuitETECSA proporciona dos clases; la más sencilla de usar es [UserPortalClient](#usando-userportalclient) ubicada en PyLibSuitETECSA.api y es la que se recomienda para
+la mayoria de apps. Igualmente PyLibSuitETECSA proporciona la clase [UserPortal](#usando-userportal)
+ubicada en PyLibSuitETECSA.core.protocol, un protocolo que permite a los desarrolladores
+tener "más control" a la hora de interactuar con el portal.
 
-PyLibSuitETECSA está aún en fase de desarrollo activa, por lo que aún no implementa algunas funciones
-necesarias para la gestión de cuentas asociadas al servicio Nauta Hogar. Se me ha hecho difícil la 
-implementación de dichas funciones, ya que no poseo este servicio.
+### **Usando UserPortalClient**
 
-## Usando UserPortalClient
+Ejercicio donde:
+
+* Iniciamos sesión en el portal.
+* Tratamos de recargar la cuenta.
+* Tratamos de transferir saldo a otra cuenta.
+* Obtenemos las últimas 5 connexiones de la cuenta y las imprimimos en pantalla.
 
 ```python
-from PyLibSuitETECSA.api import UserPortalClient  # se importa el cliente para el portal de usuario de nauta
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
 
-user_portal_cli = UserPortalClient(  # se instancia el cliente
-    "usuario@nauta.com.cu",
-    "Contraseña"
+from PyLibSuitETECSA.api import UserPortalClient
+from PyLibSuitETECSA.core.exception import RechargeException,\
+    TransferException
+from PyLibSuitETECSA.utils import Action
+
+user_portal_cli = UserPortalClient(
+    "user.name@nauta.com.cu",   # Cambiar por una cuenta real
+    "password"                  # Cambiar por la contraseña de la cuenta
+)
+
+# Crea una sesión que se almacena en la variable
+# user_portal_cli.session
+user_portal_cli.init_session()
+
+# Obtiene la imagen captcha del portal y la guarda
+# en un archivo llamado 'captcha.png'
+with open('captcha.png', 'wb') as fp:
+    fp.write(
+        user_portal_cli.captcha_as_bytes
+    )
+
+# Loguea la cuenta en el portal
+user_portal_cli.login(
+    input('captcha code: ')
 )
 
-user_portal_cli.init_session()  # se inicia la session donde se guardan las cookies y datos
+# Trata de recargar la cuenta y en caso de error
+# lo imprime en pantalla
+try:
+    user_portal_cli.recharge(
+        "1234567890123456"
+    )
+except RechargeException as ex:
+    print(f'Error al recargar :: {ex.args[0]}')
 
-with open("captcha_img.png", 'wb') as fp:
-    fp.write(user_portal_cli.captcha_as_bytes)  # se guarda la imagen captcha
+# Trata de transferir saldo a otra cuenta y en caso
+# de errores los inprime en pantalla
+try:
+    user_portal_cli.transfer(
+        250.25,
+        "user.name@nauta.co.cu"
+    )
+except TransferException as ex:
+    print(f'Error al transferir :: {ex.args[0]}')
+
+# Obtiene las últimas 5 conexiones realizadas por la cuenta
+# y las imprime en pantalla en formato json
+connections = user_portal_cli.get_lasts(
+    Action.GET_CONNECTIONS
+)
+for connection in connections:
+    print(connection.__dict__)
 
-user_portal_cli.login(input("captcha_code: "))  # se inicia sesión en el portal
+```
 
-print(
-    user_portal_cli.credit)  # se imprime en pantalla el saldo de la cuenta logueada
+Salida:
 
+```console
+captcha code: DCYTHZ
+Error al recargar :: El código de recarga es incorrecto.
+Error al transferir :: ['El campo saldo a transferir debe ser menor o igual que 14761']
+{'start_session': datetime.datetime(2023, 1, 22, 22, 19, 11), 'end_session': datetime.datetime(2023, 1, 22, 22, 24, 8), 'duration': 297, 'uploaded': 275456, 'downloaded': 1782579, 'import_': 0.99}
+{'start_session': datetime.datetime(2023, 1, 22, 11, 26, 8), 'end_session': datetime.datetime(2023, 1, 22, 14, 28, 13), 'duration': 10925, 'uploaded': 17637048, 'downloaded': 244454522, 'import_': 36.42}
+{'start_session': datetime.datetime(2023, 1, 21, 16, 53, 29), 'end_session': datetime.datetime(2023, 1, 22, 1, 36, 8), 'duration': 31359, 'uploaded': 152746065, 'downloaded': 2168958484, 'import_': 104.53}
+{'start_session': datetime.datetime(2023, 1, 20, 18, 19, 56), 'end_session': datetime.datetime(2023, 1, 20, 18, 25, 16), 'duration': 320, 'uploaded': 447488, 'downloaded': 8409579, 'import_': 1.07}
+{'start_session': datetime.datetime(2023, 1, 20, 17, 29, 40), 'end_session': datetime.datetime(2023, 1, 20, 18, 12, 5), 'duration': 2545, 'uploaded': 7140802, 'downloaded': 113592238, 'import_': 8.49}
 ```
+
 ## Métodos y propiedades de UserPortalClient
+
 ### Métodos
 
 <details>
-<summary>Nauta</summary>
-<table>
-<thead>
-<tr>
-<td>Método</td>
-<td>Función</td>
-</tr>
-</thead>
-<tr>
-<td>init_session</td>
-<td>Crea la sesión donde se guardan las cookies y datos</td>
-</tr>
-<tr>
-<td>login</td>
-<td>Loguea al usuario en el portal y carga la información de la cuenta</td>
-</tr>
-<tr>
-<td>recharge</td>
-<td>Recarga la cuenta logueada</td>
-</tr>
-<tr>
-<td>transfer</td>
-<td>Transfiere saldo a otra cuenta nauta</td>
-</tr>
-<tr>
-<td>change_password</td>
-<td>Cambia la contraseña de la cuenta logueada</td>
-</tr>
-<tr>
-<td>change_email_password</td>
-<td>Cambia la contraseña de la cuenta de correo asociada a la cuenta logueada</td>
-</tr>
-<tr>
-<td>get_lasts</td>
-<td>Devuelve las últimas <b>large</b> <b>action</b> realizadas, donde <b>large</b> es la cantidad Ex: 5 y <b>action</b> las operaciones realizadas Ex: <b>UserPortal.ACTION_CONNECTIONS</b> (las <b>action</b> disponibles son: <b>UserPortal.ACTION_CONNECTIONS</b>, <b>UserPortal.ACTION_RECHARGES</b>, <b>UserPortal.ACTION_TRANSFER</b> y <b>UserPortal.ACTION_QUOTE_FUNDS</b>, esta última solo para nauta hogar)</td>
-</tr>
-<tr>
-<td>get_connections</td>
-<td>Devuelve las conexiones realizadas en el mes especificado incluyendo el año (<b>año-mes</b>: 2022-03)</td>
-</tr>
-<tr>
-<td>get_recharges</td>
-<td>Devuelve las recargas realizadas en el mes especificado incluyendo el año (<b>año-mes</b>: 2022-03)</td>
-</tr>
-<tr>
-<td>get_transfers</td>
-<td>Devuelve las transferencias realizadas en el mes especificado incluyendo el año (<b>año-mes</b>: 2022-03)</td>
-</tr>
-</table>
+    <summary>Nauta</summary>
+    <table>
+        <thead>
+            <tr>
+                <td>Método</td>
+                <td>Función</td>
+            </tr>
+        </thead>
+        <tr>
+            <td>init_session</td>
+            <td>Crea la sesión donde se guardan las cookies y datos</td>
+        </tr>
+        <tr>
+            <td>login</td>
+            <td>Loguea al usuario en el portal y carga la información de la cuenta</td>
+        </tr>
+        <tr>
+            <td>recharge</td>
+            <td>Recarga la cuenta logueada</td>
+        </tr>
+        <tr>
+            <td>transfer</td>
+            <td>Transfiere saldo a otra cuenta nauta</td>
+        </tr>
+        <tr>
+            <td>change_password</td>
+            <td>Cambia la contraseña de la cuenta logueada</td>
+        </tr>
+        <tr>
+            <td>change_email_password</td>
+            <td>Cambia la contraseña de la cuenta de correo asociada a la cuenta logueada</td>
+        </tr>
+        <tr>
+            <td>get_lasts</td>
+            <td>Devuelve las últimas <b>large</b> <b>action</b> realizadas, donde <b>large</b> es la cantidad Ex: 5 y <b>action</b> las operaciones realizadas Ex: <b>UserPortal.ACTION_CONNECTIONS</b> (las <b>action</b> disponibles son: <b>UserPortal.ACTION_CONNECTIONS</b>, <b>UserPortal.ACTION_RECHARGES</b>, <b>UserPortal.ACTION_TRANSFER</b> y <b>UserPortal.ACTION_QUOTE_FUNDS</b>, esta última solo para nauta hogar)</td>
+        </tr>
+        <tr>
+            <td>get_connections</td>
+            <td>Devuelve las conexiones realizadas en el mes especificado incluyendo el año (<b>año-mes</b>: 2022-03)</td>
+        </tr>
+        <tr>
+            <td>get_recharges</td>
+            <td>Devuelve las recargas realizadas en el mes especificado incluyendo el año (<b>año-mes</b>: 2022-03)</td>
+        </tr>
+        <tr>
+            <td>get_transfers</td>
+            <td>Devuelve las transferencias realizadas en el mes especificado incluyendo el año (<b>año-mes</b>: 2022-03)</td>
+        </tr>
+    </table>
 </details>
 
 <details>
-<summary>Nauta Hogar</summary>
-<table>
-<thead>
-<tr>
-<td>Método</td>
-<td>Función</td>
-</tr>
-</thead>
-<tr>
-<td>transfer_to_quote</td>
-<td>Transfiere saldo a la cuota de nauta hogar (<b>aún sin implementar</b>)</td>
-</tr>
-<tr>
-<td>pay_to_debt_with_credit</td>
-<td>Paga deuda de nauta hogar con saldo (<b>aún sin implementar</b>)</td>
-</tr>
-<tr>
-<td>pay_to_debt_with_quote_fund</td>
-<td>Paga deuda de nauta hogar con fondo de cuota (<b>aún sin implementar</b>)</td>
-</tr>
-<tr>
-<td>get_quotes_fund</td>
-<td>Devuelve los fondos de cuota realizados en el mes especificado incluyendo el año (<b>año-mes</b>: 2022-03)</td>
-</tr>
-</table>
+    <summary>Nauta Hogar</summary>
+    <table>
+        <thead>
+            <tr>
+                <td>Método</td>
+                <td>Función</td>
+            </tr>
+        </thead>
+    <tr>
+        <td>pay_nauta_home</td>
+        <td>Transfiere saldo a la cuota de nauta hogar.</td>
+    </tr>
+    <tr>
+        <td>get_quotes_fund</td>
+        <td>Devuelve los fondos de cuota realizados en el mes especificado incluyendo el año (<b>año-mes</b>: 2022-03)</td>
+    </tr>
+    </table>
 </details>
 
 ### Propiedades
@@ -226,7 +304,84 @@ print(
     </table>
 </details>
 
-__Nota__: Los `métodos` y `propiedades` disponibles para `Nauta` también lo están para `Nauta Hogar`.
+**Nota**: Los `métodos` y `propiedades` disponibles para `Nauta` también lo están para `Nauta Hogar`.
+
+### **Usando UserPortal**
+
+Mismo ejercicio que con la clase [UserPortalClient](#usando-nautaclient)
+
+```python
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from PyLibSuitETECSA.core.protocol import UserPortal
+from PyLibSuitETECSA.core.exception import RechargeException,\
+    TransferException
+from PyLibSuitETECSA.utils import Action
+
+# Crea una sesión que se almacena en la variable
+# session
+session = UserPortal.create_session()
+
+# Obtiene la imagen captcha del portal y la guarda
+# en un archivo llamado 'captcha.png'
+with open('captcha.png', 'wb') as fp:
+    fp.write(
+        UserPortal.get_captcha(session)
+    )
+
+# Loguea la cuenta en el portal
+UserPortal.login(
+    session=session,
+    username="user.name@nauta.com.cu",
+    password="password",
+    captcha_code=input('captcha code: ')
+)
+
+# Trata de recargar la cuenta y en caso de error
+# lo imprime en pantalla
+try:
+    UserPortal.recharge(
+        session=session,
+        recharge_code="1234567890123456"
+    )
+except RechargeException as ex:
+    print(f'Error al recargar :: {ex.args[0]}')
+
+# Trata de transferir saldo a otra cuenta y en caso
+# de errores los inprime en pantalla
+try:
+    UserPortal.transfer(
+        session=session,
+        mount_to_transfer=250.25,
+        account_to_transfer="lesly.cintra@nauta.co.cu"
+    )
+except TransferException as ex:
+    print(f'Error al transferir :: {ex.args[0]}')
+
+# Obtiene las últimas 5 conexiones realizadas por la cuenta
+# y las imprime en pantalla en formato json
+connections = UserPortal.get_lasts(
+    session=session,
+    action=Action.GET_CONNECTIONS
+)
+for connection in connections:
+    print(connection.__dict__)
+
+```
+
+Salida:
+
+```console
+captcha code: 2GH9SV
+Error al recargar :: El código de recarga es incorrecto.
+Error al transferir :: ['El campo saldo a transferir debe ser menor o igual que 14761']
+{'start_session': datetime.datetime(2023, 1, 22, 22, 19, 11), 'end_session': datetime.datetime(2023, 1, 22, 22, 24, 8), 'duration': 297, 'uploaded': 275456, 'downloaded': 1782579, 'import_': 0.99}
+{'start_session': datetime.datetime(2023, 1, 22, 11, 26, 8), 'end_session': datetime.datetime(2023, 1, 22, 14, 28, 13), 'duration': 10925, 'uploaded': 17637048, 'downloaded': 244454522, 'import_': 36.42}
+{'start_session': datetime.datetime(2023, 1, 21, 16, 53, 29), 'end_session': datetime.datetime(2023, 1, 22, 1, 36, 8), 'duration': 31359, 'uploaded': 152746065, 'downloaded': 2168958484, 'import_': 104.53}
+{'start_session': datetime.datetime(2023, 1, 20, 18, 19, 56), 'end_session': datetime.datetime(2023, 1, 20, 18, 25, 16), 'duration': 320, 'uploaded': 447488, 'downloaded': 8409579, 'import_': 1.07}
+{'start_session': datetime.datetime(2023, 1, 20, 17, 29, 40), 'end_session': datetime.datetime(2023, 1, 20, 18, 12, 5), 'duration': 2545, 'uploaded': 7140802, 'downloaded': 113592238, 'import_': 8.49}
+```
 
 ## Usando NautaClient
 
@@ -247,29 +402,36 @@ with nauta_ci.login():  # se inicia sesión en el portal y se mantiene abierta d
     time.sleep(60)
 
 ```
+
 ## Funciones y propiedades de UserPortalClient
+
 ### Funciones
+
 * init_session: Crea la session donde se guardan las cookies y datos
 * login: Loguea al usuario en el portal
 * logout: Cierra la sesión abierta
 * load_last_session: Carga la última session creada
+
 ### Propiedades
+
 * is_logged_in: Si se está loagueado en el portal
 * user_credit: Saldo de la cuenta
 * remaining_time: Tiempo restante
 
 ## Contribuir
-__IMPORTANTE__: PyLibSuitETESA necesita compatibilidad con nauta hogar.
 
-Todas las contribuciones son bienvenidas. Puedes ayudar trabajando en uno de los issues existentes. 
+**IMPORTANTE**: PyLibSuitETESA necesita compatibilidad con nauta hogar.
+
+Todas las contribuciones son bienvenidas. Puedes ayudar trabajando en uno de los issues existentes.
 Clona el repo, crea una rama para el issue que estés trabajando y cuando estés listo crea un Pull Request.
 
 También puedes contribuir difundiendo esta herramienta entre tus amigos y en tus redes. Mientras
-más grande sea la comunidad más sólido será el proyecto. 
+más grande sea la comunidad más sólido será el proyecto.
 
 Si te gusta el proyecto dale una estrella para que otros lo encuentren más fácilmente.
 
 ## Dependencias
+
 ```text
 requests~=2.27.1
 beautifulsoup4~=4.10.0
diff --git a/requirements.txt b/requirements.txt
old mode 100644
new mode 100755
index 123d8e6..923f76d
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,5 @@
-requests~=2.27.1
-beautifulsoup4~=4.10.0
-pytest~=7.1.2
-setuptools~=60.2.0
\ No newline at end of file
+requests
+beautifulsoup4
+pytest
+setuptools
+html5lib
\ No newline at end of file
diff --git a/setup.py b/setup.py
old mode 100644
new mode 100755
index c02af6c..b430b1d
--- a/setup.py
+++ b/setup.py
@@ -1,17 +1,26 @@
-#  Copyright (c) 2022. MarilaSoft.
-#  #
-#  This program is free software: you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation, either version 3 of the License, or
-#  (at your option) any later version.
-#  #
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#  #
-#  You should have received a copy of the GNU General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2023 Lesly Cintra Laza <a.k.a. lesclaz>
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
 from os import path
 
 from setuptools import setup


Test patch:
diff --git a/test/assets/change_password_action.html b/test/assets/change_password_action.html
old mode 100644
new mode 100755
index ea0a7a1..4456e87
--- a/test/assets/change_password_action.html
+++ b/test/assets/change_password_action.html
@@ -1,193 +1,1 @@
-<!DOCTYPE html>
-<html lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
-    <!-- CSS  -->
-
-    <link rel="shortcut icon" type="images/x-icon" href="https://www.portal.nauta.cu/media/img/nauta.gif">
-    <title>nauta. Cambiar contraseña</title>
-    <meta name="keywords" content="">
-    <meta name="description" content="">
-    <meta name="copyright" content="">
-    <script type="text/javascript">
-        var url_base = 'https://www.portal.nauta.cu/';
-    </script>
-    <link type="text/css" href="change_password_action_files/icon.css" rel="stylesheet" media=""><link type="text/css" href="change_password_action_files/materialize.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="change_password_action_files/toastr.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="change_password_action_files/mailtip.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="change_password_action_files/style.css" rel="stylesheet" media="screen,projection"></head>
-<body>
-    <header>
-    <div class="navbar-fixed">
-        <nav class="orange" role="navigation">
-            <div class="nav-wrapper">
-                <div class="left paralelogramo hide-on-med-and-down"><img class="etecsa-logo responsive-img" src="change_password_action_files/etecsa-logo-blanco50x50.png">
-                </div>
-                <a id="logo-container" href="#" class="brand-logo"><img class="nauta-logo" src="change_password_action_files/logo-nauta-45.png">
-                </a>
-                <span class="hide-on-med-and-down title-blue title-portal">Portal de usuario</span>
-
-                <ul class="right hide-on-med-and-down">
-                    <li>
-                        <a class="tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/nauta/change_lang/en-en" data-tooltip="English" data-tooltip-id="d97fb218-7f31-d444-7cbc-edb3fe465dc9"><i class="mdi-action-language small"></i></a>                    </li>
-                    <li>
-                        <a class="tooltipped contact_info" data-position="bottom" data-delay="50" data-tooltip="Información de contacto" href="https://www.portal.nauta.cu/nauta/contact_info" data-tooltip-id="62733db9-c011-3163-d461-6e448a075084">
-                            <i class="mdi-communication-quick-contacts-dialer"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a class="help tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/help/general" data-tooltip="Ayuda" data-tooltip-id="1107d4c8-3010-5b42-cc07-6d8a667818cc">
-                            <i class="mdi-action-help"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a href="https://www.portal.nauta.cu/user/logout" class="tooltipped" data-position="bottom" data-delay="50" data-tooltip="Salir" data-tooltip-id="555d7499-3374-616d-a78e-5fc6ed6f623e"><i class="mdi-content-clear"></i></a>
-                    </li>
-                </ul>
-                                <ul id="nav-mobile" class="side-nav" style="left: -250px;">
-                    <li class="center-align etecsa-grey"><img src="change_password_action_files/logo-etecsa_2.png" class="responsive-img etecsa-logo-2"></li>
-                    <li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/user_info"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/recharge_account"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="no-padding active">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Cambiar contraseña<i class="mdi-action-lock-open"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Detalle de operaciones<i class="mdi-action-view-list"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Transferir saldo<i class="mdi-action-input"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul></div></li></ul></li>                    <li class="separator etecsa-blue-text"></li>
-                    <li class="no-padding etecsa-blue-text"><a class="collapsible-header" href="https://www.portal.nauta.cu/nauta/change_lang/en-en"><i class="mdi-action-language small"></i><span>English</span></a></li>
-                    <li class="no-padding"><a class="contact_info collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/nauta/contact_info"><i class="mdi-communication-quick-contacts-dialer small"></i><span>Información de contacto</span></a>
-                    </li>
-                    <li class="no-padding"><a class="help collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/help/general"><i class="mdi-action-help small"></i><span>Ayuda</span></a></li>
-                    <li class="no-padding"><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/user/logout"><i class="mdi-content-clear small"></i><span>Salir</span></a></li>
-                </ul>
-                <a href="#" data-activates="nav-mobile" class="button-collapse"><i class="mdi-navigation-menu"></i></a>
-            </div>
-        </nav>
-        <nav class="white hide-on-med-and-down" id="icon-nav">
-            <div class="nav-wrapper">
-                <ul class="right hide-on-med-and-down">
-                    <li class=""><a href="https://www.portal.nauta.cu/useraaa/user_info" class="etecsa-blue-text"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class=""><a href="https://www.portal.nauta.cu/useraaa/recharge_account" class="etecsa-blue-text"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="active">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_change_password_group"><i class="mdi-action-lock-open"></i><span>Cambiar contraseña<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_change_password_group" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_detail"><i class="mdi-action-view-list"></i><span>Detalle de operaciones<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_detail" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_transfer"><i class="mdi-action-input"></i><span>Transferir saldo<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_transfer" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul>
-                        </li>                </ul>
-            </div>
-        </nav>
-    </div>
-
-</header>
-    <div id="content" class="container"><div class="row">
-    <div class="col s12">
-        <h3>Cambiar contraseña de la cuenta de acceso</h3>
-            <p class="sub-title"></p>
-    </div>
-</div>
-<div class="row">
-    <div class="card-panel">
-        <div class="row">
-            <form name="change_password" id="change_password" method="post" class="col s12">
-                <input type="hidden" name="csrf" value="security628f742a8cc1a">                                <div class="row margin">
-                    <div class="input-field col s10 m6">
-                        <input type="password" id="old_password" name="old_password" maxlength="20" length="20">
-                        <label class="center-align" for="old_password">Contraseña actual</label>
-                    <span class="character-counter" style="float: right; font-size: 12px; height: 1px;"></span></div>
-                    <div class="input-field col s2 m6">
-                        <input type="checkbox" id="show_pass" class="show_password" rel="old_password">
-                        <label for="show_pass"><span class="hide-on-small-only">Mostrar contraseña</span></label>
-                    </div>
-                </div>
-                <div class="row margin">
-                    <div class="input-field col s10 m6">
-                        <input type="password" id="new_password" name="new_password" maxlength="20" length="20">
-                        <label class="center-align" for="new_password">Nueva contraseña</label>
-                    <span class="character-counter" style="float: right; font-size: 12px; height: 1px;"></span></div>
-                    <div class="input-field col s2 m4">
-                        <input type="checkbox" id="show_new_password" class="show_password" rel="new_password">
-                        <label for="show_new_password"><span class="hide-on-small-only">Mostrar contraseña</span></label>
-                    </div>
-                </div>
-                <div class="row margin">
-                    <div class="input-field col s10 m6">
-                        <input type="password" id="repeat_new_password" name="repeat_new_password" maxlength="20" length="20">
-                        <label class="center-align" for="repeat_new_password">Confirmar nueva contraseña</label>
-                    <span class="character-counter" style="float: right; font-size: 12px; height: 1px;"></span></div>
-                    <div class="input-field col s2 m4">
-                        <input type="checkbox" id="show_repeat_new_password" class="show_password" rel="repeat_new_password">
-                        <label for="show_repeat_new_password"><span class="hide-on-small-only">Mostrar contraseña</span></label>
-                    </div>
-                </div>
-                <div class="row">
-                    <div class="input-field col s12">
-                        <button name="btn_submit" type="submit" class="submit_btn btn waves-effect waves-light blue darken-4">Aceptar</button>
-                    </div>
-                </div>
-            </form>
-        </div>
-    </div>
-</div>
-</div>    <div id="contact_info_box"></div>
-    <footer class="page-footer white grey-text text-darken-4">
-    <hr>
-    <div class="container">
-        <div class="row center">
-            <div class="col s12">
-                <p>© 2011 Empresa de Telecomunicaciones de Cuba S. A. (ETECSA). Todos los derechos reservados</p>
-                <p><a class="etecsa-blue-text" href="http://www.etecsa.cu/">www.etecsa.cu</a></p>
-            </div>
-        </div>
-    </div>
-    <div class="hidden" id="ajax-messages" data-ajax-connection-error="Existe un error de conexión de red. Puede ser que usted se haya desconectado de la red o el servicio se haya caido."></div>
-</footer><script type="text/javascript" src="change_password_action_files/jquery-2.js"></script><script type="text/javascript" src="change_password_action_files/materialize.js"></script><script type="text/javascript" src="change_password_action_files/jquery_002.js"></script><script type="text/javascript" src="change_password_action_files/toastr.js"></script><script type="text/javascript" src="change_password_action_files/jquery.js"></script><script type="text/javascript" src="change_password_action_files/init.js"></script><script type="text/javascript" src="change_password_action_files/msgpool.js"></script>    <script type="text/javascript">
-        window.toastr.options = {
-            timeOut: 10000
-        }
-        $(function(){
-            $('.contact_info, .help').on("click",function(e){
-                console.log($(this).attr('href'));
-                e.preventDefault();
-                $("#contact_info_box").load($(this).attr('href'));
-
-            });
-
-
-            $('.show_password').on("click",function(){
-                var target=$(this).attr('rel');
-                if ($(this).prop('checked')){
-                    $('#'+target).attr('type','text');
-                } else {
-                    $('#'+target).attr('type','password');
-                }
-            });
-
-            $('.submit_btn').on('click',function(){
-                $.blockUI({
-                    message:'<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
-                    css: {
-                        border: 'none',
-                        padding: '15px',
-                        backgroundColor: '#000',
-                        '-webkit-border-radius': '10px',
-                        '-moz-border-radius': '10px',
-                        opacity: .5,
-                        color: '#fff'
-                    } });
-            });
-
-            var options = ['nauta.com.cu','nauta.co.cu'];
-            $("input.user-domain").mailtip({
-                mails: options,
-                offsetTop: 2
-            });
-            
-        });
-    </script>
-        
-
-<div class="material-tooltip" id="d97fb218-7f31-d444-7cbc-edb3fe465dc9"><span>English</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="62733db9-c011-3163-d461-6e448a075084"><span>Información de contacto</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="1107d4c8-3010-5b42-cc07-6d8a667818cc"><span>Ayuda</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="555d7499-3374-616d-a78e-5fc6ed6f623e"><span>Salir</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="hiddendiv common"></div><div class="drag-target" style="left: 0px; touch-action: pan-y;"></div></body></html>
\ No newline at end of file
+<input type="hidden" name="csrf" value="security628f742a8cc1a">
\ No newline at end of file
diff --git a/test/assets/change_password_action_fail.html b/test/assets/change_password_action_fail.html
old mode 100644
new mode 100755
index af90038..15b150f
--- a/test/assets/change_password_action_fail.html
+++ b/test/assets/change_password_action_fail.html
@@ -1,193 +1,54 @@
-<!DOCTYPE html>
-<html lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
-    <!-- CSS  -->
+<script type="text/javascript" src="change_password_action_fail_files/jquery-2.js"></script>
+<script type="text/javascript" src="change_password_action_fail_files/materialize.js"></script>
+<script type="text/javascript" src="change_password_action_fail_files/jquery_002.js"></script>
+<script type="text/javascript" src="change_password_action_fail_files/toastr.js"></script>
+<script type="text/javascript" src="change_password_action_fail_files/jquery.js"></script>
+<script type="text/javascript" src="change_password_action_fail_files/init.js"></script>
+<script type="text/javascript" src="change_password_action_fail_files/msgpool.js"></script>
+<script type="text/javascript">
+    window.toastr.options = {
+        timeOut: 10000
+    }
+    $(function () {
+        $('.contact_info, .help').on("click", function (e) {
+            console.log($(this).attr('href'));
+            e.preventDefault();
+            $("#contact_info_box").load($(this).attr('href'));
 
-    <link rel="shortcut icon" type="images/x-icon" href="https://www.portal.nauta.cu/media/img/nauta.gif">
-    <title>nauta. Cambiar contraseña</title>
-    <meta name="keywords" content="">
-    <meta name="description" content="">
-    <meta name="copyright" content="">
-    <script type="text/javascript">
-        var url_base = 'https://www.portal.nauta.cu/';
-    </script>
-    <link type="text/css" href="change_password_action_fail_files/icon.css" rel="stylesheet" media=""><link type="text/css" href="change_password_action_fail_files/materialize.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="change_password_action_fail_files/toastr.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="change_password_action_fail_files/mailtip.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="change_password_action_fail_files/style.css" rel="stylesheet" media="screen,projection"></head>
-<body>
-    <header>
-    <div class="navbar-fixed">
-        <nav class="orange" role="navigation">
-            <div class="nav-wrapper">
-                <div class="left paralelogramo hide-on-med-and-down"><img class="etecsa-logo responsive-img" src="change_password_action_fail_files/etecsa-logo-blanco50x50.png">
-                </div>
-                <a id="logo-container" href="#" class="brand-logo"><img class="nauta-logo" src="change_password_action_fail_files/logo-nauta-45.png">
-                </a>
-                <span class="hide-on-med-and-down title-blue title-portal">Portal de usuario</span>
-
-                <ul class="right hide-on-med-and-down">
-                    <li>
-                        <a class="tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/nauta/change_lang/en-en" data-tooltip="English" data-tooltip-id="de5c710e-367a-43ef-973d-ded0006c286f"><i class="mdi-action-language small"></i></a>                    </li>
-                    <li>
-                        <a class="tooltipped contact_info" data-position="bottom" data-delay="50" data-tooltip="Información de contacto" href="https://www.portal.nauta.cu/nauta/contact_info" data-tooltip-id="00dbe2e2-288a-bcd4-fdc5-dd82c64e29b8">
-                            <i class="mdi-communication-quick-contacts-dialer"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a class="help tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/help/general" data-tooltip="Ayuda" data-tooltip-id="d43e4611-31c1-6333-66fe-92a8ba0b6b87">
-                            <i class="mdi-action-help"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a href="https://www.portal.nauta.cu/user/logout" class="tooltipped" data-position="bottom" data-delay="50" data-tooltip="Salir" data-tooltip-id="f63d1a2b-9dcc-cd46-8a0d-24fd7ff632be"><i class="mdi-content-clear"></i></a>
-                    </li>
-                </ul>
-                                <ul id="nav-mobile" class="side-nav" style="left: -250px;">
-                    <li class="center-align etecsa-grey"><img src="change_password_action_fail_files/logo-etecsa_2.png" class="responsive-img etecsa-logo-2"></li>
-                    <li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/user_info"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/recharge_account"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="no-padding active">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Cambiar contraseña<i class="mdi-action-lock-open"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Detalle de operaciones<i class="mdi-action-view-list"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Transferir saldo<i class="mdi-action-input"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul></div></li></ul></li>                    <li class="separator etecsa-blue-text"></li>
-                    <li class="no-padding etecsa-blue-text"><a class="collapsible-header" href="https://www.portal.nauta.cu/nauta/change_lang/en-en"><i class="mdi-action-language small"></i><span>English</span></a></li>
-                    <li class="no-padding"><a class="contact_info collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/nauta/contact_info"><i class="mdi-communication-quick-contacts-dialer small"></i><span>Información de contacto</span></a>
-                    </li>
-                    <li class="no-padding"><a class="help collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/help/general"><i class="mdi-action-help small"></i><span>Ayuda</span></a></li>
-                    <li class="no-padding"><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/user/logout"><i class="mdi-content-clear small"></i><span>Salir</span></a></li>
-                </ul>
-                <a href="#" data-activates="nav-mobile" class="button-collapse"><i class="mdi-navigation-menu"></i></a>
-            </div>
-        </nav>
-        <nav class="white hide-on-med-and-down" id="icon-nav">
-            <div class="nav-wrapper">
-                <ul class="right hide-on-med-and-down">
-                    <li class=""><a href="https://www.portal.nauta.cu/useraaa/user_info" class="etecsa-blue-text"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class=""><a href="https://www.portal.nauta.cu/useraaa/recharge_account" class="etecsa-blue-text"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="active">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_change_password_group"><i class="mdi-action-lock-open"></i><span>Cambiar contraseña<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_change_password_group" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_detail"><i class="mdi-action-view-list"></i><span>Detalle de operaciones<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_detail" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_transfer"><i class="mdi-action-input"></i><span>Transferir saldo<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_transfer" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul>
-                        </li>                </ul>
-            </div>
-        </nav>
-    </div>
+        });
 
-</header>
-    <div id="content" class="container"><div class="row">
-    <div class="col s12">
-        <h3>Cambiar contraseña de la cuenta de acceso</h3>
-            <p class="sub-title"></p>
-    </div>
-</div>
-<div class="row">
-    <div class="card-panel">
-        <div class="row">
-            <form name="change_password" id="change_password" method="post" class="col s12">
-                <input type="hidden" name="csrf" value="security628f742a8cc1a">                                <div class="row margin">
-                    <div class="input-field col s10 m6">
-                        <input type="password" id="old_password" name="old_password" maxlength="20" length="20">
-                        <label class="center-align" for="old_password">Contraseña actual</label>
-                    <span class="character-counter" style="float: right; font-size: 12px; height: 1px;"></span></div>
-                    <div class="input-field col s2 m6">
-                        <input type="checkbox" id="show_pass" class="show_password" rel="old_password">
-                        <label for="show_pass"><span class="hide-on-small-only">Mostrar contraseña</span></label>
-                    </div>
-                </div>
-                <div class="row margin">
-                    <div class="input-field col s10 m6">
-                        <input type="password" id="new_password" name="new_password" maxlength="20" length="20">
-                        <label class="center-align" for="new_password">Nueva contraseña</label>
-                    <span class="character-counter" style="float: right; font-size: 12px; height: 1px;"></span></div>
-                    <div class="input-field col s2 m4">
-                        <input type="checkbox" id="show_new_password" class="show_password" rel="new_password">
-                        <label for="show_new_password"><span class="hide-on-small-only">Mostrar contraseña</span></label>
-                    </div>
-                </div>
-                <div class="row margin">
-                    <div class="input-field col s10 m6">
-                        <input type="password" id="repeat_new_password" name="repeat_new_password" maxlength="20" length="20">
-                        <label class="center-align" for="repeat_new_password">Confirmar nueva contraseña</label>
-                    <span class="character-counter" style="float: right; font-size: 12px; height: 1px;"></span></div>
-                    <div class="input-field col s2 m4">
-                        <input type="checkbox" id="show_repeat_new_password" class="show_password" rel="repeat_new_password">
-                        <label for="show_repeat_new_password"><span class="hide-on-small-only">Mostrar contraseña</span></label>
-                    </div>
-                </div>
-                <div class="row">
-                    <div class="input-field col s12">
-                        <button name="btn_submit" type="submit" class="submit_btn btn waves-effect waves-light blue darken-4">Aceptar</button>
-                    </div>
-                </div>
-            </form>
-        </div>
-    </div>
-</div>
-</div>    <div id="contact_info_box"></div>
-    <footer class="page-footer white grey-text text-darken-4">
-    <hr>
-    <div class="container">
-        <div class="row center">
-            <div class="col s12">
-                <p>© 2011 Empresa de Telecomunicaciones de Cuba S. A. (ETECSA). Todos los derechos reservados</p>
-                <p><a class="etecsa-blue-text" href="http://www.etecsa.cu/">www.etecsa.cu</a></p>
-            </div>
-        </div>
-    </div>
-    <div class="hidden" id="ajax-messages" data-ajax-connection-error="Existe un error de conexión de red. Puede ser que usted se haya desconectado de la red o el servicio se haya caido."></div>
-</footer><script type="text/javascript" src="change_password_action_fail_files/jquery-2.js"></script><script type="text/javascript" src="change_password_action_fail_files/materialize.js"></script><script type="text/javascript" src="change_password_action_fail_files/jquery_002.js"></script><script type="text/javascript" src="change_password_action_fail_files/toastr.js"></script><script type="text/javascript" src="change_password_action_fail_files/jquery.js"></script><script type="text/javascript" src="change_password_action_fail_files/init.js"></script><script type="text/javascript" src="change_password_action_fail_files/msgpool.js"></script>    <script type="text/javascript">
-        window.toastr.options = {
-            timeOut: 10000
-        }
-        $(function(){
-            $('.contact_info, .help').on("click",function(e){
-                console.log($(this).attr('href'));
-                e.preventDefault();
-                $("#contact_info_box").load($(this).attr('href'));
-
-            });
 
+        $('.show_password').on("click", function () {
+            var target = $(this).attr('rel');
+            if ($(this).prop('checked')) {
+                $('#' + target).attr('type', 'text');
+            } else {
+                $('#' + target).attr('type', 'password');
+            }
+        });
 
-            $('.show_password').on("click",function(){
-                var target=$(this).attr('rel');
-                if ($(this).prop('checked')){
-                    $('#'+target).attr('type','text');
-                } else {
-                    $('#'+target).attr('type','password');
+        $('.submit_btn').on('click', function () {
+            $.blockUI({
+                message: '<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
+                css: {
+                    border: 'none',
+                    padding: '15px',
+                    backgroundColor: '#000',
+                    '-webkit-border-radius': '10px',
+                    '-moz-border-radius': '10px',
+                    opacity: .5,
+                    color: '#fff'
                 }
             });
+        });
 
-            $('.submit_btn').on('click',function(){
-                $.blockUI({
-                    message:'<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
-                    css: {
-                        border: 'none',
-                        padding: '15px',
-                        backgroundColor: '#000',
-                        '-webkit-border-radius': '10px',
-                        '-moz-border-radius': '10px',
-                        opacity: .5,
-                        color: '#fff'
-                    } });
-            });
-
-            var options = ['nauta.com.cu','nauta.co.cu'];
-            $("input.user-domain").mailtip({
-                mails: options,
-                offsetTop: 2
-            });
-            
+        var options = ['nauta.com.cu', 'nauta.co.cu'];
+        $("input.user-domain").mailtip({
+            mails: options,
+            offsetTop: 2
         });
-    </script>
-    <script type="text/javascript">toastr.error('<ul><li class="msg_error">Se han detectado algunos errores de validación de la información.<ul><li class="sub-message">El campo nueva contraseña no es una contraseña fuerte. Debe tener números, caracteres especiales, mayúsculas, minúsculas y una longitud mínima de 8 caracteres y máxima de 20.</li></ul></li></ul>');</script>    
 
-<div class="material-tooltip" id="de5c710e-367a-43ef-973d-ded0006c286f"><span>English</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="00dbe2e2-288a-bcd4-fdc5-dd82c64e29b8"><span>Información de contacto</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="d43e4611-31c1-6333-66fe-92a8ba0b6b87"><span>Ayuda</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="f63d1a2b-9dcc-cd46-8a0d-24fd7ff632be"><span>Salir</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="hiddendiv common"></div><div class="drag-target" style="left: 0px; touch-action: pan-y;"></div></body></html>
\ No newline at end of file
+    });
+</script>
+<script
+    type="text/javascript">toastr.error('<ul><li class="msg_error">Se han detectado algunos errores de validación de la información.<ul><li class="sub-message">El campo nueva contraseña no es una contraseña fuerte. Debe tener números, caracteres especiales, mayúsculas, minúsculas y una longitud mínima de 8 caracteres y máxima de 20.</li></ul></li></ul>');</script>
\ No newline at end of file
diff --git a/test/assets/change_password_action_success.html b/test/assets/change_password_action_success.html
old mode 100644
new mode 100755
index be83851..291ad7c
--- a/test/assets/change_password_action_success.html
+++ b/test/assets/change_password_action_success.html
@@ -1,193 +1,54 @@
-<!DOCTYPE html>
-<html lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
-    <!-- CSS  -->
+<script type="text/javascript" src="change_password_action_success_files/jquery-2.js"></script>
+<script type="text/javascript" src="change_password_action_success_files/materialize.js"></script>
+<script type="text/javascript" src="change_password_action_success_files/jquery_002.js"></script>
+<script type="text/javascript" src="change_password_action_success_files/toastr.js"></script>
+<script type="text/javascript" src="change_password_action_success_files/jquery.js"></script>
+<script type="text/javascript" src="change_password_action_success_files/init.js"></script>
+<script type="text/javascript" src="change_password_action_success_files/msgpool.js"></script>
+<script type="text/javascript">
+    window.toastr.options = {
+        timeOut: 10000
+    }
+    $(function () {
+        $('.contact_info, .help').on("click", function (e) {
+            console.log($(this).attr('href'));
+            e.preventDefault();
+            $("#contact_info_box").load($(this).attr('href'));
 
-    <link rel="shortcut icon" type="images/x-icon" href="https://www.portal.nauta.cu/media/img/nauta.gif">
-    <title>nauta. Cambiar contraseña</title>
-    <meta name="keywords" content="">
-    <meta name="description" content="">
-    <meta name="copyright" content="">
-    <script type="text/javascript">
-        var url_base = 'https://www.portal.nauta.cu/';
-    </script>
-    <link type="text/css" href="change_password_action_success_files/icon.css" rel="stylesheet" media=""><link type="text/css" href="change_password_action_success_files/materialize.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="change_password_action_success_files/toastr.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="change_password_action_success_files/mailtip.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="change_password_action_success_files/style.css" rel="stylesheet" media="screen,projection"></head>
-<body>
-    <header>
-    <div class="navbar-fixed">
-        <nav class="orange" role="navigation">
-            <div class="nav-wrapper">
-                <div class="left paralelogramo hide-on-med-and-down"><img class="etecsa-logo responsive-img" src="change_password_action_success_files/etecsa-logo-blanco50x50.png">
-                </div>
-                <a id="logo-container" href="#" class="brand-logo"><img class="nauta-logo" src="change_password_action_success_files/logo-nauta-45.png">
-                </a>
-                <span class="hide-on-med-and-down title-blue title-portal">Portal de usuario</span>
-
-                <ul class="right hide-on-med-and-down">
-                    <li>
-                        <a class="tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/nauta/change_lang/en-en" data-tooltip="English" data-tooltip-id="4a5f7955-60ce-5d50-fda2-6b6d232cb69b"><i class="mdi-action-language small"></i></a>                    </li>
-                    <li>
-                        <a class="tooltipped contact_info" data-position="bottom" data-delay="50" data-tooltip="Información de contacto" href="https://www.portal.nauta.cu/nauta/contact_info" data-tooltip-id="179abdce-9a4c-731b-1efa-265de5bfa589">
-                            <i class="mdi-communication-quick-contacts-dialer"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a class="help tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/help/general" data-tooltip="Ayuda" data-tooltip-id="f02b12a5-2ef6-8fb1-f388-7d1c1d6aec91">
-                            <i class="mdi-action-help"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a href="https://www.portal.nauta.cu/user/logout" class="tooltipped" data-position="bottom" data-delay="50" data-tooltip="Salir" data-tooltip-id="4cd4c4a0-84dd-df16-01b6-9420acff9de2"><i class="mdi-content-clear"></i></a>
-                    </li>
-                </ul>
-                                <ul id="nav-mobile" class="side-nav" style="left: -250px;">
-                    <li class="center-align etecsa-grey"><img src="change_password_action_success_files/logo-etecsa_2.png" class="responsive-img etecsa-logo-2"></li>
-                    <li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/user_info"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/recharge_account"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="no-padding active">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Cambiar contraseña<i class="mdi-action-lock-open"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Detalle de operaciones<i class="mdi-action-view-list"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Transferir saldo<i class="mdi-action-input"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul></div></li></ul></li>                    <li class="separator etecsa-blue-text"></li>
-                    <li class="no-padding etecsa-blue-text"><a class="collapsible-header" href="https://www.portal.nauta.cu/nauta/change_lang/en-en"><i class="mdi-action-language small"></i><span>English</span></a></li>
-                    <li class="no-padding"><a class="contact_info collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/nauta/contact_info"><i class="mdi-communication-quick-contacts-dialer small"></i><span>Información de contacto</span></a>
-                    </li>
-                    <li class="no-padding"><a class="help collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/help/general"><i class="mdi-action-help small"></i><span>Ayuda</span></a></li>
-                    <li class="no-padding"><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/user/logout"><i class="mdi-content-clear small"></i><span>Salir</span></a></li>
-                </ul>
-                <a href="#" data-activates="nav-mobile" class="button-collapse"><i class="mdi-navigation-menu"></i></a>
-            </div>
-        </nav>
-        <nav class="white hide-on-med-and-down" id="icon-nav">
-            <div class="nav-wrapper">
-                <ul class="right hide-on-med-and-down">
-                    <li class=""><a href="https://www.portal.nauta.cu/useraaa/user_info" class="etecsa-blue-text"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class=""><a href="https://www.portal.nauta.cu/useraaa/recharge_account" class="etecsa-blue-text"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="active">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_change_password_group"><i class="mdi-action-lock-open"></i><span>Cambiar contraseña<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_change_password_group" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_detail"><i class="mdi-action-view-list"></i><span>Detalle de operaciones<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_detail" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_transfer"><i class="mdi-action-input"></i><span>Transferir saldo<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_transfer" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul>
-                        </li>                </ul>
-            </div>
-        </nav>
-    </div>
+        });
 
-</header>
-    <div id="content" class="container"><div class="row">
-    <div class="col s12">
-        <h3>Cambiar contraseña de la cuenta de acceso</h3>
-            <p class="sub-title"></p>
-    </div>
-</div>
-<div class="row">
-    <div class="card-panel">
-        <div class="row">
-            <form name="change_password" id="change_password" method="post" class="col s12">
-                <input type="hidden" name="csrf" value="security628f742a8cc1a">                                <div class="row margin">
-                    <div class="input-field col s10 m6">
-                        <input type="password" id="old_password" name="old_password" maxlength="20" length="20">
-                        <label class="center-align" for="old_password">Contraseña actual</label>
-                    <span class="character-counter" style="float: right; font-size: 12px; height: 1px;"></span></div>
-                    <div class="input-field col s2 m6">
-                        <input type="checkbox" id="show_pass" class="show_password" rel="old_password">
-                        <label for="show_pass"><span class="hide-on-small-only">Mostrar contraseña</span></label>
-                    </div>
-                </div>
-                <div class="row margin">
-                    <div class="input-field col s10 m6">
-                        <input type="password" id="new_password" name="new_password" maxlength="20" length="20">
-                        <label class="center-align" for="new_password">Nueva contraseña</label>
-                    <span class="character-counter" style="float: right; font-size: 12px; height: 1px;"></span></div>
-                    <div class="input-field col s2 m4">
-                        <input type="checkbox" id="show_new_password" class="show_password" rel="new_password">
-                        <label for="show_new_password"><span class="hide-on-small-only">Mostrar contraseña</span></label>
-                    </div>
-                </div>
-                <div class="row margin">
-                    <div class="input-field col s10 m6">
-                        <input type="password" id="repeat_new_password" name="repeat_new_password" maxlength="20" length="20">
-                        <label class="center-align" for="repeat_new_password">Confirmar nueva contraseña</label>
-                    <span class="character-counter" style="float: right; font-size: 12px; height: 1px;"></span></div>
-                    <div class="input-field col s2 m4">
-                        <input type="checkbox" id="show_repeat_new_password" class="show_password" rel="repeat_new_password">
-                        <label for="show_repeat_new_password"><span class="hide-on-small-only">Mostrar contraseña</span></label>
-                    </div>
-                </div>
-                <div class="row">
-                    <div class="input-field col s12">
-                        <button name="btn_submit" type="submit" class="submit_btn btn waves-effect waves-light blue darken-4">Aceptar</button>
-                    </div>
-                </div>
-            </form>
-        </div>
-    </div>
-</div>
-</div>    <div id="contact_info_box"></div>
-    <footer class="page-footer white grey-text text-darken-4">
-    <hr>
-    <div class="container">
-        <div class="row center">
-            <div class="col s12">
-                <p>© 2011 Empresa de Telecomunicaciones de Cuba S. A. (ETECSA). Todos los derechos reservados</p>
-                <p><a class="etecsa-blue-text" href="http://www.etecsa.cu/">www.etecsa.cu</a></p>
-            </div>
-        </div>
-    </div>
-    <div class="hidden" id="ajax-messages" data-ajax-connection-error="Existe un error de conexión de red. Puede ser que usted se haya desconectado de la red o el servicio se haya caido."></div>
-</footer><script type="text/javascript" src="change_password_action_success_files/jquery-2.js"></script><script type="text/javascript" src="change_password_action_success_files/materialize.js"></script><script type="text/javascript" src="change_password_action_success_files/jquery_002.js"></script><script type="text/javascript" src="change_password_action_success_files/toastr.js"></script><script type="text/javascript" src="change_password_action_success_files/jquery.js"></script><script type="text/javascript" src="change_password_action_success_files/init.js"></script><script type="text/javascript" src="change_password_action_success_files/msgpool.js"></script>    <script type="text/javascript">
-        window.toastr.options = {
-            timeOut: 10000
-        }
-        $(function(){
-            $('.contact_info, .help').on("click",function(e){
-                console.log($(this).attr('href'));
-                e.preventDefault();
-                $("#contact_info_box").load($(this).attr('href'));
-
-            });
 
+        $('.show_password').on("click", function () {
+            var target = $(this).attr('rel');
+            if ($(this).prop('checked')) {
+                $('#' + target).attr('type', 'text');
+            } else {
+                $('#' + target).attr('type', 'password');
+            }
+        });
 
-            $('.show_password').on("click",function(){
-                var target=$(this).attr('rel');
-                if ($(this).prop('checked')){
-                    $('#'+target).attr('type','text');
-                } else {
-                    $('#'+target).attr('type','password');
+        $('.submit_btn').on('click', function () {
+            $.blockUI({
+                message: '<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
+                css: {
+                    border: 'none',
+                    padding: '15px',
+                    backgroundColor: '#000',
+                    '-webkit-border-radius': '10px',
+                    '-moz-border-radius': '10px',
+                    opacity: .5,
+                    color: '#fff'
                 }
             });
+        });
 
-            $('.submit_btn').on('click',function(){
-                $.blockUI({
-                    message:'<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
-                    css: {
-                        border: 'none',
-                        padding: '15px',
-                        backgroundColor: '#000',
-                        '-webkit-border-radius': '10px',
-                        '-moz-border-radius': '10px',
-                        opacity: .5,
-                        color: '#fff'
-                    } });
-            });
-
-            var options = ['nauta.com.cu','nauta.co.cu'];
-            $("input.user-domain").mailtip({
-                mails: options,
-                offsetTop: 2
-            });
-            
+        var options = ['nauta.com.cu', 'nauta.co.cu'];
+        $("input.user-domain").mailtip({
+            mails: options,
+            offsetTop: 2
         });
-    </script>
-    <script type="text/javascript">toastr.success('<ul><li class="msg_message">El cambio de clave se realizó correctamente.</li></ul>');</script>    
 
-<div class="material-tooltip" id="4a5f7955-60ce-5d50-fda2-6b6d232cb69b"><span>English</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="179abdce-9a4c-731b-1efa-265de5bfa589"><span>Información de contacto</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="f02b12a5-2ef6-8fb1-f388-7d1c1d6aec91"><span>Ayuda</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="4cd4c4a0-84dd-df16-01b6-9420acff9de2"><span>Salir</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="hiddendiv common"></div><div class="drag-target" style="left: 0px; touch-action: pan-y;"></div></body></html>
\ No newline at end of file
+    });
+</script>
+<script
+    type="text/javascript">toastr.success('<ul><li class="msg_message">El cambio de clave se realizó correctamente.</li></ul>');</script>
\ No newline at end of file
diff --git a/test/assets/connection_list_page1.html b/test/assets/connection_list_page1.html
new file mode 100755
index 0000000..63935cc
--- /dev/null
+++ b/test/assets/connection_list_page1.html
@@ -0,0 +1,159 @@
+<div>
+    <table style="width:100%" class="striped bordered highlight responsive-table" cellspacing="0" cellpadding="3">
+        <thead>
+            <tr>
+                <th>Inicio de sesión</th>
+                <th>Fin de sesión</th>
+                <th>Tiempo consumido</th>
+                <th>Subida</th>
+                <th>Descarga</th>
+                <th>Importe</th>
+            </tr>
+        </thead>
+
+        <tbody>
+            <tr>
+                <td>26/12/2022 16:57:11</td>
+                <td>26/12/2022 22:13:26</td>
+                <td>05:16:15</td>
+                <td>103,17 MB</td>
+                <td>1,24 GB</td>
+                <td>$12,65</td>
+            </tr>
+            <tr>
+                <td>26/12/2022 09:22:48</td>
+                <td>26/12/2022 15:34:21</td>
+                <td>06:11:33</td>
+                <td>57,26 MB</td>
+                <td>475,02 MB</td>
+                <td>$14,87</td>
+            </tr>
+            <tr>
+                <td>25/12/2022 21:21:54</td>
+                <td>25/12/2022 21:26:56</td>
+                <td>00:05:02</td>
+                <td>539,00 KB</td>
+                <td>2,01 MB</td>
+                <td>$0,21</td>
+            </tr>
+            <tr>
+                <td>25/12/2022 15:40:54</td>
+                <td>25/12/2022 18:24:33</td>
+                <td>02:43:39</td>
+                <td>15,12 MB</td>
+                <td>65,36 MB</td>
+                <td>$6,55</td>
+            </tr>
+            <tr>
+                <td>25/12/2022 15:40:11</td>
+                <td>25/12/2022 15:40:42</td>
+                <td>00:00:31</td>
+                <td>38,00 KB</td>
+                <td>71,00 KB</td>
+                <td>$0,03</td>
+            </tr>
+            <tr>
+                <td>24/12/2022 19:29:03</td>
+                <td>25/12/2022 03:34:18</td>
+                <td>08:05:15</td>
+                <td>105,70 MB</td>
+                <td>1,52 GB</td>
+                <td>$19,41</td>
+            </tr>
+            <tr>
+                <td>24/12/2022 10:24:19</td>
+                <td>24/12/2022 10:28:34</td>
+                <td>00:04:15</td>
+                <td>415,00 KB</td>
+                <td>8,94 MB</td>
+                <td>$0,17</td>
+            </tr>
+            <tr>
+                <td>24/12/2022 10:20:25</td>
+                <td>24/12/2022 10:24:14</td>
+                <td>00:03:49</td>
+                <td>222,00 KB</td>
+                <td>1,54 MB</td>
+                <td>$0,16</td>
+            </tr>
+            <tr>
+                <td>23/12/2022 16:05:29</td>
+                <td>23/12/2022 16:06:19</td>
+                <td>00:00:50</td>
+                <td>4,00 KB</td>
+                <td>65,00 KB</td>
+                <td>$0,04</td>
+            </tr>
+            <tr>
+                <td>23/12/2022 15:02:26</td>
+                <td>23/12/2022 15:09:45</td>
+                <td>00:07:19</td>
+                <td>1,85 MB</td>
+                <td>21,04 MB</td>
+                <td>$0,30</td>
+            </tr>
+            <tr>
+                <td>23/12/2022 13:36:13</td>
+                <td>23/12/2022 14:35:03</td>
+                <td>00:58:50</td>
+                <td>16,53 MB</td>
+                <td>67,76 MB</td>
+                <td>$2,36</td>
+            </tr>
+            <tr>
+                <td>23/12/2022 08:33:03</td>
+                <td>23/12/2022 09:18:31</td>
+                <td>00:45:28</td>
+                <td>18,66 MB</td>
+                <td>144,05 MB</td>
+                <td>$1,82</td>
+            </tr>
+            <tr>
+                <td>22/12/2022 19:46:20</td>
+                <td>22/12/2022 19:46:49</td>
+                <td>00:00:29</td>
+                <td>4,00 KB</td>
+                <td>53,00 KB</td>
+                <td>$0,02</td>
+            </tr>
+            <tr>
+                <td>22/12/2022 19:43:01</td>
+                <td>22/12/2022 19:46:02</td>
+                <td>00:03:01</td>
+                <td>37,00 KB</td>
+                <td>140,00 KB</td>
+                <td>$0,13</td>
+            </tr>
+
+        </tbody>
+    </table>
+    <div class="right-align">
+        <ul class="pagination">
+            <li class="disabled hide-on-small-only icon">
+                <a href="/useraaa/service_detail_list/2022-12/47" class="pagination-link"><i
+                        class="mdi-navigation-arrow-back small"></i></a>
+            </li>
+            <li class="disabled hide-on-small-only icon">
+                <a href="/useraaa/service_detail_list/2022-12/47" class="pagination-link"><i
+                        class="mdi-navigation-chevron-left small"></i></a>
+            </li>
+            <li class="active"><a href="/useraaa/service_detail_list/2022-12/47" class="pagination-link">1</a></li>
+            <li class="waves-effect"><a href="/useraaa/service_detail_list/2022-12/47/2" class="pagination-link">2</a>
+            </li>
+            <li class="waves-effect"><a href="/useraaa/service_detail_list/2022-12/47/3" class="pagination-link">3</a>
+            </li>
+            <li class="waves-effect"><a href="/useraaa/service_detail_list/2022-12/47/4" class="pagination-link">4</a>
+            </li>
+            <li class="waves-effect hide-on-small-only icon">
+                <a href="/useraaa/service_detail_list/2022-12/47/2" class="pagination-link"><i
+                        class="mdi-navigation-chevron-right small"></i></a>
+            </li>
+            <li class="waves-effect  hide-on-small-only icon">
+                <a href="/useraaa/service_detail_list/2022-12/47/4" class="pagination-link"><i
+                        class="mdi-navigation-arrow-forward small"></i></a>
+            </li>
+            <li class="hide-on-med-and-down"><span class="">47 Registros</span></li>
+            <li class="hide-on-med-and-down"><span class="">4 Páginas</span></li>
+        </ul>
+    </div>
+</div>
\ No newline at end of file
diff --git a/test/assets/connection_list_page2.html b/test/assets/connection_list_page2.html
new file mode 100755
index 0000000..f33e934
--- /dev/null
+++ b/test/assets/connection_list_page2.html
@@ -0,0 +1,167 @@
+<div>
+    <table style="width:100%" class="striped bordered highlight responsive-table" cellspacing="0" cellpadding="3">
+        <thead>
+            <tr>
+                <th>Inicio de sesión</th>
+                <th>Fin de sesión</th>
+                <th>Tiempo consumido</th>
+                <th>Subida</th>
+                <th>Descarga</th>
+                <th>Importe</th>
+            </tr>
+        </thead>
+
+        <tbody>
+            <tr>
+                <td>21/12/2022 17:53:41</td>
+                <td>21/12/2022 18:12:21</td>
+                <td>00:18:40</td>
+                <td>5,84 MB</td>
+                <td>52,11 MB</td>
+                <td>$0,75</td>
+            </tr>
+            <tr>
+                <td>21/12/2022 17:50:58</td>
+                <td>21/12/2022 17:53:38</td>
+                <td>00:02:40</td>
+                <td>47,00 KB</td>
+                <td>119,00 KB</td>
+                <td>$0,11</td>
+            </tr>
+            <tr>
+                <td>21/12/2022 17:44:18</td>
+                <td>21/12/2022 17:44:56</td>
+                <td>00:00:38</td>
+                <td>8,00 KB</td>
+                <td>0 bytes</td>
+                <td>$0,03</td>
+            </tr>
+            <tr>
+                <td>20/12/2022 13:53:13</td>
+                <td>20/12/2022 19:13:02</td>
+                <td>05:19:49</td>
+                <td>135,16 MB</td>
+                <td>1,24 GB</td>
+                <td>$12,80</td>
+            </tr>
+            <tr>
+                <td>20/12/2022 12:47:23</td>
+                <td>20/12/2022 13:52:02</td>
+                <td>01:04:39</td>
+                <td>27,75 MB</td>
+                <td>346,07 MB</td>
+                <td>$2,59</td>
+            </tr>
+            <tr>
+                <td>19/12/2022 10:04:28</td>
+                <td>19/12/2022 16:14:59</td>
+                <td>06:10:31</td>
+                <td>25,16 MB</td>
+                <td>229,67 MB</td>
+                <td>$14,82</td>
+            </tr>
+            <tr>
+                <td>18/12/2022 19:20:54</td>
+                <td>18/12/2022 20:00:27</td>
+                <td>00:39:33</td>
+                <td>28,61 MB</td>
+                <td>64,31 MB</td>
+                <td>$1,59</td>
+            </tr>
+            <tr>
+                <td>17/12/2022 18:21:23</td>
+                <td>17/12/2022 18:22:53</td>
+                <td>00:01:30</td>
+                <td>41,00 KB</td>
+                <td>66,00 KB</td>
+                <td>$0,06</td>
+            </tr>
+            <tr>
+                <td>16/12/2022 14:57:49</td>
+                <td>16/12/2022 16:37:50</td>
+                <td>01:40:01</td>
+                <td>9,22 MB</td>
+                <td>41,96 MB</td>
+                <td>$4,01</td>
+            </tr>
+            <tr>
+                <td>15/12/2022 17:00:17</td>
+                <td>15/12/2022 18:53:08</td>
+                <td>01:52:51</td>
+                <td>64,81 MB</td>
+                <td>686,66 MB</td>
+                <td>$4,52</td>
+            </tr>
+            <tr>
+                <td>15/12/2022 10:51:10</td>
+                <td>15/12/2022 14:32:40</td>
+                <td>03:41:30</td>
+                <td>96,87 MB</td>
+                <td>896,56 MB</td>
+                <td>$8,86</td>
+            </tr>
+            <tr>
+                <td>13/12/2022 09:56:53</td>
+                <td>13/12/2022 18:47:31</td>
+                <td>08:50:38</td>
+                <td>212,21 MB</td>
+                <td>2,54 GB</td>
+                <td>$21,23</td>
+            </tr>
+            <tr>
+                <td>12/12/2022 15:11:22</td>
+                <td>12/12/2022 15:18:00</td>
+                <td>00:06:38</td>
+                <td>40,00 KB</td>
+                <td>103,00 KB</td>
+                <td>$0,27</td>
+            </tr>
+            <tr>
+                <td>09/12/2022 15:58:41</td>
+                <td>09/12/2022 16:06:58</td>
+                <td>00:08:17</td>
+                <td>54,00 KB</td>
+                <td>91,00 KB</td>
+                <td>$0,34</td>
+            </tr>
+            <tr>
+                <td>09/12/2022 14:10:06</td>
+                <td>09/12/2022 15:13:43</td>
+                <td>01:03:37</td>
+                <td>6,38 MB</td>
+                <td>18,24 MB</td>
+                <td>$2,55</td>
+            </tr>
+
+        </tbody>
+    </table>
+    <div class="right-align">
+        <ul class="pagination">
+            <li class="waves-effect hide-on-small-only icon">
+                <a href="/useraaa/service_detail_list/2022-12/47" class="pagination-link"><i
+                        class="mdi-navigation-arrow-back small"></i></a>
+            </li>
+            <li class="waves-effect hide-on-small-only icon">
+                <a href="/useraaa/service_detail_list/2022-12/47" class="pagination-link"><i
+                        class="mdi-navigation-chevron-left small"></i></a>
+            </li>
+            <li class="waves-effect"><a href="/useraaa/service_detail_list/2022-12/47" class="pagination-link">1</a>
+            </li>
+            <li class="active"><a href="/useraaa/service_detail_list/2022-12/47/2" class="pagination-link">2</a></li>
+            <li class="waves-effect"><a href="/useraaa/service_detail_list/2022-12/47/3" class="pagination-link">3</a>
+            </li>
+            <li class="waves-effect"><a href="/useraaa/service_detail_list/2022-12/47/4" class="pagination-link">4</a>
+            </li>
+            <li class="waves-effect hide-on-small-only icon">
+                <a href="/useraaa/service_detail_list/2022-12/47/3" class="pagination-link"><i
+                        class="mdi-navigation-chevron-right small"></i></a>
+            </li>
+            <li class="waves-effect  hide-on-small-only icon">
+                <a href="/useraaa/service_detail_list/2022-12/47/4" class="pagination-link"><i
+                        class="mdi-navigation-arrow-forward small"></i></a>
+            </li>
+            <li class="hide-on-med-and-down"><span class="">47 Registros</span></li>
+            <li class="hide-on-med-and-down"><span class="">4 Páginas</span></li>
+        </ul>
+    </div>
+</div>
\ No newline at end of file
diff --git a/test/assets/connection_list_page3.html b/test/assets/connection_list_page3.html
new file mode 100755
index 0000000..4f65006
--- /dev/null
+++ b/test/assets/connection_list_page3.html
@@ -0,0 +1,167 @@
+<div>
+    <table style="width:100%" class="striped bordered highlight responsive-table" cellspacing="0" cellpadding="3">
+        <thead>
+            <tr>
+                <th>Inicio de sesión</th>
+                <th>Fin de sesión</th>
+                <th>Tiempo consumido</th>
+                <th>Subida</th>
+                <th>Descarga</th>
+                <th>Importe</th>
+            </tr>
+        </thead>
+
+        <tbody>
+            <tr>
+                <td>09/12/2022 12:21:57</td>
+                <td>09/12/2022 12:30:26</td>
+                <td>00:08:29</td>
+                <td>94,00 KB</td>
+                <td>1,37 MB</td>
+                <td>$0,34</td>
+            </tr>
+            <tr>
+                <td>09/12/2022 10:44:34</td>
+                <td>09/12/2022 10:46:04</td>
+                <td>00:01:30</td>
+                <td>16,00 KB</td>
+                <td>66,00 KB</td>
+                <td>$0,06</td>
+            </tr>
+            <tr>
+                <td>09/12/2022 10:43:12</td>
+                <td>09/12/2022 10:44:15</td>
+                <td>00:01:03</td>
+                <td>7,00 KB</td>
+                <td>43,00 KB</td>
+                <td>$0,05</td>
+            </tr>
+            <tr>
+                <td>08/12/2022 14:05:43</td>
+                <td>08/12/2022 14:09:34</td>
+                <td>00:03:51</td>
+                <td>4,00 KB</td>
+                <td>33,00 KB</td>
+                <td>$0,16</td>
+            </tr>
+            <tr>
+                <td>08/12/2022 09:45:11</td>
+                <td>08/12/2022 09:51:07</td>
+                <td>00:05:56</td>
+                <td>587,00 KB</td>
+                <td>15,64 MB</td>
+                <td>$0,24</td>
+            </tr>
+            <tr>
+                <td>07/12/2022 15:50:15</td>
+                <td>07/12/2022 16:08:29</td>
+                <td>00:18:14</td>
+                <td>181,00 KB</td>
+                <td>572,00 KB</td>
+                <td>$0,73</td>
+            </tr>
+            <tr>
+                <td>07/12/2022 15:08:28</td>
+                <td>07/12/2022 15:09:15</td>
+                <td>00:00:47</td>
+                <td>8,00 KB</td>
+                <td>26,00 KB</td>
+                <td>$0,04</td>
+            </tr>
+            <tr>
+                <td>07/12/2022 12:55:39</td>
+                <td>07/12/2022 12:57:19</td>
+                <td>00:01:40</td>
+                <td>18,00 KB</td>
+                <td>67,00 KB</td>
+                <td>$0,07</td>
+            </tr>
+            <tr>
+                <td>07/12/2022 11:22:20</td>
+                <td>07/12/2022 11:24:31</td>
+                <td>00:02:11</td>
+                <td>19,00 KB</td>
+                <td>77,00 KB</td>
+                <td>$0,09</td>
+            </tr>
+            <tr>
+                <td>07/12/2022 09:31:59</td>
+                <td>07/12/2022 09:53:26</td>
+                <td>00:21:27</td>
+                <td>277,00 KB</td>
+                <td>900,00 KB</td>
+                <td>$0,86</td>
+            </tr>
+            <tr>
+                <td>06/12/2022 14:37:13</td>
+                <td>06/12/2022 16:35:43</td>
+                <td>01:58:30</td>
+                <td>33,08 MB</td>
+                <td>588,99 MB</td>
+                <td>$4,74</td>
+            </tr>
+            <tr>
+                <td>06/12/2022 08:50:01</td>
+                <td>06/12/2022 09:15:50</td>
+                <td>00:25:49</td>
+                <td>3,36 MB</td>
+                <td>26,76 MB</td>
+                <td>$1,04</td>
+            </tr>
+            <tr>
+                <td>05/12/2022 19:12:34</td>
+                <td>05/12/2022 19:22:37</td>
+                <td>00:10:03</td>
+                <td>1,80 MB</td>
+                <td>19,73 MB</td>
+                <td>$0,41</td>
+            </tr>
+            <tr>
+                <td>05/12/2022 15:45:59</td>
+                <td>05/12/2022 19:03:40</td>
+                <td>03:17:41</td>
+                <td>56,27 MB</td>
+                <td>729,82 MB</td>
+                <td>$7,91</td>
+            </tr>
+            <tr>
+                <td>05/12/2022 15:45:53</td>
+                <td>05/12/2022 15:45:54</td>
+                <td>00:00:01</td>
+                <td>2,00 KB</td>
+                <td>0 bytes</td>
+                <td>$0,01</td>
+            </tr>
+
+        </tbody>
+    </table>
+    <div class="right-align">
+        <ul class="pagination">
+            <li class="waves-effect hide-on-small-only icon">
+                <a href="/useraaa/service_detail_list/2022-12/47" class="pagination-link"><i
+                        class="mdi-navigation-arrow-back small"></i></a>
+            </li>
+            <li class="waves-effect hide-on-small-only icon">
+                <a href="/useraaa/service_detail_list/2022-12/47/2" class="pagination-link"><i
+                        class="mdi-navigation-chevron-left small"></i></a>
+            </li>
+            <li class="waves-effect"><a href="/useraaa/service_detail_list/2022-12/47" class="pagination-link">1</a>
+            </li>
+            <li class="waves-effect"><a href="/useraaa/service_detail_list/2022-12/47/2" class="pagination-link">2</a>
+            </li>
+            <li class="active"><a href="/useraaa/service_detail_list/2022-12/47/3" class="pagination-link">3</a></li>
+            <li class="waves-effect"><a href="/useraaa/service_detail_list/2022-12/47/4" class="pagination-link">4</a>
+            </li>
+            <li class="waves-effect hide-on-small-only icon">
+                <a href="/useraaa/service_detail_list/2022-12/47/4" class="pagination-link"><i
+                        class="mdi-navigation-chevron-right small"></i></a>
+            </li>
+            <li class="waves-effect  hide-on-small-only icon">
+                <a href="/useraaa/service_detail_list/2022-12/47/4" class="pagination-link"><i
+                        class="mdi-navigation-arrow-forward small"></i></a>
+            </li>
+            <li class="hide-on-med-and-down"><span class="">47 Registros</span></li>
+            <li class="hide-on-med-and-down"><span class="">4 Páginas</span></li>
+        </ul>
+    </div>
+</div>
\ No newline at end of file
diff --git a/test/assets/connection_list_page4.html b/test/assets/connection_list_page4.html
new file mode 100755
index 0000000..716f149
--- /dev/null
+++ b/test/assets/connection_list_page4.html
@@ -0,0 +1,71 @@
+<div>
+    <table style="width:100%" class="striped bordered highlight responsive-table" cellspacing="0" cellpadding="3">
+        <thead>
+            <tr>
+                <th>Inicio de sesión</th>
+                <th>Fin de sesión</th>
+                <th>Tiempo consumido</th>
+                <th>Subida</th>
+                <th>Descarga</th>
+                <th>Importe</th>
+            </tr>
+        </thead>
+
+        <tbody>
+            <tr>
+                <td>05/12/2022 08:59:11</td>
+                <td>05/12/2022 13:48:57</td>
+                <td>04:49:46</td>
+                <td>167,35 MB</td>
+                <td>1,87 GB</td>
+                <td>$11,47</td>
+            </tr>
+            <tr>
+                <td>04/12/2022 10:48:51</td>
+                <td>04/12/2022 17:36:31</td>
+                <td>06:47:40</td>
+                <td>78,88 MB</td>
+                <td>534,73 MB</td>
+                <td>$16,31</td>
+            </tr>
+            <tr>
+                <td>03/12/2022 13:17:29</td>
+                <td>03/12/2022 22:32:48</td>
+                <td>09:15:19</td>
+                <td>249,31 MB</td>
+                <td>2,00 GB</td>
+                <td>$22,22</td>
+            </tr>
+
+        </tbody>
+    </table>
+    <div class="right-align">
+        <ul class="pagination">
+            <li class="waves-effect hide-on-small-only icon">
+                <a href="/useraaa/service_detail_list/2022-12/47" class="pagination-link"><i
+                        class="mdi-navigation-arrow-back small"></i></a>
+            </li>
+            <li class="waves-effect hide-on-small-only icon">
+                <a href="/useraaa/service_detail_list/2022-12/47/3" class="pagination-link"><i
+                        class="mdi-navigation-chevron-left small"></i></a>
+            </li>
+            <li class="waves-effect"><a href="/useraaa/service_detail_list/2022-12/47" class="pagination-link">1</a>
+            </li>
+            <li class="waves-effect"><a href="/useraaa/service_detail_list/2022-12/47/2" class="pagination-link">2</a>
+            </li>
+            <li class="waves-effect"><a href="/useraaa/service_detail_list/2022-12/47/3" class="pagination-link">3</a>
+            </li>
+            <li class="active"><a href="/useraaa/service_detail_list/2022-12/47/4" class="pagination-link">4</a></li>
+            <li class="disabled hide-on-small-only icon">
+                <a href="/useraaa/service_detail_list/2022-12/47" class="pagination-link"><i
+                        class="mdi-navigation-chevron-right small"></i></a>
+            </li>
+            <li class="disabled  hide-on-small-only icon">
+                <a href="/useraaa/service_detail_list/2022-12/47" class="pagination-link"><i
+                        class="mdi-navigation-arrow-forward small"></i></a>
+            </li>
+            <li class="hide-on-med-and-down"><span class="">47 Registros</span></li>
+            <li class="hide-on-med-and-down"><span class="">4 Páginas</span></li>
+        </ul>
+    </div>
+</div>
\ No newline at end of file
diff --git a/test/assets/connections_summary.html b/test/assets/connections_summary.html
new file mode 100755
index 0000000..ba4eb47
--- /dev/null
+++ b/test/assets/connections_summary.html
@@ -0,0 +1,54 @@
+<div class="container" id="content">
+    <div class="row">
+        <div class="col s12 m6 l4">
+            <div class="card">
+                <div class="card-content orange darken-2 white-text">
+                    <div class="card-stats-title"><i class="mdi-device-signal-wifi-1-bar small"></i> Conexiones</div>
+                    <h5 class="card-stats-number">47</h5>
+                    <input name="count" type="hidden" value="47" />
+                    <input name="year_month_selected" type="hidden" value="2022-12" />
+                </div>
+            </div>
+        </div>
+        <div class="col s12 m6 l4">
+            <div class="card">
+                <div class="card-content green white-text">
+                    <div class="card-stats-title"><i class="mdi-action-alarm small"></i> Tiempo total</div>
+                    <h5 class="card-stats-number">83:17:45</h5>
+                </div>
+            </div>
+        </div>
+        <div class="col s12 m6 l4">
+            <div class="card">
+                <div class="card-content teal darken-1 white-text">
+                    <div class="card-stats-title"><i class="mdi-editor-attach-money small"></i> Importe Total</div>
+                    <h5 class="card-stats-number">$200,00</h5>
+                </div>
+            </div>
+        </div>
+        <div class="col s12 m6 l4">
+            <div class="card">
+                <div class="card-content deep-purple darken-1 white-text">
+                    <div class="card-stats-title"><i class="mdi-file-cloud-upload small"></i> Subida</div>
+                    <h5 class="card-stats-number">1,49 GB</h5>
+                </div>
+            </div>
+        </div>
+        <div class="col s12 m6 l4">
+            <div class="card">
+                <div class="card-content blue darken-1 white-text">
+                    <div class="card-stats-title"><i class="mdi-file-cloud-download small"></i> Descarga</div>
+                    <h5 class="card-stats-number">15,33 GB</h5>
+                </div>
+            </div>
+        </div>
+        <div class="col s12 m6 l4">
+            <div class="card">
+                <div class="card-content purple darken-1 white-text">
+                    <div class="card-stats-title"><i class="mdi-file-cloud-queue small"></i> Tráfico total</div>
+                    <h5 class="card-stats-number">16,82 GB</h5>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/test/assets/landing.html b/test/assets/landing.html
old mode 100644
new mode 100755
diff --git a/test/assets/logged_in.html b/test/assets/logged_in.html
old mode 100644
new mode 100755
index d9b1fc0..8142fd5
--- a/test/assets/logged_in.html
+++ b/test/assets/logged_in.html
@@ -1,13 +1,3 @@
-
-
-
-
-
-
-
-
-
-
 <c:set var="nativelang" value="es_ES"></c:set>
 
 
@@ -16,75 +6,66 @@
 
 
 
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE HTML
+	PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
 <html xmlns="http://www.w3.org/1999/xhtml">
 
-	<head>
-
-		<meta http-equiv="content-type" content="text/html; charset=UTF-8">
-
-		<meta http-equiv="pragma" content="no-cache">
+<head>
 
-		<meta http-equiv="cache-control" content="no-store">
+	<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 
-		<meta http-equiv="expires" content="0">
+	<meta http-equiv="pragma" content="no-cache">
 
-		<meta http-equiv="keywords" content=" ">
+	<meta http-equiv="cache-control" content="no-store">
 
-		<meta http-equiv="description" content=" ">
+	<meta http-equiv="expires" content="0">
 
-		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta http-equiv="keywords" content=" ">
 
-		<title>Nauta
+	<meta http-equiv="description" content=" ">
 
-		</title>
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 
-		<link href="/nauta_etecsa/LoginURL/css/wifi.css" rel="stylesheet"
+	<title>Nauta
 
-			type="text/css">
+	</title>
 
-		<link href="/nauta_etecsa/LoginURL/css/form.css" rel="stylesheet"
+	<link href="/nauta_etecsa/LoginURL/css/wifi.css" rel="stylesheet" type="text/css">
 
-			type="text/css">
+	<link href="/nauta_etecsa/LoginURL/css/form.css" rel="stylesheet" type="text/css">
 
-		<script type="text/javascript">
-
-
-
-     //显示在线时间
+	<script type="text/javascript">
 
-	  function $$(tt){return tt<10?"0"+tt : tt;};
 
-	  var today   = new Date();
 
-	  var hour  = $$(today.getHours() );
+		//显示在线时间
 
-	  var minu  = $$(today.getMinutes());
+		function $$(tt) { return tt < 10 ? "0" + tt : tt; };
 
-	  var second= $$(today.getSeconds());
+		var today = new Date();
 
-	  var actime= 'null';
+		var hour = $$(today.getHours());
 
-	  if('notFound.jsp' != 'notFound.jsp')
+		var minu = $$(today.getMinutes());
 
-	  {
+		var second = $$(today.getSeconds());
 
-	  	var newWnd =window.open("notFound.jsp","_blank");newWnd.opener = null;
+		var actime = 'null';
 
-	  }
+		if ('notFound.jsp' != 'notFound.jsp') {
 
-       function set()
+			var newWnd = window.open("notFound.jsp", "_blank"); newWnd.opener = null;
 
-	   {
+		}
 
-			var loginTime=parseInt((new Date().getTime()-today.getTime())/1000);
+		function set() {
 
-			if(loginTime++ > 600000)
+			var loginTime = parseInt((new Date().getTime() - today.getTime()) / 1000);
 
-			{
+			if (loginTime++ > 600000) {
 
-				today =new Date() ;
+				today = new Date();
 
 				//你已经登录了一个星期了，时间重置！
 
@@ -92,19 +73,15 @@
 
 			}
 
-			if(actime > 0)
-
-			{
+			if (actime > 0) {
 
-			    setonTime(actime);
+				setonTime(actime);
 
-			    actime++;
+				actime++;
 
 			}
 
-			else if(loginTime >0)
-
-			{
+			else if (loginTime > 0) {
 
 				setonTime(loginTime);
 
@@ -112,83 +89,69 @@
 
 		}
 
-	  setInterval(set,1000);
-
-	  function setonTime(loginTime)
-
-			{
-
-				var hours   = 0;
-
-				var minutes = 0;
-
-				var seconds = 0;
+		setInterval(set, 1000);
 
+		function setonTime(loginTime) {
 
+			var hours = 0;
 
-				hours = Math.floor(loginTime/3600);
+			var minutes = 0;
 
-				minutes = Math.floor((loginTime%3600)/60);
+			var seconds = 0;
 
-				seconds = loginTime%60;
 
 
+			hours = Math.floor(loginTime / 3600);
 
-				if(hours <= 9)
+			minutes = Math.floor((loginTime % 3600) / 60);
 
-				{
+			seconds = loginTime % 60;
 
-					hours="0"+hours;
 
-				}
-
-				if(minutes <= 9)
 
-				{
+			if (hours <= 9) {
 
-					minutes="0"+minutes;
-
-				}
+				hours = "0" + hours;
 
-				if(seconds <= 9)
+			}
 
-				{
+			if (minutes <= 9) {
 
-					seconds="0"+seconds;
+				minutes = "0" + minutes;
 
-				}
+			}
 
-				var cdate = hours + ":" + minutes + ":" + seconds;
+			if (seconds <= 9) {
 
-				document.getElementById('onlineTime').innerHTML = cdate;
+				seconds = "0" + seconds;
 
 			}
 
+			var cdate = hours + ":" + minutes + ":" + seconds;
 
+			document.getElementById('onlineTime').innerHTML = cdate;
 
-	  var g_httpRequest        = null;
+		}
 
 
 
-	  var g_isSubmitLogout = false;
+		var g_httpRequest = null;
 
 
 
-		//登录后提示退出
+		var g_isSubmitLogout = false;
 
-		function windowExitFunc(e)
 
-		{
 
-		    var event= window.event||e;
+		//登录后提示退出
 
-			try
+		function windowExitFunc(e) {
 
-			{
+			var event = window.event || e;
 
-				if(g_isSubmitLogout)
+			try {
 
-				{
+				if (g_isSubmitLogout) {
 
 					return false;
 
@@ -200,9 +163,7 @@
 
 
 
-				if (event)
-
-				{
+				if (event) {
 
 					event.returnValue = message;
 
@@ -212,9 +173,7 @@
 
 			}
 
-			catch(e)
-
-			{
+			catch (e) {
 
 				alert("alert window error!!!");
 
@@ -226,15 +185,11 @@
 
 
 
-		function userSubmitLogout()
-
-		{
-
-			if(!confirm("Se le desconectará. ¿Seguro que quieres cerrar sesión?"))
+		function userSubmitLogout() {
 
-			{
+			if (!confirm("Se le desconectará. ¿Seguro que quieres cerrar sesión?")) {
 
-		       return false;
+				return false;
 
 			}
 
@@ -248,552 +203,467 @@
 
 
 
-		function logoutImpl()
-
-		{
+		function logoutImpl() {
 
-		  pageOnunload();
+			pageOnunload();
 
 		}
 
 
 
-		function pageOnunload()
-
-		{
-
-		        //if(!g_httpRequest){ g_httpRequest = createHttpRequest(); }
+		function pageOnunload() {
 
-		        var cookieCheck = document.getElementById("removeCookie");
+			//if(!g_httpRequest){ g_httpRequest = createHttpRequest(); }
 
-                var removeCookie = "1";
+			var cookieCheck = document.getElementById("removeCookie");
 
-                if (cookieCheck && cookieCheck.checked == true) {
+			var removeCookie = "1";
 
-                    removeCookie = cookieCheck.value;
+			if (cookieCheck && cookieCheck.checked == true) {
 
-                }
+				removeCookie = cookieCheck.value;
 
-		         var g_httpRequest = createHttpRequest();
-
-				 if (g_httpRequest == null)
-
-		         {
-
-		           alert("Se desconecta de forma anormal. Por favor, póngase en contacto con el administrador de la red.");
-
-		            return false;
-
-		         }
-
-		         else
-
-		         {
-
-		             var urlParam = "ATTRIBUTE_UUID=B2F6AAB9A9868BABC0BDC6B7A235ABE2&CSRFHW=61cf73483775cf865a0fdf4640990e45"
-
-		        	         + "&wlanuserip=10.190.20.104"
-
-		        	         + "&ssid="
+			}
 
-		                     + "&loggerId=20191122050249201+rrtoledo@nauta.com.cu"
+			var g_httpRequest = createHttpRequest();
 
-		                     + "&domain="
+			if (g_httpRequest == null) {
 
-		                     + "&username=rrtoledo@nauta.com.cu"
+				alert("Se desconecta de forma anormal. Por favor, póngase en contacto con el administrador de la red.");
 
-		                     + "&wlanacname="
+				return false;
 
-		                     + "&wlanmac="
+			}
 
-		                     +"&remove="+removeCookie;
+			else {
 
-		             g_httpRequest.open("GET", "/LogoutServlet?CSRFHW=61cf73483775cf865a0fdf4640990e45&" + urlParam, true);
+				var urlParam = "ATTRIBUTE_UUID=B2F6AAB9A9868BABC0BDC6B7A235ABE2&CSRFHW=61cf73483775cf865a0fdf4640990e45"
 
-		             g_httpRequest.send();
+					+ "&wlanuserip=10.190.20.104"
 
-		              var isOut;
+					+ "&ssid="
 
-		             g_httpRequest.onreadystatechange=function()
+					+ "&loggerId=20191122050249201+rrtoledo@nauta.com.cu"
 
-	       			{
+					+ "&domain="
 
-	        			if (g_httpRequest.readyState==4 && g_httpRequest.status==200)
+					+ "&username=rrtoledo@nauta.com.cu"
 
-	         			{
+					+ "&wlanacname="
 
-	         				if(g_httpRequest.responseText.indexOf("SUCCESS") != -1)
+					+ "&wlanmac="
 
-					          {
+					+ "&remove=" + removeCookie;
 
-					             if (g_httpRequest.responseText.indexOf("REMOVE_AUTHINFO_SUCCESS") != -1)
+				g_httpRequest.open("GET", "/LogoutServlet?CSRFHW=61cf73483775cf865a0fdf4640990e45&" + urlParam, true);
 
-					            {
+				g_httpRequest.send();
 
-                                    alert("???logout_result.removecookie.success???");
+				var isOut;
 
-                                }
+				g_httpRequest.onreadystatechange = function () {
 
-                                else if(g_httpRequest.responseText.indexOf("ERROR") != -1){
+					if (g_httpRequest.readyState == 4 && g_httpRequest.status == 200) {
 
-                                   alert("???logout_result.removecookie.fail???");
+						if (g_httpRequest.responseText.indexOf("SUCCESS") != -1) {
 
-					            }
+							if (g_httpRequest.responseText.indexOf("REMOVE_AUTHINFO_SUCCESS") != -1) {
 
-					               isOut = true;
+								alert("???logout_result.removecookie.success???");
 
-					          }
+							}
 
-					          else
+							else if (g_httpRequest.responseText.indexOf("ERROR") != -1) {
 
-					          {
+								alert("???logout_result.removecookie.fail???");
 
-					            isOut = true;
+							}
 
-					          }
+							isOut = true;
 
-					          if(isOut == false)
+						}
 
-							  {
+						else {
 
-							    alert("Se desconecta de forma anormal. Por favor, póngase en contacto con el administrador de la red.");
+							isOut = true;
 
-							    return;
+						}
 
-							  }
+						if (isOut == false) {
 
-							  else if (isOut == null)
+							alert("Se desconecta de forma anormal. Por favor, póngase en contacto con el administrador de la red.");
 
-							  {
+							return;
 
-							    alert("Su red está desconectada. Compruébelo por favor.");
+						}
 
-							    g_isSubmitLogout = true;
+						else if (isOut == null) {
 
-							     logoutToFirstPage();
+							alert("Su red está desconectada. Compruébelo por favor.");
 
-							    return;
+							g_isSubmitLogout = true;
 
-							  }
+							logoutToFirstPage();
 
-							  // alert("???logout_result.logout_success???");
+							return;
 
-							  g_isSubmitLogout = true;
+						}
 
-							  //window.location.replace("http://www.google.com");
+						// alert("???logout_result.logout_success???");
 
-							  logoutToFirstPage();
+						g_isSubmitLogout = true;
 
-	         			}
+						//window.location.replace("http://www.google.com");
 
-	         			else
+						logoutToFirstPage();
 
-	         			{
+					}
 
-	         				 if(g_httpRequest.readyState==4 && g_httpRequest.status != 200)
+					else {
 
-				             {
+						if (g_httpRequest.readyState == 4 && g_httpRequest.status != 200) {
 
-				              	alert("request error "  + g_httpRequest.status);
+							alert("request error " + g_httpRequest.status);
 
-				              	return false;
+							return false;
 
-				             }
+						}
 
-	         			}
+					}
 
-	         		}
+				}
 
-		       }
+			}
 
 		}
 
-        function logoutToFirstPage()
-
-        {
+		function logoutToFirstPage() {
 
-        	//[false alarm:Cross-Site Scripting: Reflected]
+			//[false alarm:Cross-Site Scripting: Reflected]
 
-            window.location.href="/nauta_etecsa/OnlineURL/offline.jsp?CSRFHW=61cf73483775cf865a0fdf4640990e45&lang="+'es_ES';
+			window.location.href = "/nauta_etecsa/OnlineURL/offline.jsp?CSRFHW=61cf73483775cf865a0fdf4640990e45&lang=" + 'es_ES';
 
-        }
-
-         function IEkeydown(event)
+		}
 
-		 {
+		function IEkeydown(event) {
 
-		    if ((event.keyCode == 8)||  //屏蔽退格删除键
+			if ((event.keyCode == 8) ||  //屏蔽退格删除键
 
-		    (event.keyCode == 114)||
+				(event.keyCode == 114) ||
 
-		    (event.keyCode == 116)||            //屏蔽 F5 刷新键
+				(event.keyCode == 116) ||            //屏蔽 F5 刷新键
 
-		    (event.keyCode == 122))             //屏蔽 F12 刷新键
+				(event.keyCode == 122))             //屏蔽 F12 刷新键
 
-		    {
+			{
 
-		       event.keyCode=0;
+				event.keyCode = 0;
 
-		       event.returnValue=false;
+				event.returnValue = false;
 
-		    }
+			}
 
 
 
-		    if ((event.altKey)&& ((event.keyCode==37)||(event.keyCode==39))) // 屏蔽 Alt + -> 和 Alt+ <-
+			if ((event.altKey) && ((event.keyCode == 37) || (event.keyCode == 39))) // 屏蔽 Alt + -> 和 Alt+ <-
 
-		    {
+			{
 
-		        event.returnValue=false;
+				event.returnValue = false;
 
-		    }
+			}
 
 
 
-		    if (event.ctrlKey ||(event.shiftKey)&&(event.keyCode==121)) //屏蔽 Ctrl 键 和 shift+F10
+			if (event.ctrlKey || (event.shiftKey) && (event.keyCode == 121)) //屏蔽 Ctrl 键 和 shift+F10
 
-		    {
+			{
 
-		        event.returnValue=false;
+				event.returnValue = false;
 
-		    }
+			}
 
 		}
 
 
 
-		function FFkeydown(event)
+		function FFkeydown(event) {
 
-		{
+			var key = event.which;
 
-	        var key = event.which;
+			if ((key == 8) || (key == 114) || (key == 116) || (key == 122))                      //屏蔽退格删除键(event.keyCode ==   8)||//屏蔽 F5 刷新键//屏蔽 F12 刷新键
 
-		    if ((key == 8) || (key == 114)|| (key == 116)||  (key == 122))                      //屏蔽退格删除键(event.keyCode ==   8)||//屏蔽 F5 刷新键//屏蔽 F12 刷新键
-
-		    {
+			{
 
-		   	    key=0;
+				key = 0;
 
-		        event.preventDefault();
+				event.preventDefault();
 
-		    }
+			}
 
-            if ((event.altKey)&& ((key==37)||(key==39))) // 屏蔽 Alt + -> 和 Alt+ <-
+			if ((event.altKey) && ((key == 37) || (key == 39))) // 屏蔽 Alt + -> 和 Alt+ <-
 
-		    {
+			{
 
-		        event.preventDefault();
+				event.preventDefault();
 
-		    }
+			}
 
-            if (event.ctrlKey ||(event.shiftKey)&&(key==121)) //屏蔽 Ctrl 键 和 shift+F10
+			if (event.ctrlKey || (event.shiftKey) && (key == 121)) //屏蔽 Ctrl 键 和 shift+F10
 
-		    {
+			{
 
-		        event.preventDefault();
+				event.preventDefault();
 
-		    }
+			}
 
 		}
 
-		function windowKeyDown(e)
-
-	    {
+		function windowKeyDown(e) {
 
-		    if (window.event)
+			if (window.event) {
 
-	        {
-
-	       	    var event = window.event;
-
-                IEkeydown(event);
-
- 	        }
-
- 	        else
-
- 	        {
-
- 	      		var event= e;
-
-			    FFkeydown(event);
-
-		    }
-
-        }
+				var event = window.event;
 
+				IEkeydown(event);
 
+			}
 
-		function createHttpRequest()
+			else {
 
-		{
+				var event = e;
 
-	        var request;
+				FFkeydown(event);
 
-	        try
+			}
 
-	        {
+		}
 
-	            request = new XMLHttpRequest();
 
-	        }
 
-	        catch (trymicrosoft)
+		function createHttpRequest() {
 
-		    {
+			var request;
 
-	            try
+			try {
 
-	            {
+				request = new XMLHttpRequest();
 
-	                request = new ActiveXObject("Microsoft.XMLHTTP");
+			}
 
-	            }
+			catch (trymicrosoft) {
 
-	            catch (failed)
+				try {
 
-	            {
+					request = new ActiveXObject("Microsoft.XMLHTTP");
 
-	                try
+				}
 
-	                {
+				catch (failed) {
 
-	                    request = new ActiveXObject("Msxml2.XMLHTTP");
+					try {
 
-	                }
+						request = new ActiveXObject("Msxml2.XMLHTTP");
 
-	                catch (othermicrosoft)
+					}
 
-	                {
+					catch (othermicrosoft) {
 
-	                    request = null;
+						request = null;
 
-	                }
+					}
 
-	            }
+				}
 
-	        }
+			}
 
-	        return request;
+			return request;
 
 		}
 
 
 
-        function windowOnunload()
+		function windowOnunload() {
 
-		{
+			if (!g_isSubmitLogout) {
 
-		    if (!g_isSubmitLogout)
+				logoutImpl();
 
-		    {
-
-		        logoutImpl();
-
-		    }
+			}
 
 		}
 
 
 
-		function updateAvailableTime()
-
-		{
+		function updateAvailableTime() {
 
 			var g_httpRequest = createHttpRequest();
 
-		    if (g_httpRequest == null)
-
-            {
-
-           		alert("Actualización disponible tiempo falle.");
-
-            	return;
-
-         	}
+			if (g_httpRequest == null) {
 
-         	else
+				alert("Actualización disponible tiempo falle.");
 
-         	{
+				return;
 
-	            g_httpRequest.open("post", "/EtecsaQueryServlet?CSRFHW=61cf73483775cf865a0fdf4640990e45&op=getLeftTime&op1=rrtoledo@nauta.com.cu&op2=EF7E5B1878C624B2F633A8268D5A329635EBC15876B9EDE7645FAB578590B525", true);
-
-	            g_httpRequest.send();
-
-	            g_httpRequest.onreadystatechange=function()
+			}
 
-	            {
+			else {
 
-	            	if (g_httpRequest.readyState==4 && g_httpRequest.status==200)
+				g_httpRequest.open("post", "/EtecsaQueryServlet?CSRFHW=61cf73483775cf865a0fdf4640990e45&op=getLeftTime&op1=rrtoledo@nauta.com.cu&op2=EF7E5B1878C624B2F633A8268D5A329635EBC15876B9EDE7645FAB578590B525", true);
 
-	            	{
+				g_httpRequest.send();
 
-	            		//得到最新的有效时间
+				g_httpRequest.onreadystatechange = function () {
 
-	            		var responseText = g_httpRequest.responseText;
+					if (g_httpRequest.readyState == 4 && g_httpRequest.status == 200) {
 
-	            		if (responseText.indexOf("errorop") != -1)
+						//得到最新的有效时间
 
-	            		{
+						var responseText = g_httpRequest.responseText;
 
-	            		    alert("Actualización disponible tiempo falle.");
+						if (responseText.indexOf("errorop") != -1) {
 
-	            		    document.getElementById("availableTime").innerHTML = "--:--:--";
+							alert("Actualización disponible tiempo falle.");
 
-	            		    return;
+							document.getElementById("availableTime").innerHTML = "--:--:--";
 
-	            		}
+							return;
 
-	            		//写入页面
+						}
 
-	            		document.getElementById("availableTime").innerHTML = responseText;
+						//写入页面
 
+						document.getElementById("availableTime").innerHTML = responseText;
 
 
-	            	}
 
-	            	else if(g_httpRequest.readyState==4 && g_httpRequest.status != 200)
+					}
 
-		            {
+					else if (g_httpRequest.readyState == 4 && g_httpRequest.status != 200) {
 
-		              	alert("request error "  + g_httpRequest.status);
+						alert("request error " + g_httpRequest.status);
 
-		              	return false;
+						return false;
 
-		            }
+					}
 
-	            }
+				}
 
-         	}
+			}
 
 		}
 
 	</script>
 
-	</head>
-
+</head>
 
 
-	<body onkeydown="windowKeyDown(event);"
 
-		onbeforeunload="windowExitFunc(event);">
+<body onkeydown="windowKeyDown(event);" onbeforeunload="windowExitFunc(event);">
 
-		<div id="header">
+	<div id="header">
 
-			<img src="/nauta_etecsa/LoginURL/images/nauta_wifi.jpg"
+		<img src="/nauta_etecsa/LoginURL/images/nauta_wifi.jpg" id="logo_nauta">
 
-				id="logo_nauta">
+		<img src="/nauta_etecsa/LoginURL/images/etecsa.jpg" id="logo_etecsa">
 
-			<img src="/nauta_etecsa/LoginURL/images/etecsa.jpg" id="logo_etecsa">
-
-		</div>
+	</div>
 
-		<div id="contenedor" style="height: 100%;">
+	<div id="contenedor" style="height: 100%;">
 
-			<div id="int" style="width: 500px;">
+		<div id="int" style="width: 500px;">
 
-				<div class="blq">
+			<div class="blq">
 
-					<div class="title">
+				<div class="title">
 
-						Bienvenido
+					Bienvenido
 
-					</div>
-
-					<div class="blq_int clearfix">
-
-						<div id="cont"
-
-							style="background-color: white; width: 400px; margin: 0 auto; text-align: center;">
-
-							<div style="padding: 20px; text-align: center;">
+				</div>
 
-								<div>
+				<div class="blq_int clearfix">
 
-									<div style="float: left;">
+					<div id="cont" style="background-color: white; width: 400px; margin: 0 auto; text-align: center;">
 
-										<img src="/nauta_etecsa/OnlineURL/images/conected.png">
+						<div style="padding: 20px; text-align: center;">
 
-									</div>
+							<div>
 
-									<span
+								<div style="float: left;">
 
-										style="float: left; padding-top: 15px; padding-left: 10px; font-weight: bold;">Usted está conectado </span>
+									<img src="/nauta_etecsa/OnlineURL/images/conected.png">
 
 								</div>
 
-								<br class="clearfloat">
-
-								<table id="logout" align="center">
-
-									<tbody>
+								<span
+									style="float: left; padding-top: 15px; padding-left: 10px; font-weight: bold;">Usted
+									está conectado </span>
 
-										<tr>
-
-											<td class="key">
-
-												Usuario
+							</div>
 
-											</td>
+							<br class="clearfloat">
 
-											<td>
+							<table id="logout" align="center">
 
-												rrtoledo@nauta.com.cu
+								<tbody>
 
-											</td>
+									<tr>
 
-										</tr>
+										<td class="key">
 
-										<tr>
+											Usuario
 
-											<td class="key">
+										</td>
 
-												Tiempo consumido
+										<td>
 
-											</td>
+											rrtoledo@nauta.com.cu
 
-											<td id="onlineTime"></td>
+										</td>
 
-										</tr>
+									</tr>
 
-										<tr>
+									<tr>
 
-											<td class="key">
+										<td class="key">
 
-												Tiempo disponible
+											Tiempo consumido
 
-											</td>
+										</td>
 
-											<td id="availableTime"></td>
+										<td id="onlineTime"></td>
 
-										</tr>
+									</tr>
 
-									</tbody>
+									<tr>
 
-								</table>
+										<td class="key">
 
-								<br>
+											Tiempo disponible
 
-								<input class="btn" name="refrescar"
+										</td>
 
-									value='Actualizar'
+										<td id="availableTime"></td>
 
-									onclick="updateAvailableTime();" type="button">
+									</tr>
 
-								<input class="btn" name="logout"
+								</tbody>
 
-									value='Cerrar sesión'
+							</table>
 
-									onclick="userSubmitLogout();" type="button">
+							<br>
 
-							</div>
+							<input class="btn" name="refrescar" value='Actualizar' onclick="updateAvailableTime();"
+								type="button">
 
-							<img src="/nauta_etecsa/OnlineURL/images/nauta_wifi_popup.jpg"
-
-								style="padding: 0 5px 15px 0; width: 190px;">
+							<input class="btn" name="logout" value='Cerrar sesión' onclick="userSubmitLogout();"
+								type="button">
 
 						</div>
 
+						<img src="/nauta_etecsa/OnlineURL/images/nauta_wifi_popup.jpg"
+							style="padding: 0 5px 15px 0; width: 190px;">
+
 					</div>
 
 				</div>
@@ -802,22 +672,22 @@
 
 		</div>
 
+	</div>
 
 
-	</body>
 
-	<script type="text/javascript">
+</body>
 
- 	window.onload = function ()
+<script type="text/javascript">
 
- 	{
+	window.onload = function () {
 
-	 	updateAvailableTime();
+		updateAvailableTime();
 
-	 	set();
+		set();
 
- 	}
+	}
 
-  </script>
+</script>
 
 </html>
\ No newline at end of file
diff --git a/test/assets/login_action_fail.html b/test/assets/login_action_fail.html
old mode 100644
new mode 100755
index 43e67b6..aeafd4b
--- a/test/assets/login_action_fail.html
+++ b/test/assets/login_action_fail.html
@@ -1,135 +1,54 @@
-<!DOCTYPE html>
-<html lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
-    <!-- CSS  -->
+<script type="text/javascript" src="login_action_fail_files/jquery-2.js"></script>
+<script type="text/javascript" src="login_action_fail_files/materialize.js"></script>
+<script type="text/javascript" src="login_action_fail_files/jquery_002.js"></script>
+<script type="text/javascript" src="login_action_fail_files/toastr.js"></script>
+<script type="text/javascript" src="login_action_fail_files/jquery.js"></script>
+<script type="text/javascript" src="login_action_fail_files/init.js"></script>
+<script type="text/javascript" src="login_action_fail_files/captcha.js"></script>
+<script type="text/javascript">
+    window.toastr.options = {
+        timeOut: 10000
+    }
+    $(function () {
+        $('.contact_info, .help').on("click", function (e) {
+            console.log($(this).attr('href'));
+            e.preventDefault();
+            $("#contact_info_box").load($(this).attr('href'));
 
-    <link rel="shortcut icon" type="images/x-icon" href="https://www.portal.nauta.cu/media/img/nauta.gif">
-    <title>Portal de usuario</title>
-    <meta name="keywords" content="">
-    <meta name="description" content="">
-    <meta name="copyright" content="">
-    <script type="text/javascript">
-        var url_base = 'https://www.portal.nauta.cu/';
-    </script>
-    <link type="text/css" href="login_action_fail_files/page-center.css" rel="stylesheet" media=""><link type="text/css" href="login_action_fail_files/icon.css" rel="stylesheet" media=""><link type="text/css" href="login_action_fail_files/materialize.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="login_action_fail_files/toastr.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="login_action_fail_files/mailtip.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="login_action_fail_files/style.css" rel="stylesheet" media="screen,projection"></head>
-<body class="orange">
-    <div class="fixed-action-btn" style="bottom: 45px; right: 24px;">
-    <a class="btn-floating btn-large red">
-        <i class="mdi-content-add"></i>
-    </a>
-    <ul>
-        <li><a class="btn-floating green tooltipped" data-position="left" data-delay="50" href="https://www.portal.nauta.cu/nauta/change_lang/en-en" data-tooltip="English" data-tooltip-id="69b09228-692e-64a1-e939-17154d19d670"><i class="mdi-action-language small"></i></a></li>
-        <li><a class="contact_info btn-floating blue tooltipped" data-position="left" data-delay="50" data-tooltip="Información de contacto" href="https://www.portal.nauta.cu/nauta/contact_info" data-tooltip-id="25b5d326-1153-4b37-650e-ef73550ef124"><i class="mdi-communication-quick-contacts-dialer"></i></a></li>
-    </ul>
-</div>
-    <div class="row" id="login-page">
-    <div class="col s12 z-depth-4 card-panel">
-        <p class="center"><a href="#"><img src="login_action_fail_files/nauta_login.png">
-            </a></p>
-        <form class="login-form" name="login" method="post" autocomplete="off">
-            <input type="hidden" name="csrf" value="security6286e8dfc3d8f">            <div class="row">
-                <div class="col s12 center">
-                    <p class="title-blue center" style="margin-top: 0; margin-bottom: 10px;">Portal de usuario</p>
-                </div>
-            </div>
-            <div class="row">
-              <div class="col s12 center">
-                    <p class="center"><a href="http://www.etecsa.cu/images/cu.sld.COVID_19_InfoCU-v3.apk">Descargue aqui APK .COVID_19.</a></p>
-              </div>
-            </div>
-
-            <div class="row margin">
-                <div class="input-field col s12">
-                    <i class="mdi-social-person-outline prefix"></i>
-                    <input type="text" id="username" name="login_user" maxlength="46" class="user-domain" autocomplete="off"><ul class="ui-mailtip" style="display: none; float: none; position: absolute; margin: 0px; padding: 0px; z-index: 10; top: 39px; left: 45px; width: auto; min-width: 224px;"></ul>
-                    <label class="center-align" for="username">Usuario</label>
-                </div>
-            </div>
-            <div class="row margin">
-                <div class="input-field col s12">
-                    <i class="mdi-action-lock-outline prefix"></i>
-                    <input type="password" id="password" name="password_user" maxlength="20">
-                    <label for="password" class="">Contraseña</label>
-                    <p>
-                        <input type="checkbox" id="show_pass" class="show_password" rel="password">
-                        <label for="show_pass">Mostrar contraseña</label>
-                    </p>
-                </div>
-            </div>
-                            <div class="row margin">
-                    <div class="input-field col s12">
-                        <i class="mdi-image-blur-on prefix"></i>
-                        <input type="text" id="captcha" name="captcha" style="margin-bottom: 1px;">
-                        <label for="captcha" class="">Código Captcha</label>
-                        <div id="captcha-content" style="margin-left: 3rem;">
-                            <div id="captcha-code">
-                                <img src="login_action_fail_files/a.png" class="captcha" width="189" height="96">
-                                <div class="right">
-                                    <a class="btn-floating waves-effect waves-light green right tooltipped" id="captcha_refresh" data-position="left" data-delay="50" data-tooltip="Recargar o refrescar el código captcha" title="Recargar o refrescar el código captcha" data-tooltip-id="5065c60f-c7f3-f649-65ea-6d568ddfc86a">
-                                        <i class="mdi-navigation-refresh left"></i></a>
-                                    <br>
-                                    <a class="btn-floating waves-effect waves-light right blue-grey darken-1 tooltipped help" data-position="left" data-delay="50" data-tooltip="Ayuda sobre el código captcha" title="Ayuda sobre el código captcha" href="https://www.portal.nauta.cu/captchagidess/help/" data-tooltip-id="3018f58c-0abc-f38d-4677-dbbe927ee1d0">
-                                        <i class="material-icons left">help_outline</i></a>
-                                </div>
-                            </div>
-                            <div class="captcha-not-load hide red-text text-accent-2"><span class="center-align">Imagen Captcha no cargada. Intente recargarla.</span></div>
-                        </div>
-                    </div>
-                </div>
-                            <div class="row">
-                <div class="input-field col s8 offset-s2">
-                    <button name="btn_submit" class="submit_btn btn waves-effect waves-light col s12 blue darken-4">Aceptar</button>
-                </div>
-            </div>
-        </form>
-    </div>
-</div>
-    <div id="contact_info_box"></div>
-    <script type="text/javascript" src="login_action_fail_files/jquery-2.js"></script><script type="text/javascript" src="login_action_fail_files/materialize.js"></script><script type="text/javascript" src="login_action_fail_files/jquery_002.js"></script><script type="text/javascript" src="login_action_fail_files/toastr.js"></script><script type="text/javascript" src="login_action_fail_files/jquery.js"></script><script type="text/javascript" src="login_action_fail_files/init.js"></script><script type="text/javascript" src="login_action_fail_files/captcha.js"></script>    <script type="text/javascript">
-        window.toastr.options = {
-            timeOut: 10000
-        }
-        $(function(){
-            $('.contact_info, .help').on("click",function(e){
-                console.log($(this).attr('href'));
-                e.preventDefault();
-                $("#contact_info_box").load($(this).attr('href'));
+        });
 
-            });
 
+        $('.show_password').on("click", function () {
+            var target = $(this).attr('rel');
+            if ($(this).prop('checked')) {
+                $('#' + target).attr('type', 'text');
+            } else {
+                $('#' + target).attr('type', 'password');
+            }
+        });
 
-            $('.show_password').on("click",function(){
-                var target=$(this).attr('rel');
-                if ($(this).prop('checked')){
-                    $('#'+target).attr('type','text');
-                } else {
-                    $('#'+target).attr('type','password');
+        $('.submit_btn').on('click', function () {
+            $.blockUI({
+                message: '<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
+                css: {
+                    border: 'none',
+                    padding: '15px',
+                    backgroundColor: '#000',
+                    '-webkit-border-radius': '10px',
+                    '-moz-border-radius': '10px',
+                    opacity: .5,
+                    color: '#fff'
                 }
             });
+        });
 
-            $('.submit_btn').on('click',function(){
-                $.blockUI({
-                    message:'<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
-                    css: {
-                        border: 'none',
-                        padding: '15px',
-                        backgroundColor: '#000',
-                        '-webkit-border-radius': '10px',
-                        '-moz-border-radius': '10px',
-                        opacity: .5,
-                        color: '#fff'
-                    } });
-            });
-
-            var options = ['nauta.com.cu','nauta.co.cu'];
-            $("input.user-domain").mailtip({
-                mails: options,
-                offsetTop: 2
-            });
-            
+        var options = ['nauta.com.cu', 'nauta.co.cu'];
+        $("input.user-domain").mailtip({
+            mails: options,
+            offsetTop: 2
         });
-    </script>
-    <script type="text/javascript">toastr.error('<ul><li class="msg_error">Se han detectado algunos errores.<ul><li class="sub-message">Olvidó llenar el campo usuario</li><li class="sub-message">Olvidó llenar el campo contraseña</li><li class="sub-message">Olvidó llenar el campo Código Captcha</li></ul></li></ul>');</script>    
 
-<div class="material-tooltip" id="69b09228-692e-64a1-e939-17154d19d670"><span>English</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="25b5d326-1153-4b37-650e-ef73550ef124"><span>Información de contacto</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="5065c60f-c7f3-f649-65ea-6d568ddfc86a"><span>Recargar o refrescar el código captcha</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="3018f58c-0abc-f38d-4677-dbbe927ee1d0"><span>Ayuda sobre el código captcha</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="hiddendiv common"></div></body></html>
\ No newline at end of file
+    });
+</script>
+<script
+    type="text/javascript">toastr.error('<ul><li class="msg_error">Se han detectado algunos errores.<ul><li class="sub-message">Olvidó llenar el campo usuario</li><li class="sub-message">Olvidó llenar el campo contraseña</li><li class="sub-message">Olvidó llenar el campo Código Captcha</li></ul></li></ul>');</script>
\ No newline at end of file
diff --git a/test/assets/login_action_fail_bad_account.html b/test/assets/login_action_fail_bad_account.html
old mode 100644
new mode 100755
index f14ecae..a7c61f0
--- a/test/assets/login_action_fail_bad_account.html
+++ b/test/assets/login_action_fail_bad_account.html
@@ -1,135 +1,54 @@
-<!DOCTYPE html>
-<html lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
-    <!-- CSS  -->
+<script type="text/javascript" src="login_action_fail_bad_account_files/jquery-2.js"></script>
+<script type="text/javascript" src="login_action_fail_bad_account_files/materialize.js"></script>
+<script type="text/javascript" src="login_action_fail_bad_account_files/jquery_002.js"></script>
+<script type="text/javascript" src="login_action_fail_bad_account_files/toastr.js"></script>
+<script type="text/javascript" src="login_action_fail_bad_account_files/jquery.js"></script>
+<script type="text/javascript" src="login_action_fail_bad_account_files/init.js"></script>
+<script type="text/javascript" src="login_action_fail_bad_account_files/captcha.js"></script>
+<script type="text/javascript">
+    window.toastr.options = {
+        timeOut: 10000
+    }
+    $(function () {
+        $('.contact_info, .help').on("click", function (e) {
+            console.log($(this).attr('href'));
+            e.preventDefault();
+            $("#contact_info_box").load($(this).attr('href'));
 
-    <link rel="shortcut icon" type="images/x-icon" href="https://www.portal.nauta.cu/media/img/nauta.gif">
-    <title>Portal de usuario</title>
-    <meta name="keywords" content="">
-    <meta name="description" content="">
-    <meta name="copyright" content="">
-    <script type="text/javascript">
-        var url_base = 'https://www.portal.nauta.cu/';
-    </script>
-    <link type="text/css" href="login_action_fail_bad_account_files/page-center.css" rel="stylesheet" media=""><link type="text/css" href="login_action_fail_bad_account_files/icon.css" rel="stylesheet" media=""><link type="text/css" href="login_action_fail_bad_account_files/materialize.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="login_action_fail_bad_account_files/toastr.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="login_action_fail_bad_account_files/mailtip.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="login_action_fail_bad_account_files/style.css" rel="stylesheet" media="screen,projection"></head>
-<body class="orange">
-    <div class="fixed-action-btn" style="bottom: 45px; right: 24px;">
-    <a class="btn-floating btn-large red">
-        <i class="mdi-content-add"></i>
-    </a>
-    <ul>
-        <li><a class="btn-floating green tooltipped" data-position="left" data-delay="50" href="https://www.portal.nauta.cu/nauta/change_lang/en-en" data-tooltip="English" data-tooltip-id="960257b0-2cad-d202-dcc3-ac620f4997d6"><i class="mdi-action-language small"></i></a></li>
-        <li><a class="contact_info btn-floating blue tooltipped" data-position="left" data-delay="50" data-tooltip="Información de contacto" href="https://www.portal.nauta.cu/nauta/contact_info" data-tooltip-id="0c77f74a-160b-af90-9a06-f7351070bf9a"><i class="mdi-communication-quick-contacts-dialer"></i></a></li>
-    </ul>
-</div>
-    <div class="row" id="login-page">
-    <div class="col s12 z-depth-4 card-panel">
-        <p class="center"><a href="#"><img src="login_action_fail_bad_account_files/nauta_login.png">
-            </a></p>
-        <form class="login-form" name="login" method="post" autocomplete="off">
-            <input type="hidden" name="csrf" value="security62884f5ea38c2">            <div class="row">
-                <div class="col s12 center">
-                    <p class="title-blue center" style="margin-top: 0; margin-bottom: 10px;">Portal de usuario</p>
-                </div>
-            </div>
-            <div class="row">
-              <div class="col s12 center">
-                    <p class="center"><a href="http://www.etecsa.cu/images/cu.sld.COVID_19_InfoCU-v3.apk">Descargue aqui APK .COVID_19.</a></p>
-              </div>
-            </div>
-
-            <div class="row margin">
-                <div class="input-field col s12">
-                    <i class="mdi-social-person-outline prefix"></i>
-                    <input type="text" id="username" name="login_user" maxlength="46" class="user-domain" value="lesly.cintra@nauta.com.cu" autocomplete="off"><ul class="ui-mailtip" style="display: none; float: none; position: absolute; margin: 0px; padding: 0px; z-index: 10; top: 39px; left: 45px; width: auto; min-width: 224px;"></ul>
-                    <label class="center-align active" for="username">Usuario</label>
-                </div>
-            </div>
-            <div class="row margin">
-                <div class="input-field col s12">
-                    <i class="mdi-action-lock-outline prefix"></i>
-                    <input type="password" id="password" name="password_user" maxlength="20">
-                    <label for="password" class="active">Contraseña</label>
-                    <p>
-                        <input type="checkbox" id="show_pass" class="show_password" rel="password">
-                        <label for="show_pass">Mostrar contraseña</label>
-                    </p>
-                </div>
-            </div>
-                            <div class="row margin">
-                    <div class="input-field col s12">
-                        <i class="mdi-image-blur-on prefix"></i>
-                        <input type="text" id="captcha" name="captcha" style="margin-bottom: 1px;">
-                        <label for="captcha" class="">Código Captcha</label>
-                        <div id="captcha-content" style="margin-left: 3rem;">
-                            <div id="captcha-code">
-                                <img src="login_action_fail_bad_account_files/a.png" class="captcha" width="189" height="117">
-                                <div class="right">
-                                    <a class="btn-floating waves-effect waves-light green right tooltipped" id="captcha_refresh" data-position="left" data-delay="50" data-tooltip="Recargar o refrescar el código captcha" title="Recargar o refrescar el código captcha" data-tooltip-id="fdcc6acb-fcfc-e03a-68f7-ffc5dee11e91">
-                                        <i class="mdi-navigation-refresh left"></i></a>
-                                    <br>
-                                    <a class="btn-floating waves-effect waves-light right blue-grey darken-1 tooltipped help" data-position="left" data-delay="50" data-tooltip="Ayuda sobre el código captcha" title="Ayuda sobre el código captcha" href="https://www.portal.nauta.cu/captchagidess/help/" data-tooltip-id="79f4b6e6-7ba3-7e37-a882-e9fd68dde9db">
-                                        <i class="material-icons left">help_outline</i></a>
-                                </div>
-                            </div>
-                            <div class="captcha-not-load hide red-text text-accent-2"><span class="center-align">Imagen Captcha no cargada. Intente recargarla.</span></div>
-                        </div>
-                    </div>
-                </div>
-                            <div class="row">
-                <div class="input-field col s8 offset-s2">
-                    <button name="btn_submit" class="submit_btn btn waves-effect waves-light col s12 blue darken-4">Aceptar</button>
-                </div>
-            </div>
-        </form>
-    </div>
-</div>
-    <div id="contact_info_box"></div>
-    <script type="text/javascript" src="login_action_fail_bad_account_files/jquery-2.js"></script><script type="text/javascript" src="login_action_fail_bad_account_files/materialize.js"></script><script type="text/javascript" src="login_action_fail_bad_account_files/jquery_002.js"></script><script type="text/javascript" src="login_action_fail_bad_account_files/toastr.js"></script><script type="text/javascript" src="login_action_fail_bad_account_files/jquery.js"></script><script type="text/javascript" src="login_action_fail_bad_account_files/init.js"></script><script type="text/javascript" src="login_action_fail_bad_account_files/captcha.js"></script>    <script type="text/javascript">
-        window.toastr.options = {
-            timeOut: 10000
-        }
-        $(function(){
-            $('.contact_info, .help').on("click",function(e){
-                console.log($(this).attr('href'));
-                e.preventDefault();
-                $("#contact_info_box").load($(this).attr('href'));
+        });
 
-            });
 
+        $('.show_password').on("click", function () {
+            var target = $(this).attr('rel');
+            if ($(this).prop('checked')) {
+                $('#' + target).attr('type', 'text');
+            } else {
+                $('#' + target).attr('type', 'password');
+            }
+        });
 
-            $('.show_password').on("click",function(){
-                var target=$(this).attr('rel');
-                if ($(this).prop('checked')){
-                    $('#'+target).attr('type','text');
-                } else {
-                    $('#'+target).attr('type','password');
+        $('.submit_btn').on('click', function () {
+            $.blockUI({
+                message: '<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
+                css: {
+                    border: 'none',
+                    padding: '15px',
+                    backgroundColor: '#000',
+                    '-webkit-border-radius': '10px',
+                    '-moz-border-radius': '10px',
+                    opacity: .5,
+                    color: '#fff'
                 }
             });
+        });
 
-            $('.submit_btn').on('click',function(){
-                $.blockUI({
-                    message:'<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
-                    css: {
-                        border: 'none',
-                        padding: '15px',
-                        backgroundColor: '#000',
-                        '-webkit-border-radius': '10px',
-                        '-moz-border-radius': '10px',
-                        opacity: .5,
-                        color: '#fff'
-                    } });
-            });
-
-            var options = ['nauta.com.cu','nauta.co.cu'];
-            $("input.user-domain").mailtip({
-                mails: options,
-                offsetTop: 2
-            });
-            
+        var options = ['nauta.com.cu', 'nauta.co.cu'];
+        $("input.user-domain").mailtip({
+            mails: options,
+            offsetTop: 2
         });
-    </script>
-    <script type="text/javascript">toastr.error('<ul><li class="msg_error">Usuario desconocido o contraseña incorrecta</li></ul>');</script>    
 
-<div class="material-tooltip" id="960257b0-2cad-d202-dcc3-ac620f4997d6"><span>English</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="0c77f74a-160b-af90-9a06-f7351070bf9a"><span>Información de contacto</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="fdcc6acb-fcfc-e03a-68f7-ffc5dee11e91"><span>Recargar o refrescar el código captcha</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="79f4b6e6-7ba3-7e37-a882-e9fd68dde9db"><span>Ayuda sobre el código captcha</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="hiddendiv common"></div></body></html>
\ No newline at end of file
+    });
+</script>
+<script
+    type="text/javascript">toastr.error('<ul><li class="msg_error">Usuario desconocido o contraseña incorrecta</li></ul>');</script>
\ No newline at end of file
diff --git a/test/assets/login_page.html b/test/assets/login_page.html
old mode 100644
new mode 100755
index 146901b..5ef6b39
--- a/test/assets/login_page.html
+++ b/test/assets/login_page.html
@@ -1,135 +1,1 @@
-<!DOCTYPE html>
-<html lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
-    <!-- CSS  -->
-
-    <link rel="shortcut icon" type="images/x-icon" href="https://www.portal.nauta.cu/media/img/nauta.gif">
-    <title>Portal de usuario</title>
-    <meta name="keywords" content="">
-    <meta name="description" content="">
-    <meta name="copyright" content="">
-    <script type="text/javascript">
-        var url_base = 'https://www.portal.nauta.cu/';
-    </script>
-    <link type="text/css" href="login_page_files/page-center.css" rel="stylesheet" media=""><link type="text/css" href="login_page_files/icon.css" rel="stylesheet" media=""><link type="text/css" href="login_page_files/materialize.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="login_page_files/toastr.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="login_page_files/mailtip.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="login_page_files/style.css" rel="stylesheet" media="screen,projection"></head>
-<body class="orange">
-    <div class="fixed-action-btn" style="bottom: 45px; right: 24px;">
-    <a class="btn-floating btn-large red">
-        <i class="mdi-content-add"></i>
-    </a>
-    <ul>
-        <li><a class="btn-floating green tooltipped" data-position="left" data-delay="50" href="https://www.portal.nauta.cu/nauta/change_lang/en-en" data-tooltip="English" data-tooltip-id="00fa202e-ea01-38c1-d895-2d4ae0cd748b"><i class="mdi-action-language small"></i></a></li>
-        <li><a class="contact_info btn-floating blue tooltipped" data-position="left" data-delay="50" data-tooltip="Información de contacto" href="https://www.portal.nauta.cu/nauta/contact_info" data-tooltip-id="325b01cb-1b57-5ebb-f5c5-7dc877540710"><i class="mdi-communication-quick-contacts-dialer"></i></a></li>
-    </ul>
-</div>
-    <div class="row" id="login-page">
-    <div class="col s12 z-depth-4 card-panel">
-        <p class="center"><a href="#"><img src="login_page_files/nauta_login.png">
-            </a></p>
-        <form class="login-form" name="login" method="post" autocomplete="off">
-            <input type="hidden" name="csrf" value="security628645155dcb3">            <div class="row">
-                <div class="col s12 center">
-                    <p class="title-blue center" style="margin-top: 0; margin-bottom: 10px;">Portal de usuario</p>
-                </div>
-            </div>
-            <div class="row">
-              <div class="col s12 center">
-                    <p class="center"><a href="http://www.etecsa.cu/images/cu.sld.COVID_19_InfoCU-v3.apk">Descargue aqui APK .COVID_19.</a></p>
-              </div>
-            </div>
-
-            <div class="row margin">
-                <div class="input-field col s12">
-                    <i class="mdi-social-person-outline prefix"></i>
-                    <input type="text" id="username" name="login_user" maxlength="46" class="user-domain" autocomplete="off"><ul class="ui-mailtip" style="display: none; float: none; position: absolute; margin: 0px; padding: 0px; z-index: 10; top: 39px; left: 45px; width: auto; min-width: 224px;"></ul>
-                    <label class="center-align" for="username">Usuario</label>
-                </div>
-            </div>
-            <div class="row margin">
-                <div class="input-field col s12">
-                    <i class="mdi-action-lock-outline prefix"></i>
-                    <input type="password" id="password" name="password_user" maxlength="20">
-                    <label for="password" class="">Contraseña</label>
-                    <p>
-                        <input type="checkbox" id="show_pass" class="show_password" rel="password">
-                        <label for="show_pass">Mostrar contraseña</label>
-                    </p>
-                </div>
-            </div>
-                            <div class="row margin">
-                    <div class="input-field col s12">
-                        <i class="mdi-image-blur-on prefix"></i>
-                        <input type="text" id="captcha" name="captcha" style="margin-bottom: 1px;">
-                        <label for="captcha" class="">Código Captcha</label>
-                        <div id="captcha-content" style="margin-left: 3rem;">
-                            <div id="captcha-code">
-                                <img src="login_page_files/a.png" class="captcha" width="189" height="97">
-                                <div class="right">
-                                    <a class="btn-floating waves-effect waves-light green right tooltipped" id="captcha_refresh" data-position="left" data-delay="50" data-tooltip="Recargar o refrescar el código captcha" title="Recargar o refrescar el código captcha" data-tooltip-id="b2c4bf5a-2c72-c91d-eb07-8968bd72f9bc">
-                                        <i class="mdi-navigation-refresh left"></i></a>
-                                    <br>
-                                    <a class="btn-floating waves-effect waves-light right blue-grey darken-1 tooltipped help" data-position="left" data-delay="50" data-tooltip="Ayuda sobre el código captcha" title="Ayuda sobre el código captcha" href="https://www.portal.nauta.cu/captchagidess/help/" data-tooltip-id="872567c3-d879-0663-878c-2562992505f6">
-                                        <i class="material-icons left">help_outline</i></a>
-                                </div>
-                            </div>
-                            <div class="captcha-not-load hide red-text text-accent-2"><span class="center-align">Imagen Captcha no cargada. Intente recargarla.</span></div>
-                        </div>
-                    </div>
-                </div>
-                            <div class="row">
-                <div class="input-field col s8 offset-s2">
-                    <button name="btn_submit" class="submit_btn btn waves-effect waves-light col s12 blue darken-4">Aceptar</button>
-                </div>
-            </div>
-        </form>
-    </div>
-</div>
-    <div id="contact_info_box"></div>
-    <script type="text/javascript" src="login_page_files/jquery-2.js"></script><script type="text/javascript" src="login_page_files/materialize.js"></script><script type="text/javascript" src="login_page_files/jquery_002.js"></script><script type="text/javascript" src="login_page_files/toastr.js"></script><script type="text/javascript" src="login_page_files/jquery.js"></script><script type="text/javascript" src="login_page_files/init.js"></script><script type="text/javascript" src="login_page_files/captcha.js"></script>    <script type="text/javascript">
-        window.toastr.options = {
-            timeOut: 10000
-        }
-        $(function(){
-            $('.contact_info, .help').on("click",function(e){
-                console.log($(this).attr('href'));
-                e.preventDefault();
-                $("#contact_info_box").load($(this).attr('href'));
-
-            });
-
-
-            $('.show_password').on("click",function(){
-                var target=$(this).attr('rel');
-                if ($(this).prop('checked')){
-                    $('#'+target).attr('type','text');
-                } else {
-                    $('#'+target).attr('type','password');
-                }
-            });
-
-            $('.submit_btn').on('click',function(){
-                $.blockUI({
-                    message:'<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
-                    css: {
-                        border: 'none',
-                        padding: '15px',
-                        backgroundColor: '#000',
-                        '-webkit-border-radius': '10px',
-                        '-moz-border-radius': '10px',
-                        opacity: .5,
-                        color: '#fff'
-                    } });
-            });
-
-            var options = ['nauta.com.cu','nauta.co.cu'];
-            $("input.user-domain").mailtip({
-                mails: options,
-                offsetTop: 2
-            });
-            
-        });
-    </script>
-        
-
-<div class="material-tooltip" id="00fa202e-ea01-38c1-d895-2d4ae0cd748b"><span>English</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="325b01cb-1b57-5ebb-f5c5-7dc877540710"><span>Información de contacto</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="b2c4bf5a-2c72-c91d-eb07-8968bd72f9bc"><span>Recargar o refrescar el código captcha</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="872567c3-d879-0663-878c-2562992505f6"><span>Ayuda sobre el código captcha</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="hiddendiv common"></div></body></html>
\ No newline at end of file
+<input type="hidden" name="csrf" value="security628645155dcb3">
\ No newline at end of file
diff --git a/test/assets/login_page_nauta.html b/test/assets/login_page_nauta.html
old mode 100644
new mode 100755
index 5c12c61..5c9db74
--- a/test/assets/login_page_nauta.html
+++ b/test/assets/login_page_nauta.html
@@ -1,181 +1,34 @@
-
-
-
-
-
-
-
-
-
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-	<head>
-		<title>Bienvenido</title>
-		<meta http-equiv="content-type" content="text/html; charset=UTF-8">
-		<meta http-equiv="pragma" content="no-cache">
-		<meta http-equiv="cache-control" content="no-store">
-		<meta http-equiv="expires" content="0">
-		<meta http-equiv="keywords" content=" ">
-		<meta http-equiv="description" content=" ">
-		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-		<link href="/nauta_etecsa/LoginURL/css/wifi.css" rel="stylesheet" type="text/css">
-		<link href="/nauta_etecsa/LoginURL/css/form.css" rel="stylesheet" type="text/css">
-		<script type="text/javascript" src="/nauta_etecsa/LoginURL/js/jquery.js"></script>
-		<script type='text/javascript' src='/nauta_etecsa/LoginURL/js/jsLocale_es_ES.js'></script>
-		<script type='text/javascript'>
-		var pwdRegExp=  new RegExp("^[A-Za-z0-9\-_^`~!#$%*()+=\{\}/@,.;:|?&\\[\\]]{6,16}$", '');
-		</script>
-	</head>
-
-<body>
-	<div id="header">
-		<img src="/nauta_etecsa/LoginURL/images/nauta_wifi.jpg" id="logo_nauta">
-		<img src="/nauta_etecsa/LoginURL/images/etecsa.jpg" id="logo_etecsa">
+<form class="form" action="https://secure.etecsa.net:8443//LoginServlet" method="post" id="formulario">
+	<input type="hidden" name="wlanuserip" id="wlanuserip" value="10.190.20.96" />
+	<input type="hidden" name="wlanacname" id="wlanacname" value="" />
+	<input type="hidden" name="wlanmac" id="wlanmac" value="" />
+	<input type="hidden" name="firsturl" id="firsturl" value="notFound.jsp" />
+	<input type="hidden" name="ssid" id="ssid" value="" />
+	<input type="hidden" name="usertype" id="usertype" value="" />
+	<input type="hidden" name="gotopage" id="gotopage" value="/nauta_etecsa/LoginURL/pc_login.jsp" />
+	<input type="hidden" name="successpage" id="successpage" value="/nauta_etecsa/OnlineURL/pc_index.jsp" />
+	<input type="hidden" name="loggerId" id="loggerId" value="20191122040338386" />
+	<input type="hidden" name="lang" id="lang" value="es_ES" />
+	<label for="nombre">Usuario:</label> <input name="username" id="username" maxlength="253" class="input_text cred"
+		type="text">
+	<br class="clearfloat">
+	<!-- [false alarm:Privacy Violation: Password] -->
+	<label for="uri">Contraseña:</label> <input name="password" id="password" class="input_text cred" value=""
+		type="password" autocomplete="off">
+	<br class="clearfloat">
+
+	<label for=""></label>
+	<input class="btn" name="Enviar" value='Aceptar' type="button" onclick="checkLogin();">
+	<input class="btn" name="cancel" value='Cancelar' type="reset">
+	<input class="btn" name="ayuda" value='Ayuda' style="/*display:none;*/" onclick="help();" type="button">
+	<br class="clearfloat">
+
+	<div class="vnc" style="text-align: center;">
+		<a href="#" onclick="termsofuse()">Condiciones de uso</a>
+		<a href="https://www.portal.nauta.cu/user/login" target="_blank">Portal de Usuario</a>
+		<a onclick="sendUserInfoForm();" href="#">Información de usuario</a>
 	</div>
-
-	<div id="contenedor">
-
-
-
-
-
-
-
-
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<script type='text/javascript' src='/nauta_etecsa/LoginURL/js/validate.js'></script>
-<script type='text/javascript'>
-	var currentURL = new RegExp("//nauta_etecsa/LoginURL/pc_login.jsp");
-</script>
-<header>
-	<img src="/nauta_etecsa/LoginURL/images/contenedor_bg.jpg" id="bg">
-
-	<ul id="menu_lang" class="clearfix">
-		<li class="sel"id="es_ESsel"><a href="#" onclick="javascript:switchLang('es_ES')">Español</a></li>
-		<li class=""id="en_USsel"><a href="#" onclick="javascript:switchLang('en_US')">English</a></li>
-	</ul>
-	<form id="changelang" action="#" method="post">
-	    <input type="hidden" value="" id="lang" name="lang"/>
-	    <input type="hidden" value="" id="currentURL" name="currentURL"/>
-	<input type='hidden' name='CSRFHW' value='1fe3ee0634195096337177a0994723fb' /></form>
-</header>
-		<div id="int" style="width:500px;">
-	<div class="blq">
-		<div class="title">Bienvenido</div>
-
-		<div class="blq_int clearfix">
-                        <div style="margin-top:5px;text-align:center; font-size:11px;">
-				<div id="tarifa" style="margin-top: 5px;text-align: center;font-size: 11px;">
-					<div id="tarifa_container" style="width: 50%;text-align: left;margin: auto;">
-					</div>
-				</div>
-			</div>
-                        <a href="https://www.portal.nauta.cu/data/files/BOLETIN_H-B_Final.pdf" target="_blank">Descargue aquí Información básica sobre la Ley Helms Burton y su título III</a>
-			<form class="form" action="https://secure.etecsa.net:8443//LoginServlet" method="post" id="formulario">
-				<input type="hidden" name="wlanuserip" id="wlanuserip" value="10.190.20.96"/>
-	            <input type="hidden" name="wlanacname" id="wlanacname" value=""/>
-	            <input type="hidden" name="wlanmac" id="wlanmac" value="" />
-	            <input type="hidden" name="firsturl" id="firsturl" value="notFound.jsp" />
-				<input type="hidden" name="ssid" id="ssid" value="" />
-				<input type="hidden" name="usertype" id="usertype" value="" />
-				<input type="hidden" name="gotopage" id="gotopage" value="/nauta_etecsa/LoginURL/pc_login.jsp" />
-				<input type="hidden" name="successpage" id="successpage" value="/nauta_etecsa/OnlineURL/pc_index.jsp" />
-				<input type="hidden" name="loggerId" id="loggerId" value="20191122040338386" />
-				<input type="hidden" name="lang" id="lang" value="es_ES" />
-				<label for="nombre">Usuario:</label> <input name="username" id="username" maxlength="253" class="input_text cred" type="text">
-				<br class="clearfloat">
-				<!-- [false alarm:Privacy Violation: Password] -->
-				<label for="uri">Contraseña:</label> <input name="password" id="password" class="input_text cred" value="" type="password" autocomplete="off">
-				<br class="clearfloat">
-
-				<label for=""></label>
-                 <input class="btn" name="Enviar" value='Aceptar' type="button" onclick="checkLogin();">
-                 <input class="btn" name="cancel" value='Cancelar' type="reset">
-                 <input class="btn" name="ayuda" value='Ayuda' style="/*display:none;*/" onclick="help();" type="button">
-				<br class="clearfloat">
-
-				<div class="vnc" style="text-align: center;">
-					<a href="#" onclick="termsofuse()">Condiciones de uso</a>
-                                        <a href="https://www.portal.nauta.cu/user/login" target="_blank">Portal de Usuario</a>
-					<a onclick="sendUserInfoForm();" href="#">Información de usuario</a>
-				</div>
-				<br class="clearfloat">
-			<input type='hidden' name='CSRFHW' value='1fe3ee0634195096337177a0994723fb' /></form>
-		</div>
-	</div>
-</div>
-
-<script type="text/javascript">
-
-function termsofuse()
-{
-    $('#formulario').attr('action', '/nauta_etecsa/LoginURL/pc/pc_termsofuse.jsp');
-	$('#formulario').submit();
-}
-
-/*function sendLoginForm(){
-	var url = '/index.php?r=ac/login';
-	$('#formulario').attr('action', url);
-	$('#formulario').submit();
-}*/
-
-function sendUserInfoForm(){
-	var url = '/EtecsaQueryServlet';
-	var b = $$("username");
-	var a = $$("password");
-	if (b == null || b.value == "") {
-		alert(JSLocale.username_null);
-		b.focus();
-		return false;
-	}
-	if (a == null || a.value == "") {
-		alert(JSLocale.pwd_null);
-		a.focus();
-		return false;
-	}
-	$('#formulario').attr('action', url);
-	$('#formulario').submit();
-}
-
-
-function help(){
-    $('#formulario').attr('action', '/nauta_etecsa/LoginURL/pc/pc_help.jsp');
-	$('#formulario').submit();
-}
-
-
-/*$(document).ready(function() {
-
-	$('#password').keypress(function(e){
-	   if (e.keyCode == 13)
-		  sendLoginForm();
-	});
-
-
-});*/
-/*$(document).ready(function(){
-
-
-    if(window.parent){
-        window.close();
-    }
-
-});*/
-</script>	</div>
-<div id="banner_promos" style="margin-top:40px;">
-		<ul style="text-align:center;list-style-type: none;margin: 0;padding: 0;">
-			<li style="display:inline;margin-right:20px;"><img src="/nauta_etecsa/LoginURL/images/CUBADEBATE.jpg" style="border-radius: 6px;height: 68px;" id="promo"></li>
-			<li style="display:inline;margin-right:20px;"><img src="/nauta_etecsa/LoginURL/images/CUBAEDUCA.jpg" style="border-radius: 6px;height: 68px;" id="promo"></li>
-			<li style="display:inline;margin-right:20px;"><img src="/nauta_etecsa/LoginURL/images/CUBARTE.jpg" style="border-radius: 6px;height: 68px;" id="promo"></li>
-			<li style="display:inline;margin-right:20px;"><img src="/nauta_etecsa/LoginURL/images/CUBASI.jpg" style="border-radius: 6px;height: 68px;" id="promo"></li>
-			<li style="display:inline;margin-right:20px;"><img src="/nauta_etecsa/LoginURL/images/ECURED.jpg" style="border-radius: 6px;height: 68px;" id="promo"></li>
-			<li style="display:inline;margin-right:20px;"><img src="/nauta_etecsa/LoginURL/images/OFERTAS.jpg" style="border-radius: 6px;height: 68px;" id="promo"></li>
-			<li style="display:inline;margin-right:20px;"><img src="/nauta_etecsa/LoginURL/images/PAPELETA.jpg" style="border-radius: 6px;height: 68px;" id="promo"></li>
-		</ul>
-	</div>
-
-
-</body></html>
\ No newline at end of file
+	<br class="clearfloat">
+	<input type='hidden' name='CSRFHW' value='1fe3ee0634195096337177a0994723fb' />
+</form>
+</body>
\ No newline at end of file
diff --git a/test/assets/quote_paid_list.html b/test/assets/quote_paid_list.html
new file mode 100755
index 0000000..cf468b1
--- /dev/null
+++ b/test/assets/quote_paid_list.html
@@ -0,0 +1,55 @@
+<div>
+    <table style="width:100%" class="striped bordered highlight responsive-table" cellspacing="0" cellpadding="3">
+        <thead>
+            <tr>
+                <th>Fecha</th>
+                <th>Importe</th>
+                <th>Canal</th>
+                <th>Oficina</th>
+                <th>Tipo</th>
+            </tr>
+        </thead>
+
+        <tbody>
+            <tr>
+                <td>03/12/2022 10:27:50</td>
+                <td>$300,00</td>
+                <td>Oficina Comercial</td>
+                <td>PV Sala de Navegación MTC</td>
+                <td>Pago de Cuota</td>
+            </tr>
+            <tr>
+                <td>07/01/2023 09:48:32</td>
+                <td>$300,00</td>
+                <td>Oficina Comercial</td>
+                <td>PV Sala de Navegación MTC</td>
+                <td>Pago de Cuota</td>
+            </tr>
+
+        </tbody>
+    </table>
+    <div class="right-align">
+        <ul class="pagination">
+            <li class="disabled hide-on-small-only icon">
+                <a href="/useraaa/nautahogarpaid_detail_list/2022-12/2" class="pagination-link"><i
+                        class="mdi-navigation-arrow-back small"></i></a>
+            </li>
+            <li class="disabled hide-on-small-only icon">
+                <a href="/useraaa/nautahogarpaid_detail_list/2022-12/2" class="pagination-link"><i
+                        class="mdi-navigation-chevron-left small"></i></a>
+            </li>
+            <li class="active"><a href="/useraaa/nautahogarpaid_detail_list/2022-12/2" class="pagination-link">1</a>
+            </li>
+            <li class="disabled hide-on-small-only icon">
+                <a href="/useraaa/nautahogarpaid_detail_list/2022-12/2" class="pagination-link"><i
+                        class="mdi-navigation-chevron-right small"></i></a>
+            </li>
+            <li class="disabled  hide-on-small-only icon">
+                <a href="/useraaa/nautahogarpaid_detail_list/2022-12/2" class="pagination-link"><i
+                        class="mdi-navigation-arrow-forward small"></i></a>
+            </li>
+            <li class="hide-on-med-and-down"><span class="">2 Registros</span></li>
+            <li class="hide-on-med-and-down"><span class="">1 Páginas</span></li>
+        </ul>
+    </div>
+</div>
\ No newline at end of file
diff --git a/test/assets/quotes_paid_summary.html b/test/assets/quotes_paid_summary.html
new file mode 100755
index 0000000..7255fd4
--- /dev/null
+++ b/test/assets/quotes_paid_summary.html
@@ -0,0 +1,22 @@
+<div class="container" id="content">
+    <div class="row">
+        <div class="col s12 m6 l4">
+            <div class="card">
+                <div class="card-content orange darken-2 white-text">
+                    <div class="card-stats-title"><i class="mdi-action-swap-vert small"></i> Pagos realizados</div>
+                    <h5 class="card-stats-number">2</h5>
+                    <input type="hidden" name="count" value="2">
+                    <input type="hidden" name="year_month_selected" value="2022-12">
+                </div>
+            </div>
+        </div>
+        <div class="col s12 m6 l4">
+            <div class="card">
+                <div class="card-content teal darken-1 white-text">
+                    <div class="card-stats-title"><i class="mdi-editor-attach-money small"></i> Importe Total</div>
+                    <h5 class="card-stats-number">$600,00</h5>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/test/assets/recharge_action.html b/test/assets/recharge_action.html
old mode 100644
new mode 100755
index 9ad57f1..500be3f
--- a/test/assets/recharge_action.html
+++ b/test/assets/recharge_action.html
@@ -1,176 +1,1 @@
-<!DOCTYPE html>
-<html lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
-    <!-- CSS  -->
-
-    <link rel="shortcut icon" type="images/x-icon" href="https://www.portal.nauta.cu/media/img/nauta.gif">
-    <title>nauta. Recargar cuenta</title>
-    <meta name="keywords" content="">
-    <meta name="description" content="">
-    <meta name="copyright" content="">
-    <script type="text/javascript">
-        var url_base = 'https://www.portal.nauta.cu/';
-    </script>
-    <link type="text/css" href="recharge_action_files/icon.css" rel="stylesheet" media=""><link type="text/css" href="recharge_action_files/materialize.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="recharge_action_files/toastr.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="recharge_action_files/mailtip.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="recharge_action_files/style.css" rel="stylesheet" media="screen,projection"></head>
-<body>
-    <header>
-    <div class="navbar-fixed">
-        <nav class="orange" role="navigation">
-            <div class="nav-wrapper">
-                <div class="left paralelogramo hide-on-med-and-down"><img class="etecsa-logo responsive-img" src="recharge_action_files/etecsa-logo-blanco50x50.png">
-                </div>
-                <a id="logo-container" href="#" class="brand-logo"><img class="nauta-logo" src="recharge_action_files/logo-nauta-45.png">
-                </a>
-                <span class="hide-on-med-and-down title-blue title-portal">Portal de usuario</span>
-
-                <ul class="right hide-on-med-and-down">
-                    <li>
-                        <a class="tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/nauta/change_lang/en-en" data-tooltip="English" data-tooltip-id="15706865-989a-4e49-f786-329398a29941"><i class="mdi-action-language small"></i></a>                    </li>
-                    <li>
-                        <a class="tooltipped contact_info" data-position="bottom" data-delay="50" data-tooltip="Información de contacto" href="https://www.portal.nauta.cu/nauta/contact_info" data-tooltip-id="2c87897f-b1d2-55f6-4e05-8331f68f13b9">
-                            <i class="mdi-communication-quick-contacts-dialer"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a class="help tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/help/general" data-tooltip="Ayuda" data-tooltip-id="ede97d15-f005-2680-6601-86d0d8009944">
-                            <i class="mdi-action-help"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a href="https://www.portal.nauta.cu/user/logout" class="tooltipped" data-position="bottom" data-delay="50" data-tooltip="Salir" data-tooltip-id="43496ac1-d776-e8f6-a3e1-7ea42f74534e"><i class="mdi-content-clear"></i></a>
-                    </li>
-                </ul>
-                                <ul id="nav-mobile" class="side-nav" style="left: -250px;">
-                    <li class="center-align etecsa-grey"><img src="recharge_action_files/logo-etecsa_2.png" class="responsive-img etecsa-logo-2"></li>
-                    <li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/user_info"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class="no-padding active"><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/recharge_account"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Cambiar contraseña<i class="mdi-action-lock-open"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Detalle de operaciones<i class="mdi-action-view-list"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Transferir saldo<i class="mdi-action-input"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul></div></li></ul></li>                    <li class="separator etecsa-blue-text"></li>
-                    <li class="no-padding etecsa-blue-text"><a class="collapsible-header" href="https://www.portal.nauta.cu/nauta/change_lang/en-en"><i class="mdi-action-language small"></i><span>English</span></a></li>
-                    <li class="no-padding"><a class="contact_info collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/nauta/contact_info"><i class="mdi-communication-quick-contacts-dialer small"></i><span>Información de contacto</span></a>
-                    </li>
-                    <li class="no-padding"><a class="help collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/help/general"><i class="mdi-action-help small"></i><span>Ayuda</span></a></li>
-                    <li class="no-padding"><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/user/logout"><i class="mdi-content-clear small"></i><span>Salir</span></a></li>
-                </ul>
-                <a href="#" data-activates="nav-mobile" class="button-collapse"><i class="mdi-navigation-menu"></i></a>
-            </div>
-        </nav>
-        <nav class="white hide-on-med-and-down" id="icon-nav">
-            <div class="nav-wrapper">
-                <ul class="right hide-on-med-and-down">
-                    <li class=""><a href="https://www.portal.nauta.cu/useraaa/user_info" class="etecsa-blue-text"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class="active"><a href="https://www.portal.nauta.cu/useraaa/recharge_account" class="etecsa-blue-text"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_change_password_group"><i class="mdi-action-lock-open"></i><span>Cambiar contraseña<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_change_password_group" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_detail"><i class="mdi-action-view-list"></i><span>Detalle de operaciones<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_detail" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_transfer"><i class="mdi-action-input"></i><span>Transferir saldo<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_transfer" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul>
-                        </li>                </ul>
-            </div>
-        </nav>
-    </div>
-
-</header>
-    <div id="content" class="container"><div class="row">
-	<div class="col s12">
-		<h3>Recargar cuenta</h3>
-		<p class="sub-title">Permite recargar su cuenta de acceso mediante los cupones de recarga</p>
-	</div>
-</div>
-<div class="row">
-	<div class="card-panel">
-		<div class="row">
-			<div class="col s12">
-				<h5>Saldo actual</h5>
-				<p>$32,59 CUP</p>
-				<blockquote>Raspe la cubierta del código de recarga que aparece en el reverso del cupón</blockquote>
-			</div>
-			<form name="recharge_acount" id="recharge_acount" method="post" class="col s12">
-				<input type="hidden" name="csrf" value="security628cd034d2f3e">				<div class="row margin">
-					<div class="input-field col s12 m6">
-						<i class="mdi-action-view-column prefix"></i>
-						<input type="text" id="recharge_code" name="recharge_code" maxlength="16" length="16" class="active" placeholder="0000000000000000" autocomplete="off">
-						<label class="center-align active" for="recharge_code">Teclee el código de recarga </label>
-					<span class="character-counter" style="float: right; font-size: 12px; height: 1px;"></span></div>
-				</div>
-				<div class="row">
-					<div class="input-field col s12">
-						<button name="btn_submit" type="submit" class="submit_btn btn waves-effect waves-light blue darken-4">
-							Aceptar						</button>
-					</div>
-				</div>
-			</form>
-		</div>
-	</div>
-</div>
-</div>    <div id="contact_info_box"></div>
-    <footer class="page-footer white grey-text text-darken-4">
-    <hr>
-    <div class="container">
-        <div class="row center">
-            <div class="col s12">
-                <p>© 2011 Empresa de Telecomunicaciones de Cuba S. A. (ETECSA). Todos los derechos reservados</p>
-                <p><a class="etecsa-blue-text" href="http://www.etecsa.cu/">www.etecsa.cu</a></p>
-            </div>
-        </div>
-    </div>
-    <div class="hidden" id="ajax-messages" data-ajax-connection-error="Existe un error de conexión de red. Puede ser que usted se haya desconectado de la red o el servicio se haya caido."></div>
-</footer><script type="text/javascript" src="recharge_action_files/jquery-2.js"></script><script type="text/javascript" src="recharge_action_files/materialize.js"></script><script type="text/javascript" src="recharge_action_files/jquery_003.js"></script><script type="text/javascript" src="recharge_action_files/toastr.js"></script><script type="text/javascript" src="recharge_action_files/jquery.js"></script><script type="text/javascript" src="recharge_action_files/init.js"></script><script type="text/javascript" src="recharge_action_files/msgpool.js"></script><script type="text/javascript" src="recharge_action_files/recharge_account.js"></script><script type="text/javascript" src="recharge_action_files/jquery_002.js"></script>    <script type="text/javascript">
-        window.toastr.options = {
-            timeOut: 10000
-        }
-        $(function(){
-            $('.contact_info, .help').on("click",function(e){
-                console.log($(this).attr('href'));
-                e.preventDefault();
-                $("#contact_info_box").load($(this).attr('href'));
-
-            });
-
-
-            $('.show_password').on("click",function(){
-                var target=$(this).attr('rel');
-                if ($(this).prop('checked')){
-                    $('#'+target).attr('type','text');
-                } else {
-                    $('#'+target).attr('type','password');
-                }
-            });
-
-            $('.submit_btn').on('click',function(){
-                $.blockUI({
-                    message:'<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
-                    css: {
-                        border: 'none',
-                        padding: '15px',
-                        backgroundColor: '#000',
-                        '-webkit-border-radius': '10px',
-                        '-moz-border-radius': '10px',
-                        opacity: .5,
-                        color: '#fff'
-                    } });
-            });
-
-            var options = ['nauta.com.cu','nauta.co.cu'];
-            $("input.user-domain").mailtip({
-                mails: options,
-                offsetTop: 2
-            });
-            
-        });
-    </script>
-        
-
-<div class="material-tooltip" id="15706865-989a-4e49-f786-329398a29941"><span>English</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="2c87897f-b1d2-55f6-4e05-8331f68f13b9"><span>Información de contacto</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="ede97d15-f005-2680-6601-86d0d8009944"><span>Ayuda</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="43496ac1-d776-e8f6-a3e1-7ea42f74534e"><span>Salir</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="hiddendiv common"></div><div class="drag-target" style="left: 0px; touch-action: pan-y;"></div></body></html>
\ No newline at end of file
+<input type="hidden" name="csrf" value="security628cd034d2f3e">
\ No newline at end of file
diff --git a/test/assets/recharge_action_fail.html b/test/assets/recharge_action_fail.html
old mode 100644
new mode 100755
index 8557e6a..2b034ed
--- a/test/assets/recharge_action_fail.html
+++ b/test/assets/recharge_action_fail.html
@@ -1,176 +1,56 @@
-<!DOCTYPE html>
-<html lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
-    <!-- CSS  -->
+<script type="text/javascript" src="recharge_action_fail_files/jquery-2.js"></script>
+<script type="text/javascript" src="recharge_action_fail_files/materialize.js"></script>
+<script type="text/javascript" src="recharge_action_fail_files/jquery_003.js"></script>
+<script type="text/javascript" src="recharge_action_fail_files/toastr.js"></script>
+<script type="text/javascript" src="recharge_action_fail_files/jquery.js"></script>
+<script type="text/javascript" src="recharge_action_fail_files/init.js"></script>
+<script type="text/javascript" src="recharge_action_fail_files/msgpool.js"></script>
+<script type="text/javascript" src="recharge_action_fail_files/recharge_account.js"></script>
+<script type="text/javascript" src="recharge_action_fail_files/jquery_002.js"></script>
+<script type="text/javascript">
+    window.toastr.options = {
+        timeOut: 10000
+    }
+    $(function () {
+        $('.contact_info, .help').on("click", function (e) {
+            console.log($(this).attr('href'));
+            e.preventDefault();
+            $("#contact_info_box").load($(this).attr('href'));
 
-    <link rel="shortcut icon" type="images/x-icon" href="https://www.portal.nauta.cu/media/img/nauta.gif">
-    <title>nauta. Recargar cuenta</title>
-    <meta name="keywords" content="">
-    <meta name="description" content="">
-    <meta name="copyright" content="">
-    <script type="text/javascript">
-        var url_base = 'https://www.portal.nauta.cu/';
-    </script>
-    <link type="text/css" href="recharge_action_fail_files/icon.css" rel="stylesheet" media=""><link type="text/css" href="recharge_action_fail_files/materialize.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="recharge_action_fail_files/toastr.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="recharge_action_fail_files/mailtip.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="recharge_action_fail_files/style.css" rel="stylesheet" media="screen,projection"></head>
-<body>
-    <header>
-    <div class="navbar-fixed">
-        <nav class="orange" role="navigation">
-            <div class="nav-wrapper">
-                <div class="left paralelogramo hide-on-med-and-down"><img class="etecsa-logo responsive-img" src="recharge_action_fail_files/etecsa-logo-blanco50x50.png">
-                </div>
-                <a id="logo-container" href="#" class="brand-logo"><img class="nauta-logo" src="recharge_action_fail_files/logo-nauta-45.png">
-                </a>
-                <span class="hide-on-med-and-down title-blue title-portal">Portal de usuario</span>
-
-                <ul class="right hide-on-med-and-down">
-                    <li>
-                        <a class="tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/nauta/change_lang/en-en" data-tooltip="English" data-tooltip-id="153d379b-1099-f78d-75a0-17780df65e26"><i class="mdi-action-language small"></i></a>                    </li>
-                    <li>
-                        <a class="tooltipped contact_info" data-position="bottom" data-delay="50" data-tooltip="Información de contacto" href="https://www.portal.nauta.cu/nauta/contact_info" data-tooltip-id="51f2dd59-90a0-90d3-5ae0-3e7cf463d8e2">
-                            <i class="mdi-communication-quick-contacts-dialer"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a class="help tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/help/general" data-tooltip="Ayuda" data-tooltip-id="e05d9611-4b06-eb85-1511-410c5edb1d5c">
-                            <i class="mdi-action-help"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a href="https://www.portal.nauta.cu/user/logout" class="tooltipped" data-position="bottom" data-delay="50" data-tooltip="Salir" data-tooltip-id="58722a57-4800-8bf9-a965-6d8c13d0c908"><i class="mdi-content-clear"></i></a>
-                    </li>
-                </ul>
-                                <ul id="nav-mobile" class="side-nav" style="left: -250px;">
-                    <li class="center-align etecsa-grey"><img src="recharge_action_fail_files/logo-etecsa_2.png" class="responsive-img etecsa-logo-2"></li>
-                    <li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/user_info"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class="no-padding active"><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/recharge_account"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Cambiar contraseña<i class="mdi-action-lock-open"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Detalle de operaciones<i class="mdi-action-view-list"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Transferir saldo<i class="mdi-action-input"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul></div></li></ul></li>                    <li class="separator etecsa-blue-text"></li>
-                    <li class="no-padding etecsa-blue-text"><a class="collapsible-header" href="https://www.portal.nauta.cu/nauta/change_lang/en-en"><i class="mdi-action-language small"></i><span>English</span></a></li>
-                    <li class="no-padding"><a class="contact_info collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/nauta/contact_info"><i class="mdi-communication-quick-contacts-dialer small"></i><span>Información de contacto</span></a>
-                    </li>
-                    <li class="no-padding"><a class="help collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/help/general"><i class="mdi-action-help small"></i><span>Ayuda</span></a></li>
-                    <li class="no-padding"><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/user/logout"><i class="mdi-content-clear small"></i><span>Salir</span></a></li>
-                </ul>
-                <a href="#" data-activates="nav-mobile" class="button-collapse"><i class="mdi-navigation-menu"></i></a>
-            </div>
-        </nav>
-        <nav class="white hide-on-med-and-down" id="icon-nav">
-            <div class="nav-wrapper">
-                <ul class="right hide-on-med-and-down">
-                    <li class=""><a href="https://www.portal.nauta.cu/useraaa/user_info" class="etecsa-blue-text"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class="active"><a href="https://www.portal.nauta.cu/useraaa/recharge_account" class="etecsa-blue-text"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_change_password_group"><i class="mdi-action-lock-open"></i><span>Cambiar contraseña<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_change_password_group" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_detail"><i class="mdi-action-view-list"></i><span>Detalle de operaciones<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_detail" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_transfer"><i class="mdi-action-input"></i><span>Transferir saldo<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_transfer" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul>
-                        </li>                </ul>
-            </div>
-        </nav>
-    </div>
+        });
 
-</header>
-    <div id="content" class="container"><div class="row">
-	<div class="col s12">
-		<h3>Recargar cuenta</h3>
-		<p class="sub-title">Permite recargar su cuenta de acceso mediante los cupones de recarga</p>
-	</div>
-</div>
-<div class="row">
-	<div class="card-panel">
-		<div class="row">
-			<div class="col s12">
-				<h5>Saldo actual</h5>
-				<p>$13,18 CUP</p>
-				<blockquote>Raspe la cubierta del código de recarga que aparece en el reverso del cupón</blockquote>
-			</div>
-			<form name="recharge_acount" id="recharge_acount" method="post" class="col s12">
-				<input type="hidden" name="csrf" value="security628f742a8cc1a">				<div class="row margin">
-					<div class="input-field col s12 m6">
-						<i class="mdi-action-view-column prefix"></i>
-						<input type="text" id="recharge_code" name="recharge_code" maxlength="16" length="16" value="1234567890123456" class="active" placeholder="0000000000000000" autocomplete="off">
-						<label class="center-align active" for="recharge_code">Teclee el código de recarga </label>
-					<span class="character-counter" style="float: right; font-size: 12px; height: 1px;"></span></div>
-				</div>
-				<div class="row">
-					<div class="input-field col s12">
-						<button name="btn_submit" type="submit" class="submit_btn btn waves-effect waves-light blue darken-4">
-							Aceptar						</button>
-					</div>
-				</div>
-			</form>
-		</div>
-	</div>
-</div>
-</div>    <div id="contact_info_box"></div>
-    <footer class="page-footer white grey-text text-darken-4">
-    <hr>
-    <div class="container">
-        <div class="row center">
-            <div class="col s12">
-                <p>© 2011 Empresa de Telecomunicaciones de Cuba S. A. (ETECSA). Todos los derechos reservados</p>
-                <p><a class="etecsa-blue-text" href="http://www.etecsa.cu/">www.etecsa.cu</a></p>
-            </div>
-        </div>
-    </div>
-    <div class="hidden" id="ajax-messages" data-ajax-connection-error="Existe un error de conexión de red. Puede ser que usted se haya desconectado de la red o el servicio se haya caido."></div>
-</footer><script type="text/javascript" src="recharge_action_fail_files/jquery-2.js"></script><script type="text/javascript" src="recharge_action_fail_files/materialize.js"></script><script type="text/javascript" src="recharge_action_fail_files/jquery_003.js"></script><script type="text/javascript" src="recharge_action_fail_files/toastr.js"></script><script type="text/javascript" src="recharge_action_fail_files/jquery.js"></script><script type="text/javascript" src="recharge_action_fail_files/init.js"></script><script type="text/javascript" src="recharge_action_fail_files/msgpool.js"></script><script type="text/javascript" src="recharge_action_fail_files/recharge_account.js"></script><script type="text/javascript" src="recharge_action_fail_files/jquery_002.js"></script>    <script type="text/javascript">
-        window.toastr.options = {
-            timeOut: 10000
-        }
-        $(function(){
-            $('.contact_info, .help').on("click",function(e){
-                console.log($(this).attr('href'));
-                e.preventDefault();
-                $("#contact_info_box").load($(this).attr('href'));
-
-            });
 
+        $('.show_password').on("click", function () {
+            var target = $(this).attr('rel');
+            if ($(this).prop('checked')) {
+                $('#' + target).attr('type', 'text');
+            } else {
+                $('#' + target).attr('type', 'password');
+            }
+        });
 
-            $('.show_password').on("click",function(){
-                var target=$(this).attr('rel');
-                if ($(this).prop('checked')){
-                    $('#'+target).attr('type','text');
-                } else {
-                    $('#'+target).attr('type','password');
+        $('.submit_btn').on('click', function () {
+            $.blockUI({
+                message: '<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
+                css: {
+                    border: 'none',
+                    padding: '15px',
+                    backgroundColor: '#000',
+                    '-webkit-border-radius': '10px',
+                    '-moz-border-radius': '10px',
+                    opacity: .5,
+                    color: '#fff'
                 }
             });
+        });
 
-            $('.submit_btn').on('click',function(){
-                $.blockUI({
-                    message:'<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
-                    css: {
-                        border: 'none',
-                        padding: '15px',
-                        backgroundColor: '#000',
-                        '-webkit-border-radius': '10px',
-                        '-moz-border-radius': '10px',
-                        opacity: .5,
-                        color: '#fff'
-                    } });
-            });
-
-            var options = ['nauta.com.cu','nauta.co.cu'];
-            $("input.user-domain").mailtip({
-                mails: options,
-                offsetTop: 2
-            });
-            
+        var options = ['nauta.com.cu', 'nauta.co.cu'];
+        $("input.user-domain").mailtip({
+            mails: options,
+            offsetTop: 2
         });
-    </script>
-    <script type="text/javascript">toastr.error('<ul><li class="msg_error">El código de recarga es incorrecto.</li></ul>');</script>    
 
-<div class="material-tooltip" id="153d379b-1099-f78d-75a0-17780df65e26"><span>English</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="51f2dd59-90a0-90d3-5ae0-3e7cf463d8e2"><span>Información de contacto</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="e05d9611-4b06-eb85-1511-410c5edb1d5c"><span>Ayuda</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="58722a57-4800-8bf9-a965-6d8c13d0c908"><span>Salir</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="hiddendiv common"></div><div class="drag-target" style="left: 0px; touch-action: pan-y;"></div></body></html>
\ No newline at end of file
+    });
+</script>
+<script
+    type="text/javascript">toastr.error('<ul><li class="msg_error">El código de recarga es incorrecto.</li></ul>');</script>
\ No newline at end of file
diff --git a/test/assets/recharge_action_successful.html b/test/assets/recharge_action_successful.html
old mode 100644
new mode 100755
index ea6611a..34d0d54
--- a/test/assets/recharge_action_successful.html
+++ b/test/assets/recharge_action_successful.html
@@ -1,176 +1,65 @@
-<!DOCTYPE html>
-<html lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
-    <!-- CSS  -->
+<script type="text/javascript" src="nauta.%20Recargar%20cuenta_files/jquery-2.js"></script>
+<script type="text/javascript" src="nauta.%20Recargar%20cuenta_files/materialize.js"></script>
+<script type="text/javascript" src="nauta.%20Recargar%20cuenta_files/jquery_003.js"></script>
+<script type="text/javascript" src="nauta.%20Recargar%20cuenta_files/toastr.js"></script>
+<script type="text/javascript" src="nauta.%20Recargar%20cuenta_files/jquery.js"></script>
+<script type="text/javascript" src="nauta.%20Recargar%20cuenta_files/init.js"></script>
+<script type="text/javascript" src="nauta.%20Recargar%20cuenta_files/msgpool.js"></script>
+<script type="text/javascript" src="nauta.%20Recargar%20cuenta_files/recharge_account.js"></script>
+<script type="text/javascript" src="nauta.%20Recargar%20cuenta_files/jquery_002.js"></script>
+<script type="text/javascript">
+    window.toastr.options = {
+        timeOut: 10000
+    }
+    $(function () {
+        $('.contact_info, .help').on("click", function (e) {
+            console.log($(this).attr('href'));
+            e.preventDefault();
+            $("#contact_info_box").load($(this).attr('href'));
 
-    <link rel="shortcut icon" type="images/x-icon" href="https://www.portal.nauta.cu/media/img/nauta.gif">
-    <title>nauta. Recargar cuenta</title>
-    <meta name="keywords" content="">
-    <meta name="description" content="">
-    <meta name="copyright" content="">
-    <script type="text/javascript">
-        var url_base = 'https://www.portal.nauta.cu/';
-    </script>
-    <link type="text/css" href="nauta.%20Recargar%20cuenta_files/icon.css" rel="stylesheet" media=""><link type="text/css" href="nauta.%20Recargar%20cuenta_files/materialize.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="nauta.%20Recargar%20cuenta_files/toastr.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="nauta.%20Recargar%20cuenta_files/mailtip.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="nauta.%20Recargar%20cuenta_files/style.css" rel="stylesheet" media="screen,projection"></head>
-<body>
-    <header>
-    <div class="navbar-fixed">
-        <nav class="orange" role="navigation">
-            <div class="nav-wrapper">
-                <div class="left paralelogramo hide-on-med-and-down"><img class="etecsa-logo responsive-img" src="nauta.%20Recargar%20cuenta_files/etecsa-logo-blanco50x50.png">
-                </div>
-                <a id="logo-container" href="#" class="brand-logo"><img class="nauta-logo" src="nauta.%20Recargar%20cuenta_files/logo-nauta-45.png">
-                </a>
-                <span class="hide-on-med-and-down title-blue title-portal">Portal de usuario</span>
-
-                <ul class="right hide-on-med-and-down">
-                    <li>
-                        <a class="tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/nauta/change_lang/en-en" data-tooltip="English" data-tooltip-id="17c2bdf5-d272-e607-d70f-63de6bd466aa"><i class="mdi-action-language small"></i></a>                    </li>
-                    <li>
-                        <a class="tooltipped contact_info" data-position="bottom" data-delay="50" data-tooltip="Información de contacto" href="https://www.portal.nauta.cu/nauta/contact_info" data-tooltip-id="af54848f-2292-0265-46c6-b7eb32c3f23e">
-                            <i class="mdi-communication-quick-contacts-dialer"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a class="help tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/help/general" data-tooltip="Ayuda" data-tooltip-id="62ad97cd-a177-a51b-641d-e001c6007c28">
-                            <i class="mdi-action-help"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a href="https://www.portal.nauta.cu/user/logout" class="tooltipped" data-position="bottom" data-delay="50" data-tooltip="Salir" data-tooltip-id="8d0cc5a4-e9f2-0a46-c4fb-4a4083c23044"><i class="mdi-content-clear"></i></a>
-                    </li>
-                </ul>
-                                <ul id="nav-mobile" class="side-nav" style="left: -250px;">
-                    <li class="center-align etecsa-grey"><img src="nauta.%20Recargar%20cuenta_files/logo-etecsa_2.png" class="responsive-img etecsa-logo-2"></li>
-                    <li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/user_info"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class="no-padding active"><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/recharge_account"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Cambiar contraseña<i class="mdi-action-lock-open"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Detalle de operaciones<i class="mdi-action-view-list"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Transferir saldo<i class="mdi-action-input"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul></div></li></ul></li>                    <li class="separator etecsa-blue-text"></li>
-                    <li class="no-padding etecsa-blue-text"><a class="collapsible-header" href="https://www.portal.nauta.cu/nauta/change_lang/en-en"><i class="mdi-action-language small"></i><span>English</span></a></li>
-                    <li class="no-padding"><a class="contact_info collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/nauta/contact_info"><i class="mdi-communication-quick-contacts-dialer small"></i><span>Información de contacto</span></a>
-                    </li>
-                    <li class="no-padding"><a class="help collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/help/general"><i class="mdi-action-help small"></i><span>Ayuda</span></a></li>
-                    <li class="no-padding"><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/user/logout"><i class="mdi-content-clear small"></i><span>Salir</span></a></li>
-                </ul>
-                <a href="#" data-activates="nav-mobile" class="button-collapse"><i class="mdi-navigation-menu"></i></a>
-            </div>
-        </nav>
-        <nav class="white hide-on-med-and-down" id="icon-nav">
-            <div class="nav-wrapper">
-                <ul class="right hide-on-med-and-down">
-                    <li class=""><a href="https://www.portal.nauta.cu/useraaa/user_info" class="etecsa-blue-text"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class="active"><a href="https://www.portal.nauta.cu/useraaa/recharge_account" class="etecsa-blue-text"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_change_password_group"><i class="mdi-action-lock-open"></i><span>Cambiar contraseña<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_change_password_group" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_detail"><i class="mdi-action-view-list"></i><span>Detalle de operaciones<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_detail" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_transfer"><i class="mdi-action-input"></i><span>Transferir saldo<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_transfer" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul>
-                        </li>                </ul>
-            </div>
-        </nav>
-    </div>
-
-</header>
-    <div id="content" class="container"><div class="row">
-	<div class="col s12">
-		<h3>Recargar cuenta</h3>
-		<p class="sub-title">Permite recargar su cuenta de acceso mediante los cupones de recarga</p>
-	</div>
-</div>
-<div class="row">
-	<div class="card-panel">
-		<div class="row">
-			<div class="col s12">
-				<h5>Saldo actual</h5>
-				<p>$1,90 CUP</p>
-				<blockquote>Raspe la cubierta del código de recarga que aparece en el reverso del cupón</blockquote>
-			</div>
-			<form name="recharge_acount" id="recharge_acount" method="post" class="col s12">
-				<input type="hidden" name="csrf" value="security628bc8ed8e59d">				<div class="row margin">
-					<div class="input-field col s12 m6">
-						<i class="mdi-action-view-column prefix"></i>
-						<input type="text" id="recharge_code" name="recharge_code" maxlength="16" length="16" class="active" placeholder="0000000000000000" autocomplete="off">
-						<label class="center-align active" for="recharge_code">Teclee el código de recarga </label>
-					<span class="character-counter" style="float: right; font-size: 12px; height: 1px;"></span></div>
-				</div>
-				<div class="row">
-					<div class="input-field col s12">
-						<button name="btn_submit" type="submit" class="submit_btn btn waves-effect waves-light blue darken-4">
-							Aceptar						</button>
-					</div>
-				</div>
-			</form>
-		</div>
-	</div>
-</div>
-</div>    <div id="contact_info_box"></div>
-    <footer class="page-footer white grey-text text-darken-4">
-    <hr>
-    <div class="container">
-        <div class="row center">
-            <div class="col s12">
-                <p>© 2011 Empresa de Telecomunicaciones de Cuba S. A. (ETECSA). Todos los derechos reservados</p>
-                <p><a class="etecsa-blue-text" href="http://www.etecsa.cu/">www.etecsa.cu</a></p>
-            </div>
-        </div>
-    </div>
-    <div class="hidden" id="ajax-messages" data-ajax-connection-error="Existe un error de conexión de red. Puede ser que usted se haya desconectado de la red o el servicio se haya caido."></div>
-</footer><script type="text/javascript" src="nauta.%20Recargar%20cuenta_files/jquery-2.js"></script><script type="text/javascript" src="nauta.%20Recargar%20cuenta_files/materialize.js"></script><script type="text/javascript" src="nauta.%20Recargar%20cuenta_files/jquery_003.js"></script><script type="text/javascript" src="nauta.%20Recargar%20cuenta_files/toastr.js"></script><script type="text/javascript" src="nauta.%20Recargar%20cuenta_files/jquery.js"></script><script type="text/javascript" src="nauta.%20Recargar%20cuenta_files/init.js"></script><script type="text/javascript" src="nauta.%20Recargar%20cuenta_files/msgpool.js"></script><script type="text/javascript" src="nauta.%20Recargar%20cuenta_files/recharge_account.js"></script><script type="text/javascript" src="nauta.%20Recargar%20cuenta_files/jquery_002.js"></script>    <script type="text/javascript">
-        window.toastr.options = {
-            timeOut: 10000
-        }
-        $(function(){
-            $('.contact_info, .help').on("click",function(e){
-                console.log($(this).attr('href'));
-                e.preventDefault();
-                $("#contact_info_box").load($(this).attr('href'));
+        });
 
-            });
 
+        $('.show_password').on("click", function () {
+            var target = $(this).attr('rel');
+            if ($(this).prop('checked')) {
+                $('#' + target).attr('type', 'text');
+            } else {
+                $('#' + target).attr('type', 'password');
+            }
+        });
 
-            $('.show_password').on("click",function(){
-                var target=$(this).attr('rel');
-                if ($(this).prop('checked')){
-                    $('#'+target).attr('type','text');
-                } else {
-                    $('#'+target).attr('type','password');
+        $('.submit_btn').on('click', function () {
+            $.blockUI({
+                message: '<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
+                css: {
+                    border: 'none',
+                    padding: '15px',
+                    backgroundColor: '#000',
+                    '-webkit-border-radius': '10px',
+                    '-moz-border-radius': '10px',
+                    opacity: .5,
+                    color: '#fff'
                 }
             });
+        });
 
-            $('.submit_btn').on('click',function(){
-                $.blockUI({
-                    message:'<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
-                    css: {
-                        border: 'none',
-                        padding: '15px',
-                        backgroundColor: '#000',
-                        '-webkit-border-radius': '10px',
-                        '-moz-border-radius': '10px',
-                        opacity: .5,
-                        color: '#fff'
-                    } });
-            });
-
-            var options = ['nauta.com.cu','nauta.co.cu'];
-            $("input.user-domain").mailtip({
-                mails: options,
-                offsetTop: 2
-            });
-            
+        var options = ['nauta.com.cu', 'nauta.co.cu'];
+        $("input.user-domain").mailtip({
+            mails: options,
+            offsetTop: 2
         });
-    </script>
-    <script type="text/javascript">toastr.success('<ul><li class="msg_message">La cuenta se ha recargado satisfactoriamente.</li></ul>');</script><div id="toast-container" class="toast-top-right" aria-live="polite" role="alert"><div class="toast toast-success" style="display: flex;"><div class="toast-message"><ul><li class="msg_message">La cuenta se ha recargado satisfactoriamente.</li></ul></div></div></div>    
 
-<div class="material-tooltip" id="17c2bdf5-d272-e607-d70f-63de6bd466aa"><span>English</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="af54848f-2292-0265-46c6-b7eb32c3f23e"><span>Información de contacto</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="62ad97cd-a177-a51b-641d-e001c6007c28"><span>Ayuda</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="8d0cc5a4-e9f2-0a46-c4fb-4a4083c23044"><span>Salir</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="hiddendiv common"></div><div class="drag-target" style="left: 0px; touch-action: pan-y;"></div></body></html>
\ No newline at end of file
+    });
+</script>
+<script
+    type="text/javascript">toastr.success('<ul><li class="msg_message">La cuenta se ha recargado satisfactoriamente.</li></ul>');</script>
+<div id="toast-container" class="toast-top-right" aria-live="polite" role="alert">
+    <div class="toast toast-success" style="display: flex;">
+        <div class="toast-message">
+            <ul>
+                <li class="msg_message">La cuenta se ha recargado satisfactoriamente.</li>
+            </ul>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/test/assets/recharge_detail.html b/test/assets/recharge_detail.html
deleted file mode 100644
index a89b408..0000000
--- a/test/assets/recharge_detail.html
+++ /dev/null
@@ -1,194 +0,0 @@
-<!DOCTYPE html>
-<html lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
-    <!-- CSS  -->
-
-    <link rel="shortcut icon" type="images/x-icon" href="https://www.portal.nauta.cu/media/img/nauta.gif">
-    <title>nauta. Recargas</title>
-    <meta name="keywords" content="">
-    <meta name="description" content="">
-    <meta name="copyright" content="">
-    <script type="text/javascript">
-        var url_base = 'https://www.portal.nauta.cu/';
-    </script>
-    <link type="text/css" href="recharge_detail_files/icon.css" rel="stylesheet" media=""><link type="text/css" href="recharge_detail_files/materialize.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="recharge_detail_files/toastr.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="recharge_detail_files/mailtip.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="recharge_detail_files/style.css" rel="stylesheet" media="screen,projection"></head>
-<body>
-    <header>
-    <div class="navbar-fixed">
-        <nav class="orange" role="navigation">
-            <div class="nav-wrapper">
-                <div class="left paralelogramo hide-on-med-and-down"><img class="etecsa-logo responsive-img" src="recharge_detail_files/etecsa-logo-blanco50x50.png">
-                </div>
-                <a id="logo-container" href="#" class="brand-logo"><img class="nauta-logo" src="recharge_detail_files/logo-nauta-45.png">
-                </a>
-                <span class="hide-on-med-and-down title-blue title-portal">Portal de usuario</span>
-
-                <ul class="right hide-on-med-and-down">
-                    <li>
-                        <a class="tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/nauta/change_lang/en-en" data-tooltip="English" data-tooltip-id="04b414f2-0a14-523c-2380-6c527617cf4e"><i class="mdi-action-language small"></i></a>                    </li>
-                    <li>
-                        <a class="tooltipped contact_info" data-position="bottom" data-delay="50" data-tooltip="Información de contacto" href="https://www.portal.nauta.cu/nauta/contact_info" data-tooltip-id="d2e5ccca-d6ff-d852-2cde-f96ceada4481">
-                            <i class="mdi-communication-quick-contacts-dialer"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a class="help tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/help/general" data-tooltip="Ayuda" data-tooltip-id="3969ac95-5e31-7803-5312-7a08e21cf6c5">
-                            <i class="mdi-action-help"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a href="https://www.portal.nauta.cu/user/logout" class="tooltipped" data-position="bottom" data-delay="50" data-tooltip="Salir" data-tooltip-id="036dce18-3515-0f65-77cf-718158b17d8d"><i class="mdi-content-clear"></i></a>
-                    </li>
-                </ul>
-                                <ul id="nav-mobile" class="side-nav" style="left: -250px;">
-                    <li class="center-align etecsa-grey"><img src="recharge_detail_files/logo-etecsa_2.png" class="responsive-img etecsa-logo-2"></li>
-                    <li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/user_info"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/recharge_account"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Cambiar contraseña<i class="mdi-action-lock-open"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul></div></li></ul></li><li class="no-padding active">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Detalle de operaciones<i class="mdi-action-view-list"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Transferir saldo<i class="mdi-action-input"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul></div></li></ul></li>                    <li class="separator etecsa-blue-text"></li>
-                    <li class="no-padding etecsa-blue-text"><a class="collapsible-header" href="https://www.portal.nauta.cu/nauta/change_lang/en-en"><i class="mdi-action-language small"></i><span>English</span></a></li>
-                    <li class="no-padding"><a class="contact_info collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/nauta/contact_info"><i class="mdi-communication-quick-contacts-dialer small"></i><span>Información de contacto</span></a>
-                    </li>
-                    <li class="no-padding"><a class="help collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/help/general"><i class="mdi-action-help small"></i><span>Ayuda</span></a></li>
-                    <li class="no-padding"><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/user/logout"><i class="mdi-content-clear small"></i><span>Salir</span></a></li>
-                </ul>
-                <a href="#" data-activates="nav-mobile" class="button-collapse"><i class="mdi-navigation-menu"></i></a>
-            </div>
-        </nav>
-        <nav class="white hide-on-med-and-down" id="icon-nav">
-            <div class="nav-wrapper">
-                <ul class="right hide-on-med-and-down">
-                    <li class=""><a href="https://www.portal.nauta.cu/useraaa/user_info" class="etecsa-blue-text"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class=""><a href="https://www.portal.nauta.cu/useraaa/recharge_account" class="etecsa-blue-text"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_change_password_group"><i class="mdi-action-lock-open"></i><span>Cambiar contraseña<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_change_password_group" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul>
-                        </li><li class="active">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_detail"><i class="mdi-action-view-list"></i><span>Detalle de operaciones<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_detail" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_transfer"><i class="mdi-action-input"></i><span>Transferir saldo<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_transfer" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul>
-                        </li>                </ul>
-            </div>
-        </nav>
-    </div>
-
-</header>
-    <div id="content" class="container"><script lang="javascript">
-
-</script>
-<div id="form">
-    <div class="row">
-        <div class="col x12">
-            <h3>Recargas</h3>
-            <p class="sub-title">Visualizar el detalle de las recargas realizadas a su cuenta de acceso</p>
-        </div>
-    </div>
-    <div class="row">
-        <div class="col s12 m12 l 12">
-            <div class="card-panel">
-                <div class="row">
-                    <form name="service_detail" id="service_detail" method="post" action="recharge_detail_summary" class="col s12">
-                        <input type="hidden" name="csrf" value="security62862b94db69a">                        <div class="row">
-                            <div class="input-field col s12 m6">
-                                <div class="select-wrapper"><span class="caret">▼</span><input type="text" class="select-dropdown" readonly="true" data-activates="select-options-6a1ead36-73e1-e7fb-8e1e-39a5c560b984" value="Mayo"><ul id="select-options-6a1ead36-73e1-e7fb-8e1e-39a5c560b984" class="dropdown-content select-dropdown "><li class=""><span>Mayo</span></li><li class=""><span>Abril</span></li><li class=""><span>Marzo</span></li></ul><select name="year_month" class="initialized">
-<option value="2022-05" selected="selected">Mayo</option>
-<option value="2022-04">Abril</option>
-<option value="2022-03">Marzo</option>
-</select></div>                                <label>Seleccione el mes a consultar</label>
-                            </div>
-                            <div class="input-field col s12 m6">
-                                <div class="input-field col s12 m12">
-                                    <button name="btn_submit" type="submit" class="btn submit_btn waves-effect waves-light blue darken-4">
-                                        Aceptar                                    </button>
-                                    <input type="hidden" name="list_type" value="recharge_detail">
-                                </div>
-                            </div>
-                        </div>
-                    </form>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-<div id="details" class="hide">
-    <ul class="collapsible" data-collapsible="accordion" id="accordion">
-        <li class="active">
-            <div class="collapsible-header active" id="first"><i class="mdi-action-view-list"></i> Resumen</div>
-            <div class="collapsible-body" id="summary" style="display: block; padding-top: 0px; margin-top: 0px; padding-bottom: 0px; margin-bottom: 0px;"></div>
-        </li>
-        <li>
-            <div class="collapsible-header" id="list-btn" href="">
-                <i class="mdi-action-list"></i> Detalles            </div>
-            <div class="collapsible-body" style=""><p id="list-content"></p></div>
-        </li>
-    </ul>
-</div>
-</div>    <div id="contact_info_box"></div>
-    <footer class="page-footer white grey-text text-darken-4">
-    <hr>
-    <div class="container">
-        <div class="row center">
-            <div class="col s12">
-                <p>© 2011 Empresa de Telecomunicaciones de Cuba S. A. (ETECSA). Todos los derechos reservados</p>
-                <p><a class="etecsa-blue-text" href="http://www.etecsa.cu/">www.etecsa.cu</a></p>
-            </div>
-        </div>
-    </div>
-    <div class="hidden" id="ajax-messages" data-ajax-connection-error="Existe un error de conexión de red. Puede ser que usted se haya desconectado de la red o el servicio se haya caido."></div>
-</footer><script type="text/javascript" src="recharge_detail_files/jquery-2.js"></script><script type="text/javascript" src="recharge_detail_files/materialize.js"></script><script type="text/javascript" src="recharge_detail_files/jquery_002.js"></script><script type="text/javascript" src="recharge_detail_files/toastr.js"></script><script type="text/javascript" src="recharge_detail_files/jquery.js"></script><script type="text/javascript" src="recharge_detail_files/init.js"></script><script type="text/javascript" src="recharge_detail_files/msgpool.js"></script><script type="text/javascript" src="recharge_detail_files/service_detail.js"></script>    <script type="text/javascript">
-        window.toastr.options = {
-            timeOut: 10000
-        }
-        $(function(){
-            $('.contact_info, .help').on("click",function(e){
-                console.log($(this).attr('href'));
-                e.preventDefault();
-                $("#contact_info_box").load($(this).attr('href'));
-
-            });
-
-
-            $('.show_password').on("click",function(){
-                var target=$(this).attr('rel');
-                if ($(this).prop('checked')){
-                    $('#'+target).attr('type','text');
-                } else {
-                    $('#'+target).attr('type','password');
-                }
-            });
-
-            $('.submit_btn').on('click',function(){
-                $.blockUI({
-                    message:'<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
-                    css: {
-                        border: 'none',
-                        padding: '15px',
-                        backgroundColor: '#000',
-                        '-webkit-border-radius': '10px',
-                        '-moz-border-radius': '10px',
-                        opacity: .5,
-                        color: '#fff'
-                    } });
-            });
-
-            var options = ['nauta.com.cu','nauta.co.cu'];
-            $("input.user-domain").mailtip({
-                mails: options,
-                offsetTop: 2
-            });
-            
-        });
-    </script>
-        
-
-<div class="material-tooltip" id="04b414f2-0a14-523c-2380-6c527617cf4e"><span>English</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="d2e5ccca-d6ff-d852-2cde-f96ceada4481"><span>Información de contacto</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="3969ac95-5e31-7803-5312-7a08e21cf6c5"><span>Ayuda</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="036dce18-3515-0f65-77cf-718158b17d8d"><span>Salir</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="hiddendiv common"></div><div class="drag-target" style="left: 0px; touch-action: pan-y;"></div></body></html>
\ No newline at end of file
diff --git a/test/assets/recharges_list.html b/test/assets/recharges_list.html
new file mode 100755
index 0000000..9cb012f
--- /dev/null
+++ b/test/assets/recharges_list.html
@@ -0,0 +1,69 @@
+<div>
+    <table style="width:100%" class="striped bordered highlight responsive-table" cellspacing="0" cellpadding="3">
+        <thead>
+            <tr>
+                <th>Fecha</th>
+                <th>Importe</th>
+                <th>Canal</th>
+                <th>Tipo</th>
+            </tr>
+        </thead>
+
+        <tbody>
+            <tr>
+                <td>03/12/2022 13:16:35</td>
+                <td>$50,00</td>
+                <td>Transfermóvil</td>
+                <td>Efectivo</td>
+            </tr>
+            <tr>
+                <td>05/12/2022 15:43:47</td>
+                <td>$50,00</td>
+                <td>Portal de Usuarios</td>
+                <td>Efectivo</td>
+            </tr>
+            <tr>
+                <td>15/12/2022 16:59:19</td>
+                <td>$50,00</td>
+                <td>Portal de Usuarios</td>
+                <td>Efectivo</td>
+            </tr>
+            <tr>
+                <td>20/12/2022 12:44:36</td>
+                <td>$50,00</td>
+                <td>Portal de Usuarios</td>
+                <td>Efectivo</td>
+            </tr>
+            <tr>
+                <td>24/12/2022 19:27:55</td>
+                <td>$50,00</td>
+                <td>Portal de Usuarios</td>
+                <td>Efectivo</td>
+            </tr>
+
+        </tbody>
+    </table>
+    <div class="right-align">
+        <ul class="pagination">
+            <li class="disabled hide-on-small-only icon">
+                <a href="/useraaa/recharge_detail_list/2022-12/5" class="pagination-link"><i
+                        class="mdi-navigation-arrow-back small"></i></a>
+            </li>
+            <li class="disabled hide-on-small-only icon">
+                <a href="/useraaa/recharge_detail_list/2022-12/5" class="pagination-link"><i
+                        class="mdi-navigation-chevron-left small"></i></a>
+            </li>
+            <li class="active"><a href="/useraaa/recharge_detail_list/2022-12/5" class="pagination-link">1</a></li>
+            <li class="disabled hide-on-small-only icon">
+                <a href="/useraaa/recharge_detail_list/2022-12/5" class="pagination-link"><i
+                        class="mdi-navigation-chevron-right small"></i></a>
+            </li>
+            <li class="disabled  hide-on-small-only icon">
+                <a href="/useraaa/recharge_detail_list/2022-12/5" class="pagination-link"><i
+                        class="mdi-navigation-arrow-forward small"></i></a>
+            </li>
+            <li class="hide-on-med-and-down"><span class="">5 Registros</span></li>
+            <li class="hide-on-med-and-down"><span class="">1 Páginas</span></li>
+        </ul>
+    </div>
+</div>
\ No newline at end of file
diff --git a/test/assets/recharges_summary.html b/test/assets/recharges_summary.html
new file mode 100755
index 0000000..8c39930
--- /dev/null
+++ b/test/assets/recharges_summary.html
@@ -0,0 +1,22 @@
+<div class="container" id="content">
+    <div class="row">
+        <div class="col s12 m6 l4">
+            <div class="card">
+                <div class="card-content orange darken-2 white-text">
+                    <div class="card-stats-title"><i class="mdi-action-trending-up small"></i> Recargas</div>
+                    <h5 class="card-stats-number">5</h5>
+                    <input type="hidden" name="count" value="5">
+                    <input type="hidden" name="year_month_selected" value="2022-12">
+                </div>
+            </div>
+        </div>
+        <div class="col s12 m6 l4">
+            <div class="card">
+                <div class="card-content teal darken-1 white-text">
+                    <div class="card-stats-title"><i class="mdi-editor-attach-money small"></i> Importe Total</div>
+                    <h5 class="card-stats-number">$250,00</h5>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/test/assets/service_detail.html b/test/assets/service_detail.html
old mode 100644
new mode 100755
index d07e22d..58e5fbe
--- a/test/assets/service_detail.html
+++ b/test/assets/service_detail.html
@@ -1,194 +1,1 @@
-<!DOCTYPE html>
-<html lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
-    <!-- CSS  -->
-
-    <link rel="shortcut icon" type="images/x-icon" href="https://www.portal.nauta.cu/media/img/nauta.gif">
-    <title>nauta. Conexiones</title>
-    <meta name="keywords" content="">
-    <meta name="description" content="">
-    <meta name="copyright" content="">
-    <script type="text/javascript">
-        var url_base = 'https://www.portal.nauta.cu/';
-    </script>
-    <link type="text/css" href="nauta.%20Conexiones_files/icon.css" rel="stylesheet" media=""><link type="text/css" href="nauta.%20Conexiones_files/materialize.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="nauta.%20Conexiones_files/toastr.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="nauta.%20Conexiones_files/mailtip.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="nauta.%20Conexiones_files/style.css" rel="stylesheet" media="screen,projection"></head>
-<body>
-    <header>
-    <div class="navbar-fixed">
-        <nav class="orange" role="navigation">
-            <div class="nav-wrapper">
-                <div class="left paralelogramo hide-on-med-and-down"><img class="etecsa-logo responsive-img" src="nauta.%20Conexiones_files/etecsa-logo-blanco50x50.png">
-                </div>
-                <a id="logo-container" href="#" class="brand-logo"><img class="nauta-logo" src="nauta.%20Conexiones_files/logo-nauta-45.png">
-                </a>
-                <span class="hide-on-med-and-down title-blue title-portal">Portal de usuario</span>
-
-                <ul class="right hide-on-med-and-down">
-                    <li>
-                        <a class="tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/nauta/change_lang/en-en" data-tooltip="English" data-tooltip-id="9861ddd9-22a4-3518-232f-7ee9f4e44bd2"><i class="mdi-action-language small"></i></a>                    </li>
-                    <li>
-                        <a class="tooltipped contact_info" data-position="bottom" data-delay="50" data-tooltip="Información de contacto" href="https://www.portal.nauta.cu/nauta/contact_info" data-tooltip-id="d8e17870-f5f4-abfe-f6f5-6db764e99bf8">
-                            <i class="mdi-communication-quick-contacts-dialer"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a class="help tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/help/general" data-tooltip="Ayuda" data-tooltip-id="1ddb6576-ade5-281e-b6ae-abc557ca7165">
-                            <i class="mdi-action-help"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a href="https://www.portal.nauta.cu/user/logout" class="tooltipped" data-position="bottom" data-delay="50" data-tooltip="Salir" data-tooltip-id="efddf69e-202b-93ef-634a-91b5d038d0b7"><i class="mdi-content-clear"></i></a>
-                    </li>
-                </ul>
-                                <ul id="nav-mobile" class="side-nav" style="left: -250px;">
-                    <li class="center-align etecsa-grey"><img src="nauta.%20Conexiones_files/logo-etecsa_2.png" class="responsive-img etecsa-logo-2"></li>
-                    <li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/user_info"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/recharge_account"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Cambiar contraseña<i class="mdi-action-lock-open"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul></div></li></ul></li><li class="no-padding active">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Detalle de operaciones<i class="mdi-action-view-list"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Transferir saldo<i class="mdi-action-input"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul></div></li></ul></li>                    <li class="separator etecsa-blue-text"></li>
-                    <li class="no-padding etecsa-blue-text"><a class="collapsible-header" href="https://www.portal.nauta.cu/nauta/change_lang/en-en"><i class="mdi-action-language small"></i><span>English</span></a></li>
-                    <li class="no-padding"><a class="contact_info collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/nauta/contact_info"><i class="mdi-communication-quick-contacts-dialer small"></i><span>Información de contacto</span></a>
-                    </li>
-                    <li class="no-padding"><a class="help collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/help/general"><i class="mdi-action-help small"></i><span>Ayuda</span></a></li>
-                    <li class="no-padding"><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/user/logout"><i class="mdi-content-clear small"></i><span>Salir</span></a></li>
-                </ul>
-                <a href="#" data-activates="nav-mobile" class="button-collapse"><i class="mdi-navigation-menu"></i></a>
-            </div>
-        </nav>
-        <nav class="white hide-on-med-and-down" id="icon-nav">
-            <div class="nav-wrapper">
-                <ul class="right hide-on-med-and-down">
-                    <li class=""><a href="https://www.portal.nauta.cu/useraaa/user_info" class="etecsa-blue-text"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class=""><a href="https://www.portal.nauta.cu/useraaa/recharge_account" class="etecsa-blue-text"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_change_password_group"><i class="mdi-action-lock-open"></i><span>Cambiar contraseña<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_change_password_group" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul>
-                        </li><li class="active">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_detail"><i class="mdi-action-view-list"></i><span>Detalle de operaciones<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_detail" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_transfer"><i class="mdi-action-input"></i><span>Transferir saldo<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_transfer" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul>
-                        </li>                </ul>
-            </div>
-        </nav>
-    </div>
-
-</header>
-    <div id="content" class="container"><script lang="javascript">
-
-</script>
-<div id="form">
-    <div class="row">
-        <div class="col x12">
-            <h3>Conexiones</h3>
-            <p class="sub-title">Visualizar el detalle del uso de su cuenta de acceso</p>
-        </div>
-    </div>
-    <div class="row">
-        <div class="col s12 m12 l 12">
-            <div class="card-panel">
-                <div class="row">
-                    <form name="service_detail" id="service_detail" method="post" action="service_detail_summary" class="col s12">
-                        <input type="hidden" name="csrf" value="security62862b94db69a">                        <div class="row">
-                            <div class="input-field col s12 m6">
-                                <div class="select-wrapper"><span class="caret">▼</span><input type="text" class="select-dropdown" readonly="true" data-activates="select-options-72105b67-5214-a25e-47ff-e4013aec2ebe" value="Mayo"><ul id="select-options-72105b67-5214-a25e-47ff-e4013aec2ebe" class="dropdown-content select-dropdown "><li class=""><span>Mayo</span></li><li class=""><span>Abril</span></li><li class=""><span>Marzo</span></li></ul><select name="year_month" class="initialized">
-<option value="2022-05" selected="selected">Mayo</option>
-<option value="2022-04">Abril</option>
-<option value="2022-03">Marzo</option>
-</select></div>                                <label>Seleccione el mes a consultar</label>
-                            </div>
-                            <div class="input-field col s12 m6">
-                                <div class="input-field col s12 m12">
-                                    <button name="btn_submit" type="submit" class="btn submit_btn waves-effect waves-light blue darken-4">
-                                        Aceptar                                    </button>
-                                    <input type="hidden" name="list_type" value="service_detail">
-                                </div>
-                            </div>
-                        </div>
-                    </form>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-<div id="details" class="hide">
-    <ul class="collapsible" data-collapsible="accordion" id="accordion">
-        <li class="active">
-            <div class="collapsible-header active" id="first"><i class="mdi-action-view-list"></i> Resumen</div>
-            <div class="collapsible-body" id="summary" style="display: block; padding-top: 0px; margin-top: 0px; padding-bottom: 0px; margin-bottom: 0px;"></div>
-        </li>
-        <li>
-            <div class="collapsible-header" id="list-btn" href="">
-                <i class="mdi-action-list"></i> Detalles            </div>
-            <div class="collapsible-body" style=""><p id="list-content"></p></div>
-        </li>
-    </ul>
-</div>
-</div>    <div id="contact_info_box"></div>
-    <footer class="page-footer white grey-text text-darken-4">
-    <hr>
-    <div class="container">
-        <div class="row center">
-            <div class="col s12">
-                <p>© 2011 Empresa de Telecomunicaciones de Cuba S. A. (ETECSA). Todos los derechos reservados</p>
-                <p><a class="etecsa-blue-text" href="http://www.etecsa.cu/">www.etecsa.cu</a></p>
-            </div>
-        </div>
-    </div>
-    <div class="hidden" id="ajax-messages" data-ajax-connection-error="Existe un error de conexión de red. Puede ser que usted se haya desconectado de la red o el servicio se haya caido."></div>
-</footer><script type="text/javascript" src="nauta.%20Conexiones_files/jquery-2.js"></script><script type="text/javascript" src="nauta.%20Conexiones_files/materialize.js"></script><script type="text/javascript" src="nauta.%20Conexiones_files/jquery_002.js"></script><script type="text/javascript" src="nauta.%20Conexiones_files/toastr.js"></script><script type="text/javascript" src="nauta.%20Conexiones_files/jquery.js"></script><script type="text/javascript" src="nauta.%20Conexiones_files/init.js"></script><script type="text/javascript" src="nauta.%20Conexiones_files/msgpool.js"></script><script type="text/javascript" src="nauta.%20Conexiones_files/service_detail.js"></script>    <script type="text/javascript">
-        window.toastr.options = {
-            timeOut: 10000
-        }
-        $(function(){
-            $('.contact_info, .help').on("click",function(e){
-                console.log($(this).attr('href'));
-                e.preventDefault();
-                $("#contact_info_box").load($(this).attr('href'));
-
-            });
-
-
-            $('.show_password').on("click",function(){
-                var target=$(this).attr('rel');
-                if ($(this).prop('checked')){
-                    $('#'+target).attr('type','text');
-                } else {
-                    $('#'+target).attr('type','password');
-                }
-            });
-
-            $('.submit_btn').on('click',function(){
-                $.blockUI({
-                    message:'<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
-                    css: {
-                        border: 'none',
-                        padding: '15px',
-                        backgroundColor: '#000',
-                        '-webkit-border-radius': '10px',
-                        '-moz-border-radius': '10px',
-                        opacity: .5,
-                        color: '#fff'
-                    } });
-            });
-
-            var options = ['nauta.com.cu','nauta.co.cu'];
-            $("input.user-domain").mailtip({
-                mails: options,
-                offsetTop: 2
-            });
-            
-        });
-    </script>
-        
-
-<div class="material-tooltip" id="9861ddd9-22a4-3518-232f-7ee9f4e44bd2"><span>English</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="d8e17870-f5f4-abfe-f6f5-6db764e99bf8"><span>Información de contacto</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="1ddb6576-ade5-281e-b6ae-abc557ca7165"><span>Ayuda</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="efddf69e-202b-93ef-634a-91b5d038d0b7"><span>Salir</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="hiddendiv common"></div><div class="drag-target" style="left: 0px; touch-action: pan-y;"></div></body></html>
\ No newline at end of file
+<input type="hidden" name="csrf" value="security63cebcda5d98b">
\ No newline at end of file
diff --git a/test/assets/service_detail_list.html b/test/assets/service_detail_list.html
deleted file mode 100644
index 49927e4..0000000
--- a/test/assets/service_detail_list.html
+++ /dev/null
@@ -1,287 +0,0 @@
-<!DOCTYPE html>
-<html lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
-    <!-- CSS  -->
-
-    <link rel="shortcut icon" type="images/x-icon" href="https://www.portal.nauta.cu/media/img/nauta.gif">
-    <title>nauta. Conexiones</title>
-    <meta name="keywords" content="">
-    <meta name="description" content="">
-    <meta name="copyright" content="">
-    <script type="text/javascript">
-        var url_base = 'https://www.portal.nauta.cu/';
-    </script>
-    <link type="text/css" href="service_detail_list_files/icon.css" rel="stylesheet" media=""><link type="text/css" href="service_detail_list_files/materialize.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="service_detail_list_files/toastr.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="service_detail_list_files/mailtip.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="service_detail_list_files/style.css" rel="stylesheet" media="screen,projection"></head>
-<body>
-    <header>
-    <div class="navbar-fixed">
-        <nav class="orange" role="navigation">
-            <div class="nav-wrapper">
-                <div class="left paralelogramo hide-on-med-and-down"><img class="etecsa-logo responsive-img" src="service_detail_list_files/etecsa-logo-blanco50x50.png">
-                </div>
-                <a id="logo-container" href="#" class="brand-logo"><img class="nauta-logo" src="service_detail_list_files/logo-nauta-45.png">
-                </a>
-                <span class="hide-on-med-and-down title-blue title-portal">Portal de usuario</span>
-
-                <ul class="right hide-on-med-and-down">
-                    <li>
-                        <a class="tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/nauta/change_lang/en-en" data-tooltip="English" data-tooltip-id="e24849ac-752e-9f68-efc1-baff85d9dcd6"><i class="mdi-action-language small"></i></a>                    </li>
-                    <li>
-                        <a class="tooltipped contact_info" data-position="bottom" data-delay="50" data-tooltip="Información de contacto" href="https://www.portal.nauta.cu/nauta/contact_info" data-tooltip-id="544246c9-ed74-f83d-9840-ca607806fd0f">
-                            <i class="mdi-communication-quick-contacts-dialer"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a class="help tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/help/general" data-tooltip="Ayuda" data-tooltip-id="f87db2d8-24c2-fefa-f76d-681c1f0191a5">
-                            <i class="mdi-action-help"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a href="https://www.portal.nauta.cu/user/logout" class="tooltipped" data-position="bottom" data-delay="50" data-tooltip="Salir" data-tooltip-id="1ece528e-86f3-df5c-5013-735f0e08773d"><i class="mdi-content-clear"></i></a>
-                    </li>
-                </ul>
-                                <ul id="nav-mobile" class="side-nav" style="left: -250px;">
-                    <li class="center-align etecsa-grey"><img src="service_detail_list_files/logo-etecsa_2.png" class="responsive-img etecsa-logo-2"></li>
-                    <li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/user_info"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/recharge_account"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Cambiar contraseña<i class="mdi-action-lock-open"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul></div></li></ul></li><li class="no-padding active">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Detalle de operaciones<i class="mdi-action-view-list"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Transferir saldo<i class="mdi-action-input"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul></div></li></ul></li>                    <li class="separator etecsa-blue-text"></li>
-                    <li class="no-padding etecsa-blue-text"><a class="collapsible-header" href="https://www.portal.nauta.cu/nauta/change_lang/en-en"><i class="mdi-action-language small"></i><span>English</span></a></li>
-                    <li class="no-padding"><a class="contact_info collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/nauta/contact_info"><i class="mdi-communication-quick-contacts-dialer small"></i><span>Información de contacto</span></a>
-                    </li>
-                    <li class="no-padding"><a class="help collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/help/general"><i class="mdi-action-help small"></i><span>Ayuda</span></a></li>
-                    <li class="no-padding"><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/user/logout"><i class="mdi-content-clear small"></i><span>Salir</span></a></li>
-                </ul>
-                <a href="#" data-activates="nav-mobile" class="button-collapse"><i class="mdi-navigation-menu"></i></a>
-            </div>
-        </nav>
-        <nav class="white hide-on-med-and-down" id="icon-nav">
-            <div class="nav-wrapper">
-                <ul class="right hide-on-med-and-down">
-                    <li class=""><a href="https://www.portal.nauta.cu/useraaa/user_info" class="etecsa-blue-text"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class=""><a href="https://www.portal.nauta.cu/useraaa/recharge_account" class="etecsa-blue-text"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_change_password_group"><i class="mdi-action-lock-open"></i><span>Cambiar contraseña<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_change_password_group" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul>
-                        </li><li class="active">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_detail"><i class="mdi-action-view-list"></i><span>Detalle de operaciones<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_detail" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_transfer"><i class="mdi-action-input"></i><span>Transferir saldo<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_transfer" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul>
-                        </li>                </ul>
-            </div>
-        </nav>
-    </div>
-
-</header>
-    <div id="content" class="container"><div>
-		<table style="width:100%" class="striped bordered highlight responsive-table" cellspacing="0" cellpadding="3">
-<thead>
-	<tr>
-		<th>Inicio de sesión</th>
-		<th>Fin de sesión</th>
-		<th>Tiempo consumido</th>
-		<th>Subida</th>
-		<th>Descarga</th>
-		<th>Importe</th>
-	</tr>
-</thead>
-
-	<tbody><tr>
-		<td>30/04/2022 22:06:07</td>
-		<td>01/05/2022 02:16:05</td>
-		<td>04:09:58</td>
-		<td>116,35 MB</td>
-		<td>1,28 GB</td>
-		<td>$50,00</td>
-	</tr>
-	<tr>
-		<td>30/04/2022 02:32:01</td>
-		<td>30/04/2022 04:27:22</td>
-		<td>01:55:21</td>
-		<td>815,37 MB</td>
-		<td>189,80 MB</td>
-		<td>$23,07</td>
-	</tr>
-	<tr>
-		<td>28/04/2022 20:05:27</td>
-		<td>28/04/2022 20:43:57</td>
-		<td>00:38:30</td>
-		<td>8,43 MB</td>
-		<td>42,06 MB</td>
-		<td>$7,70</td>
-	</tr>
-	<tr>
-		<td>27/04/2022 20:06:15</td>
-		<td>27/04/2022 20:44:20</td>
-		<td>00:38:05</td>
-		<td>7,59 MB</td>
-		<td>54,80 MB</td>
-		<td>$7,62</td>
-	</tr>
-	<tr>
-		<td>27/04/2022 17:26:22</td>
-		<td>27/04/2022 18:26:22</td>
-		<td>01:00:00</td>
-		<td>11,72 MB</td>
-		<td>128,86 MB</td>
-		<td>$12,00</td>
-	</tr>
-	<tr>
-		<td>27/04/2022 15:26:58</td>
-		<td>27/04/2022 15:29:37</td>
-		<td>00:02:39</td>
-		<td>965,00 KB</td>
-		<td>5,32 MB</td>
-		<td>$0,53</td>
-	</tr>
-	<tr>
-		<td>27/04/2022 15:18:28</td>
-		<td>27/04/2022 15:25:16</td>
-		<td>00:06:48</td>
-		<td>2,44 MB</td>
-		<td>16,88 MB</td>
-		<td>$0,76</td>
-	</tr>
-	<tr>
-		<td>25/04/2022 14:05:09</td>
-		<td>25/04/2022 14:17:41</td>
-		<td>00:12:32</td>
-		<td>265,00 KB</td>
-		<td>1,04 MB</td>
-		<td>$2,51</td>
-	</tr>
-	<tr>
-		<td>23/04/2022 03:01:40</td>
-		<td>23/04/2022 03:03:44</td>
-		<td>00:02:04</td>
-		<td>965,00 KB</td>
-		<td>10,82 MB</td>
-		<td>$0,42</td>
-	</tr>
-	<tr>
-		<td>23/04/2022 02:08:50</td>
-		<td>23/04/2022 02:14:06</td>
-		<td>00:05:16</td>
-		<td>3,53 MB</td>
-		<td>61,75 MB</td>
-		<td>$1,06</td>
-	</tr>
-	<tr>
-		<td>22/04/2022 21:43:26</td>
-		<td>22/04/2022 22:51:08</td>
-		<td>01:07:42</td>
-		<td>31,92 MB</td>
-		<td>347,32 MB</td>
-		<td>$13,54</td>
-	</tr>
-	<tr>
-		<td>22/04/2022 21:14:57</td>
-		<td>22/04/2022 21:40:18</td>
-		<td>00:25:21</td>
-		<td>10,07 MB</td>
-		<td>212,18 MB</td>
-		<td>$5,07</td>
-	</tr>
-	<tr>
-		<td>22/04/2022 17:49:38</td>
-		<td>22/04/2022 19:11:36</td>
-		<td>01:21:58</td>
-		<td>165,36 MB</td>
-		<td>270,33 MB</td>
-		<td>$16,40</td>
-	</tr>
-	<tr>
-		<td>21/04/2022 17:41:54</td>
-		<td>21/04/2022 18:28:29</td>
-		<td>00:46:35</td>
-		<td>18,63 MB</td>
-		<td>226,75 MB</td>
-		<td>$9,32</td>
-	</tr>
-
-</tbody></table>
-<div class="right-align"><ul class="pagination">
-    <li class="disabled hide-on-small-only icon">
-        <a href="https://www.portal.nauta.cu/useraaa/service_detail_list/2022-04/53" class="pagination-link"><i class="mdi-navigation-arrow-back small"></i></a>
-    </li>
-    <li class="disabled hide-on-small-only icon">
-        <a href="https://www.portal.nauta.cu/useraaa/service_detail_list/2022-04/53" class="pagination-link"><i class="mdi-navigation-chevron-left small"></i></a>
-    </li>
-    <li class="active"><a href="https://www.portal.nauta.cu/useraaa/service_detail_list/2022-04/53" class="pagination-link">1</a></li><li class="waves-effect"><a href="https://www.portal.nauta.cu/useraaa/service_detail_list/2022-04/53/2" class="pagination-link">2</a></li><li class="waves-effect"><a href="https://www.portal.nauta.cu/useraaa/service_detail_list/2022-04/53/3" class="pagination-link">3</a></li><li class="waves-effect"><a href="https://www.portal.nauta.cu/useraaa/service_detail_list/2022-04/53/4" class="pagination-link">4</a></li>    <li class="waves-effect hide-on-small-only icon">
-        <a href="https://www.portal.nauta.cu/useraaa/service_detail_list/2022-04/53/2" class="pagination-link"><i class="mdi-navigation-chevron-right small"></i></a>
-    </li>
-    <li class="waves-effect  hide-on-small-only icon">
-        <a href="https://www.portal.nauta.cu/useraaa/service_detail_list/2022-04/53/4" class="pagination-link"><i class="mdi-navigation-arrow-forward small"></i></a>
-    </li>
-    <li class="hide-on-med-and-down"><span class="">53 Registros</span></li>
-    <li class="hide-on-med-and-down"><span class="">4 Páginas</span></li>
-</ul></div></div>
-</div>    <div id="contact_info_box"></div>
-    <footer class="page-footer white grey-text text-darken-4">
-    <hr>
-    <div class="container">
-        <div class="row center">
-            <div class="col s12">
-                <p>© 2011 Empresa de Telecomunicaciones de Cuba S. A. (ETECSA). Todos los derechos reservados</p>
-                <p><a class="etecsa-blue-text" href="http://www.etecsa.cu/">www.etecsa.cu</a></p>
-            </div>
-        </div>
-    </div>
-    <div class="hidden" id="ajax-messages" data-ajax-connection-error="Existe un error de conexión de red. Puede ser que usted se haya desconectado de la red o el servicio se haya caido."></div>
-</footer><script type="text/javascript" src="service_detail_list_files/jquery-2.js"></script><script type="text/javascript" src="service_detail_list_files/materialize.js"></script><script type="text/javascript" src="service_detail_list_files/jquery_002.js"></script><script type="text/javascript" src="service_detail_list_files/toastr.js"></script><script type="text/javascript" src="service_detail_list_files/jquery.js"></script><script type="text/javascript" src="service_detail_list_files/init.js"></script><script type="text/javascript" src="service_detail_list_files/msgpool.js"></script><script type="text/javascript" src="service_detail_list_files/service_detail.js"></script>    <script type="text/javascript">
-        window.toastr.options = {
-            timeOut: 10000
-        }
-        $(function(){
-            $('.contact_info, .help').on("click",function(e){
-                console.log($(this).attr('href'));
-                e.preventDefault();
-                $("#contact_info_box").load($(this).attr('href'));
-
-            });
-
-
-            $('.show_password').on("click",function(){
-                var target=$(this).attr('rel');
-                if ($(this).prop('checked')){
-                    $('#'+target).attr('type','text');
-                } else {
-                    $('#'+target).attr('type','password');
-                }
-            });
-
-            $('.submit_btn').on('click',function(){
-                $.blockUI({
-                    message:'<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
-                    css: {
-                        border: 'none',
-                        padding: '15px',
-                        backgroundColor: '#000',
-                        '-webkit-border-radius': '10px',
-                        '-moz-border-radius': '10px',
-                        opacity: .5,
-                        color: '#fff'
-                    } });
-            });
-
-            var options = ['nauta.com.cu','nauta.co.cu'];
-            $("input.user-domain").mailtip({
-                mails: options,
-                offsetTop: 2
-            });
-            
-        });
-    </script>
-        
-
-<div class="material-tooltip" id="e24849ac-752e-9f68-efc1-baff85d9dcd6"><span>English</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="544246c9-ed74-f83d-9840-ca607806fd0f"><span>Información de contacto</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="f87db2d8-24c2-fefa-f76d-681c1f0191a5"><span>Ayuda</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="1ece528e-86f3-df5c-5013-735f0e08773d"><span>Salir</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="hiddendiv common"></div><div class="drag-target" style="left: 0px; touch-action: pan-y;"></div></body></html>
\ No newline at end of file
diff --git a/test/assets/transfer_action.html b/test/assets/transfer_action.html
old mode 100644
new mode 100755
index d7f2b3a..4456e87
--- a/test/assets/transfer_action.html
+++ b/test/assets/transfer_action.html
@@ -1,218 +1,1 @@
-<!DOCTYPE html>
-<html lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
-    <!-- CSS  -->
-
-    <link rel="shortcut icon" type="images/x-icon" href="https://www.portal.nauta.cu/media/img/nauta.gif">
-    <title>nauta. Transferir saldo</title>
-    <meta name="keywords" content="">
-    <meta name="description" content="">
-    <meta name="copyright" content="">
-    <script type="text/javascript">
-        var url_base = 'https://www.portal.nauta.cu/';
-    </script>
-    <link type="text/css" href="transfer_action_files/icon.css" rel="stylesheet" media=""><link type="text/css" href="transfer_action_files/materialize.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="transfer_action_files/toastr.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="transfer_action_files/mailtip.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="transfer_action_files/style.css" rel="stylesheet" media="screen,projection"></head>
-<body>
-    <header>
-    <div class="navbar-fixed">
-        <nav class="orange" role="navigation">
-            <div class="nav-wrapper">
-                <div class="left paralelogramo hide-on-med-and-down"><img class="etecsa-logo responsive-img" src="transfer_action_files/etecsa-logo-blanco50x50.png">
-                </div>
-                <a id="logo-container" href="#" class="brand-logo"><img class="nauta-logo" src="transfer_action_files/logo-nauta-45.png">
-                </a>
-                <span class="hide-on-med-and-down title-blue title-portal">Portal de usuario</span>
-
-                <ul class="right hide-on-med-and-down">
-                    <li>
-                        <a class="tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/nauta/change_lang/en-en" data-tooltip="English" data-tooltip-id="f5922c1d-ea52-0e1f-0672-80f170cf4384"><i class="mdi-action-language small"></i></a>                    </li>
-                    <li>
-                        <a class="tooltipped contact_info" data-position="bottom" data-delay="50" data-tooltip="Información de contacto" href="https://www.portal.nauta.cu/nauta/contact_info" data-tooltip-id="5d88cb8e-eb08-d542-2256-5e40adeeadf8">
-                            <i class="mdi-communication-quick-contacts-dialer"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a class="help tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/help/general" data-tooltip="Ayuda" data-tooltip-id="a4343039-0aad-b547-81d7-8f043e0e8947">
-                            <i class="mdi-action-help"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a href="https://www.portal.nauta.cu/user/logout" class="tooltipped" data-position="bottom" data-delay="50" data-tooltip="Salir" data-tooltip-id="d8c2005b-fc03-8426-ef60-d879a7805a7e"><i class="mdi-content-clear"></i></a>
-                    </li>
-                </ul>
-                                <ul id="nav-mobile" class="side-nav" style="left: -250px;">
-                    <li class="center-align etecsa-grey"><img src="transfer_action_files/logo-etecsa_2.png" class="responsive-img etecsa-logo-2"></li>
-                    <li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/user_info"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/recharge_account"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Cambiar contraseña<i class="mdi-action-lock-open"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Detalle de operaciones<i class="mdi-action-view-list"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul></div></li></ul></li><li class="no-padding active">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Transferir saldo<i class="mdi-action-input"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul></div></li></ul></li>                    <li class="separator etecsa-blue-text"></li>
-                    <li class="no-padding etecsa-blue-text"><a class="collapsible-header" href="https://www.portal.nauta.cu/nauta/change_lang/en-en"><i class="mdi-action-language small"></i><span>English</span></a></li>
-                    <li class="no-padding"><a class="contact_info collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/nauta/contact_info"><i class="mdi-communication-quick-contacts-dialer small"></i><span>Información de contacto</span></a>
-                    </li>
-                    <li class="no-padding"><a class="help collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/help/general"><i class="mdi-action-help small"></i><span>Ayuda</span></a></li>
-                    <li class="no-padding"><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/user/logout"><i class="mdi-content-clear small"></i><span>Salir</span></a></li>
-                </ul>
-                <a href="#" data-activates="nav-mobile" class="button-collapse"><i class="mdi-navigation-menu"></i></a>
-            </div>
-        </nav>
-        <nav class="white hide-on-med-and-down" id="icon-nav">
-            <div class="nav-wrapper">
-                <ul class="right hide-on-med-and-down">
-                    <li class=""><a href="https://www.portal.nauta.cu/useraaa/user_info" class="etecsa-blue-text"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class=""><a href="https://www.portal.nauta.cu/useraaa/recharge_account" class="etecsa-blue-text"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_change_password_group"><i class="mdi-action-lock-open"></i><span>Cambiar contraseña<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_change_password_group" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_detail"><i class="mdi-action-view-list"></i><span>Detalle de operaciones<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_detail" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul>
-                        </li><li class="active">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_transfer"><i class="mdi-action-input"></i><span>Transferir saldo<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_transfer" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul>
-                        </li>                </ul>
-            </div>
-        </nav>
-    </div>
-
-</header>
-    <div id="content" class="container">
-<div class="row">
-	<div class="col s12">
-		<h3>Transferir saldo</h3>
-		<p class="sub-title">Permite realizar transferencia de saldo desde su cuenta de acceso a otra</p>
-	</div>
-
-</div>
-<div class="row">
-	<div class="card-panel">
-		<div class="row">
-			<div class="col s12">
-				<h5>Saldo actual</h5>
-				<p> $13,18 CUP</p>
-			</div>
-			                <form name="form_state" id="form_state" method="post" class="col s12">
-                    <input type="hidden" name="csrf" value="security628f742a8cc1a">                    <div class="row margin">
-                        <div class="input-field col s8 m4">
-                            <i class="mdi-editor-attach-money prefix grey-text"></i>
-                            <input type="text" id="transfer" name="transfer" maxlength="12" value="1,56" placeholder="0,00" required="" aria-required="true" class="active validate" autocomplete="off">
-                            <label class="center-align active" for="transfer">Importe a transferir </label>
-                        </div>
-                    </div>
-                    <div class="row margin">
-                        <div class="input-field col s10 m8">
-                            <i class="mdi-action-https prefix grey-text"></i>
-                            <input type="password" id="password_user" name="password_user" required="" aria-required="true" class="validate" maxlength="20" length="20">
-                            <label class="center-align active" for="password_user">Contraseña de su cuenta de acceso </label>
-                        <span class="character-counter" style="float: right; font-size: 12px; height: 1px;"></span></div>
-                        <div class="input-field col s2 m4">
-                            <input type="checkbox" id="show_password" class="show_password" rel="password_user">
-                            <label for="show_password"><span class="hide-on-small-only">Mostrar contraseña</span></label>
-                        </div>
-                    </div>
-                    <div class="row margin">
-                        <div class="input-field col s12 m6">
-                            <i class="mdi-action-account-circle prefix grey-text"></i>
-                            <input type="text" id="id_cuenta" name="id_cuenta" class="user-domain" placeholder="usuario@dominio" required="" aria-required="true" maxlength="46" length="46" autocomplete="off"><ul class="ui-mailtip" style="display: none; float: none; position: absolute; margin: 0px; padding: 0px; z-index: 10; top: 39px; left: 45px; width: auto; min-width: 418px;"></ul>
-                            <label class="center-align active" for="id_cuenta">Cuenta de acceso del destinatario </label>
-                        <span class="character-counter" style="float: right; font-size: 12px; height: 1px;"></span></div>
-                    </div>
-                    <div class="row">
-                        <div class="input-field col s12">
-                            <button id="btn_submit" name="btn_submit" type="button" data-target="modal-transfer-balance" class="modal-trigger btn waves-effect waves-light blue darken-4">
-                                Aceptar                            </button>
-                            <input name="action" type="hidden" value="checkdata">
-                        </div>
-                    </div>
-                </form>
-                		</div>
-	</div>
-</div>
-<div id="modal-transfer-balance" class="modal modal-fixed-footer">
-    <div class="modal-content">
-        <h3 class="valid">Confirme la operación</h3>
-        <p class="valid">
-            Usted está seguro que desea transferir&nbsp;
-            <span id="modal-money"></span>&nbsp;CUP&nbsp;
-            a la cuenta&nbsp;
-            <span id="modal-account"></span>
-        </p>
-        <p class="invalid hide">
-            No es posible enviar la información contenida en el formulario. Por favor revise los datos.        </p>
-    </div>
-    <div class="modal-footer">
-        <a href="#!" class="invalid hide modal-action modal-close waves-effect waves-light btn red">Aceptar</a>
-        <a href="#!" class="valid modal-action modal-close waves-effect waves-light btn grey">No</a>
-        <a href="#!" id="modal-yes" class="valid modal-action modal-close waves-effect waves-light btn submit_btn blue darken-4">Si</a>
-    </div>
-</div>
-<script type="text/javascript">
-    var priceOptions = {"centsSeparator":",","thousandsSeparator":" ","prefix":""};
-</script>
-
-</div>    <div id="contact_info_box"></div>
-    <footer class="page-footer white grey-text text-darken-4">
-    <hr>
-    <div class="container">
-        <div class="row center">
-            <div class="col s12">
-                <p>© 2011 Empresa de Telecomunicaciones de Cuba S. A. (ETECSA). Todos los derechos reservados</p>
-                <p><a class="etecsa-blue-text" href="http://www.etecsa.cu/">www.etecsa.cu</a></p>
-            </div>
-        </div>
-    </div>
-    <div class="hidden" id="ajax-messages" data-ajax-connection-error="Existe un error de conexión de red. Puede ser que usted se haya desconectado de la red o el servicio se haya caido."></div>
-</footer><script type="text/javascript" src="transfer_action_files/jquery-2.js"></script><script type="text/javascript" src="transfer_action_files/materialize.js"></script><script type="text/javascript" src="transfer_action_files/jquery_003.js"></script><script type="text/javascript" src="transfer_action_files/toastr.js"></script><script type="text/javascript" src="transfer_action_files/jquery.js"></script><script type="text/javascript" src="transfer_action_files/init.js"></script><script type="text/javascript" src="transfer_action_files/msgpool.js"></script><script type="text/javascript" src="transfer_action_files/transfer_balance.js"></script><script type="text/javascript" src="transfer_action_files/jquery_002.js"></script>    <script type="text/javascript">
-        window.toastr.options = {
-            timeOut: 10000
-        }
-        $(function(){
-            $('.contact_info, .help').on("click",function(e){
-                console.log($(this).attr('href'));
-                e.preventDefault();
-                $("#contact_info_box").load($(this).attr('href'));
-
-            });
-
-
-            $('.show_password').on("click",function(){
-                var target=$(this).attr('rel');
-                if ($(this).prop('checked')){
-                    $('#'+target).attr('type','text');
-                } else {
-                    $('#'+target).attr('type','password');
-                }
-            });
-
-            $('.submit_btn').on('click',function(){
-                $.blockUI({
-                    message:'<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
-                    css: {
-                        border: 'none',
-                        padding: '15px',
-                        backgroundColor: '#000',
-                        '-webkit-border-radius': '10px',
-                        '-moz-border-radius': '10px',
-                        opacity: .5,
-                        color: '#fff'
-                    } });
-            });
-
-            var options = ['nauta.com.cu','nauta.co.cu'];
-            $("input.user-domain").mailtip({
-                mails: options,
-                offsetTop: 2
-            });
-            
-        });
-    </script>
-        
-
-<div class="material-tooltip" id="f5922c1d-ea52-0e1f-0672-80f170cf4384"><span>English</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="5d88cb8e-eb08-d542-2256-5e40adeeadf8"><span>Información de contacto</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="a4343039-0aad-b547-81d7-8f043e0e8947"><span>Ayuda</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="d8c2005b-fc03-8426-ef60-d879a7805a7e"><span>Salir</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="hiddendiv common"></div><div class="drag-target" style="left: 0px; touch-action: pan-y;"></div></body></html>
\ No newline at end of file
+<input type="hidden" name="csrf" value="security628f742a8cc1a">
\ No newline at end of file
diff --git a/test/assets/transfer_action_fail.html b/test/assets/transfer_action_fail.html
old mode 100644
new mode 100755
index 7fed865..81e2baf
--- a/test/assets/transfer_action_fail.html
+++ b/test/assets/transfer_action_fail.html
@@ -1,218 +1,56 @@
-<!DOCTYPE html>
-<html lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
-    <!-- CSS  -->
-
-    <link rel="shortcut icon" type="images/x-icon" href="https://www.portal.nauta.cu/media/img/nauta.gif">
-    <title>nauta. Transferir saldo</title>
-    <meta name="keywords" content="">
-    <meta name="description" content="">
-    <meta name="copyright" content="">
-    <script type="text/javascript">
-        var url_base = 'https://www.portal.nauta.cu/';
-    </script>
-    <link type="text/css" href="transfer_action_fail_files/icon.css" rel="stylesheet" media=""><link type="text/css" href="transfer_action_fail_files/materialize.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="transfer_action_fail_files/toastr.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="transfer_action_fail_files/mailtip.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="transfer_action_fail_files/style.css" rel="stylesheet" media="screen,projection"></head>
-<body>
-    <header>
-    <div class="navbar-fixed">
-        <nav class="orange" role="navigation">
-            <div class="nav-wrapper">
-                <div class="left paralelogramo hide-on-med-and-down"><img class="etecsa-logo responsive-img" src="transfer_action_fail_files/etecsa-logo-blanco50x50.png">
-                </div>
-                <a id="logo-container" href="#" class="brand-logo"><img class="nauta-logo" src="transfer_action_fail_files/logo-nauta-45.png">
-                </a>
-                <span class="hide-on-med-and-down title-blue title-portal">Portal de usuario</span>
-
-                <ul class="right hide-on-med-and-down">
-                    <li>
-                        <a class="tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/nauta/change_lang/en-en" data-tooltip="English" data-tooltip-id="9d653a1b-56b6-f22b-cc40-20b9efc71d25"><i class="mdi-action-language small"></i></a>                    </li>
-                    <li>
-                        <a class="tooltipped contact_info" data-position="bottom" data-delay="50" data-tooltip="Información de contacto" href="https://www.portal.nauta.cu/nauta/contact_info" data-tooltip-id="4062d12d-ccbd-f25a-6f62-86ddd48cbeb0">
-                            <i class="mdi-communication-quick-contacts-dialer"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a class="help tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/help/general" data-tooltip="Ayuda" data-tooltip-id="391a1321-8d7c-f66f-09ca-d7d870a75156">
-                            <i class="mdi-action-help"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a href="https://www.portal.nauta.cu/user/logout" class="tooltipped" data-position="bottom" data-delay="50" data-tooltip="Salir" data-tooltip-id="e91fad07-642a-637a-a3fe-ab79ae9d37d3"><i class="mdi-content-clear"></i></a>
-                    </li>
-                </ul>
-                                <ul id="nav-mobile" class="side-nav" style="left: -250px;">
-                    <li class="center-align etecsa-grey"><img src="transfer_action_fail_files/logo-etecsa_2.png" class="responsive-img etecsa-logo-2"></li>
-                    <li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/user_info"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/recharge_account"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Cambiar contraseña<i class="mdi-action-lock-open"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Detalle de operaciones<i class="mdi-action-view-list"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul></div></li></ul></li><li class="no-padding active">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Transferir saldo<i class="mdi-action-input"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul></div></li></ul></li>                    <li class="separator etecsa-blue-text"></li>
-                    <li class="no-padding etecsa-blue-text"><a class="collapsible-header" href="https://www.portal.nauta.cu/nauta/change_lang/en-en"><i class="mdi-action-language small"></i><span>English</span></a></li>
-                    <li class="no-padding"><a class="contact_info collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/nauta/contact_info"><i class="mdi-communication-quick-contacts-dialer small"></i><span>Información de contacto</span></a>
-                    </li>
-                    <li class="no-padding"><a class="help collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/help/general"><i class="mdi-action-help small"></i><span>Ayuda</span></a></li>
-                    <li class="no-padding"><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/user/logout"><i class="mdi-content-clear small"></i><span>Salir</span></a></li>
-                </ul>
-                <a href="#" data-activates="nav-mobile" class="button-collapse"><i class="mdi-navigation-menu"></i></a>
-            </div>
-        </nav>
-        <nav class="white hide-on-med-and-down" id="icon-nav">
-            <div class="nav-wrapper">
-                <ul class="right hide-on-med-and-down">
-                    <li class=""><a href="https://www.portal.nauta.cu/useraaa/user_info" class="etecsa-blue-text"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class=""><a href="https://www.portal.nauta.cu/useraaa/recharge_account" class="etecsa-blue-text"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_change_password_group"><i class="mdi-action-lock-open"></i><span>Cambiar contraseña<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_change_password_group" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_detail"><i class="mdi-action-view-list"></i><span>Detalle de operaciones<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_detail" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul>
-                        </li><li class="active">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_transfer"><i class="mdi-action-input"></i><span>Transferir saldo<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_transfer" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul>
-                        </li>                </ul>
-            </div>
-        </nav>
-    </div>
-
-</header>
-    <div id="content" class="container">
-<div class="row">
-	<div class="col s12">
-		<h3>Transferir saldo</h3>
-		<p class="sub-title">Permite realizar transferencia de saldo desde su cuenta de acceso a otra</p>
-	</div>
-
-</div>
-<div class="row">
-	<div class="card-panel">
-		<div class="row">
-			<div class="col s12">
-				<h5>Saldo actual</h5>
-				<p> $13,18 CUP</p>
-			</div>
-			                <form name="form_state" id="form_state" method="post" class="col s12">
-                    <input type="hidden" name="csrf" value="security628f742a8cc1a">                    <div class="row margin">
-                        <div class="input-field col s8 m4">
-                            <i class="mdi-editor-attach-money prefix grey-text"></i>
-                            <input type="text" id="transfer" name="transfer" maxlength="12" value="850,00" placeholder="0,00" required="" aria-required="true" class="active validate" autocomplete="off">
-                            <label class="center-align active" for="transfer">Importe a transferir </label>
-                        </div>
-                    </div>
-                    <div class="row margin">
-                        <div class="input-field col s10 m8">
-                            <i class="mdi-action-https prefix grey-text"></i>
-                            <input type="password" id="password_user" name="password_user" required="" aria-required="true" class="validate" maxlength="20" length="20">
-                            <label class="center-align" for="password_user">Contraseña de su cuenta de acceso </label>
-                        <span class="character-counter" style="float: right; font-size: 12px; height: 1px;"></span></div>
-                        <div class="input-field col s2 m4">
-                            <input type="checkbox" id="show_password" class="show_password" rel="password_user">
-                            <label for="show_password"><span class="hide-on-small-only">Mostrar contraseña</span></label>
-                        </div>
-                    </div>
-                    <div class="row margin">
-                        <div class="input-field col s12 m6">
-                            <i class="mdi-action-account-circle prefix grey-text"></i>
-                            <input type="text" id="id_cuenta" name="id_cuenta" class="user-domain" placeholder="usuario@dominio" value="lesly.cintra@nauta.co.cu" required="" aria-required="true" maxlength="46" length="46" autocomplete="off"><ul class="ui-mailtip" style="display: none; float: none; position: absolute; margin: 0px; padding: 0px; z-index: 10; top: 39px; left: 45px; width: auto; min-width: 418px;"></ul>
-                            <label class="center-align active" for="id_cuenta">Cuenta de acceso del destinatario </label>
-                        <span class="character-counter" style="float: right; font-size: 12px; height: 1px;"></span></div>
-                    </div>
-                    <div class="row">
-                        <div class="input-field col s12">
-                            <button id="btn_submit" name="btn_submit" type="button" data-target="modal-transfer-balance" class="modal-trigger btn waves-effect waves-light blue darken-4">
-                                Aceptar                            </button>
-                            <input name="action" type="hidden" value="checkdata">
-                        </div>
-                    </div>
-                </form>
-                		</div>
-	</div>
-</div>
-<div id="modal-transfer-balance" class="modal modal-fixed-footer">
-    <div class="modal-content">
-        <h3 class="valid">Confirme la operación</h3>
-        <p class="valid">
-            Usted está seguro que desea transferir&nbsp;
-            <span id="modal-money"></span>&nbsp;CUP&nbsp;
-            a la cuenta&nbsp;
-            <span id="modal-account"></span>
-        </p>
-        <p class="invalid hide">
-            No es posible enviar la información contenida en el formulario. Por favor revise los datos.        </p>
-    </div>
-    <div class="modal-footer">
-        <a href="#!" class="invalid hide modal-action modal-close waves-effect waves-light btn red">Aceptar</a>
-        <a href="#!" class="valid modal-action modal-close waves-effect waves-light btn grey">No</a>
-        <a href="#!" id="modal-yes" class="valid modal-action modal-close waves-effect waves-light btn submit_btn blue darken-4">Si</a>
-    </div>
-</div>
+<script type="text/javascript" src="transfer_action_fail_files/jquery-2.js"></script>
+<script type="text/javascript" src="transfer_action_fail_files/materialize.js"></script>
+<script type="text/javascript" src="transfer_action_fail_files/jquery_003.js"></script>
+<script type="text/javascript" src="transfer_action_fail_files/toastr.js"></script>
+<script type="text/javascript" src="transfer_action_fail_files/jquery.js"></script>
+<script type="text/javascript" src="transfer_action_fail_files/init.js"></script>
+<script type="text/javascript" src="transfer_action_fail_files/msgpool.js"></script>
+<script type="text/javascript" src="transfer_action_fail_files/transfer_balance.js"></script>
+<script type="text/javascript" src="transfer_action_fail_files/jquery_002.js"></script>
 <script type="text/javascript">
-    var priceOptions = {"centsSeparator":",","thousandsSeparator":" ","prefix":""};
-</script>
+    window.toastr.options = {
+        timeOut: 10000
+    }
+    $(function () {
+        $('.contact_info, .help').on("click", function (e) {
+            console.log($(this).attr('href'));
+            e.preventDefault();
+            $("#contact_info_box").load($(this).attr('href'));
 
-</div>    <div id="contact_info_box"></div>
-    <footer class="page-footer white grey-text text-darken-4">
-    <hr>
-    <div class="container">
-        <div class="row center">
-            <div class="col s12">
-                <p>© 2011 Empresa de Telecomunicaciones de Cuba S. A. (ETECSA). Todos los derechos reservados</p>
-                <p><a class="etecsa-blue-text" href="http://www.etecsa.cu/">www.etecsa.cu</a></p>
-            </div>
-        </div>
-    </div>
-    <div class="hidden" id="ajax-messages" data-ajax-connection-error="Existe un error de conexión de red. Puede ser que usted se haya desconectado de la red o el servicio se haya caido."></div>
-</footer><script type="text/javascript" src="transfer_action_fail_files/jquery-2.js"></script><script type="text/javascript" src="transfer_action_fail_files/materialize.js"></script><script type="text/javascript" src="transfer_action_fail_files/jquery_003.js"></script><script type="text/javascript" src="transfer_action_fail_files/toastr.js"></script><script type="text/javascript" src="transfer_action_fail_files/jquery.js"></script><script type="text/javascript" src="transfer_action_fail_files/init.js"></script><script type="text/javascript" src="transfer_action_fail_files/msgpool.js"></script><script type="text/javascript" src="transfer_action_fail_files/transfer_balance.js"></script><script type="text/javascript" src="transfer_action_fail_files/jquery_002.js"></script>    <script type="text/javascript">
-        window.toastr.options = {
-            timeOut: 10000
-        }
-        $(function(){
-            $('.contact_info, .help').on("click",function(e){
-                console.log($(this).attr('href'));
-                e.preventDefault();
-                $("#contact_info_box").load($(this).attr('href'));
+        });
 
-            });
 
+        $('.show_password').on("click", function () {
+            var target = $(this).attr('rel');
+            if ($(this).prop('checked')) {
+                $('#' + target).attr('type', 'text');
+            } else {
+                $('#' + target).attr('type', 'password');
+            }
+        });
 
-            $('.show_password').on("click",function(){
-                var target=$(this).attr('rel');
-                if ($(this).prop('checked')){
-                    $('#'+target).attr('type','text');
-                } else {
-                    $('#'+target).attr('type','password');
+        $('.submit_btn').on('click', function () {
+            $.blockUI({
+                message: '<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
+                css: {
+                    border: 'none',
+                    padding: '15px',
+                    backgroundColor: '#000',
+                    '-webkit-border-radius': '10px',
+                    '-moz-border-radius': '10px',
+                    opacity: .5,
+                    color: '#fff'
                 }
             });
+        });
 
-            $('.submit_btn').on('click',function(){
-                $.blockUI({
-                    message:'<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
-                    css: {
-                        border: 'none',
-                        padding: '15px',
-                        backgroundColor: '#000',
-                        '-webkit-border-radius': '10px',
-                        '-moz-border-radius': '10px',
-                        opacity: .5,
-                        color: '#fff'
-                    } });
-            });
-
-            var options = ['nauta.com.cu','nauta.co.cu'];
-            $("input.user-domain").mailtip({
-                mails: options,
-                offsetTop: 2
-            });
-            
+        var options = ['nauta.com.cu', 'nauta.co.cu'];
+        $("input.user-domain").mailtip({
+            mails: options,
+            offsetTop: 2
         });
-    </script>
-    <script type="text/javascript">toastr.error('<ul><li class="msg_error">Se han detectado algunos errores.<ul><li class="sub-message">El campo saldo a transferir debe ser menor o igual que 1318</li></ul></li></ul>');</script>    
 
-<div class="material-tooltip" id="9d653a1b-56b6-f22b-cc40-20b9efc71d25"><span>English</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="4062d12d-ccbd-f25a-6f62-86ddd48cbeb0"><span>Información de contacto</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="391a1321-8d7c-f66f-09ca-d7d870a75156"><span>Ayuda</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="e91fad07-642a-637a-a3fe-ab79ae9d37d3"><span>Salir</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="hiddendiv common"></div><div class="drag-target" style="left: 0px; touch-action: pan-y;"></div></body></html>
\ No newline at end of file
+    });
+</script>
+<script
+    type="text/javascript">toastr.error('<ul><li class="msg_error">Se han detectado algunos errores.<ul><li class="sub-message">El campo saldo a transferir debe ser menor o igual que 1318</li></ul></li></ul>');</script>
\ No newline at end of file
diff --git a/test/assets/transfer_action_success.html b/test/assets/transfer_action_success.html
old mode 100644
new mode 100755
index 1a96363..957d7bc
--- a/test/assets/transfer_action_success.html
+++ b/test/assets/transfer_action_success.html
@@ -1,218 +1,56 @@
-<!DOCTYPE html>
-<html lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
-    <!-- CSS  -->
-
-    <link rel="shortcut icon" type="images/x-icon" href="https://www.portal.nauta.cu/media/img/nauta.gif">
-    <title>nauta. Transferir saldo</title>
-    <meta name="keywords" content="">
-    <meta name="description" content="">
-    <meta name="copyright" content="">
-    <script type="text/javascript">
-        var url_base = 'https://www.portal.nauta.cu/';
-    </script>
-    <link type="text/css" href="transfers_action_success_files/icon.css" rel="stylesheet" media=""><link type="text/css" href="transfers_action_success_files/materialize.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="transfers_action_success_files/toastr.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="transfers_action_success_files/mailtip.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="transfers_action_success_files/style.css" rel="stylesheet" media="screen,projection"></head>
-<body>
-    <header>
-    <div class="navbar-fixed">
-        <nav class="orange" role="navigation">
-            <div class="nav-wrapper">
-                <div class="left paralelogramo hide-on-med-and-down"><img class="etecsa-logo responsive-img" src="transfers_action_success_files/etecsa-logo-blanco50x50.png">
-                </div>
-                <a id="logo-container" href="#" class="brand-logo"><img class="nauta-logo" src="transfers_action_success_files/logo-nauta-45.png">
-                </a>
-                <span class="hide-on-med-and-down title-blue title-portal">Portal de usuario</span>
-
-                <ul class="right hide-on-med-and-down">
-                    <li>
-                        <a class="tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/nauta/change_lang/en-en" data-tooltip="English" data-tooltip-id="b6cb75a5-8e7e-cb53-1d07-34fe45e3a535"><i class="mdi-action-language small"></i></a>                    </li>
-                    <li>
-                        <a class="tooltipped contact_info" data-position="bottom" data-delay="50" data-tooltip="Información de contacto" href="https://www.portal.nauta.cu/nauta/contact_info" data-tooltip-id="742a6b84-15e1-8a5f-ccf1-ec7fdd7f5734">
-                            <i class="mdi-communication-quick-contacts-dialer"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a class="help tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/help/general" data-tooltip="Ayuda" data-tooltip-id="bff2bf4b-3ca4-7c14-9a93-307a81636362">
-                            <i class="mdi-action-help"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a href="https://www.portal.nauta.cu/user/logout" class="tooltipped" data-position="bottom" data-delay="50" data-tooltip="Salir" data-tooltip-id="2b959cd8-f4ae-0d32-fa17-be69c2d0f40a"><i class="mdi-content-clear"></i></a>
-                    </li>
-                </ul>
-                                <ul id="nav-mobile" class="side-nav" style="left: -250px;">
-                    <li class="center-align etecsa-grey"><img src="transfers_action_success_files/logo-etecsa_2.png" class="responsive-img etecsa-logo-2"></li>
-                    <li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/user_info"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/recharge_account"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Cambiar contraseña<i class="mdi-action-lock-open"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Detalle de operaciones<i class="mdi-action-view-list"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul></div></li></ul></li><li class="no-padding active">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Transferir saldo<i class="mdi-action-input"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul></div></li></ul></li>                    <li class="separator etecsa-blue-text"></li>
-                    <li class="no-padding etecsa-blue-text"><a class="collapsible-header" href="https://www.portal.nauta.cu/nauta/change_lang/en-en"><i class="mdi-action-language small"></i><span>English</span></a></li>
-                    <li class="no-padding"><a class="contact_info collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/nauta/contact_info"><i class="mdi-communication-quick-contacts-dialer small"></i><span>Información de contacto</span></a>
-                    </li>
-                    <li class="no-padding"><a class="help collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/help/general"><i class="mdi-action-help small"></i><span>Ayuda</span></a></li>
-                    <li class="no-padding"><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/user/logout"><i class="mdi-content-clear small"></i><span>Salir</span></a></li>
-                </ul>
-                <a href="#" data-activates="nav-mobile" class="button-collapse"><i class="mdi-navigation-menu"></i></a>
-            </div>
-        </nav>
-        <nav class="white hide-on-med-and-down" id="icon-nav">
-            <div class="nav-wrapper">
-                <ul class="right hide-on-med-and-down">
-                    <li class=""><a href="https://www.portal.nauta.cu/useraaa/user_info" class="etecsa-blue-text"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class=""><a href="https://www.portal.nauta.cu/useraaa/recharge_account" class="etecsa-blue-text"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_change_password_group"><i class="mdi-action-lock-open"></i><span>Cambiar contraseña<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_change_password_group" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_detail"><i class="mdi-action-view-list"></i><span>Detalle de operaciones<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_detail" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul>
-                        </li><li class="active">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_transfer"><i class="mdi-action-input"></i><span>Transferir saldo<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_transfer" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul>
-                        </li>                </ul>
-            </div>
-        </nav>
-    </div>
-
-</header>
-    <div id="content" class="container">
-<div class="row">
-	<div class="col s12">
-		<h3>Transferir saldo</h3>
-		<p class="sub-title">Permite realizar transferencia de saldo desde su cuenta de acceso a otra</p>
-	</div>
-
-</div>
-<div class="row">
-	<div class="card-panel">
-		<div class="row">
-			<div class="col s12">
-				<h5>Saldo actual</h5>
-				<p> $13,19 CUP</p>
-			</div>
-			                <form name="form_state" id="form_state" method="post" class="col s12">
-                    <input type="hidden" name="csrf" value="security628f742a8cc1a">                    <div class="row margin">
-                        <div class="input-field col s8 m4">
-                            <i class="mdi-editor-attach-money prefix grey-text"></i>
-                            <input type="text" id="transfer" name="transfer" maxlength="12" value="1,56" placeholder="0,00" required="" aria-required="true" class="active validate" autocomplete="off">
-                            <label class="center-align active" for="transfer">Importe a transferir </label>
-                        </div>
-                    </div>
-                    <div class="row margin">
-                        <div class="input-field col s10 m8">
-                            <i class="mdi-action-https prefix grey-text"></i>
-                            <input type="password" id="password_user" name="password_user" required="" aria-required="true" class="validate" maxlength="20" length="20">
-                            <label class="center-align active" for="password_user">Contraseña de su cuenta de acceso </label>
-                        <span class="character-counter" style="float: right; font-size: 12px; height: 1px;"></span></div>
-                        <div class="input-field col s2 m4">
-                            <input type="checkbox" id="show_password" class="show_password" rel="password_user">
-                            <label for="show_password"><span class="hide-on-small-only">Mostrar contraseña</span></label>
-                        </div>
-                    </div>
-                    <div class="row margin">
-                        <div class="input-field col s12 m6">
-                            <i class="mdi-action-account-circle prefix grey-text"></i>
-                            <input type="text" id="id_cuenta" name="id_cuenta" class="user-domain" placeholder="usuario@dominio" required="" aria-required="true" maxlength="46" length="46" autocomplete="off"><ul class="ui-mailtip" style="display: none; float: none; position: absolute; margin: 0px; padding: 0px; z-index: 10; top: 39px; left: 45px; width: auto; min-width: 418px;"></ul>
-                            <label class="center-align active" for="id_cuenta">Cuenta de acceso del destinatario </label>
-                        <span class="character-counter" style="float: right; font-size: 12px; height: 1px;"></span></div>
-                    </div>
-                    <div class="row">
-                        <div class="input-field col s12">
-                            <button id="btn_submit" name="btn_submit" type="button" data-target="modal-transfer-balance" class="modal-trigger btn waves-effect waves-light blue darken-4">
-                                Aceptar                            </button>
-                            <input name="action" type="hidden" value="checkdata">
-                        </div>
-                    </div>
-                </form>
-                		</div>
-	</div>
-</div>
-<div id="modal-transfer-balance" class="modal modal-fixed-footer">
-    <div class="modal-content">
-        <h3 class="valid">Confirme la operación</h3>
-        <p class="valid">
-            Usted está seguro que desea transferir&nbsp;
-            <span id="modal-money"></span>&nbsp;CUP&nbsp;
-            a la cuenta&nbsp;
-            <span id="modal-account"></span>
-        </p>
-        <p class="invalid hide">
-            No es posible enviar la información contenida en el formulario. Por favor revise los datos.        </p>
-    </div>
-    <div class="modal-footer">
-        <a href="#!" class="invalid hide modal-action modal-close waves-effect waves-light btn red">Aceptar</a>
-        <a href="#!" class="valid modal-action modal-close waves-effect waves-light btn grey">No</a>
-        <a href="#!" id="modal-yes" class="valid modal-action modal-close waves-effect waves-light btn submit_btn blue darken-4">Si</a>
-    </div>
-</div>
+<script type="text/javascript" src="transfers_action_success_files/jquery-2.js"></script>
+<script type="text/javascript" src="transfers_action_success_files/materialize.js"></script>
+<script type="text/javascript" src="transfers_action_success_files/jquery_003.js"></script>
+<script type="text/javascript" src="transfers_action_success_files/toastr.js"></script>
+<script type="text/javascript" src="transfers_action_success_files/jquery.js"></script>
+<script type="text/javascript" src="transfers_action_success_files/init.js"></script>
+<script type="text/javascript" src="transfers_action_success_files/msgpool.js"></script>
+<script type="text/javascript" src="transfers_action_success_files/transfer_balance.js"></script>
+<script type="text/javascript" src="transfers_action_success_files/jquery_002.js"></script>
 <script type="text/javascript">
-    var priceOptions = {"centsSeparator":",","thousandsSeparator":" ","prefix":""};
-</script>
+    window.toastr.options = {
+        timeOut: 10000
+    }
+    $(function () {
+        $('.contact_info, .help').on("click", function (e) {
+            console.log($(this).attr('href'));
+            e.preventDefault();
+            $("#contact_info_box").load($(this).attr('href'));
 
-</div>    <div id="contact_info_box"></div>
-    <footer class="page-footer white grey-text text-darken-4">
-    <hr>
-    <div class="container">
-        <div class="row center">
-            <div class="col s12">
-                <p>© 2011 Empresa de Telecomunicaciones de Cuba S. A. (ETECSA). Todos los derechos reservados</p>
-                <p><a class="etecsa-blue-text" href="http://www.etecsa.cu/">www.etecsa.cu</a></p>
-            </div>
-        </div>
-    </div>
-    <div class="hidden" id="ajax-messages" data-ajax-connection-error="Existe un error de conexión de red. Puede ser que usted se haya desconectado de la red o el servicio se haya caido."></div>
-</footer><script type="text/javascript" src="transfers_action_success_files/jquery-2.js"></script><script type="text/javascript" src="transfers_action_success_files/materialize.js"></script><script type="text/javascript" src="transfers_action_success_files/jquery_003.js"></script><script type="text/javascript" src="transfers_action_success_files/toastr.js"></script><script type="text/javascript" src="transfers_action_success_files/jquery.js"></script><script type="text/javascript" src="transfers_action_success_files/init.js"></script><script type="text/javascript" src="transfers_action_success_files/msgpool.js"></script><script type="text/javascript" src="transfers_action_success_files/transfer_balance.js"></script><script type="text/javascript" src="transfers_action_success_files/jquery_002.js"></script>    <script type="text/javascript">
-        window.toastr.options = {
-            timeOut: 10000
-        }
-        $(function(){
-            $('.contact_info, .help').on("click",function(e){
-                console.log($(this).attr('href'));
-                e.preventDefault();
-                $("#contact_info_box").load($(this).attr('href'));
+        });
 
-            });
 
+        $('.show_password').on("click", function () {
+            var target = $(this).attr('rel');
+            if ($(this).prop('checked')) {
+                $('#' + target).attr('type', 'text');
+            } else {
+                $('#' + target).attr('type', 'password');
+            }
+        });
 
-            $('.show_password').on("click",function(){
-                var target=$(this).attr('rel');
-                if ($(this).prop('checked')){
-                    $('#'+target).attr('type','text');
-                } else {
-                    $('#'+target).attr('type','password');
+        $('.submit_btn').on('click', function () {
+            $.blockUI({
+                message: '<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
+                css: {
+                    border: 'none',
+                    padding: '15px',
+                    backgroundColor: '#000',
+                    '-webkit-border-radius': '10px',
+                    '-moz-border-radius': '10px',
+                    opacity: .5,
+                    color: '#fff'
                 }
             });
+        });
 
-            $('.submit_btn').on('click',function(){
-                $.blockUI({
-                    message:'<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
-                    css: {
-                        border: 'none',
-                        padding: '15px',
-                        backgroundColor: '#000',
-                        '-webkit-border-radius': '10px',
-                        '-moz-border-radius': '10px',
-                        opacity: .5,
-                        color: '#fff'
-                    } });
-            });
-
-            var options = ['nauta.com.cu','nauta.co.cu'];
-            $("input.user-domain").mailtip({
-                mails: options,
-                offsetTop: 2
-            });
-            
+        var options = ['nauta.com.cu', 'nauta.co.cu'];
+        $("input.user-domain").mailtip({
+            mails: options,
+            offsetTop: 2
         });
-    </script>
-    <script type="text/javascript">toastr.success('<ul><li class="msg_message">La transferencia se ha realizado satisfactoriamente.<ul><li class="sub-message">Se transfirió $0,01 CUP a la cuenta lesly.cintra@nauta.co.cu</li></ul></li></ul>');</script>    
 
-<div class="material-tooltip" id="b6cb75a5-8e7e-cb53-1d07-34fe45e3a535"><span>English</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="742a6b84-15e1-8a5f-ccf1-ec7fdd7f5734"><span>Información de contacto</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="bff2bf4b-3ca4-7c14-9a93-307a81636362"><span>Ayuda</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="2b959cd8-f4ae-0d32-fa17-be69c2d0f40a"><span>Salir</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="hiddendiv common"></div><div class="drag-target" style="left: 0px; touch-action: pan-y;"></div></body></html>
\ No newline at end of file
+    });
+</script>
+<script
+    type="text/javascript">toastr.success('<ul><li class="msg_message">La transferencia se ha realizado satisfactoriamente.<ul><li class="sub-message">Se transfirió $0,01 CUP a la cuenta lesly.cintra@nauta.co.cu</li></ul></li></ul>');</script>
\ No newline at end of file
diff --git a/test/assets/transfer_detail.html b/test/assets/transfer_detail.html
deleted file mode 100644
index d18cffa..0000000
--- a/test/assets/transfer_detail.html
+++ /dev/null
@@ -1,194 +0,0 @@
-<!DOCTYPE html>
-<html lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
-    <!-- CSS  -->
-
-    <link rel="shortcut icon" type="images/x-icon" href="https://www.portal.nauta.cu/media/img/nauta.gif">
-    <title>nauta. Transferencias</title>
-    <meta name="keywords" content="">
-    <meta name="description" content="">
-    <meta name="copyright" content="">
-    <script type="text/javascript">
-        var url_base = 'https://www.portal.nauta.cu/';
-    </script>
-    <link type="text/css" href="transfer_detail_files/icon.css" rel="stylesheet" media=""><link type="text/css" href="transfer_detail_files/materialize.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="transfer_detail_files/toastr.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="transfer_detail_files/mailtip.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="transfer_detail_files/style.css" rel="stylesheet" media="screen,projection"></head>
-<body>
-    <header>
-    <div class="navbar-fixed">
-        <nav class="orange" role="navigation">
-            <div class="nav-wrapper">
-                <div class="left paralelogramo hide-on-med-and-down"><img class="etecsa-logo responsive-img" src="transfer_detail_files/etecsa-logo-blanco50x50.png">
-                </div>
-                <a id="logo-container" href="#" class="brand-logo"><img class="nauta-logo" src="transfer_detail_files/logo-nauta-45.png">
-                </a>
-                <span class="hide-on-med-and-down title-blue title-portal">Portal de usuario</span>
-
-                <ul class="right hide-on-med-and-down">
-                    <li>
-                        <a class="tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/nauta/change_lang/en-en" data-tooltip="English" data-tooltip-id="38b89c8a-2f1f-88cb-9bd8-1564536822f4"><i class="mdi-action-language small"></i></a>                    </li>
-                    <li>
-                        <a class="tooltipped contact_info" data-position="bottom" data-delay="50" data-tooltip="Información de contacto" href="https://www.portal.nauta.cu/nauta/contact_info" data-tooltip-id="f6ad3504-22ac-48ba-5e47-36d47eff6919">
-                            <i class="mdi-communication-quick-contacts-dialer"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a class="help tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/help/general" data-tooltip="Ayuda" data-tooltip-id="80f9b02d-8cd1-c846-0911-14c6a533cd74">
-                            <i class="mdi-action-help"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a href="https://www.portal.nauta.cu/user/logout" class="tooltipped" data-position="bottom" data-delay="50" data-tooltip="Salir" data-tooltip-id="884e240d-d2cb-541f-530f-938acaacd14b"><i class="mdi-content-clear"></i></a>
-                    </li>
-                </ul>
-                                <ul id="nav-mobile" class="side-nav" style="left: -250px;">
-                    <li class="center-align etecsa-grey"><img src="transfer_detail_files/logo-etecsa_2.png" class="responsive-img etecsa-logo-2"></li>
-                    <li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/user_info"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/recharge_account"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Cambiar contraseña<i class="mdi-action-lock-open"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul></div></li></ul></li><li class="no-padding active">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Detalle de operaciones<i class="mdi-action-view-list"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Transferir saldo<i class="mdi-action-input"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul></div></li></ul></li>                    <li class="separator etecsa-blue-text"></li>
-                    <li class="no-padding etecsa-blue-text"><a class="collapsible-header" href="https://www.portal.nauta.cu/nauta/change_lang/en-en"><i class="mdi-action-language small"></i><span>English</span></a></li>
-                    <li class="no-padding"><a class="contact_info collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/nauta/contact_info"><i class="mdi-communication-quick-contacts-dialer small"></i><span>Información de contacto</span></a>
-                    </li>
-                    <li class="no-padding"><a class="help collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/help/general"><i class="mdi-action-help small"></i><span>Ayuda</span></a></li>
-                    <li class="no-padding"><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/user/logout"><i class="mdi-content-clear small"></i><span>Salir</span></a></li>
-                </ul>
-                <a href="#" data-activates="nav-mobile" class="button-collapse"><i class="mdi-navigation-menu"></i></a>
-            </div>
-        </nav>
-        <nav class="white hide-on-med-and-down" id="icon-nav">
-            <div class="nav-wrapper">
-                <ul class="right hide-on-med-and-down">
-                    <li class=""><a href="https://www.portal.nauta.cu/useraaa/user_info" class="etecsa-blue-text"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class=""><a href="https://www.portal.nauta.cu/useraaa/recharge_account" class="etecsa-blue-text"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_change_password_group"><i class="mdi-action-lock-open"></i><span>Cambiar contraseña<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_change_password_group" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul>
-                        </li><li class="active">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_detail"><i class="mdi-action-view-list"></i><span>Detalle de operaciones<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_detail" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text active"><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_transfer"><i class="mdi-action-input"></i><span>Transferir saldo<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_transfer" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul>
-                        </li>                </ul>
-            </div>
-        </nav>
-    </div>
-
-</header>
-    <div id="content" class="container"><script lang="javascript">
-
-</script>
-<div id="form">
-    <div class="row">
-        <div class="col x12">
-            <h3>Transferencias</h3>
-            <p class="sub-title">Visualizar el detalle de las transferencias realizadas desde su cuenta de acceso</p>
-        </div>
-    </div>
-    <div class="row">
-        <div class="col s12 m12 l 12">
-            <div class="card-panel">
-                <div class="row">
-                    <form name="service_detail" id="service_detail" method="post" action="transfer_detail_summary" class="col s12">
-                        <input type="hidden" name="csrf" value="security62862b94db69a">                        <div class="row">
-                            <div class="input-field col s12 m6">
-                                <div class="select-wrapper"><span class="caret">▼</span><input type="text" class="select-dropdown" readonly="true" data-activates="select-options-247dd96e-f5e4-7d2f-bcc7-d8716266e803" value="Mayo"><ul id="select-options-247dd96e-f5e4-7d2f-bcc7-d8716266e803" class="dropdown-content select-dropdown "><li class=""><span>Mayo</span></li><li class=""><span>Abril</span></li><li class=""><span>Marzo</span></li></ul><select name="year_month" class="initialized">
-<option value="2022-05" selected="selected">Mayo</option>
-<option value="2022-04">Abril</option>
-<option value="2022-03">Marzo</option>
-</select></div>                                <label>Seleccione el mes a consultar</label>
-                            </div>
-                            <div class="input-field col s12 m6">
-                                <div class="input-field col s12 m12">
-                                    <button name="btn_submit" type="submit" class="btn submit_btn waves-effect waves-light blue darken-4">
-                                        Aceptar                                    </button>
-                                    <input type="hidden" name="list_type" value="transfer_detail">
-                                </div>
-                            </div>
-                        </div>
-                    </form>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-<div id="details" class="hide">
-    <ul class="collapsible" data-collapsible="accordion" id="accordion">
-        <li class="active">
-            <div class="collapsible-header active" id="first"><i class="mdi-action-view-list"></i> Resumen</div>
-            <div class="collapsible-body" id="summary" style="display: block; padding-top: 0px; margin-top: 0px; padding-bottom: 0px; margin-bottom: 0px;"></div>
-        </li>
-        <li>
-            <div class="collapsible-header" id="list-btn" href="">
-                <i class="mdi-action-list"></i> Detalles            </div>
-            <div class="collapsible-body" style=""><p id="list-content"></p></div>
-        </li>
-    </ul>
-</div>
-</div>    <div id="contact_info_box"></div>
-    <footer class="page-footer white grey-text text-darken-4">
-    <hr>
-    <div class="container">
-        <div class="row center">
-            <div class="col s12">
-                <p>© 2011 Empresa de Telecomunicaciones de Cuba S. A. (ETECSA). Todos los derechos reservados</p>
-                <p><a class="etecsa-blue-text" href="http://www.etecsa.cu/">www.etecsa.cu</a></p>
-            </div>
-        </div>
-    </div>
-    <div class="hidden" id="ajax-messages" data-ajax-connection-error="Existe un error de conexión de red. Puede ser que usted se haya desconectado de la red o el servicio se haya caido."></div>
-</footer><script type="text/javascript" src="transfer_detail_files/jquery-2.js"></script><script type="text/javascript" src="transfer_detail_files/materialize.js"></script><script type="text/javascript" src="transfer_detail_files/jquery_002.js"></script><script type="text/javascript" src="transfer_detail_files/toastr.js"></script><script type="text/javascript" src="transfer_detail_files/jquery.js"></script><script type="text/javascript" src="transfer_detail_files/init.js"></script><script type="text/javascript" src="transfer_detail_files/msgpool.js"></script><script type="text/javascript" src="transfer_detail_files/service_detail.js"></script>    <script type="text/javascript">
-        window.toastr.options = {
-            timeOut: 10000
-        }
-        $(function(){
-            $('.contact_info, .help').on("click",function(e){
-                console.log($(this).attr('href'));
-                e.preventDefault();
-                $("#contact_info_box").load($(this).attr('href'));
-
-            });
-
-
-            $('.show_password').on("click",function(){
-                var target=$(this).attr('rel');
-                if ($(this).prop('checked')){
-                    $('#'+target).attr('type','text');
-                } else {
-                    $('#'+target).attr('type','password');
-                }
-            });
-
-            $('.submit_btn').on('click',function(){
-                $.blockUI({
-                    message:'<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
-                    css: {
-                        border: 'none',
-                        padding: '15px',
-                        backgroundColor: '#000',
-                        '-webkit-border-radius': '10px',
-                        '-moz-border-radius': '10px',
-                        opacity: .5,
-                        color: '#fff'
-                    } });
-            });
-
-            var options = ['nauta.com.cu','nauta.co.cu'];
-            $("input.user-domain").mailtip({
-                mails: options,
-                offsetTop: 2
-            });
-            
-        });
-    </script>
-        
-
-<div class="material-tooltip" id="38b89c8a-2f1f-88cb-9bd8-1564536822f4"><span>English</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="f6ad3504-22ac-48ba-5e47-36d47eff6919"><span>Información de contacto</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="80f9b02d-8cd1-c846-0911-14c6a533cd74"><span>Ayuda</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="884e240d-d2cb-541f-530f-938acaacd14b"><span>Salir</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="hiddendiv common"></div><div class="drag-target" style="left: 0px; touch-action: pan-y;"></div></body></html>
\ No newline at end of file
diff --git a/test/assets/transfers_list.html b/test/assets/transfers_list.html
new file mode 100755
index 0000000..adb49e5
--- /dev/null
+++ b/test/assets/transfers_list.html
@@ -0,0 +1,48 @@
+<div>
+    <table style="width:100%" class="striped bordered highlight responsive-table" cellspacing="0" cellpadding="3">
+        <thead>
+            <tr>
+                <th>Fecha</th>
+                <th>Importe</th>
+                <th>Cuenta Destino</th>
+            </tr>
+        </thead>
+
+        <tbody>
+            <tr>
+                <td>17/12/2022 18:27:13</td>
+                <td>$25,00</td>
+                <td>user.name@nauta.com.cu</td>
+            </tr>
+            <tr>
+                <td>24/12/2022 10:30:11</td>
+                <td>$25,00</td>
+                <td>user.name@nauta.com.cu</td>
+            </tr>
+
+        </tbody>
+    </table>
+    <div class="right-align">
+        <ul class="pagination">
+            <li class="disabled hide-on-small-only icon">
+                <a href="/useraaa/transfer_detail_list/2022-12/2" class="pagination-link"><i
+                        class="mdi-navigation-arrow-back small"></i></a>
+            </li>
+            <li class="disabled hide-on-small-only icon">
+                <a href="/useraaa/transfer_detail_list/2022-12/2" class="pagination-link"><i
+                        class="mdi-navigation-chevron-left small"></i></a>
+            </li>
+            <li class="active"><a href="/useraaa/transfer_detail_list/2022-12/2" class="pagination-link">1</a></li>
+            <li class="disabled hide-on-small-only icon">
+                <a href="/useraaa/transfer_detail_list/2022-12/2" class="pagination-link"><i
+                        class="mdi-navigation-chevron-right small"></i></a>
+            </li>
+            <li class="disabled  hide-on-small-only icon">
+                <a href="/useraaa/transfer_detail_list/2022-12/2" class="pagination-link"><i
+                        class="mdi-navigation-arrow-forward small"></i></a>
+            </li>
+            <li class="hide-on-med-and-down"><span class="">2 Registros</span></li>
+            <li class="hide-on-med-and-down"><span class="">1 Páginas</span></li>
+        </ul>
+    </div>
+</div>
\ No newline at end of file
diff --git a/test/assets/transfers_summary.html b/test/assets/transfers_summary.html
new file mode 100755
index 0000000..abef0f9
--- /dev/null
+++ b/test/assets/transfers_summary.html
@@ -0,0 +1,22 @@
+<div class="container" id="content">
+    <div class="row">
+        <div class="col s12 m6 l4">
+            <div class="card">
+                <div class="card-content orange darken-2 white-text">
+                    <div class="card-stats-title"><i class="mdi-action-swap-vert small"></i> Transferencias</div>
+                    <h5 class="card-stats-number">2</h5>
+                    <input type="hidden" name="count" value="2">
+                    <input type="hidden" name="year_month_selected" value="2022-12">
+                </div>
+            </div>
+        </div>
+        <div class="col s12 m6 l4">
+            <div class="card">
+                <div class="card-content teal darken-1 white-text">
+                    <div class="card-stats-title"><i class="mdi-editor-attach-money small"></i> Importe Total</div>
+                    <h5 class="card-stats-number">$50,00</h5>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/test/assets/user_credit.html b/test/assets/user_credit.html
old mode 100644
new mode 100755
index b7b95e2..af05c82
--- a/test/assets/user_credit.html
+++ b/test/assets/user_credit.html
@@ -1,174 +1,78 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-		<meta http-equiv="content-type" content="text/html; charset=UTF-8">
-		<meta http-equiv="pragma" content="no-cache">
-		<meta http-equiv="cache-control" content="no-store">
-		<meta http-equiv="expires" content="0">
-		<meta http-equiv="keywords" content=" ">
-		<meta http-equiv="description" content=" ">
-		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-		<script type="text/javascript" src="user_credit_files/jquery.js"></script>
-		<title>Información de usuario
-		</title>
-		<link href="user_credit_files/wifi.css" rel="stylesheet" type="text/css">
-		<link href="user_credit_files/form.css" rel="stylesheet" type="text/css">
-		<script type="text/javascript">
-			function tologinpage()
-			{
-			    $('#formulario').attr('action', '/showlogin.do');
-				$('#formulario').submit();
-			}
-		</script>
-	</head>
+<div id="userinfo">
+	<table id="sessioninfo">
+		<tbody>
+			<tr>
+				<td class="key">
+					Estado de la cuenta:
+				</td>
+				<td>
+					Activa
+				</td>
+			</tr>
+			<tr>
+				<td class="key">
+					Crédito:
+				</td>
+				<td>
+					37.82 CUP
+				</td>
+			</tr>
+			<tr>
+				<td class="key">
+					Fecha de expiración:
+				</td>
+				<td>
+					No especificada
+				</td>
+			</tr>
+			<tr>
+				<td class="key">
+					Áreas de acceso:
+				</td>
+				<td>
+					Acceso desde todas las áreas de Internet
+				</td>
+			</tr>
+		</tbody>
+	</table>
+	<br>
+	<table id="sesiontraza">
+		<caption>
+			Últimas sesiones
+		</caption>
+		<thead>
+			<tr>
+				<th>
+					Desde
+				</th>
+				<th>
+					Hasta
+				</th>
+				<th>
+					Tiempo
+				</th>
+			</tr>
+		</thead>
+		<tbody>
 
-	<body>
-		
-		<div id="header">
-			<img src="user_credit_files/nauta_wifi.jpg" id="logo_nauta">
-			<img src="user_credit_files/etecsa.jpg" id="logo_etecsa">
-		</div>
-        
-          		<div id="contenedor">
-			
+			<tr>
+				<td>2022/05/21 07:07:17</td>
+				<td>2022/05/21 07:15:42</td>
+				<td>00:08:25</td>
+			</tr>
 
+			<tr>
+				<td>2022/05/21 05:43:48</td>
+				<td>2022/05/21 06:36:15</td>
+				<td>00:52:27</td>
+			</tr>
 
+			<tr>
+				<td>2022/05/21 05:40:19</td>
+				<td>2022/05/21 05:42:10</td>
+				<td>00:01:51</td>
+			</tr>
 
-
-
-
-
-
-
-
-<script type="text/javascript" src="user_credit_files/validate.js"></script>
-<script type="text/javascript">
-	var currentURL = new RegExp("//nauta_etecsa/OnlineURL/pc_userinfo.jsp");
-</script>
-<header>
-	<img src="user_credit_files/contenedor_bg.jpg" id="bg">
-
-	<ul id="menu_lang" class="clearfix">
-		<li class="sel" id="es_ESsel"><a href="#" onclick="javascript:switchLang('es_ES')">Español</a></li>
-		<li class="" id="en_USsel"><a href="#" onclick="javascript:switchLang('en_US')">English</a></li>
-	</ul>
-	<form id="changelang" action="#" method="post">
-	    <input type="hidden" value="" id="lang" name="lang">
-	    <input type="hidden" value="" id="currentURL" name="currentURL">
-	<input type="hidden" name="CSRFHW" value="df13e32cf0e87991d51d76f80e150372"></form>
-</header>
-			<div id="int">
-				<div class="blq">
-					<div class="title">
-						Información de usuario
-					</div>
-					<div style="padding: 20px;">
-						<div id="userinfo">
-							<table id="sessioninfo">
-								<tbody>
-									<tr>
-										<td class="key">
-											Estado de la cuenta:
-										</td>
-										<td>
-											Activa
-										</td>
-									</tr>
-									<tr>
-										<td class="key">
-											Crédito:
-										</td>
-										<td>
-											37.82 CUP 
-										</td>
-									</tr>
-									<tr>
-										<td class="key">
-											Fecha de expiración:
-										</td>
-										<td>
-											No especificada 
-										</td>
-									</tr>
-									<tr>
-										<td class="key">
-											Áreas de acceso:
-										</td>
-										<td>
-											Acceso desde todas las áreas de Internet
-										</td>
-									</tr>
-								</tbody>
-							</table>
-							<br>
-							<table id="sesiontraza">
-								<caption>
-									Últimas sesiones
-								</caption>
-								<thead>
-									<tr>
-										<th>
-											Desde
-										</th>
-										<th>
-											Hasta
-										</th>
-										<th>
-											Tiempo
-										</th>
-									</tr>
-								</thead>
-								<tbody>
-									
-									    <tr>
-											<td>2022/05/21 07:07:17</td>
-											<td>2022/05/21 07:15:42</td>
-											<td>00:08:25</td>
-										</tr>
-									
-									    <tr>
-											<td>2022/05/21 05:43:48</td>
-											<td>2022/05/21 06:36:15</td>
-											<td>00:52:27</td>
-										</tr>
-									
-									    <tr>
-											<td>2022/05/21 05:40:19</td>
-											<td>2022/05/21 05:42:10</td>
-											<td>00:01:51</td>
-										</tr>
-									
-								</tbody>
-							</table>
-						</div>
-						<div style="margin-top: 10px;">
-							<form class="form" action="/showlogin.do" method="post" id="formulario">
-								<!-- [false alarm:Cross-Site Scripting: Reflected] -->
-								<input type="hidden" name="wlanuserip" id="wlanuserip" value="10.201.14.208">
-					            <!-- [false alarm:Cross-Site Scripting: Reflected] -->
-					            <input type="hidden" name="wlanacname" id="wlanacname" value="">
-					            <!-- [false alarm:Cross-Site Scripting: Reflected] -->
-					            <input type="hidden" name="wlanparameter" id="wlanparameter" value="">
-					            <!-- [false alarm:Cross-Site Scripting: Reflected] -->
-					            <input type="hidden" name="firsturl" id="firsturl" value="notFound.jsp">
-								<!-- [false alarm:Cross-Site Scripting: Reflected] -->
-								<input type="hidden" name="ssid" id="ssid" value="wifi_etecsa">
-								<!-- [false alarm:Cross-Site Scripting: Reflected] -->
-								<input type="hidden" name="usertype" id="usertype" value="">
-								<!-- [false alarm:Cross-Site Scripting: Reflected] -->
-								<input type="hidden" name="gotopage" id="gotopage" value="/nauta_etecsa/LoginURL/pc_login.jsp">
-								<!-- [false alarm:Cross-Site Scripting: Reflected] -->
-								<input type="hidden" name="successpage" id="successpage" value="/nauta_etecsa/OnlineURL/pc_index.jsp">
-								<!-- [false alarm:Cross-Site Scripting: Reflected] -->
-								<input type="hidden" name="loggerId" id="loggerId" value="20220521085415218">
-								<!-- [false alarm:Cross-Site Scripting: Reflected] -->
-								<input type="hidden" name="lang" id="lang" value="es_ES">
-							    <input class="btn" style="float: inherit;" name="yt0" value="Atras" type="button" onclick="tologinpage()">
-						</form></div>
-					</div>
-				</div>
-			</div>
-		</div>
-          
-        
-	
-</body></html>
\ No newline at end of file
+		</tbody>
+	</table>
+</div>
\ No newline at end of file
diff --git a/test/assets/user_info.html b/test/assets/user_info.html
old mode 100644
new mode 100755
index 90abcd5..9f92d23
--- a/test/assets/user_info.html
+++ b/test/assets/user_info.html
@@ -1,210 +1,131 @@
-<!DOCTYPE html>
-<html lang="en"><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
-    <!-- CSS  -->
-
-    <link rel="shortcut icon" type="images/x-icon" href="https://www.portal.nauta.cu/media/img/nauta.gif">
-    <title>nauta. Mi cuenta</title>
-    <meta name="keywords" content="">
-    <meta name="description" content="">
-    <meta name="copyright" content="">
-    <script type="text/javascript">
-        var url_base = 'https://www.portal.nauta.cu/';
-    </script>
-    <link type="text/css" href="user_info_files/icon.css" rel="stylesheet" media=""><link type="text/css" href="user_info_files/materialize.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="user_info_files/toastr.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="user_info_files/mailtip.css" rel="stylesheet" media="screen,projection"><link type="text/css" href="user_info_files/style.css" rel="stylesheet" media="screen,projection"></head>
-<body>
-    <header>
-    <div class="navbar-fixed">
-        <nav class="orange" role="navigation">
-            <div class="nav-wrapper">
-                <div class="left paralelogramo hide-on-med-and-down"><img class="etecsa-logo responsive-img" src="user_info_files/etecsa-logo-blanco50x50.png">
-                </div>
-                <a id="logo-container" href="#" class="brand-logo"><img class="nauta-logo" src="user_info_files/logo-nauta-45.png">
-                </a>
-                <span class="hide-on-med-and-down title-blue title-portal">Portal de usuario</span>
-
-                <ul class="right hide-on-med-and-down">
-                    <li>
-                        <a class="tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/nauta/change_lang/en-en" data-tooltip="English" data-tooltip-id="d3a6c88e-1233-b593-bb0e-526e8d6b1e9c"><i class="mdi-action-language small"></i></a>                    </li>
-                    <li>
-                        <a class="tooltipped contact_info" data-position="bottom" data-delay="50" data-tooltip="Información de contacto" href="https://www.portal.nauta.cu/nauta/contact_info" data-tooltip-id="a1df0ab7-b9ee-f46a-ebfc-7e0b8fc36cef">
-                            <i class="mdi-communication-quick-contacts-dialer"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a class="help tooltipped" data-position="bottom" data-delay="50" href="https://www.portal.nauta.cu/help/general" data-tooltip="Ayuda" data-tooltip-id="83751694-eb39-10d5-a0a0-2defde312334">
-                            <i class="mdi-action-help"></i>
-                        </a>
-                    </li>
-                    <li>
-                        <a href="https://www.portal.nauta.cu/user/logout" class="tooltipped" data-position="bottom" data-delay="50" data-tooltip="Salir" data-tooltip-id="ac9924b6-cc0c-3b48-b38f-98120ea4f07b"><i class="mdi-content-clear"></i></a>
-                    </li>
-                </ul>
-                                <ul id="nav-mobile" class="side-nav" style="left: -250px;">
-                    <li class="center-align etecsa-grey"><img src="user_info_files/logo-etecsa_2.png" class="responsive-img etecsa-logo-2"></li>
-                    <li class="no-padding active"><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/user_info"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class="no-padding "><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/useraaa/recharge_account"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Cambiar contraseña<i class="mdi-action-lock-open"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Detalle de operaciones<i class="mdi-action-view-list"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul></div></li></ul></li><li class="no-padding ">
-                        <ul class="collapsible collapsible-accordion etecsa-blue-text">
-                            <li>
-                                <a class="collapsible-header etecsa-blue-text" href="#">Transferir saldo<i class="mdi-action-input"></i></a>
-                                <div class="collapsible-body" style="">
-                                    <ul><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul></div></li></ul></li>                    <li class="separator etecsa-blue-text"></li>
-                    <li class="no-padding etecsa-blue-text"><a class="collapsible-header" href="https://www.portal.nauta.cu/nauta/change_lang/en-en"><i class="mdi-action-language small"></i><span>English</span></a></li>
-                    <li class="no-padding"><a class="contact_info collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/nauta/contact_info"><i class="mdi-communication-quick-contacts-dialer small"></i><span>Información de contacto</span></a>
-                    </li>
-                    <li class="no-padding"><a class="help collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/help/general"><i class="mdi-action-help small"></i><span>Ayuda</span></a></li>
-                    <li class="no-padding"><a class="collapsible-header etecsa-blue-text" href="https://www.portal.nauta.cu/user/logout"><i class="mdi-content-clear small"></i><span>Salir</span></a></li>
-                </ul>
-                <a href="#" data-activates="nav-mobile" class="button-collapse"><i class="mdi-navigation-menu"></i></a>
+<div class="z-depth-1 card-panel">
+    <div class="row">
+        <div class="col s12">
+            <div class="row">
+                <div class="col s12">
+                    <h5>CUENTA <i>NAUTA</i></h5>
+                    <div class="divider"></div>
+                </div>
             </div>
-        </nav>
-        <nav class="white hide-on-med-and-down" id="icon-nav">
-            <div class="nav-wrapper">
-                <ul class="right hide-on-med-and-down">
-                    <li class="active"><a href="https://www.portal.nauta.cu/useraaa/user_info" class="etecsa-blue-text"><i class="mdi-action-account-circle"></i><span>Mi cuenta</span></a></li><li class=""><a href="https://www.portal.nauta.cu/useraaa/recharge_account" class="etecsa-blue-text"><i class="mdi-maps-local-atm"></i><span>Recargar cuenta</span></a></li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_change_password_group"><i class="mdi-action-lock-open"></i><span>Cambiar contraseña<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_change_password_group" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/change_password">Cuenta de acceso</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/email/change_password">Cuenta de correo</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_detail"><i class="mdi-action-view-list"></i><span>Detalle de operaciones<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_detail" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/service_detail">Conexiones</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/recharge_detail">Recargas</a></li><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_detail">Transferencias</a></li></ul>
-                        </li><li class="">
-                        <a class="etecsa-blue-text dropdown-button" data-beloworigin="true" href="#" data-activates="dropdown_useraaa_transfer"><i class="mdi-action-input"></i><span>Transferir saldo<i class="mdi-navigation-arrow-drop-down right"></i></span></a><ul id="dropdown_useraaa_transfer" class="dropdown-content etecsa-blue-text"><li class="etecsa-blue-text "><a href="https://www.portal.nauta.cu/useraaa/transfer_balance">A otra cuenta nauta</a></li></ul>
-                        </li>                </ul>
+            <div class="row">
+                <div class="col s12 m6">
+                    <h5>Usuario </h5>
+                    <p>user.name@nauta.com.cu</p>
+                </div>
             </div>
-        </nav>
-    </div>
 
-</header>
-    <div id="content" class="container"><div class="row">
-    <div class="col s12">
-        <h3>Mi cuenta</h3>
-        <p class="sub-title">Información general de la cuenta de acceso.</p>
-    </div>
-</div>
-<div class="row">
-    <div class="z-depth-1 card-panel">
-        <div class="row">
-            <div class="col s12">
-                <div class="row">
-                    <div class="col s12">
-                        <h5>CUENTA <i>NAUTA</i></h5>
-                        <div class="divider"></div>
-                    </div>
-                </div>
-                <div class="row">
-                    <div class="col s12 m6">
-                        <h5>Usuario </h5>
-                        <p>pepito.perez@nauta.com.cu</p>
-                    </div>
-                                    </div>
-
-                                    <div class="row">
-                        <div class="col s12 m6">
-                            <h5>Fecha de bloqueo</h5>
-                            <p>30/11/2037</p>
-                        </div>
-                        <div class="col s12 m6">
-                            <h5>Fecha de eliminación</h5>
-                            <p>31/12/2037</p>
-                        </div>
-                    </div>
-                    
-                <div class="row">
-                    <div class="col s12 m6">
-                        <h5>Tipo de cuenta</h5>
-                        <p>Prepago recargable</p>
-                    </div>
-                                            <div class="col s12 m6">
-                            <h5>Tipo de servicio </h5>
-                            <p>Navegación Internacional con Correo Internacional</p>
-                        </div>
-                        
-                </div>
-                
-                <div class="row">
-                                            <div class="col s12 m6">
-                            <h5>Saldo disponible</h5>
-                            <p>$0,00 CUP</p>
-                        </div>
-                                        <div class="col s12 m6">
-                        <h5>Tiempo disponible de la cuenta</h5>
-                        <p>00:00:00</p>
-                    </div>
+            <div class="row">
+                <div class="col s12 m6">
+                    <h5>Fecha de bloqueo</h5>
+                    <p>30/11/2037</p>
+                </div>
+                <div class="col s12 m6">
+                    <h5>Fecha de eliminación</h5>
+                    <p>31/12/2037</p>
                 </div>
-
-                                    <div class="row">
-                        <div class="col s12 m6">
-                            <h5>Cuenta de correo</h5>
-                            <p>pepito@nauta.cu</p>
-                        </div>
-                                            </div>
-                                </div>
-        </div>
-    </div>
-</div></div>    <div id="contact_info_box"></div>
-    <footer class="page-footer white grey-text text-darken-4">
-    <hr>
-    <div class="container">
-        <div class="row center">
-            <div class="col s12">
-                <p>© 2011 Empresa de Telecomunicaciones de Cuba S. A. (ETECSA). Todos los derechos reservados</p>
-                <p><a class="etecsa-blue-text" href="http://www.etecsa.cu/">www.etecsa.cu</a></p>
             </div>
-        </div>
-    </div>
-    <div class="hidden" id="ajax-messages" data-ajax-connection-error="Existe un error de conexión de red. Puede ser que usted se haya desconectado de la red o el servicio se haya caido."></div>
-</footer><script type="text/javascript" src="user_info_files/jquery-2.js"></script><script type="text/javascript" src="user_info_files/materialize.js"></script><script type="text/javascript" src="user_info_files/jquery_002.js"></script><script type="text/javascript" src="user_info_files/toastr.js"></script><script type="text/javascript" src="user_info_files/jquery.js"></script><script type="text/javascript" src="user_info_files/init.js"></script><script type="text/javascript" src="user_info_files/msgpool.js"></script>    <script type="text/javascript">
-        window.toastr.options = {
-            timeOut: 10000
-        }
-        $(function(){
-            $('.contact_info, .help').on("click",function(e){
-                console.log($(this).attr('href'));
-                e.preventDefault();
-                $("#contact_info_box").load($(this).attr('href'));
 
-            });
+            <div class="row">
+                <div class="col s12 m6">
+                    <h5>Tipo de cuenta</h5>
+                    <p>Prepago recargable</p>
+                </div>
+                <div class="col s12 m6">
+                    <h5>Tipo de servicio </h5>
+                    <p>Navegación Internacional con Correo Internacional</p>
+                </div>
 
+            </div>
 
-            $('.show_password').on("click",function(){
-                var target=$(this).attr('rel');
-                if ($(this).prop('checked')){
-                    $('#'+target).attr('type','text');
-                } else {
-                    $('#'+target).attr('type','password');
-                }
-            });
+            <div class="row">
+                <div class="col s12 m6">
+                    <h5>Saldo disponible</h5>
+                    <p>$147,61 CUP</p>
+                </div>
+                <div class="col s12 m6">
+                    <h5>Tiempo disponible de la cuenta</h5>
+                    <p>11:48:31</p>
+                </div>
+            </div>
 
-            $('.submit_btn').on('click',function(){
-                $.blockUI({
-                    message:'<div class="preloader-wrapper active"><div class="spinner-layer spinner-red-only"> <div class="circle-clipper left"> <div class="circle"></div> </div><div class="gap-patch"> <div class="circle"></div> </div><div class="circle-clipper right"> <div class="circle"></div> </div> </div> </div><div></div><div>Cargando...</div>',
-                    css: {
-                        border: 'none',
-                        padding: '15px',
-                        backgroundColor: '#000',
-                        '-webkit-border-radius': '10px',
-                        '-moz-border-radius': '10px',
-                        opacity: .5,
-                        color: '#fff'
-                    } });
-            });
+            <div class="row">
+                <div class="col s12 m6">
+                    <h5>Cuenta de correo</h5>
+                    <p>user@nauta.cu</p>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col s12">
+                    <h5>ENLACE</h5>
+                    <div class="divider"></div>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col s12 m6">
+                    <h5>Oferta</h5>
+                    <p>NH RESIDENCIAL 1024/512 (40h) - RP</p>
+                </div>
+                <div class="col s12 m6">
+                    <h5>Cuota mensual</h5>
+                    <p>$300,00 CUP</p>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col s12 m6">
+                    <h5>Velocidad de bajada</h5>
+                    <p>1024 kbps</p>
+                </div>
+                <div class="col s12 m6">
+                    <h5>Velocidad de subida</h5>
+                    <p>512 kbps</p>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col s12 m6">
+                    <h5>Teléfono</h5>
+                    <p>71234567</p>
+                </div>
+                <div class="col s12 m6">
+                    <h5>Identificador del enlace</h5>
+                    <p>H ED######</p>
+                </div>
+            </div>
+            <div class="row">
 
-            var options = ['nauta.com.cu','nauta.co.cu'];
-            $("input.user-domain").mailtip({
-                mails: options,
-                offsetTop: 2
-            });
-            
-        });
-    </script>
-        
+                <div class="col s12 m6">
+                    <h5>Estado del enlace</h5>
+                    <p>HABILITADO</p>
+                </div>
+                <div class="col s12 m6">
+                    <h5>Fecha de activación</h5>
+                    <p>25/02/2021</p>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col s12 m6">
+                    <h5>Fecha de bloqueo</h5>
+                    <p>07/02/2023</p>
+                </div>
+                <div class="col s12 m6">
+                    <h5>Fecha de eliminación</h5>
+                    <p>07/03/2023</p>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col s12 m6">
+                    <h5>Fondo de cuota</h5>
+                    <p>$0,81 CUP</p>
 
-<div class="material-tooltip" id="d3a6c88e-1233-b593-bb0e-526e8d6b1e9c"><span>English</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="a1df0ab7-b9ee-f46a-ebfc-7e0b8fc36cef"><span>Información de contacto</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="83751694-eb39-10d5-a0a0-2defde312334"><span>Ayuda</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="material-tooltip" id="ac9924b6-cc0c-3b48-b38f-98120ea4f07b"><span>Salir</span><div class="backdrop" style="top: 0px; left: 0px;"></div></div><div class="hiddendiv common"></div><div class="drag-target" style="left: 0px; touch-action: pan-y;"></div></body></html>
\ No newline at end of file
+                </div>
+                <div class="col s12 m6">
+                    <h5>Bono</h5>
+                    <p>$0,00 CUP</p>
+                </div>
+                <div class="col s12 m6">
+                    <h5>Deuda</h5>
+                    <p>$0,00 CUP</p>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/test/test_nauta.py b/test/test_nauta.py
old mode 100644
new mode 100755
index 0914c5e..991f443
--- a/test/test_nauta.py
+++ b/test/test_nauta.py
@@ -12,7 +12,11 @@
 #  #
 #  You should have received a copy of the GNU General Public License
 #  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-import os
+import os, sys
+
+myPath = os.path.dirname(os.path.abspath(__file__))
+sys.path.insert(0, myPath + '/../')
+
 from unittest.mock import patch, MagicMock
 
 import pytest
diff --git a/test/test_user_portal.py b/test/test_user_portal.py
old mode 100644
new mode 100755
index 47db706..2e12245
--- a/test/test_user_portal.py
+++ b/test/test_user_portal.py
@@ -1,18 +1,32 @@
-#  Copyright (c) 2022. MarilaSoft.
-#  #
-#  This program is free software: you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation, either version 3 of the License, or
-#  (at your option) any later version.
-#  #
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#  #
-#  You should have received a copy of the GNU General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-import os
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2023 Lesly Cintra Laza <a.k.a. lesclaz>
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+import os, sys
+
+myPath = os.path.dirname(os.path.abspath(__file__))
+sys.path.insert(0, myPath + '/../')
+
+import datetime
 from unittest.mock import patch, MagicMock
 
 import pytest
@@ -51,7 +65,11 @@ def user_portal_cli():
     "login_action_fail_bad_account.html"
 )
 SERVICE_DETAIL_HTML = read_asset("service_detail.html")
-SERVICE_DETAIL_LIST_HTML = read_asset("service_detail_list.html")
+CONNECTONS_SUMMARY_HTML = read_asset("connections_summary.html")
+CONNECTONS_LIST_PAGE1_HTML = read_asset("connection_list_page1.html")
+CONNECTONS_LIST_PAGE2_HTML = read_asset("connection_list_page2.html")
+CONNECTONS_LIST_PAGE3_HTML = read_asset("connection_list_page3.html")
+CONNECTONS_LIST_PAGE4_HTML = read_asset("connection_list_page4.html")
 USER_INFO_HTML = read_asset("user_info.html")
 RECHARGE_HTML = read_asset("recharge_action.html")
 RECHARGE_SUCCESS_HTML = read_asset("recharge_action_successful.html")
@@ -72,23 +90,12 @@ def test_create_valid_session(patcher, user_portal_cli):
     mock_request.Session().get = MagicMock(return_value=mock_response)
 
     user_portal_cli.init_session()
-    session = user_portal_cli.session.__dict__
-    session.pop("requests_session")
-
-    session_expected = {
-        'csrf': 'security628645155dcb3', 'blocking_date': None,
-        'date_of_elimination': None, 'account_type': None,
-        'service_type': None, 'credit': None, 'time': None,
-        'mail_account': None, 'offer': None, 'monthly_fee': None,
-        'download_speeds': None, 'upload_speeds': None, 'phone': None,
-        'link_identifiers': None, 'link_status': None,
-        'activation_date': None, 'blocking_date_home': None,
-        'date_of_elimination_home': None, 'quota_fund': None, 'voucher': None,
-        'debt': None
-    }
+    session = user_portal_cli.session
+
+    csrf_token = 'security628645155dcb3'
 
     patcher.stop()
-    assert session == session_expected
+    assert session.csrf == csrf_token
 
 
 def test_login_successful(patcher, user_portal_cli):
@@ -102,28 +109,23 @@ def test_login_successful(patcher, user_portal_cli):
     user_portal_cli.password = "SomePassword"
 
     user_portal_cli.login("captcha")
-    user_info = user_portal_cli.session.__dict__
-    user_info.pop("requests_session")
-
-    user_info_expected = {
-        'csrf': None, 'blocking_date': '30/11/2037',
-        'date_of_elimination': '31/12/2037',
-        'account_type': 'Prepago recargable',
-        'service_type': 'Navegación Internacional con Correo Internacional',
-        'credit': '$0,00 CUP', 'time': '00:00:00',
-        'mail_account': 'pepito@nauta.cu', 'offer': None,
-        'monthly_fee': None, 'download_speeds': None,
-        'upload_speeds': None, 'phone': None,
-        'link_identifiers': None, 'link_status': None,
-        'activation_date': None, 'blocking_date_home': None,
-        'date_of_elimination_home': None, 'quota_fund': None,
-        'voucher': None, 'debt': None,
-        'username': 'pepito.perez@nauta.com.cu'
-    }
+    user_info = user_portal_cli.session
 
     patcher.stop()
 
-    assert user_info == user_info_expected
+    assert user_info.account_type == 'Prepago recargable'
+    assert user_info.date_of_elimination == datetime\
+        .datetime.strptime('31/12/2037', '%d/%m/%Y')
+    assert user_info.credit == 147.61
+    assert user_info.time == 42511
+    assert user_info.offer == 'NH RESIDENCIAL 1024/512 (40h) - RP'
+    assert user_info.upload_speeds == 524288
+    assert user_info.link_identifiers == 'H ED######'
+    assert user_info.activation_date == datetime\
+        .datetime.strptime('25/02/2021', '%d/%m/%Y')
+    assert user_info.date_of_elimination_home == datetime\
+        .datetime.strptime('07/03/2023', '%d/%m/%Y')
+    assert user_info.monthly_fee == 300.00
 
 
 def test_login_action_fail(patcher, user_portal_cli):
@@ -178,28 +180,23 @@ def test_get_valid_user_info(patcher):
 
     session = UserPortalSession()
     UserPortal.load_user_info(session)
-    user_info = session.__dict__
-    user_info.pop("requests_session")
-
-    user_info_expected = {
-        'csrf': None, 'blocking_date': '30/11/2037',
-        'date_of_elimination': '31/12/2037',
-        'account_type': 'Prepago recargable',
-        'service_type': 'Navegación Internacional con Correo Internacional',
-        'credit': '$0,00 CUP', 'time': '00:00:00',
-        'mail_account': 'pepito@nauta.cu', 'offer': None,
-        'monthly_fee': None, 'download_speeds': None,
-        'upload_speeds': None, 'phone': None,
-        'link_identifiers': None, 'link_status': None,
-        'activation_date': None, 'blocking_date_home': None,
-        'date_of_elimination_home': None, 'quota_fund': None,
-        'voucher': None, 'debt': None,
-        'username': 'pepito.perez@nauta.com.cu'
-    }
+    user_info = session
 
     patcher.stop()
 
-    assert user_info == user_info_expected
+    assert user_info.account_type == 'Prepago recargable'
+    assert user_info.date_of_elimination == datetime\
+        .datetime.strptime('31/12/2037', '%d/%m/%Y')
+    assert user_info.credit == 147.61
+    assert user_info.time == 42511
+    assert user_info.offer == 'NH RESIDENCIAL 1024/512 (40h) - RP'
+    assert user_info.upload_speeds == 524288
+    assert user_info.link_identifiers == 'H ED######'
+    assert user_info.activation_date == datetime\
+        .datetime.strptime('25/02/2021', '%d/%m/%Y')
+    assert user_info.date_of_elimination_home == datetime\
+        .datetime.strptime('07/03/2023', '%d/%m/%Y')
+    assert user_info.monthly_fee == 300.00
 
 
 def test_recharge_action_successful(patcher, user_portal_cli):
@@ -211,7 +208,7 @@ def test_recharge_action_successful(patcher, user_portal_cli):
 
     user_portal_cli.session = UserPortalSession()
     is_confirmed = user_portal_cli.recharge("01234567890123456")
-    assert is_confirmed
+    assert is_confirmed.status == 'success'
 
 
 def test_recharge_action_fail(patcher, user_portal_cli):
@@ -238,8 +235,8 @@ def test_transfer_action_successful(patcher, user_portal_cli):
     mock_request.Session().get = MagicMock(return_value=mock_response_get)
 
     user_portal_cli.session = UserPortalSession()
-    is_confirmed = user_portal_cli.transfer("24", "pepita@nauta.com.cu")
-    assert is_confirmed
+    is_confirmed = user_portal_cli.transfer(24, "pepita@nauta.com.cu")
+    assert is_confirmed.status == 'success'
 
 
 def test_transfer_action_fail(patcher, user_portal_cli):
@@ -251,7 +248,7 @@ def test_transfer_action_fail(patcher, user_portal_cli):
 
     user_portal_cli.session = UserPortalSession()
     with pytest.raises(TransferException) as e:
-        user_portal_cli.transfer("24", "pepita@nauta.com.cu")
+        user_portal_cli.transfer(24, "pepita@nauta.com.cu")
 
     patcher.stop()
 
@@ -271,7 +268,7 @@ def test_change_password_action_successful(patcher, user_portal_cli):
 
     user_portal_cli.session = UserPortalSession()
     is_confirmed = user_portal_cli.change_password("some_password")
-    assert is_confirmed
+    assert is_confirmed.status == 'success'
 
 
 def test_change_password_action_fail(patcher, user_portal_cli):
@@ -306,7 +303,7 @@ def test_change_email_password_action_successful(patcher, user_portal_cli):
 
     user_portal_cli.session = UserPortalSession()
     is_confirmed = user_portal_cli.change_email_password("some_password")
-    assert is_confirmed
+    assert is_confirmed.status == 'success'
 
 
 def test_change_email_password_action_fail(patcher, user_portal_cli):
@@ -330,29 +327,42 @@ def test_change_email_password_action_fail(patcher, user_portal_cli):
 
 
 def test_get_valid_connections(patcher, user_portal_cli):
+
+    texts = {
+        "https://www.portal.nauta.cu/useraaa/service_detail/":
+        SERVICE_DETAIL_HTML,
+        "https://www.portal.nauta.cu/useraaa/service_detail_list/2022-12/47":
+        CONNECTONS_LIST_PAGE1_HTML,
+        "https://www.portal.nauta.cu/useraaa/service_detail_list/2022-12/2":
+        CONNECTONS_LIST_PAGE2_HTML,
+        "https://www.portal.nauta.cu/useraaa/service_detail_list/2022-12/3":
+        CONNECTONS_LIST_PAGE3_HTML,
+        "https://www.portal.nauta.cu/useraaa/service_detail_list/2022-12/4":
+        CONNECTONS_LIST_PAGE4_HTML,
+    }
+
     mock_request = patcher.start()
     mock_response_get = MagicMock(
         status_code=200,
-        text=SERVICE_DETAIL_HTML,
-        url="https://www.portal.nauta.cu/useraaa/service_detail/"
+        text=""
     )
+
+    def side_effect(value: str):
+        mock_response_get.text = texts[value]
+        return mock_response_get
+
     mock_response_post = MagicMock(
         status_code=200,
-        text=SERVICE_DETAIL_LIST_HTML,
-        url="https://www.portal.nauta.cu/useraaa/service_detail_list/"
+        text=CONNECTONS_SUMMARY_HTML
     )
-    mock_request.Session().get = MagicMock(return_value=mock_response_get)
+    mock_request.Session().get = MagicMock(side_effect=side_effect)
     mock_request.Session().post = MagicMock(return_value=mock_response_post)
 
     user_portal_cli.session = UserPortalSession()
-    connection = user_portal_cli.get_connections(2022, 5)[0].__dict__
+    connection = user_portal_cli.get_connections(2022, 12)[-1]
 
-    connection_expected = {
-        'start_session': '30/04/2022 22:06:07',
-        'end_session': '01/05/2022 02:16:05', 'duration': '04:09:58',
-        'upload': '116,35 MB', 'download': '1,28 GB', 'import_': '$50,00'
-    }
+    print(connection.start_session)
 
     patcher.stop()
 
-    assert connection == connection_expected
+    assert type(connection.start_session) == datetime.datetime