diff --git a/.bumpversion.cfg b/.bumpversion.cfg index bd7b7cc..a9b34ca 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 1.0.0 +current_version = 3.3.0 commit = True tag = True parse = (?P\d+)\.(?P\d+)\.(?P\d+)(-(?P[^.]*)\.(?P\d+))? diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..fba3a32 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,25 @@ +**Type of PR:** +- [ ] Bugfix +- [ ] Feature +- [ ] Documentation +- [ ] Other + +**Required reviews:** +- [ ] 1 +- [ ] 2 +- [X] 3 + +**What this does:** +> High-level idea of the changes introduced in this PR. +> List relevant API changes (if any), as well as related PRs and issues. + +**Issues fixed/closed:** +> - Fixes #... + +**Why it's needed:** +> Explain how this PR fits in the greater context of the NuCypher Network. +> E.g., if this PR addresses a `nucypher/productdev` issue, let reviewers know! + +**Notes for reviewers:** +> What should reviewers focus on? +> Is there a particular commit/function/section of your PR that requires more attention from reviewers? diff --git a/.github/workflows/darker.yml b/.github/workflows/darker.yml new file mode 100644 index 0000000..9e86e3a --- /dev/null +++ b/.github/workflows/darker.yml @@ -0,0 +1,17 @@ +name: 🧹 Darker + +on: [push, pull_request] + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - uses: actions/setup-python@v4 + with: + python-version: '3.9' + - uses: akaihola/darker@1.7.2 + with: + version: "1.7.2" # defaults to same version, but can be modified diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..5bb77ef --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,33 @@ +name: Build and Push Docker Image (version tags) + +on: + push: + tags: [ 'v*.*.*' ] + +jobs: + docker: + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Echo Tag Name + run: echo "Tag - ${{github.ref_name}}" + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: ${{ github.workspace }} + file: ./deploy/docker/Dockerfile + push: true + tags: nucypher/porter:${{github.ref_name}} diff --git a/.github/workflows/ruff.yml b/.github/workflows/ruff.yml new file mode 100644 index 0000000..6089712 --- /dev/null +++ b/.github/workflows/ruff.yml @@ -0,0 +1,25 @@ +name: 🧹 Lint with Ruff + +on: [push, pull_request] + +jobs: + ruff-lint: + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.9" + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install ruff + pip install . + + - name: Lint with Ruff + run: ruff --output-format=github porter diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 5e48e60..2217cca 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -12,31 +12,46 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.8", "3.9", "3.10"] + python-version: ["3.9", "3.11"] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - python -m pip install -e .[dev] - python -m pip install -r dev-requirements.txt - python scripts/install_solc.py + - id: python_cache + name: Retrieve Cached Python Dependencies + uses: actions/cache@v3 + with: + path: ${{ env.pythonLocation }} + key: ${{ runner.os }}-pip-${{ steps.setup_python.outputs.python-version }}-${{ hashFiles('dev-requirements.txt', 'requirements.txt') }} + + - name: Upgrade pip + if: steps.python_cache.outputs.cache-hit != 'true' + run: python -m pip install --upgrade pip + + - name: Install dependencies (incl. updated code) + run: pip install .[dev] - name: Run tests + if: matrix.python-version != '3.9' run: | python -m pytest tests + - name: Run tests (Coverage) + if: matrix.python-version == '3.9' + run: | + coverage run --data-file=test_data -m pytest tests + coverage xml -i --data-file=test_data -o coverage.xml + - name: Upload test coverage to Codecov - if: matrix.python-version == '3.8' + if: matrix.python-version == '3.9' uses: codecov/codecov-action@v3.1.1 with: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: true verbose: true + files: coverage.xml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4218d65..7c520bd 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,7 +5,7 @@ repos: - id: tests name: Run Unit Tests - entry: scripts/run_unit_tests.sh + entry: scripts/run_tests.sh language: system types: [python] stages: [push] # required additional setup: pre-commit install && pre-commit install -t pre-push @@ -39,9 +39,12 @@ repos: - repo: https://github.com/akaihola/darker - rev: 1.4.2 + rev: 1.7.2 hooks: - id: darker - args: [--isort] - additional_dependencies: - - isort~=5.9 + + + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: 'v0.1.4' + hooks: + - id: ruff diff --git a/Pipfile b/Pipfile index 95aa211..1c58fc6 100644 --- a/Pipfile +++ b/Pipfile @@ -7,21 +7,20 @@ name = "pypi" python_version = "3" [packages] -nucypher = {git = "https://github.com/nucypher/nucypher.git", ref = "development"} +nucypher = {git = "https://github.com/nucypher/nucypher.git", ref = "v7.0.3"} +nucypher-core = "==0.13.0" # must be the same as nucypher flask-cors = "*" +prometheus-flask-exporter = "*" [dev-packages] -nucypher = {git = "https://github.com/nucypher/nucypher.git", editable = true, ref = "development", extras = ["dev"]} # needed for testerchain, and must be editable -pytest = "*" +nucypher = {git = "https://github.com/nucypher/nucypher.git", editable = true, ref = "v7.0.3", extras = ["dev"]} # needed for testerchain, and must be editable +pytest = "<7" # match with nucypher/nucypher pytest-cov = "*" pytest-mock = "*" # Tools pre-commit = "2.12.1" -pyflakes = "*" -mypy = "*" coverage = "<=6.5.0" -py-solc-x = "==0.10.1" - +maya = "*" [pipenv] allow_prereleases = true diff --git a/Pipfile.lock b/Pipfile.lock index 5a4c43e..7c34022 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "113917e763ae51b7e1634dc48dd2b1ecfa93fcee8c837a088d0bcf05ba4274b1" + "sha256": "e398b5eaea6dafa3790f13f3600966fed6b6c184781208606cef9b7e85e2092c" }, "pipfile-spec": 6, "requires": { @@ -18,81 +18,96 @@ "default": { "aiohttp": { "hashes": [ - "sha256:01d7bdb774a9acc838e6b8f1d114f45303841b89b95984cbb7d80ea41172a9e3", - "sha256:03a6d5349c9ee8f79ab3ff3694d6ce1cfc3ced1c9d36200cb8f08ba06bd3b782", - "sha256:04d48b8ce6ab3cf2097b1855e1505181bdd05586ca275f2505514a6e274e8e75", - "sha256:0770e2806a30e744b4e21c9d73b7bee18a1cfa3c47991ee2e5a65b887c49d5cf", - "sha256:07b05cd3305e8a73112103c834e91cd27ce5b4bd07850c4b4dbd1877d3f45be7", - "sha256:086f92daf51a032d062ec5f58af5ca6a44d082c35299c96376a41cbb33034675", - "sha256:099ebd2c37ac74cce10a3527d2b49af80243e2a4fa39e7bce41617fbc35fa3c1", - "sha256:0c7ebbbde809ff4e970824b2b6cb7e4222be6b95a296e46c03cf050878fc1785", - "sha256:102e487eeb82afac440581e5d7f8f44560b36cf0bdd11abc51a46c1cd88914d4", - "sha256:11691cf4dc5b94236ccc609b70fec991234e7ef8d4c02dd0c9668d1e486f5abf", - "sha256:11a67c0d562e07067c4e86bffc1553f2cf5b664d6111c894671b2b8712f3aba5", - "sha256:12de6add4038df8f72fac606dff775791a60f113a725c960f2bab01d8b8e6b15", - "sha256:13487abd2f761d4be7c8ff9080de2671e53fff69711d46de703c310c4c9317ca", - "sha256:15b09b06dae900777833fe7fc4b4aa426556ce95847a3e8d7548e2d19e34edb8", - "sha256:1c182cb873bc91b411e184dab7a2b664d4fea2743df0e4d57402f7f3fa644bac", - "sha256:1ed0b6477896559f17b9eaeb6d38e07f7f9ffe40b9f0f9627ae8b9926ae260a8", - "sha256:28d490af82bc6b7ce53ff31337a18a10498303fe66f701ab65ef27e143c3b0ef", - "sha256:2e5d962cf7e1d426aa0e528a7e198658cdc8aa4fe87f781d039ad75dcd52c516", - "sha256:2ed076098b171573161eb146afcb9129b5ff63308960aeca4b676d9d3c35e700", - "sha256:2f2f69dca064926e79997f45b2f34e202b320fd3782f17a91941f7eb85502ee2", - "sha256:31560d268ff62143e92423ef183680b9829b1b482c011713ae941997921eebc8", - "sha256:31d1e1c0dbf19ebccbfd62eff461518dcb1e307b195e93bba60c965a4dcf1ba0", - "sha256:37951ad2f4a6df6506750a23f7cbabad24c73c65f23f72e95897bb2cecbae676", - "sha256:3af642b43ce56c24d063325dd2cf20ee012d2b9ba4c3c008755a301aaea720ad", - "sha256:44db35a9e15d6fe5c40d74952e803b1d96e964f683b5a78c3cc64eb177878155", - "sha256:473d93d4450880fe278696549f2e7aed8cd23708c3c1997981464475f32137db", - "sha256:477c3ea0ba410b2b56b7efb072c36fa91b1e6fc331761798fa3f28bb224830dd", - "sha256:4a4a4e30bf1edcad13fb0804300557aedd07a92cabc74382fdd0ba6ca2661091", - "sha256:4aed991a28ea3ce320dc8ce655875e1e00a11bdd29fe9444dd4f88c30d558602", - "sha256:51467000f3647d519272392f484126aa716f747859794ac9924a7aafa86cd411", - "sha256:55c3d1072704d27401c92339144d199d9de7b52627f724a949fc7d5fc56d8b93", - "sha256:589c72667a5febd36f1315aa6e5f56dd4aa4862df295cb51c769d16142ddd7cd", - "sha256:5bfde62d1d2641a1f5173b8c8c2d96ceb4854f54a44c23102e2ccc7e02f003ec", - "sha256:5c23b1ad869653bc818e972b7a3a79852d0e494e9ab7e1a701a3decc49c20d51", - "sha256:61bfc23df345d8c9716d03717c2ed5e27374e0fe6f659ea64edcd27b4b044cf7", - "sha256:6ae828d3a003f03ae31915c31fa684b9890ea44c9c989056fea96e3d12a9fa17", - "sha256:6c7cefb4b0640703eb1069835c02486669312bf2f12b48a748e0a7756d0de33d", - "sha256:6d69f36d445c45cda7b3b26afef2fc34ef5ac0cdc75584a87ef307ee3c8c6d00", - "sha256:6f0d5f33feb5f69ddd57a4a4bd3d56c719a141080b445cbf18f238973c5c9923", - "sha256:6f8b01295e26c68b3a1b90efb7a89029110d3a4139270b24fda961893216c440", - "sha256:713ac174a629d39b7c6a3aa757b337599798da4c1157114a314e4e391cd28e32", - "sha256:718626a174e7e467f0558954f94af117b7d4695d48eb980146016afa4b580b2e", - "sha256:7187a76598bdb895af0adbd2fb7474d7f6025d170bc0a1130242da817ce9e7d1", - "sha256:71927042ed6365a09a98a6377501af5c9f0a4d38083652bcd2281a06a5976724", - "sha256:7d08744e9bae2ca9c382581f7dce1273fe3c9bae94ff572c3626e8da5b193c6a", - "sha256:7dadf3c307b31e0e61689cbf9e06be7a867c563d5a63ce9dca578f956609abf8", - "sha256:81e3d8c34c623ca4e36c46524a3530e99c0bc95ed068fd6e9b55cb721d408fb2", - "sha256:844a9b460871ee0a0b0b68a64890dae9c415e513db0f4a7e3cab41a0f2fedf33", - "sha256:8b7ef7cbd4fec9a1e811a5de813311ed4f7ac7d93e0fda233c9b3e1428f7dd7b", - "sha256:97ef77eb6b044134c0b3a96e16abcb05ecce892965a2124c566af0fd60f717e2", - "sha256:99b5eeae8e019e7aad8af8bb314fb908dd2e028b3cdaad87ec05095394cce632", - "sha256:a25fa703a527158aaf10dafd956f7d42ac6d30ec80e9a70846253dd13e2f067b", - "sha256:a2f635ce61a89c5732537a7896b6319a8fcfa23ba09bec36e1b1ac0ab31270d2", - "sha256:a79004bb58748f31ae1cbe9fa891054baaa46fb106c2dc7af9f8e3304dc30316", - "sha256:a996d01ca39b8dfe77440f3cd600825d05841088fd6bc0144cc6c2ec14cc5f74", - "sha256:b0e20cddbd676ab8a64c774fefa0ad787cc506afd844de95da56060348021e96", - "sha256:b6613280ccedf24354406caf785db748bebbddcf31408b20c0b48cb86af76866", - "sha256:b9d00268fcb9f66fbcc7cd9fe423741d90c75ee029a1d15c09b22d23253c0a44", - "sha256:bb01ba6b0d3f6c68b89fce7305080145d4877ad3acaed424bae4d4ee75faa950", - "sha256:c2aef4703f1f2ddc6df17519885dbfa3514929149d3ff900b73f45998f2532fa", - "sha256:c34dc4958b232ef6188c4318cb7b2c2d80521c9a56c52449f8f93ab7bc2a8a1c", - "sha256:c3630c3ef435c0a7c549ba170a0633a56e92629aeed0e707fec832dee313fb7a", - "sha256:c3d6a4d0619e09dcd61021debf7059955c2004fa29f48788a3dfaf9c9901a7cd", - "sha256:d15367ce87c8e9e09b0f989bfd72dc641bcd04ba091c68cd305312d00962addd", - "sha256:d2f9b69293c33aaa53d923032fe227feac867f81682f002ce33ffae978f0a9a9", - "sha256:e999f2d0e12eea01caeecb17b653f3713d758f6dcc770417cf29ef08d3931421", - "sha256:ea302f34477fda3f85560a06d9ebdc7fa41e82420e892fc50b577e35fc6a50b2", - "sha256:eaba923151d9deea315be1f3e2b31cc39a6d1d2f682f942905951f4e40200922", - "sha256:ef9612483cb35171d51d9173647eed5d0069eaa2ee812793a75373447d487aa4", - "sha256:f5315a2eb0239185af1bddb1abf472d877fede3cc8d143c6cddad37678293237", - "sha256:fa0ffcace9b3aa34d205d8130f7873fcfefcb6a4dd3dd705b0dab69af6712642", - "sha256:fc5471e1a54de15ef71c1bc6ebe80d4dc681ea600e68bfd1cbce40427f0b7578" + "sha256:00c92fcfc255bcc3f831df6210358b8e179153353feadf060e8264eb62ce458c", + "sha256:0303a95d2fda431d80b24b6c8e1e588e4625806304d805527788094decc902df", + "sha256:07f4acf59e3d88c229c8d726cd3ac8d92457f20c8b2ac25afad22c9d9e0a198d", + "sha256:0cf569a3eb1f74553623867526d59969a5f3f66c759f4acf0b3530c985095e77", + "sha256:0f15ca09841d43c32577d47e458370c94c7b123bc746722d7bf738132f929f5d", + "sha256:12c9b8d5e4c410bc9c5d781491a695b07857671d631ca921f0effa53dbbe9082", + "sha256:1743e84dd0c04cefce8df0866780eae991a2cfe36ac4bef1e04aef640c3dfb8a", + "sha256:1815bd39628afa7085bad883b8cad84dbdab84a273ba1a5bf571177ae267011d", + "sha256:1909936256b296505bae30e092c8487e4b14c89748612d87fc301bd1b08401c3", + "sha256:198a22d959f969bdcf92145f25c07bb5a7f65dc05c3735047447aa53d38142df", + "sha256:1ea45264d399f82da4048e724afdf5f10318d62ad89fb9dc911eafd66e3d79b3", + "sha256:244c4d488eb3a2abe008bc614de4ce3a34abd027e518a595f8e794747f23d516", + "sha256:25703823f9f96c85a7f97a6fd487beec576395c9447a4146feb08e422fcfc9c2", + "sha256:2775ed7b86e47084b5df0e7e64f79fc9900ef6c3d7e247a8ea2c8a7e0763b68a", + "sha256:2f077cc6cfbf05c2e8ef817dbbceb754a578db5aa449763f328cc6816b639632", + "sha256:2f2ecb6a3dd0cf78da60750ef521cd5f16e72e599232b7d11e7e14182f674f53", + "sha256:37307e2177a286482a1e9c86626c333e2b0f434d6afeef4d12e48be582f476ce", + "sha256:3893de9760c03032d2e5593e23fcc34a8be995a8311f64435d8413f08248929c", + "sha256:3dbe4ebcc68a7a7e841f187b08e67d49af5535065c67ecb9ee2c82a186cb40c3", + "sha256:4036577d5226a98c68292d6a7aab08c7143e0a827ed0a0beba769c3340305bff", + "sha256:409b43ceed9dcc52150813cb695130519dc2876d98f941ce6d30a5bc4ff80451", + "sha256:42fff01edf90358ef4e0a6edd235759e4f9344a6a6ba60b0d948e95d4aa5adf5", + "sha256:46a649d6c8cc0d59d9d8afc8aa6328d349f0cf6e579006523ef97fea03f72b8a", + "sha256:48cf475d3c621f9437220571acfca1317899868412d27760b54a3a7ae7c84530", + "sha256:498e62d934f80dab3384abfc1003013229e4c82d9eb904c51e5f6cea26ec56b7", + "sha256:4b0a6f5bcbe580cb156ef9bc2d59821889b141d894cbad2e7e352b2e75fb4bcc", + "sha256:4eb2befcf4e57c5e2218ff3e50b73b4b1bd56685ce275c45905d4687653dad90", + "sha256:51e962768a4111fb06dfa58f1a16e9ff299465df11756c416cd75ab4c9b42962", + "sha256:542eb584021cc99057b1f39f4b8bd5d25ae554ca21afdfc098bd60f91509640c", + "sha256:599aa2ce967bea2580588833bf08d2df5930cd2ccb618e8d96dd67dbe063b692", + "sha256:5e94500d9653e85bfce5d604e99f71407e4104ad4943caddef379b6cc4d6e07e", + "sha256:61fe1eb4156edd858d2a45a76472b67d82629d4eee0770b30aaf6f9bccfc664f", + "sha256:64004b0f1174c80674de4660b4655cf47333c9bb70ef64fbe5f5befbe75a83de", + "sha256:6660b33e100b4efbc2ed1b0765b97d126c80c56f5b82bd9865d938cc4a29f4a1", + "sha256:66da9965d78206444640fb34364677564b77286463d6aa461a9ae67e09479366", + "sha256:6a25d945fc6225b1bf7628229a40b1cf00f0a122843dafafdd09c9a921f6e5f4", + "sha256:6aca9a0f7444c79f517cd1e089942885833bd00509e8ee2b1431d05e2080b781", + "sha256:6bbc14a195fb1cf2da16017d2201edf770ab66b806537ef95101ca31a2141230", + "sha256:6c987fc1646c8272c4d76b0361fdec957b3e4082ed8fc9f5143ebdfda4f265c3", + "sha256:6f70c2bb17ec72839dffd7b023450a0ed17f73426e2f1f0833f024d78a64c6d7", + "sha256:7138f023e38cd108084b1ee8455be14a8e88a51f50510b482624bf204eb6ac44", + "sha256:756ad558853e637237490f2d203dccc9f93779fd2708b66a5948a7d785aacce3", + "sha256:772e948d02592bca1f551878b68b7e6cedaad471d2887701d524d390b56a01af", + "sha256:793a0bcbc3ea851fda46d72245d2f53f59c9a38bba480b83788b61afbb803725", + "sha256:79c1924b54c44a7dc6b7e866363d06faa6f03f490275d572b76536491004ea1a", + "sha256:7d9f33cbe36eda9ae33e169c27b33dcfd3791972809018309ead35e0997024b7", + "sha256:811a0d8ecf4053224cd54765654f5952e59983cfb07f8f6ee913330a2b4196b0", + "sha256:8151006ae30614e5c75e2ff05cdb51242214aadda0ae28c7c449007e28362651", + "sha256:866fe95c3c4f82ae155271b4fb6a7a9352fcaf6d6f7e02e05074a3c08a1dbd25", + "sha256:88bb9378ff3ff76a8fef3714976827ddb66fe397cadb64ba9bee5d954bfdf887", + "sha256:8a70e88ca8d890056e52a0b41bef755e232df3a0800ff9fdcefea1755cf23dc3", + "sha256:8e3cec205409e011ae872cbedd19891135ffdc1832ed353c8af4cef4b1947054", + "sha256:8ebb1274e8e5950eea209cb3b674612442aa68daac57c97872865bdf63449286", + "sha256:8eea173d8fe9f04f86f1f8d711dd23c0310cf55f979b1e7b949fe15ba776e018", + "sha256:92f5f3e78a6014b3060112be7253b3baefbbccf2147e5f8df1b3fa163a74d9d6", + "sha256:938c6f4236f053802c7b862ca95ea8c516052a08a4f369de7d4a06fd6a38d6fb", + "sha256:9bbcac98836b6393b1ed568845335bd3a1106077c8e32a615e3259a73665f449", + "sha256:9cb8203740284d385869381a461fb1ae487c166cb669fd3002f44fd44bb7f187", + "sha256:9d04aa8efff6ce4b22ec526cb63091f610a3f1823e22cf60b5fef88ac8177db0", + "sha256:9d09035bbc722f9ac8057c53f0d984f5b3bd4f3fb9ff74f7603fc3bbd783489a", + "sha256:9ebe11ebaf1b44e841bb6f0cf79f16c5c8b2d98e0df7c8d5ecb4bdb77faa9d60", + "sha256:a0aa70f48dc5e9adfa38a1a5c8e3aac20efca7370143ac94f3cef7c068c6cf27", + "sha256:a33758b5dbff2eb56270d441222e527d6e0e96b3886a4d42c9cfcdccc6730baa", + "sha256:ae3a20fc2f3cccdd2d2f319d0198040a778fbda51ff6cece9a1dbaa67cdd11ab", + "sha256:aec83bdeb4b0a2f90b4bc07b9b7339b37c39535b8dd01397e0d2a22baae86b42", + "sha256:b66b45409b7014ba1c4f0d23cf2d7a93ca8045be35660dc04828a1615fd805c6", + "sha256:b797d5ca7ae816f3b7020fae479573efaed4b5be730dfa6c0b8f1d25d4ec6207", + "sha256:b94ec6e2389a0bce9e1393322f6efc928fa9f6f138656f8333eaa625ac62077a", + "sha256:baa71fddadf208c2dae2092c229d928cb4d3fc12c769876a54b8ed53e081fe06", + "sha256:c0563bf4e2069da4d3a6183acdb2f8f69e6d3d2cc794afb6b001f47d89b10618", + "sha256:d17bdab6cbfca083c386da5a580c6650221024fcfed6bcccf5cce7d8219f2d49", + "sha256:d31e9422387b77a49fc01e966e128ea06688ef23495f6a999843f75ee2f481be", + "sha256:d38df4ac8a8d1bd2c1b77ea3de8645091d669ccf8a3f327f586b0f868c409800", + "sha256:d3cc1a1b215b8efa3cfe45aedb8afc6b46476df2f37a089894b0fd3f82262f8f", + "sha256:d831eec202a3a6b976195235b68e3f8a5f9a8e36dc329b7dd864da236ff3c434", + "sha256:d9dcf718c36dbec176a3c9f3d829ddbfe5aa4a405d7fc45be6a339319ff1bd90", + "sha256:dd90aa4ba84ceef1031e468b561ff53b68ecb5bea0f44f13ff930a29037ce880", + "sha256:dde54b9d20376f132020726156e4d8a2054714edd86709608d710f950e169621", + "sha256:ddf9a5eaaae83db1b9ad8c147833c1b9e9c17fd2886c0d7fd58b92212c1d73a7", + "sha256:e8d51a0d9c85819085b614e81da980bec5ef95cb5fae934ff0cd480d9f1ad954", + "sha256:e989dca3eeaf28e15e80084bd55b7872b8c9c79b59748a332a6d32026783bb93", + "sha256:e99cc2845ad4a88ddc44473d6222ef624c0424383f4d7369b37c94f93fee8004", + "sha256:e9e6c0ed1378cf0a6d77cd60f550eb8d57e21c13edb5e1f44b9707fd9937c2ce", + "sha256:efdf06265e2b560b1202626c83b35eed5bd30ed81a4493f73d30ebb1bc04ce8d", + "sha256:f7dcf4f9bc71b4ebac120a569bfe1604f1664da59cfa0abd85e15fabc4c3e7dc", + "sha256:f82f0110136281bdd1886529ad9cd9e76c6e03a2841ed923a3db94e9a19ad710", + "sha256:fbb89011e236e15899df0b49432bb50c7f3d89c9f1875c0c2b5bafaf9d5c2daa" ], "markers": "python_version >= '3.6'", - "version": "==3.8.1" + "version": "==3.8.2" }, "aiosignal": { "hashes": [ @@ -111,26 +126,26 @@ }, "async-timeout": { "hashes": [ - "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15", - "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c" + "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f", + "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028" ], - "markers": "python_version >= '3.6'", - "version": "==4.0.2" + "markers": "python_version >= '3.7'", + "version": "==4.0.3" }, "attrs": { "hashes": [ - "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6", - "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c" + "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04", + "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015" ], - "markers": "python_version >= '3.5'", - "version": "==22.1.0" + "markers": "python_version >= '3.7'", + "version": "==23.1.0" }, "autobahn": { "hashes": [ - "sha256:8b462ea2e6aad6b4dc0ed45fb800b6cbfeb0325e7fe6983907f122f2be4a1fe9" + "sha256:ec9421c52a2103364d1ef0468036e6019ee84f71721e86b36fe19ad6966c1181" ], - "markers": "python_version >= '3.7'", - "version": "==22.7.1" + "markers": "python_version >= '3.9'", + "version": "==23.6.2" }, "automat": { "hashes": [ @@ -139,90 +154,140 @@ ], "version": "==22.10.0" }, - "base58": { + "bitarray": { "hashes": [ - "sha256:11a36f4d3ce51dfc1043f3218591ac4eb1ceb172919cebe05b52a5bcc8d245c2", - "sha256:c5d0cb3f5b6e81e8e35da5754388ddcc6d0d14b6c6a132cb93d69ed580a7278c" + "sha256:00bad63ef6f9d22ba36b01b89167176a451ea22a916d1dfa77d73e0298f1d1f9", + "sha256:05d84765bbfd0aa10890c765c56c917c237987325c4e327f3c0febbfc34365c8", + "sha256:06d9de5db244c6e45a5318713367765de0a57d82ad616869a004a710a95541e9", + "sha256:08ad70c1555d9622cecd8f1b132a5341d183a9161aba93cc9739bbaabe4220b0", + "sha256:095851409e0db75b1416c8c3e24957135d5a2a206790578e43739e92a00c17c4", + "sha256:09d729420b8edc4d8a23a518ae4553074a0054d0441c1a461b425c2f033fab5e", + "sha256:0bbeb7120ec1a9b26ce423e74cad7b414cea9e35f8e05599e3b3dceb87f4d1b6", + "sha256:0c8716b4c45fb128cd4da143749e276f150ecb0acb711f4969d7e7ebc9b2a675", + "sha256:0f45f7d58c399e90ee3bddff4f3e2f53ff95c948b2d43de304266153ebd1d778", + "sha256:111bf9913ebee4630e2cb43b61d0abb39813b231262b114e5268cd6a405a22b9", + "sha256:1474db8c4297026e1daa1699e70e25e56dff91104fe025b1a9804332f2737604", + "sha256:14bc38ced7edffff25ee748c1eabc530624c9af68f86322b030b11b7918b966f", + "sha256:172169099797f1ec469b0aadb00c653193a74757f99312c9c17dc1a18d23d972", + "sha256:188f5780f1cfbeba0c3ddb1aa3fa0415ab1a8aa04e9e89f70ad5403197013437", + "sha256:1b734b074a09b1b2e1de7df423565412d9213faefa8ca422f32be756b189f729", + "sha256:1c28b52e59a5e6aa00a929b35b04473bd479a74237ab1170c573c49e8aca61fe", + "sha256:1cc29909e4cef05d5e49f5d77ace1dc49311c7791734a048b690521c76b4b7a0", + "sha256:215a5bf8fdcbed700cc8782d4044e1f036606d5c321710d83e8da6d0fdfe07d5", + "sha256:225e19d37b234d4d721557434b7d5590cd63b6342492b689e2d694d44d7cc537", + "sha256:232e8faa8e624f3eb0552a636ebe745cee00480e0e56ad62f17808d281838f2e", + "sha256:23fae6a5a1403d16592b8823d5dea93f738c6e217a1e1bb0eefad242fb03d47f", + "sha256:27428d7b0e706307d0c697f81599e7af4f52e5873ea6bc269eae3604b16b81fe", + "sha256:280809e56a7098f48165ce134222098e4cfe7084b10d69bbc31367942e541dfd", + "sha256:2b2dc483ada55ef35990b67dc0e7a779f0b2ce79d156e452dc8b835b03c0dca9", + "sha256:2b3c7aa2c9a6533dc7234d2a303efdcb9df3f4ac4d0919ec1caf568868f12a0a", + "sha256:2c39d1cb04fc277701de6fe2119cc71facc4aff2ca0414b2e326aec337fa1ab4", + "sha256:2cb8d08330d250df47088c13683322083afbdfafdc31df205616506d6b9f068f", + "sha256:2e456150af62ee1f24a0c9976947629bfb80d80b4fbd37aa901cf794db6ba9b0", + "sha256:316147fb62c810a7667277e5ae7bb75b2871c32d2c398aeb4503cbd4cf3315e7", + "sha256:351a4fed240728dcc96966e0c4cfd3dce870525377a1cb5afac8e5cfe116ff7b", + "sha256:36bdde1aba78e4a3a6ce5cbebd0a6bc967b0c3fbd8bd99a197dcc17d654f423c", + "sha256:384be6b7df8fb6a93ddd88d4184094f2ba4f1d07c30dcd4ae164d185d31a2af6", + "sha256:3caf4ca668854bb23db4b65af0068238677b5791bcc45694bf8990f3e26e85c9", + "sha256:3dde123ce85d1ba99d9bdf44b1b3174fa22bc8fb10004e0d72bb661a0444c1a9", + "sha256:3ecdd528268478efeb78ed0132b01104bda6cd8f10c8a57708fc87b1add77e4d", + "sha256:420aa610fe392c4ee700e474673276bb4f3c4f091d001f58b1f018bf650840c1", + "sha256:440c537fdf2eaee7fdd41fb1dce5701c490c1964fdb74225b10b49a7c45bc7b4", + "sha256:462c9425fbc5315cbc20a72ca62558e5545bb0f6dc9355e2fa96fa747e9b1a80", + "sha256:4963982d5da0825768f9a80760a8560c3e4cf711a9a7ea06ff9bcb7bd250b131", + "sha256:4bbfe4474d3470c724e283bd1fe8ee9ab3cb6a4c378112926f45d41e326a7622", + "sha256:4db2e0f58153a376d9a14873e342d507ca32640640284cddf3c1e74a65929477", + "sha256:51d45d56be14b69720d11a8c61e101d86a65dc8a3a9f356bbe4d98cf4f3c5617", + "sha256:525eda30469522cd840a11ba866d0616c132f6c4be8966a297d7545e97fcb822", + "sha256:532d63c54159f7e0fb520e2f72ef596493bc43810eaa75fac7a188e898ab593b", + "sha256:5569c8314335e92570c471d60b4b03eb2a4467864805a560d133d24b27b3961a", + "sha256:56764825f64ab983d32b8c1d4ee483f415f2559e59388ba266a9fcafc44305bf", + "sha256:56f19ccba8a6ddf1382b0fb4fb8d4e1330e4a1b148e5d198f0981ba2a97c3492", + "sha256:5819b95d0ccce864066f062d2329363ae8a64b9c3d076d039c75ffc9204c2a12", + "sha256:599b04b04eb1b5b964a35986bea2bc4381145836fe550cc33c40a796b855b985", + "sha256:5f2a96c5b40727bc21a695d3a106f49e88572fa11427bf2193cabd99e624c901", + "sha256:608385f07a4b0391d4982d1efb83ad70920cd8ca495a7868e44d2a4511cbf84e", + "sha256:6abf2593b91e36f1cb1c40ac895993c7d2eb30d3f1cb0954a80e5f13697b6b69", + "sha256:6d79fd3c58a4dc71ffd0fc55982a9a2079fe94c76ccff2777092f6107d6a049a", + "sha256:6f699bf2cb223aeec04a106003bd2bf8a4fc6d4c5eddf79cacecb6b267657ac5", + "sha256:70cebcf9bc345ac1e034fa781eac3619323eaf87f7bbe26f0e28850beb6f5634", + "sha256:726a598e34657772e5f131115741ea8709e9b55fa35d63c4717bc16b2a737d38", + "sha256:76a4faef4c31953aa7b9ebe00d162f7ce9bc03fc8d423ab2dc690a11d7520a8e", + "sha256:7706336bd15acf4e42300579e42bef742c01a4eb202998f6c20c443a2ce5fd60", + "sha256:7965108069f9731306a882872c23ad4f5a8531668e82b27932a19814c52a8dd8", + "sha256:79fde5b27e35aedd958f5fb58ebabce47d7eddae5a5e3774088c30c9610195ef", + "sha256:8528c59d3d3df6618777892b60435022d8917de9ea32933d439c7ffd24437237", + "sha256:85b504f233f0484e9a74df4f286a9ae56fbbe2a648c45726761cf7b6f072cdc8", + "sha256:88c2d427ab1b20f220c1d53171b0691faa8f0a219367d84e859f1001e90ceefc", + "sha256:890355bf6ba3dc04b5a23d1328eb1f6062165e6262197cebc9acfebdcb23144c", + "sha256:8a35e308c23f039064600108fc1c8416bd102bc3cf3a6915761a9f7c801237e0", + "sha256:8bb60d5a948f00901da1d7e4953189259b3c7ef79391fecd6f18db3f48a036fe", + "sha256:8d1356c86eefbde3fe8a3c39fb81bbc8b16acc8e442e191408042e8b1d6904e3", + "sha256:9014660472f2080d550157164cc5f9376245a34a0ab877b82b95c1f894af5b28", + "sha256:932f7b77750dff7140522dc97dfd94533a599ef1c5d0be3733f556fd44a68821", + "sha256:945e97ad2bbf7885426f39641a735a31fd4ca2e84e4d0cd271d9880372d6eae1", + "sha256:97e658a3793478d6bca684f47f29f62542312683687bc045dc3cb588160e74b3", + "sha256:99196b4730d887a4bc578f05039b55dc57b131c81b5a5e03efa619b587bdf293", + "sha256:9e895cc3e5ffee269dd9866097e227a68022ef2b78d627a6ed737534d0c88c14", + "sha256:9f6f245d4a5e707d48274f38551b654a36db4fb83437c98be00d2019263aa364", + "sha256:a1f00c328b8dae1828844bac019dfe425d10a2043cc70e2f967224c5392d19ad", + "sha256:a4b43949477dc2b0d3e1d8b7c413ed74f515cef01954cdcc3fb1e2dcc49f2aff", + "sha256:a610426251d1340baa4d8b7942d2cbfe6a1e20b92c66817ab582e0d341185ab5", + "sha256:a6ae5c18b9a70cb0ae576a8a3c8a9a0659356c016b49cc6b263dd987d344f30d", + "sha256:a7bb559b68eb9cb3c4f867eb9fb39a696c4da70a41fad37b410bd0c7b426a8ce", + "sha256:ab2e03dd140ab93b91f94a785d1cd6082d5ab53ab6ec958726efa0ad17f7b87a", + "sha256:ab87c4c50d65932788d058adbbd28a209144523ffacbab81dd41582ffce26af9", + "sha256:ad1563f11dd70cb1684cfe841e4cf7f35d4f65769de21d12b72cf773a7932615", + "sha256:ad8f8c39c8df184e346184699783f105755003662f0dbe1233d9d9849650ab5f", + "sha256:b007aaf5810c708c5a2778e371aa546d7084e4e9f82f65865b2ce5a182376f42", + "sha256:b088f06d9e2f523683ae363e227173ac454dbb56c938c6d42791fdd78bad8da7", + "sha256:b499d93fa31a73e31ee62f2cbe07e4df833fd7151734b8f07c48ffe3e4547ec5", + "sha256:b6df948da34b5fb949698092573d798c76c54f2f2188db59276d599075f9ed04", + "sha256:b71d82e3f001bcb53463023f7f37e223fff56cf048f577c6d85597db94770f10", + "sha256:b85929db81105c06e8292c05cac093068e86464555c628c03f99c9f8090d68d4", + "sha256:b9b3c27aeea1752f0c1df1e29115e4b6f0249173d71e53c5f7e2c821706f028b", + "sha256:bb337ffa10824fa2025c4b1c06a2d809dbed4a4bf9e3ffb262676d084c4e0c50", + "sha256:bd2a098250c683d248a6490ac437ed56f7164d2151572231bd26c76bfe111b11", + "sha256:c35bb5fe018fd9c42be3c28e74dc7dcfae471c3c6689679dbd0bd1d6dc0f51b7", + "sha256:c384c49ce52b82d5b0355000b8aeb7e3a7654997916c1e6fd9d29697edda1076", + "sha256:c3d51ab9f3d5b9a10295abe480c50bf74ee5bf3d984c4cee77e493e575acc869", + "sha256:c3d9730341c825eb167ca06c9dddf6ad4d1b4e71ea7da73cc8c5139fcb5e14ca", + "sha256:c44b3022115eb1697315bc51aeadbade1a19d7188bcda66c52d91209cf2963ca", + "sha256:c7b7be4bff27d7ce6a81d3993755371b5f5b42436afa151868e8fd599acbab19", + "sha256:cb8566b535bc4ebb26247d6f636a27bb0038bc93fa7e55121628f5cd6b0906ac", + "sha256:cb941981676dc7859d53199a10a33ca56a3146cce6a45bc6ad70572c1147157d", + "sha256:cba09dfd3aea2addc994eb21a861c3cea2d68141bb7ebe68b0e94c73405540f9", + "sha256:d0d0923087fe1f2d85daa68463d221e90b4b8ed0356480c887eea90b2a2cc7ee", + "sha256:d2baf7ec353fa64917045b3efe26e7c12ce0d7b4d120c3773a612dce54f91585", + "sha256:d7e3ab9870c496e5a058436bf4d96ed111ca6154c8ef8147b70c44c188d6fb2c", + "sha256:dd074b06be9484040acb4c2c0462c4d19a43e377716be7ba10440f51a57bb98c", + "sha256:dd351b8fbc77c2e2ebc3eeadc0cf72bd5024a43bef5a847697e2b076d1201636", + "sha256:de4953b6b1e19dabd23767bd1f83f1cf73978372189dec0e2dd8b3d6971100d6", + "sha256:e6765c47b487341837b3731cca3c8033b971ee082f6ab41cb430aa3447686eec", + "sha256:e678696bb613f0344b79be385747aae705b327a9a32ace45a353dd16497bc719", + "sha256:e883919cea8e446c5c49717a7ce5c93a016a02b9429b81d64b9ab1d80fc12e42", + "sha256:e8963d7ac292f41654fa7cbc1a34efdb09e5a42399b2e3689c3fd5b8b4e0fe16", + "sha256:e9c54136c9fab2cefe9801e336b8a3aa7299bcfe7f387379cc6394ad1d5a484b", + "sha256:ee779a291330287b341044635fce2979176d113b0dcce0308dc5d62da7951eec", + "sha256:ef23f62b3abd287cf368341540ef2a81c86b48de9d488e182e63fe24ac165538", + "sha256:f0b54b95e39036c116ffc057b3f56f6084ce88822de3d5d1f57fa38554ccf5c1", + "sha256:f7c5745e0f96c2c16c03c7540dbe26f3b62ddee63059be0a014156933f054024", + "sha256:f90b2f44b5b23364d5fbade2c34652e15b1fcfe813c46f828e008f68a709160f", + "sha256:fa49f6cfcae4305d8cff028dc9c9a881189a38f7ca43c085aef894c58cb6fbde", + "sha256:fb8b727cd9ddff848c5f73e65470abb110f026beab403bcebbd74e7439b9bd8f", + "sha256:fea9354b7169810e2bdd6f3265ff128b564a25d38479b9ad0a9c5776e4fd0cfc", + "sha256:ff31bef13fd278446b6d1969a46db9f02c36fd905f3e75878f0fe17271f7d897", + "sha256:ff3e182c766cd6f302e99e0d8e44927d533356e9d6ac93fcd09987ebead467aa" ], - "markers": "python_version >= '3.5'", - "version": "==2.1.1" + "version": "==2.8.2" }, - "bitarray": { + "blinker": { "hashes": [ - "sha256:035d3e5ab3c1afa2cd88bbc33af595b4875a24b0d037dfef907b41bc4b0dbe2b", - "sha256:0399886ca8ead7d0f16f94545bda800467d6d9c63fbd4866ee7ede7981166ba8", - "sha256:049e8f017b5b6d1763ababa156ca5cbdea8a01e20a1e80525b0fbe9fb839d695", - "sha256:076a72531bcca99114036c3714bac8124f5529b60fb6a6986067c6f345238c76", - "sha256:0b756e5c771cdceb17622b6a0678fa78364e329d875de73a4f26bbacab8915a8", - "sha256:11996c4da9c1ca9f97143e939af75c5b24ad0fdc2fa13aeb0007ebfa3c602caf", - "sha256:119d503edf09bef37f2d0dc3b4a23c36c3c1e88e17701ab71388eb4780c046c7", - "sha256:12c96dedd6e4584fecc2bf5fbffe1c635bd516eee7ade7b839c35aeba84336b4", - "sha256:1479f533eaff4080078b6e5d06b467868bd6edd73bb6651a295bf662d40afa62", - "sha256:15d2a1c060a11fc5508715fef6177937614f9354dd3afe6a00e261775f8b0e8f", - "sha256:1d0a2d896bcbcb5f32f60571ebd48349ec322dee5e137b342483108c5cbd0f03", - "sha256:24331bd2f52cd5410e48c132f486ed02a4ca3b96133fb26e3a8f50a57c354be6", - "sha256:2cfe1661b614314d67e6884e5e19e36957ff6faea5fcea7f25840dff95288248", - "sha256:346d2c5452cc024c41d267ba99e48d38783c1706c50c4632a4484cc57b152d0e", - "sha256:36802129a3115023700c07725d981c74e23b0914551898f788e5a41aed2d63bf", - "sha256:3f238127789c993de937178c3ff836d0fad4f2da08af9f579668873ac1332a42", - "sha256:42a071c9db755f267e5d3b9909ea8c22fb071d27860dd940facfacffbde79de8", - "sha256:4d42fee0add2114e572b0cd6edefc4c52207874f58b70043f82faa8bb7141620", - "sha256:4ffc076a0e22cda949ccd062f37ecc3dc53856c6e8bdfe07e1e81c411cf31621", - "sha256:5276c7247d350819d1dae385d8f78ebfb44ee90ff11a775f981d45cb366573e5", - "sha256:565c4334cb410f5eb62280dcfb3a52629e60ce430f31dfa4bbef92ec80de4890", - "sha256:56d3f16dd807b1c56732a244ce071c135ee973d3edc9929418c1b24c5439a0fd", - "sha256:5a0bb91363041b45523e5bcbc4153a5e1eb1ddb21e46fe1910340c0d095e1a8e", - "sha256:5bd315ac63b62de5eefbfa07969162ffbda8e535c3b7b3d41b565d2a88817b71", - "sha256:5f5df0377f3e7f1366e506c5295f08d3f8761e4a6381918931fc1d9594aa435e", - "sha256:6071d12043300e50a4b7ba9caeeca92aac567bb4ac4a227709e3c77a3d788587", - "sha256:67c5822f4bb6a419bc2f2dba9fa07b5646f0cda930bafa9e1130af6822e4bdf3", - "sha256:6c3d0a4a6061adc3d3128e1e1146940d17df8cbfe3d77cb66a1df69ddcdf27d5", - "sha256:6c46c2ba24a517f391c3ab9e7a214185f95146d0b664b4b0463ab31e5387669f", - "sha256:6d8ba8065d1b60da24d94078249cbf24a02d869d7dc9eba12db1fb513a375c79", - "sha256:6fa63a86aad0f45a27c7c5a27cd9b787fe9b1aed431f97f49ee8b834fa0780a0", - "sha256:7126563c86f6b60d87414124f035ff0d29de02ad9e46ea085de2c772b0be1331", - "sha256:71cc3d1da4f682f27728745f21ed3447ee8f6a0019932126c422dd91278eb414", - "sha256:742d43cbbc7267caae6379e2156a1fd8532332920a3d919b68c2982d439a98ba", - "sha256:763cac57692d07aa950b92c20f55ef66801955b71b4a1f4f48d5422d748c6dda", - "sha256:76c4e3261d6370383b02018cb964b5d9260e3c62dea31949910e9cc3a1c802d2", - "sha256:7ae3b8b48167579066a17c5ba1631d089f931f4eae8b4359ad123807d5e75c51", - "sha256:7f369872d551708d608e50a9ab8748d3d4f32a697dc5c2c37ff16cb8d7060210", - "sha256:874a222ece2100b3a3a8f08c57da3267a4e2219d26474a46937552992fcec771", - "sha256:878f16daa9c2062e4d29c1928b6f3eb50911726ad6d2006918a29ca6b38b5080", - "sha256:8c811e59c86ce0a8515daf47db9c2484fd42e51bdb44581d7bcc9caad6c9a7a1", - "sha256:97609495479c5214c7b57173c17206ebb056507a8d26eebc17942d62f8f25944", - "sha256:985a937218aa3d1ac7013174bfcbb1cb2f3157e17c6e349e83386f33459be1c0", - "sha256:a239313e75da37d1f6548d666d4dd8554c4a92dabed15741612855d186e86e72", - "sha256:b080eb25811db46306dfce58b4760df32f40bcf5551ebba3b7c8d3ec90d9b988", - "sha256:b0cfca1b5a57b540f4761b57de485196218733153c430d58f9e048e325c98b47", - "sha256:b0e4a6f5360e5f6c3a2b250c9e9cd539a9aabf0465dbedbaf364203e74ff101b", - "sha256:b849a6cdd46608e7cc108c75e1265304e79488480a822bae7471e628f971a6f0", - "sha256:bfda0af4072df6e932ec510b72c461e1ec0ad0820a76df588cdfebf5a07f5b5d", - "sha256:c19e900b6f9df13c7f406f827c5643f83c0839a58d007b35a4d7df827601f740", - "sha256:c24d4a1b5baa46920b801aa55c0e0a640c6e7683a73a941302e102e2bd11a830", - "sha256:c774328057a4b1fc48bee2dd5a60ee1e8e0ec112d29c4e6b9c550e1686b6db5c", - "sha256:d34673ebaf562347d004a465e16e2930c6568d196bb79d67fc6358f1213a1ac7", - "sha256:d523ffef1927cb686ad787b25b2e98a5bd53e3c40673c394f07bf9b281e69796", - "sha256:d53520b54206d8569b81eee56ccd9477af2f1b3ca355df9c48ee615a11e1a637", - "sha256:d697cc38cb6fa9bae3b994dd3ce68552ffe69c453a3b6fd6a4f94bb8a8bfd70b", - "sha256:d7bec01818c3a9d185f929cd36a82cc7acf13905920f7f595942105c5eef2300", - "sha256:e6a4a4bf6fbc42b2674023ca58a47c86ee55c023a8af85420f266e86b10e7065", - "sha256:e6bd32e492cdc740ec36b6725457685c9f2aa012dd8cbdae1643fed2b6821895", - "sha256:e76642232db8330589ed1ac1cec0e9c3814c708521c336a5c79d39a5d8d8c206", - "sha256:e7ba4c964a36fe198a8c4b5d08924709d4ed0337b65ae222b6503ed3442a46e8", - "sha256:ec18a0b97ea6b912ea57dc00a3f8f3ce515d774d00951d30e2ae243589d3d021", - "sha256:ecce266e24b21615a3ed234869be84bef492f6a34bb650d0e25dc3662c59bce4", - "sha256:f0302605b3bbc439083a400cf57d7464f1ac098c722309a03abaa7d97cd420b5", - "sha256:f253b9bdf5abd039741a9594a681453c973b09dcb7edac9105961838675b7c6b", - "sha256:f263b18fdb8bf42cd7cf9849d5863847d215024c68fe74cf33bcd82641d4376a", - "sha256:f37b5282b029d9f51454f8c580eb6a24e5dc140ef5866290afb20e607d2dce5f", - "sha256:f4849709571b1a53669798d23cc8430e677dcf0eea88610a0412e1911233899a", - "sha256:f853589426920d9bb3683f6b6cd11ce48d9d06a62c0b98ea4b82ebd8db3bddec", - "sha256:f9c492644f70f80f8266748c18309a0d73c22c47903f4b62f3fb772a15a8fd5f", - "sha256:fc635b27939969d53cac53e8b8f860ea69fc98cc9867cac17dd193f41dc2a57f", - "sha256:febaf00e498230ce2e75dac910056f0e3a91c8631b7ceb6385bb39d448960bc5" - ], - "version": "==2.6.0" + "sha256:152090d27c1c5c722ee7e48504b02d76502811ce02e1523553b4cf8c8b3d3a8d", + "sha256:296320d6c28b006eb5e32d4712202dbcdcbf5dc482da298c2f44881c43884aaa" + ], + "markers": "python_version >= '3.7'", + "version": "==1.6.3" }, "bytestring-splitter": { "hashes": [ @@ -240,96 +305,85 @@ }, "certifi": { "hashes": [ - "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3", - "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18" + "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082", + "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9" ], "markers": "python_version >= '3.6'", - "version": "==2022.12.7" + "version": "==2023.7.22" }, "cffi": { "hashes": [ - "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5", - "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef", - "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104", - "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426", - "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405", - "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375", - "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a", - "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e", - "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc", - "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf", - "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185", - "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497", - "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3", - "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35", - "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c", - "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83", - "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21", - "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca", - "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984", - "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac", - "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd", - "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee", - "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a", - "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2", - "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192", - "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7", - "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585", - "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f", - "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e", - "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27", - "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b", - "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e", - "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e", - "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d", - "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c", - "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415", - "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82", - "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02", - "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314", - "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325", - "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c", - "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3", - "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914", - "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045", - "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d", - "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9", - "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5", - "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2", - "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c", - "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3", - "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2", - "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8", - "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d", - "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d", - "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9", - "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162", - "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76", - "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4", - "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e", - "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9", - "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6", - "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b", - "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01", - "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0" - ], - "version": "==1.15.1" + "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc", + "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a", + "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417", + "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab", + "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520", + "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36", + "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743", + "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8", + "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed", + "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684", + "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56", + "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324", + "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d", + "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235", + "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e", + "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088", + "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000", + "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7", + "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e", + "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673", + "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c", + "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe", + "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2", + "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098", + "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8", + "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a", + "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0", + "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b", + "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896", + "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e", + "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9", + "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2", + "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b", + "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6", + "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404", + "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f", + "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0", + "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4", + "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc", + "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936", + "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba", + "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872", + "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb", + "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614", + "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1", + "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d", + "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969", + "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b", + "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4", + "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627", + "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956", + "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357" + ], + "markers": "python_version >= '3.8'", + "version": "==1.16.0" }, "charset-normalizer": { "hashes": [ "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" ], - "markers": "python_version >= '3.6'", + "markers": "python_full_version >= '3.6.0'", "version": "==2.1.1" }, "click": { "hashes": [ - "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", - "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" + "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", + "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de" ], "markers": "python_version >= '3.7'", - "version": "==8.1.3" + "version": "==8.1.7" }, "colorama": { "hashes": [ @@ -356,181 +410,181 @@ }, "cryptography": { "hashes": [ - "sha256:0e70da4bdff7601b0ef48e6348339e490ebfb0cbe638e083c9c41fb49f00c8bd", - "sha256:10652dd7282de17990b88679cb82f832752c4e8237f0c714be518044269415db", - "sha256:175c1a818b87c9ac80bb7377f5520b7f31b3ef2a0004e2420319beadedb67290", - "sha256:1d7e632804a248103b60b16fb145e8df0bc60eed790ece0d12efe8cd3f3e7744", - "sha256:1f13ddda26a04c06eb57119caf27a524ccae20533729f4b1e4a69b54e07035eb", - "sha256:2ec2a8714dd005949d4019195d72abed84198d877112abb5a27740e217e0ea8d", - "sha256:2fa36a7b2cc0998a3a4d5af26ccb6273f3df133d61da2ba13b3286261e7efb70", - "sha256:2fb481682873035600b5502f0015b664abc26466153fab5c6bc92c1ea69d478b", - "sha256:3178d46f363d4549b9a76264f41c6948752183b3f587666aff0555ac50fd7876", - "sha256:4367da5705922cf7070462e964f66e4ac24162e22ab0a2e9d31f1b270dd78083", - "sha256:4eb85075437f0b1fd8cd66c688469a0c4119e0ba855e3fef86691971b887caf6", - "sha256:50a1494ed0c3f5b4d07650a68cd6ca62efe8b596ce743a5c94403e6f11bf06c1", - "sha256:53049f3379ef05182864d13bb9686657659407148f901f3f1eee57a733fb4b00", - "sha256:6391e59ebe7c62d9902c24a4d8bcbc79a68e7c4ab65863536127c8a9cd94043b", - "sha256:67461b5ebca2e4c2ab991733f8ab637a7265bb582f07c7c88914b5afb88cb95b", - "sha256:78e47e28ddc4ace41dd38c42e6feecfdadf9c3be2af389abbfeef1ff06822285", - "sha256:80ca53981ceeb3241998443c4964a387771588c4e4a5d92735a493af868294f9", - "sha256:8a4b2bdb68a447fadebfd7d24855758fe2d6fecc7fed0b78d190b1af39a8e3b0", - "sha256:8e45653fb97eb2f20b8c96f9cd2b3a0654d742b47d638cf2897afbd97f80fa6d", - "sha256:998cd19189d8a747b226d24c0207fdaa1e6658a1d3f2494541cb9dfbf7dcb6d2", - "sha256:a10498349d4c8eab7357a8f9aa3463791292845b79597ad1b98a543686fb1ec8", - "sha256:b4cad0cea995af760f82820ab4ca54e5471fc782f70a007f31531957f43e9dee", - "sha256:bfe6472507986613dc6cc00b3d492b2f7564b02b3b3682d25ca7f40fa3fd321b", - "sha256:c9e0d79ee4c56d841bd4ac6e7697c8ff3c8d6da67379057f29e66acffcd1e9a7", - "sha256:ca57eb3ddaccd1112c18fc80abe41db443cc2e9dcb1917078e02dfa010a4f353", - "sha256:ce127dd0a6a0811c251a6cddd014d292728484e530d80e872ad9806cfb1c5b3c" + "sha256:0c327cac00f082013c7c9fb6c46b7cc9fa3c288ca702c74773968173bda421bf", + "sha256:0d2a6a598847c46e3e321a7aef8af1436f11c27f1254933746304ff014664d84", + "sha256:227ec057cd32a41c6651701abc0328135e472ed450f47c2766f23267b792a88e", + "sha256:22892cc830d8b2c89ea60148227631bb96a7da0c1b722f2aac8824b1b7c0b6b8", + "sha256:392cb88b597247177172e02da6b7a63deeff1937fa6fec3bbf902ebd75d97ec7", + "sha256:3be3ca726e1572517d2bef99a818378bbcf7d7799d5372a46c79c29eb8d166c1", + "sha256:573eb7128cbca75f9157dcde974781209463ce56b5804983e11a1c462f0f4e88", + "sha256:580afc7b7216deeb87a098ef0674d6ee34ab55993140838b14c9b83312b37b86", + "sha256:5a70187954ba7292c7876734183e810b728b4f3965fbe571421cb2434d279179", + "sha256:73801ac9736741f220e20435f84ecec75ed70eda90f781a148f1bad546963d81", + "sha256:7d208c21e47940369accfc9e85f0de7693d9a5d843c2509b3846b2db170dfd20", + "sha256:8254962e6ba1f4d2090c44daf50a547cd5f0bf446dc658a8e5f8156cae0d8548", + "sha256:88417bff20162f635f24f849ab182b092697922088b477a7abd6664ddd82291d", + "sha256:a48e74dad1fb349f3dc1d449ed88e0017d792997a7ad2ec9587ed17405667e6d", + "sha256:b948e09fe5fb18517d99994184854ebd50b57248736fd4c720ad540560174ec5", + "sha256:c707f7afd813478e2019ae32a7c49cd932dd60ab2d2a93e796f68236b7e1fbf1", + "sha256:d38e6031e113b7421db1de0c1b1f7739564a88f1684c6b89234fbf6c11b75147", + "sha256:d3977f0e276f6f5bf245c403156673db103283266601405376f075c849a0b936", + "sha256:da6a0ff8f1016ccc7477e6339e1d50ce5f59b88905585f77193ebd5068f1e797", + "sha256:e270c04f4d9b5671ebcc792b3ba5d4488bf7c42c3c241a3748e2599776f29696", + "sha256:e886098619d3815e0ad5790c973afeee2c0e6e04b4da90b88e6bd06e2a0b1b72", + "sha256:ec3b055ff8f1dce8e6ef28f626e0972981475173d7973d63f271b29c8a2897da", + "sha256:fba1e91467c65fe64a82c689dc6cf58151158993b13eb7a7f3f4b7f395636723" ], - "markers": "python_version >= '3.6'", - "version": "==38.0.4" + "markers": "python_version >= '3.7'", + "version": "==41.0.5" }, "cytoolz": { "hashes": [ - "sha256:02583c9fd4668f9e343ad4fc0e0f9651b1a0c16fe92bd208d07fd07de90fdc99", - "sha256:02dc4565a8d27c9f3e87b715c0a300890e17c94ba1294af61c4ba97aa8482b22", - "sha256:09f5652caeac85e3735bd5aaed49ebf4eeb7c0f15cb9b7c4a5fb6f45308dc2fd", - "sha256:09fac69cebcb79a6ed75565fe2de9511be6e3d93f30dad115832cc1a3933b6ce", - "sha256:0c9fe89548b1dc7c8b3160758d192791b32bd42b1c244a20809a1053a9d74428", - "sha256:0f94b4a3500345de5853d1896b7e770ce4a6577a431f43ff7d8f05f9051aeb7d", - "sha256:12d3d11ceb0fce8be5463f1e363366888c4b71e68fb2f5d536e4790b933cfd7e", - "sha256:16748ea2b40c5978190d9acf9aa8fbacbfb440964c1035dc16cb14dbd557edb5", - "sha256:1744217505b835fcf55d82d67addd0d361791c4fd6a2f485f034b343ffc7edb3", - "sha256:1a79658fd264c5f82ea1b5cb45cf3899afabd9ec3e58c333bea042a2b4a94134", - "sha256:1c22255e7458feb6f43d99c9578396e91d5934757c552128f6afd3b093b41c00", - "sha256:1cf9ae77eed57924becd3ab65ae24487d7b1f9823d3e685d796e58f57424f82a", - "sha256:21986f4a970c03ca84806b3a08e89386ac4aeb54c9b79d6a7268e83225331a87", - "sha256:231d87ffb5fc468989e35336a2f8da1c9b8d97cfd9300cf2df32e953e4d20cae", - "sha256:25c037a7b4f49730ccc295a03cd2217ba67ff43ac0918299f5f368271433ff0f", - "sha256:274bc965cd93d6fa0bfe6f770cf6549bbe58d7b0a48dd6893d3f2c4b495d7f95", - "sha256:2bd1c692ab706acb46cfebe7105945b07f7274598097e32c8979d3b22ae62cc6", - "sha256:2d29cf7a44a8abaeb00537e3bad7abf823fce194fe707c366f81020d384e22f7", - "sha256:2ee9ca2cfc939607926096c7cc6f298cee125f8ca53a4f46745f8dfbb7fb7ab1", - "sha256:336551092eb1cfc2ad5878cc08ef290f744843f84c1dda06f9e4a84d2c440b73", - "sha256:337c9a3ce2929c6361bcc1b304ce81ed675078a34c203dbb7c3e154f7ed1cca8", - "sha256:38e3386f63ebaea46a4ee0bfefc9a38590c3b78ab86439766b5225443468a76b", - "sha256:3a5408a74df84e84aa1c86a2f9f2ffaed51a55f34bbad5b8fae547cb9167e977", - "sha256:3e8335998e21205574fc7d8d17844a9cc0dd4cbb25bb7716d90683a935d2c879", - "sha256:46b9f4af719b113c01a4144c52fc4b929f98a47017a5408e3910050f4641126b", - "sha256:4b8b1d9764d08782caa8ba0e91d76b95b973a82f4ce2a3f9c7e726bfeaddbdfa", - "sha256:59263f296e043d4210dd34f91e6f11c4b20e6195976da23170d5ad056030258a", - "sha256:5b7079b3197256ac6bf73f8b9484d514fac68a36d05513b9e5247354d6fc2885", - "sha256:68336dfbe00efebbb1d02b8aa00b570dceec5d03fbd818c620aa246a8f5e5409", - "sha256:69c04ae878d5bcde5462e7290f950bfce11fd139ec4b481687983326658e6dbe", - "sha256:6aade6ebb4507330b0540af58dc2804415945611e90c70bb97360973e487c48a", - "sha256:6f87472837c26b3bc91f9767c7adcfb935d0c097937c6744250672cd8c36019d", - "sha256:6fa49cfaa0eedad59d8357a482bd10e2cc2a12ad9f41aae53427e82d3eba068a", - "sha256:7244fb0d0b87499becc29051b82925e0daf3838e6c352e6b2d62e0f969b090af", - "sha256:798dff7a40adbb3dfa2d50499c2038779061ebc37eccedaf28fa296cb517b84e", - "sha256:79b46cda959f026bd9fc33b4046294b32bd5e7664a4cf607179f80ac93844e7f", - "sha256:7fe93ffde090e2867f8ce4369d0c1abf5651817a74a3d0a4da2b1ffd412603ff", - "sha256:8060be3b1fa24a4e3b165ce3c0ee6048f5e181289af57dbd9e3c4d4b8545dd78", - "sha256:8237612fed78d4580e94141a74ac0977f5a9614dd7fa8f3d2fcb30e6d04e73aa", - "sha256:886b3bf8fa99510836107097a5e5a2bd81631d3795dedc5684e25bef6538ac39", - "sha256:8c0101bb2b2bcc0de2e2eb288a132c261e5fa883b1423799b47d4f0cfd879cd6", - "sha256:8f40897f6f341e03a945759fcdb2208dc7c64dc312386d3088c47b78fca2a3b2", - "sha256:94b067c88de0eaca174211c8422b3f72cbfb63b101a0eeb528c4f21282ca0afe", - "sha256:9ac7758c5c5a66664285831261a9af8e0af504026e0987cd01535045945df6e1", - "sha256:9dd7dbdfc24ed309af96be170c9030f43713950afab2b4bed1d372a91b37cbb0", - "sha256:9e32292721f16516a574891a1af6760cba37a0f426a2b2cea6f9d560131a76ea", - "sha256:9ecdd6e2be8d59b76c2bd3e2d832e7b3d5b2535c418b13cfa85e3b17de985199", - "sha256:a15157f4280f6e5d7c2d0892847a6c4dffbd2c5cefccaf1ac1f1c6c3d2cf9936", - "sha256:a2cca43caea857e761cc458ffb4f7af397a13824c5e71341ca08035ff5ff0b27", - "sha256:a4acf6cb20f01a5eb5b6d459e08fb92aacfb4de8bc97e25437c1a3e71860b452", - "sha256:a8e69c9f3a32e0f9331cf6707a0f159c6dec0ff2a9f41507f6b2d06cd423f0d0", - "sha256:a8feb4d056c22983723278160aff8a28c507b0e942768f4e856539a60e7bb874", - "sha256:ae403cac13c2b9a2a92e56468ca1f822899b64d75d5be8ca802f1c14870d9133", - "sha256:ae7f417bb2b4e3906e525b3dbe944791dfa9248faea719c7a9c200aa1a019a4e", - "sha256:b05dc257996c0accf6f877b1f212f74dc134b39c46baac09e1894d9d9c970b6a", - "sha256:b716f66b5ee72dbf9a001316ffe72afe0bb8f6ce84e341aec64291c0ff16b9f4", - "sha256:bb0fc2ed8efa89f31ffa99246b1d434ff3db2b7b7e35147486172da849c8024a", - "sha256:c105b05f85e03fbcd60244375968e62e44fe798c15a3531c922d531018d22412", - "sha256:c4ff74cb0e1a50de7f59e54a156dfd734b6593008f6f804d0726a73b89d170cd", - "sha256:c818a382b828e960fbbedbc85663414edbbba816c2bf8c1bb5651305d79bdb97", - "sha256:c9f8c9b3cfa20b4ce6a89b7e2e7ffda76bdd81e95b7d20bbb2c47c2b31e72622", - "sha256:cb072fa81caab93a5892c4b69dfe0d48f52026a7fe83ba2567020a7995a456e7", - "sha256:d035805dcdefcdfe64d97d6e1e7603798588d5e1ae08e61a5dae3258c3cb407a", - "sha256:d212296e996a70db8d9e1c0622bc8aefa732eb0416b5441624d0fd5b853ea391", - "sha256:d511dd49eb1263ccb4e5f84ae1478dc2824d66b813cdf700e1ba593faa256ade", - "sha256:d61bc1713662e7d9aa3e298dad790dfd027c5c0f1342c36be8401aebe3d3d453", - "sha256:db619f17705067f1f112d3e84a0904b2f04117e50cefc4016f435ff0dc59bc4e", - "sha256:dc8df9adfca0da9956589f53764d459389ce86d824663c7217422232f1dfbc9d", - "sha256:dd840adfe027d379e7aede973bc0e193e6eef9b33d46d1d42826e26db9b37d7e", - "sha256:deb8550f487de756f1c24c56fa2c8451a53c0346868c13899c6b3a39b1f3d2c3", - "sha256:e17516a102731bcf86446ce148127a8cd2887cf27ac388990cd63881115b4fdc", - "sha256:ed8771e36430fb0e4398030569bdab1419e4e74f7bcd51ea57239aa95441983a", - "sha256:edf460dc6bed081f274cd3d8ae162dd7e382014161d65edcdec832035d93901b", - "sha256:ee1fe1a3d0c8c456c3fbf62f28d178f870d14302fcd1edbc240b717ae3ab08de", - "sha256:ee92dadb312e657b9b666a0385fafc6dad073d8a0fbef5cea09e21011554206a", - "sha256:ef4a496a3175aec595ae24ad03e0bb2fe76401f8f79e7ef3d344533ba990ec0e", - "sha256:f1f5c1ef04240b323b9e6b87d4b1d7f14b735e284a33b18a509537a10f62715c", - "sha256:f24e70d29223cde8ce3f5aefa7fd06bda12ae4386dcfbc726773e95b099cde0d", - "sha256:f26079bc2d0b7aa1a185516ac9f7cda0d7932da6c60589bfed4079e3a5369e83", - "sha256:f5784adcdb285e70b61efc1a369cd61c6b7f1e0b5d521651f93cde09549681f5", - "sha256:f71b49a41826a8e7fd464d6991134a6d022a666be4e76d517850abbea561c909", - "sha256:f909760f89a54d860cf960b4cd828f9f6301fb104cd0de5b15b16822c9c4828b", - "sha256:f959c1319b7e6ed3367b0f5a54a7b9c59063bd053c74278b27999db013e568df", - "sha256:fa5ded9f811c36668239adb4806fca1244b06add4d64af31119c279aab1ef8a6" + "sha256:00547da587f124b32b072ce52dd5e4b37cf199fedcea902e33c67548523e4678", + "sha256:0295289c4510efa41174850e75bc9188f82b72b1b54d0ea57d1781729c2924d5", + "sha256:03b58f843f09e73414e82e57f7e8d88f087eaabf8f276b866a40661161da6c51", + "sha256:0568d4da0a9ee9f9f5ab318f6501557f1cfe26d18c96c8e0dac7332ae04c6717", + "sha256:08a0e03f287e45eb694998bb55ac1643372199c659affa8319dfbbdec7f7fb3c", + "sha256:0a9d12436fd64937bd2c9609605f527af7f1a8db6e6637639b44121c0fe715d6", + "sha256:101b5bd32badfc8b1f9c7be04ba3ae04fb47f9c8736590666ce9449bff76e0b1", + "sha256:14108cafb140dd68fdda610c2bbc6a37bf052cd48cfebf487ed44145f7a2b67f", + "sha256:18580d060fa637ff01541640ecde6de832a248df02b8fb57e6dd578f189d62c7", + "sha256:18a0f838677f9510aef0330c0096778dd6406d21d4ff9504bf79d85235a18460", + "sha256:1ce324d1b413636ea5ee929f79637821f13c9e55e9588f38228947294944d2ed", + "sha256:246368e983eaee9851b15d7755f82030eab4aa82098d2a34f6bef9c689d33fcc", + "sha256:24c0d71e9ac91f4466b1bd280f7de43aa4d94682daaf34d85d867a9b479b87cc", + "sha256:275d53fd769df2102d6c9fc98e553bd8a9a38926f54d6b20cf29f0dd00bf3b75", + "sha256:294d24edc747ef4e1b28e54365f713becb844e7898113fafbe3e9165dc44aeea", + "sha256:2fb740482794a72e2e5fec58e4d9b00dcd5a60a8cef68431ff12f2ba0e0d9a7e", + "sha256:31d4b0455d72d914645f803d917daf4f314d115c70de0578d3820deb8b101f66", + "sha256:388f840fd911d61a96e9e595eaf003f9dc39e847c9060b8e623ab29e556f009b", + "sha256:3e993804e6b04113d61fdb9541b6df2f096ec265a506dad7437517470919c90f", + "sha256:4180b2785d1278e6abb36a72ac97c92432db53fa2df00ee943d2c15a33627d31", + "sha256:4416ee86a87180b6a28e7483102c92debc077bec59c67eda8cc63fc52a218ac0", + "sha256:45c7b4eac7571707269ebc2893facdf87e359cd5c7cfbfa9e6bd8b33fb1079c5", + "sha256:460c05238fbfe6d848141669d17a751a46c923f9f0c9fd8a3a462ab737623a44", + "sha256:478051e5ef8278b2429864c8d148efcebdc2be948a61c9a44757cd8c816c98f5", + "sha256:481e3129a76ea01adcc0e7097ccb8dbddab1cfc40b6f0e32c670153512957c0f", + "sha256:48425107fbb1af3f0f2410c004f16be10ffc9374358e5600b57fa543f46f8def", + "sha256:4a7d8b869ded171f6cdf584fc2fc6ae03b30a0e1e37a9daf213a59857a62ed90", + "sha256:4bff49986c9bae127928a2f9fd6313146a342bfae8292f63e562f872bd01b871", + "sha256:51d3495235af09f21aa92a7cdd51504bda640b108b6be834448b774f52852c09", + "sha256:5556acde785a61d4cf8b8534ae109b023cbd2f9df65ee2afbe070be47c410f8c", + "sha256:55e94124af9c8fbb1df54195cc092688fdad0765641b738970b6f1d5ea72e776", + "sha256:5616d386dfbfba7c39e9418ba668c734f6ceaacc0130877e8a100cad11e6838b", + "sha256:57233e1600560ceb719bed759dc78393edd541b9a3e7fefc3079abd83c26a6ea", + "sha256:593e89e2518eaf81e96edcc9ef2c5fca666e8fc922b03d5cb7a7b8964dbee336", + "sha256:5998f81bf6a2b28a802521efe14d9fc119f74b64e87b62ad1b0e7c3d8366d0c7", + "sha256:5e4e612b7ecc9596e7c859cd9e0cd085e6d0c576b4f0d917299595eb56bf9c05", + "sha256:5fef7b602ccf8a3c77ab483479ccd7a952a8c5bb1c263156671ba7aaa24d1035", + "sha256:63b31345e20afda2ae30dba246955517a4264464d75e071fc2fa641e88c763ec", + "sha256:663911786dcde3e4a5d88215c722c531c7548903dc07d418418c0d1c768072c0", + "sha256:673d6e9e3aa86949343b46ac2b7be266c36e07ce77fa1d40f349e6987a814d6e", + "sha256:68ae7091cc73a752f0b938f15bb193de80ca5edf5ae2ea6360d93d3e9228357b", + "sha256:698da4fa1f7baeea0607738cb1f9877ed1ba50342b29891b0223221679d6f729", + "sha256:6a93644d7996fd696ab7f1f466cd75d718d0a00d5c8118b9fe8c64231dc1f85e", + "sha256:6c8d0dff4865da54ae825d43e1721925721b19f3b9aca8e730c2ce73dee2c630", + "sha256:732d08228fa8d366fec284f7032cc868d28a99fa81fc71e3adf7ecedbcf33a0f", + "sha256:735147aa41b8eeb104da186864b55e2a6623c758000081d19c93d759cd9523e3", + "sha256:7a92aab8dd1d427ac9bc7480cfd3481dbab0ef024558f2f5a47de672d8a5ffaa", + "sha256:7d352d4de060604e605abdc5c8a5d0429d5f156cb9866609065d3003454d4cea", + "sha256:81074edf3c74bc9bd250d223408a5df0ff745d1f7a462597536cd26b9390e2d6", + "sha256:81e6a9a8fda78a2f4901d2915b25bf620f372997ca1f20a14f7cefef5ad6f6f4", + "sha256:843500cd3e4884b92fd4037912bc42d5f047108d2c986d36352e880196d465b0", + "sha256:89247ac220031a4f9f689688bcee42b38fd770d4cce294e5d914afc53b630abe", + "sha256:8bb624dbaef4661f5e3625c1e39ad98ecceef281d1380e2774d8084ad0810275", + "sha256:9007bb1290c79402be6b84bcf9e7a622a073859d61fcee146dc7bc47afe328f3", + "sha256:9070ae35c410d644e6df98a8f69f3ed2807e657d0df2a26b2643127cbf6944a5", + "sha256:908c13f305d34322e11b796de358edaeea47dd2d115c33ca22909c5e8fb036fd", + "sha256:9480b4b327be83c4d29cb88bcace761b11f5e30198ffe2287889455c6819e934", + "sha256:960d85ebaa974ecea4e71fa56d098378fa51fd670ee744614cbb95bf95e28fc7", + "sha256:96796594c770bc6587376e74ddc7d9c982d68f47116bb69d90873db5e0ea88b6", + "sha256:97cf514a9f3426228d8daf880f56488330e4b2948a6d183a106921217850d9eb", + "sha256:997b7e0960072f6bb445402da162f964ea67387b9f18bda2361edcc026e13597", + "sha256:9b28787eaf2174e68f0acb3c66f9c6b98bdfeb0930c0d0b08e1941c7aedc8d27", + "sha256:9bf51354e15520715f068853e6ab8190e77139940e8b8b633bdb587956a08fb0", + "sha256:9e5075e30be626ef0f9bedf7a15f55ed4d7209e832bc314fdc232dbd61dcbf44", + "sha256:a08b4346350660799d81d4016e748bcb134a9083301d41f9618f64a6077f89f2", + "sha256:a67f75cc51a2dc7229a8ac84291e4d61dc5abfc8940befcf37a2836d95873340", + "sha256:a973f5286758f76824ecf19ae1999f6697371a9121c8f163295d181d19a819d7", + "sha256:ab911033e5937fc221a2c165acce7f66ae5ac9d3e54bec56f3c9c197a96be574", + "sha256:ad92e37be0b106fdbc575a3a669b43b364a5ef334495c9764de4c2d7541f7a99", + "sha256:ad9ea4a50d2948738351790047d45f2b1a023facc01bf0361988109b177e8b2f", + "sha256:b029bdd5a8b6c9a7c0e8fdbe4fc25ffaa2e09b77f6f3462314696e3a20511829", + "sha256:b41a85b9b9a2530b72b0d3d10e383fc3c2647ae88169d557d5e216f881860318", + "sha256:baf020f4b708f800b353259cd7575e335a79f1ac912d9dda55b2aa0bf3616e42", + "sha256:c08094b9e5d1b6dfb0845a0253cc2655ca64ce70d15162dfdb102e28c8993493", + "sha256:c26805b6c8dc8565ed91045c44040bf6c0fe5cb5b390c78cd1d9400d08a6cd39", + "sha256:c6ee222671eed5c5b16a5ad2aea07f0a715b8b199ee534834bc1dd2798f1ade7", + "sha256:c820608e7077416f766b148d75e158e454881961881b657cff808529d261dd24", + "sha256:cb081b2b02bf4405c804de1ece6f904916838ab0e057f1446e4ac12fac827960", + "sha256:cbe038bb78d599b5a29d09c438905defaa615a522bc7e12f8016823179439497", + "sha256:cd461e402e24929d866f05061d2f8337e3a8456e75e21b72c125abff2477c7f7", + "sha256:cde6dbb788a4cbc4a80a72aa96386ba4c2b17bdfff3ace0709799adbe16d6476", + "sha256:ce7889dc3701826d519ede93cdff11940fb5567dbdc165dce0e78047eece02b7", + "sha256:d0086ba8d41d73647b13087a3ca9c020f6bfec338335037e8f5172b4c7c8dce5", + "sha256:d29988bde28a90a00367edcf92afa1a2f7ecf43ea3ae383291b7da6d380ccc25", + "sha256:d494befe648c13c98c0f3d56d05489c839c9228a32f58e9777305deb6c2c1cee", + "sha256:df4e32badb2ccf1773e1e74020b7e3b8caf9e92f842c6be7d14888ecdefc2c6c", + "sha256:e6de6a4bdfaee382c2de2a3580b3ae76fce6105da202bbd835e5efbeae6a9c6e", + "sha256:f039c5373f7b314b151432c73219216857b19ab9cb834f0eb5d880f74fc7851c", + "sha256:f6e86ac2b45a95f75c6f744147483e0fc9697ce7dfe1726083324c236f873f8b", + "sha256:f9c690b359f503f18bf1c46a6456370e4f6f3fc4320b8774ae69c4f85ecc6c94", + "sha256:fa436abd4ac9ca71859baf5794614e6ec8fa27362f0162baedcc059048da55f7", + "sha256:fa44215bc31675a6380cd896dadb7f2054a7b94cfb87e53e52af844c65406a54", + "sha256:ff451d614ca1d4227db0ffa627fb51df71968cf0d9baf0210528dad10fdbc3ab" ], "markers": "implementation_name == 'cpython'", - "version": "==0.12.0" + "version": "==0.12.2" }, "dateparser": { "hashes": [ - "sha256:4431159799b63d8acec5d7d844c5e06edf3d1b0eb2bda6d4cac87134ddddd01c", - "sha256:73ec6e44a133c54076ecf9f9dc0fbe3dd4831f154f977ff06f53114d57c5425e" + "sha256:070b29b5bbf4b1ec2cd51c96ea040dc68a614de703910a91ad1abba18f9f379f", + "sha256:86b8b7517efcc558f085a142cdb7620f0921543fcabdb538c8a4c4001d8178e3" ], "markers": "python_version >= '3.7'", - "version": "==1.1.4" - }, - "eip712-structs": { - "hashes": [ - "sha256:b24400aef07b4d0287fb9bf8ce02b0abbe80c476d1b67222a7c5158df3a3e38d" - ], - "version": "==1.1.0" + "version": "==1.1.8" }, "eth-abi": { "hashes": [ - "sha256:63d16f1f60870afc974cb0a3325fb275fa97822be1723b8878598df25eea8096", - "sha256:c3872e3ac1e9ef3f8c6599aaca4ee536d536eefca63a6892ab937f0560edb656" + "sha256:60d88788d53725794cdb07c0f0bb0df2a31a6e1ad19644313fe6117ac24eeeb0", + "sha256:abd83410a5326145bf178675c276de0ed154f6dc695dcad1beafaa44d97f44ae" ], - "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==3.0.1" + "markers": "python_version < '4' and python_full_version >= '3.7.2'", + "version": "==4.2.1" }, "eth-account": { "hashes": [ - "sha256:61360e9e514e09e49929ed365ca0e1656758ecbd11248c629ad85b4335c2661a", - "sha256:f4d339f031348ba4de2bdd1fa9872019183a7252117f65b6e8019961d5c09ca8" + "sha256:0ccc0edbb17021004356ae6e37887528b6e59e6ae6283f3917b9759a5887203b", + "sha256:ccb2d90a16c81c8ea4ca4dc76a70b50f1d63cea6aff3c5a5eddedf9e45143eca" ], "markers": "python_version >= '3.6' and python_version < '4'", - "version": "==0.7.0" + "version": "==0.8.0" }, "eth-bloom": { "hashes": [ - "sha256:5d6d28fa60ee1e25436c45b9593798d7e193224b364ea1a212050055dfa1942c", - "sha256:688317306d87b823da63d24e1ad706defadbd865887ed4bddf7fbd0410b2093c" + "sha256:73576828dff7566b9216403e0898966912f370bae5734241dd3f50ce5664a825", + "sha256:cc86ab9670577996f7fcb8445b7a164ecd211ac91d9c4c2b5a47678623419927" ], - "markers": "python_version >= '3.6' and python_version < '4'", - "version": "==1.0.4" + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==2.0.0" }, "eth-hash": { "extras": [ "pycryptodome" ], "hashes": [ - "sha256:3c884e4f788b38cc92cff05c4e43bc6b82686066f04ecfae0e11cdcbe5a283bd", - "sha256:8cde211519ff1a98b46e9057cb909f12ab62e263eb30a0a94e2f7e1f46ac67a0" + "sha256:1b5f10eca7765cc385e1430eefc5ced6e2e463bb18d1365510e2e539c1a6fe4e", + "sha256:251f62f6579a1e247561679d78df37548bd5f59908da0b159982bf8293ad32f0" ], - "markers": "python_version >= '3.5' and python_version < '4'", - "version": "==0.3.3" + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==0.5.2" }, "eth-keyfile": { "hashes": [ - "sha256:7a874b179771827ffc7e38403ec412b8b3ff1a8c5cc945169609e799fadc7000", - "sha256:d30597cdecb8ccd3b56bb275cd86fcdc7a279f86eafa92ddc49f66512f0bff67" + "sha256:471be6e5386fce7b22556b3d4bde5558dbce46d2674f00848027cb0a20abdc8c", + "sha256:609773a1ad5956944a33348413cad366ec6986c53357a806528c8f61c4961560" ], - "version": "==0.6.0" + "version": "==0.6.1" }, "eth-keys": { "hashes": [ @@ -549,123 +603,110 @@ }, "eth-tester": { "hashes": [ - "sha256:751c7991fd40db6610836aafe34c0d4c1ba152cc955e453612c1f4d520ac5f9e", - "sha256:dc9210e22f488c539c8ca80262616b4af6d60d6f28150cd70080e7233ff79856" + "sha256:0e4367d99ae242efdb8c1d18ed99d1ff3f03149abb0a4c2427bc6d333ebef13b", + "sha256:b9cbc93d0b17a6e8acbb52294dad214ee223cf88209fa5be66ead353937d274c" ], - "markers": "python_full_version >= '3.6.8' and python_version < '4'", - "version": "==0.8.0b1" + "markers": "python_version < '4' and python_full_version >= '3.6.8'", + "version": "==0.9.1b1" }, "eth-typing": { "hashes": [ - "sha256:177e2070da9bf557fe0fd46ee467a7be2d0b6476aa4dc18680603e7da1fc5690", - "sha256:2d7540c1c65c0e686c1dc357b8376a53caf4e1693724a90191ad133be568841d" + "sha256:9d80c7d112a8774bddeb7278b1bc2f17ca4c062825476ce6bc9cba4d47956010", + "sha256:e21a8b0688581a6765f72fa184d86d06c3949e354d4af5293798abc0b4255989" ], - "markers": "python_version >= '3.6' and python_version < '4'", - "version": "==3.2.0" + "markers": "python_version < '4' and python_full_version >= '3.7.2'", + "version": "==3.5.1" }, "eth-utils": { "hashes": [ - "sha256:63901e54ec9e4ac16ae0a0d28e1dc48b968c20184d22f2727e5f3ca24b6250bc", - "sha256:fcb4c3c1b32947ba92970963f9aaf40da73b04ea1034964ff8c0e70595127138" + "sha256:085b42f5745f46d22a186fbd873d79f66a79171c02eccd78792d1dddd672f324", + "sha256:d539ac0bb1e759abb39f71efbcd77301eede86b4bf449278e4ad2fbf10aac67a" ], "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==2.1.0" + "version": "==2.3.0" }, "flask": { "hashes": [ - "sha256:642c450d19c4ad482f96729bd2a8f6d32554aa1e231f4f6b4e7e5264b16cca2b", - "sha256:b9c46cc36662a7949f34b52d8ec7bb59c0d74ba08ba6cb9ce9adc1d8676d9526" + "sha256:21128f47e4e3b9d597a3e8521a329bf56909b690fcc3fa3e477725aa81367638", + "sha256:cfadcdb638b609361d29ec22360d6070a77d7463dcb3ab08d2c2f2f168845f58" ], - "markers": "python_version >= '3.7'", - "version": "==2.2.2" + "markers": "python_version >= '3.8'", + "version": "==3.0.0" }, "flask-cors": { "hashes": [ - "sha256:74efc975af1194fc7891ff5cd85b0f7478be4f7f59fe158102e91abb72bb4438", - "sha256:b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de" + "sha256:bc3492bfd6368d27cfe79c7821df5a8a319e1a6d5eab277a3794be19bdc51783", + "sha256:f268522fcb2f73e2ecdde1ef45e2fd5c71cc48fe03cffb4b441c6d1b40684eb0" ], "index": "pypi", - "version": "==3.0.10" + "version": "==4.0.0" }, "frozenlist": { "hashes": [ - "sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c", - "sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f", - "sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a", - "sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784", - "sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27", - "sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d", - "sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3", - "sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678", - "sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a", - "sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483", - "sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8", - "sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf", - "sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99", - "sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c", - "sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48", - "sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5", - "sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56", - "sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e", - "sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1", - "sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401", - "sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4", - "sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e", - "sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649", - "sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a", - "sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d", - "sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0", - "sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6", - "sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d", - "sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b", - "sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6", - "sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf", - "sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef", - "sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7", - "sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842", - "sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba", - "sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420", - "sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b", - "sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d", - "sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332", - "sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936", - "sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816", - "sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91", - "sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420", - "sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448", - "sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411", - "sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4", - "sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32", - "sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b", - "sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0", - "sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530", - "sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669", - "sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7", - "sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1", - "sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5", - "sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce", - "sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4", - "sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e", - "sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2", - "sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d", - "sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9", - "sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642", - "sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0", - "sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703", - "sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb", - "sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1", - "sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13", - "sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab", - "sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38", - "sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb", - "sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb", - "sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81", - "sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8", - "sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd", - "sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4" - ], - "markers": "python_version >= '3.7'", - "version": "==1.3.3" + "sha256:007df07a6e3eb3e33e9a1fe6a9db7af152bbd8a185f9aaa6ece10a3529e3e1c6", + "sha256:008eb8b31b3ea6896da16c38c1b136cb9fec9e249e77f6211d479db79a4eaf01", + "sha256:09163bdf0b2907454042edb19f887c6d33806adc71fbd54afc14908bfdc22251", + "sha256:0c7c1b47859ee2cac3846fde1c1dc0f15da6cec5a0e5c72d101e0f83dcb67ff9", + "sha256:0e5c8764c7829343d919cc2dfc587a8db01c4f70a4ebbc49abde5d4b158b007b", + "sha256:10ff5faaa22786315ef57097a279b833ecab1a0bfb07d604c9cbb1c4cdc2ed87", + "sha256:17ae5cd0f333f94f2e03aaf140bb762c64783935cc764ff9c82dff626089bebf", + "sha256:19488c57c12d4e8095a922f328df3f179c820c212940a498623ed39160bc3c2f", + "sha256:1a0848b52815006ea6596c395f87449f693dc419061cc21e970f139d466dc0a0", + "sha256:1e78fb68cf9c1a6aa4a9a12e960a5c9dfbdb89b3695197aa7064705662515de2", + "sha256:261b9f5d17cac914531331ff1b1d452125bf5daa05faf73b71d935485b0c510b", + "sha256:2b8bcf994563466db019fab287ff390fffbfdb4f905fc77bc1c1d604b1c689cc", + "sha256:38461d02d66de17455072c9ba981d35f1d2a73024bee7790ac2f9e361ef1cd0c", + "sha256:490132667476f6781b4c9458298b0c1cddf237488abd228b0b3650e5ecba7467", + "sha256:491e014f5c43656da08958808588cc6c016847b4360e327a62cb308c791bd2d9", + "sha256:515e1abc578dd3b275d6a5114030b1330ba044ffba03f94091842852f806f1c1", + "sha256:556de4430ce324c836789fa4560ca62d1591d2538b8ceb0b4f68fb7b2384a27a", + "sha256:5833593c25ac59ede40ed4de6d67eb42928cca97f26feea219f21d0ed0959b79", + "sha256:6221d84d463fb110bdd7619b69cb43878a11d51cbb9394ae3105d082d5199167", + "sha256:6918d49b1f90821e93069682c06ffde41829c346c66b721e65a5c62b4bab0300", + "sha256:6c38721585f285203e4b4132a352eb3daa19121a035f3182e08e437cface44bf", + "sha256:71932b597f9895f011f47f17d6428252fc728ba2ae6024e13c3398a087c2cdea", + "sha256:7211ef110a9194b6042449431e08c4d80c0481e5891e58d429df5899690511c2", + "sha256:764226ceef3125e53ea2cb275000e309c0aa5464d43bd72abd661e27fffc26ab", + "sha256:7645a8e814a3ee34a89c4a372011dcd817964ce8cb273c8ed6119d706e9613e3", + "sha256:76d4711f6f6d08551a7e9ef28c722f4a50dd0fc204c56b4bcd95c6cc05ce6fbb", + "sha256:7f4f399d28478d1f604c2ff9119907af9726aed73680e5ed1ca634d377abb087", + "sha256:88f7bc0fcca81f985f78dd0fa68d2c75abf8272b1f5c323ea4a01a4d7a614efc", + "sha256:8d0edd6b1c7fb94922bf569c9b092ee187a83f03fb1a63076e7774b60f9481a8", + "sha256:901289d524fdd571be1c7be054f48b1f88ce8dddcbdf1ec698b27d4b8b9e5d62", + "sha256:93ea75c050c5bb3d98016b4ba2497851eadf0ac154d88a67d7a6816206f6fa7f", + "sha256:981b9ab5a0a3178ff413bca62526bb784249421c24ad7381e39d67981be2c326", + "sha256:9ac08e601308e41eb533f232dbf6b7e4cea762f9f84f6357136eed926c15d12c", + "sha256:a02eb8ab2b8f200179b5f62b59757685ae9987996ae549ccf30f983f40602431", + "sha256:a0c6da9aee33ff0b1a451e867da0c1f47408112b3391dd43133838339e410963", + "sha256:a6c8097e01886188e5be3e6b14e94ab365f384736aa1fca6a0b9e35bd4a30bc7", + "sha256:aa384489fefeb62321b238e64c07ef48398fe80f9e1e6afeff22e140e0850eef", + "sha256:ad2a9eb6d9839ae241701d0918f54c51365a51407fd80f6b8289e2dfca977cc3", + "sha256:b206646d176a007466358aa21d85cd8600a415c67c9bd15403336c331a10d956", + "sha256:b826d97e4276750beca7c8f0f1a4938892697a6bcd8ec8217b3312dad6982781", + "sha256:b89ac9768b82205936771f8d2eb3ce88503b1556324c9f903e7156669f521472", + "sha256:bd7bd3b3830247580de99c99ea2a01416dfc3c34471ca1298bccabf86d0ff4dc", + "sha256:bdf1847068c362f16b353163391210269e4f0569a3c166bc6a9f74ccbfc7e839", + "sha256:c11b0746f5d946fecf750428a95f3e9ebe792c1ee3b1e96eeba145dc631a9672", + "sha256:c5374b80521d3d3f2ec5572e05adc94601985cc526fb276d0c8574a6d749f1b3", + "sha256:ca265542ca427bf97aed183c1676e2a9c66942e822b14dc6e5f42e038f92a503", + "sha256:ce31ae3e19f3c902de379cf1323d90c649425b86de7bbdf82871b8a2a0615f3d", + "sha256:ceb6ec0a10c65540421e20ebd29083c50e6d1143278746a4ef6bcf6153171eb8", + "sha256:d081f13b095d74b67d550de04df1c756831f3b83dc9881c38985834387487f1b", + "sha256:d5655a942f5f5d2c9ed93d72148226d75369b4f6952680211972a33e59b1dfdc", + "sha256:d5a32087d720c608f42caed0ef36d2b3ea61a9d09ee59a5142d6070da9041b8f", + "sha256:d6484756b12f40003c6128bfcc3fa9f0d49a687e171186c2d85ec82e3758c559", + "sha256:dd65632acaf0d47608190a71bfe46b209719bf2beb59507db08ccdbe712f969b", + "sha256:de343e75f40e972bae1ef6090267f8260c1446a1695e77096db6cfa25e759a95", + "sha256:e29cda763f752553fa14c68fb2195150bfab22b352572cb36c43c47bedba70eb", + "sha256:e41f3de4df3e80de75845d3e743b3f1c4c8613c3997a912dbf0229fc61a8b963", + "sha256:e66d2a64d44d50d2543405fb183a21f76b3b5fd16f130f5c99187c3fb4e64919", + "sha256:e74b0506fa5aa5598ac6a975a12aa8928cbb58e1f5ac8360792ef15de1aa848f", + "sha256:f0ed05f5079c708fe74bf9027e95125334b6978bf07fd5ab923e9e55e5fbb9d3", + "sha256:f61e2dc5ad442c52b4887f1fdc112f97caeff4d9e6ebe78879364ac59f1663e1", + "sha256:fec520865f42e5c7f050c2a79038897b1c7d1595e907a9e08e3353293ffc948e" + ], + "markers": "python_version >= '3.8'", + "version": "==1.4.0" }, "hendrix": { "hashes": [ @@ -676,19 +717,19 @@ }, "hexbytes": { "hashes": [ - "sha256:21c3a5bd00a383097f0369c387174e79839d75c4ccc3a7edda315c9644f4458a", - "sha256:afeebfb800f5f15a3ca5bab52e49eabcb4b6dac06ec8ff01a94fdb890c6c0712" + "sha256:383595ad75026cf00abd570f44b368c6cdac0c6becfae5c39ff88829877f8a59", + "sha256:a3fe35c6831ee8fafd048c4c086b986075fc14fd46258fa24ecb8d65745f9a9d" ], "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==0.3.0" + "version": "==0.3.1" }, "humanize": { "hashes": [ - "sha256:8830ebf2d65d0395c1bd4c79189ad71e023f277c2c7ae00f263124432e6f2ffa", - "sha256:efb2584565cc86b7ea87a977a15066de34cdedaf341b11c851cfcfd2b964779c" + "sha256:8bc9e2bb9315e61ec06bf690151ae35aeb65651ab091266941edf97c90836404", + "sha256:9783373bf1eec713a770ecaa7c2d7a7902c98398009dfa3d8a2df91eec9311e8" ], - "markers": "python_version >= '3.7'", - "version": "==4.4.0" + "markers": "python_version >= '3.8'", + "version": "==4.8.0" }, "hyperlink": { "hashes": [ @@ -705,14 +746,6 @@ "markers": "python_version >= '3.5'", "version": "==3.4" }, - "importlib-metadata": { - "hashes": [ - "sha256:d5059f9f1e8e41f80e9c56c2ee58811450c31984dfa625329ffd7c0dad88a73b", - "sha256:d84d17e21670ec07990e1044a99efe8d615d860fd176fc29ef5c306068fda313" - ], - "markers": "python_version < '3.10'", - "version": "==5.1.0" - }, "incremental": { "hashes": [ "sha256:912feeb5e0f7e0188e6f42241d2f450002e11bbc0937c65865045854c24c0bd0", @@ -720,14 +753,6 @@ ], "version": "==22.10.0" }, - "ipfshttpclient": { - "hashes": [ - "sha256:0d80e95ee60b02c7d414e79bf81a36fc3c8fbab74265475c52f70b2620812135", - "sha256:ce6bac0e3963c4ced74d7eb6978125362bb05bbe219088ca48f369ce14d3cc39" - ], - "markers": "python_full_version >= '3.6.2' and python_full_version not in '3.7.0, 3.7.1'", - "version": "==0.8.0a2" - }, "itsdangerous": { "hashes": [ "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44", @@ -738,72 +763,114 @@ }, "jinja2": { "hashes": [ - "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8", - "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7" + "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852", + "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" ], - "markers": "python_version >= '3.6'", - "version": "==3.0.3" + "markers": "python_version >= '3.7'", + "version": "==3.1.2" }, "jsonschema": { "hashes": [ - "sha256:05b2d22c83640cde0b7e0aa329ca7754fbd98ea66ad8ae24aa61328dfe057fa3", - "sha256:410ef23dcdbca4eaedc08b850079179883c2ed09378bd1f760d4af4aacfa28d7" + "sha256:cd5f1f9ed9444e554b38ba003af06c0a8c2868131e56bfbef0550fb450c0330e", + "sha256:ec84cc37cfa703ef7cd4928db24f9cb31428a5d0fa77747b8b51a847458e0bbf" ], - "markers": "python_version >= '3.7'", - "version": "==4.17.1" + "markers": "python_version >= '3.8'", + "version": "==4.19.1" }, - "lru-dict": { + "jsonschema-specifications": { "hashes": [ - "sha256:075b9dd46d7022b675419bc6e3631748ae184bc8af195d20365a98b4f3bb2914", - "sha256:0972d669e9e207617e06416166718b073a49bf449abbd23940d9545c0847a4d9", - "sha256:0f83cd70a6d32f9018d471be609f3af73058f700691657db4a3d3dd78d3f96dd", - "sha256:10fe823ff90b655f0b6ba124e2b576ecda8c61b8ead76b456db67831942d22f2", - "sha256:163079dbda54c3e6422b23da39fb3ecc561035d65e8496ff1950cbdb376018e1", - "sha256:1fe16ade5fd0a57e9a335f69b8055aaa6fb278fbfa250458e4f6b8255115578f", - "sha256:262a4e622010ceb960a6a5222ed011090e50954d45070fd369c0fa4d2ed7d9a9", - "sha256:2f340b61f3cdfee71f66da7dbfd9a5ea2db6974502ccff2065cdb76619840dca", - "sha256:348167f110494cfafae70c066470a6f4e4d43523933edf16ccdb8947f3b5fae0", - "sha256:3b1692755fef288b67af5cd8a973eb331d1f44cb02cbdc13660040809c2bfec6", - "sha256:3ca497cb25f19f24171f9172805f3ff135b911aeb91960bd4af8e230421ccb51", - "sha256:3d003a864899c29b0379e412709a6e516cbd6a72ee10b09d0b33226343617412", - "sha256:3fef595c4f573141d54a38bda9221b9ee3cbe0acc73d67304a1a6d5972eb2a02", - "sha256:484ac524e4615f06dc72ffbfd83f26e073c9ec256de5413634fbd024c010a8bc", - "sha256:55aeda6b6789b2d030066b4f5f6fc3596560ba2a69028f35f3682a795701b5b1", - "sha256:5a592363c93d6fc6472d5affe2819e1c7590746aecb464774a4f67e09fbefdfc", - "sha256:5b09dbe47bc4b4d45ffe56067aff190bc3c0049575da6e52127e114236e0a6a7", - "sha256:6e2a7aa9e36626fb48fdc341c7e3685a31a7b50ea4918677ea436271ad0d904d", - "sha256:70364e3cbef536adab8762b4835e18f5ca8e3fddd8bd0ec9258c42bbebd0ee77", - "sha256:720f5728e537f11a311e8b720793a224e985d20e6b7c3d34a891a391865af1a2", - "sha256:7284bdbc5579bbdc3fc8f869ed4c169f403835566ab0f84567cdbfdd05241847", - "sha256:7be1b66926277993cecdc174c15a20c8ce785c1f8b39aa560714a513eef06473", - "sha256:86d32a4498b74a75340497890a260d37bf1560ad2683969393032977dd36b088", - "sha256:878bc8ef4073e5cfb953dfc1cf4585db41e8b814c0106abde34d00ee0d0b3115", - "sha256:881104711900af45967c2e5ce3e62291dd57d5b2a224d58b7c9f60bf4ad41b8c", - "sha256:8c50ab9edaa5da5838426816a2b7bcde9d576b4fc50e6a8c062073dbc4969d78", - "sha256:8f6561f9cd5a452cb84905c6a87aa944fdfdc0f41cc057d03b71f9b29b2cc4bd", - "sha256:93336911544ebc0e466272043adab9fb9f6e9dcba6024b639c32553a3790e089", - "sha256:9447214e4857e16d14158794ef01e4501d8fad07d298d03308d9f90512df02fa", - "sha256:97c24ffc55de6013075979f440acd174e88819f30387074639fb7d7178ca253e", - "sha256:99f6cfb3e28490357a0805b409caf693e46c61f8dbb789c51355adb693c568d3", - "sha256:9be6c4039ef328676b868acea619cd100e3de1a35b3be211cf0eaf9775563b65", - "sha256:9d70257246b8207e8ef3d8b18457089f5ff0dfb087bd36eb33bce6584f2e0b3a", - "sha256:a777d48319d293b1b6a933d606c0e4899690a139b4c81173451913bbcab6f44f", - "sha256:add762163f4af7f4173fafa4092eb7c7f023cf139ef6d2015cfea867e1440d82", - "sha256:b6f64005ede008b7a866be8f3f6274dbf74e656e15e4004e9d99ad65efb01809", - "sha256:beb089c46bd95243d1ac5b2bd13627317b08bf40dd8dc16d4b7ee7ecb3cf65ca", - "sha256:c07163c9dcbb2eca377f366b1331f46302fd8b6b72ab4d603087feca00044bb0", - "sha256:c2fe692332c2f1d81fd27457db4b35143801475bfc2e57173a2403588dd82a42", - "sha256:ca8f89361e0e7aad0bf93ae03a31502e96280faeb7fb92267f4998fb230d36b2", - "sha256:d2ed4151445c3f30423c2698f72197d64b27b1cd61d8d56702ffe235584e47c2", - "sha256:db20597c4e67b4095b376ce2e83930c560f4ce481e8d05737885307ed02ba7c1", - "sha256:de972c7f4bc7b6002acff2a8de984c55fbd7f2289dba659cfd90f7a0f5d8f5d1", - "sha256:f1df1da204a9f0b5eb8393a46070f1d984fa8559435ee790d7f8f5602038fc00", - "sha256:f4d0a6d733a23865019b1c97ed6fb1fdb739be923192abf4dbb644f697a26a69", - "sha256:f874e9c2209dada1a080545331aa1277ec060a13f61684a8642788bf44b2325f", - "sha256:f877f53249c3e49bbd7612f9083127290bede6c7d6501513567ab1bf9c581381", - "sha256:f9d5815c0e85922cd0fb8344ca8b1c7cf020bf9fc45e670d34d51932c91fd7ec" + "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1", + "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb" ], - "version": "==1.1.8" + "markers": "python_version >= '3.8'", + "version": "==2023.7.1" + }, + "lru-dict": { + "hashes": [ + "sha256:00f6e8a3fc91481b40395316a14c94daa0f0a5de62e7e01a7d589f8d29224052", + "sha256:020b93870f8c7195774cbd94f033b96c14f51c57537969965c3af300331724fe", + "sha256:05fb8744f91f58479cbe07ed80ada6696ec7df21ea1740891d4107a8dd99a970", + "sha256:086ce993414f0b28530ded7e004c77dc57c5748fa6da488602aa6e7f79e6210e", + "sha256:0c316dfa3897fabaa1fe08aae89352a3b109e5f88b25529bc01e98ac029bf878", + "sha256:0facf49b053bf4926d92d8d5a46fe07eecd2af0441add0182c7432d53d6da667", + "sha256:1171ad3bff32aa8086778be4a3bdff595cc2692e78685bcce9cb06b96b22dcc2", + "sha256:1184d91cfebd5d1e659d47f17a60185bbf621635ca56dcdc46c6a1745d25df5c", + "sha256:13c56782f19d68ddf4d8db0170041192859616514c706b126d0df2ec72a11bd7", + "sha256:18ee88ada65bd2ffd483023be0fa1c0a6a051ef666d1cd89e921dcce134149f2", + "sha256:203b3e78d03d88f491fa134f85a42919020686b6e6f2d09759b2f5517260c651", + "sha256:20f5f411f7751ad9a2c02e80287cedf69ae032edd321fe696e310d32dd30a1f8", + "sha256:21b3090928c7b6cec509e755cc3ab742154b33660a9b433923bd12c37c448e3e", + "sha256:22147367b296be31cc858bf167c448af02435cac44806b228c9be8117f1bfce4", + "sha256:231d7608f029dda42f9610e5723614a35b1fff035a8060cf7d2be19f1711ace8", + "sha256:25f9e0bc2fe8f41c2711ccefd2871f8a5f50a39e6293b68c3dec576112937aad", + "sha256:287c2115a59c1c9ed0d5d8ae7671e594b1206c36ea9df2fca6b17b86c468ff99", + "sha256:291d13f85224551913a78fe695cde04cbca9dcb1d84c540167c443eb913603c9", + "sha256:312b6b2a30188586fe71358f0f33e4bac882d33f5e5019b26f084363f42f986f", + "sha256:34a3091abeb95e707f381a8b5b7dc8e4ee016316c659c49b726857b0d6d1bd7a", + "sha256:35a142a7d1a4fd5d5799cc4f8ab2fff50a598d8cee1d1c611f50722b3e27874f", + "sha256:3838e33710935da2ade1dd404a8b936d571e29268a70ff4ca5ba758abb3850df", + "sha256:5345bf50e127bd2767e9fd42393635bbc0146eac01f6baf6ef12c332d1a6a329", + "sha256:5919dd04446bc1ee8d6ecda2187deeebfff5903538ae71083e069bc678599446", + "sha256:59f3df78e94e07959f17764e7fa7ca6b54e9296953d2626a112eab08e1beb2db", + "sha256:5b172fce0a0ffc0fa6d282c14256d5a68b5db1e64719c2915e69084c4b6bf555", + "sha256:5c6acbd097b15bead4de8e83e8a1030bb4d8257723669097eac643a301a952f0", + "sha256:5d90a70c53b0566084447c3ef9374cc5a9be886e867b36f89495f211baabd322", + "sha256:604d07c7604b20b3130405d137cae61579578b0e8377daae4125098feebcb970", + "sha256:6b7a031e47421d4b7aa626b8c91c180a9f037f89e5d0a71c4bb7afcf4036c774", + "sha256:6da5b8099766c4da3bf1ed6e7d7f5eff1681aff6b5987d1258a13bd2ed54f0c9", + "sha256:712e71b64da181e1c0a2eaa76cd860265980cd15cb0e0498602b8aa35d5db9f8", + "sha256:71da89e134747e20ed5b8ad5b4ee93fc5b31022c2b71e8176e73c5a44699061b", + "sha256:756230c22257597b7557eaef7f90484c489e9ba78e5bb6ab5a5bcfb6b03cb075", + "sha256:7d3336e901acec897bcd318c42c2b93d5f1d038e67688f497045fc6bad2c0be7", + "sha256:7e51fa6a203fa91d415f3b2900e5748ec8e06ad75777c98cc3aeb3983ca416d7", + "sha256:877801a20f05c467126b55338a4e9fa30e2a141eb7b0b740794571b7d619ee11", + "sha256:87bbad3f5c3de8897b8c1263a9af73bbb6469fb90e7b57225dad89b8ef62cd8d", + "sha256:8bda3a9afd241ee0181661decaae25e5336ce513ac268ab57da737eacaa7871f", + "sha256:8dafc481d2defb381f19b22cc51837e8a42631e98e34b9e0892245cc96593deb", + "sha256:91d577a11b84387013815b1ad0bb6e604558d646003b44c92b3ddf886ad0f879", + "sha256:981ef3edc82da38d39eb60eae225b88a538d47b90cce2e5808846fd2cf64384b", + "sha256:987b73a06bcf5a95d7dc296241c6b1f9bc6cda42586948c9dabf386dc2bef1cd", + "sha256:9e4c85aa8844bdca3c8abac3b7f78da1531c74e9f8b3e4890c6e6d86a5a3f6c0", + "sha256:a3ea7571b6bf2090a85ff037e6593bbafe1a8598d5c3b4560eb56187bcccb4dc", + "sha256:a87bdc291718bbdf9ea4be12ae7af26cbf0706fa62c2ac332748e3116c5510a7", + "sha256:aaecd7085212d0aa4cd855f38b9d61803d6509731138bf798a9594745953245b", + "sha256:ae301c282a499dc1968dd633cfef8771dd84228ae9d40002a3ea990e4ff0c469", + "sha256:afdadd73304c9befaed02eb42f5f09fdc16288de0a08b32b8080f0f0f6350aa6", + "sha256:b20b7c9beb481e92e07368ebfaa363ed7ef61e65ffe6e0edbdbaceb33e134124", + "sha256:b30122e098c80e36d0117810d46459a46313421ce3298709170b687dc1240b02", + "sha256:b55753ee23028ba8644fd22e50de7b8f85fa60b562a0fafaad788701d6131ff8", + "sha256:b5ccfd2291c93746a286c87c3f895165b697399969d24c54804ec3ec559d4e43", + "sha256:b6613daa851745dd22b860651de930275be9d3e9373283a2164992abacb75b62", + "sha256:b710f0f4d7ec4f9fa89dfde7002f80bcd77de8024017e70706b0911ea086e2ef", + "sha256:b9ec7a4a0d6b8297102aa56758434fb1fca276a82ed7362e37817407185c3abb", + "sha256:bb12f19cdf9c4f2d9aa259562e19b188ff34afab28dd9509ff32a3f1c2c29326", + "sha256:bd2cd1b998ea4c8c1dad829fc4fa88aeed4dee555b5e03c132fc618e6123f168", + "sha256:c4da599af36618881748b5db457d937955bb2b4800db891647d46767d636c408", + "sha256:c53b12b89bd7a6c79f0536ff0d0a84fdf4ab5f6252d94b24b9b753bd9ada2ddf", + "sha256:c9617583173a29048e11397f165501edc5ae223504a404b2532a212a71ecc9ed", + "sha256:cd46c94966f631a81ffe33eee928db58e9fbee15baba5923d284aeadc0e0fa76", + "sha256:cd6806313606559e6c7adfa0dbeb30fc5ab625f00958c3d93f84831e7a32b71e", + "sha256:d0dd4cd58220351233002f910e35cc01d30337696b55c6578f71318b137770f9", + "sha256:d0f7ec902a0097ac39f1922c89be9eaccf00eb87751e28915320b4f72912d057", + "sha256:d5bb41bc74b321789803d45b124fc2145c1b3353b4ad43296d9d1d242574969b", + "sha256:d7ab0c10c4fa99dc9e26b04e6b62ac32d2bcaea3aad9b81ec8ce9a7aa32b7b1b", + "sha256:de24b47159e07833aeab517d9cb1c3c5c2d6445cc378b1c2f1d8d15fb4841d63", + "sha256:de906e5486b5c053d15b7731583c25e3c9147c288ac8152a6d1f9bccdec72641", + "sha256:df25a426446197488a6702954dcc1de511deee20c9db730499a2aa83fddf0df1", + "sha256:e25b2e90a032dc248213af7f3f3e975e1934b204f3b16aeeaeaff27a3b65e128", + "sha256:e707d93bae8f0a14e6df1ae8b0f076532b35f00e691995f33132d806a88e5c18", + "sha256:ea2ac3f7a7a2f32f194c84d82a034e66780057fd908b421becd2f173504d040e", + "sha256:ead83ac59a29d6439ddff46e205ce32f8b7f71a6bd8062347f77e232825e3d0a", + "sha256:edad398d5d402c43d2adada390dd83c74e46e020945ff4df801166047013617e", + "sha256:f010cfad3ab10676e44dc72a813c968cd586f37b466d27cde73d1f7f1ba158c2", + "sha256:f404dcc8172da1f28da9b1f0087009578e608a4899b96d244925c4f463201f2a", + "sha256:f54908bf91280a9b8fa6a8c8f3c2f65850ce6acae2852bbe292391628ebca42f", + "sha256:f5d5a5f976b39af73324f2b793862859902ccb9542621856d51a5993064f25e4", + "sha256:f9484016e6765bd295708cccc9def49f708ce07ac003808f69efa386633affb9", + "sha256:fbf36c5a220a85187cacc1fcb7dd87070e04b5fc28df7a43f6842f7c8224a388", + "sha256:fc42882b554a86e564e0b662da47b8a4b32fa966920bd165e27bb8079a323bc1" + ], + "version": "==1.2.0" }, "mako": { "hashes": [ @@ -815,57 +882,77 @@ }, "markupsafe": { "hashes": [ - "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003", - "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88", - "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5", - "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7", - "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a", - "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603", - "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1", - "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135", - "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247", - "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6", - "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601", - "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77", - "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02", - "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e", - "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63", - "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f", - "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980", - "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b", - "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812", - "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff", - "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96", - "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1", - "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925", - "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a", - "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6", - "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e", - "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f", - "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4", - "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f", - "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3", - "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c", - "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a", - "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417", - "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a", - "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a", - "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37", - "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452", - "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933", - "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a", - "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7" + "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e", + "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e", + "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431", + "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686", + "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c", + "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559", + "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc", + "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb", + "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939", + "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c", + "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0", + "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4", + "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9", + "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575", + "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba", + "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d", + "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd", + "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3", + "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00", + "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155", + "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac", + "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52", + "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f", + "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8", + "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b", + "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007", + "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24", + "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea", + "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198", + "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0", + "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee", + "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be", + "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2", + "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1", + "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707", + "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6", + "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c", + "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58", + "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823", + "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779", + "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636", + "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c", + "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad", + "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee", + "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc", + "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2", + "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48", + "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7", + "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e", + "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b", + "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa", + "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5", + "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e", + "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb", + "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9", + "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57", + "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc", + "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc", + "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2", + "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11" ], "markers": "python_version >= '3.7'", - "version": "==2.1.1" + "version": "==2.1.3" }, "marshmallow": { "hashes": [ - "sha256:90032c0fd650ce94b6ec6dc8dfeb0e3ff50c144586462c389b81a07205bedb78", - "sha256:93f0958568da045b0021ec6aeb7ac37c81bfcccbb9a0e7ed8559885070b3a19b" + "sha256:5d2371bbe42000f2b3fb5eaa065224df7d8f8597bc19a1bbfa5bfe7fba8da889", + "sha256:684939db93e80ad3561392f47be0230743131560a41c5110684c16e21ade0a5c" ], - "markers": "python_version >= '3.7'", - "version": "==3.19.0" + "markers": "python_version >= '3.8'", + "version": "==3.20.1" }, "maya": { "hashes": [ @@ -884,60 +971,65 @@ }, "msgpack": { "hashes": [ - "sha256:002b5c72b6cd9b4bafd790f364b8480e859b4712e91f43014fe01e4f957b8467", - "sha256:0a68d3ac0104e2d3510de90a1091720157c319ceeb90d74f7b5295a6bee51bae", - "sha256:0df96d6eaf45ceca04b3f3b4b111b86b33785683d682c655063ef8057d61fd92", - "sha256:0dfe3947db5fb9ce52aaea6ca28112a170db9eae75adf9339a1aec434dc954ef", - "sha256:0e3590f9fb9f7fbc36df366267870e77269c03172d086fa76bb4eba8b2b46624", - "sha256:11184bc7e56fd74c00ead4f9cc9a3091d62ecb96e97653add7a879a14b003227", - "sha256:112b0f93202d7c0fef0b7810d465fde23c746a2d482e1e2de2aafd2ce1492c88", - "sha256:1276e8f34e139aeff1c77a3cefb295598b504ac5314d32c8c3d54d24fadb94c9", - "sha256:1576bd97527a93c44fa856770197dec00d223b0b9f36ef03f65bac60197cedf8", - "sha256:1e91d641d2bfe91ba4c52039adc5bccf27c335356055825c7f88742c8bb900dd", - "sha256:26b8feaca40a90cbe031b03d82b2898bf560027160d3eae1423f4a67654ec5d6", - "sha256:2999623886c5c02deefe156e8f869c3b0aaeba14bfc50aa2486a0415178fce55", - "sha256:2a2df1b55a78eb5f5b7d2a4bb221cd8363913830145fad05374a80bf0877cb1e", - "sha256:2bb8cdf50dd623392fa75525cce44a65a12a00c98e1e37bf0fb08ddce2ff60d2", - "sha256:2cc5ca2712ac0003bcb625c96368fd08a0f86bbc1a5578802512d87bc592fe44", - "sha256:35bc0faa494b0f1d851fd29129b2575b2e26d41d177caacd4206d81502d4c6a6", - "sha256:3c11a48cf5e59026ad7cb0dc29e29a01b5a66a3e333dc11c04f7e991fc5510a9", - "sha256:449e57cc1ff18d3b444eb554e44613cffcccb32805d16726a5494038c3b93dab", - "sha256:462497af5fd4e0edbb1559c352ad84f6c577ffbbb708566a0abaaa84acd9f3ae", - "sha256:4733359808c56d5d7756628736061c432ded018e7a1dff2d35a02439043321aa", - "sha256:48f5d88c99f64c456413d74a975bd605a9b0526293218a3b77220a2c15458ba9", - "sha256:49565b0e3d7896d9ea71d9095df15b7f75a035c49be733051c34762ca95bbf7e", - "sha256:4ab251d229d10498e9a2f3b1e68ef64cb393394ec477e3370c457f9430ce9250", - "sha256:4d5834a2a48965a349da1c5a79760d94a1a0172fbb5ab6b5b33cbf8447e109ce", - "sha256:4dea20515f660aa6b7e964433b1808d098dcfcabbebeaaad240d11f909298075", - "sha256:545e3cf0cf74f3e48b470f68ed19551ae6f9722814ea969305794645da091236", - "sha256:63e29d6e8c9ca22b21846234913c3466b7e4ee6e422f205a2988083de3b08cae", - "sha256:6916c78f33602ecf0509cc40379271ba0f9ab572b066bd4bdafd7434dee4bc6e", - "sha256:6a4192b1ab40f8dca3f2877b70e63799d95c62c068c84dc028b40a6cb03ccd0f", - "sha256:6c9566f2c39ccced0a38d37c26cc3570983b97833c365a6044edef3574a00c08", - "sha256:76ee788122de3a68a02ed6f3a16bbcd97bc7c2e39bd4d94be2f1821e7c4a64e6", - "sha256:7760f85956c415578c17edb39eed99f9181a48375b0d4a94076d84148cf67b2d", - "sha256:77ccd2af37f3db0ea59fb280fa2165bf1b096510ba9fe0cc2bf8fa92a22fdb43", - "sha256:81fc7ba725464651190b196f3cd848e8553d4d510114a954681fd0b9c479d7e1", - "sha256:85f279d88d8e833ec015650fd15ae5eddce0791e1e8a59165318f371158efec6", - "sha256:9667bdfdf523c40d2511f0e98a6c9d3603be6b371ae9a238b7ef2dc4e7a427b0", - "sha256:a75dfb03f8b06f4ab093dafe3ddcc2d633259e6c3f74bb1b01996f5d8aa5868c", - "sha256:ac5bd7901487c4a1dd51a8c58f2632b15d838d07ceedaa5e4c080f7190925bff", - "sha256:aca0f1644d6b5a73eb3e74d4d64d5d8c6c3d577e753a04c9e9c87d07692c58db", - "sha256:b17be2478b622939e39b816e0aa8242611cc8d3583d1cd8ec31b249f04623243", - "sha256:c1683841cd4fa45ac427c18854c3ec3cd9b681694caf5bff04edb9387602d661", - "sha256:c23080fdeec4716aede32b4e0ef7e213c7b1093eede9ee010949f2a418ced6ba", - "sha256:d5b5b962221fa2c5d3a7f8133f9abffc114fe218eb4365e40f17732ade576c8e", - "sha256:d603de2b8d2ea3f3bcb2efe286849aa7a81531abc52d8454da12f46235092bcb", - "sha256:e83f80a7fec1a62cf4e6c9a660e39c7f878f603737a0cdac8c13131d11d97f52", - "sha256:eb514ad14edf07a1dbe63761fd30f89ae79b42625731e1ccf5e1f1092950eaa6", - "sha256:eba96145051ccec0ec86611fe9cf693ce55f2a3ce89c06ed307de0e085730ec1", - "sha256:ed6f7b854a823ea44cf94919ba3f727e230da29feb4a99711433f25800cf747f", - "sha256:f0029245c51fd9473dc1aede1160b0a29f4a912e6b1dd353fa6d317085b219da", - "sha256:f5d869c18f030202eb412f08b28d2afeea553d6613aee89e200d7aca7ef01f5f", - "sha256:fb62ea4b62bfcb0b380d5680f9a4b3f9a2d166d9394e9bbd9666c0ee09a3645c", - "sha256:fcb8a47f43acc113e24e910399376f7277cf8508b27e5b88499f053de6b115a8" - ], - "version": "==1.0.4" + "sha256:04ad6069c86e531682f9e1e71b71c1c3937d6014a7c3e9edd2aa81ad58842862", + "sha256:0bfdd914e55e0d2c9e1526de210f6fe8ffe9705f2b1dfcc4aecc92a4cb4b533d", + "sha256:1dc93e8e4653bdb5910aed79f11e165c85732067614f180f70534f056da97db3", + "sha256:1e2d69948e4132813b8d1131f29f9101bc2c915f26089a6d632001a5c1349672", + "sha256:235a31ec7db685f5c82233bddf9858748b89b8119bf4538d514536c485c15fe0", + "sha256:27dcd6f46a21c18fa5e5deed92a43d4554e3df8d8ca5a47bf0615d6a5f39dbc9", + "sha256:28efb066cde83c479dfe5a48141a53bc7e5f13f785b92ddde336c716663039ee", + "sha256:3476fae43db72bd11f29a5147ae2f3cb22e2f1a91d575ef130d2bf49afd21c46", + "sha256:36e17c4592231a7dbd2ed09027823ab295d2791b3b1efb2aee874b10548b7524", + "sha256:384d779f0d6f1b110eae74cb0659d9aa6ff35aaf547b3955abf2ab4c901c4819", + "sha256:38949d30b11ae5f95c3c91917ee7a6b239f5ec276f271f28638dec9156f82cfc", + "sha256:3967e4ad1aa9da62fd53e346ed17d7b2e922cba5ab93bdd46febcac39be636fc", + "sha256:3e7bf4442b310ff154b7bb9d81eb2c016b7d597e364f97d72b1acc3817a0fdc1", + "sha256:3f0c8c6dfa6605ab8ff0611995ee30d4f9fcff89966cf562733b4008a3d60d82", + "sha256:484ae3240666ad34cfa31eea7b8c6cd2f1fdaae21d73ce2974211df099a95d81", + "sha256:4a7b4f35de6a304b5533c238bee86b670b75b03d31b7797929caa7a624b5dda6", + "sha256:4cb14ce54d9b857be9591ac364cb08dc2d6a5c4318c1182cb1d02274029d590d", + "sha256:4e71bc4416de195d6e9b4ee93ad3f2f6b2ce11d042b4d7a7ee00bbe0358bd0c2", + "sha256:52700dc63a4676669b341ba33520f4d6e43d3ca58d422e22ba66d1736b0a6e4c", + "sha256:572efc93db7a4d27e404501975ca6d2d9775705c2d922390d878fcf768d92c87", + "sha256:576eb384292b139821c41995523654ad82d1916da6a60cff129c715a6223ea84", + "sha256:5b0bf0effb196ed76b7ad883848143427a73c355ae8e569fa538365064188b8e", + "sha256:5b6ccc0c85916998d788b295765ea0e9cb9aac7e4a8ed71d12e7d8ac31c23c95", + "sha256:5ed82f5a7af3697b1c4786053736f24a0efd0a1b8a130d4c7bfee4b9ded0f08f", + "sha256:6d4c80667de2e36970ebf74f42d1088cc9ee7ef5f4e8c35eee1b40eafd33ca5b", + "sha256:730076207cb816138cf1af7f7237b208340a2c5e749707457d70705715c93b93", + "sha256:7687e22a31e976a0e7fc99c2f4d11ca45eff652a81eb8c8085e9609298916dcf", + "sha256:822ea70dc4018c7e6223f13affd1c5c30c0f5c12ac1f96cd8e9949acddb48a61", + "sha256:84b0daf226913133f899ea9b30618722d45feffa67e4fe867b0b5ae83a34060c", + "sha256:85765fdf4b27eb5086f05ac0491090fc76f4f2b28e09d9350c31aac25a5aaff8", + "sha256:8dd178c4c80706546702c59529ffc005681bd6dc2ea234c450661b205445a34d", + "sha256:8f5b234f567cf76ee489502ceb7165c2a5cecec081db2b37e35332b537f8157c", + "sha256:98bbd754a422a0b123c66a4c341de0474cad4a5c10c164ceed6ea090f3563db4", + "sha256:993584fc821c58d5993521bfdcd31a4adf025c7d745bbd4d12ccfecf695af5ba", + "sha256:a40821a89dc373d6427e2b44b572efc36a2778d3f543299e2f24eb1a5de65415", + "sha256:b291f0ee7961a597cbbcc77709374087fa2a9afe7bdb6a40dbbd9b127e79afee", + "sha256:b573a43ef7c368ba4ea06050a957c2a7550f729c31f11dd616d2ac4aba99888d", + "sha256:b610ff0f24e9f11c9ae653c67ff8cc03c075131401b3e5ef4b82570d1728f8a9", + "sha256:bdf38ba2d393c7911ae989c3bbba510ebbcdf4ecbdbfec36272abe350c454075", + "sha256:bfef2bb6ef068827bbd021017a107194956918ab43ce4d6dc945ffa13efbc25f", + "sha256:cab3db8bab4b7e635c1c97270d7a4b2a90c070b33cbc00c99ef3f9be03d3e1f7", + "sha256:cb70766519500281815dfd7a87d3a178acf7ce95390544b8c90587d76b227681", + "sha256:cca1b62fe70d761a282496b96a5e51c44c213e410a964bdffe0928e611368329", + "sha256:ccf9a39706b604d884d2cb1e27fe973bc55f2890c52f38df742bc1d79ab9f5e1", + "sha256:dc43f1ec66eb8440567186ae2f8c447d91e0372d793dfe8c222aec857b81a8cf", + "sha256:dd632777ff3beaaf629f1ab4396caf7ba0bdd075d948a69460d13d44357aca4c", + "sha256:e45ae4927759289c30ccba8d9fdce62bb414977ba158286b5ddaf8df2cddb5c5", + "sha256:e50ebce52f41370707f1e21a59514e3375e3edd6e1832f5e5235237db933c98b", + "sha256:ebbbba226f0a108a7366bf4b59bf0f30a12fd5e75100c630267d94d7f0ad20e5", + "sha256:ec79ff6159dffcc30853b2ad612ed572af86c92b5168aa3fc01a67b0fa40665e", + "sha256:f0936e08e0003f66bfd97e74ee530427707297b0d0361247e9b4f59ab78ddc8b", + "sha256:f26a07a6e877c76a88e3cecac8531908d980d3d5067ff69213653649ec0f60ad", + "sha256:f64e376cd20d3f030190e8c32e1c64582eba56ac6dc7d5b0b49a9d44021b52fd", + "sha256:f6ffbc252eb0d229aeb2f9ad051200668fc3a9aaa8994e49f0cb2ffe2b7867e7", + "sha256:f9a7c509542db4eceed3dcf21ee5267ab565a83555c9b88a8109dcecc4709002", + "sha256:ff1d0899f104f3921d94579a5638847f783c9b04f2d5f229392ca77fba5b82fc" + ], + "markers": "python_version >= '3.8'", + "version": "==1.0.7" }, "msgpack-python": { "hashes": [ @@ -945,188 +1037,254 @@ ], "version": "==0.5.6" }, - "multiaddr": { - "hashes": [ - "sha256:30b2695189edc3d5b90f1c303abb8f02d963a3a4edf2e7178b975eb417ab0ecf", - "sha256:5c0f862cbcf19aada2a899f80ef896ddb2e85614e0c8f04dd287c06c69dac95b" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.0.9" - }, "multidict": { "hashes": [ - "sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60", - "sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c", - "sha256:0556a1d4ea2d949efe5fd76a09b4a82e3a4a30700553a6725535098d8d9fb672", - "sha256:05f6949d6169878a03e607a21e3b862eaf8e356590e8bdae4227eedadacf6e51", - "sha256:07a017cfa00c9890011628eab2503bee5872f27144936a52eaab449be5eaf032", - "sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2", - "sha256:19adcfc2a7197cdc3987044e3f415168fc5dc1f720c932eb1ef4f71a2067e08b", - "sha256:19d9bad105dfb34eb539c97b132057a4e709919ec4dd883ece5838bcbf262b80", - "sha256:225383a6603c086e6cef0f2f05564acb4f4d5f019a4e3e983f572b8530f70c88", - "sha256:23b616fdc3c74c9fe01d76ce0d1ce872d2d396d8fa8e4899398ad64fb5aa214a", - "sha256:2957489cba47c2539a8eb7ab32ff49101439ccf78eab724c828c1a54ff3ff98d", - "sha256:2d36e929d7f6a16d4eb11b250719c39560dd70545356365b494249e2186bc389", - "sha256:2e4a0785b84fb59e43c18a015ffc575ba93f7d1dbd272b4cdad9f5134b8a006c", - "sha256:3368bf2398b0e0fcbf46d85795adc4c259299fec50c1416d0f77c0a843a3eed9", - "sha256:373ba9d1d061c76462d74e7de1c0c8e267e9791ee8cfefcf6b0b2495762c370c", - "sha256:4070613ea2227da2bfb2c35a6041e4371b0af6b0be57f424fe2318b42a748516", - "sha256:45183c96ddf61bf96d2684d9fbaf6f3564d86b34cb125761f9a0ef9e36c1d55b", - "sha256:4571f1beddff25f3e925eea34268422622963cd8dc395bb8778eb28418248e43", - "sha256:47e6a7e923e9cada7c139531feac59448f1f47727a79076c0b1ee80274cd8eee", - "sha256:47fbeedbf94bed6547d3aa632075d804867a352d86688c04e606971595460227", - "sha256:497988d6b6ec6ed6f87030ec03280b696ca47dbf0648045e4e1d28b80346560d", - "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae", - "sha256:50bd442726e288e884f7be9071016c15a8742eb689a593a0cac49ea093eef0a7", - "sha256:514fe2b8d750d6cdb4712346a2c5084a80220821a3e91f3f71eec11cf8d28fd4", - "sha256:5774d9218d77befa7b70d836004a768fb9aa4fdb53c97498f4d8d3f67bb9cfa9", - "sha256:5fdda29a3c7e76a064f2477c9aab1ba96fd94e02e386f1e665bca1807fc5386f", - "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013", - "sha256:626fe10ac87851f4cffecee161fc6f8f9853f0f6f1035b59337a51d29ff3b4f9", - "sha256:6701bf8a5d03a43375909ac91b6980aea74b0f5402fbe9428fc3f6edf5d9677e", - "sha256:684133b1e1fe91eda8fa7447f137c9490a064c6b7f392aa857bba83a28cfb693", - "sha256:6f3cdef8a247d1eafa649085812f8a310e728bdf3900ff6c434eafb2d443b23a", - "sha256:75bdf08716edde767b09e76829db8c1e5ca9d8bb0a8d4bd94ae1eafe3dac5e15", - "sha256:7c40b7bbece294ae3a87c1bc2abff0ff9beef41d14188cda94ada7bcea99b0fb", - "sha256:8004dca28e15b86d1b1372515f32eb6f814bdf6f00952699bdeb541691091f96", - "sha256:8064b7c6f0af936a741ea1efd18690bacfbae4078c0c385d7c3f611d11f0cf87", - "sha256:89171b2c769e03a953d5969b2f272efa931426355b6c0cb508022976a17fd376", - "sha256:8cbf0132f3de7cc6c6ce00147cc78e6439ea736cee6bca4f068bcf892b0fd658", - "sha256:9cc57c68cb9139c7cd6fc39f211b02198e69fb90ce4bc4a094cf5fe0d20fd8b0", - "sha256:a007b1638e148c3cfb6bf0bdc4f82776cef0ac487191d093cdc316905e504071", - "sha256:a2c34a93e1d2aa35fbf1485e5010337c72c6791407d03aa5f4eed920343dd360", - "sha256:a45e1135cb07086833ce969555df39149680e5471c04dfd6a915abd2fc3f6dbc", - "sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3", - "sha256:aef9cc3d9c7d63d924adac329c33835e0243b5052a6dfcbf7732a921c6e918ba", - "sha256:b9d153e7f1f9ba0b23ad1568b3b9e17301e23b042c23870f9ee0522dc5cc79e8", - "sha256:bfba7c6d5d7c9099ba21f84662b037a0ffd4a5e6b26ac07d19e423e6fdf965a9", - "sha256:c207fff63adcdf5a485969131dc70e4b194327666b7e8a87a97fbc4fd80a53b2", - "sha256:d0509e469d48940147e1235d994cd849a8f8195e0bca65f8f5439c56e17872a3", - "sha256:d16cce709ebfadc91278a1c005e3c17dd5f71f5098bfae1035149785ea6e9c68", - "sha256:d48b8ee1d4068561ce8033d2c344cf5232cb29ee1a0206a7b828c79cbc5982b8", - "sha256:de989b195c3d636ba000ee4281cd03bb1234635b124bf4cd89eeee9ca8fcb09d", - "sha256:e07c8e79d6e6fd37b42f3250dba122053fddb319e84b55dd3a8d6446e1a7ee49", - "sha256:e2c2e459f7050aeb7c1b1276763364884595d47000c1cddb51764c0d8976e608", - "sha256:e5b20e9599ba74391ca0cfbd7b328fcc20976823ba19bc573983a25b32e92b57", - "sha256:e875b6086e325bab7e680e4316d667fc0e5e174bb5611eb16b3ea121c8951b86", - "sha256:f4f052ee022928d34fe1f4d2bc743f32609fb79ed9c49a1710a5ad6b2198db20", - "sha256:fcb91630817aa8b9bc4a74023e4198480587269c272c58b3279875ed7235c293", - "sha256:fd9fc9c4849a07f3635ccffa895d57abce554b467d611a5009ba4f39b78a8849", - "sha256:feba80698173761cddd814fa22e88b0661e98cb810f9f986c54aa34d281e4937", - "sha256:feea820722e69451743a3d56ad74948b68bf456984d63c1a92e8347b7b88452d" + "sha256:06560fbdcf22c9387100979e65b26fba0816c162b888cb65b845d3def7a54c9b", + "sha256:067150fad08e6f2dd91a650c7a49ba65085303fcc3decbd64a57dc13a2733031", + "sha256:0a2cbcfbea6dc776782a444db819c8b78afe4db597211298dd8b2222f73e9cd0", + "sha256:0dd1c93edb444b33ba2274b66f63def8a327d607c6c790772f448a53b6ea59ce", + "sha256:0fed465af2e0eb6357ba95795d003ac0bdb546305cc2366b1fc8f0ad67cc3fda", + "sha256:116347c63ba049c1ea56e157fa8aa6edaf5e92925c9b64f3da7769bdfa012858", + "sha256:1b4ac3ba7a97b35a5ccf34f41b5a8642a01d1e55454b699e5e8e7a99b5a3acf5", + "sha256:1c7976cd1c157fa7ba5456ae5d31ccdf1479680dc9b8d8aa28afabc370df42b8", + "sha256:246145bff76cc4b19310f0ad28bd0769b940c2a49fc601b86bfd150cbd72bb22", + "sha256:25cbd39a9029b409167aa0a20d8a17f502d43f2efebfe9e3ac019fe6796c59ac", + "sha256:28e6d883acd8674887d7edc896b91751dc2d8e87fbdca8359591a13872799e4e", + "sha256:2d1d55cdf706ddc62822d394d1df53573d32a7a07d4f099470d3cb9323b721b6", + "sha256:2e77282fd1d677c313ffcaddfec236bf23f273c4fba7cdf198108f5940ae10f5", + "sha256:32fdba7333eb2351fee2596b756d730d62b5827d5e1ab2f84e6cbb287cc67fe0", + "sha256:35591729668a303a02b06e8dba0eb8140c4a1bfd4c4b3209a436a02a5ac1de11", + "sha256:380b868f55f63d048a25931a1632818f90e4be71d2081c2338fcf656d299949a", + "sha256:3822c5894c72e3b35aae9909bef66ec83e44522faf767c0ad39e0e2de11d3b55", + "sha256:38ba256ee9b310da6a1a0f013ef4e422fca30a685bcbec86a969bd520504e341", + "sha256:3bc3b1621b979621cee9f7b09f024ec76ec03cc365e638126a056317470bde1b", + "sha256:3d2d7d1fff8e09d99354c04c3fd5b560fb04639fd45926b34e27cfdec678a704", + "sha256:517d75522b7b18a3385726b54a081afd425d4f41144a5399e5abd97ccafdf36b", + "sha256:5f79c19c6420962eb17c7e48878a03053b7ccd7b69f389d5831c0a4a7f1ac0a1", + "sha256:5f841c4f14331fd1e36cbf3336ed7be2cb2a8f110ce40ea253e5573387db7621", + "sha256:637c1896497ff19e1ee27c1c2c2ddaa9f2d134bbb5e0c52254361ea20486418d", + "sha256:6ee908c070020d682e9b42c8f621e8bb10c767d04416e2ebe44e37d0f44d9ad5", + "sha256:77f0fb7200cc7dedda7a60912f2059086e29ff67cefbc58d2506638c1a9132d7", + "sha256:7878b61c867fb2df7a95e44b316f88d5a3742390c99dfba6c557a21b30180cac", + "sha256:78c106b2b506b4d895ddc801ff509f941119394b89c9115580014127414e6c2d", + "sha256:8b911d74acdc1fe2941e59b4f1a278a330e9c34c6c8ca1ee21264c51ec9b67ef", + "sha256:93de39267c4c676c9ebb2057e98a8138bade0d806aad4d864322eee0803140a0", + "sha256:9416cf11bcd73c861267e88aea71e9fcc35302b3943e45e1dbb4317f91a4b34f", + "sha256:94b117e27efd8e08b4046c57461d5a114d26b40824995a2eb58372b94f9fca02", + "sha256:9815765f9dcda04921ba467957be543423e5ec6a1136135d84f2ae092c50d87b", + "sha256:98ec9aea6223adf46999f22e2c0ab6cf33f5914be604a404f658386a8f1fba37", + "sha256:a37e9a68349f6abe24130846e2f1d2e38f7ddab30b81b754e5a1fde32f782b23", + "sha256:a43616aec0f0d53c411582c451f5d3e1123a68cc7b3475d6f7d97a626f8ff90d", + "sha256:a4771d0d0ac9d9fe9e24e33bed482a13dfc1256d008d101485fe460359476065", + "sha256:a5635bcf1b75f0f6ef3c8a1ad07b500104a971e38d3683167b9454cb6465ac86", + "sha256:a9acb76d5f3dd9421874923da2ed1e76041cb51b9337fd7f507edde1d86535d6", + "sha256:ac42181292099d91217a82e3fa3ce0e0ddf3a74fd891b7c2b347a7f5aa0edded", + "sha256:b227345e4186809d31f22087d0265655114af7cda442ecaf72246275865bebe4", + "sha256:b61f85101ef08cbbc37846ac0e43f027f7844f3fade9b7f6dd087178caedeee7", + "sha256:b70913cbf2e14275013be98a06ef4b412329fe7b4f83d64eb70dce8269ed1e1a", + "sha256:b9aad49466b8d828b96b9e3630006234879c8d3e2b0a9d99219b3121bc5cdb17", + "sha256:baf1856fab8212bf35230c019cde7c641887e3fc08cadd39d32a421a30151ea3", + "sha256:bd6c9c50bf2ad3f0448edaa1a3b55b2e6866ef8feca5d8dbec10ec7c94371d21", + "sha256:c1ff762e2ee126e6f1258650ac641e2b8e1f3d927a925aafcfde943b77a36d24", + "sha256:c30ac9f562106cd9e8071c23949a067b10211917fdcb75b4718cf5775356a940", + "sha256:c9631c642e08b9fff1c6255487e62971d8b8e821808ddd013d8ac058087591ac", + "sha256:cdd68778f96216596218b4e8882944d24a634d984ee1a5a049b300377878fa7c", + "sha256:ce8cacda0b679ebc25624d5de66c705bc53dcc7c6f02a7fb0f3ca5e227d80422", + "sha256:cfde464ca4af42a629648c0b0d79b8f295cf5b695412451716531d6916461628", + "sha256:d3def943bfd5f1c47d51fd324df1e806d8da1f8e105cc7f1c76a1daf0f7e17b0", + "sha256:d9b668c065968c5979fe6b6fa6760bb6ab9aeb94b75b73c0a9c1acf6393ac3bf", + "sha256:da7d57ea65744d249427793c042094c4016789eb2562576fb831870f9c878d9e", + "sha256:dc3a866cf6c13d59a01878cd806f219340f3e82eed514485e094321f24900677", + "sha256:df23c83398715b26ab09574217ca21e14694917a0c857e356fd39e1c64f8283f", + "sha256:dfc924a7e946dd3c6360e50e8f750d51e3ef5395c95dc054bc9eab0f70df4f9c", + "sha256:e4a67f1080123de76e4e97a18d10350df6a7182e243312426d508712e99988d4", + "sha256:e5283c0a00f48e8cafcecadebfa0ed1dac8b39e295c7248c44c665c16dc1138b", + "sha256:e58a9b5cc96e014ddf93c2227cbdeca94b56a7eb77300205d6e4001805391747", + "sha256:e6453f3cbeb78440747096f239d282cc57a2997a16b5197c9bc839099e1633d0", + "sha256:e6c4fa1ec16e01e292315ba76eb1d012c025b99d22896bd14a66628b245e3e01", + "sha256:e7d81ce5744757d2f05fc41896e3b2ae0458464b14b5a2c1e87a6a9d69aefaa8", + "sha256:ea21d4d5104b4f840b91d9dc8cbc832aba9612121eaba503e54eaab1ad140eb9", + "sha256:ecc99bce8ee42dcad15848c7885197d26841cb24fa2ee6e89d23b8993c871c64", + "sha256:f0bb0973f42ffcb5e3537548e0767079420aefd94ba990b61cf7bb8d47f4916d", + "sha256:f19001e790013ed580abfde2a4465388950728861b52f0da73e8e8a9418533c0", + "sha256:f76440e480c3b2ca7f843ff8a48dc82446b86ed4930552d736c0bac507498a52", + "sha256:f9bef5cff994ca3026fcc90680e326d1a19df9841c5e3d224076407cc21471a1", + "sha256:fc66d4016f6e50ed36fb39cd287a3878ffcebfa90008535c62e0e90a7ab713ae", + "sha256:fd77c8f3cba815aa69cb97ee2b2ef385c7c12ada9c734b0f3b32e26bb88bbf1d" ], - "markers": "python_version >= '3.7'", - "version": "==6.0.2" + "markers": "python_version >= '3.6'", + "version": "==5.2.0" }, "mypy-extensions": { "hashes": [ - "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", - "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" - ], - "version": "==0.4.3" - }, - "netaddr": { - "hashes": [ - "sha256:9666d0232c32d2656e5e5f8d735f58fd6c7457ce52fc21c98d45f2af78f990ac", - "sha256:d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243" + "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", + "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782" ], - "version": "==0.8.0" + "markers": "python_version >= '3.5'", + "version": "==1.0.0" }, "nucypher": { "git": "https://github.com/nucypher/nucypher.git", - "ref": "9ed0186060fa59da827b2e49f70530ce65745054" + "markers": "python_version >= '3'", + "ref": "4b029f707c021da8e87f5a753c9eadd86dbe4b30" }, "nucypher-core": { "hashes": [ - "sha256:0bcfb9bec7cef486aaf8b980f628561eb57a675ca192f2832e70bb6b2fa17cdf", - "sha256:0bdef5106c42310dae46444256cf6f031759df2e8b7f18560f059e3a4bd469a9", - "sha256:100873b3eaa29e4392b0f6c35ddcf2465f554483a54b2f36cbfe3b345a445ed9", - "sha256:1879b053ee5b02ea2379518d3a6062706ac3a33f758757e35a2d5a2621b8af2c", - "sha256:1c4261c4f096bfb27da99da52d75312565d57caa298788f28d6945adbea7fb0e", - "sha256:281fff3bb92a0a222e6cf7d3c0622ba1bf57961997886e98a03a26e9ebb59dcb", - "sha256:3cc809505645663306cbaa9f37668822b32a8bcddcc2744c748a2736cfda17db", - "sha256:3d390d6c0ecd118b1d3cd1fa7f2cdc3669f7700a3c8593013cb1e799ac9e79b3", - "sha256:5d8428198e8307678bb8d79c8d0a0df8bfb2df784fa33ee0e29d2a3cae1a163d", - "sha256:8cfb67b509e0a2860f9209bd7945c40540de8b84f0f693129d53cc710ba9cfb1", - "sha256:9317e020880ba4a66759c5ecdef9a4d16d1eb25e16761afa5d91a80616108c8a", - "sha256:9dfb766534da38df4290c35be0d76e3ed61a5968f7af31b2e3d3c69cbf74be16", - "sha256:cfc6458f27dead92c9d2c7a75a55ebf05ce6019c49e3163204c4e9601f231c87", - "sha256:d2eb7a8bb8d9ecbd68735b2a504a1b3d15e702c275515d8266a36c925e954ae0", - "sha256:df1b8807415bbcb8b839b954046f486c8e7b03d8f86647e456de7ca5a2f86cc4", - "sha256:ef6e1c10d2faeb6c26829a5f6e5a49b720d73950bd4cc9866fef19b950148c75" - ], - "version": "==0.4.1" + "sha256:09c754a7450d2ba3a46bf2c73ac35a0e8fe73c0c2fdbc2dab47ebea47d90b909", + "sha256:0b3d44fdc4acfd31cf6e46fdf8acb9ea278823b2d72336f5c9e7732b37ac6f30", + "sha256:0b8449ab2524628b1d4c095fc4ff5e46c699f0acd62a099ba6d411e72704c94c", + "sha256:0fe7eab174fc658f8391f1834aa193fb10acf1a55a1c613d0f09493e8d0d9f17", + "sha256:1f70477f41bc10e19f6280258530dabecb453b1230f641601ea12f5e4c9cac67", + "sha256:1fc6f39de2e90e36695c2674a170047dc9abfc083e9177b3304bd74ec21727d2", + "sha256:57c1c6d96570221ec8c30f8b00d89496f9d68cdf11b0574bdae7defd3cc1c975", + "sha256:74fcf712399aeb0d242c1d332a7f7a34d4ff70d9262c0537eb769ff973c2170e", + "sha256:75d5b86ab0fe51b00036cab25d6d4699fa3171aa8a8418d4027fdc2388f84c43", + "sha256:a3a69e37fdf6a42b5d0be58b28d70e2fb614320d032a2fe99aa3aa29643f9494", + "sha256:b9c82bd7593d2deac41c8f7b2833193eb6e6cab0208261313121646fcd275629", + "sha256:de48dae67ff01ffe020e8887432daa8a1072797559e11cb34d56b3012b6f4520", + "sha256:e22038db52190d88b6dd8cbcd76980d2f2d62a630baac46677f9ad6743b3b689", + "sha256:f2d44c28e4724f1c5ff6e566bbe1ab731bd57458bd219072aa146bd43a4e78d6", + "sha256:fadd7ac4009d74b2bdf2b678015ff6e315827517de21d0684fd31b9259a08fbc", + "sha256:fcb97049f8719d30fd155fe3f862410cb5edb3afd76ff0ae1ff60d76d0b5a3f8" + ], + "index": "pypi", + "version": "==0.13.0" }, "packaging": { "hashes": [ - "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", - "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" + "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", + "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" ], - "markers": "python_version >= '3.6'", - "version": "==21.3" + "markers": "python_version >= '3.7'", + "version": "==23.2" }, "parsimonious": { "hashes": [ - "sha256:3add338892d580e0cb3b1a39e4a1b427ff9f687858fdd61097053742391a9f6b" + "sha256:b2ad1ae63a2f65bd78f5e0a8ac510a98f3607a43f1db2a8d46636a5d9e4a30c1" ], - "version": "==0.8.1" + "version": "==0.9.0" }, "pendulum": { "hashes": [ - "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394", - "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b", - "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a", - "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087", - "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739", - "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269", - "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0", - "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5", - "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be", - "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7", - "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3", - "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207", - "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe", - "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360", - "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0", - "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b", - "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052", - "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002", - "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116", - "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db", - "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b" + "sha256:03080a6b7f1b500b4b966d0f107f19e12386fbd8df477ed2aca9f2c1ea0f0a71", + "sha256:0b1cc6de778a99dbea179a86e655aa24d2d6964da5db52b2e147945a108cdb63", + "sha256:0dbcbad29f338dd90ffe9a3235c283a2a01f8e565c02ace69b84a3ed049cb9bc", + "sha256:0fc8b3643cd04b64e5d931df94fbc1e6ee4117255f93bc2df43e177f42c6ec50", + "sha256:0fdb0b98ab23dd9f134e80d18562bc17bf31c4e38b604d822fd87d685df4a984", + "sha256:0ff2cda697eeec55a2de4bbcb94bc941b2fb28cb6fa2b7d2d4098505892e555d", + "sha256:10edd6a29dc00768c5f15f79a1ef15d7d6b8897383175ed42e9ac60db924efa0", + "sha256:13656868bf4190b542bf25505629b4aef24c5d737b9796b5294f94de4d405b5f", + "sha256:1d12a537ff1acec48243325b15fb617795ff981efa142a9a584f5a82fc6c237b", + "sha256:2364a38b60968c67ea96164b166a9b00e6e6cd05e379f9b38dae51a0d027e6b3", + "sha256:256fb81c43183f4f3a40bcd9fd2f0914e77eb37334376117183037cf9656800f", + "sha256:2b85650e1d6171fdaa4cc29280caa7c1c8385f6db4f0b479ce74acaabe48ba97", + "sha256:30dce113b94cc05353651573a4336fe04e97260befcfd1d618ce632aa3fc7d2f", + "sha256:32f2568b295f1f4571354edc4b106ed63a5e4d0916b977fff863f7b1c937968b", + "sha256:39154e7f75ee9ff12adb909374189b7ffd521b682223ec8baaf3b04f010fc671", + "sha256:3ce5cf4be2525077cc25361ae4c05e2835f960476ad8df3152a30bc654531b8e", + "sha256:47f75b13e69780a26c3f9227695e80fc49f0498b2635483ae9b17843319f018e", + "sha256:4a06c923ce1118c3e5c64d3a34ff30220eca14583cb51edcba32fdae5c0caf70", + "sha256:4b0f6d812a87225c0af2d342dbe428bcfd2eec2dce76a21042881f5ee130b02a", + "sha256:4b9a841296685be7488a34b6b51df5c8f927963f9370a01f76f75ebe16bf9256", + "sha256:4ccc6f77da9236ef67021f356696bbdd1790dc8941bfb106a7b937dfca3a4b6e", + "sha256:4ece9f0bf5d2c2ed3c8ca9d0cfe759c2b80c2c0f599e92a8d2cd747d7e358f46", + "sha256:5331e3106e9a5690136daf386ac78a7c7e47bd4b777b8dc8925b608633788718", + "sha256:543a063682d7100569242e43b05c338f91008652ae36fa6ca13b17f7fb5600ea", + "sha256:57e14edb415d278c794d4f549c1db9e7041cc988de1bda7ca80ea43bcacbb540", + "sha256:587c09b86e4b179b2a638ada746fba49b1c8afd9cd2a7f1d7e8939f11b2152c0", + "sha256:597f12938ca48bc11f8dec3e3c742fe2ba2eec9950e1c8db2d2e739a7c62428a", + "sha256:5b14035b98b75d6d138045565312fef7fd55583e91bc28c27c4a98e3a4cf064e", + "sha256:5d23a1aa69a18d168829c2d587dc450163ec8beef644058a9a6275794a1a51ba", + "sha256:6164b7983fc04a877e4f64ee8b1a063a0e0b34056134789eb53fd3ebf1b1cedb", + "sha256:618e65a703b99c1792a7090ae56c8c7c0220ae58aa363ed2eff95c8562acd02f", + "sha256:658160760a197b6e72e0012195962f3dd49efb846d8d4887d016fc7c85add5eb", + "sha256:681eb3ac31638170e1cb3ad83a916a8de1677638db8378a103f972980655742b", + "sha256:695b183356bd74f2bd6b665743f1fa6cb21285e15c1154a9d60188ebd356abd5", + "sha256:6b80fa0186b964cafba0c7709b083f5f8f79934c758e23b065d975e9289cf813", + "sha256:75753c75d5fd8b69b2207afe5d831527a26ff647207a0bc9d9c575f02439a284", + "sha256:76f158cf8fbd81803303a635e1b617bdac76bb81f78fb4db9a651167043108e2", + "sha256:791a3ded0929f72e8d89e567dd1f4cebb448e5f255a5c8b33f8d0485c4e40641", + "sha256:7b624d0aed4a5b40c5f52bded4bc516c3975c3ff8f1998bf51715e37c6dfc30c", + "sha256:7ca2e5efc5d27a45e600a48e2ae750341235323da038c11e07ea3c722977d97f", + "sha256:7d3cbba1716823d0d450f10bdf455d58d20c1c89f365bcbde7005bd97edd36b9", + "sha256:81c1eecbaedaee5712e643098253f8fef74d4e56800a85f0609bec3da6ed6f85", + "sha256:82f02593bda744900620eaede23b8f8f6d1de855cb938bc48e077d849755b4cb", + "sha256:83b0c99a83ff19165707956d45d8198895d35d6acf3cc6072a7342c7b7423f9a", + "sha256:89b4435add740a33d1b14720a6b4b471edbd7ea7ed42f44e288cabd59e00580b", + "sha256:8c3c3f423c4f32964ef3b8664041e13f78e80a49e554258f15b5e3b0622ccc53", + "sha256:8c7f6453db9bccc77506fdb8ed3ca61ef7f53efced70557102114f0c811bcd38", + "sha256:8e8c406b7c3dedd7db0eaa8f83cc2b78e594aaa424f3e064e38e037bb65a3191", + "sha256:917426a340bde92b03743ca2555c17892d1640de6fdb401c19ce4607ded48ec2", + "sha256:92fc9245fea1bb1ddc4cb3b55577a8f1e8c143f9237343bd55b156d3e9b23078", + "sha256:9574d81702be1f6c713cbc2b5c5ce4069c6a12d7f0f9dc46847bb4e3f09b3b08", + "sha256:9c455f9ea9130a10cf28a082f6052064062314d87fd02b334b49cab23e033065", + "sha256:9c58a446d0e1dad9b2c1813847b197d1f9ec1dfdea1cd7d57385591bb414b2a6", + "sha256:a0f6c73bb7e551da0dabc133faedeea48b4f47302d1432d467fb42859ecbf7c1", + "sha256:a4cdb9a0d842e1b6bd4f414d0097ae50859b5c8c04828c58f47a1a67474e6708", + "sha256:a57ca5b9b66674b382f6b429462d4ed2a998e7a1a39d099e23bd056576c44ddd", + "sha256:a5a8d00106888af084223470c2139327766107728fcd7a46b19252f1d878bcd0", + "sha256:a6b5721fd4f1718326461b2b04a24c0aaec11dfb650dd90ad1185c270c066397", + "sha256:a772c98f724d923bfccbd2a89e2217c2949ab582e4ae784671cb4bdc9be98b5c", + "sha256:a83877d59f663e81ef7fca483f9f8ba44c8ed843201cced92ed1298cf2ee162f", + "sha256:a9ecda6e0e4f7dbdfa36ed4e92e70e921f748d4337e23ab8a9fb74b8680138d5", + "sha256:b5a0646b8f9e6d5b041c94ff0d155c9a762c7f459f9cf69804056ac0593855bd", + "sha256:b7fc77f62b19d04bdd904a841b3e8d1ca1d726572c1d7302fee42ae9cebcbe72", + "sha256:ba758a373ab3e3ef377d3c1ea4d6d54f27459f0b722e9abad55178b1be6b9d04", + "sha256:ba8d8ef32b056dc7e31c5b5ac99186786360fc10993e3dfa0f2d78d23bc74ccd", + "sha256:bd5335f023832f49309fc9c40021a9a67ce37164c8ba394203fee3e21b081b64", + "sha256:c67e7459e4875dda15e6dc59e990872fc5c25c5aac9e0bdeae213e902ebbce46", + "sha256:ca71f8663ddae56685e7f1c1dca5d9c008d4726b37955d97b2b52015ecc1ff6c", + "sha256:cdac9cbf6e2e57766bd064f963ef90c33046251a0646c0a796f8b03408bd9433", + "sha256:d07dbb86984da99d12fdfffc167209bc470f48a10c3844ed5871d6987e2fecd8", + "sha256:d107bf9985a2620cc25c4d4e89638c14b78e571a0a6c02b5982cf31146744c73", + "sha256:d1d43b37204f47cce0a84d5b4131facdc57bad2e8fef8069249098458f60997b", + "sha256:d562c48affb35fae42ad71c4c5dc445e4a39d4a32ad475b78d66cbd6f217d49f", + "sha256:d6e583ab1bfeb77943a485d60cdf0172d0d6be0b175265f7826ec105937981ba", + "sha256:db8b46f257a436752f78024dd8677e8e4cc15c759fb4a7ceaa258bf9741bf5dc", + "sha256:db993666e3ff78e12d640b724d161fde4b96650d1261071412157e34b1aaf60b", + "sha256:dbd44cd66bf8d81fe2482d9ae8b4ebb7ddf3c34dd0a7e96a6ad57da8ec424602", + "sha256:e2f9bcf5166e025e7dfaec27263a13fd4f7deff5449bc93fcceccda3ca4a46e0", + "sha256:e3793a3511657e1b7be6c1d157915a52de5a6aea789f7452a393138cf1532311", + "sha256:ea8a4bd76fc6e76b30c02cfed3e970574a9247b6dad8f02c88269e9ebbd0993c", + "sha256:f5a1ddf5f34431e550daceafb202cd1cfaa31a3d3e1d53f2c76a1d13c9d2f291", + "sha256:f5bbbec2198cdbe221d5f4a702f55a28d04a7b081ee3f1c2ef83ebec989628d5", + "sha256:f8a0ead27e7bf8544f1aea9676f60425416a50f44a908afe1008a40a4c45b499" + ], + "markers": "python_version >= '3.8'", + "version": "==3.0.0b1" + }, + "prometheus-client": { + "hashes": [ + "sha256:4585b0d1223148c27a225b10dbec5ae9bc4c81a99a3fa80774fa6209935324e1", + "sha256:c88b1e6ecf6b41cd8fb5731c7ae919bf66df6ec6fafa555cd6c0e16ca169ae92" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==2.1.2" + "markers": "python_version >= '3.8'", + "version": "==0.19.0" }, - "protobuf": { + "prometheus-flask-exporter": { "hashes": [ - "sha256:06059eb6953ff01e56a25cd02cca1a9649a75a7e65397b5b9b4e929ed71d10cf", - "sha256:097c5d8a9808302fb0da7e20edf0b8d4703274d140fd25c5edabddcde43e081f", - "sha256:284f86a6207c897542d7e956eb243a36bb8f9564c1742b253462386e96c6b78f", - "sha256:32ca378605b41fd180dfe4e14d3226386d8d1b002ab31c969c366549e66a2bb7", - "sha256:3cc797c9d15d7689ed507b165cd05913acb992d78b379f6014e013f9ecb20996", - "sha256:62f1b5c4cd6c5402b4e2d63804ba49a327e0c386c99b1675c8a0fefda23b2067", - "sha256:69ccfdf3657ba59569c64295b7d51325f91af586f8d5793b734260dfe2e94e2c", - "sha256:6f50601512a3d23625d8a85b1638d914a0970f17920ff39cec63aaef80a93fb7", - "sha256:7403941f6d0992d40161aa8bb23e12575637008a5a02283a930addc0508982f9", - "sha256:755f3aee41354ae395e104d62119cb223339a8f3276a0cd009ffabfcdd46bb0c", - "sha256:77053d28427a29987ca9caf7b72ccafee011257561259faba8dd308fda9a8739", - "sha256:7e371f10abe57cee5021797126c93479f59fccc9693dafd6bd5633ab67808a91", - "sha256:9016d01c91e8e625141d24ec1b20fed584703e527d28512aa8c8707f105a683c", - "sha256:9be73ad47579abc26c12024239d3540e6b765182a91dbc88e23658ab71767153", - "sha256:adc31566d027f45efe3f44eeb5b1f329da43891634d61c75a5944e9be6dd42c9", - "sha256:adfc6cf69c7f8c50fd24c793964eef18f0ac321315439d94945820612849c388", - "sha256:af0ebadc74e281a517141daad9d0f2c5d93ab78e9d455113719a45a49da9db4e", - "sha256:cb29edb9eab15742d791e1025dd7b6a8f6fcb53802ad2f6e3adcb102051063ab", - "sha256:cd68be2559e2a3b84f517fb029ee611546f7812b1fdd0aa2ecc9bc6ec0e4fdde", - "sha256:cdee09140e1cd184ba9324ec1df410e7147242b94b5f8b0c64fc89e38a8ba531", - "sha256:db977c4ca738dd9ce508557d4fce0f5aebd105e158c725beec86feb1f6bc20d8", - "sha256:dd5789b2948ca702c17027c84c2accb552fc30f4622a98ab5c51fcfe8c50d3e7", - "sha256:e250a42f15bf9d5b09fe1b293bdba2801cd520a9f5ea2d7fb7536d4441811d20", - "sha256:ff8d8fa42675249bb456f5db06c00de6c2f4c27a065955917b28c4f15978b9c3" + "sha256:7a026b4fdd54ebeddb77589333efe3a1ec43c7c717468825b0b3e9b6c33f7e9e", + "sha256:e4e6beb1b8e1e164da6d70fe1edefc95ef184f113b5047f66f4b7262233da9c0" ], - "markers": "python_version >= '3.7'", - "version": "==3.20.1" + "index": "pypi", + "version": "==0.23.0" + }, + "protobuf": { + "hashes": [ + "sha256:2d65aa406a608bf8b18366d6b25d42bbb205a235a8802da3a46d38c22d4c9d6c", + "sha256:44c7c8346d8e64868df452759f1ebf3ecec3a9cf2f45affe837598e2a6dfb15e", + "sha256:4a1482f46714f0a428170221bcd780554099392523869a345e0f7aa2c58cae09", + "sha256:5b8eeb9970305008acf1c81e12624a7171bff46390a19aa9404a08fab0dff6dc", + "sha256:6c00620313178bdad36e5c0c58dac912bb02accb18c10c05116a92adef98d0e2", + "sha256:89a42a302b3c67187463616ce39f6f00bc97b84c062298de087fa94eacbe6cc2", + "sha256:bb652481451c49ac77ab4d85520c74a5b56d64a5e597ab6d5d02f97c71793219", + "sha256:d88d3950bc0afd42ec0dc71fb7e0b5e564f47074a141df6a546e2c93edb93402", + "sha256:e0d5d352a97f9ba3aedc1beaa2bdaef86c8c9eb0774a5d9dd48c9d8253d1ffad", + "sha256:f27cd197d87b17692615ade1097633a8b9a1d32677e6036ca2b5079484fb94b3", + "sha256:f2b101cd374b0ce97b2871e1fb0f207022c3efea074cce85b060966eef4a6be0" + ], + "markers": "python_version >= '3.8'", + "version": "==4.25.0rc2" }, "py-ecc": { "hashes": [ @@ -1138,46 +1296,26 @@ }, "py-evm": { "hashes": [ - "sha256:2fd960df8b2dad195eb9d732e4fcaca52bb56d4e9862ba76f0a9c50aa0a21952", - "sha256:d02b1a18c0162849991c25e46181e50233b0de5298b53f6da22c32b12a79f42a" + "sha256:1bf7b293faa70c03727358ae3e5cb0abf7282391461d9b52b82decd6ed18c2f7", + "sha256:d40b6ac950485111dc7ad7bd29e3f61e00d5f81dc919e8c2b3afca30f228dc05" ], - "version": "==0.6.1a1" + "version": "==0.7.0a4" }, "pyasn1": { "hashes": [ - "sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359", - "sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576", - "sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf", - "sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7", - "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d", - "sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00", - "sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8", - "sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86", - "sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12", - "sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776", - "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba", - "sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2", - "sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3" - ], - "version": "==0.4.8" + "sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57", + "sha256:97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==0.5.0" }, "pyasn1-modules": { "hashes": [ - "sha256:0845a5582f6a02bb3e1bde9ecfc4bfcae6ec3210dd270522fee602365430c3f8", - "sha256:0fe1b68d1e486a1ed5473f1302bd991c1611d319bba158e98b106ff86e1d7199", - "sha256:15b7c67fabc7fc240d87fb9aabf999cf82311a6d6fb2c70d00d3d0604878c811", - "sha256:426edb7a5e8879f1ec54a1864f16b882c2837bfd06eee62f2c982315ee2473ed", - "sha256:65cebbaffc913f4fe9e4808735c95ea22d7a7775646ab690518c056784bc21b4", - "sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e", - "sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74", - "sha256:a99324196732f53093a84c4369c996713eb8c89d360a496b599fb1a9c47fc3eb", - "sha256:b80486a6c77252ea3a3e9b1e360bc9cf28eaac41263d173c032581ad2f20fe45", - "sha256:c29a5e5cc7a3f05926aff34e097e84f8589cd790ce0ed41b67aed6857b26aafd", - "sha256:cbac4bc38d117f2a49aeedec4407d23e8866ea4ac27ff2cf7fb3e5b570df19e0", - "sha256:f39edd8c4ecaa4556e989147ebf219227e2cd2e8a43c7e7fcb1f1c18c5fd6a3d", - "sha256:fe0644d9ab041506b62782e92b06b8c68cca799e1a9636ec398675459e031405" + "sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c", + "sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d" ], - "version": "==0.2.8" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==0.3.0" }, "pychalk": { "hashes": [ @@ -1194,34 +1332,41 @@ }, "pycryptodome": { "hashes": [ - "sha256:0198fe96c22f7bc31e7a7c27a26b2cec5af3cf6075d577295f4850856c77af32", - "sha256:0e45d2d852a66ecfb904f090c3f87dc0dfb89a499570abad8590f10d9cffb350", - "sha256:1047ac2b9847ae84ea454e6e20db7dcb755a81c1b1631a879213d2b0ad835ff2", - "sha256:13b3e610a2f8938c61a90b20625069ab7a77ccea20d65a9a0f926cc0cc1314b1", - "sha256:1fc16c80a5da8231fd1f953a7b8dfeb415f68120248e8d68383c5c2c4b18708c", - "sha256:265bfcbbf20d58e6871ce695a7a08aac9b41a0553060d9c05363abd6f3391bdd", - "sha256:2bf2a270906a02b7b255e1a0d7b3aea4f06b3983c51ddec1673c380e0dff5b30", - "sha256:47c71a0347847b747ba1349767b16cde049bc36f21654eb09cc82306ef5fdcf8", - "sha256:48d99869d58f3979d72f6fa0c50f48d16f14973bc4a3adb0ce3b8325fdd7e223", - "sha256:4d950ed2a887905b3fa709b86be5a163e26e1b174703ed59d34eb6832f213222", - "sha256:54d807314c66785c69cd25425933d4bd4c23547a593cdcf49d962fa3e0081336", - "sha256:58172080cbfaee724067a3c017add6a1a3cc167bbc8478dc5f2e5f45fa658763", - "sha256:5df582f2112dd72331de7e567837e136a9629181a8ab69ef8949e4bc294a0b99", - "sha256:6016269bb56caf0327f6d42e7bad1247e08b78407446dff562240c65f85d5a5e", - "sha256:63165fbdc247450017eb9ef04cfe15cb3a72ca48ffcc3a3b75b08c0340bf3647", - "sha256:69adf32522b75968e1cbf25b5d83e87c04cd9a55610ce1e4a19012e58e7e4023", - "sha256:856ebf822d08d754af62c22e2b93626509a72773214f92db1551e2b68d9e2a1b", - "sha256:95069fd9e2813668a2713a1efcc65cc26d2c7e741401ac46628f1ec957511f1b", - "sha256:b12a88566a98617b1a34b4e5a805dff2da98d83fc74262aff3c3d724d0f525d6", - "sha256:c69e19afc734b2a17b9d78b7bcb544aabd5a52ff628e14283b6e9404d27d0517", - "sha256:c82e3bc1e70dde153b0956bffe20a15715a1fe3e00bc23e88d6973eda4505944", - "sha256:d1daec4d31bb00918e4e178297ac6ca6f86ec4c851ba584770533ece554d29e2", - "sha256:d67a2d2fe344953e4572a7d30668cceb516b04287b8638170d562065e53ee2e0", - "sha256:dab9359cc295160ba96738ba4912c675181c84bfdf413e5c0621cf00b7deeeaa", - "sha256:e061311b02cefb17ea93d4a5eb1ad36dca4792037078b43e15a653a0a4478ead", - "sha256:e750a21d8a265b1f9bfb1a28822995ea33511ba7db5e2b55f41fb30781d0d073" - ], - "version": "==3.16.0" + "sha256:0101f647d11a1aae5a8ce4f5fad6644ae1b22bb65d05accc7d322943c69a74a6", + "sha256:04dd31d3b33a6b22ac4d432b3274588917dcf850cc0c51c84eca1d8ed6933810", + "sha256:05e33267394aad6db6595c0ce9d427fe21552f5425e116a925455e099fdf759a", + "sha256:08ce3558af5106c632baf6d331d261f02367a6bc3733086ae43c0f988fe042db", + "sha256:139ae2c6161b9dd5d829c9645d781509a810ef50ea8b657e2257c25ca20efe33", + "sha256:17940dcf274fcae4a54ec6117a9ecfe52907ed5e2e438fe712fe7ca502672ed5", + "sha256:190c53f51e988dceb60472baddce3f289fa52b0ec38fbe5fd20dd1d0f795c551", + "sha256:22e0ae7c3a7f87dcdcf302db06ab76f20e83f09a6993c160b248d58274473bfa", + "sha256:3006c44c4946583b6de24fe0632091c2653d6256b99a02a3db71ca06472ea1e4", + "sha256:45430dfaf1f421cf462c0dd824984378bef32b22669f2635cb809357dbaab405", + "sha256:506c686a1eee6c00df70010be3b8e9e78f406af4f21b23162bbb6e9bdf5427bc", + "sha256:536f676963662603f1f2e6ab01080c54d8cd20f34ec333dcb195306fa7826997", + "sha256:542f99d5026ac5f0ef391ba0602f3d11beef8e65aae135fa5b762f5ebd9d3bfb", + "sha256:560591c0777f74a5da86718f70dfc8d781734cf559773b64072bbdda44b3fc3e", + "sha256:5b1986c761258a5b4332a7f94a83f631c1ffca8747d75ab8395bf2e1b93283d9", + "sha256:61bb3ccbf4bf32ad9af32da8badc24e888ae5231c617947e0f5401077f8b091f", + "sha256:7822f36d683f9ad7bc2145b2c2045014afdbbd1d9922a6d4ce1cbd6add79a01e", + "sha256:7919ccd096584b911f2a303c593280869ce1af9bf5d36214511f5e5a1bed8c34", + "sha256:7c760c8a0479a4042111a8dd2f067d3ae4573da286c53f13cf6f5c53a5c1f631", + "sha256:829b813b8ee00d9c8aba417621b94bc0b5efd18c928923802ad5ba4cf1ec709c", + "sha256:84c3e4fffad0c4988aef0d5591be3cad4e10aa7db264c65fadbc633318d20bde", + "sha256:8999316e57abcbd8085c91bc0ef75292c8618f41ca6d2b6132250a863a77d1e7", + "sha256:8c1601e04d32087591d78e0b81e1e520e57a92796089864b20e5f18c9564b3fa", + "sha256:a0ab84755f4539db086db9ba9e9f3868d2e3610a3948cbd2a55e332ad83b01b0", + "sha256:a9bcd5f3794879e91970f2bbd7d899780541d3ff439d8f2112441769c9f2ccea", + "sha256:bc35d463222cdb4dbebd35e0784155c81e161b9284e567e7e933d722e533331e", + "sha256:c1cc2f2ae451a676def1a73c1ae9120cd31af25db3f381893d45f75e77be2400", + "sha256:d033947e7fd3e2ba9a031cb2d267251620964705a013c5a461fa5233cc025270", + "sha256:d04f5f623a280fbd0ab1c1d8ecbd753193ab7154f09b6161b0f857a1a676c15f", + "sha256:d49a6c715d8cceffedabb6adb7e0cbf41ae1a2ff4adaeec9432074a80627dea1", + "sha256:e249a784cc98a29c77cea9df54284a44b40cafbfae57636dd2f8775b48af2434", + "sha256:fc7a79590e2b5d08530175823a242de6790abc73638cc6dc9d2684e7be2f5e49" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==3.19.0" }, "pyethash": { "hashes": [ @@ -1247,206 +1392,143 @@ }, "pyopenssl": { "hashes": [ - "sha256:7a83b7b272dd595222d672f5ce29aa030f1fb837630ef229f62e72e395ce8968", - "sha256:b28437c9773bb6c6958628cf9c3bebe585de661dba6f63df17111966363dd15e" + "sha256:24f0dc5227396b3e831f4c7f602b950a5e9833d292c8e4a2e06b709292806ae2", + "sha256:276f931f55a452e7dea69c7173e984eb2a4407ce413c918aa34b55f82f9b8bac" ], "markers": "python_version >= '3.6'", - "version": "==22.1.0" - }, - "pyparsing": { - "hashes": [ - "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", - "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" - ], - "markers": "python_full_version >= '3.6.8'", - "version": "==3.0.9" - }, - "pyrsistent": { - "hashes": [ - "sha256:055ab45d5911d7cae397dc418808d8802fb95262751872c841c170b0dbf51eed", - "sha256:111156137b2e71f3a9936baf27cb322e8024dac3dc54ec7fb9f0bcf3249e68bb", - "sha256:187d5730b0507d9285a96fca9716310d572e5464cadd19f22b63a6976254d77a", - "sha256:21455e2b16000440e896ab99e8304617151981ed40c29e9507ef1c2e4314ee95", - "sha256:2aede922a488861de0ad00c7630a6e2d57e8023e4be72d9d7147a9fcd2d30712", - "sha256:3ba4134a3ff0fc7ad225b6b457d1309f4698108fb6b35532d015dca8f5abed73", - "sha256:456cb30ca8bff00596519f2c53e42c245c09e1a4543945703acd4312949bfd41", - "sha256:71d332b0320642b3261e9fee47ab9e65872c2bd90260e5d225dabeed93cbd42b", - "sha256:879b4c2f4d41585c42df4d7654ddffff1239dc4065bc88b745f0341828b83e78", - "sha256:9cd3e9978d12b5d99cbdc727a3022da0430ad007dacf33d0bf554b96427f33ab", - "sha256:a178209e2df710e3f142cbd05313ba0c5ebed0a55d78d9945ac7a4e09d923308", - "sha256:b39725209e06759217d1ac5fcdb510e98670af9e37223985f330b611f62e7425", - "sha256:bfa0351be89c9fcbcb8c9879b826f4353be10f58f8a677efab0c017bf7137ec2", - "sha256:bfd880614c6237243ff53a0539f1cb26987a6dc8ac6e66e0c5a40617296a045e", - "sha256:c43bec251bbd10e3cb58ced80609c5c1eb238da9ca78b964aea410fb820d00d6", - "sha256:d690b18ac4b3e3cab73b0b7aa7dbe65978a172ff94970ff98d82f2031f8971c2", - "sha256:d6982b5a0237e1b7d876b60265564648a69b14017f3b5f908c5be2de3f9abb7a", - "sha256:dec3eac7549869365fe263831f576c8457f6c833937c68542d08fde73457d291", - "sha256:e371b844cec09d8dc424d940e54bba8f67a03ebea20ff7b7b0d56f526c71d584", - "sha256:e5d8f84d81e3729c3b506657dddfe46e8ba9c330bf1858ee33108f8bb2adb38a", - "sha256:ea6b79a02a28550c98b6ca9c35b9f492beaa54d7c5c9e9949555893c8a9234d0", - "sha256:f1258f4e6c42ad0b20f9cfcc3ada5bd6b83374516cd01c0960e3cb75fdca6770" - ], - "markers": "python_version >= '3.7'", - "version": "==0.19.2" - }, - "pysha3": { - "hashes": [ - "sha256:0060a66be16665d90c432f55a0ba1f6480590cfb7d2ad389e688a399183474f0", - "sha256:11a2ba7a2e1d9669d0052fc8fb30f5661caed5512586ecbeeaf6bf9478ab5c48", - "sha256:386998ee83e313b6911327174e088021f9f2061cbfa1651b97629b761e9ef5c4", - "sha256:41be70b06c8775a9e4d4eeb52f2f6a3f356f17539a54eac61f43a29e42fd453d", - "sha256:4416f16b0f1605c25f627966f76873e432971824778b369bd9ce1bb63d6566d9", - "sha256:571a246308a7b63f15f5aa9651f99cf30f2a6acba18eddf28f1510935968b603", - "sha256:59111c08b8f34495575d12e5f2ce3bafb98bea470bc81e70c8b6df99aef0dd2f", - "sha256:5ec8da7c5c70a53b5fa99094af3ba8d343955b212bc346a0d25f6ff75853999f", - "sha256:684cb01d87ed6ff466c135f1c83e7e4042d0fc668fa20619f581e6add1d38d77", - "sha256:68c3a60a39f9179b263d29e221c1bd6e01353178b14323c39cc70593c30f21c5", - "sha256:6e6a84efb7856f5d760ee55cd2b446972cb7b835676065f6c4f694913ea8f8d9", - "sha256:827b308dc025efe9b6b7bae36c2e09ed0118a81f792d888548188e97b9bf9a3d", - "sha256:93abd775dac570cb9951c4e423bcb2bc6303a9d1dc0dc2b7afa2dd401d195b24", - "sha256:9c778fa8b161dc9348dc5cc361e94d54aa5ff18413788f4641f6600d4893a608", - "sha256:9fdd28884c5d0b4edfed269b12badfa07f1c89dbc5c9c66dd279833894a9896b", - "sha256:c7c2adcc43836223680ebdf91f1d3373543dc32747c182c8ca2e02d1b69ce030", - "sha256:c93a2676e6588abcfaecb73eb14485c81c63b94fca2000a811a7b4fb5937b8e8", - "sha256:cd5c961b603bd2e6c2b5ef9976f3238a561c58569945d4165efb9b9383b050ef", - "sha256:f9046d59b3e72aa84f6dae83a040bd1184ebd7fef4e822d38186a8158c89e3cf", - "sha256:fd7e66999060d079e9c0e8893e78d8017dad4f59721f6fe0be6307cd32127a07", - "sha256:fe988e73f2ce6d947220624f04d467faf05f1bbdbc64b0a201296bb3af92739e" - ], - "version": "==1.0.2" + "version": "==23.2.0" }, "python-dateutil": { "hashes": [ "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.8.2" }, "pytz": { "hashes": [ - "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427", - "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2" + "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b", + "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7" ], - "version": "==2022.6" + "version": "==2023.3.post1" }, - "pytz-deprecation-shim": { + "pyunormalize": { "hashes": [ - "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6", - "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d" + "sha256:e63fdba0d85ea04579dde2fc29a072dba773dcae600b04faf6cc90714c8b1302" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==0.1.0.post0" + "markers": "python_version >= '3.6'", + "version": "==15.0.0" }, - "pytzdata": { + "referencing": { "hashes": [ - "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540", - "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f" + "sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf", + "sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2020.1" + "markers": "python_version >= '3.8'", + "version": "==0.30.2" }, "regex": { "hashes": [ - "sha256:052b670fafbe30966bbe5d025e90b2a491f85dfe5b2583a163b5e60a85a321ad", - "sha256:0653d012b3bf45f194e5e6a41df9258811ac8fc395579fa82958a8b76286bea4", - "sha256:0a069c8483466806ab94ea9068c34b200b8bfc66b6762f45a831c4baaa9e8cdd", - "sha256:0cf0da36a212978be2c2e2e2d04bdff46f850108fccc1851332bcae51c8907cc", - "sha256:131d4be09bea7ce2577f9623e415cab287a3c8e0624f778c1d955ec7c281bd4d", - "sha256:144486e029793a733e43b2e37df16a16df4ceb62102636ff3db6033994711066", - "sha256:1ddf14031a3882f684b8642cb74eea3af93a2be68893901b2b387c5fd92a03ec", - "sha256:1eba476b1b242620c266edf6325b443a2e22b633217a9835a52d8da2b5c051f9", - "sha256:20f61c9944f0be2dc2b75689ba409938c14876c19d02f7585af4460b6a21403e", - "sha256:22960019a842777a9fa5134c2364efaed5fbf9610ddc5c904bd3a400973b0eb8", - "sha256:22e7ebc231d28393dfdc19b185d97e14a0f178bedd78e85aad660e93b646604e", - "sha256:23cbb932cc53a86ebde0fb72e7e645f9a5eec1a5af7aa9ce333e46286caef783", - "sha256:29c04741b9ae13d1e94cf93fca257730b97ce6ea64cfe1eba11cf9ac4e85afb6", - "sha256:2bde29cc44fa81c0a0c8686992c3080b37c488df167a371500b2a43ce9f026d1", - "sha256:2cdc55ca07b4e70dda898d2ab7150ecf17c990076d3acd7a5f3b25cb23a69f1c", - "sha256:370f6e97d02bf2dd20d7468ce4f38e173a124e769762d00beadec3bc2f4b3bc4", - "sha256:395161bbdbd04a8333b9ff9763a05e9ceb4fe210e3c7690f5e68cedd3d65d8e1", - "sha256:44136355e2f5e06bf6b23d337a75386371ba742ffa771440b85bed367c1318d1", - "sha256:44a6c2f6374e0033873e9ed577a54a3602b4f609867794c1a3ebba65e4c93ee7", - "sha256:4919899577ba37f505aaebdf6e7dc812d55e8f097331312db7f1aab18767cce8", - "sha256:4b4b1fe58cd102d75ef0552cf17242705ce0759f9695334a56644ad2d83903fe", - "sha256:4bdd56ee719a8f751cf5a593476a441c4e56c9b64dc1f0f30902858c4ef8771d", - "sha256:4bf41b8b0a80708f7e0384519795e80dcb44d7199a35d52c15cc674d10b3081b", - "sha256:4cac3405d8dda8bc6ed499557625585544dd5cbf32072dcc72b5a176cb1271c8", - "sha256:4fe7fda2fe7c8890d454f2cbc91d6c01baf206fbc96d89a80241a02985118c0c", - "sha256:50921c140561d3db2ab9f5b11c5184846cde686bb5a9dc64cae442926e86f3af", - "sha256:5217c25229b6a85049416a5c1e6451e9060a1edcf988641e309dbe3ab26d3e49", - "sha256:5352bea8a8f84b89d45ccc503f390a6be77917932b1c98c4cdc3565137acc714", - "sha256:542e3e306d1669b25936b64917285cdffcd4f5c6f0247636fec037187bd93542", - "sha256:543883e3496c8b6d58bd036c99486c3c8387c2fc01f7a342b760c1ea3158a318", - "sha256:586b36ebda81e6c1a9c5a5d0bfdc236399ba6595e1397842fd4a45648c30f35e", - "sha256:597f899f4ed42a38df7b0e46714880fb4e19a25c2f66e5c908805466721760f5", - "sha256:5a260758454580f11dd8743fa98319bb046037dfab4f7828008909d0aa5292bc", - "sha256:5aefb84a301327ad115e9d346c8e2760009131d9d4b4c6b213648d02e2abe144", - "sha256:5e6a5567078b3eaed93558842346c9d678e116ab0135e22eb72db8325e90b453", - "sha256:5ff525698de226c0ca743bfa71fc6b378cda2ddcf0d22d7c37b1cc925c9650a5", - "sha256:61edbca89aa3f5ef7ecac8c23d975fe7261c12665f1d90a6b1af527bba86ce61", - "sha256:659175b2144d199560d99a8d13b2228b85e6019b6e09e556209dfb8c37b78a11", - "sha256:6a9a19bea8495bb419dc5d38c4519567781cd8d571c72efc6aa959473d10221a", - "sha256:6b30bddd61d2a3261f025ad0f9ee2586988c6a00c780a2fb0a92cea2aa702c54", - "sha256:6ffd55b5aedc6f25fd8d9f905c9376ca44fcf768673ffb9d160dd6f409bfda73", - "sha256:702d8fc6f25bbf412ee706bd73019da5e44a8400861dfff7ff31eb5b4a1276dc", - "sha256:74bcab50a13960f2a610cdcd066e25f1fd59e23b69637c92ad470784a51b1347", - "sha256:75f591b2055523fc02a4bbe598aa867df9e953255f0b7f7715d2a36a9c30065c", - "sha256:763b64853b0a8f4f9cfb41a76a4a85a9bcda7fdda5cb057016e7706fde928e66", - "sha256:76c598ca73ec73a2f568e2a72ba46c3b6c8690ad9a07092b18e48ceb936e9f0c", - "sha256:78d680ef3e4d405f36f0d6d1ea54e740366f061645930072d39bca16a10d8c93", - "sha256:7b280948d00bd3973c1998f92e22aa3ecb76682e3a4255f33e1020bd32adf443", - "sha256:7db345956ecce0c99b97b042b4ca7326feeec6b75facd8390af73b18e2650ffc", - "sha256:7dbdce0c534bbf52274b94768b3498abdf675a691fec5f751b6057b3030f34c1", - "sha256:7ef6b5942e6bfc5706301a18a62300c60db9af7f6368042227ccb7eeb22d0892", - "sha256:7f5a3ffc731494f1a57bd91c47dc483a1e10048131ffb52d901bfe2beb6102e8", - "sha256:8a45b6514861916c429e6059a55cf7db74670eaed2052a648e3e4d04f070e001", - "sha256:8ad241da7fac963d7573cc67a064c57c58766b62a9a20c452ca1f21050868dfa", - "sha256:8b0886885f7323beea6f552c28bff62cbe0983b9fbb94126531693ea6c5ebb90", - "sha256:8ca88da1bd78990b536c4a7765f719803eb4f8f9971cc22d6ca965c10a7f2c4c", - "sha256:8e0caeff18b96ea90fc0eb6e3bdb2b10ab5b01a95128dfeccb64a7238decf5f0", - "sha256:957403a978e10fb3ca42572a23e6f7badff39aa1ce2f4ade68ee452dc6807692", - "sha256:9af69f6746120998cd9c355e9c3c6aec7dff70d47247188feb4f829502be8ab4", - "sha256:9c94f7cc91ab16b36ba5ce476f1904c91d6c92441f01cd61a8e2729442d6fcf5", - "sha256:a37d51fa9a00d265cf73f3de3930fa9c41548177ba4f0faf76e61d512c774690", - "sha256:a3a98921da9a1bf8457aeee6a551948a83601689e5ecdd736894ea9bbec77e83", - "sha256:a3c1ebd4ed8e76e886507c9eddb1a891673686c813adf889b864a17fafcf6d66", - "sha256:a5f9505efd574d1e5b4a76ac9dd92a12acb2b309551e9aa874c13c11caefbe4f", - "sha256:a8ff454ef0bb061e37df03557afda9d785c905dab15584860f982e88be73015f", - "sha256:a9d0b68ac1743964755ae2d89772c7e6fb0118acd4d0b7464eaf3921c6b49dd4", - "sha256:aa62a07ac93b7cb6b7d0389d8ef57ffc321d78f60c037b19dfa78d6b17c928ee", - "sha256:ac741bf78b9bb432e2d314439275235f41656e189856b11fb4e774d9f7246d81", - "sha256:ae1e96785696b543394a4e3f15f3f225d44f3c55dafe3f206493031419fedf95", - "sha256:b683e5fd7f74fb66e89a1ed16076dbab3f8e9f34c18b1979ded614fe10cdc4d9", - "sha256:b7a8b43ee64ca8f4befa2bea4083f7c52c92864d8518244bfa6e88c751fa8fff", - "sha256:b8e38472739028e5f2c3a4aded0ab7eadc447f0d84f310c7a8bb697ec417229e", - "sha256:bfff48c7bd23c6e2aec6454aaf6edc44444b229e94743b34bdcdda2e35126cf5", - "sha256:c14b63c9d7bab795d17392c7c1f9aaabbffd4cf4387725a0ac69109fb3b550c6", - "sha256:c27cc1e4b197092e50ddbf0118c788d9977f3f8f35bfbbd3e76c1846a3443df7", - "sha256:c28d3309ebd6d6b2cf82969b5179bed5fefe6142c70f354ece94324fa11bf6a1", - "sha256:c670f4773f2f6f1957ff8a3962c7dd12e4be54d05839b216cb7fd70b5a1df394", - "sha256:ce6910b56b700bea7be82c54ddf2e0ed792a577dfaa4a76b9af07d550af435c6", - "sha256:d0213671691e341f6849bf33cd9fad21f7b1cb88b89e024f33370733fec58742", - "sha256:d03fe67b2325cb3f09be029fd5da8df9e6974f0cde2c2ac6a79d2634e791dd57", - "sha256:d0e5af9a9effb88535a472e19169e09ce750c3d442fb222254a276d77808620b", - "sha256:d243b36fbf3d73c25e48014961e83c19c9cc92530516ce3c43050ea6276a2ab7", - "sha256:d26166acf62f731f50bdd885b04b38828436d74e8e362bfcb8df221d868b5d9b", - "sha256:d403d781b0e06d2922435ce3b8d2376579f0c217ae491e273bab8d092727d244", - "sha256:d8716f82502997b3d0895d1c64c3b834181b1eaca28f3f6336a71777e437c2af", - "sha256:e4f781ffedd17b0b834c8731b75cce2639d5a8afe961c1e58ee7f1f20b3af185", - "sha256:e613a98ead2005c4ce037c7b061f2409a1a4e45099edb0ef3200ee26ed2a69a8", - "sha256:ef4163770525257876f10e8ece1cf25b71468316f61451ded1a6f44273eedeb5" + "sha256:00ba3c9818e33f1fa974693fb55d24cdc8ebafcb2e4207680669d8f8d7cca79a", + "sha256:00e871d83a45eee2f8688d7e6849609c2ca2a04a6d48fba3dff4deef35d14f07", + "sha256:06e9abc0e4c9ab4779c74ad99c3fc10d3967d03114449acc2c2762ad4472b8ca", + "sha256:0b9ac09853b2a3e0d0082104036579809679e7715671cfbf89d83c1cb2a30f58", + "sha256:0d47840dc05e0ba04fe2e26f15126de7c755496d5a8aae4a08bda4dd8d646c54", + "sha256:0f649fa32fe734c4abdfd4edbb8381c74abf5f34bc0b3271ce687b23729299ed", + "sha256:107ac60d1bfdc3edb53be75e2a52aff7481b92817cfdddd9b4519ccf0e54a6ff", + "sha256:11175910f62b2b8c055f2b089e0fedd694fe2be3941b3e2633653bc51064c528", + "sha256:12bd4bc2c632742c7ce20db48e0d99afdc05e03f0b4c1af90542e05b809a03d9", + "sha256:16f8740eb6dbacc7113e3097b0a36065a02e37b47c936b551805d40340fb9971", + "sha256:1c0e8fae5b27caa34177bdfa5a960c46ff2f78ee2d45c6db15ae3f64ecadde14", + "sha256:2c54e23836650bdf2c18222c87f6f840d4943944146ca479858404fedeb9f9af", + "sha256:3367007ad1951fde612bf65b0dffc8fd681a4ab98ac86957d16491400d661302", + "sha256:36362386b813fa6c9146da6149a001b7bd063dabc4d49522a1f7aa65b725c7ec", + "sha256:39807cbcbe406efca2a233884e169d056c35aa7e9f343d4e78665246a332f597", + "sha256:39cdf8d141d6d44e8d5a12a8569d5a227f645c87df4f92179bd06e2e2705e76b", + "sha256:3b2c3502603fab52d7619b882c25a6850b766ebd1b18de3df23b2f939360e1bd", + "sha256:3ccf2716add72f80714b9a63899b67fa711b654be3fcdd34fa391d2d274ce767", + "sha256:3fef4f844d2290ee0ba57addcec17eec9e3df73f10a2748485dfd6a3a188cc0f", + "sha256:4023e2efc35a30e66e938de5aef42b520c20e7eda7bb5fb12c35e5d09a4c43f6", + "sha256:4a3ee019a9befe84fa3e917a2dd378807e423d013377a884c1970a3c2792d293", + "sha256:4a8bf76e3182797c6b1afa5b822d1d5802ff30284abe4599e1247be4fd6b03be", + "sha256:4a992f702c9be9c72fa46f01ca6e18d131906a7180950958f766c2aa294d4b41", + "sha256:4c34d4f73ea738223a094d8e0ffd6d2c1a1b4c175da34d6b0de3d8d69bee6bcc", + "sha256:4cd1bccf99d3ef1ab6ba835308ad85be040e6a11b0977ef7ea8c8005f01a3c29", + "sha256:4ef80829117a8061f974b2fda8ec799717242353bff55f8a29411794d635d964", + "sha256:58837f9d221744d4c92d2cf7201c6acd19623b50c643b56992cbd2b745485d3d", + "sha256:5a8f91c64f390ecee09ff793319f30a0f32492e99f5dc1c72bc361f23ccd0a9a", + "sha256:5addc9d0209a9afca5fc070f93b726bf7003bd63a427f65ef797a931782e7edc", + "sha256:6239d4e2e0b52c8bd38c51b760cd870069f0bdf99700a62cd509d7a031749a55", + "sha256:66e2fe786ef28da2b28e222c89502b2af984858091675044d93cb50e6f46d7af", + "sha256:69c0771ca5653c7d4b65203cbfc5e66db9375f1078689459fe196fe08b7b4930", + "sha256:6ac965a998e1388e6ff2e9781f499ad1eaa41e962a40d11c7823c9952c77123e", + "sha256:6c56c3d47da04f921b73ff9415fbaa939f684d47293f071aa9cbb13c94afc17d", + "sha256:6f85739e80d13644b981a88f529d79c5bdf646b460ba190bffcaf6d57b2a9863", + "sha256:706e7b739fdd17cb89e1fbf712d9dc21311fc2333f6d435eac2d4ee81985098c", + "sha256:741ba2f511cc9626b7561a440f87d658aabb3d6b744a86a3c025f866b4d19e7f", + "sha256:7434a61b158be563c1362d9071358f8ab91b8d928728cd2882af060481244c9e", + "sha256:76066d7ff61ba6bf3cb5efe2428fc82aac91802844c022d849a1f0f53820502d", + "sha256:7979b834ec7a33aafae34a90aad9f914c41fd6eaa8474e66953f3f6f7cbd4368", + "sha256:7eece6fbd3eae4a92d7c748ae825cbc1ee41a89bb1c3db05b5578ed3cfcfd7cb", + "sha256:7ef1e014eed78ab650bef9a6a9cbe50b052c0aebe553fb2881e0453717573f52", + "sha256:81dce2ddc9f6e8f543d94b05d56e70d03a0774d32f6cca53e978dc01e4fc75b8", + "sha256:82fcc1f1cc3ff1ab8a57ba619b149b907072e750815c5ba63e7aa2e1163384a4", + "sha256:8d1f21af4c1539051049796a0f50aa342f9a27cde57318f2fc41ed50b0dbc4ac", + "sha256:90a79bce019c442604662d17bf69df99090e24cdc6ad95b18b6725c2988a490e", + "sha256:9145f092b5d1977ec8c0ab46e7b3381b2fd069957b9862a43bd383e5c01d18c2", + "sha256:91dc1d531f80c862441d7b66c4505cd6ea9d312f01fb2f4654f40c6fdf5cc37a", + "sha256:979c24cbefaf2420c4e377ecd1f165ea08cc3d1fbb44bdc51bccbbf7c66a2cb4", + "sha256:994645a46c6a740ee8ce8df7911d4aee458d9b1bc5639bc968226763d07f00fa", + "sha256:9b98b7681a9437262947f41c7fac567c7e1f6eddd94b0483596d320092004533", + "sha256:9c6b4d23c04831e3ab61717a707a5d763b300213db49ca680edf8bf13ab5d91b", + "sha256:9c6d0ced3c06d0f183b73d3c5920727268d2201aa0fe6d55c60d68c792ff3588", + "sha256:9fd88f373cb71e6b59b7fa597e47e518282455c2734fd4306a05ca219a1991b0", + "sha256:a8f4e49fc3ce020f65411432183e6775f24e02dff617281094ba6ab079ef0915", + "sha256:a9e908ef5889cda4de038892b9accc36d33d72fb3e12c747e2799a0e806ec841", + "sha256:ad08a69728ff3c79866d729b095872afe1e0557251da4abb2c5faff15a91d19a", + "sha256:adbccd17dcaff65704c856bd29951c58a1bd4b2b0f8ad6b826dbd543fe740988", + "sha256:b0c7d2f698e83f15228ba41c135501cfe7d5740181d5903e250e47f617eb4292", + "sha256:b3ab05a182c7937fb374f7e946f04fb23a0c0699c0450e9fb02ef567412d2fa3", + "sha256:b6104f9a46bd8743e4f738afef69b153c4b8b592d35ae46db07fc28ae3d5fb7c", + "sha256:ba7cd6dc4d585ea544c1412019921570ebd8a597fabf475acc4528210d7c4a6f", + "sha256:bc72c231f5449d86d6c7d9cc7cd819b6eb30134bb770b8cfdc0765e48ef9c420", + "sha256:bce8814b076f0ce5766dc87d5a056b0e9437b8e0cd351b9a6c4e1134a7dfbda9", + "sha256:be5e22bbb67924dea15039c3282fa4cc6cdfbe0cbbd1c0515f9223186fc2ec5f", + "sha256:be6b7b8d42d3090b6c80793524fa66c57ad7ee3fe9722b258aec6d0672543fd0", + "sha256:bfe50b61bab1b1ec260fa7cd91106fa9fece57e6beba05630afe27c71259c59b", + "sha256:bff507ae210371d4b1fe316d03433ac099f184d570a1a611e541923f78f05037", + "sha256:c148bec483cc4b421562b4bcedb8e28a3b84fcc8f0aa4418e10898f3c2c0eb9b", + "sha256:c15ad0aee158a15e17e0495e1e18741573d04eb6da06d8b84af726cfc1ed02ee", + "sha256:c2169b2dcabf4e608416f7f9468737583ce5f0a6e8677c4efbf795ce81109d7c", + "sha256:c55853684fe08d4897c37dfc5faeff70607a5f1806c8be148f1695be4a63414b", + "sha256:c65a3b5330b54103e7d21cac3f6bf3900d46f6d50138d73343d9e5b2900b2353", + "sha256:c7964c2183c3e6cce3f497e3a9f49d182e969f2dc3aeeadfa18945ff7bdd7051", + "sha256:cc3f1c053b73f20c7ad88b0d1d23be7e7b3901229ce89f5000a8399746a6e039", + "sha256:ce615c92d90df8373d9e13acddd154152645c0dc060871abf6bd43809673d20a", + "sha256:d29338556a59423d9ff7b6eb0cb89ead2b0875e08fe522f3e068b955c3e7b59b", + "sha256:d8a993c0a0ffd5f2d3bda23d0cd75e7086736f8f8268de8a82fbc4bd0ac6791e", + "sha256:d9c727bbcf0065cbb20f39d2b4f932f8fa1631c3e01fcedc979bd4f51fe051c5", + "sha256:dac37cf08fcf2094159922edc7a2784cfcc5c70f8354469f79ed085f0328ebdf", + "sha256:dd829712de97753367153ed84f2de752b86cd1f7a88b55a3a775eb52eafe8a94", + "sha256:e54ddd0bb8fb626aa1f9ba7b36629564544954fff9669b15da3610c22b9a0991", + "sha256:e77c90ab5997e85901da85131fd36acd0ed2221368199b65f0d11bca44549711", + "sha256:ebedc192abbc7fd13c5ee800e83a6df252bec691eb2c4bedc9f8b2e2903f5e2a", + "sha256:ef71561f82a89af6cfcbee47f0fabfdb6e63788a9258e913955d89fdd96902ab", + "sha256:f0a47efb1dbef13af9c9a54a94a0b814902e547b7f21acb29434504d18f36e3a", + "sha256:f4f2ca6df64cbdd27f27b34f35adb640b5d2d77264228554e68deda54456eb11", + "sha256:fb02e4257376ae25c6dd95a5aec377f9b18c09be6ebdefa7ad209b9137b73d48" ], - "markers": "python_version >= '3.6'", - "version": "==2022.10.31" + "markers": "python_version >= '3.7'", + "version": "==2023.10.3" }, "requests": { "hashes": [ - "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983", - "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349" + "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", + "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" ], - "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==2.28.1" + "markers": "python_version >= '3.7'", + "version": "==2.31.0" }, "rlp": { "hashes": [ @@ -1455,6 +1537,111 @@ ], "version": "==3.0.0" }, + "rpds-py": { + "hashes": [ + "sha256:023574366002bf1bd751ebaf3e580aef4a468b3d3c216d2f3f7e16fdabd885ed", + "sha256:031f76fc87644a234883b51145e43985aa2d0c19b063e91d44379cd2786144f8", + "sha256:052a832078943d2b2627aea0d19381f607fe331cc0eb5df01991268253af8417", + "sha256:0699ab6b8c98df998c3eacf51a3b25864ca93dab157abe358af46dc95ecd9801", + "sha256:0713631d6e2d6c316c2f7b9320a34f44abb644fc487b77161d1724d883662e31", + "sha256:0774a46b38e70fdde0c6ded8d6d73115a7c39d7839a164cc833f170bbf539116", + "sha256:0898173249141ee99ffcd45e3829abe7bcee47d941af7434ccbf97717df020e5", + "sha256:09586f51a215d17efdb3a5f090d7cbf1633b7f3708f60a044757a5d48a83b393", + "sha256:102eac53bb0bf0f9a275b438e6cf6904904908562a1463a6fc3323cf47d7a532", + "sha256:10f32b53f424fc75ff7b713b2edb286fdbfc94bf16317890260a81c2c00385dc", + "sha256:150eec465dbc9cbca943c8e557a21afdcf9bab8aaabf386c44b794c2f94143d2", + "sha256:1d7360573f1e046cb3b0dceeb8864025aa78d98be4bb69f067ec1c40a9e2d9df", + "sha256:1f36a9d751f86455dc5278517e8b65580eeee37d61606183897f122c9e51cef3", + "sha256:24656dc36f866c33856baa3ab309da0b6a60f37d25d14be916bd3e79d9f3afcf", + "sha256:25860ed5c4e7f5e10c496ea78af46ae8d8468e0be745bd233bab9ca99bfd2647", + "sha256:26857f0f44f0e791f4a266595a7a09d21f6b589580ee0585f330aaccccb836e3", + "sha256:2bb2e4826be25e72013916eecd3d30f66fd076110de09f0e750163b416500721", + "sha256:2f6da6d842195fddc1cd34c3da8a40f6e99e4a113918faa5e60bf132f917c247", + "sha256:30adb75ecd7c2a52f5e76af50644b3e0b5ba036321c390b8e7ec1bb2a16dd43c", + "sha256:3339eca941568ed52d9ad0f1b8eb9fe0958fa245381747cecf2e9a78a5539c42", + "sha256:34ad87a831940521d462ac11f1774edf867c34172010f5390b2f06b85dcc6014", + "sha256:3777cc9dea0e6c464e4b24760664bd8831738cc582c1d8aacf1c3f546bef3f65", + "sha256:3953c6926a63f8ea5514644b7afb42659b505ece4183fdaaa8f61d978754349e", + "sha256:3c4eff26eddac49d52697a98ea01b0246e44ca82ab09354e94aae8823e8bda02", + "sha256:40578a6469e5d1df71b006936ce95804edb5df47b520c69cf5af264d462f2cbb", + "sha256:40f93086eef235623aa14dbddef1b9fb4b22b99454cb39a8d2e04c994fb9868c", + "sha256:4134aa2342f9b2ab6c33d5c172e40f9ef802c61bb9ca30d21782f6e035ed0043", + "sha256:442626328600bde1d09dc3bb00434f5374948838ce75c41a52152615689f9403", + "sha256:4a5ee600477b918ab345209eddafde9f91c0acd931f3776369585a1c55b04c57", + "sha256:4ce5a708d65a8dbf3748d2474b580d606b1b9f91b5c6ab2a316e0b0cf7a4ba50", + "sha256:516a611a2de12fbea70c78271e558f725c660ce38e0006f75139ba337d56b1f6", + "sha256:52c215eb46307c25f9fd2771cac8135d14b11a92ae48d17968eda5aa9aaf5071", + "sha256:53c43e10d398e365da2d4cc0bcaf0854b79b4c50ee9689652cdc72948e86f487", + "sha256:5752b761902cd15073a527b51de76bbae63d938dc7c5c4ad1e7d8df10e765138", + "sha256:5e8a78bd4879bff82daef48c14d5d4057f6856149094848c3ed0ecaf49f5aec2", + "sha256:5ed505ec6305abd2c2c9586a7b04fbd4baf42d4d684a9c12ec6110deefe2a063", + "sha256:5ee97c683eaface61d38ec9a489e353d36444cdebb128a27fe486a291647aff6", + "sha256:61fa268da6e2e1cd350739bb61011121fa550aa2545762e3dc02ea177ee4de35", + "sha256:64ccc28683666672d7c166ed465c09cee36e306c156e787acef3c0c62f90da5a", + "sha256:66414dafe4326bca200e165c2e789976cab2587ec71beb80f59f4796b786a238", + "sha256:68fe9199184c18d997d2e4293b34327c0009a78599ce703e15cd9a0f47349bba", + "sha256:6a555ae3d2e61118a9d3e549737bb4a56ff0cec88a22bd1dfcad5b4e04759175", + "sha256:6bdc11f9623870d75692cc33c59804b5a18d7b8a4b79ef0b00b773a27397d1f6", + "sha256:6cf4393c7b41abbf07c88eb83e8af5013606b1cdb7f6bc96b1b3536b53a574b8", + "sha256:6eef672de005736a6efd565577101277db6057f65640a813de6c2707dc69f396", + "sha256:734c41f9f57cc28658d98270d3436dba65bed0cfc730d115b290e970150c540d", + "sha256:73e0a78a9b843b8c2128028864901f55190401ba38aae685350cf69b98d9f7c9", + "sha256:775049dfa63fb58293990fc59473e659fcafd953bba1d00fc5f0631a8fd61977", + "sha256:7854a207ef77319ec457c1eb79c361b48807d252d94348305db4f4b62f40f7f3", + "sha256:78ca33811e1d95cac8c2e49cb86c0fb71f4d8409d8cbea0cb495b6dbddb30a55", + "sha256:79edd779cfc46b2e15b0830eecd8b4b93f1a96649bcb502453df471a54ce7977", + "sha256:7bf347b495b197992efc81a7408e9a83b931b2f056728529956a4d0858608b80", + "sha256:7fde6d0e00b2fd0dbbb40c0eeec463ef147819f23725eda58105ba9ca48744f4", + "sha256:81de24a1c51cfb32e1fbf018ab0bdbc79c04c035986526f76c33e3f9e0f3356c", + "sha256:879fb24304ead6b62dbe5034e7b644b71def53c70e19363f3c3be2705c17a3b4", + "sha256:8e7f2219cb72474571974d29a191714d822e58be1eb171f229732bc6fdedf0ac", + "sha256:9164ec8010327ab9af931d7ccd12ab8d8b5dc2f4c6a16cbdd9d087861eaaefa1", + "sha256:945eb4b6bb8144909b203a88a35e0a03d22b57aefb06c9b26c6e16d72e5eb0f0", + "sha256:99a57006b4ec39dbfb3ed67e5b27192792ffb0553206a107e4aadb39c5004cd5", + "sha256:9e9184fa6c52a74a5521e3e87badbf9692549c0fcced47443585876fcc47e469", + "sha256:9ff93d3aedef11f9c4540cf347f8bb135dd9323a2fc705633d83210d464c579d", + "sha256:a360cfd0881d36c6dc271992ce1eda65dba5e9368575663de993eeb4523d895f", + "sha256:a5d7ed104d158c0042a6a73799cf0eb576dfd5fc1ace9c47996e52320c37cb7c", + "sha256:ac17044876e64a8ea20ab132080ddc73b895b4abe9976e263b0e30ee5be7b9c2", + "sha256:ad857f42831e5b8d41a32437f88d86ead6c191455a3499c4b6d15e007936d4cf", + "sha256:b2039f8d545f20c4e52713eea51a275e62153ee96c8035a32b2abb772b6fc9e5", + "sha256:b455492cab07107bfe8711e20cd920cc96003e0da3c1f91297235b1603d2aca7", + "sha256:b4a9fe992887ac68256c930a2011255bae0bf5ec837475bc6f7edd7c8dfa254e", + "sha256:b5a53f5998b4bbff1cb2e967e66ab2addc67326a274567697379dd1e326bded7", + "sha256:b788276a3c114e9f51e257f2a6f544c32c02dab4aa7a5816b96444e3f9ffc336", + "sha256:bddd4f91eede9ca5275e70479ed3656e76c8cdaaa1b354e544cbcf94c6fc8ac4", + "sha256:c0503c5b681566e8b722fe8c4c47cce5c7a51f6935d5c7012c4aefe952a35eed", + "sha256:c1b3cd23d905589cb205710b3988fc8f46d4a198cf12862887b09d7aaa6bf9b9", + "sha256:c48f3fbc3e92c7dd6681a258d22f23adc2eb183c8cb1557d2fcc5a024e80b094", + "sha256:c63c3ef43f0b3fb00571cff6c3967cc261c0ebd14a0a134a12e83bdb8f49f21f", + "sha256:c6c45a2d2b68c51fe3d9352733fe048291e483376c94f7723458cfd7b473136b", + "sha256:caa1afc70a02645809c744eefb7d6ee8fef7e2fad170ffdeacca267fd2674f13", + "sha256:cc435d059f926fdc5b05822b1be4ff2a3a040f3ae0a7bbbe672babb468944722", + "sha256:cf693eb4a08eccc1a1b636e4392322582db2a47470d52e824b25eca7a3977b53", + "sha256:cf71343646756a072b85f228d35b1d7407da1669a3de3cf47f8bbafe0c8183a4", + "sha256:d08f63561c8a695afec4975fae445245386d645e3e446e6f260e81663bfd2e38", + "sha256:d29ddefeab1791e3c751e0189d5f4b3dbc0bbe033b06e9c333dca1f99e1d523e", + "sha256:d7f5e15c953ace2e8dde9824bdab4bec50adb91a5663df08d7d994240ae6fa31", + "sha256:d858532212f0650be12b6042ff4378dc2efbb7792a286bee4489eaa7ba010586", + "sha256:d97dd44683802000277bbf142fd9f6b271746b4846d0acaf0cefa6b2eaf2a7ad", + "sha256:dcdc88b6b01015da066da3fb76545e8bb9a6880a5ebf89e0f0b2e3ca557b3ab7", + "sha256:dd609fafdcdde6e67a139898196698af37438b035b25ad63704fd9097d9a3482", + "sha256:defa2c0c68734f4a82028c26bcc85e6b92cced99866af118cd6a89b734ad8e0d", + "sha256:e22260a4741a0e7a206e175232867b48a16e0401ef5bce3c67ca5b9705879066", + "sha256:e225a6a14ecf44499aadea165299092ab0cba918bb9ccd9304eab1138844490b", + "sha256:e3df0bc35e746cce42579826b89579d13fd27c3d5319a6afca9893a9b784ff1b", + "sha256:e6fcc026a3f27c1282c7ed24b7fcac82cdd70a0e84cc848c0841a3ab1e3dea2d", + "sha256:e782379c2028a3611285a795b89b99a52722946d19fc06f002f8b53e3ea26ea9", + "sha256:e8cdd52744f680346ff8c1ecdad5f4d11117e1724d4f4e1874f3a67598821069", + "sha256:e9616f5bd2595f7f4a04b67039d890348ab826e943a9bfdbe4938d0eba606971", + "sha256:e98c4c07ee4c4b3acf787e91b27688409d918212dfd34c872201273fdd5a0e18", + "sha256:ebdab79f42c5961682654b851f3f0fc68e6cc7cd8727c2ac4ffff955154123c1", + "sha256:f0f17f2ce0f3529177a5fff5525204fad7b43dd437d017dd0317f2746773443d", + "sha256:f4e56860a5af16a0fcfa070a0a20c42fbb2012eed1eb5ceeddcc7f8079214281" + ], + "markers": "python_version >= '3.8'", + "version": "==0.10.6" + }, "semantic-version": { "hashes": [ "sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c", @@ -1465,17 +1652,26 @@ }, "service-identity": { "hashes": [ - "sha256:6e6c6086ca271dc11b033d17c3a8bea9f24ebff920c587da090afc9519419d34", - "sha256:f0b0caac3d40627c3c04d7a51b6e06721857a0e10a8775f2d1d7e72901b3a7db" + "sha256:87415a691d52fcad954a500cb81f424d0273f8e7e3ee7d766128f4575080f383", + "sha256:ecb33cd96307755041e978ab14f8b14e13b40f1fbd525a4dc78f46d2b986431d" ], - "version": "==21.1.0" + "markers": "python_version >= '3.8'", + "version": "==23.1.0" + }, + "setuptools": { + "hashes": [ + "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87", + "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a" + ], + "markers": "python_version >= '3.8'", + "version": "==68.2.2" }, "six": { "hashes": [ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.16.0" }, "snaptime": { @@ -1499,6 +1695,68 @@ "markers": "python_version >= '3.7'", "version": "==0.9.0" }, + "time-machine": { + "hashes": [ + "sha256:02b33a8c19768c94f7ffd6aa6f9f64818e88afce23250016b28583929d20fb12", + "sha256:0c9829b2edfcf6b5d72a6ff330d4380f36a937088314c675531b43d3423dd8af", + "sha256:0cc116056a8a2a917a4eec85661dfadd411e0d8faae604ef6a0e19fe5cd57ef1", + "sha256:0db97f92be3efe0ac62fd3f933c91a78438cef13f283b6dfc2ee11123bfd7d8a", + "sha256:12eed2e9171c85b703d75c985dab2ecad4fe7025b7d2f842596fce1576238ece", + "sha256:1812e48c6c58707db9988445a219a908a710ea065b2cc808d9a50636291f27d4", + "sha256:19a3b10161c91ca8e0fd79348665cca711fd2eac6ce336ff9e6b447783817f93", + "sha256:1a22be4df364f49a507af4ac9ea38108a0105f39da3f9c60dce62d6c6ea4ccdc", + "sha256:1ac8ff145c63cd0dcfd9590fe694b5269aacbc130298dc7209b095d101f8cdde", + "sha256:20205422fcf2caf9a7488394587df86e5b54fdb315c1152094fbb63eec4e9304", + "sha256:21bef5854d49b62e2c33848b5c3e8acf22a3b46af803ef6ff19529949cb7cf9f", + "sha256:2bd4169b808745d219a69094b3cb86006938d45e7293249694e6b7366225a186", + "sha256:2dc76ee55a7d915a55960a726ceaca7b9097f67e4b4e681ef89871bcf98f00be", + "sha256:32b71e50b07f86916ac04bd1eefc2bd2c93706b81393748b08394509ee6585dc", + "sha256:34dcdbbd25c1e124e17fe58050452960fd16a11f9d3476aaa87260e28ecca0fd", + "sha256:3a7a0a49ce50d9c306c4343a7d6a3baa11092d4399a4af4355c615ccc321a9d3", + "sha256:3c87856105dcb25b5bbff031d99f06ef4d1c8380d096222e1bc63b496b5258e6", + "sha256:42ef5349135626ad6cd889a0a81400137e5c6928502b0817ea9e90bb10702000", + "sha256:4ca20f85a973a4ca8b00cf466cd72c27ccc72372549b138fd48d7e70e5a190ab", + "sha256:4e3a2611f8788608ebbcb060a5e36b45911bc3b8adc421b1dc29d2c81786ce4d", + "sha256:4f2ae8d0e359b216b695f1e7e7256f208c390db0480601a439c5dd1e1e4e16ce", + "sha256:5aee23cd046abf9caeddc982113e81ba9097a01f3972e9560f5ed64e3495f66d", + "sha256:5c6245db573863b335d9ca64b3230f623caf0988594ae554c0c794e7f80e3e66", + "sha256:5f87787d562e42bf1006a87eb689814105b98c4d5545874a281280d0f8b9a2d9", + "sha256:5fe3fda5fa73fec74278912e438fce1612a79c36fd0cc323ea3dc2d5ce629f31", + "sha256:62fd14a80b8b71726e07018628daaee0a2e00937625083f96f69ed6b8e3304c0", + "sha256:66fb3877014dca0b9286b0f06fa74062357bd23f2d9d102d10e31e0f8fa9b324", + "sha256:679cbf9b15bfde1654cf48124128d3fbe52f821fa158a98fcee5fe7e05db1917", + "sha256:67fa45cd813821e4f5bec0ac0820869e8e37430b15509d3f5fad74ba34b53852", + "sha256:685d98593f13649ad5e7ce3e58efe689feca1badcf618ba397d3ab877ee59326", + "sha256:6c16d90a597a8c2d3ce22d6be2eb3e3f14786974c11b01886e51b3cf0d5edaf7", + "sha256:71acbc1febbe87532c7355eca3308c073d6e502ee4ce272b5028967847c8e063", + "sha256:7558622a62243be866a7e7c41da48eacd82c874b015ecf67d18ebf65ca3f7436", + "sha256:7693704c0f2f6b9beed912ff609781edf5fcf5d63aff30c92be4093e09d94b8e", + "sha256:88601de1da06c7cab3d5ed3d5c3801ef683366e769e829e96383fdab6ae2fe42", + "sha256:8d526cdcaca06a496877cfe61cc6608df2c3a6fce210e076761964ebac7f77cc", + "sha256:918f8389de29b4f41317d121f1150176fae2cdb5fa41f68b2aee0b9dc88df5c3", + "sha256:924377d398b1c48e519ad86a71903f9f36117f69e68242c99fb762a2465f5ad2", + "sha256:9f128db8997c3339f04f7f3946dd9bb2a83d15e0a40d35529774da1e9e501511", + "sha256:9fad549521c4c13bdb1e889b2855a86ec835780d534ffd8f091c2647863243be", + "sha256:a26bdf3462d5f12a4c1009fdbe54366c6ef22c7b6f6808705b51dedaaeba8296", + "sha256:ab04cf4e56e1ee65bee2adaa26a04695e92eb1ed1ccc65fbdafd0d114399595a", + "sha256:b0c8f24ae611a58782773af34dd356f1f26756272c04be2be7ea73b47e5da37d", + "sha256:bdfe4a7f033e6783c3e9a7f8d8fc0b115367330762e00a03ff35fedf663994f3", + "sha256:c23b2408e3adcedec84ea1131e238f0124a5bc0e491f60d1137ad7239b37c01a", + "sha256:ccbce292380ebf63fb9a52e6b03d91677f6a003e0c11f77473efe3913a75f289", + "sha256:cfef4ebfb4f055ce3ebc7b6c1c4d0dbfcffdca0e783ad8c6986c992915a57ed3", + "sha256:d4a2d3db2c3b8e519d5ef436cd405abd33542a7b7761fb05ef5a5f782a8ce0b1", + "sha256:dabb3b155819811b4602f7e9be936e2024e20dc99a90f103e36b45768badf9c3", + "sha256:de01f33aa53da37530ad97dcd17e9affa25a8df4ab822506bb08101bab0c2673", + "sha256:dec0ec2135a4e2a59623e40c31d6e8a8ae73305ade2634380e4263d815855750", + "sha256:e433827eccd6700a34a2ab28fd9361ff6e4d4923f718d2d1dac6d1dcd9d54da6", + "sha256:e58d82fe0e59d6e096ada3281d647a2e7420f7da5453b433b43880e1c2e8e0c5", + "sha256:e9935aff447f5400a2665ab10ed2da972591713080e1befe1bb8954e7c0c7806", + "sha256:e9a9d150e098be3daee5c9f10859ab1bd14a61abebaed86e6d71f7f18c05b9d7", + "sha256:f5fa9610f7e73fff42806a2ed8b06d862aa59ce4d178a52181771d6939c3e237" + ], + "markers": "implementation_name != 'pypy'", + "version": "==2.13.0" + }, "toolz": { "hashes": [ "sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f", @@ -1509,382 +1767,403 @@ }, "trie": { "hashes": [ - "sha256:8bfc6b82979b7caa6f020a89c9142c7522f017788240487d1c941b0ad82e7132", - "sha256:edef6b392f49f80be31c167236c6569aa07d7926138d5fe23d327d65d62b7201" + "sha256:1c7fa6f4a3088e083764cf4e32a07a69c672fcf15ad922e03f51158d64a855cf", + "sha256:c1a5fc17b37a75008a4517e4f297ad8026dce777eb0eed63ee6335c66d7437b7" ], - "markers": "python_version >= '3.6' and python_version < '4'", - "version": "==2.0.2" + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==2.1.1" }, "twisted": { "hashes": [ - "sha256:32acbd40a94f5f46e7b42c109bfae2b302250945561783a8b7a059048f2d4d31", - "sha256:86c55f712cc5ab6f6d64e02503352464f0400f66d4f079096d744080afcccbd0" + "sha256:3c73360add17336a622c0d811c2a2ce29866b6e59b1125fd6509b17252098a24", + "sha256:b8bdba145de120ffb36c20e6e071cce984e89fba798611ed0704216fb7f884cd" ], "markers": "python_full_version >= '3.7.1'", - "version": "==22.10.0" + "version": "==23.8.0" }, "txaio": { "hashes": [ - "sha256:2e4582b70f04b2345908254684a984206c0d9b50e3074a24a4c55aba21d24d01", - "sha256:41223af4a9d5726e645a8ee82480f413e5e300dd257db94bc38ae12ea48fb2e5" + "sha256:aaea42f8aad50e0ecfb976130ada140797e9dcb85fad2cf72b0f37f8cefcb490", + "sha256:f9a9216e976e5e3246dfd112ad7ad55ca915606b60b84a757ac769bd404ff704" ], - "markers": "python_version >= '3.6'", - "version": "==22.2.1" + "markers": "python_version >= '3.7'", + "version": "==23.1.1" }, "typing-extensions": { "hashes": [ - "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa", - "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e" + "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", + "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" ], - "markers": "python_version >= '3.7'", - "version": "==4.4.0" + "markers": "python_version >= '3.8'", + "version": "==4.8.0" }, "tzdata": { "hashes": [ - "sha256:04a680bdc5b15750c39c12a448885a51134a27ec9af83667663f0b3a1bf3f342", - "sha256:91f11db4503385928c15598c98573e3af07e7229181bee5375bd30f1695ddcae" + "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a", + "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda" ], - "markers": "python_version >= '3.6'", - "version": "==2022.6" + "markers": "python_version >= '2'", + "version": "==2023.3" }, "tzlocal": { "hashes": [ - "sha256:89885494684c929d9191c57aa27502afc87a579be5cdd3225c77c463ea043745", - "sha256:ee5842fa3a795f023514ac2d801c4a81d1743bbe642e3940143326b3a00addd7" + "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8", + "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e" ], - "markers": "python_version >= '3.6'", - "version": "==4.2" + "markers": "python_version >= '3.8'", + "version": "==5.2" }, "urllib3": { "hashes": [ - "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc", - "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==1.26.13" - }, - "varint": { - "hashes": [ - "sha256:a6ecc02377ac5ee9d65a6a8ad45c9ff1dac8ccee19400a5950fb51d594214ca5" + "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84", + "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e" ], - "version": "==1.0.2" + "markers": "python_version >= '3.7'", + "version": "==2.0.7" }, "watchdog": { "hashes": [ - "sha256:083171652584e1b8829581f965b9b7723ca5f9a2cd7e20271edf264cfd7c1412", - "sha256:117ffc6ec261639a0209a3252546b12800670d4bf5f84fbd355957a0595fe654", - "sha256:186f6c55abc5e03872ae14c2f294a153ec7292f807af99f57611acc8caa75306", - "sha256:195fc70c6e41237362ba720e9aaf394f8178bfc7fa68207f112d108edef1af33", - "sha256:226b3c6c468ce72051a4c15a4cc2ef317c32590d82ba0b330403cafd98a62cfd", - "sha256:247dcf1df956daa24828bfea5a138d0e7a7c98b1a47cf1fa5b0c3c16241fcbb7", - "sha256:255bb5758f7e89b1a13c05a5bceccec2219f8995a3a4c4d6968fe1de6a3b2892", - "sha256:43ce20ebb36a51f21fa376f76d1d4692452b2527ccd601950d69ed36b9e21609", - "sha256:4f4e1c4aa54fb86316a62a87b3378c025e228178d55481d30d857c6c438897d6", - "sha256:5952135968519e2447a01875a6f5fc8c03190b24d14ee52b0f4b1682259520b1", - "sha256:64a27aed691408a6abd83394b38503e8176f69031ca25d64131d8d640a307591", - "sha256:6b17d302850c8d412784d9246cfe8d7e3af6bcd45f958abb2d08a6f8bedf695d", - "sha256:70af927aa1613ded6a68089a9262a009fbdf819f46d09c1a908d4b36e1ba2b2d", - "sha256:7a833211f49143c3d336729b0020ffd1274078e94b0ae42e22f596999f50279c", - "sha256:8250546a98388cbc00c3ee3cc5cf96799b5a595270dfcfa855491a64b86ef8c3", - "sha256:97f9752208f5154e9e7b76acc8c4f5a58801b338de2af14e7e181ee3b28a5d39", - "sha256:9f05a5f7c12452f6a27203f76779ae3f46fa30f1dd833037ea8cbc2887c60213", - "sha256:a735a990a1095f75ca4f36ea2ef2752c99e6ee997c46b0de507ba40a09bf7330", - "sha256:ad576a565260d8f99d97f2e64b0f97a48228317095908568a9d5c786c829d428", - "sha256:b530ae007a5f5d50b7fbba96634c7ee21abec70dc3e7f0233339c81943848dc1", - "sha256:bfc4d351e6348d6ec51df007432e6fe80adb53fd41183716017026af03427846", - "sha256:d3dda00aca282b26194bdd0adec21e4c21e916956d972369359ba63ade616153", - "sha256:d9820fe47c20c13e3c9dd544d3706a2a26c02b2b43c993b62fcd8011bcc0adb3", - "sha256:ed80a1628cee19f5cfc6bb74e173f1b4189eb532e705e2a13e3250312a62e0c9", - "sha256:ee3e38a6cc050a8830089f79cbec8a3878ec2fe5160cdb2dc8ccb6def8552658" + "sha256:0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a", + "sha256:13bbbb462ee42ec3c5723e1205be8ced776f05b100e4737518c67c8325cf6100", + "sha256:233b5817932685d39a7896b1090353fc8efc1ef99c9c054e46c8002561252fb8", + "sha256:25f70b4aa53bd743729c7475d7ec41093a580528b100e9a8c5b5efe8899592fc", + "sha256:2b57a1e730af3156d13b7fdddfc23dea6487fceca29fc75c5a868beed29177ae", + "sha256:336adfc6f5cc4e037d52db31194f7581ff744b67382eb6021c868322e32eef41", + "sha256:3aa7f6a12e831ddfe78cdd4f8996af9cf334fd6346531b16cec61c3b3c0d8da0", + "sha256:3ed7c71a9dccfe838c2f0b6314ed0d9b22e77d268c67e015450a29036a81f60f", + "sha256:4c9956d27be0bb08fc5f30d9d0179a855436e655f046d288e2bcc11adfae893c", + "sha256:4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9", + "sha256:4f94069eb16657d2c6faada4624c39464f65c05606af50bb7902e036e3219be3", + "sha256:5113334cf8cf0ac8cd45e1f8309a603291b614191c9add34d33075727a967709", + "sha256:51f90f73b4697bac9c9a78394c3acbbd331ccd3655c11be1a15ae6fe289a8c83", + "sha256:5d9f3a10e02d7371cd929b5d8f11e87d4bad890212ed3901f9b4d68767bee759", + "sha256:7ade88d0d778b1b222adebcc0927428f883db07017618a5e684fd03b83342bd9", + "sha256:7c5f84b5194c24dd573fa6472685b2a27cc5a17fe5f7b6fd40345378ca6812e3", + "sha256:7e447d172af52ad204d19982739aa2346245cc5ba6f579d16dac4bfec226d2e7", + "sha256:8ae9cda41fa114e28faf86cb137d751a17ffd0316d1c34ccf2235e8a84365c7f", + "sha256:8f3ceecd20d71067c7fd4c9e832d4e22584318983cabc013dbf3f70ea95de346", + "sha256:9fac43a7466eb73e64a9940ac9ed6369baa39b3bf221ae23493a9ec4d0022674", + "sha256:a70a8dcde91be523c35b2bf96196edc5730edb347e374c7de7cd20c43ed95397", + "sha256:adfdeab2da79ea2f76f87eb42a3ab1966a5313e5a69a0213a3cc06ef692b0e96", + "sha256:ba07e92756c97e3aca0912b5cbc4e5ad802f4557212788e72a72a47ff376950d", + "sha256:c07253088265c363d1ddf4b3cdb808d59a0468ecd017770ed716991620b8f77a", + "sha256:c9d8c8ec7efb887333cf71e328e39cffbf771d8f8f95d308ea4125bf5f90ba64", + "sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44", + "sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33" ], - "markers": "python_version >= '3.6'", - "version": "==2.1.9" + "markers": "python_version >= '3.7'", + "version": "==3.0.0" }, "web3": { "hashes": [ - "sha256:1674301b261da529ee6537b970d1a01a1e6d22328b246c16636263f96c2b6df2", - "sha256:df74801cb4dff45b175227feb3126ac77480c801ac6412d471520abecf2c8c00" + "sha256:0d39f58cbb0c652b45e711f01e01ec655117b47ba4eefd1f9550c52d205afa8c", + "sha256:d301d7120922d5b9e5c9535ef9780012ea25ea4011c2b177490ba7d3ef886b92" ], "markers": "python_full_version >= '3.7.2'", - "version": "==6.0.0b6" + "version": "==6.11.1" }, "websockets": { "hashes": [ - "sha256:00213676a2e46b6ebf6045bc11d0f529d9120baa6f58d122b4021ad92adabd41", - "sha256:00c870522cdb69cd625b93f002961ffb0c095394f06ba8c48f17eef7c1541f96", - "sha256:0154f7691e4fe6c2b2bc275b5701e8b158dae92a1ab229e2b940efe11905dff4", - "sha256:05a7233089f8bd355e8cbe127c2e8ca0b4ea55467861906b80d2ebc7db4d6b72", - "sha256:09a1814bb15eff7069e51fed0826df0bc0702652b5cb8f87697d469d79c23576", - "sha256:0cff816f51fb33c26d6e2b16b5c7d48eaa31dae5488ace6aae468b361f422b63", - "sha256:185929b4808b36a79c65b7865783b87b6841e852ef5407a2fb0c03381092fa3b", - "sha256:2fc8709c00704194213d45e455adc106ff9e87658297f72d544220e32029cd3d", - "sha256:33d69ca7612f0ddff3316b0c7b33ca180d464ecac2d115805c044bf0a3b0d032", - "sha256:389f8dbb5c489e305fb113ca1b6bdcdaa130923f77485db5b189de343a179393", - "sha256:38ea7b82bfcae927eeffc55d2ffa31665dc7fec7b8dc654506b8e5a518eb4d50", - "sha256:3d3cac3e32b2c8414f4f87c1b2ab686fa6284a980ba283617404377cd448f631", - "sha256:40e826de3085721dabc7cf9bfd41682dadc02286d8cf149b3ad05bff89311e4f", - "sha256:4239b6027e3d66a89446908ff3027d2737afc1a375f8fd3eea630a4842ec9a0c", - "sha256:45ec8e75b7dbc9539cbfafa570742fe4f676eb8b0d3694b67dabe2f2ceed8aa6", - "sha256:47a2964021f2110116cc1125b3e6d87ab5ad16dea161949e7244ec583b905bb4", - "sha256:48c08473563323f9c9debac781ecf66f94ad5a3680a38fe84dee5388cf5acaf6", - "sha256:4c6d2264f485f0b53adf22697ac11e261ce84805c232ed5dbe6b1bcb84b00ff0", - "sha256:4f72e5cd0f18f262f5da20efa9e241699e0cf3a766317a17392550c9ad7b37d8", - "sha256:56029457f219ade1f2fc12a6504ea61e14ee227a815531f9738e41203a429112", - "sha256:5c1289596042fad2cdceb05e1ebf7aadf9995c928e0da2b7a4e99494953b1b94", - "sha256:62e627f6b6d4aed919a2052efc408da7a545c606268d5ab5bfab4432734b82b4", - "sha256:74de2b894b47f1d21cbd0b37a5e2b2392ad95d17ae983e64727e18eb281fe7cb", - "sha256:7c584f366f46ba667cfa66020344886cf47088e79c9b9d39c84ce9ea98aaa331", - "sha256:7d27a7e34c313b3a7f91adcd05134315002aaf8540d7b4f90336beafaea6217c", - "sha256:7d3f0b61c45c3fa9a349cf484962c559a8a1d80dae6977276df8fd1fa5e3cb8c", - "sha256:82ff5e1cae4e855147fd57a2863376ed7454134c2bf49ec604dfe71e446e2193", - "sha256:84bc2a7d075f32f6ed98652db3a680a17a4edb21ca7f80fe42e38753a58ee02b", - "sha256:884be66c76a444c59f801ac13f40c76f176f1bfa815ef5b8ed44321e74f1600b", - "sha256:8a5cc00546e0a701da4639aa0bbcb0ae2bb678c87f46da01ac2d789e1f2d2038", - "sha256:8dc96f64ae43dde92530775e9cb169979f414dcf5cff670455d81a6823b42089", - "sha256:8f38706e0b15d3c20ef6259fd4bc1700cd133b06c3c1bb108ffe3f8947be15fa", - "sha256:90fcf8929836d4a0e964d799a58823547df5a5e9afa83081761630553be731f9", - "sha256:931c039af54fc195fe6ad536fde4b0de04da9d5916e78e55405436348cfb0e56", - "sha256:932af322458da7e4e35df32f050389e13d3d96b09d274b22a7aa1808f292fee4", - "sha256:942de28af58f352a6f588bc72490ae0f4ccd6dfc2bd3de5945b882a078e4e179", - "sha256:9bc42e8402dc5e9905fb8b9649f57efcb2056693b7e88faa8fb029256ba9c68c", - "sha256:a7a240d7a74bf8d5cb3bfe6be7f21697a28ec4b1a437607bae08ac7acf5b4882", - "sha256:a9f9a735deaf9a0cadc2d8c50d1a5bcdbae8b6e539c6e08237bc4082d7c13f28", - "sha256:ae5e95cfb53ab1da62185e23b3130e11d64431179debac6dc3c6acf08760e9b1", - "sha256:b029fb2032ae4724d8ae8d4f6b363f2cc39e4c7b12454df8df7f0f563ed3e61a", - "sha256:b0d15c968ea7a65211e084f523151dbf8ae44634de03c801b8bd070b74e85033", - "sha256:b343f521b047493dc4022dd338fc6db9d9282658862756b4f6fd0e996c1380e1", - "sha256:b627c266f295de9dea86bd1112ed3d5fafb69a348af30a2422e16590a8ecba13", - "sha256:b9968694c5f467bf67ef97ae7ad4d56d14be2751000c1207d31bf3bb8860bae8", - "sha256:ba089c499e1f4155d2a3c2a05d2878a3428cf321c848f2b5a45ce55f0d7d310c", - "sha256:bbccd847aa0c3a69b5f691a84d2341a4f8a629c6922558f2a70611305f902d74", - "sha256:bc0b82d728fe21a0d03e65f81980abbbcb13b5387f733a1a870672c5be26edab", - "sha256:c57e4c1349fbe0e446c9fa7b19ed2f8a4417233b6984277cce392819123142d3", - "sha256:c94ae4faf2d09f7c81847c63843f84fe47bf6253c9d60b20f25edfd30fb12588", - "sha256:c9b27d6c1c6cd53dc93614967e9ce00ae7f864a2d9f99fe5ed86706e1ecbf485", - "sha256:d210abe51b5da0ffdbf7b43eed0cfdff8a55a1ab17abbec4301c9ff077dd0342", - "sha256:d58804e996d7d2307173d56c297cf7bc132c52df27a3efaac5e8d43e36c21c48", - "sha256:d6a4162139374a49eb18ef5b2f4da1dd95c994588f5033d64e0bbfda4b6b6fcf", - "sha256:da39dd03d130162deb63da51f6e66ed73032ae62e74aaccc4236e30edccddbb0", - "sha256:db3c336f9eda2532ec0fd8ea49fef7a8df8f6c804cdf4f39e5c5c0d4a4ad9a7a", - "sha256:dd500e0a5e11969cdd3320935ca2ff1e936f2358f9c2e61f100a1660933320ea", - "sha256:dd9becd5fe29773d140d68d607d66a38f60e31b86df75332703757ee645b6faf", - "sha256:e0cb5cc6ece6ffa75baccfd5c02cffe776f3f5c8bf486811f9d3ea3453676ce8", - "sha256:e23173580d740bf8822fd0379e4bf30aa1d5a92a4f252d34e893070c081050df", - "sha256:e3a686ecb4aa0d64ae60c9c9f1a7d5d46cab9bfb5d91a2d303d00e2cd4c4c5cc", - "sha256:e789376b52c295c4946403bd0efecf27ab98f05319df4583d3c48e43c7342c2f", - "sha256:edc344de4dac1d89300a053ac973299e82d3db56330f3494905643bb68801269", - "sha256:eef610b23933c54d5d921c92578ae5f89813438fded840c2e9809d378dc765d3", - "sha256:f2c38d588887a609191d30e902df2a32711f708abfd85d318ca9b367258cfd0c", - "sha256:f55b5905705725af31ccef50e55391621532cd64fbf0bc6f4bac935f0fccec46", - "sha256:f5fc088b7a32f244c519a048c170f14cf2251b849ef0e20cbbb0fdf0fdaf556f", - "sha256:fe10ddc59b304cb19a1bdf5bd0a7719cbbc9fbdd57ac80ed436b709fcf889106", - "sha256:ff64a1d38d156d429404aaa84b27305e957fd10c30e5880d1765c9480bea490f" - ], - "markers": "python_version >= '3.7'", - "version": "==10.4" + "sha256:00700340c6c7ab788f176d118775202aadea7602c5cc6be6ae127761c16d6b0b", + "sha256:0bee75f400895aef54157b36ed6d3b308fcab62e5260703add87f44cee9c82a6", + "sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df", + "sha256:12743ab88ab2af1d17dd4acb4645677cb7063ef4db93abffbf164218a5d54c6b", + "sha256:1a9d160fd080c6285e202327aba140fc9a0d910b09e423afff4ae5cbbf1c7205", + "sha256:1bf386089178ea69d720f8db6199a0504a406209a0fc23e603b27b300fdd6892", + "sha256:1df2fbd2c8a98d38a66f5238484405b8d1d16f929bb7a33ed73e4801222a6f53", + "sha256:1e4b3f8ea6a9cfa8be8484c9221ec0257508e3a1ec43c36acdefb2a9c3b00aa2", + "sha256:1f38a7b376117ef7aff996e737583172bdf535932c9ca021746573bce40165ed", + "sha256:23509452b3bc38e3a057382c2e941d5ac2e01e251acce7adc74011d7d8de434c", + "sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd", + "sha256:25eb766c8ad27da0f79420b2af4b85d29914ba0edf69f547cc4f06ca6f1d403b", + "sha256:27a5e9964ef509016759f2ef3f2c1e13f403725a5e6a1775555994966a66e931", + "sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30", + "sha256:2cb388a5bfb56df4d9a406783b7f9dbefb888c09b71629351cc6b036e9259370", + "sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be", + "sha256:2e5fc14ec6ea568200ea4ef46545073da81900a2b67b3e666f04adf53ad452ec", + "sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf", + "sha256:3c6cc1360c10c17463aadd29dd3af332d4a1adaa8796f6b0e9f9df1fdb0bad62", + "sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b", + "sha256:3e3aa8c468af01d70332a382350ee95f6986db479ce7af14d5e81ec52aa2b402", + "sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f", + "sha256:423fc1ed29f7512fceb727e2d2aecb952c46aa34895e9ed96071821309951123", + "sha256:46e71dbbd12850224243f5d2aeec90f0aaa0f2dde5aeeb8fc8df21e04d99eff9", + "sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603", + "sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45", + "sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558", + "sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4", + "sha256:5f6ffe2c6598f7f7207eef9a1228b6f5c818f9f4d53ee920aacd35cec8110438", + "sha256:604428d1b87edbf02b233e2c207d7d528460fa978f9e391bd8aaf9c8311de137", + "sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480", + "sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447", + "sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8", + "sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04", + "sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c", + "sha256:7b645f491f3c48d3f8a00d1fce07445fab7347fec54a3e65f0725d730d5b99cb", + "sha256:7fa3d25e81bfe6a89718e9791128398a50dec6d57faf23770787ff441d851967", + "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b", + "sha256:8572132c7be52632201a35f5e08348137f658e5ffd21f51f94572ca6c05ea81d", + "sha256:87b4aafed34653e465eb77b7c93ef058516cb5acf3eb21e42f33928616172def", + "sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c", + "sha256:9893d1aa45a7f8b3bc4510f6ccf8db8c3b62120917af15e3de247f0780294b92", + "sha256:9edf3fc590cc2ec20dc9d7a45108b5bbaf21c0d89f9fd3fd1685e223771dc0b2", + "sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113", + "sha256:a02413bc474feda2849c59ed2dfb2cddb4cd3d2f03a2fedec51d6e959d9b608b", + "sha256:a1d9697f3337a89691e3bd8dc56dea45a6f6d975f92e7d5f773bc715c15dde28", + "sha256:a571f035a47212288e3b3519944f6bf4ac7bc7553243e41eac50dd48552b6df7", + "sha256:ab3d732ad50a4fbd04a4490ef08acd0517b6ae6b77eb967251f4c263011a990d", + "sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f", + "sha256:b067cb952ce8bf40115f6c19f478dc71c5e719b7fbaa511359795dfd9d1a6468", + "sha256:b2ee7288b85959797970114deae81ab41b731f19ebcd3bd499ae9ca0e3f1d2c8", + "sha256:b81f90dcc6c85a9b7f29873beb56c94c85d6f0dac2ea8b60d995bd18bf3e2aae", + "sha256:ba0cab91b3956dfa9f512147860783a1829a8d905ee218a9837c18f683239611", + "sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d", + "sha256:bbe6013f9f791944ed31ca08b077e26249309639313fff132bfbf3ba105673b9", + "sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca", + "sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f", + "sha256:c3181df4583c4d3994d31fb235dc681d2aaad744fbdbf94c4802485ececdecf2", + "sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077", + "sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2", + "sha256:cbe83a6bbdf207ff0541de01e11904827540aa069293696dd528a6640bd6a5f6", + "sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374", + "sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc", + "sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e", + "sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53", + "sha256:e469d01137942849cff40517c97a30a93ae79917752b34029f0ec72df6b46399", + "sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547", + "sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3", + "sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870", + "sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5", + "sha256:fc4e7fa5414512b481a2483775a8e8be7803a35b30ca805afa4998a84f9fd9e8", + "sha256:ffefa1374cd508d633646d51a8e9277763a9b78ae71324183693959cf94635a7" + ], + "markers": "python_version >= '3.8'", + "version": "==12.0" }, "werkzeug": { "hashes": [ - "sha256:7ea2d48322cc7c0f8b3a215ed73eabd7b5d75d0b50e31ab006286ccff9e00b8f", - "sha256:f979ab81f58d7318e064e99c4506445d60135ac5cd2e177a2de0089bfd4c9bd5" + "sha256:507e811ecea72b18a404947aded4b3390e1db8f826b494d76550ef45bb3b1dcc", + "sha256:90a285dc0e42ad56b34e696398b8122ee4c681833fb35b8334a095d82c56da10" ], - "markers": "python_version >= '3.7'", - "version": "==2.2.2" + "markers": "python_version >= '3.8'", + "version": "==3.0.1" }, "yarl": { "hashes": [ - "sha256:076eede537ab978b605f41db79a56cad2e7efeea2aa6e0fa8f05a26c24a034fb", - "sha256:07b21e274de4c637f3e3b7104694e53260b5fc10d51fb3ec5fed1da8e0f754e3", - "sha256:0ab5a138211c1c366404d912824bdcf5545ccba5b3ff52c42c4af4cbdc2c5035", - "sha256:0c03f456522d1ec815893d85fccb5def01ffaa74c1b16ff30f8aaa03eb21e453", - "sha256:12768232751689c1a89b0376a96a32bc7633c08da45ad985d0c49ede691f5c0d", - "sha256:19cd801d6f983918a3f3a39f3a45b553c015c5aac92ccd1fac619bd74beece4a", - "sha256:1ca7e596c55bd675432b11320b4eacc62310c2145d6801a1f8e9ad160685a231", - "sha256:1e4808f996ca39a6463f45182e2af2fae55e2560be586d447ce8016f389f626f", - "sha256:205904cffd69ae972a1707a1bd3ea7cded594b1d773a0ce66714edf17833cdae", - "sha256:20df6ff4089bc86e4a66e3b1380460f864df3dd9dccaf88d6b3385d24405893b", - "sha256:21ac44b763e0eec15746a3d440f5e09ad2ecc8b5f6dcd3ea8cb4773d6d4703e3", - "sha256:29e256649f42771829974e742061c3501cc50cf16e63f91ed8d1bf98242e5507", - "sha256:2d800b9c2eaf0684c08be5f50e52bfa2aa920e7163c2ea43f4f431e829b4f0fd", - "sha256:2d93a049d29df172f48bcb09acf9226318e712ce67374f893b460b42cc1380ae", - "sha256:31a9a04ecccd6b03e2b0e12e82131f1488dea5555a13a4d32f064e22a6003cfe", - "sha256:3d1a50e461615747dd93c099f297c1994d472b0f4d2db8a64e55b1edf704ec1c", - "sha256:449c957ffc6bc2309e1fbe67ab7d2c1efca89d3f4912baeb8ead207bb3cc1cd4", - "sha256:4a88510731cd8d4befaba5fbd734a7dd914de5ab8132a5b3dde0bbd6c9476c64", - "sha256:4c322cbaa4ed78a8aac89b2174a6df398faf50e5fc12c4c191c40c59d5e28357", - "sha256:5395da939ffa959974577eff2cbfc24b004a2fb6c346918f39966a5786874e54", - "sha256:5587bba41399854703212b87071c6d8638fa6e61656385875f8c6dff92b2e461", - "sha256:56c11efb0a89700987d05597b08a1efcd78d74c52febe530126785e1b1a285f4", - "sha256:5999c4662631cb798496535afbd837a102859568adc67d75d2045e31ec3ac497", - "sha256:59ddd85a1214862ce7c7c66457f05543b6a275b70a65de366030d56159a979f0", - "sha256:6347f1a58e658b97b0a0d1ff7658a03cb79bdbda0331603bed24dd7054a6dea1", - "sha256:6628d750041550c5d9da50bb40b5cf28a2e63b9388bac10fedd4f19236ef4957", - "sha256:6afb336e23a793cd3b6476c30f030a0d4c7539cd81649683b5e0c1b0ab0bf350", - "sha256:6c8148e0b52bf9535c40c48faebb00cb294ee577ca069d21bd5c48d302a83780", - "sha256:76577f13333b4fe345c3704811ac7509b31499132ff0181f25ee26619de2c843", - "sha256:7c0da7e44d0c9108d8b98469338705e07f4bb7dab96dbd8fa4e91b337db42548", - "sha256:7de89c8456525650ffa2bb56a3eee6af891e98f498babd43ae307bd42dca98f6", - "sha256:7ec362167e2c9fd178f82f252b6d97669d7245695dc057ee182118042026da40", - "sha256:7fce6cbc6c170ede0221cc8c91b285f7f3c8b9fe28283b51885ff621bbe0f8ee", - "sha256:85cba594433915d5c9a0d14b24cfba0339f57a2fff203a5d4fd070e593307d0b", - "sha256:8b0af1cf36b93cee99a31a545fe91d08223e64390c5ecc5e94c39511832a4bb6", - "sha256:9130ddf1ae9978abe63808b6b60a897e41fccb834408cde79522feb37fb72fb0", - "sha256:99449cd5366fe4608e7226c6cae80873296dfa0cde45d9b498fefa1de315a09e", - "sha256:9de955d98e02fab288c7718662afb33aab64212ecb368c5dc866d9a57bf48880", - "sha256:a0fb2cb4204ddb456a8e32381f9a90000429489a25f64e817e6ff94879d432fc", - "sha256:a165442348c211b5dea67c0206fc61366212d7082ba8118c8c5c1c853ea4d82e", - "sha256:ab2a60d57ca88e1d4ca34a10e9fb4ab2ac5ad315543351de3a612bbb0560bead", - "sha256:abc06b97407868ef38f3d172762f4069323de52f2b70d133d096a48d72215d28", - "sha256:af887845b8c2e060eb5605ff72b6f2dd2aab7a761379373fd89d314f4752abbf", - "sha256:b19255dde4b4f4c32e012038f2c169bb72e7f081552bea4641cab4d88bc409dd", - "sha256:b3ded839a5c5608eec8b6f9ae9a62cb22cd037ea97c627f38ae0841a48f09eae", - "sha256:c1445a0c562ed561d06d8cbc5c8916c6008a31c60bc3655cdd2de1d3bf5174a0", - "sha256:d0272228fabe78ce00a3365ffffd6f643f57a91043e119c289aaba202f4095b0", - "sha256:d0b51530877d3ad7a8d47b2fff0c8df3b8f3b8deddf057379ba50b13df2a5eae", - "sha256:d0f77539733e0ec2475ddcd4e26777d08996f8cd55d2aef82ec4d3896687abda", - "sha256:d2b8f245dad9e331540c350285910b20dd913dc86d4ee410c11d48523c4fd546", - "sha256:dd032e8422a52e5a4860e062eb84ac94ea08861d334a4bcaf142a63ce8ad4802", - "sha256:de49d77e968de6626ba7ef4472323f9d2e5a56c1d85b7c0e2a190b2173d3b9be", - "sha256:de839c3a1826a909fdbfe05f6fe2167c4ab033f1133757b5936efe2f84904c07", - "sha256:e80ed5a9939ceb6fda42811542f31c8602be336b1fb977bccb012e83da7e4936", - "sha256:ea30a42dc94d42f2ba4d0f7c0ffb4f4f9baa1b23045910c0c32df9c9902cb272", - "sha256:ea513a25976d21733bff523e0ca836ef1679630ef4ad22d46987d04b372d57fc", - "sha256:ed19b74e81b10b592084a5ad1e70f845f0aacb57577018d31de064e71ffa267a", - "sha256:f5af52738e225fcc526ae64071b7e5342abe03f42e0e8918227b38c9aa711e28", - "sha256:fae37373155f5ef9b403ab48af5136ae9851151f7aacd9926251ab26b953118b" + "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571", + "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3", + "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3", + "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c", + "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7", + "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04", + "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191", + "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea", + "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4", + "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4", + "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095", + "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e", + "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74", + "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef", + "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33", + "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde", + "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45", + "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf", + "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b", + "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac", + "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0", + "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528", + "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716", + "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb", + "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18", + "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72", + "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6", + "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582", + "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5", + "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368", + "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc", + "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9", + "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be", + "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a", + "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80", + "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8", + "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6", + "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417", + "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574", + "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59", + "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608", + "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82", + "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1", + "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3", + "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d", + "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8", + "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc", + "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac", + "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8", + "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955", + "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0", + "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367", + "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb", + "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a", + "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623", + "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2", + "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6", + "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7", + "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4", + "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051", + "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938", + "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8", + "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9", + "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3", + "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5", + "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9", + "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333", + "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185", + "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3", + "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560", + "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b", + "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7", + "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78", + "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7" ], "markers": "python_version >= '3.7'", - "version": "==1.8.1" - }, - "zipp": { - "hashes": [ - "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa", - "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766" + "version": "==1.9.2" + }, + "zope-interface": { + "hashes": [ + "sha256:0c8cf55261e15590065039696607f6c9c1aeda700ceee40c70478552d323b3ff", + "sha256:13b7d0f2a67eb83c385880489dbb80145e9d344427b4262c49fbf2581677c11c", + "sha256:1f294a15f7723fc0d3b40701ca9b446133ec713eafc1cc6afa7b3d98666ee1ac", + "sha256:239a4a08525c080ff833560171d23b249f7f4d17fcbf9316ef4159f44997616f", + "sha256:2f8d89721834524a813f37fa174bac074ec3d179858e4ad1b7efd4401f8ac45d", + "sha256:2fdc7ccbd6eb6b7df5353012fbed6c3c5d04ceaca0038f75e601060e95345309", + "sha256:34c15ca9248f2e095ef2e93af2d633358c5f048c49fbfddf5fdfc47d5e263736", + "sha256:387545206c56b0315fbadb0431d5129c797f92dc59e276b3ce82db07ac1c6179", + "sha256:43b576c34ef0c1f5a4981163b551a8781896f2a37f71b8655fd20b5af0386abb", + "sha256:57d0a8ce40ce440f96a2c77824ee94bf0d0925e6089df7366c2272ccefcb7941", + "sha256:5a804abc126b33824a44a7aa94f06cd211a18bbf31898ba04bd0924fbe9d282d", + "sha256:67be3ca75012c6e9b109860820a8b6c9a84bfb036fbd1076246b98e56951ca92", + "sha256:6af47f10cfc54c2ba2d825220f180cc1e2d4914d783d6fc0cd93d43d7bc1c78b", + "sha256:6dc998f6de015723196a904045e5a2217f3590b62ea31990672e31fbc5370b41", + "sha256:70d2cef1bf529bff41559be2de9d44d47b002f65e17f43c73ddefc92f32bf00f", + "sha256:7ebc4d34e7620c4f0da7bf162c81978fce0ea820e4fa1e8fc40ee763839805f3", + "sha256:964a7af27379ff4357dad1256d9f215047e70e93009e532d36dcb8909036033d", + "sha256:97806e9ca3651588c1baaebb8d0c5ee3db95430b612db354c199b57378312ee8", + "sha256:9b9bc671626281f6045ad61d93a60f52fd5e8209b1610972cf0ef1bbe6d808e3", + "sha256:9ffdaa5290422ac0f1688cb8adb1b94ca56cee3ad11f29f2ae301df8aecba7d1", + "sha256:a0da79117952a9a41253696ed3e8b560a425197d4e41634a23b1507efe3273f1", + "sha256:a41f87bb93b8048fe866fa9e3d0c51e27fe55149035dcf5f43da4b56732c0a40", + "sha256:aa6fd016e9644406d0a61313e50348c706e911dca29736a3266fc9e28ec4ca6d", + "sha256:ad54ed57bdfa3254d23ae04a4b1ce405954969c1b0550cc2d1d2990e8b439de1", + "sha256:b012d023b4fb59183909b45d7f97fb493ef7a46d2838a5e716e3155081894605", + "sha256:b51b64432eed4c0744241e9ce5c70dcfecac866dff720e746d0a9c82f371dfa7", + "sha256:bbe81def9cf3e46f16ce01d9bfd8bea595e06505e51b7baf45115c77352675fd", + "sha256:c9559138690e1bd4ea6cd0954d22d1e9251e8025ce9ede5d0af0ceae4a401e43", + "sha256:e30506bcb03de8983f78884807e4fd95d8db6e65b69257eea05d13d519b83ac0", + "sha256:e33e86fd65f369f10608b08729c8f1c92ec7e0e485964670b4d2633a4812d36b", + "sha256:e441e8b7d587af0414d25e8d05e27040d78581388eed4c54c30c0c91aad3a379", + "sha256:e8bb9c990ca9027b4214fa543fd4025818dc95f8b7abce79d61dc8a2112b561a", + "sha256:ef43ee91c193f827e49599e824385ec7c7f3cd152d74cb1dfe02cb135f264d83", + "sha256:ef467d86d3cfde8b39ea1b35090208b0447caaabd38405420830f7fd85fbdd56", + "sha256:f89b28772fc2562ed9ad871c865f5320ef761a7fcc188a935e21fe8b31a38ca9", + "sha256:fddbab55a2473f1d3b8833ec6b7ac31e8211b0aa608df5ab09ce07f3727326de" ], "markers": "python_version >= '3.7'", - "version": "==3.11.0" - }, - "zope.interface": { - "hashes": [ - "sha256:008b0b65c05993bb08912f644d140530e775cf1c62a072bf9340c2249e613c32", - "sha256:0217a9615531c83aeedb12e126611b1b1a3175013bbafe57c702ce40000eb9a0", - "sha256:0fb497c6b088818e3395e302e426850f8236d8d9f4ef5b2836feae812a8f699c", - "sha256:17ebf6e0b1d07ed009738016abf0d0a0f80388e009d0ac6e0ead26fc162b3b9c", - "sha256:311196634bb9333aa06f00fc94f59d3a9fddd2305c2c425d86e406ddc6f2260d", - "sha256:3218ab1a7748327e08ef83cca63eea7cf20ea7e2ebcb2522072896e5e2fceedf", - "sha256:404d1e284eda9e233c90128697c71acffd55e183d70628aa0bbb0e7a3084ed8b", - "sha256:4087e253bd3bbbc3e615ecd0b6dd03c4e6a1e46d152d3be6d2ad08fbad742dcc", - "sha256:40f4065745e2c2fa0dff0e7ccd7c166a8ac9748974f960cd39f63d2c19f9231f", - "sha256:5334e2ef60d3d9439c08baedaf8b84dc9bb9522d0dacbc10572ef5609ef8db6d", - "sha256:604cdba8f1983d0ab78edc29aa71c8df0ada06fb147cea436dc37093a0100a4e", - "sha256:6373d7eb813a143cb7795d3e42bd8ed857c82a90571567e681e1b3841a390d16", - "sha256:655796a906fa3ca67273011c9805c1e1baa047781fca80feeb710328cdbed87f", - "sha256:65c3c06afee96c654e590e046c4a24559e65b0a87dbff256cd4bd6f77e1a33f9", - "sha256:696f3d5493eae7359887da55c2afa05acc3db5fc625c49529e84bd9992313296", - "sha256:6e972493cdfe4ad0411fd9abfab7d4d800a7317a93928217f1a5de2bb0f0d87a", - "sha256:7579960be23d1fddecb53898035a0d112ac858c3554018ce615cefc03024e46d", - "sha256:765d703096ca47aa5d93044bf701b00bbce4d903a95b41fff7c3796e747b1f1d", - "sha256:7e66f60b0067a10dd289b29dceabd3d0e6d68be1504fc9d0bc209cf07f56d189", - "sha256:8a2ffadefd0e7206adc86e492ccc60395f7edb5680adedf17a7ee4205c530df4", - "sha256:959697ef2757406bff71467a09d940ca364e724c534efbf3786e86eee8591452", - "sha256:9d783213fab61832dbb10d385a319cb0e45451088abd45f95b5bb88ed0acca1a", - "sha256:a16025df73d24795a0bde05504911d306307c24a64187752685ff6ea23897cb0", - "sha256:a2ad597c8c9e038a5912ac3cf166f82926feff2f6e0dabdab956768de0a258f5", - "sha256:bfee1f3ff62143819499e348f5b8a7f3aa0259f9aca5e0ddae7391d059dce671", - "sha256:d169ccd0756c15bbb2f1acc012f5aab279dffc334d733ca0d9362c5beaebe88e", - "sha256:d514c269d1f9f5cd05ddfed15298d6c418129f3f064765295659798349c43e6f", - "sha256:d692374b578360d36568dd05efb8a5a67ab6d1878c29c582e37ddba80e66c396", - "sha256:dbaeb9cf0ea0b3bc4b36fae54a016933d64c6d52a94810a63c00f440ecb37dd7", - "sha256:dc26c8d44472e035d59d6f1177eb712888447f5799743da9c398b0339ed90b1b", - "sha256:e1574980b48c8c74f83578d1e77e701f8439a5d93f36a5a0af31337467c08fcf", - "sha256:e74a578172525c20d7223eac5f8ad187f10940dac06e40113d62f14f3adb1e8f", - "sha256:e945de62917acbf853ab968d8916290548df18dd62c739d862f359ecd25842a6", - "sha256:f0980d44b8aded808bec5059018d64692f0127f10510eca71f2f0ace8fb11188", - "sha256:f98d4bd7bbb15ca701d19b93263cc5edfd480c3475d163f137385f49e5b3a3a7", - "sha256:fb68d212efd057596dee9e6582daded9f8ef776538afdf5feceb3059df2d2e7b" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==5.5.2" + "version": "==6.1" } }, "develop": { "aiohttp": { "hashes": [ - "sha256:01d7bdb774a9acc838e6b8f1d114f45303841b89b95984cbb7d80ea41172a9e3", - "sha256:03a6d5349c9ee8f79ab3ff3694d6ce1cfc3ced1c9d36200cb8f08ba06bd3b782", - "sha256:04d48b8ce6ab3cf2097b1855e1505181bdd05586ca275f2505514a6e274e8e75", - "sha256:0770e2806a30e744b4e21c9d73b7bee18a1cfa3c47991ee2e5a65b887c49d5cf", - "sha256:07b05cd3305e8a73112103c834e91cd27ce5b4bd07850c4b4dbd1877d3f45be7", - "sha256:086f92daf51a032d062ec5f58af5ca6a44d082c35299c96376a41cbb33034675", - "sha256:099ebd2c37ac74cce10a3527d2b49af80243e2a4fa39e7bce41617fbc35fa3c1", - "sha256:0c7ebbbde809ff4e970824b2b6cb7e4222be6b95a296e46c03cf050878fc1785", - "sha256:102e487eeb82afac440581e5d7f8f44560b36cf0bdd11abc51a46c1cd88914d4", - "sha256:11691cf4dc5b94236ccc609b70fec991234e7ef8d4c02dd0c9668d1e486f5abf", - "sha256:11a67c0d562e07067c4e86bffc1553f2cf5b664d6111c894671b2b8712f3aba5", - "sha256:12de6add4038df8f72fac606dff775791a60f113a725c960f2bab01d8b8e6b15", - "sha256:13487abd2f761d4be7c8ff9080de2671e53fff69711d46de703c310c4c9317ca", - "sha256:15b09b06dae900777833fe7fc4b4aa426556ce95847a3e8d7548e2d19e34edb8", - "sha256:1c182cb873bc91b411e184dab7a2b664d4fea2743df0e4d57402f7f3fa644bac", - "sha256:1ed0b6477896559f17b9eaeb6d38e07f7f9ffe40b9f0f9627ae8b9926ae260a8", - "sha256:28d490af82bc6b7ce53ff31337a18a10498303fe66f701ab65ef27e143c3b0ef", - "sha256:2e5d962cf7e1d426aa0e528a7e198658cdc8aa4fe87f781d039ad75dcd52c516", - "sha256:2ed076098b171573161eb146afcb9129b5ff63308960aeca4b676d9d3c35e700", - "sha256:2f2f69dca064926e79997f45b2f34e202b320fd3782f17a91941f7eb85502ee2", - "sha256:31560d268ff62143e92423ef183680b9829b1b482c011713ae941997921eebc8", - "sha256:31d1e1c0dbf19ebccbfd62eff461518dcb1e307b195e93bba60c965a4dcf1ba0", - "sha256:37951ad2f4a6df6506750a23f7cbabad24c73c65f23f72e95897bb2cecbae676", - "sha256:3af642b43ce56c24d063325dd2cf20ee012d2b9ba4c3c008755a301aaea720ad", - "sha256:44db35a9e15d6fe5c40d74952e803b1d96e964f683b5a78c3cc64eb177878155", - "sha256:473d93d4450880fe278696549f2e7aed8cd23708c3c1997981464475f32137db", - "sha256:477c3ea0ba410b2b56b7efb072c36fa91b1e6fc331761798fa3f28bb224830dd", - "sha256:4a4a4e30bf1edcad13fb0804300557aedd07a92cabc74382fdd0ba6ca2661091", - "sha256:4aed991a28ea3ce320dc8ce655875e1e00a11bdd29fe9444dd4f88c30d558602", - "sha256:51467000f3647d519272392f484126aa716f747859794ac9924a7aafa86cd411", - "sha256:55c3d1072704d27401c92339144d199d9de7b52627f724a949fc7d5fc56d8b93", - "sha256:589c72667a5febd36f1315aa6e5f56dd4aa4862df295cb51c769d16142ddd7cd", - "sha256:5bfde62d1d2641a1f5173b8c8c2d96ceb4854f54a44c23102e2ccc7e02f003ec", - "sha256:5c23b1ad869653bc818e972b7a3a79852d0e494e9ab7e1a701a3decc49c20d51", - "sha256:61bfc23df345d8c9716d03717c2ed5e27374e0fe6f659ea64edcd27b4b044cf7", - "sha256:6ae828d3a003f03ae31915c31fa684b9890ea44c9c989056fea96e3d12a9fa17", - "sha256:6c7cefb4b0640703eb1069835c02486669312bf2f12b48a748e0a7756d0de33d", - "sha256:6d69f36d445c45cda7b3b26afef2fc34ef5ac0cdc75584a87ef307ee3c8c6d00", - "sha256:6f0d5f33feb5f69ddd57a4a4bd3d56c719a141080b445cbf18f238973c5c9923", - "sha256:6f8b01295e26c68b3a1b90efb7a89029110d3a4139270b24fda961893216c440", - "sha256:713ac174a629d39b7c6a3aa757b337599798da4c1157114a314e4e391cd28e32", - "sha256:718626a174e7e467f0558954f94af117b7d4695d48eb980146016afa4b580b2e", - "sha256:7187a76598bdb895af0adbd2fb7474d7f6025d170bc0a1130242da817ce9e7d1", - "sha256:71927042ed6365a09a98a6377501af5c9f0a4d38083652bcd2281a06a5976724", - "sha256:7d08744e9bae2ca9c382581f7dce1273fe3c9bae94ff572c3626e8da5b193c6a", - "sha256:7dadf3c307b31e0e61689cbf9e06be7a867c563d5a63ce9dca578f956609abf8", - "sha256:81e3d8c34c623ca4e36c46524a3530e99c0bc95ed068fd6e9b55cb721d408fb2", - "sha256:844a9b460871ee0a0b0b68a64890dae9c415e513db0f4a7e3cab41a0f2fedf33", - "sha256:8b7ef7cbd4fec9a1e811a5de813311ed4f7ac7d93e0fda233c9b3e1428f7dd7b", - "sha256:97ef77eb6b044134c0b3a96e16abcb05ecce892965a2124c566af0fd60f717e2", - "sha256:99b5eeae8e019e7aad8af8bb314fb908dd2e028b3cdaad87ec05095394cce632", - "sha256:a25fa703a527158aaf10dafd956f7d42ac6d30ec80e9a70846253dd13e2f067b", - "sha256:a2f635ce61a89c5732537a7896b6319a8fcfa23ba09bec36e1b1ac0ab31270d2", - "sha256:a79004bb58748f31ae1cbe9fa891054baaa46fb106c2dc7af9f8e3304dc30316", - "sha256:a996d01ca39b8dfe77440f3cd600825d05841088fd6bc0144cc6c2ec14cc5f74", - "sha256:b0e20cddbd676ab8a64c774fefa0ad787cc506afd844de95da56060348021e96", - "sha256:b6613280ccedf24354406caf785db748bebbddcf31408b20c0b48cb86af76866", - "sha256:b9d00268fcb9f66fbcc7cd9fe423741d90c75ee029a1d15c09b22d23253c0a44", - "sha256:bb01ba6b0d3f6c68b89fce7305080145d4877ad3acaed424bae4d4ee75faa950", - "sha256:c2aef4703f1f2ddc6df17519885dbfa3514929149d3ff900b73f45998f2532fa", - "sha256:c34dc4958b232ef6188c4318cb7b2c2d80521c9a56c52449f8f93ab7bc2a8a1c", - "sha256:c3630c3ef435c0a7c549ba170a0633a56e92629aeed0e707fec832dee313fb7a", - "sha256:c3d6a4d0619e09dcd61021debf7059955c2004fa29f48788a3dfaf9c9901a7cd", - "sha256:d15367ce87c8e9e09b0f989bfd72dc641bcd04ba091c68cd305312d00962addd", - "sha256:d2f9b69293c33aaa53d923032fe227feac867f81682f002ce33ffae978f0a9a9", - "sha256:e999f2d0e12eea01caeecb17b653f3713d758f6dcc770417cf29ef08d3931421", - "sha256:ea302f34477fda3f85560a06d9ebdc7fa41e82420e892fc50b577e35fc6a50b2", - "sha256:eaba923151d9deea315be1f3e2b31cc39a6d1d2f682f942905951f4e40200922", - "sha256:ef9612483cb35171d51d9173647eed5d0069eaa2ee812793a75373447d487aa4", - "sha256:f5315a2eb0239185af1bddb1abf472d877fede3cc8d143c6cddad37678293237", - "sha256:fa0ffcace9b3aa34d205d8130f7873fcfefcb6a4dd3dd705b0dab69af6712642", - "sha256:fc5471e1a54de15ef71c1bc6ebe80d4dc681ea600e68bfd1cbce40427f0b7578" + "sha256:00c92fcfc255bcc3f831df6210358b8e179153353feadf060e8264eb62ce458c", + "sha256:0303a95d2fda431d80b24b6c8e1e588e4625806304d805527788094decc902df", + "sha256:07f4acf59e3d88c229c8d726cd3ac8d92457f20c8b2ac25afad22c9d9e0a198d", + "sha256:0cf569a3eb1f74553623867526d59969a5f3f66c759f4acf0b3530c985095e77", + "sha256:0f15ca09841d43c32577d47e458370c94c7b123bc746722d7bf738132f929f5d", + "sha256:12c9b8d5e4c410bc9c5d781491a695b07857671d631ca921f0effa53dbbe9082", + "sha256:1743e84dd0c04cefce8df0866780eae991a2cfe36ac4bef1e04aef640c3dfb8a", + "sha256:1815bd39628afa7085bad883b8cad84dbdab84a273ba1a5bf571177ae267011d", + "sha256:1909936256b296505bae30e092c8487e4b14c89748612d87fc301bd1b08401c3", + "sha256:198a22d959f969bdcf92145f25c07bb5a7f65dc05c3735047447aa53d38142df", + "sha256:1ea45264d399f82da4048e724afdf5f10318d62ad89fb9dc911eafd66e3d79b3", + "sha256:244c4d488eb3a2abe008bc614de4ce3a34abd027e518a595f8e794747f23d516", + "sha256:25703823f9f96c85a7f97a6fd487beec576395c9447a4146feb08e422fcfc9c2", + "sha256:2775ed7b86e47084b5df0e7e64f79fc9900ef6c3d7e247a8ea2c8a7e0763b68a", + "sha256:2f077cc6cfbf05c2e8ef817dbbceb754a578db5aa449763f328cc6816b639632", + "sha256:2f2ecb6a3dd0cf78da60750ef521cd5f16e72e599232b7d11e7e14182f674f53", + "sha256:37307e2177a286482a1e9c86626c333e2b0f434d6afeef4d12e48be582f476ce", + "sha256:3893de9760c03032d2e5593e23fcc34a8be995a8311f64435d8413f08248929c", + "sha256:3dbe4ebcc68a7a7e841f187b08e67d49af5535065c67ecb9ee2c82a186cb40c3", + "sha256:4036577d5226a98c68292d6a7aab08c7143e0a827ed0a0beba769c3340305bff", + "sha256:409b43ceed9dcc52150813cb695130519dc2876d98f941ce6d30a5bc4ff80451", + "sha256:42fff01edf90358ef4e0a6edd235759e4f9344a6a6ba60b0d948e95d4aa5adf5", + "sha256:46a649d6c8cc0d59d9d8afc8aa6328d349f0cf6e579006523ef97fea03f72b8a", + "sha256:48cf475d3c621f9437220571acfca1317899868412d27760b54a3a7ae7c84530", + "sha256:498e62d934f80dab3384abfc1003013229e4c82d9eb904c51e5f6cea26ec56b7", + "sha256:4b0a6f5bcbe580cb156ef9bc2d59821889b141d894cbad2e7e352b2e75fb4bcc", + "sha256:4eb2befcf4e57c5e2218ff3e50b73b4b1bd56685ce275c45905d4687653dad90", + "sha256:51e962768a4111fb06dfa58f1a16e9ff299465df11756c416cd75ab4c9b42962", + "sha256:542eb584021cc99057b1f39f4b8bd5d25ae554ca21afdfc098bd60f91509640c", + "sha256:599aa2ce967bea2580588833bf08d2df5930cd2ccb618e8d96dd67dbe063b692", + "sha256:5e94500d9653e85bfce5d604e99f71407e4104ad4943caddef379b6cc4d6e07e", + "sha256:61fe1eb4156edd858d2a45a76472b67d82629d4eee0770b30aaf6f9bccfc664f", + "sha256:64004b0f1174c80674de4660b4655cf47333c9bb70ef64fbe5f5befbe75a83de", + "sha256:6660b33e100b4efbc2ed1b0765b97d126c80c56f5b82bd9865d938cc4a29f4a1", + "sha256:66da9965d78206444640fb34364677564b77286463d6aa461a9ae67e09479366", + "sha256:6a25d945fc6225b1bf7628229a40b1cf00f0a122843dafafdd09c9a921f6e5f4", + "sha256:6aca9a0f7444c79f517cd1e089942885833bd00509e8ee2b1431d05e2080b781", + "sha256:6bbc14a195fb1cf2da16017d2201edf770ab66b806537ef95101ca31a2141230", + "sha256:6c987fc1646c8272c4d76b0361fdec957b3e4082ed8fc9f5143ebdfda4f265c3", + "sha256:6f70c2bb17ec72839dffd7b023450a0ed17f73426e2f1f0833f024d78a64c6d7", + "sha256:7138f023e38cd108084b1ee8455be14a8e88a51f50510b482624bf204eb6ac44", + "sha256:756ad558853e637237490f2d203dccc9f93779fd2708b66a5948a7d785aacce3", + "sha256:772e948d02592bca1f551878b68b7e6cedaad471d2887701d524d390b56a01af", + "sha256:793a0bcbc3ea851fda46d72245d2f53f59c9a38bba480b83788b61afbb803725", + "sha256:79c1924b54c44a7dc6b7e866363d06faa6f03f490275d572b76536491004ea1a", + "sha256:7d9f33cbe36eda9ae33e169c27b33dcfd3791972809018309ead35e0997024b7", + "sha256:811a0d8ecf4053224cd54765654f5952e59983cfb07f8f6ee913330a2b4196b0", + "sha256:8151006ae30614e5c75e2ff05cdb51242214aadda0ae28c7c449007e28362651", + "sha256:866fe95c3c4f82ae155271b4fb6a7a9352fcaf6d6f7e02e05074a3c08a1dbd25", + "sha256:88bb9378ff3ff76a8fef3714976827ddb66fe397cadb64ba9bee5d954bfdf887", + "sha256:8a70e88ca8d890056e52a0b41bef755e232df3a0800ff9fdcefea1755cf23dc3", + "sha256:8e3cec205409e011ae872cbedd19891135ffdc1832ed353c8af4cef4b1947054", + "sha256:8ebb1274e8e5950eea209cb3b674612442aa68daac57c97872865bdf63449286", + "sha256:8eea173d8fe9f04f86f1f8d711dd23c0310cf55f979b1e7b949fe15ba776e018", + "sha256:92f5f3e78a6014b3060112be7253b3baefbbccf2147e5f8df1b3fa163a74d9d6", + "sha256:938c6f4236f053802c7b862ca95ea8c516052a08a4f369de7d4a06fd6a38d6fb", + "sha256:9bbcac98836b6393b1ed568845335bd3a1106077c8e32a615e3259a73665f449", + "sha256:9cb8203740284d385869381a461fb1ae487c166cb669fd3002f44fd44bb7f187", + "sha256:9d04aa8efff6ce4b22ec526cb63091f610a3f1823e22cf60b5fef88ac8177db0", + "sha256:9d09035bbc722f9ac8057c53f0d984f5b3bd4f3fb9ff74f7603fc3bbd783489a", + "sha256:9ebe11ebaf1b44e841bb6f0cf79f16c5c8b2d98e0df7c8d5ecb4bdb77faa9d60", + "sha256:a0aa70f48dc5e9adfa38a1a5c8e3aac20efca7370143ac94f3cef7c068c6cf27", + "sha256:a33758b5dbff2eb56270d441222e527d6e0e96b3886a4d42c9cfcdccc6730baa", + "sha256:ae3a20fc2f3cccdd2d2f319d0198040a778fbda51ff6cece9a1dbaa67cdd11ab", + "sha256:aec83bdeb4b0a2f90b4bc07b9b7339b37c39535b8dd01397e0d2a22baae86b42", + "sha256:b66b45409b7014ba1c4f0d23cf2d7a93ca8045be35660dc04828a1615fd805c6", + "sha256:b797d5ca7ae816f3b7020fae479573efaed4b5be730dfa6c0b8f1d25d4ec6207", + "sha256:b94ec6e2389a0bce9e1393322f6efc928fa9f6f138656f8333eaa625ac62077a", + "sha256:baa71fddadf208c2dae2092c229d928cb4d3fc12c769876a54b8ed53e081fe06", + "sha256:c0563bf4e2069da4d3a6183acdb2f8f69e6d3d2cc794afb6b001f47d89b10618", + "sha256:d17bdab6cbfca083c386da5a580c6650221024fcfed6bcccf5cce7d8219f2d49", + "sha256:d31e9422387b77a49fc01e966e128ea06688ef23495f6a999843f75ee2f481be", + "sha256:d38df4ac8a8d1bd2c1b77ea3de8645091d669ccf8a3f327f586b0f868c409800", + "sha256:d3cc1a1b215b8efa3cfe45aedb8afc6b46476df2f37a089894b0fd3f82262f8f", + "sha256:d831eec202a3a6b976195235b68e3f8a5f9a8e36dc329b7dd864da236ff3c434", + "sha256:d9dcf718c36dbec176a3c9f3d829ddbfe5aa4a405d7fc45be6a339319ff1bd90", + "sha256:dd90aa4ba84ceef1031e468b561ff53b68ecb5bea0f44f13ff930a29037ce880", + "sha256:dde54b9d20376f132020726156e4d8a2054714edd86709608d710f950e169621", + "sha256:ddf9a5eaaae83db1b9ad8c147833c1b9e9c17fd2886c0d7fd58b92212c1d73a7", + "sha256:e8d51a0d9c85819085b614e81da980bec5ef95cb5fae934ff0cd480d9f1ad954", + "sha256:e989dca3eeaf28e15e80084bd55b7872b8c9c79b59748a332a6d32026783bb93", + "sha256:e99cc2845ad4a88ddc44473d6222ef624c0424383f4d7369b37c94f93fee8004", + "sha256:e9e6c0ed1378cf0a6d77cd60f550eb8d57e21c13edb5e1f44b9707fd9937c2ce", + "sha256:efdf06265e2b560b1202626c83b35eed5bd30ed81a4493f73d30ebb1bc04ce8d", + "sha256:f7dcf4f9bc71b4ebac120a569bfe1604f1664da59cfa0abd85e15fabc4c3e7dc", + "sha256:f82f0110136281bdd1886529ad9cd9e76c6e03a2841ed923a3db94e9a19ad710", + "sha256:fbb89011e236e15899df0b49432bb50c7f3d89c9f1875c0c2b5bafaf9d5c2daa" ], "markers": "python_version >= '3.6'", - "version": "==3.8.1" + "version": "==3.8.2" }, "aiosignal": { "hashes": [ @@ -1894,6 +2173,13 @@ "markers": "python_version >= '3.7'", "version": "==1.3.1" }, + "ape-solidity": { + "hashes": [ + "sha256:c923809f4f3542e86b18cbeb325b08800461b4af38366a8950d26afc15431e35", + "sha256:ccd58558fad2a0003d1e0c026b8bfb5e35ec1600aa06ba2c2260daa5c64a2299" + ], + "version": "==0.6.9" + }, "appdirs": { "hashes": [ "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", @@ -1901,28 +2187,43 @@ ], "version": "==1.4.4" }, + "appnope": { + "hashes": [ + "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24", + "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e" + ], + "markers": "sys_platform == 'darwin'", + "version": "==0.1.3" + }, + "asttokens": { + "hashes": [ + "sha256:2e0171b991b2c959acc6c49318049236844a5da1d65ba2672c4880c1c894834e", + "sha256:cf8fc9e61a86461aa9fb161a14a0841a03c405fa829ac6b202670b3495d2ce69" + ], + "version": "==2.4.0" + }, "async-timeout": { "hashes": [ - "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15", - "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c" + "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f", + "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028" ], - "markers": "python_version >= '3.6'", - "version": "==4.0.2" + "markers": "python_version >= '3.7'", + "version": "==4.0.3" }, "attrs": { "hashes": [ - "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6", - "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c" + "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04", + "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015" ], - "markers": "python_version >= '3.5'", - "version": "==22.1.0" + "markers": "python_version >= '3.7'", + "version": "==23.1.0" }, "autobahn": { "hashes": [ - "sha256:8b462ea2e6aad6b4dc0ed45fb800b6cbfeb0325e7fe6983907f122f2be4a1fe9" + "sha256:ec9421c52a2103364d1ef0468036e6019ee84f71721e86b36fe19ad6966c1181" ], - "markers": "python_version >= '3.7'", - "version": "==22.7.1" + "markers": "python_version >= '3.9'", + "version": "==23.6.2" }, "automat": { "hashes": [ @@ -1931,90 +2232,155 @@ ], "version": "==22.10.0" }, + "backcall": { + "hashes": [ + "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e", + "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255" + ], + "version": "==0.2.0" + }, "base58": { "hashes": [ - "sha256:11a36f4d3ce51dfc1043f3218591ac4eb1ceb172919cebe05b52a5bcc8d245c2", - "sha256:c5d0cb3f5b6e81e8e35da5754388ddcc6d0d14b6c6a132cb93d69ed580a7278c" + "sha256:1e42993c0628ed4f898c03b522b26af78fb05115732549b21a028bc4633d19ab", + "sha256:6aa0553e477478993588303c54659d15e3c17ae062508c854a8b752d07c716bd", + "sha256:9a793c599979c497800eb414c852b80866f28daaed5494703fc129592cc83e60" ], - "markers": "python_version >= '3.5'", - "version": "==2.1.1" + "version": "==1.0.3" }, "bitarray": { "hashes": [ - "sha256:035d3e5ab3c1afa2cd88bbc33af595b4875a24b0d037dfef907b41bc4b0dbe2b", - "sha256:0399886ca8ead7d0f16f94545bda800467d6d9c63fbd4866ee7ede7981166ba8", - "sha256:049e8f017b5b6d1763ababa156ca5cbdea8a01e20a1e80525b0fbe9fb839d695", - "sha256:076a72531bcca99114036c3714bac8124f5529b60fb6a6986067c6f345238c76", - "sha256:0b756e5c771cdceb17622b6a0678fa78364e329d875de73a4f26bbacab8915a8", - "sha256:11996c4da9c1ca9f97143e939af75c5b24ad0fdc2fa13aeb0007ebfa3c602caf", - "sha256:119d503edf09bef37f2d0dc3b4a23c36c3c1e88e17701ab71388eb4780c046c7", - "sha256:12c96dedd6e4584fecc2bf5fbffe1c635bd516eee7ade7b839c35aeba84336b4", - "sha256:1479f533eaff4080078b6e5d06b467868bd6edd73bb6651a295bf662d40afa62", - "sha256:15d2a1c060a11fc5508715fef6177937614f9354dd3afe6a00e261775f8b0e8f", - "sha256:1d0a2d896bcbcb5f32f60571ebd48349ec322dee5e137b342483108c5cbd0f03", - "sha256:24331bd2f52cd5410e48c132f486ed02a4ca3b96133fb26e3a8f50a57c354be6", - "sha256:2cfe1661b614314d67e6884e5e19e36957ff6faea5fcea7f25840dff95288248", - "sha256:346d2c5452cc024c41d267ba99e48d38783c1706c50c4632a4484cc57b152d0e", - "sha256:36802129a3115023700c07725d981c74e23b0914551898f788e5a41aed2d63bf", - "sha256:3f238127789c993de937178c3ff836d0fad4f2da08af9f579668873ac1332a42", - "sha256:42a071c9db755f267e5d3b9909ea8c22fb071d27860dd940facfacffbde79de8", - "sha256:4d42fee0add2114e572b0cd6edefc4c52207874f58b70043f82faa8bb7141620", - "sha256:4ffc076a0e22cda949ccd062f37ecc3dc53856c6e8bdfe07e1e81c411cf31621", - "sha256:5276c7247d350819d1dae385d8f78ebfb44ee90ff11a775f981d45cb366573e5", - "sha256:565c4334cb410f5eb62280dcfb3a52629e60ce430f31dfa4bbef92ec80de4890", - "sha256:56d3f16dd807b1c56732a244ce071c135ee973d3edc9929418c1b24c5439a0fd", - "sha256:5a0bb91363041b45523e5bcbc4153a5e1eb1ddb21e46fe1910340c0d095e1a8e", - "sha256:5bd315ac63b62de5eefbfa07969162ffbda8e535c3b7b3d41b565d2a88817b71", - "sha256:5f5df0377f3e7f1366e506c5295f08d3f8761e4a6381918931fc1d9594aa435e", - "sha256:6071d12043300e50a4b7ba9caeeca92aac567bb4ac4a227709e3c77a3d788587", - "sha256:67c5822f4bb6a419bc2f2dba9fa07b5646f0cda930bafa9e1130af6822e4bdf3", - "sha256:6c3d0a4a6061adc3d3128e1e1146940d17df8cbfe3d77cb66a1df69ddcdf27d5", - "sha256:6c46c2ba24a517f391c3ab9e7a214185f95146d0b664b4b0463ab31e5387669f", - "sha256:6d8ba8065d1b60da24d94078249cbf24a02d869d7dc9eba12db1fb513a375c79", - "sha256:6fa63a86aad0f45a27c7c5a27cd9b787fe9b1aed431f97f49ee8b834fa0780a0", - "sha256:7126563c86f6b60d87414124f035ff0d29de02ad9e46ea085de2c772b0be1331", - "sha256:71cc3d1da4f682f27728745f21ed3447ee8f6a0019932126c422dd91278eb414", - "sha256:742d43cbbc7267caae6379e2156a1fd8532332920a3d919b68c2982d439a98ba", - "sha256:763cac57692d07aa950b92c20f55ef66801955b71b4a1f4f48d5422d748c6dda", - "sha256:76c4e3261d6370383b02018cb964b5d9260e3c62dea31949910e9cc3a1c802d2", - "sha256:7ae3b8b48167579066a17c5ba1631d089f931f4eae8b4359ad123807d5e75c51", - "sha256:7f369872d551708d608e50a9ab8748d3d4f32a697dc5c2c37ff16cb8d7060210", - "sha256:874a222ece2100b3a3a8f08c57da3267a4e2219d26474a46937552992fcec771", - "sha256:878f16daa9c2062e4d29c1928b6f3eb50911726ad6d2006918a29ca6b38b5080", - "sha256:8c811e59c86ce0a8515daf47db9c2484fd42e51bdb44581d7bcc9caad6c9a7a1", - "sha256:97609495479c5214c7b57173c17206ebb056507a8d26eebc17942d62f8f25944", - "sha256:985a937218aa3d1ac7013174bfcbb1cb2f3157e17c6e349e83386f33459be1c0", - "sha256:a239313e75da37d1f6548d666d4dd8554c4a92dabed15741612855d186e86e72", - "sha256:b080eb25811db46306dfce58b4760df32f40bcf5551ebba3b7c8d3ec90d9b988", - "sha256:b0cfca1b5a57b540f4761b57de485196218733153c430d58f9e048e325c98b47", - "sha256:b0e4a6f5360e5f6c3a2b250c9e9cd539a9aabf0465dbedbaf364203e74ff101b", - "sha256:b849a6cdd46608e7cc108c75e1265304e79488480a822bae7471e628f971a6f0", - "sha256:bfda0af4072df6e932ec510b72c461e1ec0ad0820a76df588cdfebf5a07f5b5d", - "sha256:c19e900b6f9df13c7f406f827c5643f83c0839a58d007b35a4d7df827601f740", - "sha256:c24d4a1b5baa46920b801aa55c0e0a640c6e7683a73a941302e102e2bd11a830", - "sha256:c774328057a4b1fc48bee2dd5a60ee1e8e0ec112d29c4e6b9c550e1686b6db5c", - "sha256:d34673ebaf562347d004a465e16e2930c6568d196bb79d67fc6358f1213a1ac7", - "sha256:d523ffef1927cb686ad787b25b2e98a5bd53e3c40673c394f07bf9b281e69796", - "sha256:d53520b54206d8569b81eee56ccd9477af2f1b3ca355df9c48ee615a11e1a637", - "sha256:d697cc38cb6fa9bae3b994dd3ce68552ffe69c453a3b6fd6a4f94bb8a8bfd70b", - "sha256:d7bec01818c3a9d185f929cd36a82cc7acf13905920f7f595942105c5eef2300", - "sha256:e6a4a4bf6fbc42b2674023ca58a47c86ee55c023a8af85420f266e86b10e7065", - "sha256:e6bd32e492cdc740ec36b6725457685c9f2aa012dd8cbdae1643fed2b6821895", - "sha256:e76642232db8330589ed1ac1cec0e9c3814c708521c336a5c79d39a5d8d8c206", - "sha256:e7ba4c964a36fe198a8c4b5d08924709d4ed0337b65ae222b6503ed3442a46e8", - "sha256:ec18a0b97ea6b912ea57dc00a3f8f3ce515d774d00951d30e2ae243589d3d021", - "sha256:ecce266e24b21615a3ed234869be84bef492f6a34bb650d0e25dc3662c59bce4", - "sha256:f0302605b3bbc439083a400cf57d7464f1ac098c722309a03abaa7d97cd420b5", - "sha256:f253b9bdf5abd039741a9594a681453c973b09dcb7edac9105961838675b7c6b", - "sha256:f263b18fdb8bf42cd7cf9849d5863847d215024c68fe74cf33bcd82641d4376a", - "sha256:f37b5282b029d9f51454f8c580eb6a24e5dc140ef5866290afb20e607d2dce5f", - "sha256:f4849709571b1a53669798d23cc8430e677dcf0eea88610a0412e1911233899a", - "sha256:f853589426920d9bb3683f6b6cd11ce48d9d06a62c0b98ea4b82ebd8db3bddec", - "sha256:f9c492644f70f80f8266748c18309a0d73c22c47903f4b62f3fb772a15a8fd5f", - "sha256:fc635b27939969d53cac53e8b8f860ea69fc98cc9867cac17dd193f41dc2a57f", - "sha256:febaf00e498230ce2e75dac910056f0e3a91c8631b7ceb6385bb39d448960bc5" - ], - "version": "==2.6.0" + "sha256:00bad63ef6f9d22ba36b01b89167176a451ea22a916d1dfa77d73e0298f1d1f9", + "sha256:05d84765bbfd0aa10890c765c56c917c237987325c4e327f3c0febbfc34365c8", + "sha256:06d9de5db244c6e45a5318713367765de0a57d82ad616869a004a710a95541e9", + "sha256:08ad70c1555d9622cecd8f1b132a5341d183a9161aba93cc9739bbaabe4220b0", + "sha256:095851409e0db75b1416c8c3e24957135d5a2a206790578e43739e92a00c17c4", + "sha256:09d729420b8edc4d8a23a518ae4553074a0054d0441c1a461b425c2f033fab5e", + "sha256:0bbeb7120ec1a9b26ce423e74cad7b414cea9e35f8e05599e3b3dceb87f4d1b6", + "sha256:0c8716b4c45fb128cd4da143749e276f150ecb0acb711f4969d7e7ebc9b2a675", + "sha256:0f45f7d58c399e90ee3bddff4f3e2f53ff95c948b2d43de304266153ebd1d778", + "sha256:111bf9913ebee4630e2cb43b61d0abb39813b231262b114e5268cd6a405a22b9", + "sha256:1474db8c4297026e1daa1699e70e25e56dff91104fe025b1a9804332f2737604", + "sha256:14bc38ced7edffff25ee748c1eabc530624c9af68f86322b030b11b7918b966f", + "sha256:172169099797f1ec469b0aadb00c653193a74757f99312c9c17dc1a18d23d972", + "sha256:188f5780f1cfbeba0c3ddb1aa3fa0415ab1a8aa04e9e89f70ad5403197013437", + "sha256:1b734b074a09b1b2e1de7df423565412d9213faefa8ca422f32be756b189f729", + "sha256:1c28b52e59a5e6aa00a929b35b04473bd479a74237ab1170c573c49e8aca61fe", + "sha256:1cc29909e4cef05d5e49f5d77ace1dc49311c7791734a048b690521c76b4b7a0", + "sha256:215a5bf8fdcbed700cc8782d4044e1f036606d5c321710d83e8da6d0fdfe07d5", + "sha256:225e19d37b234d4d721557434b7d5590cd63b6342492b689e2d694d44d7cc537", + "sha256:232e8faa8e624f3eb0552a636ebe745cee00480e0e56ad62f17808d281838f2e", + "sha256:23fae6a5a1403d16592b8823d5dea93f738c6e217a1e1bb0eefad242fb03d47f", + "sha256:27428d7b0e706307d0c697f81599e7af4f52e5873ea6bc269eae3604b16b81fe", + "sha256:280809e56a7098f48165ce134222098e4cfe7084b10d69bbc31367942e541dfd", + "sha256:2b2dc483ada55ef35990b67dc0e7a779f0b2ce79d156e452dc8b835b03c0dca9", + "sha256:2b3c7aa2c9a6533dc7234d2a303efdcb9df3f4ac4d0919ec1caf568868f12a0a", + "sha256:2c39d1cb04fc277701de6fe2119cc71facc4aff2ca0414b2e326aec337fa1ab4", + "sha256:2cb8d08330d250df47088c13683322083afbdfafdc31df205616506d6b9f068f", + "sha256:2e456150af62ee1f24a0c9976947629bfb80d80b4fbd37aa901cf794db6ba9b0", + "sha256:316147fb62c810a7667277e5ae7bb75b2871c32d2c398aeb4503cbd4cf3315e7", + "sha256:351a4fed240728dcc96966e0c4cfd3dce870525377a1cb5afac8e5cfe116ff7b", + "sha256:36bdde1aba78e4a3a6ce5cbebd0a6bc967b0c3fbd8bd99a197dcc17d654f423c", + "sha256:384be6b7df8fb6a93ddd88d4184094f2ba4f1d07c30dcd4ae164d185d31a2af6", + "sha256:3caf4ca668854bb23db4b65af0068238677b5791bcc45694bf8990f3e26e85c9", + "sha256:3dde123ce85d1ba99d9bdf44b1b3174fa22bc8fb10004e0d72bb661a0444c1a9", + "sha256:3ecdd528268478efeb78ed0132b01104bda6cd8f10c8a57708fc87b1add77e4d", + "sha256:420aa610fe392c4ee700e474673276bb4f3c4f091d001f58b1f018bf650840c1", + "sha256:440c537fdf2eaee7fdd41fb1dce5701c490c1964fdb74225b10b49a7c45bc7b4", + "sha256:462c9425fbc5315cbc20a72ca62558e5545bb0f6dc9355e2fa96fa747e9b1a80", + "sha256:4963982d5da0825768f9a80760a8560c3e4cf711a9a7ea06ff9bcb7bd250b131", + "sha256:4bbfe4474d3470c724e283bd1fe8ee9ab3cb6a4c378112926f45d41e326a7622", + "sha256:4db2e0f58153a376d9a14873e342d507ca32640640284cddf3c1e74a65929477", + "sha256:51d45d56be14b69720d11a8c61e101d86a65dc8a3a9f356bbe4d98cf4f3c5617", + "sha256:525eda30469522cd840a11ba866d0616c132f6c4be8966a297d7545e97fcb822", + "sha256:532d63c54159f7e0fb520e2f72ef596493bc43810eaa75fac7a188e898ab593b", + "sha256:5569c8314335e92570c471d60b4b03eb2a4467864805a560d133d24b27b3961a", + "sha256:56764825f64ab983d32b8c1d4ee483f415f2559e59388ba266a9fcafc44305bf", + "sha256:56f19ccba8a6ddf1382b0fb4fb8d4e1330e4a1b148e5d198f0981ba2a97c3492", + "sha256:5819b95d0ccce864066f062d2329363ae8a64b9c3d076d039c75ffc9204c2a12", + "sha256:599b04b04eb1b5b964a35986bea2bc4381145836fe550cc33c40a796b855b985", + "sha256:5f2a96c5b40727bc21a695d3a106f49e88572fa11427bf2193cabd99e624c901", + "sha256:608385f07a4b0391d4982d1efb83ad70920cd8ca495a7868e44d2a4511cbf84e", + "sha256:6abf2593b91e36f1cb1c40ac895993c7d2eb30d3f1cb0954a80e5f13697b6b69", + "sha256:6d79fd3c58a4dc71ffd0fc55982a9a2079fe94c76ccff2777092f6107d6a049a", + "sha256:6f699bf2cb223aeec04a106003bd2bf8a4fc6d4c5eddf79cacecb6b267657ac5", + "sha256:70cebcf9bc345ac1e034fa781eac3619323eaf87f7bbe26f0e28850beb6f5634", + "sha256:726a598e34657772e5f131115741ea8709e9b55fa35d63c4717bc16b2a737d38", + "sha256:76a4faef4c31953aa7b9ebe00d162f7ce9bc03fc8d423ab2dc690a11d7520a8e", + "sha256:7706336bd15acf4e42300579e42bef742c01a4eb202998f6c20c443a2ce5fd60", + "sha256:7965108069f9731306a882872c23ad4f5a8531668e82b27932a19814c52a8dd8", + "sha256:79fde5b27e35aedd958f5fb58ebabce47d7eddae5a5e3774088c30c9610195ef", + "sha256:8528c59d3d3df6618777892b60435022d8917de9ea32933d439c7ffd24437237", + "sha256:85b504f233f0484e9a74df4f286a9ae56fbbe2a648c45726761cf7b6f072cdc8", + "sha256:88c2d427ab1b20f220c1d53171b0691faa8f0a219367d84e859f1001e90ceefc", + "sha256:890355bf6ba3dc04b5a23d1328eb1f6062165e6262197cebc9acfebdcb23144c", + "sha256:8a35e308c23f039064600108fc1c8416bd102bc3cf3a6915761a9f7c801237e0", + "sha256:8bb60d5a948f00901da1d7e4953189259b3c7ef79391fecd6f18db3f48a036fe", + "sha256:8d1356c86eefbde3fe8a3c39fb81bbc8b16acc8e442e191408042e8b1d6904e3", + "sha256:9014660472f2080d550157164cc5f9376245a34a0ab877b82b95c1f894af5b28", + "sha256:932f7b77750dff7140522dc97dfd94533a599ef1c5d0be3733f556fd44a68821", + "sha256:945e97ad2bbf7885426f39641a735a31fd4ca2e84e4d0cd271d9880372d6eae1", + "sha256:97e658a3793478d6bca684f47f29f62542312683687bc045dc3cb588160e74b3", + "sha256:99196b4730d887a4bc578f05039b55dc57b131c81b5a5e03efa619b587bdf293", + "sha256:9e895cc3e5ffee269dd9866097e227a68022ef2b78d627a6ed737534d0c88c14", + "sha256:9f6f245d4a5e707d48274f38551b654a36db4fb83437c98be00d2019263aa364", + "sha256:a1f00c328b8dae1828844bac019dfe425d10a2043cc70e2f967224c5392d19ad", + "sha256:a4b43949477dc2b0d3e1d8b7c413ed74f515cef01954cdcc3fb1e2dcc49f2aff", + "sha256:a610426251d1340baa4d8b7942d2cbfe6a1e20b92c66817ab582e0d341185ab5", + "sha256:a6ae5c18b9a70cb0ae576a8a3c8a9a0659356c016b49cc6b263dd987d344f30d", + "sha256:a7bb559b68eb9cb3c4f867eb9fb39a696c4da70a41fad37b410bd0c7b426a8ce", + "sha256:ab2e03dd140ab93b91f94a785d1cd6082d5ab53ab6ec958726efa0ad17f7b87a", + "sha256:ab87c4c50d65932788d058adbbd28a209144523ffacbab81dd41582ffce26af9", + "sha256:ad1563f11dd70cb1684cfe841e4cf7f35d4f65769de21d12b72cf773a7932615", + "sha256:ad8f8c39c8df184e346184699783f105755003662f0dbe1233d9d9849650ab5f", + "sha256:b007aaf5810c708c5a2778e371aa546d7084e4e9f82f65865b2ce5a182376f42", + "sha256:b088f06d9e2f523683ae363e227173ac454dbb56c938c6d42791fdd78bad8da7", + "sha256:b499d93fa31a73e31ee62f2cbe07e4df833fd7151734b8f07c48ffe3e4547ec5", + "sha256:b6df948da34b5fb949698092573d798c76c54f2f2188db59276d599075f9ed04", + "sha256:b71d82e3f001bcb53463023f7f37e223fff56cf048f577c6d85597db94770f10", + "sha256:b85929db81105c06e8292c05cac093068e86464555c628c03f99c9f8090d68d4", + "sha256:b9b3c27aeea1752f0c1df1e29115e4b6f0249173d71e53c5f7e2c821706f028b", + "sha256:bb337ffa10824fa2025c4b1c06a2d809dbed4a4bf9e3ffb262676d084c4e0c50", + "sha256:bd2a098250c683d248a6490ac437ed56f7164d2151572231bd26c76bfe111b11", + "sha256:c35bb5fe018fd9c42be3c28e74dc7dcfae471c3c6689679dbd0bd1d6dc0f51b7", + "sha256:c384c49ce52b82d5b0355000b8aeb7e3a7654997916c1e6fd9d29697edda1076", + "sha256:c3d51ab9f3d5b9a10295abe480c50bf74ee5bf3d984c4cee77e493e575acc869", + "sha256:c3d9730341c825eb167ca06c9dddf6ad4d1b4e71ea7da73cc8c5139fcb5e14ca", + "sha256:c44b3022115eb1697315bc51aeadbade1a19d7188bcda66c52d91209cf2963ca", + "sha256:c7b7be4bff27d7ce6a81d3993755371b5f5b42436afa151868e8fd599acbab19", + "sha256:cb8566b535bc4ebb26247d6f636a27bb0038bc93fa7e55121628f5cd6b0906ac", + "sha256:cb941981676dc7859d53199a10a33ca56a3146cce6a45bc6ad70572c1147157d", + "sha256:cba09dfd3aea2addc994eb21a861c3cea2d68141bb7ebe68b0e94c73405540f9", + "sha256:d0d0923087fe1f2d85daa68463d221e90b4b8ed0356480c887eea90b2a2cc7ee", + "sha256:d2baf7ec353fa64917045b3efe26e7c12ce0d7b4d120c3773a612dce54f91585", + "sha256:d7e3ab9870c496e5a058436bf4d96ed111ca6154c8ef8147b70c44c188d6fb2c", + "sha256:dd074b06be9484040acb4c2c0462c4d19a43e377716be7ba10440f51a57bb98c", + "sha256:dd351b8fbc77c2e2ebc3eeadc0cf72bd5024a43bef5a847697e2b076d1201636", + "sha256:de4953b6b1e19dabd23767bd1f83f1cf73978372189dec0e2dd8b3d6971100d6", + "sha256:e6765c47b487341837b3731cca3c8033b971ee082f6ab41cb430aa3447686eec", + "sha256:e678696bb613f0344b79be385747aae705b327a9a32ace45a353dd16497bc719", + "sha256:e883919cea8e446c5c49717a7ce5c93a016a02b9429b81d64b9ab1d80fc12e42", + "sha256:e8963d7ac292f41654fa7cbc1a34efdb09e5a42399b2e3689c3fd5b8b4e0fe16", + "sha256:e9c54136c9fab2cefe9801e336b8a3aa7299bcfe7f387379cc6394ad1d5a484b", + "sha256:ee779a291330287b341044635fce2979176d113b0dcce0308dc5d62da7951eec", + "sha256:ef23f62b3abd287cf368341540ef2a81c86b48de9d488e182e63fe24ac165538", + "sha256:f0b54b95e39036c116ffc057b3f56f6084ce88822de3d5d1f57fa38554ccf5c1", + "sha256:f7c5745e0f96c2c16c03c7540dbe26f3b62ddee63059be0a014156933f054024", + "sha256:f90b2f44b5b23364d5fbade2c34652e15b1fcfe813c46f828e008f68a709160f", + "sha256:fa49f6cfcae4305d8cff028dc9c9a881189a38f7ca43c085aef894c58cb6fbde", + "sha256:fb8b727cd9ddff848c5f73e65470abb110f026beab403bcebbd74e7439b9bd8f", + "sha256:fea9354b7169810e2bdd6f3265ff128b564a25d38479b9ad0a9c5776e4fd0cfc", + "sha256:ff31bef13fd278446b6d1969a46db9f02c36fd905f3e75878f0fe17271f7d897", + "sha256:ff3e182c766cd6f302e99e0d8e44927d533356e9d6ac93fcd09987ebead467aa" + ], + "version": "==2.8.2" + }, + "blinker": { + "hashes": [ + "sha256:152090d27c1c5c722ee7e48504b02d76502811ce02e1523553b4cf8c8b3d3a8d", + "sha256:296320d6c28b006eb5e32d4712202dbcdcbf5dc482da298c2f44881c43884aaa" + ], + "markers": "python_version >= '3.7'", + "version": "==1.6.3" }, "bytestring-splitter": { "hashes": [ @@ -2032,103 +2398,93 @@ }, "certifi": { "hashes": [ - "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3", - "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18" + "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082", + "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9" ], "markers": "python_version >= '3.6'", - "version": "==2022.12.7" + "version": "==2023.7.22" }, "cffi": { "hashes": [ - "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5", - "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef", - "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104", - "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426", - "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405", - "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375", - "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a", - "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e", - "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc", - "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf", - "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185", - "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497", - "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3", - "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35", - "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c", - "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83", - "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21", - "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca", - "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984", - "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac", - "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd", - "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee", - "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a", - "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2", - "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192", - "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7", - "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585", - "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f", - "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e", - "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27", - "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b", - "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e", - "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e", - "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d", - "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c", - "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415", - "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82", - "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02", - "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314", - "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325", - "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c", - "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3", - "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914", - "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045", - "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d", - "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9", - "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5", - "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2", - "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c", - "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3", - "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2", - "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8", - "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d", - "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d", - "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9", - "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162", - "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76", - "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4", - "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e", - "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9", - "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6", - "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b", - "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01", - "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0" - ], - "version": "==1.15.1" + "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc", + "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a", + "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417", + "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab", + "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520", + "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36", + "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743", + "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8", + "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed", + "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684", + "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56", + "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324", + "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d", + "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235", + "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e", + "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088", + "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000", + "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7", + "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e", + "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673", + "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c", + "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe", + "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2", + "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098", + "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8", + "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a", + "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0", + "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b", + "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896", + "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e", + "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9", + "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2", + "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b", + "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6", + "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404", + "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f", + "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0", + "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4", + "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc", + "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936", + "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba", + "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872", + "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb", + "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614", + "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1", + "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d", + "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969", + "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b", + "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4", + "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627", + "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956", + "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357" + ], + "markers": "python_version >= '3.8'", + "version": "==1.16.0" }, "cfgv": { "hashes": [ - "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426", - "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736" + "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", + "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560" ], - "version": "==3.3.1" + "markers": "python_version >= '3.8'", + "version": "==3.4.0" }, "charset-normalizer": { "hashes": [ "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" ], - "markers": "python_version >= '3.6'", + "markers": "python_full_version >= '3.6.0'", "version": "==2.1.1" }, "click": { "hashes": [ - "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", - "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" + "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", + "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de" ], "markers": "python_version >= '3.7'", - "version": "==8.1.3" + "version": "==8.1.7" }, "colorama": { "hashes": [ @@ -2138,6 +2494,13 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'", "version": "==0.4.6" }, + "commonmark": { + "hashes": [ + "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60", + "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9" + ], + "version": "==0.9.1" + }, "constant-sorrow": { "hashes": [ "sha256:11028645c2b136ab1197869c42ba93e33a558d093ceff887b4384ef967106147", @@ -2210,137 +2573,151 @@ "sha256:fc2af30ed0d5ae0b1abdb4ebdce598eafd5b35397d4d75deb341a614d333d987" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==6.5.0" }, "cryptography": { "hashes": [ - "sha256:0e70da4bdff7601b0ef48e6348339e490ebfb0cbe638e083c9c41fb49f00c8bd", - "sha256:10652dd7282de17990b88679cb82f832752c4e8237f0c714be518044269415db", - "sha256:175c1a818b87c9ac80bb7377f5520b7f31b3ef2a0004e2420319beadedb67290", - "sha256:1d7e632804a248103b60b16fb145e8df0bc60eed790ece0d12efe8cd3f3e7744", - "sha256:1f13ddda26a04c06eb57119caf27a524ccae20533729f4b1e4a69b54e07035eb", - "sha256:2ec2a8714dd005949d4019195d72abed84198d877112abb5a27740e217e0ea8d", - "sha256:2fa36a7b2cc0998a3a4d5af26ccb6273f3df133d61da2ba13b3286261e7efb70", - "sha256:2fb481682873035600b5502f0015b664abc26466153fab5c6bc92c1ea69d478b", - "sha256:3178d46f363d4549b9a76264f41c6948752183b3f587666aff0555ac50fd7876", - "sha256:4367da5705922cf7070462e964f66e4ac24162e22ab0a2e9d31f1b270dd78083", - "sha256:4eb85075437f0b1fd8cd66c688469a0c4119e0ba855e3fef86691971b887caf6", - "sha256:50a1494ed0c3f5b4d07650a68cd6ca62efe8b596ce743a5c94403e6f11bf06c1", - "sha256:53049f3379ef05182864d13bb9686657659407148f901f3f1eee57a733fb4b00", - "sha256:6391e59ebe7c62d9902c24a4d8bcbc79a68e7c4ab65863536127c8a9cd94043b", - "sha256:67461b5ebca2e4c2ab991733f8ab637a7265bb582f07c7c88914b5afb88cb95b", - "sha256:78e47e28ddc4ace41dd38c42e6feecfdadf9c3be2af389abbfeef1ff06822285", - "sha256:80ca53981ceeb3241998443c4964a387771588c4e4a5d92735a493af868294f9", - "sha256:8a4b2bdb68a447fadebfd7d24855758fe2d6fecc7fed0b78d190b1af39a8e3b0", - "sha256:8e45653fb97eb2f20b8c96f9cd2b3a0654d742b47d638cf2897afbd97f80fa6d", - "sha256:998cd19189d8a747b226d24c0207fdaa1e6658a1d3f2494541cb9dfbf7dcb6d2", - "sha256:a10498349d4c8eab7357a8f9aa3463791292845b79597ad1b98a543686fb1ec8", - "sha256:b4cad0cea995af760f82820ab4ca54e5471fc782f70a007f31531957f43e9dee", - "sha256:bfe6472507986613dc6cc00b3d492b2f7564b02b3b3682d25ca7f40fa3fd321b", - "sha256:c9e0d79ee4c56d841bd4ac6e7697c8ff3c8d6da67379057f29e66acffcd1e9a7", - "sha256:ca57eb3ddaccd1112c18fc80abe41db443cc2e9dcb1917078e02dfa010a4f353", - "sha256:ce127dd0a6a0811c251a6cddd014d292728484e530d80e872ad9806cfb1c5b3c" + "sha256:0c327cac00f082013c7c9fb6c46b7cc9fa3c288ca702c74773968173bda421bf", + "sha256:0d2a6a598847c46e3e321a7aef8af1436f11c27f1254933746304ff014664d84", + "sha256:227ec057cd32a41c6651701abc0328135e472ed450f47c2766f23267b792a88e", + "sha256:22892cc830d8b2c89ea60148227631bb96a7da0c1b722f2aac8824b1b7c0b6b8", + "sha256:392cb88b597247177172e02da6b7a63deeff1937fa6fec3bbf902ebd75d97ec7", + "sha256:3be3ca726e1572517d2bef99a818378bbcf7d7799d5372a46c79c29eb8d166c1", + "sha256:573eb7128cbca75f9157dcde974781209463ce56b5804983e11a1c462f0f4e88", + "sha256:580afc7b7216deeb87a098ef0674d6ee34ab55993140838b14c9b83312b37b86", + "sha256:5a70187954ba7292c7876734183e810b728b4f3965fbe571421cb2434d279179", + "sha256:73801ac9736741f220e20435f84ecec75ed70eda90f781a148f1bad546963d81", + "sha256:7d208c21e47940369accfc9e85f0de7693d9a5d843c2509b3846b2db170dfd20", + "sha256:8254962e6ba1f4d2090c44daf50a547cd5f0bf446dc658a8e5f8156cae0d8548", + "sha256:88417bff20162f635f24f849ab182b092697922088b477a7abd6664ddd82291d", + "sha256:a48e74dad1fb349f3dc1d449ed88e0017d792997a7ad2ec9587ed17405667e6d", + "sha256:b948e09fe5fb18517d99994184854ebd50b57248736fd4c720ad540560174ec5", + "sha256:c707f7afd813478e2019ae32a7c49cd932dd60ab2d2a93e796f68236b7e1fbf1", + "sha256:d38e6031e113b7421db1de0c1b1f7739564a88f1684c6b89234fbf6c11b75147", + "sha256:d3977f0e276f6f5bf245c403156673db103283266601405376f075c849a0b936", + "sha256:da6a0ff8f1016ccc7477e6339e1d50ce5f59b88905585f77193ebd5068f1e797", + "sha256:e270c04f4d9b5671ebcc792b3ba5d4488bf7c42c3c241a3748e2599776f29696", + "sha256:e886098619d3815e0ad5790c973afeee2c0e6e04b4da90b88e6bd06e2a0b1b72", + "sha256:ec3b055ff8f1dce8e6ef28f626e0972981475173d7973d63f271b29c8a2897da", + "sha256:fba1e91467c65fe64a82c689dc6cf58151158993b13eb7a7f3f4b7f395636723" ], - "markers": "python_version >= '3.6'", - "version": "==38.0.4" + "markers": "python_version >= '3.7'", + "version": "==41.0.5" }, "cytoolz": { "hashes": [ - "sha256:02583c9fd4668f9e343ad4fc0e0f9651b1a0c16fe92bd208d07fd07de90fdc99", - "sha256:02dc4565a8d27c9f3e87b715c0a300890e17c94ba1294af61c4ba97aa8482b22", - "sha256:09f5652caeac85e3735bd5aaed49ebf4eeb7c0f15cb9b7c4a5fb6f45308dc2fd", - "sha256:09fac69cebcb79a6ed75565fe2de9511be6e3d93f30dad115832cc1a3933b6ce", - "sha256:0c9fe89548b1dc7c8b3160758d192791b32bd42b1c244a20809a1053a9d74428", - "sha256:0f94b4a3500345de5853d1896b7e770ce4a6577a431f43ff7d8f05f9051aeb7d", - "sha256:12d3d11ceb0fce8be5463f1e363366888c4b71e68fb2f5d536e4790b933cfd7e", - "sha256:16748ea2b40c5978190d9acf9aa8fbacbfb440964c1035dc16cb14dbd557edb5", - "sha256:1744217505b835fcf55d82d67addd0d361791c4fd6a2f485f034b343ffc7edb3", - "sha256:1a79658fd264c5f82ea1b5cb45cf3899afabd9ec3e58c333bea042a2b4a94134", - "sha256:1c22255e7458feb6f43d99c9578396e91d5934757c552128f6afd3b093b41c00", - "sha256:1cf9ae77eed57924becd3ab65ae24487d7b1f9823d3e685d796e58f57424f82a", - "sha256:21986f4a970c03ca84806b3a08e89386ac4aeb54c9b79d6a7268e83225331a87", - "sha256:231d87ffb5fc468989e35336a2f8da1c9b8d97cfd9300cf2df32e953e4d20cae", - "sha256:25c037a7b4f49730ccc295a03cd2217ba67ff43ac0918299f5f368271433ff0f", - "sha256:274bc965cd93d6fa0bfe6f770cf6549bbe58d7b0a48dd6893d3f2c4b495d7f95", - "sha256:2bd1c692ab706acb46cfebe7105945b07f7274598097e32c8979d3b22ae62cc6", - "sha256:2d29cf7a44a8abaeb00537e3bad7abf823fce194fe707c366f81020d384e22f7", - "sha256:2ee9ca2cfc939607926096c7cc6f298cee125f8ca53a4f46745f8dfbb7fb7ab1", - "sha256:336551092eb1cfc2ad5878cc08ef290f744843f84c1dda06f9e4a84d2c440b73", - "sha256:337c9a3ce2929c6361bcc1b304ce81ed675078a34c203dbb7c3e154f7ed1cca8", - "sha256:38e3386f63ebaea46a4ee0bfefc9a38590c3b78ab86439766b5225443468a76b", - "sha256:3a5408a74df84e84aa1c86a2f9f2ffaed51a55f34bbad5b8fae547cb9167e977", - "sha256:3e8335998e21205574fc7d8d17844a9cc0dd4cbb25bb7716d90683a935d2c879", - "sha256:46b9f4af719b113c01a4144c52fc4b929f98a47017a5408e3910050f4641126b", - "sha256:4b8b1d9764d08782caa8ba0e91d76b95b973a82f4ce2a3f9c7e726bfeaddbdfa", - "sha256:59263f296e043d4210dd34f91e6f11c4b20e6195976da23170d5ad056030258a", - "sha256:5b7079b3197256ac6bf73f8b9484d514fac68a36d05513b9e5247354d6fc2885", - "sha256:68336dfbe00efebbb1d02b8aa00b570dceec5d03fbd818c620aa246a8f5e5409", - "sha256:69c04ae878d5bcde5462e7290f950bfce11fd139ec4b481687983326658e6dbe", - "sha256:6aade6ebb4507330b0540af58dc2804415945611e90c70bb97360973e487c48a", - "sha256:6f87472837c26b3bc91f9767c7adcfb935d0c097937c6744250672cd8c36019d", - "sha256:6fa49cfaa0eedad59d8357a482bd10e2cc2a12ad9f41aae53427e82d3eba068a", - "sha256:7244fb0d0b87499becc29051b82925e0daf3838e6c352e6b2d62e0f969b090af", - "sha256:798dff7a40adbb3dfa2d50499c2038779061ebc37eccedaf28fa296cb517b84e", - "sha256:79b46cda959f026bd9fc33b4046294b32bd5e7664a4cf607179f80ac93844e7f", - "sha256:7fe93ffde090e2867f8ce4369d0c1abf5651817a74a3d0a4da2b1ffd412603ff", - "sha256:8060be3b1fa24a4e3b165ce3c0ee6048f5e181289af57dbd9e3c4d4b8545dd78", - "sha256:8237612fed78d4580e94141a74ac0977f5a9614dd7fa8f3d2fcb30e6d04e73aa", - "sha256:886b3bf8fa99510836107097a5e5a2bd81631d3795dedc5684e25bef6538ac39", - "sha256:8c0101bb2b2bcc0de2e2eb288a132c261e5fa883b1423799b47d4f0cfd879cd6", - "sha256:8f40897f6f341e03a945759fcdb2208dc7c64dc312386d3088c47b78fca2a3b2", - "sha256:94b067c88de0eaca174211c8422b3f72cbfb63b101a0eeb528c4f21282ca0afe", - "sha256:9ac7758c5c5a66664285831261a9af8e0af504026e0987cd01535045945df6e1", - "sha256:9dd7dbdfc24ed309af96be170c9030f43713950afab2b4bed1d372a91b37cbb0", - "sha256:9e32292721f16516a574891a1af6760cba37a0f426a2b2cea6f9d560131a76ea", - "sha256:9ecdd6e2be8d59b76c2bd3e2d832e7b3d5b2535c418b13cfa85e3b17de985199", - "sha256:a15157f4280f6e5d7c2d0892847a6c4dffbd2c5cefccaf1ac1f1c6c3d2cf9936", - "sha256:a2cca43caea857e761cc458ffb4f7af397a13824c5e71341ca08035ff5ff0b27", - "sha256:a4acf6cb20f01a5eb5b6d459e08fb92aacfb4de8bc97e25437c1a3e71860b452", - "sha256:a8e69c9f3a32e0f9331cf6707a0f159c6dec0ff2a9f41507f6b2d06cd423f0d0", - "sha256:a8feb4d056c22983723278160aff8a28c507b0e942768f4e856539a60e7bb874", - "sha256:ae403cac13c2b9a2a92e56468ca1f822899b64d75d5be8ca802f1c14870d9133", - "sha256:ae7f417bb2b4e3906e525b3dbe944791dfa9248faea719c7a9c200aa1a019a4e", - "sha256:b05dc257996c0accf6f877b1f212f74dc134b39c46baac09e1894d9d9c970b6a", - "sha256:b716f66b5ee72dbf9a001316ffe72afe0bb8f6ce84e341aec64291c0ff16b9f4", - "sha256:bb0fc2ed8efa89f31ffa99246b1d434ff3db2b7b7e35147486172da849c8024a", - "sha256:c105b05f85e03fbcd60244375968e62e44fe798c15a3531c922d531018d22412", - "sha256:c4ff74cb0e1a50de7f59e54a156dfd734b6593008f6f804d0726a73b89d170cd", - "sha256:c818a382b828e960fbbedbc85663414edbbba816c2bf8c1bb5651305d79bdb97", - "sha256:c9f8c9b3cfa20b4ce6a89b7e2e7ffda76bdd81e95b7d20bbb2c47c2b31e72622", - "sha256:cb072fa81caab93a5892c4b69dfe0d48f52026a7fe83ba2567020a7995a456e7", - "sha256:d035805dcdefcdfe64d97d6e1e7603798588d5e1ae08e61a5dae3258c3cb407a", - "sha256:d212296e996a70db8d9e1c0622bc8aefa732eb0416b5441624d0fd5b853ea391", - "sha256:d511dd49eb1263ccb4e5f84ae1478dc2824d66b813cdf700e1ba593faa256ade", - "sha256:d61bc1713662e7d9aa3e298dad790dfd027c5c0f1342c36be8401aebe3d3d453", - "sha256:db619f17705067f1f112d3e84a0904b2f04117e50cefc4016f435ff0dc59bc4e", - "sha256:dc8df9adfca0da9956589f53764d459389ce86d824663c7217422232f1dfbc9d", - "sha256:dd840adfe027d379e7aede973bc0e193e6eef9b33d46d1d42826e26db9b37d7e", - "sha256:deb8550f487de756f1c24c56fa2c8451a53c0346868c13899c6b3a39b1f3d2c3", - "sha256:e17516a102731bcf86446ce148127a8cd2887cf27ac388990cd63881115b4fdc", - "sha256:ed8771e36430fb0e4398030569bdab1419e4e74f7bcd51ea57239aa95441983a", - "sha256:edf460dc6bed081f274cd3d8ae162dd7e382014161d65edcdec832035d93901b", - "sha256:ee1fe1a3d0c8c456c3fbf62f28d178f870d14302fcd1edbc240b717ae3ab08de", - "sha256:ee92dadb312e657b9b666a0385fafc6dad073d8a0fbef5cea09e21011554206a", - "sha256:ef4a496a3175aec595ae24ad03e0bb2fe76401f8f79e7ef3d344533ba990ec0e", - "sha256:f1f5c1ef04240b323b9e6b87d4b1d7f14b735e284a33b18a509537a10f62715c", - "sha256:f24e70d29223cde8ce3f5aefa7fd06bda12ae4386dcfbc726773e95b099cde0d", - "sha256:f26079bc2d0b7aa1a185516ac9f7cda0d7932da6c60589bfed4079e3a5369e83", - "sha256:f5784adcdb285e70b61efc1a369cd61c6b7f1e0b5d521651f93cde09549681f5", - "sha256:f71b49a41826a8e7fd464d6991134a6d022a666be4e76d517850abbea561c909", - "sha256:f909760f89a54d860cf960b4cd828f9f6301fb104cd0de5b15b16822c9c4828b", - "sha256:f959c1319b7e6ed3367b0f5a54a7b9c59063bd053c74278b27999db013e568df", - "sha256:fa5ded9f811c36668239adb4806fca1244b06add4d64af31119c279aab1ef8a6" + "sha256:00547da587f124b32b072ce52dd5e4b37cf199fedcea902e33c67548523e4678", + "sha256:0295289c4510efa41174850e75bc9188f82b72b1b54d0ea57d1781729c2924d5", + "sha256:03b58f843f09e73414e82e57f7e8d88f087eaabf8f276b866a40661161da6c51", + "sha256:0568d4da0a9ee9f9f5ab318f6501557f1cfe26d18c96c8e0dac7332ae04c6717", + "sha256:08a0e03f287e45eb694998bb55ac1643372199c659affa8319dfbbdec7f7fb3c", + "sha256:0a9d12436fd64937bd2c9609605f527af7f1a8db6e6637639b44121c0fe715d6", + "sha256:101b5bd32badfc8b1f9c7be04ba3ae04fb47f9c8736590666ce9449bff76e0b1", + "sha256:14108cafb140dd68fdda610c2bbc6a37bf052cd48cfebf487ed44145f7a2b67f", + "sha256:18580d060fa637ff01541640ecde6de832a248df02b8fb57e6dd578f189d62c7", + "sha256:18a0f838677f9510aef0330c0096778dd6406d21d4ff9504bf79d85235a18460", + "sha256:1ce324d1b413636ea5ee929f79637821f13c9e55e9588f38228947294944d2ed", + "sha256:246368e983eaee9851b15d7755f82030eab4aa82098d2a34f6bef9c689d33fcc", + "sha256:24c0d71e9ac91f4466b1bd280f7de43aa4d94682daaf34d85d867a9b479b87cc", + "sha256:275d53fd769df2102d6c9fc98e553bd8a9a38926f54d6b20cf29f0dd00bf3b75", + "sha256:294d24edc747ef4e1b28e54365f713becb844e7898113fafbe3e9165dc44aeea", + "sha256:2fb740482794a72e2e5fec58e4d9b00dcd5a60a8cef68431ff12f2ba0e0d9a7e", + "sha256:31d4b0455d72d914645f803d917daf4f314d115c70de0578d3820deb8b101f66", + "sha256:388f840fd911d61a96e9e595eaf003f9dc39e847c9060b8e623ab29e556f009b", + "sha256:3e993804e6b04113d61fdb9541b6df2f096ec265a506dad7437517470919c90f", + "sha256:4180b2785d1278e6abb36a72ac97c92432db53fa2df00ee943d2c15a33627d31", + "sha256:4416ee86a87180b6a28e7483102c92debc077bec59c67eda8cc63fc52a218ac0", + "sha256:45c7b4eac7571707269ebc2893facdf87e359cd5c7cfbfa9e6bd8b33fb1079c5", + "sha256:460c05238fbfe6d848141669d17a751a46c923f9f0c9fd8a3a462ab737623a44", + "sha256:478051e5ef8278b2429864c8d148efcebdc2be948a61c9a44757cd8c816c98f5", + "sha256:481e3129a76ea01adcc0e7097ccb8dbddab1cfc40b6f0e32c670153512957c0f", + "sha256:48425107fbb1af3f0f2410c004f16be10ffc9374358e5600b57fa543f46f8def", + "sha256:4a7d8b869ded171f6cdf584fc2fc6ae03b30a0e1e37a9daf213a59857a62ed90", + "sha256:4bff49986c9bae127928a2f9fd6313146a342bfae8292f63e562f872bd01b871", + "sha256:51d3495235af09f21aa92a7cdd51504bda640b108b6be834448b774f52852c09", + "sha256:5556acde785a61d4cf8b8534ae109b023cbd2f9df65ee2afbe070be47c410f8c", + "sha256:55e94124af9c8fbb1df54195cc092688fdad0765641b738970b6f1d5ea72e776", + "sha256:5616d386dfbfba7c39e9418ba668c734f6ceaacc0130877e8a100cad11e6838b", + "sha256:57233e1600560ceb719bed759dc78393edd541b9a3e7fefc3079abd83c26a6ea", + "sha256:593e89e2518eaf81e96edcc9ef2c5fca666e8fc922b03d5cb7a7b8964dbee336", + "sha256:5998f81bf6a2b28a802521efe14d9fc119f74b64e87b62ad1b0e7c3d8366d0c7", + "sha256:5e4e612b7ecc9596e7c859cd9e0cd085e6d0c576b4f0d917299595eb56bf9c05", + "sha256:5fef7b602ccf8a3c77ab483479ccd7a952a8c5bb1c263156671ba7aaa24d1035", + "sha256:63b31345e20afda2ae30dba246955517a4264464d75e071fc2fa641e88c763ec", + "sha256:663911786dcde3e4a5d88215c722c531c7548903dc07d418418c0d1c768072c0", + "sha256:673d6e9e3aa86949343b46ac2b7be266c36e07ce77fa1d40f349e6987a814d6e", + "sha256:68ae7091cc73a752f0b938f15bb193de80ca5edf5ae2ea6360d93d3e9228357b", + "sha256:698da4fa1f7baeea0607738cb1f9877ed1ba50342b29891b0223221679d6f729", + "sha256:6a93644d7996fd696ab7f1f466cd75d718d0a00d5c8118b9fe8c64231dc1f85e", + "sha256:6c8d0dff4865da54ae825d43e1721925721b19f3b9aca8e730c2ce73dee2c630", + "sha256:732d08228fa8d366fec284f7032cc868d28a99fa81fc71e3adf7ecedbcf33a0f", + "sha256:735147aa41b8eeb104da186864b55e2a6623c758000081d19c93d759cd9523e3", + "sha256:7a92aab8dd1d427ac9bc7480cfd3481dbab0ef024558f2f5a47de672d8a5ffaa", + "sha256:7d352d4de060604e605abdc5c8a5d0429d5f156cb9866609065d3003454d4cea", + "sha256:81074edf3c74bc9bd250d223408a5df0ff745d1f7a462597536cd26b9390e2d6", + "sha256:81e6a9a8fda78a2f4901d2915b25bf620f372997ca1f20a14f7cefef5ad6f6f4", + "sha256:843500cd3e4884b92fd4037912bc42d5f047108d2c986d36352e880196d465b0", + "sha256:89247ac220031a4f9f689688bcee42b38fd770d4cce294e5d914afc53b630abe", + "sha256:8bb624dbaef4661f5e3625c1e39ad98ecceef281d1380e2774d8084ad0810275", + "sha256:9007bb1290c79402be6b84bcf9e7a622a073859d61fcee146dc7bc47afe328f3", + "sha256:9070ae35c410d644e6df98a8f69f3ed2807e657d0df2a26b2643127cbf6944a5", + "sha256:908c13f305d34322e11b796de358edaeea47dd2d115c33ca22909c5e8fb036fd", + "sha256:9480b4b327be83c4d29cb88bcace761b11f5e30198ffe2287889455c6819e934", + "sha256:960d85ebaa974ecea4e71fa56d098378fa51fd670ee744614cbb95bf95e28fc7", + "sha256:96796594c770bc6587376e74ddc7d9c982d68f47116bb69d90873db5e0ea88b6", + "sha256:97cf514a9f3426228d8daf880f56488330e4b2948a6d183a106921217850d9eb", + "sha256:997b7e0960072f6bb445402da162f964ea67387b9f18bda2361edcc026e13597", + "sha256:9b28787eaf2174e68f0acb3c66f9c6b98bdfeb0930c0d0b08e1941c7aedc8d27", + "sha256:9bf51354e15520715f068853e6ab8190e77139940e8b8b633bdb587956a08fb0", + "sha256:9e5075e30be626ef0f9bedf7a15f55ed4d7209e832bc314fdc232dbd61dcbf44", + "sha256:a08b4346350660799d81d4016e748bcb134a9083301d41f9618f64a6077f89f2", + "sha256:a67f75cc51a2dc7229a8ac84291e4d61dc5abfc8940befcf37a2836d95873340", + "sha256:a973f5286758f76824ecf19ae1999f6697371a9121c8f163295d181d19a819d7", + "sha256:ab911033e5937fc221a2c165acce7f66ae5ac9d3e54bec56f3c9c197a96be574", + "sha256:ad92e37be0b106fdbc575a3a669b43b364a5ef334495c9764de4c2d7541f7a99", + "sha256:ad9ea4a50d2948738351790047d45f2b1a023facc01bf0361988109b177e8b2f", + "sha256:b029bdd5a8b6c9a7c0e8fdbe4fc25ffaa2e09b77f6f3462314696e3a20511829", + "sha256:b41a85b9b9a2530b72b0d3d10e383fc3c2647ae88169d557d5e216f881860318", + "sha256:baf020f4b708f800b353259cd7575e335a79f1ac912d9dda55b2aa0bf3616e42", + "sha256:c08094b9e5d1b6dfb0845a0253cc2655ca64ce70d15162dfdb102e28c8993493", + "sha256:c26805b6c8dc8565ed91045c44040bf6c0fe5cb5b390c78cd1d9400d08a6cd39", + "sha256:c6ee222671eed5c5b16a5ad2aea07f0a715b8b199ee534834bc1dd2798f1ade7", + "sha256:c820608e7077416f766b148d75e158e454881961881b657cff808529d261dd24", + "sha256:cb081b2b02bf4405c804de1ece6f904916838ab0e057f1446e4ac12fac827960", + "sha256:cbe038bb78d599b5a29d09c438905defaa615a522bc7e12f8016823179439497", + "sha256:cd461e402e24929d866f05061d2f8337e3a8456e75e21b72c125abff2477c7f7", + "sha256:cde6dbb788a4cbc4a80a72aa96386ba4c2b17bdfff3ace0709799adbe16d6476", + "sha256:ce7889dc3701826d519ede93cdff11940fb5567dbdc165dce0e78047eece02b7", + "sha256:d0086ba8d41d73647b13087a3ca9c020f6bfec338335037e8f5172b4c7c8dce5", + "sha256:d29988bde28a90a00367edcf92afa1a2f7ecf43ea3ae383291b7da6d380ccc25", + "sha256:d494befe648c13c98c0f3d56d05489c839c9228a32f58e9777305deb6c2c1cee", + "sha256:df4e32badb2ccf1773e1e74020b7e3b8caf9e92f842c6be7d14888ecdefc2c6c", + "sha256:e6de6a4bdfaee382c2de2a3580b3ae76fce6105da202bbd835e5efbeae6a9c6e", + "sha256:f039c5373f7b314b151432c73219216857b19ab9cb834f0eb5d880f74fc7851c", + "sha256:f6e86ac2b45a95f75c6f744147483e0fc9697ce7dfe1726083324c236f873f8b", + "sha256:f9c690b359f503f18bf1c46a6456370e4f6f3fc4320b8774ae69c4f85ecc6c94", + "sha256:fa436abd4ac9ca71859baf5794614e6ec8fa27362f0162baedcc059048da55f7", + "sha256:fa44215bc31675a6380cd896dadb7f2054a7b94cfb87e53e52af844c65406a54", + "sha256:ff451d614ca1d4227db0ffa627fb51df71968cf0d9baf0210528dad10fdbc3ab" ], "markers": "implementation_name == 'cpython'", - "version": "==0.12.0" + "version": "==0.12.2" + }, + "dataclassy": { + "hashes": [ + "sha256:ad6622cb91e644d13f68768558983fbc22c90a8ff7e355638485d18b9baf1198", + "sha256:bcb030d3d700cf9b1597042bbc8375b92773e6f68f65675a7071862c0ddb87f5" + ], + "version": "==0.11.1" }, "dateparser": { "hashes": [ - "sha256:4431159799b63d8acec5d7d844c5e06edf3d1b0eb2bda6d4cac87134ddddd01c", - "sha256:73ec6e44a133c54076ecf9f9dc0fbe3dd4831f154f977ff06f53114d57c5425e" + "sha256:070b29b5bbf4b1ec2cd51c96ea040dc68a614de703910a91ad1abba18f9f379f", + "sha256:86b8b7517efcc558f085a142cdb7620f0921543fcabdb538c8a4c4001d8178e3" ], "markers": "python_version >= '3.7'", - "version": "==1.1.4" + "version": "==1.1.8" }, "decorator": { "hashes": [ @@ -2349,60 +2726,75 @@ ], "version": "==5.1.1" }, + "deprecated": { + "hashes": [ + "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c", + "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3" + ], + "version": "==1.2.14" + }, "distlib": { "hashes": [ - "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46", - "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e" + "sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057", + "sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8" ], - "version": "==0.3.6" + "version": "==0.3.7" }, - "eip712-structs": { + "eip712": { "hashes": [ - "sha256:b24400aef07b4d0287fb9bf8ce02b0abbe80c476d1b67222a7c5158df3a3e38d" + "sha256:3997dace7e581b66a84d106a10baac47a3f6c94095d79c7d0971ca0ede1926ad", + "sha256:c984c577358d1c7e5d4e52802bf4bd0432e965ba7326448998f95fcc1b6d5269" ], - "version": "==1.1.0" + "version": "==0.2.1" }, "eth-abi": { "hashes": [ - "sha256:63d16f1f60870afc974cb0a3325fb275fa97822be1723b8878598df25eea8096", - "sha256:c3872e3ac1e9ef3f8c6599aaca4ee536d536eefca63a6892ab937f0560edb656" + "sha256:60d88788d53725794cdb07c0f0bb0df2a31a6e1ad19644313fe6117ac24eeeb0", + "sha256:abd83410a5326145bf178675c276de0ed154f6dc695dcad1beafaa44d97f44ae" ], - "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==3.0.1" + "markers": "python_version < '4' and python_full_version >= '3.7.2'", + "version": "==4.2.1" }, "eth-account": { "hashes": [ - "sha256:61360e9e514e09e49929ed365ca0e1656758ecbd11248c629ad85b4335c2661a", - "sha256:f4d339f031348ba4de2bdd1fa9872019183a7252117f65b6e8019961d5c09ca8" + "sha256:0ccc0edbb17021004356ae6e37887528b6e59e6ae6283f3917b9759a5887203b", + "sha256:ccb2d90a16c81c8ea4ca4dc76a70b50f1d63cea6aff3c5a5eddedf9e45143eca" ], "markers": "python_version >= '3.6' and python_version < '4'", - "version": "==0.7.0" + "version": "==0.8.0" + }, + "eth-ape": { + "hashes": [ + "sha256:78001209dfdf8c7973c649b8cbba73d3399cd649aeee4223d0b29078ae997201", + "sha256:f6c5137a10edcc2a37a8f8736882e412b2fb3b326d00d8128538e73dc031f89b" + ], + "version": "==0.6.19" }, "eth-bloom": { "hashes": [ - "sha256:5d6d28fa60ee1e25436c45b9593798d7e193224b364ea1a212050055dfa1942c", - "sha256:688317306d87b823da63d24e1ad706defadbd865887ed4bddf7fbd0410b2093c" + "sha256:73576828dff7566b9216403e0898966912f370bae5734241dd3f50ce5664a825", + "sha256:cc86ab9670577996f7fcb8445b7a164ecd211ac91d9c4c2b5a47678623419927" ], - "markers": "python_version >= '3.6' and python_version < '4'", - "version": "==1.0.4" + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==2.0.0" }, "eth-hash": { "extras": [ "pycryptodome" ], "hashes": [ - "sha256:3c884e4f788b38cc92cff05c4e43bc6b82686066f04ecfae0e11cdcbe5a283bd", - "sha256:8cde211519ff1a98b46e9057cb909f12ab62e263eb30a0a94e2f7e1f46ac67a0" + "sha256:1b5f10eca7765cc385e1430eefc5ced6e2e463bb18d1365510e2e539c1a6fe4e", + "sha256:251f62f6579a1e247561679d78df37548bd5f59908da0b159982bf8293ad32f0" ], - "markers": "python_version >= '3.5' and python_version < '4'", - "version": "==0.3.3" + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==0.5.2" }, "eth-keyfile": { "hashes": [ - "sha256:7a874b179771827ffc7e38403ec412b8b3ff1a8c5cc945169609e799fadc7000", - "sha256:d30597cdecb8ccd3b56bb275cd86fcdc7a279f86eafa92ddc49f66512f0bff67" + "sha256:471be6e5386fce7b22556b3d4bde5558dbce46d2674f00848027cb0a20abdc8c", + "sha256:609773a1ad5956944a33348413cad366ec6986c53357a806528c8f61c4961560" ], - "version": "==0.6.0" + "version": "==0.6.1" }, "eth-keys": { "hashes": [ @@ -2421,194 +2813,197 @@ }, "eth-tester": { "hashes": [ - "sha256:751c7991fd40db6610836aafe34c0d4c1ba152cc955e453612c1f4d520ac5f9e", - "sha256:dc9210e22f488c539c8ca80262616b4af6d60d6f28150cd70080e7233ff79856" + "sha256:0e4367d99ae242efdb8c1d18ed99d1ff3f03149abb0a4c2427bc6d333ebef13b", + "sha256:b9cbc93d0b17a6e8acbb52294dad214ee223cf88209fa5be66ead353937d274c" ], - "markers": "python_full_version >= '3.6.8' and python_version < '4'", - "version": "==0.8.0b1" + "markers": "python_version < '4' and python_full_version >= '3.6.8'", + "version": "==0.9.1b1" }, "eth-typing": { "hashes": [ - "sha256:177e2070da9bf557fe0fd46ee467a7be2d0b6476aa4dc18680603e7da1fc5690", - "sha256:2d7540c1c65c0e686c1dc357b8376a53caf4e1693724a90191ad133be568841d" + "sha256:9d80c7d112a8774bddeb7278b1bc2f17ca4c062825476ce6bc9cba4d47956010", + "sha256:e21a8b0688581a6765f72fa184d86d06c3949e354d4af5293798abc0b4255989" ], - "markers": "python_version >= '3.6' and python_version < '4'", - "version": "==3.2.0" + "markers": "python_version < '4' and python_full_version >= '3.7.2'", + "version": "==3.5.1" }, "eth-utils": { "hashes": [ - "sha256:63901e54ec9e4ac16ae0a0d28e1dc48b968c20184d22f2727e5f3ca24b6250bc", - "sha256:fcb4c3c1b32947ba92970963f9aaf40da73b04ea1034964ff8c0e70595127138" + "sha256:085b42f5745f46d22a186fbd873d79f66a79171c02eccd78792d1dddd672f324", + "sha256:d539ac0bb1e759abb39f71efbcd77301eede86b4bf449278e4ad2fbf10aac67a" ], "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==2.1.0" + "version": "==2.3.0" }, - "exceptiongroup": { + "ethpm-types": { "hashes": [ - "sha256:542adf9dea4055530d6e1279602fa5cb11dab2395fa650b8674eaec35fc4a828", - "sha256:bd14967b79cd9bdb54d97323216f8fdf533e278df937aa2a90089e7d6e06e5ec" + "sha256:1fcf4fd551133ec917b99406b206713f34112f5e3c030ece5dcb3e5ed8562ee3", + "sha256:deaa9ec75cc8d02a047d5a2b065bd038ee6654ba2ffcf6e4c969181eacfdffc2" ], - "version": "==1.0.4" + "version": "==0.5.8" + }, + "evm-trace": { + "hashes": [ + "sha256:0e5b6d6977bf42c3a5157ee3c5cdc5e57bd23827855283b516fa4e68d09e32e2", + "sha256:5cd30ba28dcb2c7ba2461c124ad9059629c78bd0781f5c3f2a9939427f50cb47" + ], + "version": "==0.1.0a25" + }, + "executing": { + "hashes": [ + "sha256:06df6183df67389625f4e763921c6cf978944721abf3e714000200aab95b0657", + "sha256:0ff053696fdeef426cda5bd18eacd94f82c91f49823a2e9090124212ceea9b08" + ], + "version": "==2.0.0" }, "filelock": { "hashes": [ - "sha256:55447caa666f2198c5b6b13a26d2084d26fa5b115c00d065664b2124680c4edc", - "sha256:617eb4e5eedc82fc5f47b6d61e4d11cb837c56cb4544e39081099fa17ad109d4" + "sha256:08c21d87ded6e2b9da6728c3dff51baf1dcecf973b768ef35bcbc3447edb9ad4", + "sha256:2e6f249f1f3654291606e046b09f1fd5eac39b360664c27f5aad072012f8bcbd" ], - "version": "==3.8.0" + "version": "==3.12.4" }, "flask": { "hashes": [ - "sha256:642c450d19c4ad482f96729bd2a8f6d32554aa1e231f4f6b4e7e5264b16cca2b", - "sha256:b9c46cc36662a7949f34b52d8ec7bb59c0d74ba08ba6cb9ce9adc1d8676d9526" + "sha256:21128f47e4e3b9d597a3e8521a329bf56909b690fcc3fa3e477725aa81367638", + "sha256:cfadcdb638b609361d29ec22360d6070a77d7463dcb3ab08d2c2f2f168845f58" ], - "markers": "python_version >= '3.7'", - "version": "==2.2.2" + "markers": "python_version >= '3.8'", + "version": "==3.0.0" }, "frozenlist": { "hashes": [ - "sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c", - "sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f", - "sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a", - "sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784", - "sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27", - "sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d", - "sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3", - "sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678", - "sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a", - "sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483", - "sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8", - "sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf", - "sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99", - "sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c", - "sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48", - "sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5", - "sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56", - "sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e", - "sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1", - "sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401", - "sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4", - "sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e", - "sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649", - "sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a", - "sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d", - "sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0", - "sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6", - "sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d", - "sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b", - "sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6", - "sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf", - "sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef", - "sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7", - "sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842", - "sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba", - "sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420", - "sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b", - "sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d", - "sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332", - "sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936", - "sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816", - "sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91", - "sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420", - "sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448", - "sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411", - "sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4", - "sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32", - "sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b", - "sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0", - "sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530", - "sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669", - "sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7", - "sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1", - "sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5", - "sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce", - "sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4", - "sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e", - "sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2", - "sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d", - "sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9", - "sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642", - "sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0", - "sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703", - "sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb", - "sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1", - "sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13", - "sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab", - "sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38", - "sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb", - "sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb", - "sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81", - "sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8", - "sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd", - "sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4" - ], - "markers": "python_version >= '3.7'", - "version": "==1.3.3" + "sha256:007df07a6e3eb3e33e9a1fe6a9db7af152bbd8a185f9aaa6ece10a3529e3e1c6", + "sha256:008eb8b31b3ea6896da16c38c1b136cb9fec9e249e77f6211d479db79a4eaf01", + "sha256:09163bdf0b2907454042edb19f887c6d33806adc71fbd54afc14908bfdc22251", + "sha256:0c7c1b47859ee2cac3846fde1c1dc0f15da6cec5a0e5c72d101e0f83dcb67ff9", + "sha256:0e5c8764c7829343d919cc2dfc587a8db01c4f70a4ebbc49abde5d4b158b007b", + "sha256:10ff5faaa22786315ef57097a279b833ecab1a0bfb07d604c9cbb1c4cdc2ed87", + "sha256:17ae5cd0f333f94f2e03aaf140bb762c64783935cc764ff9c82dff626089bebf", + "sha256:19488c57c12d4e8095a922f328df3f179c820c212940a498623ed39160bc3c2f", + "sha256:1a0848b52815006ea6596c395f87449f693dc419061cc21e970f139d466dc0a0", + "sha256:1e78fb68cf9c1a6aa4a9a12e960a5c9dfbdb89b3695197aa7064705662515de2", + "sha256:261b9f5d17cac914531331ff1b1d452125bf5daa05faf73b71d935485b0c510b", + "sha256:2b8bcf994563466db019fab287ff390fffbfdb4f905fc77bc1c1d604b1c689cc", + "sha256:38461d02d66de17455072c9ba981d35f1d2a73024bee7790ac2f9e361ef1cd0c", + "sha256:490132667476f6781b4c9458298b0c1cddf237488abd228b0b3650e5ecba7467", + "sha256:491e014f5c43656da08958808588cc6c016847b4360e327a62cb308c791bd2d9", + "sha256:515e1abc578dd3b275d6a5114030b1330ba044ffba03f94091842852f806f1c1", + "sha256:556de4430ce324c836789fa4560ca62d1591d2538b8ceb0b4f68fb7b2384a27a", + "sha256:5833593c25ac59ede40ed4de6d67eb42928cca97f26feea219f21d0ed0959b79", + "sha256:6221d84d463fb110bdd7619b69cb43878a11d51cbb9394ae3105d082d5199167", + "sha256:6918d49b1f90821e93069682c06ffde41829c346c66b721e65a5c62b4bab0300", + "sha256:6c38721585f285203e4b4132a352eb3daa19121a035f3182e08e437cface44bf", + "sha256:71932b597f9895f011f47f17d6428252fc728ba2ae6024e13c3398a087c2cdea", + "sha256:7211ef110a9194b6042449431e08c4d80c0481e5891e58d429df5899690511c2", + "sha256:764226ceef3125e53ea2cb275000e309c0aa5464d43bd72abd661e27fffc26ab", + "sha256:7645a8e814a3ee34a89c4a372011dcd817964ce8cb273c8ed6119d706e9613e3", + "sha256:76d4711f6f6d08551a7e9ef28c722f4a50dd0fc204c56b4bcd95c6cc05ce6fbb", + "sha256:7f4f399d28478d1f604c2ff9119907af9726aed73680e5ed1ca634d377abb087", + "sha256:88f7bc0fcca81f985f78dd0fa68d2c75abf8272b1f5c323ea4a01a4d7a614efc", + "sha256:8d0edd6b1c7fb94922bf569c9b092ee187a83f03fb1a63076e7774b60f9481a8", + "sha256:901289d524fdd571be1c7be054f48b1f88ce8dddcbdf1ec698b27d4b8b9e5d62", + "sha256:93ea75c050c5bb3d98016b4ba2497851eadf0ac154d88a67d7a6816206f6fa7f", + "sha256:981b9ab5a0a3178ff413bca62526bb784249421c24ad7381e39d67981be2c326", + "sha256:9ac08e601308e41eb533f232dbf6b7e4cea762f9f84f6357136eed926c15d12c", + "sha256:a02eb8ab2b8f200179b5f62b59757685ae9987996ae549ccf30f983f40602431", + "sha256:a0c6da9aee33ff0b1a451e867da0c1f47408112b3391dd43133838339e410963", + "sha256:a6c8097e01886188e5be3e6b14e94ab365f384736aa1fca6a0b9e35bd4a30bc7", + "sha256:aa384489fefeb62321b238e64c07ef48398fe80f9e1e6afeff22e140e0850eef", + "sha256:ad2a9eb6d9839ae241701d0918f54c51365a51407fd80f6b8289e2dfca977cc3", + "sha256:b206646d176a007466358aa21d85cd8600a415c67c9bd15403336c331a10d956", + "sha256:b826d97e4276750beca7c8f0f1a4938892697a6bcd8ec8217b3312dad6982781", + "sha256:b89ac9768b82205936771f8d2eb3ce88503b1556324c9f903e7156669f521472", + "sha256:bd7bd3b3830247580de99c99ea2a01416dfc3c34471ca1298bccabf86d0ff4dc", + "sha256:bdf1847068c362f16b353163391210269e4f0569a3c166bc6a9f74ccbfc7e839", + "sha256:c11b0746f5d946fecf750428a95f3e9ebe792c1ee3b1e96eeba145dc631a9672", + "sha256:c5374b80521d3d3f2ec5572e05adc94601985cc526fb276d0c8574a6d749f1b3", + "sha256:ca265542ca427bf97aed183c1676e2a9c66942e822b14dc6e5f42e038f92a503", + "sha256:ce31ae3e19f3c902de379cf1323d90c649425b86de7bbdf82871b8a2a0615f3d", + "sha256:ceb6ec0a10c65540421e20ebd29083c50e6d1143278746a4ef6bcf6153171eb8", + "sha256:d081f13b095d74b67d550de04df1c756831f3b83dc9881c38985834387487f1b", + "sha256:d5655a942f5f5d2c9ed93d72148226d75369b4f6952680211972a33e59b1dfdc", + "sha256:d5a32087d720c608f42caed0ef36d2b3ea61a9d09ee59a5142d6070da9041b8f", + "sha256:d6484756b12f40003c6128bfcc3fa9f0d49a687e171186c2d85ec82e3758c559", + "sha256:dd65632acaf0d47608190a71bfe46b209719bf2beb59507db08ccdbe712f969b", + "sha256:de343e75f40e972bae1ef6090267f8260c1446a1695e77096db6cfa25e759a95", + "sha256:e29cda763f752553fa14c68fb2195150bfab22b352572cb36c43c47bedba70eb", + "sha256:e41f3de4df3e80de75845d3e743b3f1c4c8613c3997a912dbf0229fc61a8b963", + "sha256:e66d2a64d44d50d2543405fb183a21f76b3b5fd16f130f5c99187c3fb4e64919", + "sha256:e74b0506fa5aa5598ac6a975a12aa8928cbb58e1f5ac8360792ef15de1aa848f", + "sha256:f0ed05f5079c708fe74bf9027e95125334b6978bf07fd5ab923e9e55e5fbb9d3", + "sha256:f61e2dc5ad442c52b4887f1fdc112f97caeff4d9e6ebe78879364ac59f1663e1", + "sha256:fec520865f42e5c7f050c2a79038897b1c7d1595e907a9e08e3353293ffc948e" + ], + "markers": "python_version >= '3.8'", + "version": "==1.4.0" }, "greenlet": { "hashes": [ - "sha256:0109af1138afbfb8ae647e31a2b1ab030f58b21dd8528c27beaeb0093b7938a9", - "sha256:0459d94f73265744fee4c2d5ec44c6f34aa8a31017e6e9de770f7bcf29710be9", - "sha256:04957dc96669be041e0c260964cfef4c77287f07c40452e61abe19d647505581", - "sha256:0722c9be0797f544a3ed212569ca3fe3d9d1a1b13942d10dd6f0e8601e484d26", - "sha256:097e3dae69321e9100202fc62977f687454cd0ea147d0fd5a766e57450c569fd", - "sha256:0b493db84d124805865adc587532ebad30efa68f79ad68f11b336e0a51ec86c2", - "sha256:13ba6e8e326e2116c954074c994da14954982ba2795aebb881c07ac5d093a58a", - "sha256:13ebf93c343dd8bd010cd98e617cb4c1c1f352a0cf2524c82d3814154116aa82", - "sha256:1407fe45246632d0ffb7a3f4a520ba4e6051fc2cbd61ba1f806900c27f47706a", - "sha256:1bf633a50cc93ed17e494015897361010fc08700d92676c87931d3ea464123ce", - "sha256:2d0bac0385d2b43a7bd1d651621a4e0f1380abc63d6fb1012213a401cbd5bf8f", - "sha256:3001d00eba6bbf084ae60ec7f4bb8ed375748f53aeaefaf2a37d9f0370558524", - "sha256:356e4519d4dfa766d50ecc498544b44c0249b6de66426041d7f8b751de4d6b48", - "sha256:38255a3f1e8942573b067510f9611fc9e38196077b0c8eb7a8c795e105f9ce77", - "sha256:3d75b8d013086b08e801fbbb896f7d5c9e6ccd44f13a9241d2bf7c0df9eda928", - "sha256:41b825d65f31e394b523c84db84f9383a2f7eefc13d987f308f4663794d2687e", - "sha256:42e602564460da0e8ee67cb6d7236363ee5e131aa15943b6670e44e5c2ed0f67", - "sha256:4aeaebcd91d9fee9aa768c1b39cb12214b30bf36d2b7370505a9f2165fedd8d9", - "sha256:4c8b1c43e75c42a6cafcc71defa9e01ead39ae80bd733a2608b297412beede68", - "sha256:4d37990425b4687ade27810e3b1a1c37825d242ebc275066cfee8cb6b8829ccd", - "sha256:4f09b0010e55bec3239278f642a8a506b91034f03a4fb28289a7d448a67f1515", - "sha256:505138d4fa69462447a562a7c2ef723c6025ba12ac04478bc1ce2fcc279a2db5", - "sha256:5067920de254f1a2dee8d3d9d7e4e03718e8fd2d2d9db962c8c9fa781ae82a39", - "sha256:56961cfca7da2fdd178f95ca407fa330c64f33289e1804b592a77d5593d9bd94", - "sha256:5a8e05057fab2a365c81abc696cb753da7549d20266e8511eb6c9d9f72fe3e92", - "sha256:659f167f419a4609bc0516fb18ea69ed39dbb25594934bd2dd4d0401660e8a1e", - "sha256:662e8f7cad915ba75d8017b3e601afc01ef20deeeabf281bd00369de196d7726", - "sha256:6f61d71bbc9b4a3de768371b210d906726535d6ca43506737682caa754b956cd", - "sha256:72b00a8e7c25dcea5946692a2485b1a0c0661ed93ecfedfa9b6687bd89a24ef5", - "sha256:811e1d37d60b47cb8126e0a929b58c046251f28117cb16fcd371eed61f66b764", - "sha256:81b0ea3715bf6a848d6f7149d25bf018fd24554a4be01fcbbe3fdc78e890b955", - "sha256:88c8d517e78acdf7df8a2134a3c4b964415b575d2840a2746ddb1cc6175f8608", - "sha256:8dca09dedf1bd8684767bc736cc20c97c29bc0c04c413e3276e0962cd7aeb148", - "sha256:974a39bdb8c90a85982cdb78a103a32e0b1be986d411303064b28a80611f6e51", - "sha256:9e112e03d37987d7b90c1e98ba5e1b59e1645226d78d73282f45b326f7bddcb9", - "sha256:9e9744c657d896c7b580455e739899e492a4a452e2dd4d2b3e459f6b244a638d", - "sha256:9ed358312e63bf683b9ef22c8e442ef6c5c02973f0c2a939ec1d7b50c974015c", - "sha256:9f2c221eecb7ead00b8e3ddb913c67f75cba078fd1d326053225a3f59d850d72", - "sha256:a20d33124935d27b80e6fdacbd34205732660e0a1d35d8b10b3328179a2b51a1", - "sha256:a4c0757db9bd08470ff8277791795e70d0bf035a011a528ee9a5ce9454b6cba2", - "sha256:afe07421c969e259e9403c3bb658968702bc3b78ec0b6fde3ae1e73440529c23", - "sha256:b1992ba9d4780d9af9726bbcef6a1db12d9ab1ccc35e5773685a24b7fb2758eb", - "sha256:b23d2a46d53210b498e5b701a1913697671988f4bf8e10f935433f6e7c332fb6", - "sha256:b5e83e4de81dcc9425598d9469a624826a0b1211380ac444c7c791d4a2137c19", - "sha256:be35822f35f99dcc48152c9839d0171a06186f2d71ef76dc57fa556cc9bf6b45", - "sha256:be9e0fb2ada7e5124f5282d6381903183ecc73ea019568d6d63d33f25b2a9000", - "sha256:c140e7eb5ce47249668056edf3b7e9900c6a2e22fb0eaf0513f18a1b2c14e1da", - "sha256:c6a08799e9e88052221adca55741bf106ec7ea0710bca635c208b751f0d5b617", - "sha256:cb242fc2cda5a307a7698c93173d3627a2a90d00507bccf5bc228851e8304963", - "sha256:cce1e90dd302f45716a7715517c6aa0468af0bf38e814ad4eab58e88fc09f7f7", - "sha256:cd4ccc364cf75d1422e66e247e52a93da6a9b73cefa8cad696f3cbbb75af179d", - "sha256:d21681f09e297a5adaa73060737e3aa1279a13ecdcfcc6ef66c292cb25125b2d", - "sha256:d38ffd0e81ba8ef347d2be0772e899c289b59ff150ebbbbe05dc61b1246eb4e0", - "sha256:d566b82e92ff2e09dd6342df7e0eb4ff6275a3f08db284888dcd98134dbd4243", - "sha256:d5b0ff9878333823226d270417f24f4d06f235cb3e54d1103b71ea537a6a86ce", - "sha256:d6ee1aa7ab36475035eb48c01efae87d37936a8173fc4d7b10bb02c2d75dd8f6", - "sha256:db38f80540083ea33bdab614a9d28bcec4b54daa5aff1668d7827a9fc769ae0a", - "sha256:ea688d11707d30e212e0110a1aac7f7f3f542a259235d396f88be68b649e47d1", - "sha256:f6327b6907b4cb72f650a5b7b1be23a2aab395017aa6f1adb13069d66360eb3f", - "sha256:fb412b7db83fe56847df9c47b6fe3f13911b06339c2aa02dcc09dce8bbf582cd" + "sha256:02a807b2a58d5cdebb07050efe3d7deaf915468d112dfcf5e426d0564aa3aa4a", + "sha256:0b72b802496cccbd9b31acea72b6f87e7771ccfd7f7927437d592e5c92ed703c", + "sha256:0d3f83ffb18dc57243e0151331e3c383b05e5b6c5029ac29f754745c800f8ed9", + "sha256:10b5582744abd9858947d163843d323d0b67be9432db50f8bf83031032bc218d", + "sha256:123910c58234a8d40eaab595bc56a5ae49bdd90122dde5bdc012c20595a94c14", + "sha256:1482fba7fbed96ea7842b5a7fc11d61727e8be75a077e603e8ab49d24e234383", + "sha256:19834e3f91f485442adc1ee440171ec5d9a4840a1f7bd5ed97833544719ce10b", + "sha256:1d363666acc21d2c204dd8705c0e0457d7b2ee7a76cb16ffc099d6799744ac99", + "sha256:211ef8d174601b80e01436f4e6905aca341b15a566f35a10dd8d1e93f5dbb3b7", + "sha256:269d06fa0f9624455ce08ae0179430eea61085e3cf6457f05982b37fd2cefe17", + "sha256:2e7dcdfad252f2ca83c685b0fa9fba00e4d8f243b73839229d56ee3d9d219314", + "sha256:334ef6ed8337bd0b58bb0ae4f7f2dcc84c9f116e474bb4ec250a8bb9bd797a66", + "sha256:343675e0da2f3c69d3fb1e894ba0a1acf58f481f3b9372ce1eb465ef93cf6fed", + "sha256:37f60b3a42d8b5499be910d1267b24355c495064f271cfe74bf28b17b099133c", + "sha256:38ad562a104cd41e9d4644f46ea37167b93190c6d5e4048fcc4b80d34ecb278f", + "sha256:3c0d36f5adc6e6100aedbc976d7428a9f7194ea79911aa4bf471f44ee13a9464", + "sha256:3fd2b18432e7298fcbec3d39e1a0aa91ae9ea1c93356ec089421fabc3651572b", + "sha256:4a1a6244ff96343e9994e37e5b4839f09a0207d35ef6134dce5c20d260d0302c", + "sha256:4cd83fb8d8e17633ad534d9ac93719ef8937568d730ef07ac3a98cb520fd93e4", + "sha256:527cd90ba3d8d7ae7dceb06fda619895768a46a1b4e423bdb24c1969823b8362", + "sha256:56867a3b3cf26dc8a0beecdb4459c59f4c47cdd5424618c08515f682e1d46692", + "sha256:621fcb346141ae08cb95424ebfc5b014361621b8132c48e538e34c3c93ac7365", + "sha256:63acdc34c9cde42a6534518e32ce55c30f932b473c62c235a466469a710bfbf9", + "sha256:6512592cc49b2c6d9b19fbaa0312124cd4c4c8a90d28473f86f92685cc5fef8e", + "sha256:6672fdde0fd1a60b44fb1751a7779c6db487e42b0cc65e7caa6aa686874e79fb", + "sha256:6a5b2d4cdaf1c71057ff823a19d850ed5c6c2d3686cb71f73ae4d6382aaa7a06", + "sha256:6a68d670c8f89ff65c82b936275369e532772eebc027c3be68c6b87ad05ca695", + "sha256:6bb36985f606a7c49916eff74ab99399cdfd09241c375d5a820bb855dfb4af9f", + "sha256:73b2f1922a39d5d59cc0e597987300df3396b148a9bd10b76a058a2f2772fc04", + "sha256:7709fd7bb02b31908dc8fd35bfd0a29fc24681d5cc9ac1d64ad07f8d2b7db62f", + "sha256:8060b32d8586e912a7b7dac2d15b28dbbd63a174ab32f5bc6d107a1c4143f40b", + "sha256:80dcd3c938cbcac986c5c92779db8e8ce51a89a849c135172c88ecbdc8c056b7", + "sha256:813720bd57e193391dfe26f4871186cf460848b83df7e23e6bef698a7624b4c9", + "sha256:831d6f35037cf18ca5e80a737a27d822d87cd922521d18ed3dbc8a6967be50ce", + "sha256:871b0a8835f9e9d461b7fdaa1b57e3492dd45398e87324c047469ce2fc9f516c", + "sha256:952256c2bc5b4ee8df8dfc54fc4de330970bf5d79253c863fb5e6761f00dda35", + "sha256:96d9ea57292f636ec851a9bb961a5cc0f9976900e16e5d5647f19aa36ba6366b", + "sha256:9a812224a5fb17a538207e8cf8e86f517df2080c8ee0f8c1ed2bdaccd18f38f4", + "sha256:9adbd8ecf097e34ada8efde9b6fec4dd2a903b1e98037adf72d12993a1c80b51", + "sha256:9de687479faec7db5b198cc365bc34addd256b0028956501f4d4d5e9ca2e240a", + "sha256:a048293392d4e058298710a54dfaefcefdf49d287cd33fb1f7d63d55426e4355", + "sha256:aa15a2ec737cb609ed48902b45c5e4ff6044feb5dcdfcf6fa8482379190330d7", + "sha256:abe1ef3d780de56defd0c77c5ba95e152f4e4c4e12d7e11dd8447d338b85a625", + "sha256:ad6fb737e46b8bd63156b8f59ba6cdef46fe2b7db0c5804388a2d0519b8ddb99", + "sha256:b1660a15a446206c8545edc292ab5c48b91ff732f91b3d3b30d9a915d5ec4779", + "sha256:b505fcfc26f4148551826a96f7317e02c400665fa0883fe505d4fcaab1dabfdd", + "sha256:b822fab253ac0f330ee807e7485769e3ac85d5eef827ca224feaaefa462dc0d0", + "sha256:bdd696947cd695924aecb3870660b7545a19851f93b9d327ef8236bfc49be705", + "sha256:bdfaeecf8cc705d35d8e6de324bf58427d7eafb55f67050d8f28053a3d57118c", + "sha256:be557119bf467d37a8099d91fbf11b2de5eb1fd5fc5b91598407574848dc910f", + "sha256:c6b5ce7f40f0e2f8b88c28e6691ca6806814157ff05e794cdd161be928550f4c", + "sha256:c94e4e924d09b5a3e37b853fe5924a95eac058cb6f6fb437ebb588b7eda79870", + "sha256:cc3e2679ea13b4de79bdc44b25a0c4fcd5e94e21b8f290791744ac42d34a0353", + "sha256:d1e22c22f7826096ad503e9bb681b05b8c1f5a8138469b255eb91f26a76634f2", + "sha256:d5539f6da3418c3dc002739cb2bb8d169056aa66e0c83f6bacae0cd3ac26b423", + "sha256:d55db1db455c59b46f794346efce896e754b8942817f46a1bada2d29446e305a", + "sha256:e09dea87cc91aea5500262993cbd484b41edf8af74f976719dd83fe724644cd6", + "sha256:e52a712c38e5fb4fd68e00dc3caf00b60cb65634d50e32281a9d6431b33b4af1", + "sha256:e693e759e172fa1c2c90d35dea4acbdd1d609b6936115d3739148d5e4cd11947", + "sha256:ecf94aa539e97a8411b5ea52fc6ccd8371be9550c4041011a091eb8b3ca1d810", + "sha256:f351479a6914fd81a55c8e68963609f792d9b067fb8a60a042c585a621e0de4f", + "sha256:f47932c434a3c8d3c86d865443fadc1fbf574e9b11d6650b656e602b1797908a" ], - "version": "==2.0.1" + "version": "==3.0.0" }, "hendrix": { "hashes": [ @@ -2619,19 +3014,19 @@ }, "hexbytes": { "hashes": [ - "sha256:21c3a5bd00a383097f0369c387174e79839d75c4ccc3a7edda315c9644f4458a", - "sha256:afeebfb800f5f15a3ca5bab52e49eabcb4b6dac06ec8ff01a94fdb890c6c0712" + "sha256:383595ad75026cf00abd570f44b368c6cdac0c6becfae5c39ff88829877f8a59", + "sha256:a3fe35c6831ee8fafd048c4c086b986075fc14fd46258fa24ecb8d65745f9a9d" ], "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==0.3.0" + "version": "==0.3.1" }, "humanize": { "hashes": [ - "sha256:8830ebf2d65d0395c1bd4c79189ad71e023f277c2c7ae00f263124432e6f2ffa", - "sha256:efb2584565cc86b7ea87a977a15066de34cdedaf341b11c851cfcfd2b964779c" + "sha256:8bc9e2bb9315e61ec06bf690151ae35aeb65651ab091266941edf97c90836404", + "sha256:9783373bf1eec713a770ecaa7c2d7a7902c98398009dfa3d8a2df91eec9311e8" ], - "markers": "python_version >= '3.7'", - "version": "==4.4.0" + "markers": "python_version >= '3.8'", + "version": "==4.8.0" }, "hyperlink": { "hashes": [ @@ -2642,17 +3037,18 @@ }, "hypothesis": { "hashes": [ - "sha256:8738b9b38c2b2c214d965b07f29312047b970541d848cb97d2a58f79fd61fbe6", - "sha256:b5747497b2b352335e4dc51f1b113cfc90c49ffd174f2036f173edf8799e123a" + "sha256:b45b8a651dfe4ce26f900ce6ccbce997d4fbec39ba03dd243516bf81fea8c0b8", + "sha256:f4c2c004b9ec3e0e25332ad2cb6b91eba477a855557a7b5c6e79068809ff8b51" ], - "version": "==6.58.1" + "version": "==6.88.1" }, "identify": { "hashes": [ - "sha256:906036344ca769539610436e40a684e170c3648b552194980bb7b617a8daeb9f", - "sha256:a390fb696e164dbddb047a0db26e57972ae52fbd037ae68797e5ae2f4492485d" + "sha256:afe67f26ae29bab007ec21b03d4114f41316ab9dd15aa8736a167481e108da54", + "sha256:f302a4256a15c849b91cfcdcec052a8ce914634b2f77ae87dad29cd749f2d88d" ], - "version": "==2.5.9" + "markers": "python_version >= '3.8'", + "version": "==2.5.30" }, "idna": { "hashes": [ @@ -2662,13 +3058,106 @@ "markers": "python_version >= '3.5'", "version": "==3.4" }, + "ijson": { + "hashes": [ + "sha256:055b71bbc37af5c3c5861afe789e15211d2d3d06ac51ee5a647adf4def19c0ea", + "sha256:0567e8c833825b119e74e10a7c29761dc65fcd155f5d4cb10f9d3b8916ef9912", + "sha256:06f9707da06a19b01013f8c65bf67db523662a9b4a4ff027e946e66c261f17f0", + "sha256:0974444c1f416e19de1e9f567a4560890095e71e81623c509feff642114c1e53", + "sha256:0a4ae076bf97b0430e4e16c9cb635a6b773904aec45ed8dcbc9b17211b8569ba", + "sha256:0b9d1141cfd1e6d6643aa0b4876730d0d28371815ce846d2e4e84a2d4f471cf3", + "sha256:0e0243d166d11a2a47c17c7e885debf3b19ed136be2af1f5d1c34212850236ac", + "sha256:10294e9bf89cb713da05bc4790bdff616610432db561964827074898e174f917", + "sha256:105c314fd624e81ed20f925271ec506523b8dd236589ab6c0208b8707d652a0e", + "sha256:1844c5b57da21466f255a0aeddf89049e730d7f3dfc4d750f0e65c36e6a61a7c", + "sha256:211124cff9d9d139dd0dfced356f1472860352c055d2481459038b8205d7d742", + "sha256:2a80c0bb1053055d1599e44dc1396f713e8b3407000e6390add72d49633ff3bb", + "sha256:2cc04fc0a22bb945cd179f614845c8b5106c0b3939ee0d84ce67c7a61ac1a936", + "sha256:2ec3e5ff2515f1c40ef6a94983158e172f004cd643b9e4b5302017139b6c96e4", + "sha256:35194e0b8a2bda12b4096e2e792efa5d4801a0abb950c48ade351d479cd22ba5", + "sha256:396338a655fb9af4ac59dd09c189885b51fa0eefc84d35408662031023c110d1", + "sha256:39f551a6fbeed4433c85269c7c8778e2aaea2501d7ebcb65b38f556030642c17", + "sha256:3b14d322fec0de7af16f3ef920bf282f0dd747200b69e0b9628117f381b7775b", + "sha256:3c0d526ccb335c3c13063c273637d8611f32970603dfb182177b232d01f14c23", + "sha256:3dcc33ee56f92a77f48776014ddb47af67c33dda361e84371153c4f1ed4434e1", + "sha256:4252e48c95cd8ceefc2caade310559ab61c37d82dfa045928ed05328eb5b5f65", + "sha256:455d7d3b7a6aacfb8ab1ebcaf697eedf5be66e044eac32508fccdc633d995f0e", + "sha256:457f8a5fc559478ac6b06b6d37ebacb4811f8c5156e997f0d87d708b0d8ab2ae", + "sha256:46bafb1b9959872a1f946f8dd9c6f1a30a970fc05b7bfae8579da3f1f988e598", + "sha256:4a3a6a2fbbe7550ffe52d151cf76065e6b89cfb3e9d0463e49a7e322a25d0426", + "sha256:4b2ec8c2a3f1742cbd5f36b65e192028e541b5fd8c7fd97c1fc0ca6c427c704a", + "sha256:4fc35d569eff3afa76bfecf533f818ecb9390105be257f3f83c03204661ace70", + "sha256:545a30b3659df2a3481593d30d60491d1594bc8005f99600e1bba647bb44cbb5", + "sha256:644f4f03349ff2731fd515afd1c91b9e439e90c9f8c28292251834154edbffca", + "sha256:674e585361c702fad050ab4c153fd168dc30f5980ef42b64400bc84d194e662d", + "sha256:6a4db2f7fb9acfb855c9ae1aae602e4648dd1f88804a0d5cfb78c3639bcf156c", + "sha256:6bd3e7e91d031f1e8cea7ce53f704ab74e61e505e8072467e092172422728b22", + "sha256:6c32c18a934c1dc8917455b0ce478fd7a26c50c364bd52c5a4fb0fc6bb516af7", + "sha256:6f662dc44362a53af3084d3765bb01cd7b4734d1f484a6095cad4cb0cbfe5374", + "sha256:713a919e0220ac44dab12b5fed74f9130f3480e55e90f9d80f58de129ea24f83", + "sha256:7596b42f38c3dcf9d434dddd50f46aeb28e96f891444c2b4b1266304a19a2c09", + "sha256:7851a341429b12d4527ca507097c959659baf5106c7074d15c17c387719ffbcd", + "sha256:7b8064a85ec1b0beda7dd028e887f7112670d574db606f68006c72dd0bb0e0e2", + "sha256:7ce4c70c23521179d6da842bb9bc2e36bb9fad1e0187e35423ff0f282890c9ca", + "sha256:7dc357da4b4ebd8903e77dbcc3ce0555ee29ebe0747c3c7f56adda423df8ec89", + "sha256:81815b4184b85ce124bfc4c446d5f5e5e643fc119771c5916f035220ada29974", + "sha256:85afdb3f3a5d0011584d4fa8e6dccc5936be51c27e84cd2882fe904ca3bd04c5", + "sha256:86b3c91fdcb8ffb30556c9669930f02b7642de58ca2987845b04f0d7fe46d9a8", + "sha256:904f77dd3d87736ff668884fe5197a184748eb0c3e302ded61706501d0327465", + "sha256:916acdc5e504f8b66c3e287ada5d4b39a3275fc1f2013c4b05d1ab9933671a6c", + "sha256:923131f5153c70936e8bd2dd9dcfcff43c67a3d1c789e9c96724747423c173eb", + "sha256:92dc4d48e9f6a271292d6079e9fcdce33c83d1acf11e6e12696fb05c5889fe74", + "sha256:96190d59f015b5a2af388a98446e411f58ecc6a93934e036daa75f75d02386a0", + "sha256:9680e37a10fedb3eab24a4a7e749d8a73f26f1a4c901430e7aa81b5da15f7307", + "sha256:9788f0c915351f41f0e69ec2618b81ebfcf9f13d9d67c6d404c7f5afda3e4afb", + "sha256:98c6799925a5d1988da4cd68879b8eeab52c6e029acc45e03abb7921a4715c4b", + "sha256:9c2a12dcdb6fa28f333bf10b3a0f80ec70bc45280d8435be7e19696fab2bc706", + "sha256:9e0a27db6454edd6013d40a956d008361aac5bff375a9c04ab11fc8c214250b5", + "sha256:a2973ce57afb142d96f35a14e9cfec08308ef178a2c76b8b5e1e98f3960438bf", + "sha256:a4d7fe3629de3ecb088bff6dfe25f77be3e8261ed53d5e244717e266f8544305", + "sha256:a729b0c8fb935481afe3cf7e0dadd0da3a69cc7f145dbab8502e2f1e01d85a7c", + "sha256:ab4db9fee0138b60e31b3c02fff8a4c28d7b152040553b6a91b60354aebd4b02", + "sha256:ac44781de5e901ce8339352bb5594fcb3b94ced315a34dbe840b4cff3450e23b", + "sha256:b49fd5fe1cd9c1c8caf6c59f82b08117dd6bea2ec45b641594e25948f48f4169", + "sha256:b4eb2304573c9fdf448d3fa4a4fdcb727b93002b5c5c56c14a5ffbbc39f64ae4", + "sha256:ba33c764afa9ecef62801ba7ac0319268a7526f50f7601370d9f8f04e77fc02b", + "sha256:bcc51c84bb220ac330122468fe526a7777faa6464e3b04c15b476761beea424f", + "sha256:bdd0dc5da4f9dc6d12ab6e8e0c57d8b41d3c8f9ceed31a99dae7b2baf9ea769a", + "sha256:be8495f7c13fa1f622a2c6b64e79ac63965b89caf664cc4e701c335c652d15f2", + "sha256:c075a547de32f265a5dd139ab2035900fef6653951628862e5cdce0d101af557", + "sha256:c1a4b8eb69b6d7b4e94170aa991efad75ba156b05f0de2a6cd84f991def12ff9", + "sha256:c63f3d57dbbac56cead05b12b81e8e1e259f14ce7f233a8cbe7fa0996733b628", + "sha256:c6beb80df19713e39e68dc5c337b5c76d36ccf69c30b79034634e5e4c14d6904", + "sha256:ccd6be56335cbb845f3d3021b1766299c056c70c4c9165fb2fbe2d62258bae3f", + "sha256:cfced0a6ec85916eb8c8e22415b7267ae118eaff2a860c42d2cc1261711d0d31", + "sha256:d052417fd7ce2221114f8d3b58f05a83c1a2b6b99cafe0b86ac9ed5e2fc889df", + "sha256:d1053fb5f0b010ee76ca515e6af36b50d26c1728ad46be12f1f147a835341083", + "sha256:d31e0d771d82def80cd4663a66de277c3b44ba82cd48f630526b52f74663c639", + "sha256:d34e049992d8a46922f96483e96b32ac4c9cffd01a5c33a928e70a283710cd58", + "sha256:d6ea7c7e3ec44742e867c72fd750c6a1e35b112f88a917615332c4476e718d40", + "sha256:db2d6341f9cb538253e7fe23311d59252f124f47165221d3c06a7ed667ecd595", + "sha256:db3bf1b42191b5cc9b6441552fdcb3b583594cb6b19e90d1578b7cbcf80d0fae", + "sha256:e641814793a037175f7ec1b717ebb68f26d89d82cfd66f36e588f32d7e488d5f", + "sha256:e84d27d1acb60d9102728d06b9650e5b7e5cb0631bd6e3dfadba8fb6a80d6c2f", + "sha256:e9fd906f0c38e9f0bfd5365e1bed98d649f506721f76bb1a9baa5d7374f26f19", + "sha256:eaac293853f1342a8d2a45ac1f723c860f700860e7743fb97f7b76356df883a8", + "sha256:eeb286639649fb6bed37997a5e30eefcacddac79476d24128348ec890b2a0ccb", + "sha256:f05ed49f434ce396ddcf99e9fd98245328e99f991283850c309f5e3182211a79", + "sha256:f4bc87e69d1997c6a55fff5ee2af878720801ff6ab1fb3b7f94adda050651e37", + "sha256:f8d54b624629f9903005c58d9321a036c72f5c212701bbb93d1a520ecd15e370", + "sha256:fa234ab7a6a33ed51494d9d2197fb96296f9217ecae57f5551a55589091e7853", + "sha256:fa8b98be298efbb2588f883f9953113d8a0023ab39abe77fe734b71b46b1220a", + "sha256:fbac4e9609a1086bbad075beb2ceec486a3b138604e12d2059a33ce2cba93051", + "sha256:fd12e42b9cb9c0166559a3ffa276b4f9fc9d5b4c304e5a13668642d34b48b634" + ], + "version": "==3.2.3" + }, "importlib-metadata": { "hashes": [ - "sha256:d5059f9f1e8e41f80e9c56c2ee58811450c31984dfa625329ffd7c0dad88a73b", - "sha256:d84d17e21670ec07990e1044a99efe8d615d860fd176fc29ef5c306068fda313" + "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb", + "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743" ], - "markers": "python_version < '3.10'", - "version": "==5.1.0" + "version": "==6.8.0" }, "incremental": { "hashes": [ @@ -2679,18 +3168,18 @@ }, "iniconfig": { "hashes": [ - "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", - "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" + "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", + "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374" ], - "version": "==1.1.1" + "markers": "python_version >= '3.7'", + "version": "==2.0.0" }, - "ipfshttpclient": { + "ipython": { "hashes": [ - "sha256:0d80e95ee60b02c7d414e79bf81a36fc3c8fbab74265475c52f70b2620812135", - "sha256:ce6bac0e3963c4ced74d7eb6978125362bb05bbe219088ca48f369ce14d3cc39" + "sha256:0852469d4d579d9cd613c220af7bf0c9cc251813e12be647cb9d463939db9b1e", + "sha256:ad52f58fca8f9f848e256c629eff888efc0528c12fe0f8ec14f33205f23ef938" ], - "markers": "python_full_version >= '3.6.2' and python_full_version not in '3.7.0, 3.7.1'", - "version": "==0.8.0a2" + "version": "==8.16.1" }, "itsdangerous": { "hashes": [ @@ -2700,74 +3189,129 @@ "markers": "python_version >= '3.7'", "version": "==2.1.2" }, + "jedi": { + "hashes": [ + "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd", + "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0" + ], + "version": "==0.19.1" + }, "jinja2": { "hashes": [ - "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8", - "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7" + "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852", + "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" ], - "markers": "python_version >= '3.6'", - "version": "==3.0.3" + "markers": "python_version >= '3.7'", + "version": "==3.1.2" }, "jsonschema": { "hashes": [ - "sha256:05b2d22c83640cde0b7e0aa329ca7754fbd98ea66ad8ae24aa61328dfe057fa3", - "sha256:410ef23dcdbca4eaedc08b850079179883c2ed09378bd1f760d4af4aacfa28d7" + "sha256:cd5f1f9ed9444e554b38ba003af06c0a8c2868131e56bfbef0550fb450c0330e", + "sha256:ec84cc37cfa703ef7cd4928db24f9cb31428a5d0fa77747b8b51a847458e0bbf" ], - "markers": "python_version >= '3.7'", - "version": "==4.17.1" + "markers": "python_version >= '3.8'", + "version": "==4.19.1" }, - "lru-dict": { + "jsonschema-specifications": { "hashes": [ - "sha256:075b9dd46d7022b675419bc6e3631748ae184bc8af195d20365a98b4f3bb2914", - "sha256:0972d669e9e207617e06416166718b073a49bf449abbd23940d9545c0847a4d9", - "sha256:0f83cd70a6d32f9018d471be609f3af73058f700691657db4a3d3dd78d3f96dd", - "sha256:10fe823ff90b655f0b6ba124e2b576ecda8c61b8ead76b456db67831942d22f2", - "sha256:163079dbda54c3e6422b23da39fb3ecc561035d65e8496ff1950cbdb376018e1", - "sha256:1fe16ade5fd0a57e9a335f69b8055aaa6fb278fbfa250458e4f6b8255115578f", - "sha256:262a4e622010ceb960a6a5222ed011090e50954d45070fd369c0fa4d2ed7d9a9", - "sha256:2f340b61f3cdfee71f66da7dbfd9a5ea2db6974502ccff2065cdb76619840dca", - "sha256:348167f110494cfafae70c066470a6f4e4d43523933edf16ccdb8947f3b5fae0", - "sha256:3b1692755fef288b67af5cd8a973eb331d1f44cb02cbdc13660040809c2bfec6", - "sha256:3ca497cb25f19f24171f9172805f3ff135b911aeb91960bd4af8e230421ccb51", - "sha256:3d003a864899c29b0379e412709a6e516cbd6a72ee10b09d0b33226343617412", - "sha256:3fef595c4f573141d54a38bda9221b9ee3cbe0acc73d67304a1a6d5972eb2a02", - "sha256:484ac524e4615f06dc72ffbfd83f26e073c9ec256de5413634fbd024c010a8bc", - "sha256:55aeda6b6789b2d030066b4f5f6fc3596560ba2a69028f35f3682a795701b5b1", - "sha256:5a592363c93d6fc6472d5affe2819e1c7590746aecb464774a4f67e09fbefdfc", - "sha256:5b09dbe47bc4b4d45ffe56067aff190bc3c0049575da6e52127e114236e0a6a7", - "sha256:6e2a7aa9e36626fb48fdc341c7e3685a31a7b50ea4918677ea436271ad0d904d", - "sha256:70364e3cbef536adab8762b4835e18f5ca8e3fddd8bd0ec9258c42bbebd0ee77", - "sha256:720f5728e537f11a311e8b720793a224e985d20e6b7c3d34a891a391865af1a2", - "sha256:7284bdbc5579bbdc3fc8f869ed4c169f403835566ab0f84567cdbfdd05241847", - "sha256:7be1b66926277993cecdc174c15a20c8ce785c1f8b39aa560714a513eef06473", - "sha256:86d32a4498b74a75340497890a260d37bf1560ad2683969393032977dd36b088", - "sha256:878bc8ef4073e5cfb953dfc1cf4585db41e8b814c0106abde34d00ee0d0b3115", - "sha256:881104711900af45967c2e5ce3e62291dd57d5b2a224d58b7c9f60bf4ad41b8c", - "sha256:8c50ab9edaa5da5838426816a2b7bcde9d576b4fc50e6a8c062073dbc4969d78", - "sha256:8f6561f9cd5a452cb84905c6a87aa944fdfdc0f41cc057d03b71f9b29b2cc4bd", - "sha256:93336911544ebc0e466272043adab9fb9f6e9dcba6024b639c32553a3790e089", - "sha256:9447214e4857e16d14158794ef01e4501d8fad07d298d03308d9f90512df02fa", - "sha256:97c24ffc55de6013075979f440acd174e88819f30387074639fb7d7178ca253e", - "sha256:99f6cfb3e28490357a0805b409caf693e46c61f8dbb789c51355adb693c568d3", - "sha256:9be6c4039ef328676b868acea619cd100e3de1a35b3be211cf0eaf9775563b65", - "sha256:9d70257246b8207e8ef3d8b18457089f5ff0dfb087bd36eb33bce6584f2e0b3a", - "sha256:a777d48319d293b1b6a933d606c0e4899690a139b4c81173451913bbcab6f44f", - "sha256:add762163f4af7f4173fafa4092eb7c7f023cf139ef6d2015cfea867e1440d82", - "sha256:b6f64005ede008b7a866be8f3f6274dbf74e656e15e4004e9d99ad65efb01809", - "sha256:beb089c46bd95243d1ac5b2bd13627317b08bf40dd8dc16d4b7ee7ecb3cf65ca", - "sha256:c07163c9dcbb2eca377f366b1331f46302fd8b6b72ab4d603087feca00044bb0", - "sha256:c2fe692332c2f1d81fd27457db4b35143801475bfc2e57173a2403588dd82a42", - "sha256:ca8f89361e0e7aad0bf93ae03a31502e96280faeb7fb92267f4998fb230d36b2", - "sha256:d2ed4151445c3f30423c2698f72197d64b27b1cd61d8d56702ffe235584e47c2", - "sha256:db20597c4e67b4095b376ce2e83930c560f4ce481e8d05737885307ed02ba7c1", - "sha256:de972c7f4bc7b6002acff2a8de984c55fbd7f2289dba659cfd90f7a0f5d8f5d1", - "sha256:f1df1da204a9f0b5eb8393a46070f1d984fa8559435ee790d7f8f5602038fc00", - "sha256:f4d0a6d733a23865019b1c97ed6fb1fdb739be923192abf4dbb644f697a26a69", - "sha256:f874e9c2209dada1a080545331aa1277ec060a13f61684a8642788bf44b2325f", - "sha256:f877f53249c3e49bbd7612f9083127290bede6c7d6501513567ab1bf9c581381", - "sha256:f9d5815c0e85922cd0fb8344ca8b1c7cf020bf9fc45e670d34d51932c91fd7ec" + "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1", + "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb" ], - "version": "==1.1.8" + "markers": "python_version >= '3.8'", + "version": "==2023.7.1" + }, + "lazyasd": { + "hashes": [ + "sha256:a3196f05cff27f952ad05767e5735fd564b4ea4e89b23f5ea1887229c3db145b" + ], + "version": "==0.1.4" + }, + "lru-dict": { + "hashes": [ + "sha256:00f6e8a3fc91481b40395316a14c94daa0f0a5de62e7e01a7d589f8d29224052", + "sha256:020b93870f8c7195774cbd94f033b96c14f51c57537969965c3af300331724fe", + "sha256:05fb8744f91f58479cbe07ed80ada6696ec7df21ea1740891d4107a8dd99a970", + "sha256:086ce993414f0b28530ded7e004c77dc57c5748fa6da488602aa6e7f79e6210e", + "sha256:0c316dfa3897fabaa1fe08aae89352a3b109e5f88b25529bc01e98ac029bf878", + "sha256:0facf49b053bf4926d92d8d5a46fe07eecd2af0441add0182c7432d53d6da667", + "sha256:1171ad3bff32aa8086778be4a3bdff595cc2692e78685bcce9cb06b96b22dcc2", + "sha256:1184d91cfebd5d1e659d47f17a60185bbf621635ca56dcdc46c6a1745d25df5c", + "sha256:13c56782f19d68ddf4d8db0170041192859616514c706b126d0df2ec72a11bd7", + "sha256:18ee88ada65bd2ffd483023be0fa1c0a6a051ef666d1cd89e921dcce134149f2", + "sha256:203b3e78d03d88f491fa134f85a42919020686b6e6f2d09759b2f5517260c651", + "sha256:20f5f411f7751ad9a2c02e80287cedf69ae032edd321fe696e310d32dd30a1f8", + "sha256:21b3090928c7b6cec509e755cc3ab742154b33660a9b433923bd12c37c448e3e", + "sha256:22147367b296be31cc858bf167c448af02435cac44806b228c9be8117f1bfce4", + "sha256:231d7608f029dda42f9610e5723614a35b1fff035a8060cf7d2be19f1711ace8", + "sha256:25f9e0bc2fe8f41c2711ccefd2871f8a5f50a39e6293b68c3dec576112937aad", + "sha256:287c2115a59c1c9ed0d5d8ae7671e594b1206c36ea9df2fca6b17b86c468ff99", + "sha256:291d13f85224551913a78fe695cde04cbca9dcb1d84c540167c443eb913603c9", + "sha256:312b6b2a30188586fe71358f0f33e4bac882d33f5e5019b26f084363f42f986f", + "sha256:34a3091abeb95e707f381a8b5b7dc8e4ee016316c659c49b726857b0d6d1bd7a", + "sha256:35a142a7d1a4fd5d5799cc4f8ab2fff50a598d8cee1d1c611f50722b3e27874f", + "sha256:3838e33710935da2ade1dd404a8b936d571e29268a70ff4ca5ba758abb3850df", + "sha256:5345bf50e127bd2767e9fd42393635bbc0146eac01f6baf6ef12c332d1a6a329", + "sha256:5919dd04446bc1ee8d6ecda2187deeebfff5903538ae71083e069bc678599446", + "sha256:59f3df78e94e07959f17764e7fa7ca6b54e9296953d2626a112eab08e1beb2db", + "sha256:5b172fce0a0ffc0fa6d282c14256d5a68b5db1e64719c2915e69084c4b6bf555", + "sha256:5c6acbd097b15bead4de8e83e8a1030bb4d8257723669097eac643a301a952f0", + "sha256:5d90a70c53b0566084447c3ef9374cc5a9be886e867b36f89495f211baabd322", + "sha256:604d07c7604b20b3130405d137cae61579578b0e8377daae4125098feebcb970", + "sha256:6b7a031e47421d4b7aa626b8c91c180a9f037f89e5d0a71c4bb7afcf4036c774", + "sha256:6da5b8099766c4da3bf1ed6e7d7f5eff1681aff6b5987d1258a13bd2ed54f0c9", + "sha256:712e71b64da181e1c0a2eaa76cd860265980cd15cb0e0498602b8aa35d5db9f8", + "sha256:71da89e134747e20ed5b8ad5b4ee93fc5b31022c2b71e8176e73c5a44699061b", + "sha256:756230c22257597b7557eaef7f90484c489e9ba78e5bb6ab5a5bcfb6b03cb075", + "sha256:7d3336e901acec897bcd318c42c2b93d5f1d038e67688f497045fc6bad2c0be7", + "sha256:7e51fa6a203fa91d415f3b2900e5748ec8e06ad75777c98cc3aeb3983ca416d7", + "sha256:877801a20f05c467126b55338a4e9fa30e2a141eb7b0b740794571b7d619ee11", + "sha256:87bbad3f5c3de8897b8c1263a9af73bbb6469fb90e7b57225dad89b8ef62cd8d", + "sha256:8bda3a9afd241ee0181661decaae25e5336ce513ac268ab57da737eacaa7871f", + "sha256:8dafc481d2defb381f19b22cc51837e8a42631e98e34b9e0892245cc96593deb", + "sha256:91d577a11b84387013815b1ad0bb6e604558d646003b44c92b3ddf886ad0f879", + "sha256:981ef3edc82da38d39eb60eae225b88a538d47b90cce2e5808846fd2cf64384b", + "sha256:987b73a06bcf5a95d7dc296241c6b1f9bc6cda42586948c9dabf386dc2bef1cd", + "sha256:9e4c85aa8844bdca3c8abac3b7f78da1531c74e9f8b3e4890c6e6d86a5a3f6c0", + "sha256:a3ea7571b6bf2090a85ff037e6593bbafe1a8598d5c3b4560eb56187bcccb4dc", + "sha256:a87bdc291718bbdf9ea4be12ae7af26cbf0706fa62c2ac332748e3116c5510a7", + "sha256:aaecd7085212d0aa4cd855f38b9d61803d6509731138bf798a9594745953245b", + "sha256:ae301c282a499dc1968dd633cfef8771dd84228ae9d40002a3ea990e4ff0c469", + "sha256:afdadd73304c9befaed02eb42f5f09fdc16288de0a08b32b8080f0f0f6350aa6", + "sha256:b20b7c9beb481e92e07368ebfaa363ed7ef61e65ffe6e0edbdbaceb33e134124", + "sha256:b30122e098c80e36d0117810d46459a46313421ce3298709170b687dc1240b02", + "sha256:b55753ee23028ba8644fd22e50de7b8f85fa60b562a0fafaad788701d6131ff8", + "sha256:b5ccfd2291c93746a286c87c3f895165b697399969d24c54804ec3ec559d4e43", + "sha256:b6613daa851745dd22b860651de930275be9d3e9373283a2164992abacb75b62", + "sha256:b710f0f4d7ec4f9fa89dfde7002f80bcd77de8024017e70706b0911ea086e2ef", + "sha256:b9ec7a4a0d6b8297102aa56758434fb1fca276a82ed7362e37817407185c3abb", + "sha256:bb12f19cdf9c4f2d9aa259562e19b188ff34afab28dd9509ff32a3f1c2c29326", + "sha256:bd2cd1b998ea4c8c1dad829fc4fa88aeed4dee555b5e03c132fc618e6123f168", + "sha256:c4da599af36618881748b5db457d937955bb2b4800db891647d46767d636c408", + "sha256:c53b12b89bd7a6c79f0536ff0d0a84fdf4ab5f6252d94b24b9b753bd9ada2ddf", + "sha256:c9617583173a29048e11397f165501edc5ae223504a404b2532a212a71ecc9ed", + "sha256:cd46c94966f631a81ffe33eee928db58e9fbee15baba5923d284aeadc0e0fa76", + "sha256:cd6806313606559e6c7adfa0dbeb30fc5ab625f00958c3d93f84831e7a32b71e", + "sha256:d0dd4cd58220351233002f910e35cc01d30337696b55c6578f71318b137770f9", + "sha256:d0f7ec902a0097ac39f1922c89be9eaccf00eb87751e28915320b4f72912d057", + "sha256:d5bb41bc74b321789803d45b124fc2145c1b3353b4ad43296d9d1d242574969b", + "sha256:d7ab0c10c4fa99dc9e26b04e6b62ac32d2bcaea3aad9b81ec8ce9a7aa32b7b1b", + "sha256:de24b47159e07833aeab517d9cb1c3c5c2d6445cc378b1c2f1d8d15fb4841d63", + "sha256:de906e5486b5c053d15b7731583c25e3c9147c288ac8152a6d1f9bccdec72641", + "sha256:df25a426446197488a6702954dcc1de511deee20c9db730499a2aa83fddf0df1", + "sha256:e25b2e90a032dc248213af7f3f3e975e1934b204f3b16aeeaeaff27a3b65e128", + "sha256:e707d93bae8f0a14e6df1ae8b0f076532b35f00e691995f33132d806a88e5c18", + "sha256:ea2ac3f7a7a2f32f194c84d82a034e66780057fd908b421becd2f173504d040e", + "sha256:ead83ac59a29d6439ddff46e205ce32f8b7f71a6bd8062347f77e232825e3d0a", + "sha256:edad398d5d402c43d2adada390dd83c74e46e020945ff4df801166047013617e", + "sha256:f010cfad3ab10676e44dc72a813c968cd586f37b466d27cde73d1f7f1ba158c2", + "sha256:f404dcc8172da1f28da9b1f0087009578e608a4899b96d244925c4f463201f2a", + "sha256:f54908bf91280a9b8fa6a8c8f3c2f65850ce6acae2852bbe292391628ebca42f", + "sha256:f5d5a5f976b39af73324f2b793862859902ccb9542621856d51a5993064f25e4", + "sha256:f9484016e6765bd295708cccc9def49f708ce07ac003808f69efa386633affb9", + "sha256:fbf36c5a220a85187cacc1fcb7dd87070e04b5fc28df7a43f6842f7c8224a388", + "sha256:fc42882b554a86e564e0b662da47b8a4b32fa966920bd165e27bb8079a323bc1" + ], + "version": "==1.2.0" }, "mako": { "hashes": [ @@ -2779,57 +3323,84 @@ }, "markupsafe": { "hashes": [ - "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003", - "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88", - "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5", - "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7", - "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a", - "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603", - "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1", - "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135", - "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247", - "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6", - "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601", - "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77", - "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02", - "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e", - "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63", - "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f", - "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980", - "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b", - "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812", - "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff", - "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96", - "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1", - "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925", - "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a", - "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6", - "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e", - "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f", - "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4", - "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f", - "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3", - "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c", - "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a", - "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417", - "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a", - "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a", - "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37", - "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452", - "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933", - "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a", - "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7" + "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e", + "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e", + "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431", + "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686", + "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c", + "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559", + "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc", + "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb", + "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939", + "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c", + "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0", + "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4", + "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9", + "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575", + "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba", + "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d", + "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd", + "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3", + "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00", + "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155", + "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac", + "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52", + "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f", + "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8", + "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b", + "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007", + "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24", + "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea", + "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198", + "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0", + "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee", + "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be", + "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2", + "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1", + "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707", + "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6", + "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c", + "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58", + "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823", + "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779", + "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636", + "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c", + "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad", + "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee", + "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc", + "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2", + "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48", + "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7", + "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e", + "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b", + "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa", + "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5", + "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e", + "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb", + "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9", + "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57", + "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc", + "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc", + "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2", + "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11" ], "markers": "python_version >= '3.7'", - "version": "==2.1.1" + "version": "==2.1.3" }, "marshmallow": { "hashes": [ - "sha256:90032c0fd650ce94b6ec6dc8dfeb0e3ff50c144586462c389b81a07205bedb78", - "sha256:93f0958568da045b0021ec6aeb7ac37c81bfcccbb9a0e7ed8559885070b3a19b" + "sha256:5d2371bbe42000f2b3fb5eaa065224df7d8f8597bc19a1bbfa5bfe7fba8da889", + "sha256:684939db93e80ad3561392f47be0230743131560a41c5110684c16e21ade0a5c" ], - "markers": "python_version >= '3.7'", - "version": "==3.19.0" + "markers": "python_version >= '3.8'", + "version": "==3.20.1" + }, + "matplotlib-inline": { + "hashes": [ + "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311", + "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304" + ], + "version": "==0.1.6" }, "maya": { "hashes": [ @@ -2846,62 +3417,73 @@ "markers": "python_version >= '3.5'", "version": "==0.20" }, - "msgpack": { + "morphys": { "hashes": [ - "sha256:002b5c72b6cd9b4bafd790f364b8480e859b4712e91f43014fe01e4f957b8467", - "sha256:0a68d3ac0104e2d3510de90a1091720157c319ceeb90d74f7b5295a6bee51bae", - "sha256:0df96d6eaf45ceca04b3f3b4b111b86b33785683d682c655063ef8057d61fd92", - "sha256:0dfe3947db5fb9ce52aaea6ca28112a170db9eae75adf9339a1aec434dc954ef", - "sha256:0e3590f9fb9f7fbc36df366267870e77269c03172d086fa76bb4eba8b2b46624", - "sha256:11184bc7e56fd74c00ead4f9cc9a3091d62ecb96e97653add7a879a14b003227", - "sha256:112b0f93202d7c0fef0b7810d465fde23c746a2d482e1e2de2aafd2ce1492c88", - "sha256:1276e8f34e139aeff1c77a3cefb295598b504ac5314d32c8c3d54d24fadb94c9", - "sha256:1576bd97527a93c44fa856770197dec00d223b0b9f36ef03f65bac60197cedf8", - "sha256:1e91d641d2bfe91ba4c52039adc5bccf27c335356055825c7f88742c8bb900dd", - "sha256:26b8feaca40a90cbe031b03d82b2898bf560027160d3eae1423f4a67654ec5d6", - "sha256:2999623886c5c02deefe156e8f869c3b0aaeba14bfc50aa2486a0415178fce55", - "sha256:2a2df1b55a78eb5f5b7d2a4bb221cd8363913830145fad05374a80bf0877cb1e", - "sha256:2bb8cdf50dd623392fa75525cce44a65a12a00c98e1e37bf0fb08ddce2ff60d2", - "sha256:2cc5ca2712ac0003bcb625c96368fd08a0f86bbc1a5578802512d87bc592fe44", - "sha256:35bc0faa494b0f1d851fd29129b2575b2e26d41d177caacd4206d81502d4c6a6", - "sha256:3c11a48cf5e59026ad7cb0dc29e29a01b5a66a3e333dc11c04f7e991fc5510a9", - "sha256:449e57cc1ff18d3b444eb554e44613cffcccb32805d16726a5494038c3b93dab", - "sha256:462497af5fd4e0edbb1559c352ad84f6c577ffbbb708566a0abaaa84acd9f3ae", - "sha256:4733359808c56d5d7756628736061c432ded018e7a1dff2d35a02439043321aa", - "sha256:48f5d88c99f64c456413d74a975bd605a9b0526293218a3b77220a2c15458ba9", - "sha256:49565b0e3d7896d9ea71d9095df15b7f75a035c49be733051c34762ca95bbf7e", - "sha256:4ab251d229d10498e9a2f3b1e68ef64cb393394ec477e3370c457f9430ce9250", - "sha256:4d5834a2a48965a349da1c5a79760d94a1a0172fbb5ab6b5b33cbf8447e109ce", - "sha256:4dea20515f660aa6b7e964433b1808d098dcfcabbebeaaad240d11f909298075", - "sha256:545e3cf0cf74f3e48b470f68ed19551ae6f9722814ea969305794645da091236", - "sha256:63e29d6e8c9ca22b21846234913c3466b7e4ee6e422f205a2988083de3b08cae", - "sha256:6916c78f33602ecf0509cc40379271ba0f9ab572b066bd4bdafd7434dee4bc6e", - "sha256:6a4192b1ab40f8dca3f2877b70e63799d95c62c068c84dc028b40a6cb03ccd0f", - "sha256:6c9566f2c39ccced0a38d37c26cc3570983b97833c365a6044edef3574a00c08", - "sha256:76ee788122de3a68a02ed6f3a16bbcd97bc7c2e39bd4d94be2f1821e7c4a64e6", - "sha256:7760f85956c415578c17edb39eed99f9181a48375b0d4a94076d84148cf67b2d", - "sha256:77ccd2af37f3db0ea59fb280fa2165bf1b096510ba9fe0cc2bf8fa92a22fdb43", - "sha256:81fc7ba725464651190b196f3cd848e8553d4d510114a954681fd0b9c479d7e1", - "sha256:85f279d88d8e833ec015650fd15ae5eddce0791e1e8a59165318f371158efec6", - "sha256:9667bdfdf523c40d2511f0e98a6c9d3603be6b371ae9a238b7ef2dc4e7a427b0", - "sha256:a75dfb03f8b06f4ab093dafe3ddcc2d633259e6c3f74bb1b01996f5d8aa5868c", - "sha256:ac5bd7901487c4a1dd51a8c58f2632b15d838d07ceedaa5e4c080f7190925bff", - "sha256:aca0f1644d6b5a73eb3e74d4d64d5d8c6c3d577e753a04c9e9c87d07692c58db", - "sha256:b17be2478b622939e39b816e0aa8242611cc8d3583d1cd8ec31b249f04623243", - "sha256:c1683841cd4fa45ac427c18854c3ec3cd9b681694caf5bff04edb9387602d661", - "sha256:c23080fdeec4716aede32b4e0ef7e213c7b1093eede9ee010949f2a418ced6ba", - "sha256:d5b5b962221fa2c5d3a7f8133f9abffc114fe218eb4365e40f17732ade576c8e", - "sha256:d603de2b8d2ea3f3bcb2efe286849aa7a81531abc52d8454da12f46235092bcb", - "sha256:e83f80a7fec1a62cf4e6c9a660e39c7f878f603737a0cdac8c13131d11d97f52", - "sha256:eb514ad14edf07a1dbe63761fd30f89ae79b42625731e1ccf5e1f1092950eaa6", - "sha256:eba96145051ccec0ec86611fe9cf693ce55f2a3ce89c06ed307de0e085730ec1", - "sha256:ed6f7b854a823ea44cf94919ba3f727e230da29feb4a99711433f25800cf747f", - "sha256:f0029245c51fd9473dc1aede1160b0a29f4a912e6b1dd353fa6d317085b219da", - "sha256:f5d869c18f030202eb412f08b28d2afeea553d6613aee89e200d7aca7ef01f5f", - "sha256:fb62ea4b62bfcb0b380d5680f9a4b3f9a2d166d9394e9bbd9666c0ee09a3645c", - "sha256:fcb8a47f43acc113e24e910399376f7277cf8508b27e5b88499f053de6b115a8" + "sha256:76d6dbaa4d65f597e59d332c81da786d83e4669387b9b2a750cfec74e7beec20" ], - "version": "==1.0.4" + "version": "==1.0" + }, + "msgpack": { + "hashes": [ + "sha256:04ad6069c86e531682f9e1e71b71c1c3937d6014a7c3e9edd2aa81ad58842862", + "sha256:0bfdd914e55e0d2c9e1526de210f6fe8ffe9705f2b1dfcc4aecc92a4cb4b533d", + "sha256:1dc93e8e4653bdb5910aed79f11e165c85732067614f180f70534f056da97db3", + "sha256:1e2d69948e4132813b8d1131f29f9101bc2c915f26089a6d632001a5c1349672", + "sha256:235a31ec7db685f5c82233bddf9858748b89b8119bf4538d514536c485c15fe0", + "sha256:27dcd6f46a21c18fa5e5deed92a43d4554e3df8d8ca5a47bf0615d6a5f39dbc9", + "sha256:28efb066cde83c479dfe5a48141a53bc7e5f13f785b92ddde336c716663039ee", + "sha256:3476fae43db72bd11f29a5147ae2f3cb22e2f1a91d575ef130d2bf49afd21c46", + "sha256:36e17c4592231a7dbd2ed09027823ab295d2791b3b1efb2aee874b10548b7524", + "sha256:384d779f0d6f1b110eae74cb0659d9aa6ff35aaf547b3955abf2ab4c901c4819", + "sha256:38949d30b11ae5f95c3c91917ee7a6b239f5ec276f271f28638dec9156f82cfc", + "sha256:3967e4ad1aa9da62fd53e346ed17d7b2e922cba5ab93bdd46febcac39be636fc", + "sha256:3e7bf4442b310ff154b7bb9d81eb2c016b7d597e364f97d72b1acc3817a0fdc1", + "sha256:3f0c8c6dfa6605ab8ff0611995ee30d4f9fcff89966cf562733b4008a3d60d82", + "sha256:484ae3240666ad34cfa31eea7b8c6cd2f1fdaae21d73ce2974211df099a95d81", + "sha256:4a7b4f35de6a304b5533c238bee86b670b75b03d31b7797929caa7a624b5dda6", + "sha256:4cb14ce54d9b857be9591ac364cb08dc2d6a5c4318c1182cb1d02274029d590d", + "sha256:4e71bc4416de195d6e9b4ee93ad3f2f6b2ce11d042b4d7a7ee00bbe0358bd0c2", + "sha256:52700dc63a4676669b341ba33520f4d6e43d3ca58d422e22ba66d1736b0a6e4c", + "sha256:572efc93db7a4d27e404501975ca6d2d9775705c2d922390d878fcf768d92c87", + "sha256:576eb384292b139821c41995523654ad82d1916da6a60cff129c715a6223ea84", + "sha256:5b0bf0effb196ed76b7ad883848143427a73c355ae8e569fa538365064188b8e", + "sha256:5b6ccc0c85916998d788b295765ea0e9cb9aac7e4a8ed71d12e7d8ac31c23c95", + "sha256:5ed82f5a7af3697b1c4786053736f24a0efd0a1b8a130d4c7bfee4b9ded0f08f", + "sha256:6d4c80667de2e36970ebf74f42d1088cc9ee7ef5f4e8c35eee1b40eafd33ca5b", + "sha256:730076207cb816138cf1af7f7237b208340a2c5e749707457d70705715c93b93", + "sha256:7687e22a31e976a0e7fc99c2f4d11ca45eff652a81eb8c8085e9609298916dcf", + "sha256:822ea70dc4018c7e6223f13affd1c5c30c0f5c12ac1f96cd8e9949acddb48a61", + "sha256:84b0daf226913133f899ea9b30618722d45feffa67e4fe867b0b5ae83a34060c", + "sha256:85765fdf4b27eb5086f05ac0491090fc76f4f2b28e09d9350c31aac25a5aaff8", + "sha256:8dd178c4c80706546702c59529ffc005681bd6dc2ea234c450661b205445a34d", + "sha256:8f5b234f567cf76ee489502ceb7165c2a5cecec081db2b37e35332b537f8157c", + "sha256:98bbd754a422a0b123c66a4c341de0474cad4a5c10c164ceed6ea090f3563db4", + "sha256:993584fc821c58d5993521bfdcd31a4adf025c7d745bbd4d12ccfecf695af5ba", + "sha256:a40821a89dc373d6427e2b44b572efc36a2778d3f543299e2f24eb1a5de65415", + "sha256:b291f0ee7961a597cbbcc77709374087fa2a9afe7bdb6a40dbbd9b127e79afee", + "sha256:b573a43ef7c368ba4ea06050a957c2a7550f729c31f11dd616d2ac4aba99888d", + "sha256:b610ff0f24e9f11c9ae653c67ff8cc03c075131401b3e5ef4b82570d1728f8a9", + "sha256:bdf38ba2d393c7911ae989c3bbba510ebbcdf4ecbdbfec36272abe350c454075", + "sha256:bfef2bb6ef068827bbd021017a107194956918ab43ce4d6dc945ffa13efbc25f", + "sha256:cab3db8bab4b7e635c1c97270d7a4b2a90c070b33cbc00c99ef3f9be03d3e1f7", + "sha256:cb70766519500281815dfd7a87d3a178acf7ce95390544b8c90587d76b227681", + "sha256:cca1b62fe70d761a282496b96a5e51c44c213e410a964bdffe0928e611368329", + "sha256:ccf9a39706b604d884d2cb1e27fe973bc55f2890c52f38df742bc1d79ab9f5e1", + "sha256:dc43f1ec66eb8440567186ae2f8c447d91e0372d793dfe8c222aec857b81a8cf", + "sha256:dd632777ff3beaaf629f1ab4396caf7ba0bdd075d948a69460d13d44357aca4c", + "sha256:e45ae4927759289c30ccba8d9fdce62bb414977ba158286b5ddaf8df2cddb5c5", + "sha256:e50ebce52f41370707f1e21a59514e3375e3edd6e1832f5e5235237db933c98b", + "sha256:ebbbba226f0a108a7366bf4b59bf0f30a12fd5e75100c630267d94d7f0ad20e5", + "sha256:ec79ff6159dffcc30853b2ad612ed572af86c92b5168aa3fc01a67b0fa40665e", + "sha256:f0936e08e0003f66bfd97e74ee530427707297b0d0361247e9b4f59ab78ddc8b", + "sha256:f26a07a6e877c76a88e3cecac8531908d980d3d5067ff69213653649ec0f60ad", + "sha256:f64e376cd20d3f030190e8c32e1c64582eba56ac6dc7d5b0b49a9d44021b52fd", + "sha256:f6ffbc252eb0d229aeb2f9ad051200668fc3a9aaa8994e49f0cb2ffe2b7867e7", + "sha256:f9a7c509542db4eceed3dcf21ee5267ab565a83555c9b88a8109dcecc4709002", + "sha256:ff1d0899f104f3921d94579a5638847f783c9b04f2d5f229392ca77fba5b82fc" + ], + "markers": "python_version >= '3.8'", + "version": "==1.0.7" }, "msgpack-python": { "hashes": [ @@ -2909,268 +3491,446 @@ ], "version": "==0.5.6" }, - "multiaddr": { - "hashes": [ - "sha256:30b2695189edc3d5b90f1c303abb8f02d963a3a4edf2e7178b975eb417ab0ecf", - "sha256:5c0f862cbcf19aada2a899f80ef896ddb2e85614e0c8f04dd287c06c69dac95b" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.0.9" + "msgspec": { + "hashes": [ + "sha256:227fee75a25080a8b3677cdd95b9c0c3652e27869004a084886c65eb558b3dd6", + "sha256:241277eed9fd91037372519fca62aecf823f7229c1d351030d0be5e3302580c1", + "sha256:44d551aee1ec8aa2d7b64762557c266bcbf7d5109f2246955718d05becc509d6", + "sha256:4d24a291a3c94a7f5e26e8f5ef93e72bf26c10dfeed4d6ae8fc87ead02f4e265", + "sha256:55e578fd921c88de0d3a209fe5fd392bb66623924c6525b42cea37c72bf8d558", + "sha256:5f446f16ea57d70cceec29b7cb85ec0b3bea032e3dec316806e38575ea3a69b4", + "sha256:73e70217ff5e4ac244c8f1b0769215cbc81e1c904e135597a5b71162857e6c27", + "sha256:7e95817021db96c43fd81244228e185b13b085cca3d5169af4e2dfe3ff412954", + "sha256:8064908ddb3d95d3261aaca48fd38abb16ccf59dc3f2d01eb4e04591fc1e9bd4", + "sha256:826dcb0dfaac0abbcf3a3ae991749900671796eb688b017a69a82bde1e624662", + "sha256:828ef92f6654915c36ef6c7d8fec92404a13be48f9ff85f060e73b30299bafe1", + "sha256:8476848f4937da8faec53700891694df2e412453cb7445991f0664cdd1e2dd16", + "sha256:847d79f6f0b698671ff390aa5a66e207108f2c23b077ef9314ca4fe7819fa4ec", + "sha256:86800265f87f192a0daefe668e0a9634c35bf8af94b1f297e1352ac62d2e26da", + "sha256:87bc01949a35970398f5267df8ed4189c340727bb6feec99efdb9969dd05cf30", + "sha256:8a198409f672f93534c9c36bdc9eea9fb536827bd63ea846882365516a961356", + "sha256:96ccaef83adc0ce96d95328a03289cd5aead4fe400aac21fbe2008855a124a01", + "sha256:9714b78965047638c01c818b4b418133d77e849017de17b0655ee37b714b47a6", + "sha256:991aa3c76d1b1ec84e840d0b3c96692af834e1f8a1e1a3974cbd189eaf0f2276", + "sha256:acdcef2fccfff02f80ac8673dbeab205c288b680d81e05bfb5ae0be6b1502a7e", + "sha256:b01efbf80a987a99e9079257c893c026dc661d4cd05caa1f7eabf4accc7f1fbc", + "sha256:b052fd7d25a8aa2ffde10126ee1d97b4c6f3d81f3f3ab1258ff759a2bd794874", + "sha256:bbbc08d59f74de5791bda63569f26a35ae1dd6bd20c55c3ceba5567b0e5a8ef1", + "sha256:cb62030bd6b1a00b01a2fcb09735016011696304e6b1d3321e58022548268d3e", + "sha256:cc2405dba5af6478dedd3512bb92197b6f9d1bc0095655afbe9b54d7a426f19f", + "sha256:d08175cbb55c1a87dd258645dce6cd00705d6088bf88e7cf510a9d5c24b0720b", + "sha256:d99f3c13569a5add0980b0d8c6e0bd94a656f6363b26107435b3091df979d228", + "sha256:da13a06e77d683204eee3b134b08ecd5e4759a79014027b1bcd7a12c614b466d", + "sha256:dc25e6100026f5e1ecb5120150f4e78beb909cbeb0eb724b9982361b75c86c6b", + "sha256:deb11ba2709019192636042df5c8db8738e45946735627021b7e7934714526e4", + "sha256:e14287c3405093645b3812e3436598edd383b9ed724c686852e65d569f39f953", + "sha256:e21bc5aae6b80dfe4eb75dc1bb29af65483f967d5522e9e3812115a0ba285cac", + "sha256:e4294158c233884f3b3220f0e96a30d3e916a4781f9502ae6d477bd57bbc80ad", + "sha256:e95bd0a946b5b7206f27c0f654f490231c9ad5e5a4ff65af8c986f5114dfaf0e", + "sha256:f6229dd49438d81ed7a3470e3cbc9646b1cc1b120d415a1786df880dabb1d1c4", + "sha256:f668102958841c5bbd3ba7cf569a65d17aa3bdcf22124f394dfcfcf53cc5a9b9" + ], + "version": "==0.18.4" }, "multidict": { "hashes": [ - "sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60", - "sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c", - "sha256:0556a1d4ea2d949efe5fd76a09b4a82e3a4a30700553a6725535098d8d9fb672", - "sha256:05f6949d6169878a03e607a21e3b862eaf8e356590e8bdae4227eedadacf6e51", - "sha256:07a017cfa00c9890011628eab2503bee5872f27144936a52eaab449be5eaf032", - "sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2", - "sha256:19adcfc2a7197cdc3987044e3f415168fc5dc1f720c932eb1ef4f71a2067e08b", - "sha256:19d9bad105dfb34eb539c97b132057a4e709919ec4dd883ece5838bcbf262b80", - "sha256:225383a6603c086e6cef0f2f05564acb4f4d5f019a4e3e983f572b8530f70c88", - "sha256:23b616fdc3c74c9fe01d76ce0d1ce872d2d396d8fa8e4899398ad64fb5aa214a", - "sha256:2957489cba47c2539a8eb7ab32ff49101439ccf78eab724c828c1a54ff3ff98d", - "sha256:2d36e929d7f6a16d4eb11b250719c39560dd70545356365b494249e2186bc389", - "sha256:2e4a0785b84fb59e43c18a015ffc575ba93f7d1dbd272b4cdad9f5134b8a006c", - "sha256:3368bf2398b0e0fcbf46d85795adc4c259299fec50c1416d0f77c0a843a3eed9", - "sha256:373ba9d1d061c76462d74e7de1c0c8e267e9791ee8cfefcf6b0b2495762c370c", - "sha256:4070613ea2227da2bfb2c35a6041e4371b0af6b0be57f424fe2318b42a748516", - "sha256:45183c96ddf61bf96d2684d9fbaf6f3564d86b34cb125761f9a0ef9e36c1d55b", - "sha256:4571f1beddff25f3e925eea34268422622963cd8dc395bb8778eb28418248e43", - "sha256:47e6a7e923e9cada7c139531feac59448f1f47727a79076c0b1ee80274cd8eee", - "sha256:47fbeedbf94bed6547d3aa632075d804867a352d86688c04e606971595460227", - "sha256:497988d6b6ec6ed6f87030ec03280b696ca47dbf0648045e4e1d28b80346560d", - "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae", - "sha256:50bd442726e288e884f7be9071016c15a8742eb689a593a0cac49ea093eef0a7", - "sha256:514fe2b8d750d6cdb4712346a2c5084a80220821a3e91f3f71eec11cf8d28fd4", - "sha256:5774d9218d77befa7b70d836004a768fb9aa4fdb53c97498f4d8d3f67bb9cfa9", - "sha256:5fdda29a3c7e76a064f2477c9aab1ba96fd94e02e386f1e665bca1807fc5386f", - "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013", - "sha256:626fe10ac87851f4cffecee161fc6f8f9853f0f6f1035b59337a51d29ff3b4f9", - "sha256:6701bf8a5d03a43375909ac91b6980aea74b0f5402fbe9428fc3f6edf5d9677e", - "sha256:684133b1e1fe91eda8fa7447f137c9490a064c6b7f392aa857bba83a28cfb693", - "sha256:6f3cdef8a247d1eafa649085812f8a310e728bdf3900ff6c434eafb2d443b23a", - "sha256:75bdf08716edde767b09e76829db8c1e5ca9d8bb0a8d4bd94ae1eafe3dac5e15", - "sha256:7c40b7bbece294ae3a87c1bc2abff0ff9beef41d14188cda94ada7bcea99b0fb", - "sha256:8004dca28e15b86d1b1372515f32eb6f814bdf6f00952699bdeb541691091f96", - "sha256:8064b7c6f0af936a741ea1efd18690bacfbae4078c0c385d7c3f611d11f0cf87", - "sha256:89171b2c769e03a953d5969b2f272efa931426355b6c0cb508022976a17fd376", - "sha256:8cbf0132f3de7cc6c6ce00147cc78e6439ea736cee6bca4f068bcf892b0fd658", - "sha256:9cc57c68cb9139c7cd6fc39f211b02198e69fb90ce4bc4a094cf5fe0d20fd8b0", - "sha256:a007b1638e148c3cfb6bf0bdc4f82776cef0ac487191d093cdc316905e504071", - "sha256:a2c34a93e1d2aa35fbf1485e5010337c72c6791407d03aa5f4eed920343dd360", - "sha256:a45e1135cb07086833ce969555df39149680e5471c04dfd6a915abd2fc3f6dbc", - "sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3", - "sha256:aef9cc3d9c7d63d924adac329c33835e0243b5052a6dfcbf7732a921c6e918ba", - "sha256:b9d153e7f1f9ba0b23ad1568b3b9e17301e23b042c23870f9ee0522dc5cc79e8", - "sha256:bfba7c6d5d7c9099ba21f84662b037a0ffd4a5e6b26ac07d19e423e6fdf965a9", - "sha256:c207fff63adcdf5a485969131dc70e4b194327666b7e8a87a97fbc4fd80a53b2", - "sha256:d0509e469d48940147e1235d994cd849a8f8195e0bca65f8f5439c56e17872a3", - "sha256:d16cce709ebfadc91278a1c005e3c17dd5f71f5098bfae1035149785ea6e9c68", - "sha256:d48b8ee1d4068561ce8033d2c344cf5232cb29ee1a0206a7b828c79cbc5982b8", - "sha256:de989b195c3d636ba000ee4281cd03bb1234635b124bf4cd89eeee9ca8fcb09d", - "sha256:e07c8e79d6e6fd37b42f3250dba122053fddb319e84b55dd3a8d6446e1a7ee49", - "sha256:e2c2e459f7050aeb7c1b1276763364884595d47000c1cddb51764c0d8976e608", - "sha256:e5b20e9599ba74391ca0cfbd7b328fcc20976823ba19bc573983a25b32e92b57", - "sha256:e875b6086e325bab7e680e4316d667fc0e5e174bb5611eb16b3ea121c8951b86", - "sha256:f4f052ee022928d34fe1f4d2bc743f32609fb79ed9c49a1710a5ad6b2198db20", - "sha256:fcb91630817aa8b9bc4a74023e4198480587269c272c58b3279875ed7235c293", - "sha256:fd9fc9c4849a07f3635ccffa895d57abce554b467d611a5009ba4f39b78a8849", - "sha256:feba80698173761cddd814fa22e88b0661e98cb810f9f986c54aa34d281e4937", - "sha256:feea820722e69451743a3d56ad74948b68bf456984d63c1a92e8347b7b88452d" - ], - "markers": "python_version >= '3.7'", - "version": "==6.0.2" - }, - "mypy": { - "hashes": [ - "sha256:0714258640194d75677e86c786e80ccf294972cc76885d3ebbb560f11db0003d", - "sha256:0c8f3be99e8a8bd403caa8c03be619544bc2c77a7093685dcf308c6b109426c6", - "sha256:0cca5adf694af539aeaa6ac633a7afe9bbd760df9d31be55ab780b77ab5ae8bf", - "sha256:1c8cd4fb70e8584ca1ed5805cbc7c017a3d1a29fb450621089ffed3e99d1857f", - "sha256:1f7d1a520373e2272b10796c3ff721ea1a0712288cafaa95931e66aa15798813", - "sha256:209ee89fbb0deed518605edddd234af80506aec932ad28d73c08f1400ef80a33", - "sha256:26efb2fcc6b67e4d5a55561f39176821d2adf88f2745ddc72751b7890f3194ad", - "sha256:37bd02ebf9d10e05b00d71302d2c2e6ca333e6c2a8584a98c00e038db8121f05", - "sha256:3a700330b567114b673cf8ee7388e949f843b356a73b5ab22dd7cff4742a5297", - "sha256:3c0165ba8f354a6d9881809ef29f1a9318a236a6d81c690094c5df32107bde06", - "sha256:3d80e36b7d7a9259b740be6d8d906221789b0d836201af4234093cae89ced0cd", - "sha256:4175593dc25d9da12f7de8de873a33f9b2b8bdb4e827a7cae952e5b1a342e243", - "sha256:4307270436fd7694b41f913eb09210faff27ea4979ecbcd849e57d2da2f65305", - "sha256:5e80e758243b97b618cdf22004beb09e8a2de1af481382e4d84bc52152d1c476", - "sha256:641411733b127c3e0dab94c45af15fea99e4468f99ac88b39efb1ad677da5711", - "sha256:652b651d42f155033a1967739788c436491b577b6a44e4c39fb340d0ee7f0d70", - "sha256:6d7464bac72a85cb3491c7e92b5b62f3dcccb8af26826257760a552a5e244aa5", - "sha256:74e259b5c19f70d35fcc1ad3d56499065c601dfe94ff67ae48b85596b9ec1461", - "sha256:7d17e0a9707d0772f4a7b878f04b4fd11f6f5bcb9b3813975a9b13c9332153ab", - "sha256:901c2c269c616e6cb0998b33d4adbb4a6af0ac4ce5cd078afd7bc95830e62c1c", - "sha256:98e781cd35c0acf33eb0295e8b9c55cdbef64fcb35f6d3aa2186f289bed6e80d", - "sha256:a12c56bf73cdab116df96e4ff39610b92a348cc99a1307e1da3c3768bbb5b135", - "sha256:ac6e503823143464538efda0e8e356d871557ef60ccd38f8824a4257acc18d93", - "sha256:b8472f736a5bfb159a5e36740847808f6f5b659960115ff29c7cecec1741c648", - "sha256:b86ce2c1866a748c0f6faca5232059f881cda6dda2a893b9a8373353cfe3715a", - "sha256:bc9ec663ed6c8f15f4ae9d3c04c989b744436c16d26580eaa760ae9dd5d662eb", - "sha256:c9166b3f81a10cdf9b49f2d594b21b31adadb3d5e9db9b834866c3258b695be3", - "sha256:d13674f3fb73805ba0c45eb6c0c3053d218aa1f7abead6e446d474529aafc372", - "sha256:de32edc9b0a7e67c2775e574cb061a537660e51210fbf6006b0b36ea695ae9bb", - "sha256:e62ebaad93be3ad1a828a11e90f0e76f15449371ffeecca4a0a0b9adc99abcef" + "sha256:06560fbdcf22c9387100979e65b26fba0816c162b888cb65b845d3def7a54c9b", + "sha256:067150fad08e6f2dd91a650c7a49ba65085303fcc3decbd64a57dc13a2733031", + "sha256:0a2cbcfbea6dc776782a444db819c8b78afe4db597211298dd8b2222f73e9cd0", + "sha256:0dd1c93edb444b33ba2274b66f63def8a327d607c6c790772f448a53b6ea59ce", + "sha256:0fed465af2e0eb6357ba95795d003ac0bdb546305cc2366b1fc8f0ad67cc3fda", + "sha256:116347c63ba049c1ea56e157fa8aa6edaf5e92925c9b64f3da7769bdfa012858", + "sha256:1b4ac3ba7a97b35a5ccf34f41b5a8642a01d1e55454b699e5e8e7a99b5a3acf5", + "sha256:1c7976cd1c157fa7ba5456ae5d31ccdf1479680dc9b8d8aa28afabc370df42b8", + "sha256:246145bff76cc4b19310f0ad28bd0769b940c2a49fc601b86bfd150cbd72bb22", + "sha256:25cbd39a9029b409167aa0a20d8a17f502d43f2efebfe9e3ac019fe6796c59ac", + "sha256:28e6d883acd8674887d7edc896b91751dc2d8e87fbdca8359591a13872799e4e", + "sha256:2d1d55cdf706ddc62822d394d1df53573d32a7a07d4f099470d3cb9323b721b6", + "sha256:2e77282fd1d677c313ffcaddfec236bf23f273c4fba7cdf198108f5940ae10f5", + "sha256:32fdba7333eb2351fee2596b756d730d62b5827d5e1ab2f84e6cbb287cc67fe0", + "sha256:35591729668a303a02b06e8dba0eb8140c4a1bfd4c4b3209a436a02a5ac1de11", + "sha256:380b868f55f63d048a25931a1632818f90e4be71d2081c2338fcf656d299949a", + "sha256:3822c5894c72e3b35aae9909bef66ec83e44522faf767c0ad39e0e2de11d3b55", + "sha256:38ba256ee9b310da6a1a0f013ef4e422fca30a685bcbec86a969bd520504e341", + "sha256:3bc3b1621b979621cee9f7b09f024ec76ec03cc365e638126a056317470bde1b", + "sha256:3d2d7d1fff8e09d99354c04c3fd5b560fb04639fd45926b34e27cfdec678a704", + "sha256:517d75522b7b18a3385726b54a081afd425d4f41144a5399e5abd97ccafdf36b", + "sha256:5f79c19c6420962eb17c7e48878a03053b7ccd7b69f389d5831c0a4a7f1ac0a1", + "sha256:5f841c4f14331fd1e36cbf3336ed7be2cb2a8f110ce40ea253e5573387db7621", + "sha256:637c1896497ff19e1ee27c1c2c2ddaa9f2d134bbb5e0c52254361ea20486418d", + "sha256:6ee908c070020d682e9b42c8f621e8bb10c767d04416e2ebe44e37d0f44d9ad5", + "sha256:77f0fb7200cc7dedda7a60912f2059086e29ff67cefbc58d2506638c1a9132d7", + "sha256:7878b61c867fb2df7a95e44b316f88d5a3742390c99dfba6c557a21b30180cac", + "sha256:78c106b2b506b4d895ddc801ff509f941119394b89c9115580014127414e6c2d", + "sha256:8b911d74acdc1fe2941e59b4f1a278a330e9c34c6c8ca1ee21264c51ec9b67ef", + "sha256:93de39267c4c676c9ebb2057e98a8138bade0d806aad4d864322eee0803140a0", + "sha256:9416cf11bcd73c861267e88aea71e9fcc35302b3943e45e1dbb4317f91a4b34f", + "sha256:94b117e27efd8e08b4046c57461d5a114d26b40824995a2eb58372b94f9fca02", + "sha256:9815765f9dcda04921ba467957be543423e5ec6a1136135d84f2ae092c50d87b", + "sha256:98ec9aea6223adf46999f22e2c0ab6cf33f5914be604a404f658386a8f1fba37", + "sha256:a37e9a68349f6abe24130846e2f1d2e38f7ddab30b81b754e5a1fde32f782b23", + "sha256:a43616aec0f0d53c411582c451f5d3e1123a68cc7b3475d6f7d97a626f8ff90d", + "sha256:a4771d0d0ac9d9fe9e24e33bed482a13dfc1256d008d101485fe460359476065", + "sha256:a5635bcf1b75f0f6ef3c8a1ad07b500104a971e38d3683167b9454cb6465ac86", + "sha256:a9acb76d5f3dd9421874923da2ed1e76041cb51b9337fd7f507edde1d86535d6", + "sha256:ac42181292099d91217a82e3fa3ce0e0ddf3a74fd891b7c2b347a7f5aa0edded", + "sha256:b227345e4186809d31f22087d0265655114af7cda442ecaf72246275865bebe4", + "sha256:b61f85101ef08cbbc37846ac0e43f027f7844f3fade9b7f6dd087178caedeee7", + "sha256:b70913cbf2e14275013be98a06ef4b412329fe7b4f83d64eb70dce8269ed1e1a", + "sha256:b9aad49466b8d828b96b9e3630006234879c8d3e2b0a9d99219b3121bc5cdb17", + "sha256:baf1856fab8212bf35230c019cde7c641887e3fc08cadd39d32a421a30151ea3", + "sha256:bd6c9c50bf2ad3f0448edaa1a3b55b2e6866ef8feca5d8dbec10ec7c94371d21", + "sha256:c1ff762e2ee126e6f1258650ac641e2b8e1f3d927a925aafcfde943b77a36d24", + "sha256:c30ac9f562106cd9e8071c23949a067b10211917fdcb75b4718cf5775356a940", + "sha256:c9631c642e08b9fff1c6255487e62971d8b8e821808ddd013d8ac058087591ac", + "sha256:cdd68778f96216596218b4e8882944d24a634d984ee1a5a049b300377878fa7c", + "sha256:ce8cacda0b679ebc25624d5de66c705bc53dcc7c6f02a7fb0f3ca5e227d80422", + "sha256:cfde464ca4af42a629648c0b0d79b8f295cf5b695412451716531d6916461628", + "sha256:d3def943bfd5f1c47d51fd324df1e806d8da1f8e105cc7f1c76a1daf0f7e17b0", + "sha256:d9b668c065968c5979fe6b6fa6760bb6ab9aeb94b75b73c0a9c1acf6393ac3bf", + "sha256:da7d57ea65744d249427793c042094c4016789eb2562576fb831870f9c878d9e", + "sha256:dc3a866cf6c13d59a01878cd806f219340f3e82eed514485e094321f24900677", + "sha256:df23c83398715b26ab09574217ca21e14694917a0c857e356fd39e1c64f8283f", + "sha256:dfc924a7e946dd3c6360e50e8f750d51e3ef5395c95dc054bc9eab0f70df4f9c", + "sha256:e4a67f1080123de76e4e97a18d10350df6a7182e243312426d508712e99988d4", + "sha256:e5283c0a00f48e8cafcecadebfa0ed1dac8b39e295c7248c44c665c16dc1138b", + "sha256:e58a9b5cc96e014ddf93c2227cbdeca94b56a7eb77300205d6e4001805391747", + "sha256:e6453f3cbeb78440747096f239d282cc57a2997a16b5197c9bc839099e1633d0", + "sha256:e6c4fa1ec16e01e292315ba76eb1d012c025b99d22896bd14a66628b245e3e01", + "sha256:e7d81ce5744757d2f05fc41896e3b2ae0458464b14b5a2c1e87a6a9d69aefaa8", + "sha256:ea21d4d5104b4f840b91d9dc8cbc832aba9612121eaba503e54eaab1ad140eb9", + "sha256:ecc99bce8ee42dcad15848c7885197d26841cb24fa2ee6e89d23b8993c871c64", + "sha256:f0bb0973f42ffcb5e3537548e0767079420aefd94ba990b61cf7bb8d47f4916d", + "sha256:f19001e790013ed580abfde2a4465388950728861b52f0da73e8e8a9418533c0", + "sha256:f76440e480c3b2ca7f843ff8a48dc82446b86ed4930552d736c0bac507498a52", + "sha256:f9bef5cff994ca3026fcc90680e326d1a19df9841c5e3d224076407cc21471a1", + "sha256:fc66d4016f6e50ed36fb39cd287a3878ffcebfa90008535c62e0e90a7ab713ae", + "sha256:fd77c8f3cba815aa69cb97ee2b2ef385c7c12ada9c734b0f3b32e26bb88bbf1d" ], - "index": "pypi", - "version": "==0.991" + "markers": "python_version >= '3.6'", + "version": "==5.2.0" }, "mypy-extensions": { "hashes": [ - "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", - "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" + "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", + "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782" ], - "version": "==0.4.3" - }, - "netaddr": { - "hashes": [ - "sha256:9666d0232c32d2656e5e5f8d735f58fd6c7457ce52fc21c98d45f2af78f990ac", - "sha256:d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243" - ], - "version": "==0.8.0" + "markers": "python_version >= '3.5'", + "version": "==1.0.0" }, "nodeenv": { "hashes": [ - "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e", - "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b" + "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2", + "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec" ], - "version": "==1.7.0" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'", + "version": "==1.8.0" }, "nucypher": { "git": "https://github.com/nucypher/nucypher.git", - "ref": "9ed0186060fa59da827b2e49f70530ce65745054" + "markers": "python_version >= '3'", + "ref": "4b029f707c021da8e87f5a753c9eadd86dbe4b30" }, "nucypher-core": { "hashes": [ - "sha256:0bcfb9bec7cef486aaf8b980f628561eb57a675ca192f2832e70bb6b2fa17cdf", - "sha256:0bdef5106c42310dae46444256cf6f031759df2e8b7f18560f059e3a4bd469a9", - "sha256:100873b3eaa29e4392b0f6c35ddcf2465f554483a54b2f36cbfe3b345a445ed9", - "sha256:1879b053ee5b02ea2379518d3a6062706ac3a33f758757e35a2d5a2621b8af2c", - "sha256:1c4261c4f096bfb27da99da52d75312565d57caa298788f28d6945adbea7fb0e", - "sha256:281fff3bb92a0a222e6cf7d3c0622ba1bf57961997886e98a03a26e9ebb59dcb", - "sha256:3cc809505645663306cbaa9f37668822b32a8bcddcc2744c748a2736cfda17db", - "sha256:3d390d6c0ecd118b1d3cd1fa7f2cdc3669f7700a3c8593013cb1e799ac9e79b3", - "sha256:5d8428198e8307678bb8d79c8d0a0df8bfb2df784fa33ee0e29d2a3cae1a163d", - "sha256:8cfb67b509e0a2860f9209bd7945c40540de8b84f0f693129d53cc710ba9cfb1", - "sha256:9317e020880ba4a66759c5ecdef9a4d16d1eb25e16761afa5d91a80616108c8a", - "sha256:9dfb766534da38df4290c35be0d76e3ed61a5968f7af31b2e3d3c69cbf74be16", - "sha256:cfc6458f27dead92c9d2c7a75a55ebf05ce6019c49e3163204c4e9601f231c87", - "sha256:d2eb7a8bb8d9ecbd68735b2a504a1b3d15e702c275515d8266a36c925e954ae0", - "sha256:df1b8807415bbcb8b839b954046f486c8e7b03d8f86647e456de7ca5a2f86cc4", - "sha256:ef6e1c10d2faeb6c26829a5f6e5a49b720d73950bd4cc9866fef19b950148c75" - ], - "version": "==0.4.1" + "sha256:09c754a7450d2ba3a46bf2c73ac35a0e8fe73c0c2fdbc2dab47ebea47d90b909", + "sha256:0b3d44fdc4acfd31cf6e46fdf8acb9ea278823b2d72336f5c9e7732b37ac6f30", + "sha256:0b8449ab2524628b1d4c095fc4ff5e46c699f0acd62a099ba6d411e72704c94c", + "sha256:0fe7eab174fc658f8391f1834aa193fb10acf1a55a1c613d0f09493e8d0d9f17", + "sha256:1f70477f41bc10e19f6280258530dabecb453b1230f641601ea12f5e4c9cac67", + "sha256:1fc6f39de2e90e36695c2674a170047dc9abfc083e9177b3304bd74ec21727d2", + "sha256:57c1c6d96570221ec8c30f8b00d89496f9d68cdf11b0574bdae7defd3cc1c975", + "sha256:74fcf712399aeb0d242c1d332a7f7a34d4ff70d9262c0537eb769ff973c2170e", + "sha256:75d5b86ab0fe51b00036cab25d6d4699fa3171aa8a8418d4027fdc2388f84c43", + "sha256:a3a69e37fdf6a42b5d0be58b28d70e2fb614320d032a2fe99aa3aa29643f9494", + "sha256:b9c82bd7593d2deac41c8f7b2833193eb6e6cab0208261313121646fcd275629", + "sha256:de48dae67ff01ffe020e8887432daa8a1072797559e11cb34d56b3012b6f4520", + "sha256:e22038db52190d88b6dd8cbcd76980d2f2d62a630baac46677f9ad6743b3b689", + "sha256:f2d44c28e4724f1c5ff6e566bbe1ab731bd57458bd219072aa146bd43a4e78d6", + "sha256:fadd7ac4009d74b2bdf2b678015ff6e315827517de21d0684fd31b9259a08fbc", + "sha256:fcb97049f8719d30fd155fe3f862410cb5edb3afd76ff0ae1ff60d76d0b5a3f8" + ], + "index": "pypi", + "version": "==0.13.0" + }, + "numpy": { + "hashes": [ + "sha256:06934e1a22c54636a059215d6da99e23286424f316fddd979f5071093b648668", + "sha256:1c59c046c31a43310ad0199d6299e59f57a289e22f0f36951ced1c9eac3665b9", + "sha256:1d1bd82d539607951cac963388534da3b7ea0e18b149a53cf883d8f699178c0f", + "sha256:1e11668d6f756ca5ef534b5be8653d16c5352cbb210a5c2a79ff288e937010d5", + "sha256:3649d566e2fc067597125428db15d60eb42a4e0897fc48d28cb75dc2e0454e53", + "sha256:59227c981d43425ca5e5c01094d59eb14e8772ce6975d4b2fc1e106a833d5ae2", + "sha256:6081aed64714a18c72b168a9276095ef9155dd7888b9e74b5987808f0dd0a974", + "sha256:6965888d65d2848e8768824ca8288db0a81263c1efccec881cb35a0d805fcd2f", + "sha256:76ff661a867d9272cd2a99eed002470f46dbe0943a5ffd140f49be84f68ffc42", + "sha256:78ca54b2f9daffa5f323f34cdf21e1d9779a54073f0018a3094ab907938331a2", + "sha256:82e871307a6331b5f09efda3c22e03c095d957f04bf6bc1804f30048d0e5e7af", + "sha256:8ab9163ca8aeb7fd32fe93866490654d2f7dda4e61bc6297bf72ce07fdc02f67", + "sha256:9696aa2e35cc41e398a6d42d147cf326f8f9d81befcb399bc1ed7ffea339b64e", + "sha256:97e5d6a9f0702c2863aaabf19f0d1b6c2628fbe476438ce0b5ce06e83085064c", + "sha256:9f42284ebf91bdf32fafac29d29d4c07e5e9d1af862ea73686581773ef9e73a7", + "sha256:a03fb25610ef560a6201ff06df4f8105292ba56e7cdd196ea350d123fc32e24e", + "sha256:a5b411040beead47a228bde3b2241100454a6abde9df139ed087bd73fc0a4908", + "sha256:af22f3d8e228d84d1c0c44c1fbdeb80f97a15a0abe4f080960393a00db733b66", + "sha256:afd5ced4e5a96dac6725daeb5242a35494243f2239244fad10a90ce58b071d24", + "sha256:b9d45d1dbb9de84894cc50efece5b09939752a2d75aab3a8b0cef6f3a35ecd6b", + "sha256:bb894accfd16b867d8643fc2ba6c8617c78ba2828051e9a69511644ce86ce83e", + "sha256:c8c6c72d4a9f831f328efb1312642a1cafafaa88981d9ab76368d50d07d93cbe", + "sha256:cd7837b2b734ca72959a1caf3309457a318c934abef7a43a14bb984e574bbb9a", + "sha256:cdd9ec98f0063d93baeb01aad472a1a0840dee302842a2746a7a8e92968f9575", + "sha256:d1cfc92db6af1fd37a7bb58e55c8383b4aa1ba23d012bdbba26b4bcca45ac297", + "sha256:d1d2c6b7dd618c41e202c59c1413ef9b2c8e8a15f5039e344af64195459e3104", + "sha256:d2984cb6caaf05294b8466966627e80bf6c7afd273279077679cb010acb0e5ab", + "sha256:d58e8c51a7cf43090d124d5073bc29ab2755822181fcad978b12e144e5e5a4b3", + "sha256:d78f269e0c4fd365fc2992c00353e4530d274ba68f15e968d8bc3c69ce5f5244", + "sha256:dcfaf015b79d1f9f9c9fd0731a907407dc3e45769262d657d754c3a028586124", + "sha256:e44ccb93f30c75dfc0c3aa3ce38f33486a75ec9abadabd4e59f114994a9c4617", + "sha256:e509cbc488c735b43b5ffea175235cec24bbc57b227ef1acc691725beb230d1c" + ], + "version": "==1.26.1" }, "packaging": { "hashes": [ - "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", - "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" + "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", + "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" ], - "markers": "python_version >= '3.6'", - "version": "==21.3" + "markers": "python_version >= '3.7'", + "version": "==23.2" + }, + "pandas": { + "hashes": [ + "sha256:14e45300521902689a81f3f41386dc86f19b8ba8dd5ac5a3c7010ef8d2932813", + "sha256:26d9c71772c7afb9d5046e6e9cf42d83dd147b5cf5bcb9d97252077118543792", + "sha256:3749077d86e3a2f0ed51367f30bf5b82e131cc0f14260c4d3e499186fccc4406", + "sha256:41179ce559943d83a9b4bbacb736b04c928b095b5f25dd2b7389eda08f46f373", + "sha256:478ff646ca42b20376e4ed3fa2e8d7341e8a63105586efe54fa2508ee087f328", + "sha256:50869a35cbb0f2e0cd5ec04b191e7b12ed688874bd05dd777c19b28cbea90996", + "sha256:565fa34a5434d38e9d250af3c12ff931abaf88050551d9fbcdfafca50d62babf", + "sha256:5f2b952406a1588ad4cad5b3f55f520e82e902388a6d5a4a91baa8d38d23c7f6", + "sha256:5fbcb19d6fceb9e946b3e23258757c7b225ba450990d9ed63ccceeb8cae609f7", + "sha256:6973549c01ca91ec96199e940495219c887ea815b2083722821f1d7abfa2b4dc", + "sha256:74a3fd7e5a7ec052f183273dc7b0acd3a863edf7520f5d3a1765c04ffdb3b0b1", + "sha256:7a0a56cef15fd1586726dace5616db75ebcfec9179a3a55e78f72c5639fa2a23", + "sha256:7cec0bee9f294e5de5bbfc14d0573f65526071029d036b753ee6507d2a21480a", + "sha256:87bd9c03da1ac870a6d2c8902a0e1fd4267ca00f13bc494c9e5a9020920e1d51", + "sha256:972d8a45395f2a2d26733eb8d0f629b2f90bebe8e8eddbb8829b180c09639572", + "sha256:9842b6f4b8479e41968eced654487258ed81df7d1c9b7b870ceea24ed9459b31", + "sha256:9f69c4029613de47816b1bb30ff5ac778686688751a5e9c99ad8c7031f6508e5", + "sha256:a50d9a4336a9621cab7b8eb3fb11adb82de58f9b91d84c2cd526576b881a0c5a", + "sha256:bc4c368f42b551bf72fac35c5128963a171b40dce866fb066540eeaf46faa003", + "sha256:c39a8da13cede5adcd3be1182883aea1c925476f4e84b2807a46e2775306305d", + "sha256:c3ac844a0fe00bfaeb2c9b51ab1424e5c8744f89860b138434a363b1f620f354", + "sha256:c4c00e0b0597c8e4f59e8d461f797e5d70b4d025880516a8261b2817c47759ee", + "sha256:c74a62747864ed568f5a82a49a23a8d7fe171d0c69038b38cedf0976831296fa", + "sha256:dd05f7783b3274aa206a1af06f0ceed3f9b412cf665b7247eacd83be41cf7bf0", + "sha256:dfd681c5dc216037e0b0a2c821f5ed99ba9f03ebcf119c7dac0e9a7b960b9ec9", + "sha256:e474390e60ed609cec869b0da796ad94f420bb057d86784191eefc62b65819ae", + "sha256:f76d097d12c82a535fda9dfe5e8dd4127952b45fea9b0276cb30cca5ea313fbc" + ], + "version": "==1.5.3" }, "parsimonious": { "hashes": [ - "sha256:3add338892d580e0cb3b1a39e4a1b427ff9f687858fdd61097053742391a9f6b" + "sha256:b2ad1ae63a2f65bd78f5e0a8ac510a98f3607a43f1db2a8d46636a5d9e4a30c1" ], - "version": "==0.8.1" + "version": "==0.9.0" }, - "pendulum": { + "parso": { "hashes": [ - "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394", - "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b", - "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a", - "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087", - "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739", - "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269", - "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0", - "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5", - "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be", - "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7", - "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3", - "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207", - "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe", - "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360", - "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0", - "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b", - "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052", - "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002", - "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116", - "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db", - "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b" + "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0", + "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==2.1.2" + "version": "==0.8.3" + }, + "pendulum": { + "hashes": [ + "sha256:03080a6b7f1b500b4b966d0f107f19e12386fbd8df477ed2aca9f2c1ea0f0a71", + "sha256:0b1cc6de778a99dbea179a86e655aa24d2d6964da5db52b2e147945a108cdb63", + "sha256:0dbcbad29f338dd90ffe9a3235c283a2a01f8e565c02ace69b84a3ed049cb9bc", + "sha256:0fc8b3643cd04b64e5d931df94fbc1e6ee4117255f93bc2df43e177f42c6ec50", + "sha256:0fdb0b98ab23dd9f134e80d18562bc17bf31c4e38b604d822fd87d685df4a984", + "sha256:0ff2cda697eeec55a2de4bbcb94bc941b2fb28cb6fa2b7d2d4098505892e555d", + "sha256:10edd6a29dc00768c5f15f79a1ef15d7d6b8897383175ed42e9ac60db924efa0", + "sha256:13656868bf4190b542bf25505629b4aef24c5d737b9796b5294f94de4d405b5f", + "sha256:1d12a537ff1acec48243325b15fb617795ff981efa142a9a584f5a82fc6c237b", + "sha256:2364a38b60968c67ea96164b166a9b00e6e6cd05e379f9b38dae51a0d027e6b3", + "sha256:256fb81c43183f4f3a40bcd9fd2f0914e77eb37334376117183037cf9656800f", + "sha256:2b85650e1d6171fdaa4cc29280caa7c1c8385f6db4f0b479ce74acaabe48ba97", + "sha256:30dce113b94cc05353651573a4336fe04e97260befcfd1d618ce632aa3fc7d2f", + "sha256:32f2568b295f1f4571354edc4b106ed63a5e4d0916b977fff863f7b1c937968b", + "sha256:39154e7f75ee9ff12adb909374189b7ffd521b682223ec8baaf3b04f010fc671", + "sha256:3ce5cf4be2525077cc25361ae4c05e2835f960476ad8df3152a30bc654531b8e", + "sha256:47f75b13e69780a26c3f9227695e80fc49f0498b2635483ae9b17843319f018e", + "sha256:4a06c923ce1118c3e5c64d3a34ff30220eca14583cb51edcba32fdae5c0caf70", + "sha256:4b0f6d812a87225c0af2d342dbe428bcfd2eec2dce76a21042881f5ee130b02a", + "sha256:4b9a841296685be7488a34b6b51df5c8f927963f9370a01f76f75ebe16bf9256", + "sha256:4ccc6f77da9236ef67021f356696bbdd1790dc8941bfb106a7b937dfca3a4b6e", + "sha256:4ece9f0bf5d2c2ed3c8ca9d0cfe759c2b80c2c0f599e92a8d2cd747d7e358f46", + "sha256:5331e3106e9a5690136daf386ac78a7c7e47bd4b777b8dc8925b608633788718", + "sha256:543a063682d7100569242e43b05c338f91008652ae36fa6ca13b17f7fb5600ea", + "sha256:57e14edb415d278c794d4f549c1db9e7041cc988de1bda7ca80ea43bcacbb540", + "sha256:587c09b86e4b179b2a638ada746fba49b1c8afd9cd2a7f1d7e8939f11b2152c0", + "sha256:597f12938ca48bc11f8dec3e3c742fe2ba2eec9950e1c8db2d2e739a7c62428a", + "sha256:5b14035b98b75d6d138045565312fef7fd55583e91bc28c27c4a98e3a4cf064e", + "sha256:5d23a1aa69a18d168829c2d587dc450163ec8beef644058a9a6275794a1a51ba", + "sha256:6164b7983fc04a877e4f64ee8b1a063a0e0b34056134789eb53fd3ebf1b1cedb", + "sha256:618e65a703b99c1792a7090ae56c8c7c0220ae58aa363ed2eff95c8562acd02f", + "sha256:658160760a197b6e72e0012195962f3dd49efb846d8d4887d016fc7c85add5eb", + "sha256:681eb3ac31638170e1cb3ad83a916a8de1677638db8378a103f972980655742b", + "sha256:695b183356bd74f2bd6b665743f1fa6cb21285e15c1154a9d60188ebd356abd5", + "sha256:6b80fa0186b964cafba0c7709b083f5f8f79934c758e23b065d975e9289cf813", + "sha256:75753c75d5fd8b69b2207afe5d831527a26ff647207a0bc9d9c575f02439a284", + "sha256:76f158cf8fbd81803303a635e1b617bdac76bb81f78fb4db9a651167043108e2", + "sha256:791a3ded0929f72e8d89e567dd1f4cebb448e5f255a5c8b33f8d0485c4e40641", + "sha256:7b624d0aed4a5b40c5f52bded4bc516c3975c3ff8f1998bf51715e37c6dfc30c", + "sha256:7ca2e5efc5d27a45e600a48e2ae750341235323da038c11e07ea3c722977d97f", + "sha256:7d3cbba1716823d0d450f10bdf455d58d20c1c89f365bcbde7005bd97edd36b9", + "sha256:81c1eecbaedaee5712e643098253f8fef74d4e56800a85f0609bec3da6ed6f85", + "sha256:82f02593bda744900620eaede23b8f8f6d1de855cb938bc48e077d849755b4cb", + "sha256:83b0c99a83ff19165707956d45d8198895d35d6acf3cc6072a7342c7b7423f9a", + "sha256:89b4435add740a33d1b14720a6b4b471edbd7ea7ed42f44e288cabd59e00580b", + "sha256:8c3c3f423c4f32964ef3b8664041e13f78e80a49e554258f15b5e3b0622ccc53", + "sha256:8c7f6453db9bccc77506fdb8ed3ca61ef7f53efced70557102114f0c811bcd38", + "sha256:8e8c406b7c3dedd7db0eaa8f83cc2b78e594aaa424f3e064e38e037bb65a3191", + "sha256:917426a340bde92b03743ca2555c17892d1640de6fdb401c19ce4607ded48ec2", + "sha256:92fc9245fea1bb1ddc4cb3b55577a8f1e8c143f9237343bd55b156d3e9b23078", + "sha256:9574d81702be1f6c713cbc2b5c5ce4069c6a12d7f0f9dc46847bb4e3f09b3b08", + "sha256:9c455f9ea9130a10cf28a082f6052064062314d87fd02b334b49cab23e033065", + "sha256:9c58a446d0e1dad9b2c1813847b197d1f9ec1dfdea1cd7d57385591bb414b2a6", + "sha256:a0f6c73bb7e551da0dabc133faedeea48b4f47302d1432d467fb42859ecbf7c1", + "sha256:a4cdb9a0d842e1b6bd4f414d0097ae50859b5c8c04828c58f47a1a67474e6708", + "sha256:a57ca5b9b66674b382f6b429462d4ed2a998e7a1a39d099e23bd056576c44ddd", + "sha256:a5a8d00106888af084223470c2139327766107728fcd7a46b19252f1d878bcd0", + "sha256:a6b5721fd4f1718326461b2b04a24c0aaec11dfb650dd90ad1185c270c066397", + "sha256:a772c98f724d923bfccbd2a89e2217c2949ab582e4ae784671cb4bdc9be98b5c", + "sha256:a83877d59f663e81ef7fca483f9f8ba44c8ed843201cced92ed1298cf2ee162f", + "sha256:a9ecda6e0e4f7dbdfa36ed4e92e70e921f748d4337e23ab8a9fb74b8680138d5", + "sha256:b5a0646b8f9e6d5b041c94ff0d155c9a762c7f459f9cf69804056ac0593855bd", + "sha256:b7fc77f62b19d04bdd904a841b3e8d1ca1d726572c1d7302fee42ae9cebcbe72", + "sha256:ba758a373ab3e3ef377d3c1ea4d6d54f27459f0b722e9abad55178b1be6b9d04", + "sha256:ba8d8ef32b056dc7e31c5b5ac99186786360fc10993e3dfa0f2d78d23bc74ccd", + "sha256:bd5335f023832f49309fc9c40021a9a67ce37164c8ba394203fee3e21b081b64", + "sha256:c67e7459e4875dda15e6dc59e990872fc5c25c5aac9e0bdeae213e902ebbce46", + "sha256:ca71f8663ddae56685e7f1c1dca5d9c008d4726b37955d97b2b52015ecc1ff6c", + "sha256:cdac9cbf6e2e57766bd064f963ef90c33046251a0646c0a796f8b03408bd9433", + "sha256:d07dbb86984da99d12fdfffc167209bc470f48a10c3844ed5871d6987e2fecd8", + "sha256:d107bf9985a2620cc25c4d4e89638c14b78e571a0a6c02b5982cf31146744c73", + "sha256:d1d43b37204f47cce0a84d5b4131facdc57bad2e8fef8069249098458f60997b", + "sha256:d562c48affb35fae42ad71c4c5dc445e4a39d4a32ad475b78d66cbd6f217d49f", + "sha256:d6e583ab1bfeb77943a485d60cdf0172d0d6be0b175265f7826ec105937981ba", + "sha256:db8b46f257a436752f78024dd8677e8e4cc15c759fb4a7ceaa258bf9741bf5dc", + "sha256:db993666e3ff78e12d640b724d161fde4b96650d1261071412157e34b1aaf60b", + "sha256:dbd44cd66bf8d81fe2482d9ae8b4ebb7ddf3c34dd0a7e96a6ad57da8ec424602", + "sha256:e2f9bcf5166e025e7dfaec27263a13fd4f7deff5449bc93fcceccda3ca4a46e0", + "sha256:e3793a3511657e1b7be6c1d157915a52de5a6aea789f7452a393138cf1532311", + "sha256:ea8a4bd76fc6e76b30c02cfed3e970574a9247b6dad8f02c88269e9ebbd0993c", + "sha256:f5a1ddf5f34431e550daceafb202cd1cfaa31a3d3e1d53f2c76a1d13c9d2f291", + "sha256:f5bbbec2198cdbe221d5f4a702f55a28d04a7b081ee3f1c2ef83ebec989628d5", + "sha256:f8a0ead27e7bf8544f1aea9676f60425416a50f44a908afe1008a40a4c45b499" + ], + "markers": "python_version >= '3.8'", + "version": "==3.0.0b1" + }, + "pexpect": { + "hashes": [ + "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937", + "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c" + ], + "version": "==4.8.0" + }, + "pickleshare": { + "hashes": [ + "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", + "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56" + ], + "version": "==0.7.5" }, "platformdirs": { "hashes": [ - "sha256:1006647646d80f16130f052404c6b901e80ee4ed6bef6792e1f238a8969106f7", - "sha256:af0276409f9a02373d540bf8480021a048711d572745aef4b7842dad245eba10" + "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3", + "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e" ], - "version": "==2.5.4" + "version": "==3.11.0" }, "pluggy": { "hashes": [ - "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159", - "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3" + "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12", + "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7" ], - "version": "==1.0.0" + "markers": "python_version >= '3.8'", + "version": "==1.3.0" }, "pre-commit": { "hashes": [ - "sha256:51a5ba7c480ae8072ecdb6933df22d2f812dc897d5fe848778116129a681aac7", - "sha256:a978dac7bc9ec0bcee55c18a277d553b0f419d259dadb4b9418ff2d00eb43959" + "sha256:70c5ec1f30406250b706eda35e868b87e3e4ba099af8787e3e8b4b01e84f4712", + "sha256:900d3c7e1bf4cf0374bb2893c24c23304952181405b4d88c9c40b72bda1bb8a9" ], "index": "pypi", - "version": "==2.20.0" + "markers": "python_full_version >= '3.6.1'", + "version": "==2.12.1" }, "prometheus-client": { "hashes": [ - "sha256:be26aa452490cfcf6da953f9436e95a9f2b4d578ca80094b4458930e5f584ab1", - "sha256:db7c05cbd13a0f79975592d112320f2605a325969b270a94b71dcabc47b931d2" + "sha256:4585b0d1223148c27a225b10dbec5ae9bc4c81a99a3fa80774fa6209935324e1", + "sha256:c88b1e6ecf6b41cd8fb5731c7ae919bf66df6ec6fafa555cd6c0e16ca169ae92" + ], + "markers": "python_version >= '3.8'", + "version": "==0.19.0" + }, + "prompt-toolkit": { + "hashes": [ + "sha256:04505ade687dc26dc4284b1ad19a83be2f2afe83e7a828ace0c72f3a1df72aac", + "sha256:9dffbe1d8acf91e3de75f3b544e4842382fc06c6babe903ac9acb74dc6e08d88" ], - "version": "==0.15.0" + "version": "==3.0.39" }, "protobuf": { "hashes": [ - "sha256:06059eb6953ff01e56a25cd02cca1a9649a75a7e65397b5b9b4e929ed71d10cf", - "sha256:097c5d8a9808302fb0da7e20edf0b8d4703274d140fd25c5edabddcde43e081f", - "sha256:284f86a6207c897542d7e956eb243a36bb8f9564c1742b253462386e96c6b78f", - "sha256:32ca378605b41fd180dfe4e14d3226386d8d1b002ab31c969c366549e66a2bb7", - "sha256:3cc797c9d15d7689ed507b165cd05913acb992d78b379f6014e013f9ecb20996", - "sha256:62f1b5c4cd6c5402b4e2d63804ba49a327e0c386c99b1675c8a0fefda23b2067", - "sha256:69ccfdf3657ba59569c64295b7d51325f91af586f8d5793b734260dfe2e94e2c", - "sha256:6f50601512a3d23625d8a85b1638d914a0970f17920ff39cec63aaef80a93fb7", - "sha256:7403941f6d0992d40161aa8bb23e12575637008a5a02283a930addc0508982f9", - "sha256:755f3aee41354ae395e104d62119cb223339a8f3276a0cd009ffabfcdd46bb0c", - "sha256:77053d28427a29987ca9caf7b72ccafee011257561259faba8dd308fda9a8739", - "sha256:7e371f10abe57cee5021797126c93479f59fccc9693dafd6bd5633ab67808a91", - "sha256:9016d01c91e8e625141d24ec1b20fed584703e527d28512aa8c8707f105a683c", - "sha256:9be73ad47579abc26c12024239d3540e6b765182a91dbc88e23658ab71767153", - "sha256:adc31566d027f45efe3f44eeb5b1f329da43891634d61c75a5944e9be6dd42c9", - "sha256:adfc6cf69c7f8c50fd24c793964eef18f0ac321315439d94945820612849c388", - "sha256:af0ebadc74e281a517141daad9d0f2c5d93ab78e9d455113719a45a49da9db4e", - "sha256:cb29edb9eab15742d791e1025dd7b6a8f6fcb53802ad2f6e3adcb102051063ab", - "sha256:cd68be2559e2a3b84f517fb029ee611546f7812b1fdd0aa2ecc9bc6ec0e4fdde", - "sha256:cdee09140e1cd184ba9324ec1df410e7147242b94b5f8b0c64fc89e38a8ba531", - "sha256:db977c4ca738dd9ce508557d4fce0f5aebd105e158c725beec86feb1f6bc20d8", - "sha256:dd5789b2948ca702c17027c84c2accb552fc30f4622a98ab5c51fcfe8c50d3e7", - "sha256:e250a42f15bf9d5b09fe1b293bdba2801cd520a9f5ea2d7fb7536d4441811d20", - "sha256:ff8d8fa42675249bb456f5db06c00de6c2f4c27a065955917b28c4f15978b9c3" + "sha256:2d65aa406a608bf8b18366d6b25d42bbb205a235a8802da3a46d38c22d4c9d6c", + "sha256:44c7c8346d8e64868df452759f1ebf3ecec3a9cf2f45affe837598e2a6dfb15e", + "sha256:4a1482f46714f0a428170221bcd780554099392523869a345e0f7aa2c58cae09", + "sha256:5b8eeb9970305008acf1c81e12624a7171bff46390a19aa9404a08fab0dff6dc", + "sha256:6c00620313178bdad36e5c0c58dac912bb02accb18c10c05116a92adef98d0e2", + "sha256:89a42a302b3c67187463616ce39f6f00bc97b84c062298de087fa94eacbe6cc2", + "sha256:bb652481451c49ac77ab4d85520c74a5b56d64a5e597ab6d5d02f97c71793219", + "sha256:d88d3950bc0afd42ec0dc71fb7e0b5e564f47074a141df6a546e2c93edb93402", + "sha256:e0d5d352a97f9ba3aedc1beaa2bdaef86c8c9eb0774a5d9dd48c9d8253d1ffad", + "sha256:f27cd197d87b17692615ade1097633a8b9a1d32677e6036ca2b5079484fb94b3", + "sha256:f2b101cd374b0ce97b2871e1fb0f207022c3efea074cce85b060966eef4a6be0" ], - "markers": "python_version >= '3.7'", - "version": "==3.20.1" + "markers": "python_version >= '3.8'", + "version": "==4.25.0rc2" + }, + "ptyprocess": { + "hashes": [ + "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", + "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220" + ], + "version": "==0.7.0" + }, + "pure-eval": { + "hashes": [ + "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350", + "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3" + ], + "version": "==0.2.2" }, "py": { "hashes": [ "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719", "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==1.11.0" }, + "py-cid": { + "hashes": [ + "sha256:22f432cc6fb68d12a9c35dbdc92c95484fc49e31dfcb9e0efb0082233c5394e3", + "sha256:7c48a6ee0bc50fd114d4b24849cd689a31d3ad5bdf8fa073bf68f846fd58c5da" + ], + "version": "==0.3.0" + }, "py-ecc": { "hashes": [ "sha256:3fc8a79e38975e05dc443d25783fd69212a1ca854cc0efef071301a8f7d6ce1d", @@ -3181,54 +3941,61 @@ }, "py-evm": { "hashes": [ - "sha256:2fd960df8b2dad195eb9d732e4fcaca52bb56d4e9862ba76f0a9c50aa0a21952", - "sha256:d02b1a18c0162849991c25e46181e50233b0de5298b53f6da22c32b12a79f42a" + "sha256:1bf7b293faa70c03727358ae3e5cb0abf7282391461d9b52b82decd6ed18c2f7", + "sha256:d40b6ac950485111dc7ad7bd29e3f61e00d5f81dc919e8c2b3afca30f228dc05" + ], + "version": "==0.7.0a4" + }, + "py-geth": { + "hashes": [ + "sha256:1eb9c1d05b51133a6961889ec508cdcb19d24d32888704c4e034cae86a3accad", + "sha256:f3563e2de8e78599cb9c69ee5bf3bded858ac6cf59891a04177f2353c425fdb7" + ], + "version": "==3.13.0" + }, + "py-multibase": { + "hashes": [ + "sha256:2677c1fafcc0ae15ddb9c7f444c5becc2530b3889124fd4fa2959ddfefb8c15b", + "sha256:d28a20efcbb61eec28f55827a0bf329c7cea80fffd933aecaea6ae8431267fe4" ], - "version": "==0.6.1a1" + "version": "==1.0.3" + }, + "py-multicodec": { + "hashes": [ + "sha256:55b6bb53088a63e56c434cb11b29795e8805652bac43d50a8f2a9bcf5ca84e1f", + "sha256:83021ffe8c0e272d19b5b86bc5b39efa67c8e9f4735ce6cafdbc1ace767ec647" + ], + "version": "==0.2.1" + }, + "py-multihash": { + "hashes": [ + "sha256:a0602c99093587dfbf1634e2e8c7726de39374b0d68587a36093b4c237af6969", + "sha256:f0ade4de820afdc4b4aaa40464ec86c9da5cae3a4578cda2daab4b0eb7e5b18d" + ], + "version": "==0.2.3" }, "py-solc-x": { "hashes": [ - "sha256:24b96e20d725e256cc6b03ec2bde040321d1c2cc83ddff5d51f8b52d226e6f3e", - "sha256:73a80a590609ba746609c365fb738b7b33695f6afaff80bb79cca70d596e18c0" + "sha256:8f5caa4f54e227fc301e2e4c8aa868e869c2bc0c6636aa9e8115f8414bb891f9", + "sha256:d8b0bd2b04f47cff6e92181739d9e94e41b2d62f056900761c797fa5babc76b6" ], - "index": "pypi", - "version": "==0.10.1" + "version": "==1.1.1" }, "pyasn1": { "hashes": [ - "sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359", - "sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576", - "sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf", - "sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7", - "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d", - "sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00", - "sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8", - "sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86", - "sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12", - "sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776", - "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba", - "sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2", - "sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3" - ], - "version": "==0.4.8" + "sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57", + "sha256:97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==0.5.0" }, "pyasn1-modules": { "hashes": [ - "sha256:0845a5582f6a02bb3e1bde9ecfc4bfcae6ec3210dd270522fee602365430c3f8", - "sha256:0fe1b68d1e486a1ed5473f1302bd991c1611d319bba158e98b106ff86e1d7199", - "sha256:15b7c67fabc7fc240d87fb9aabf999cf82311a6d6fb2c70d00d3d0604878c811", - "sha256:426edb7a5e8879f1ec54a1864f16b882c2837bfd06eee62f2c982315ee2473ed", - "sha256:65cebbaffc913f4fe9e4808735c95ea22d7a7775646ab690518c056784bc21b4", - "sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e", - "sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74", - "sha256:a99324196732f53093a84c4369c996713eb8c89d360a496b599fb1a9c47fc3eb", - "sha256:b80486a6c77252ea3a3e9b1e360bc9cf28eaac41263d173c032581ad2f20fe45", - "sha256:c29a5e5cc7a3f05926aff34e097e84f8589cd790ce0ed41b67aed6857b26aafd", - "sha256:cbac4bc38d117f2a49aeedec4407d23e8866ea4ac27ff2cf7fb3e5b570df19e0", - "sha256:f39edd8c4ecaa4556e989147ebf219227e2cd2e8a43c7e7fcb1f1c18c5fd6a3d", - "sha256:fe0644d9ab041506b62782e92b06b8c68cca799e1a9636ec398675459e031405" + "sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c", + "sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d" ], - "version": "==0.2.8" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==0.3.0" }, "pychalk": { "hashes": [ @@ -3245,34 +4012,82 @@ }, "pycryptodome": { "hashes": [ - "sha256:0198fe96c22f7bc31e7a7c27a26b2cec5af3cf6075d577295f4850856c77af32", - "sha256:0e45d2d852a66ecfb904f090c3f87dc0dfb89a499570abad8590f10d9cffb350", - "sha256:1047ac2b9847ae84ea454e6e20db7dcb755a81c1b1631a879213d2b0ad835ff2", - "sha256:13b3e610a2f8938c61a90b20625069ab7a77ccea20d65a9a0f926cc0cc1314b1", - "sha256:1fc16c80a5da8231fd1f953a7b8dfeb415f68120248e8d68383c5c2c4b18708c", - "sha256:265bfcbbf20d58e6871ce695a7a08aac9b41a0553060d9c05363abd6f3391bdd", - "sha256:2bf2a270906a02b7b255e1a0d7b3aea4f06b3983c51ddec1673c380e0dff5b30", - "sha256:47c71a0347847b747ba1349767b16cde049bc36f21654eb09cc82306ef5fdcf8", - "sha256:48d99869d58f3979d72f6fa0c50f48d16f14973bc4a3adb0ce3b8325fdd7e223", - "sha256:4d950ed2a887905b3fa709b86be5a163e26e1b174703ed59d34eb6832f213222", - "sha256:54d807314c66785c69cd25425933d4bd4c23547a593cdcf49d962fa3e0081336", - "sha256:58172080cbfaee724067a3c017add6a1a3cc167bbc8478dc5f2e5f45fa658763", - "sha256:5df582f2112dd72331de7e567837e136a9629181a8ab69ef8949e4bc294a0b99", - "sha256:6016269bb56caf0327f6d42e7bad1247e08b78407446dff562240c65f85d5a5e", - "sha256:63165fbdc247450017eb9ef04cfe15cb3a72ca48ffcc3a3b75b08c0340bf3647", - "sha256:69adf32522b75968e1cbf25b5d83e87c04cd9a55610ce1e4a19012e58e7e4023", - "sha256:856ebf822d08d754af62c22e2b93626509a72773214f92db1551e2b68d9e2a1b", - "sha256:95069fd9e2813668a2713a1efcc65cc26d2c7e741401ac46628f1ec957511f1b", - "sha256:b12a88566a98617b1a34b4e5a805dff2da98d83fc74262aff3c3d724d0f525d6", - "sha256:c69e19afc734b2a17b9d78b7bcb544aabd5a52ff628e14283b6e9404d27d0517", - "sha256:c82e3bc1e70dde153b0956bffe20a15715a1fe3e00bc23e88d6973eda4505944", - "sha256:d1daec4d31bb00918e4e178297ac6ca6f86ec4c851ba584770533ece554d29e2", - "sha256:d67a2d2fe344953e4572a7d30668cceb516b04287b8638170d562065e53ee2e0", - "sha256:dab9359cc295160ba96738ba4912c675181c84bfdf413e5c0621cf00b7deeeaa", - "sha256:e061311b02cefb17ea93d4a5eb1ad36dca4792037078b43e15a653a0a4478ead", - "sha256:e750a21d8a265b1f9bfb1a28822995ea33511ba7db5e2b55f41fb30781d0d073" - ], - "version": "==3.16.0" + "sha256:0101f647d11a1aae5a8ce4f5fad6644ae1b22bb65d05accc7d322943c69a74a6", + "sha256:04dd31d3b33a6b22ac4d432b3274588917dcf850cc0c51c84eca1d8ed6933810", + "sha256:05e33267394aad6db6595c0ce9d427fe21552f5425e116a925455e099fdf759a", + "sha256:08ce3558af5106c632baf6d331d261f02367a6bc3733086ae43c0f988fe042db", + "sha256:139ae2c6161b9dd5d829c9645d781509a810ef50ea8b657e2257c25ca20efe33", + "sha256:17940dcf274fcae4a54ec6117a9ecfe52907ed5e2e438fe712fe7ca502672ed5", + "sha256:190c53f51e988dceb60472baddce3f289fa52b0ec38fbe5fd20dd1d0f795c551", + "sha256:22e0ae7c3a7f87dcdcf302db06ab76f20e83f09a6993c160b248d58274473bfa", + "sha256:3006c44c4946583b6de24fe0632091c2653d6256b99a02a3db71ca06472ea1e4", + "sha256:45430dfaf1f421cf462c0dd824984378bef32b22669f2635cb809357dbaab405", + "sha256:506c686a1eee6c00df70010be3b8e9e78f406af4f21b23162bbb6e9bdf5427bc", + "sha256:536f676963662603f1f2e6ab01080c54d8cd20f34ec333dcb195306fa7826997", + "sha256:542f99d5026ac5f0ef391ba0602f3d11beef8e65aae135fa5b762f5ebd9d3bfb", + "sha256:560591c0777f74a5da86718f70dfc8d781734cf559773b64072bbdda44b3fc3e", + "sha256:5b1986c761258a5b4332a7f94a83f631c1ffca8747d75ab8395bf2e1b93283d9", + "sha256:61bb3ccbf4bf32ad9af32da8badc24e888ae5231c617947e0f5401077f8b091f", + "sha256:7822f36d683f9ad7bc2145b2c2045014afdbbd1d9922a6d4ce1cbd6add79a01e", + "sha256:7919ccd096584b911f2a303c593280869ce1af9bf5d36214511f5e5a1bed8c34", + "sha256:7c760c8a0479a4042111a8dd2f067d3ae4573da286c53f13cf6f5c53a5c1f631", + "sha256:829b813b8ee00d9c8aba417621b94bc0b5efd18c928923802ad5ba4cf1ec709c", + "sha256:84c3e4fffad0c4988aef0d5591be3cad4e10aa7db264c65fadbc633318d20bde", + "sha256:8999316e57abcbd8085c91bc0ef75292c8618f41ca6d2b6132250a863a77d1e7", + "sha256:8c1601e04d32087591d78e0b81e1e520e57a92796089864b20e5f18c9564b3fa", + "sha256:a0ab84755f4539db086db9ba9e9f3868d2e3610a3948cbd2a55e332ad83b01b0", + "sha256:a9bcd5f3794879e91970f2bbd7d899780541d3ff439d8f2112441769c9f2ccea", + "sha256:bc35d463222cdb4dbebd35e0784155c81e161b9284e567e7e933d722e533331e", + "sha256:c1cc2f2ae451a676def1a73c1ae9120cd31af25db3f381893d45f75e77be2400", + "sha256:d033947e7fd3e2ba9a031cb2d267251620964705a013c5a461fa5233cc025270", + "sha256:d04f5f623a280fbd0ab1c1d8ecbd753193ab7154f09b6161b0f857a1a676c15f", + "sha256:d49a6c715d8cceffedabb6adb7e0cbf41ae1a2ff4adaeec9432074a80627dea1", + "sha256:e249a784cc98a29c77cea9df54284a44b40cafbfae57636dd2f8775b48af2434", + "sha256:fc7a79590e2b5d08530175823a242de6790abc73638cc6dc9d2684e7be2f5e49" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==3.19.0" + }, + "pydantic": { + "hashes": [ + "sha256:1740068fd8e2ef6eb27a20e5651df000978edce6da6803c2bef0bc74540f9548", + "sha256:210ce042e8f6f7c01168b2d84d4c9eb2b009fe7bf572c2266e235edf14bacd80", + "sha256:32c8b48dcd3b2ac4e78b0ba4af3a2c2eb6048cb75202f0ea7b34feb740efc340", + "sha256:3ecea2b9d80e5333303eeb77e180b90e95eea8f765d08c3d278cd56b00345d01", + "sha256:4b03e42ec20286f052490423682016fd80fda830d8e4119f8ab13ec7464c0132", + "sha256:4c5370a7edaac06daee3af1c8b1192e305bc102abcbf2a92374b5bc793818599", + "sha256:56e3ff861c3b9c6857579de282ce8baabf443f42ffba355bf070770ed63e11e1", + "sha256:5a1f9f747851338933942db7af7b6ee8268568ef2ed86c4185c6ef4402e80ba8", + "sha256:5e08865bc6464df8c7d61439ef4439829e3ab62ab1669cddea8dd00cd74b9ffe", + "sha256:61d9dce220447fb74f45e73d7ff3b530e25db30192ad8d425166d43c5deb6df0", + "sha256:654db58ae399fe6434e55325a2c3e959836bd17a6f6a0b6ca8107ea0571d2e17", + "sha256:678bcf5591b63cc917100dc50ab6caebe597ac67e8c9ccb75e698f66038ea953", + "sha256:6cf25c1a65c27923a17b3da28a0bdb99f62ee04230c931d83e888012851f4e7f", + "sha256:75ac15385a3534d887a99c713aa3da88a30fbd6204a5cd0dc4dab3d770b9bd2f", + "sha256:75b297827b59bc229cac1a23a2f7a4ac0031068e5be0ce385be1462e7e17a35d", + "sha256:7d6f6e7305244bddb4414ba7094ce910560c907bdfa3501e9db1a7fd7eaea127", + "sha256:84bafe2e60b5e78bc64a2941b4c071a4b7404c5c907f5f5a99b0139781e69ed8", + "sha256:854223752ba81e3abf663d685f105c64150873cc6f5d0c01d3e3220bcff7d36f", + "sha256:8ae5dd6b721459bfa30805f4c25880e0dd78fc5b5879f9f7a692196ddcb5a580", + "sha256:8ef467901d7a41fa0ca6db9ae3ec0021e3f657ce2c208e98cd511f3161c762c6", + "sha256:968ac42970f57b8344ee08837b62f6ee6f53c33f603547a55571c954a4225691", + "sha256:97cce3ae7341f7620a0ba5ef6cf043975cd9d2b81f3aa5f4ea37928269bc1b87", + "sha256:9849f031cf8a2f0a928fe885e5a04b08006d6d41876b8bbd2fc68a18f9f2e3fd", + "sha256:9f00790179497767aae6bcdc36355792c79e7bbb20b145ff449700eb076c5f96", + "sha256:b87326822e71bd5f313e7d3bfdc77ac3247035ac10b0c0618bd99dcf95b1e687", + "sha256:b97c1fac8c49be29486df85968682b0afa77e1b809aff74b83081cc115e52f33", + "sha256:bc0898c12f8e9c97f6cd44c0ed70d55749eaf783716896960b4ecce2edfd2d69", + "sha256:c553f6a156deb868ba38a23cf0df886c63492e9257f60a79c0fd8e7173537653", + "sha256:c636925f38b8db208e09d344c7aa4f29a86bb9947495dd6b6d376ad10334fb78", + "sha256:c958d053453a1c4b1c2062b05cd42d9d5c8eb67537b8d5a7e3c3032943ecd261", + "sha256:d3a3c792a58e1622667a2837512099eac62490cdfd63bd407993aaf200a4cf1f", + "sha256:e31647d85a2013d926ce60b84f9dd5300d44535a9941fe825dc349ae1f760df9", + "sha256:e70ca129d2053fb8b728ee7d1af8e553a928d7e301a311094b8a0501adc8763d", + "sha256:efff03cc7a4f29d9009d1c96ceb1e7a70a65cfe86e89d34e4a5f2ab1e5693737", + "sha256:f59ef915cac80275245824e9d771ee939133be38215555e9dc90c6cb148aaeb5", + "sha256:f8e81fc5fb17dae698f52bdd1c4f18b6ca674d7068242b2aff075f588301bbb0" + ], + "version": "==1.10.13" }, "pyethash": { "hashes": [ @@ -3280,13 +4095,29 @@ ], "version": "==0.1.27" }, - "pyflakes": { + "pygithub": { "hashes": [ - "sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf", - "sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd" + "sha256:3d87a822e6c868142f0c2c4bf16cce4696b5a7a4d142a7bd160e1bdf75bc54a9", + "sha256:c44e3a121c15bf9d3a5cc98d94c9a047a5132a9b01d22264627f58ade9ddc217" ], - "index": "pypi", - "version": "==3.0.1" + "version": "==1.59.1" + }, + "pygments": { + "hashes": [ + "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692", + "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29" + ], + "version": "==2.16.1" + }, + "pyjwt": { + "extras": [ + "crypto" + ], + "hashes": [ + "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de", + "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320" + ], + "version": "==2.8.0" }, "pynacl": { "hashes": [ @@ -3306,73 +4137,11 @@ }, "pyopenssl": { "hashes": [ - "sha256:7a83b7b272dd595222d672f5ce29aa030f1fb837630ef229f62e72e395ce8968", - "sha256:b28437c9773bb6c6958628cf9c3bebe585de661dba6f63df17111966363dd15e" + "sha256:24f0dc5227396b3e831f4c7f602b950a5e9833d292c8e4a2e06b709292806ae2", + "sha256:276f931f55a452e7dea69c7173e984eb2a4407ce413c918aa34b55f82f9b8bac" ], "markers": "python_version >= '3.6'", - "version": "==22.1.0" - }, - "pyparsing": { - "hashes": [ - "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", - "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" - ], - "markers": "python_full_version >= '3.6.8'", - "version": "==3.0.9" - }, - "pyrsistent": { - "hashes": [ - "sha256:055ab45d5911d7cae397dc418808d8802fb95262751872c841c170b0dbf51eed", - "sha256:111156137b2e71f3a9936baf27cb322e8024dac3dc54ec7fb9f0bcf3249e68bb", - "sha256:187d5730b0507d9285a96fca9716310d572e5464cadd19f22b63a6976254d77a", - "sha256:21455e2b16000440e896ab99e8304617151981ed40c29e9507ef1c2e4314ee95", - "sha256:2aede922a488861de0ad00c7630a6e2d57e8023e4be72d9d7147a9fcd2d30712", - "sha256:3ba4134a3ff0fc7ad225b6b457d1309f4698108fb6b35532d015dca8f5abed73", - "sha256:456cb30ca8bff00596519f2c53e42c245c09e1a4543945703acd4312949bfd41", - "sha256:71d332b0320642b3261e9fee47ab9e65872c2bd90260e5d225dabeed93cbd42b", - "sha256:879b4c2f4d41585c42df4d7654ddffff1239dc4065bc88b745f0341828b83e78", - "sha256:9cd3e9978d12b5d99cbdc727a3022da0430ad007dacf33d0bf554b96427f33ab", - "sha256:a178209e2df710e3f142cbd05313ba0c5ebed0a55d78d9945ac7a4e09d923308", - "sha256:b39725209e06759217d1ac5fcdb510e98670af9e37223985f330b611f62e7425", - "sha256:bfa0351be89c9fcbcb8c9879b826f4353be10f58f8a677efab0c017bf7137ec2", - "sha256:bfd880614c6237243ff53a0539f1cb26987a6dc8ac6e66e0c5a40617296a045e", - "sha256:c43bec251bbd10e3cb58ced80609c5c1eb238da9ca78b964aea410fb820d00d6", - "sha256:d690b18ac4b3e3cab73b0b7aa7dbe65978a172ff94970ff98d82f2031f8971c2", - "sha256:d6982b5a0237e1b7d876b60265564648a69b14017f3b5f908c5be2de3f9abb7a", - "sha256:dec3eac7549869365fe263831f576c8457f6c833937c68542d08fde73457d291", - "sha256:e371b844cec09d8dc424d940e54bba8f67a03ebea20ff7b7b0d56f526c71d584", - "sha256:e5d8f84d81e3729c3b506657dddfe46e8ba9c330bf1858ee33108f8bb2adb38a", - "sha256:ea6b79a02a28550c98b6ca9c35b9f492beaa54d7c5c9e9949555893c8a9234d0", - "sha256:f1258f4e6c42ad0b20f9cfcc3ada5bd6b83374516cd01c0960e3cb75fdca6770" - ], - "markers": "python_version >= '3.7'", - "version": "==0.19.2" - }, - "pysha3": { - "hashes": [ - "sha256:0060a66be16665d90c432f55a0ba1f6480590cfb7d2ad389e688a399183474f0", - "sha256:11a2ba7a2e1d9669d0052fc8fb30f5661caed5512586ecbeeaf6bf9478ab5c48", - "sha256:386998ee83e313b6911327174e088021f9f2061cbfa1651b97629b761e9ef5c4", - "sha256:41be70b06c8775a9e4d4eeb52f2f6a3f356f17539a54eac61f43a29e42fd453d", - "sha256:4416f16b0f1605c25f627966f76873e432971824778b369bd9ce1bb63d6566d9", - "sha256:571a246308a7b63f15f5aa9651f99cf30f2a6acba18eddf28f1510935968b603", - "sha256:59111c08b8f34495575d12e5f2ce3bafb98bea470bc81e70c8b6df99aef0dd2f", - "sha256:5ec8da7c5c70a53b5fa99094af3ba8d343955b212bc346a0d25f6ff75853999f", - "sha256:684cb01d87ed6ff466c135f1c83e7e4042d0fc668fa20619f581e6add1d38d77", - "sha256:68c3a60a39f9179b263d29e221c1bd6e01353178b14323c39cc70593c30f21c5", - "sha256:6e6a84efb7856f5d760ee55cd2b446972cb7b835676065f6c4f694913ea8f8d9", - "sha256:827b308dc025efe9b6b7bae36c2e09ed0118a81f792d888548188e97b9bf9a3d", - "sha256:93abd775dac570cb9951c4e423bcb2bc6303a9d1dc0dc2b7afa2dd401d195b24", - "sha256:9c778fa8b161dc9348dc5cc361e94d54aa5ff18413788f4641f6600d4893a608", - "sha256:9fdd28884c5d0b4edfed269b12badfa07f1c89dbc5c9c66dd279833894a9896b", - "sha256:c7c2adcc43836223680ebdf91f1d3373543dc32747c182c8ca2e02d1b69ce030", - "sha256:c93a2676e6588abcfaecb73eb14485c81c63b94fca2000a811a7b4fb5937b8e8", - "sha256:cd5c961b603bd2e6c2b5ef9976f3238a561c58569945d4165efb9b9383b050ef", - "sha256:f9046d59b3e72aa84f6dae83a040bd1184ebd7fef4e822d38186a8158c89e3cf", - "sha256:fd7e66999060d079e9c0e8893e78d8017dad4f59721f6fe0be6307cd32127a07", - "sha256:fe988e73f2ce6d947220624f04d467faf05f1bbdbc64b0a201296bb3af92739e" - ], - "version": "==1.0.2" + "version": "==23.2.0" }, "pytest": { "hashes": [ @@ -3380,30 +4149,33 @@ "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==6.2.5" }, "pytest-cov": { "hashes": [ - "sha256:2feb1b751d66a8bd934e5edfa2e961d11309dc37b73b0eabe73b5945fee20f6b", - "sha256:996b79efde6433cdbd0088872dbc5fb3ed7fe1578b68cdbba634f14bb8dd0470" + "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6", + "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a" ], "index": "pypi", - "version": "==4.0.0" + "markers": "python_version >= '3.7'", + "version": "==4.1.0" }, "pytest-mock": { "hashes": [ - "sha256:f4c973eeae0282963eb293eb173ce91b091a79c1334455acfac9ddee8a1c784b", - "sha256:fbbdb085ef7c252a326fd8cdcac0aa3b1333d8811f131bdcc701002e1be7ed4f" + "sha256:0972719a7263072da3a21c7f4773069bcc7486027d7e8e1f81d98a47e701bc4f", + "sha256:31a40f038c22cad32287bb43932054451ff5583ff094bca6f675df2f8bc1a6e9" ], "index": "pypi", - "version": "==3.10.0" + "markers": "python_version >= '3.8'", + "version": "==3.12.0" }, "pytest-timeout": { "hashes": [ - "sha256:c07ca07404c612f8abbe22294b23c368e2e5104b521c1790195561f37e1ac3d9", - "sha256:f6f50101443ce70ad325ceb4473c4255e9d74e3c7cd0ef827309dfa4c0d975c6" + "sha256:3b0b95dabf3cb50bac9ef5ca912fa0cfc286526af17afc806824df20c2f72c90", + "sha256:bde531e096466f49398a59f2dde76fa78429a09a12411466f88a07213e220de2" ], - "version": "==2.1.0" + "version": "==2.2.0" }, "pytest-twisted": { "hashes": [ @@ -3412,183 +4184,206 @@ ], "version": "==1.14.0" }, + "python-baseconv": { + "hashes": [ + "sha256:0539f8bd0464013b05ad62e0a1673f0ac9086c76b43ebf9f833053527cd9931b" + ], + "version": "==1.2.2" + }, "python-dateutil": { "hashes": [ "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.8.2" }, "pytz": { "hashes": [ - "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427", - "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2" + "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b", + "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7" ], - "version": "==2022.6" + "version": "==2023.3.post1" }, - "pytz-deprecation-shim": { + "pyunormalize": { "hashes": [ - "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6", - "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d" + "sha256:e63fdba0d85ea04579dde2fc29a072dba773dcae600b04faf6cc90714c8b1302" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==0.1.0.post0" + "markers": "python_version >= '3.6'", + "version": "==15.0.0" }, - "pytzdata": { + "pyyaml": { "hashes": [ - "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540", - "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f" + "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5", + "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc", + "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df", + "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741", + "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206", + "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27", + "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595", + "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62", + "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98", + "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696", + "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290", + "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9", + "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d", + "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6", + "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867", + "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47", + "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486", + "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6", + "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3", + "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007", + "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938", + "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0", + "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c", + "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735", + "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d", + "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28", + "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4", + "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba", + "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8", + "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5", + "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd", + "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3", + "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0", + "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515", + "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c", + "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c", + "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924", + "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34", + "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43", + "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859", + "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673", + "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54", + "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a", + "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b", + "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab", + "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa", + "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c", + "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585", + "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d", + "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2020.1" + "markers": "python_version >= '3.6'", + "version": "==6.0.1" }, - "pyyaml": { + "referencing": { "hashes": [ - "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf", - "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", - "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", - "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", - "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", - "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", - "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", - "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", - "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", - "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", - "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", - "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", - "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782", - "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", - "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", - "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", - "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", - "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", - "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1", - "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", - "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", - "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", - "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", - "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", - "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", - "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d", - "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", - "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", - "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7", - "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", - "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", - "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", - "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358", - "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", - "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", - "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", - "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", - "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f", - "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", - "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" - ], - "version": "==6.0" + "sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf", + "sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0" + ], + "markers": "python_version >= '3.8'", + "version": "==0.30.2" }, "regex": { "hashes": [ - "sha256:052b670fafbe30966bbe5d025e90b2a491f85dfe5b2583a163b5e60a85a321ad", - "sha256:0653d012b3bf45f194e5e6a41df9258811ac8fc395579fa82958a8b76286bea4", - "sha256:0a069c8483466806ab94ea9068c34b200b8bfc66b6762f45a831c4baaa9e8cdd", - "sha256:0cf0da36a212978be2c2e2e2d04bdff46f850108fccc1851332bcae51c8907cc", - "sha256:131d4be09bea7ce2577f9623e415cab287a3c8e0624f778c1d955ec7c281bd4d", - "sha256:144486e029793a733e43b2e37df16a16df4ceb62102636ff3db6033994711066", - "sha256:1ddf14031a3882f684b8642cb74eea3af93a2be68893901b2b387c5fd92a03ec", - "sha256:1eba476b1b242620c266edf6325b443a2e22b633217a9835a52d8da2b5c051f9", - "sha256:20f61c9944f0be2dc2b75689ba409938c14876c19d02f7585af4460b6a21403e", - "sha256:22960019a842777a9fa5134c2364efaed5fbf9610ddc5c904bd3a400973b0eb8", - "sha256:22e7ebc231d28393dfdc19b185d97e14a0f178bedd78e85aad660e93b646604e", - "sha256:23cbb932cc53a86ebde0fb72e7e645f9a5eec1a5af7aa9ce333e46286caef783", - "sha256:29c04741b9ae13d1e94cf93fca257730b97ce6ea64cfe1eba11cf9ac4e85afb6", - "sha256:2bde29cc44fa81c0a0c8686992c3080b37c488df167a371500b2a43ce9f026d1", - "sha256:2cdc55ca07b4e70dda898d2ab7150ecf17c990076d3acd7a5f3b25cb23a69f1c", - "sha256:370f6e97d02bf2dd20d7468ce4f38e173a124e769762d00beadec3bc2f4b3bc4", - "sha256:395161bbdbd04a8333b9ff9763a05e9ceb4fe210e3c7690f5e68cedd3d65d8e1", - "sha256:44136355e2f5e06bf6b23d337a75386371ba742ffa771440b85bed367c1318d1", - "sha256:44a6c2f6374e0033873e9ed577a54a3602b4f609867794c1a3ebba65e4c93ee7", - "sha256:4919899577ba37f505aaebdf6e7dc812d55e8f097331312db7f1aab18767cce8", - "sha256:4b4b1fe58cd102d75ef0552cf17242705ce0759f9695334a56644ad2d83903fe", - "sha256:4bdd56ee719a8f751cf5a593476a441c4e56c9b64dc1f0f30902858c4ef8771d", - "sha256:4bf41b8b0a80708f7e0384519795e80dcb44d7199a35d52c15cc674d10b3081b", - "sha256:4cac3405d8dda8bc6ed499557625585544dd5cbf32072dcc72b5a176cb1271c8", - "sha256:4fe7fda2fe7c8890d454f2cbc91d6c01baf206fbc96d89a80241a02985118c0c", - "sha256:50921c140561d3db2ab9f5b11c5184846cde686bb5a9dc64cae442926e86f3af", - "sha256:5217c25229b6a85049416a5c1e6451e9060a1edcf988641e309dbe3ab26d3e49", - "sha256:5352bea8a8f84b89d45ccc503f390a6be77917932b1c98c4cdc3565137acc714", - "sha256:542e3e306d1669b25936b64917285cdffcd4f5c6f0247636fec037187bd93542", - "sha256:543883e3496c8b6d58bd036c99486c3c8387c2fc01f7a342b760c1ea3158a318", - "sha256:586b36ebda81e6c1a9c5a5d0bfdc236399ba6595e1397842fd4a45648c30f35e", - "sha256:597f899f4ed42a38df7b0e46714880fb4e19a25c2f66e5c908805466721760f5", - "sha256:5a260758454580f11dd8743fa98319bb046037dfab4f7828008909d0aa5292bc", - "sha256:5aefb84a301327ad115e9d346c8e2760009131d9d4b4c6b213648d02e2abe144", - "sha256:5e6a5567078b3eaed93558842346c9d678e116ab0135e22eb72db8325e90b453", - "sha256:5ff525698de226c0ca743bfa71fc6b378cda2ddcf0d22d7c37b1cc925c9650a5", - "sha256:61edbca89aa3f5ef7ecac8c23d975fe7261c12665f1d90a6b1af527bba86ce61", - "sha256:659175b2144d199560d99a8d13b2228b85e6019b6e09e556209dfb8c37b78a11", - "sha256:6a9a19bea8495bb419dc5d38c4519567781cd8d571c72efc6aa959473d10221a", - "sha256:6b30bddd61d2a3261f025ad0f9ee2586988c6a00c780a2fb0a92cea2aa702c54", - "sha256:6ffd55b5aedc6f25fd8d9f905c9376ca44fcf768673ffb9d160dd6f409bfda73", - "sha256:702d8fc6f25bbf412ee706bd73019da5e44a8400861dfff7ff31eb5b4a1276dc", - "sha256:74bcab50a13960f2a610cdcd066e25f1fd59e23b69637c92ad470784a51b1347", - "sha256:75f591b2055523fc02a4bbe598aa867df9e953255f0b7f7715d2a36a9c30065c", - "sha256:763b64853b0a8f4f9cfb41a76a4a85a9bcda7fdda5cb057016e7706fde928e66", - "sha256:76c598ca73ec73a2f568e2a72ba46c3b6c8690ad9a07092b18e48ceb936e9f0c", - "sha256:78d680ef3e4d405f36f0d6d1ea54e740366f061645930072d39bca16a10d8c93", - "sha256:7b280948d00bd3973c1998f92e22aa3ecb76682e3a4255f33e1020bd32adf443", - "sha256:7db345956ecce0c99b97b042b4ca7326feeec6b75facd8390af73b18e2650ffc", - "sha256:7dbdce0c534bbf52274b94768b3498abdf675a691fec5f751b6057b3030f34c1", - "sha256:7ef6b5942e6bfc5706301a18a62300c60db9af7f6368042227ccb7eeb22d0892", - "sha256:7f5a3ffc731494f1a57bd91c47dc483a1e10048131ffb52d901bfe2beb6102e8", - "sha256:8a45b6514861916c429e6059a55cf7db74670eaed2052a648e3e4d04f070e001", - "sha256:8ad241da7fac963d7573cc67a064c57c58766b62a9a20c452ca1f21050868dfa", - "sha256:8b0886885f7323beea6f552c28bff62cbe0983b9fbb94126531693ea6c5ebb90", - "sha256:8ca88da1bd78990b536c4a7765f719803eb4f8f9971cc22d6ca965c10a7f2c4c", - "sha256:8e0caeff18b96ea90fc0eb6e3bdb2b10ab5b01a95128dfeccb64a7238decf5f0", - "sha256:957403a978e10fb3ca42572a23e6f7badff39aa1ce2f4ade68ee452dc6807692", - "sha256:9af69f6746120998cd9c355e9c3c6aec7dff70d47247188feb4f829502be8ab4", - "sha256:9c94f7cc91ab16b36ba5ce476f1904c91d6c92441f01cd61a8e2729442d6fcf5", - "sha256:a37d51fa9a00d265cf73f3de3930fa9c41548177ba4f0faf76e61d512c774690", - "sha256:a3a98921da9a1bf8457aeee6a551948a83601689e5ecdd736894ea9bbec77e83", - "sha256:a3c1ebd4ed8e76e886507c9eddb1a891673686c813adf889b864a17fafcf6d66", - "sha256:a5f9505efd574d1e5b4a76ac9dd92a12acb2b309551e9aa874c13c11caefbe4f", - "sha256:a8ff454ef0bb061e37df03557afda9d785c905dab15584860f982e88be73015f", - "sha256:a9d0b68ac1743964755ae2d89772c7e6fb0118acd4d0b7464eaf3921c6b49dd4", - "sha256:aa62a07ac93b7cb6b7d0389d8ef57ffc321d78f60c037b19dfa78d6b17c928ee", - "sha256:ac741bf78b9bb432e2d314439275235f41656e189856b11fb4e774d9f7246d81", - "sha256:ae1e96785696b543394a4e3f15f3f225d44f3c55dafe3f206493031419fedf95", - "sha256:b683e5fd7f74fb66e89a1ed16076dbab3f8e9f34c18b1979ded614fe10cdc4d9", - "sha256:b7a8b43ee64ca8f4befa2bea4083f7c52c92864d8518244bfa6e88c751fa8fff", - "sha256:b8e38472739028e5f2c3a4aded0ab7eadc447f0d84f310c7a8bb697ec417229e", - "sha256:bfff48c7bd23c6e2aec6454aaf6edc44444b229e94743b34bdcdda2e35126cf5", - "sha256:c14b63c9d7bab795d17392c7c1f9aaabbffd4cf4387725a0ac69109fb3b550c6", - "sha256:c27cc1e4b197092e50ddbf0118c788d9977f3f8f35bfbbd3e76c1846a3443df7", - "sha256:c28d3309ebd6d6b2cf82969b5179bed5fefe6142c70f354ece94324fa11bf6a1", - "sha256:c670f4773f2f6f1957ff8a3962c7dd12e4be54d05839b216cb7fd70b5a1df394", - "sha256:ce6910b56b700bea7be82c54ddf2e0ed792a577dfaa4a76b9af07d550af435c6", - "sha256:d0213671691e341f6849bf33cd9fad21f7b1cb88b89e024f33370733fec58742", - "sha256:d03fe67b2325cb3f09be029fd5da8df9e6974f0cde2c2ac6a79d2634e791dd57", - "sha256:d0e5af9a9effb88535a472e19169e09ce750c3d442fb222254a276d77808620b", - "sha256:d243b36fbf3d73c25e48014961e83c19c9cc92530516ce3c43050ea6276a2ab7", - "sha256:d26166acf62f731f50bdd885b04b38828436d74e8e362bfcb8df221d868b5d9b", - "sha256:d403d781b0e06d2922435ce3b8d2376579f0c217ae491e273bab8d092727d244", - "sha256:d8716f82502997b3d0895d1c64c3b834181b1eaca28f3f6336a71777e437c2af", - "sha256:e4f781ffedd17b0b834c8731b75cce2639d5a8afe961c1e58ee7f1f20b3af185", - "sha256:e613a98ead2005c4ce037c7b061f2409a1a4e45099edb0ef3200ee26ed2a69a8", - "sha256:ef4163770525257876f10e8ece1cf25b71468316f61451ded1a6f44273eedeb5" + "sha256:00ba3c9818e33f1fa974693fb55d24cdc8ebafcb2e4207680669d8f8d7cca79a", + "sha256:00e871d83a45eee2f8688d7e6849609c2ca2a04a6d48fba3dff4deef35d14f07", + "sha256:06e9abc0e4c9ab4779c74ad99c3fc10d3967d03114449acc2c2762ad4472b8ca", + "sha256:0b9ac09853b2a3e0d0082104036579809679e7715671cfbf89d83c1cb2a30f58", + "sha256:0d47840dc05e0ba04fe2e26f15126de7c755496d5a8aae4a08bda4dd8d646c54", + "sha256:0f649fa32fe734c4abdfd4edbb8381c74abf5f34bc0b3271ce687b23729299ed", + "sha256:107ac60d1bfdc3edb53be75e2a52aff7481b92817cfdddd9b4519ccf0e54a6ff", + "sha256:11175910f62b2b8c055f2b089e0fedd694fe2be3941b3e2633653bc51064c528", + "sha256:12bd4bc2c632742c7ce20db48e0d99afdc05e03f0b4c1af90542e05b809a03d9", + "sha256:16f8740eb6dbacc7113e3097b0a36065a02e37b47c936b551805d40340fb9971", + "sha256:1c0e8fae5b27caa34177bdfa5a960c46ff2f78ee2d45c6db15ae3f64ecadde14", + "sha256:2c54e23836650bdf2c18222c87f6f840d4943944146ca479858404fedeb9f9af", + "sha256:3367007ad1951fde612bf65b0dffc8fd681a4ab98ac86957d16491400d661302", + "sha256:36362386b813fa6c9146da6149a001b7bd063dabc4d49522a1f7aa65b725c7ec", + "sha256:39807cbcbe406efca2a233884e169d056c35aa7e9f343d4e78665246a332f597", + "sha256:39cdf8d141d6d44e8d5a12a8569d5a227f645c87df4f92179bd06e2e2705e76b", + "sha256:3b2c3502603fab52d7619b882c25a6850b766ebd1b18de3df23b2f939360e1bd", + "sha256:3ccf2716add72f80714b9a63899b67fa711b654be3fcdd34fa391d2d274ce767", + "sha256:3fef4f844d2290ee0ba57addcec17eec9e3df73f10a2748485dfd6a3a188cc0f", + "sha256:4023e2efc35a30e66e938de5aef42b520c20e7eda7bb5fb12c35e5d09a4c43f6", + "sha256:4a3ee019a9befe84fa3e917a2dd378807e423d013377a884c1970a3c2792d293", + "sha256:4a8bf76e3182797c6b1afa5b822d1d5802ff30284abe4599e1247be4fd6b03be", + "sha256:4a992f702c9be9c72fa46f01ca6e18d131906a7180950958f766c2aa294d4b41", + "sha256:4c34d4f73ea738223a094d8e0ffd6d2c1a1b4c175da34d6b0de3d8d69bee6bcc", + "sha256:4cd1bccf99d3ef1ab6ba835308ad85be040e6a11b0977ef7ea8c8005f01a3c29", + "sha256:4ef80829117a8061f974b2fda8ec799717242353bff55f8a29411794d635d964", + "sha256:58837f9d221744d4c92d2cf7201c6acd19623b50c643b56992cbd2b745485d3d", + "sha256:5a8f91c64f390ecee09ff793319f30a0f32492e99f5dc1c72bc361f23ccd0a9a", + "sha256:5addc9d0209a9afca5fc070f93b726bf7003bd63a427f65ef797a931782e7edc", + "sha256:6239d4e2e0b52c8bd38c51b760cd870069f0bdf99700a62cd509d7a031749a55", + "sha256:66e2fe786ef28da2b28e222c89502b2af984858091675044d93cb50e6f46d7af", + "sha256:69c0771ca5653c7d4b65203cbfc5e66db9375f1078689459fe196fe08b7b4930", + "sha256:6ac965a998e1388e6ff2e9781f499ad1eaa41e962a40d11c7823c9952c77123e", + "sha256:6c56c3d47da04f921b73ff9415fbaa939f684d47293f071aa9cbb13c94afc17d", + "sha256:6f85739e80d13644b981a88f529d79c5bdf646b460ba190bffcaf6d57b2a9863", + "sha256:706e7b739fdd17cb89e1fbf712d9dc21311fc2333f6d435eac2d4ee81985098c", + "sha256:741ba2f511cc9626b7561a440f87d658aabb3d6b744a86a3c025f866b4d19e7f", + "sha256:7434a61b158be563c1362d9071358f8ab91b8d928728cd2882af060481244c9e", + "sha256:76066d7ff61ba6bf3cb5efe2428fc82aac91802844c022d849a1f0f53820502d", + "sha256:7979b834ec7a33aafae34a90aad9f914c41fd6eaa8474e66953f3f6f7cbd4368", + "sha256:7eece6fbd3eae4a92d7c748ae825cbc1ee41a89bb1c3db05b5578ed3cfcfd7cb", + "sha256:7ef1e014eed78ab650bef9a6a9cbe50b052c0aebe553fb2881e0453717573f52", + "sha256:81dce2ddc9f6e8f543d94b05d56e70d03a0774d32f6cca53e978dc01e4fc75b8", + "sha256:82fcc1f1cc3ff1ab8a57ba619b149b907072e750815c5ba63e7aa2e1163384a4", + "sha256:8d1f21af4c1539051049796a0f50aa342f9a27cde57318f2fc41ed50b0dbc4ac", + "sha256:90a79bce019c442604662d17bf69df99090e24cdc6ad95b18b6725c2988a490e", + "sha256:9145f092b5d1977ec8c0ab46e7b3381b2fd069957b9862a43bd383e5c01d18c2", + "sha256:91dc1d531f80c862441d7b66c4505cd6ea9d312f01fb2f4654f40c6fdf5cc37a", + "sha256:979c24cbefaf2420c4e377ecd1f165ea08cc3d1fbb44bdc51bccbbf7c66a2cb4", + "sha256:994645a46c6a740ee8ce8df7911d4aee458d9b1bc5639bc968226763d07f00fa", + "sha256:9b98b7681a9437262947f41c7fac567c7e1f6eddd94b0483596d320092004533", + "sha256:9c6b4d23c04831e3ab61717a707a5d763b300213db49ca680edf8bf13ab5d91b", + "sha256:9c6d0ced3c06d0f183b73d3c5920727268d2201aa0fe6d55c60d68c792ff3588", + "sha256:9fd88f373cb71e6b59b7fa597e47e518282455c2734fd4306a05ca219a1991b0", + "sha256:a8f4e49fc3ce020f65411432183e6775f24e02dff617281094ba6ab079ef0915", + "sha256:a9e908ef5889cda4de038892b9accc36d33d72fb3e12c747e2799a0e806ec841", + "sha256:ad08a69728ff3c79866d729b095872afe1e0557251da4abb2c5faff15a91d19a", + "sha256:adbccd17dcaff65704c856bd29951c58a1bd4b2b0f8ad6b826dbd543fe740988", + "sha256:b0c7d2f698e83f15228ba41c135501cfe7d5740181d5903e250e47f617eb4292", + "sha256:b3ab05a182c7937fb374f7e946f04fb23a0c0699c0450e9fb02ef567412d2fa3", + "sha256:b6104f9a46bd8743e4f738afef69b153c4b8b592d35ae46db07fc28ae3d5fb7c", + "sha256:ba7cd6dc4d585ea544c1412019921570ebd8a597fabf475acc4528210d7c4a6f", + "sha256:bc72c231f5449d86d6c7d9cc7cd819b6eb30134bb770b8cfdc0765e48ef9c420", + "sha256:bce8814b076f0ce5766dc87d5a056b0e9437b8e0cd351b9a6c4e1134a7dfbda9", + "sha256:be5e22bbb67924dea15039c3282fa4cc6cdfbe0cbbd1c0515f9223186fc2ec5f", + "sha256:be6b7b8d42d3090b6c80793524fa66c57ad7ee3fe9722b258aec6d0672543fd0", + "sha256:bfe50b61bab1b1ec260fa7cd91106fa9fece57e6beba05630afe27c71259c59b", + "sha256:bff507ae210371d4b1fe316d03433ac099f184d570a1a611e541923f78f05037", + "sha256:c148bec483cc4b421562b4bcedb8e28a3b84fcc8f0aa4418e10898f3c2c0eb9b", + "sha256:c15ad0aee158a15e17e0495e1e18741573d04eb6da06d8b84af726cfc1ed02ee", + "sha256:c2169b2dcabf4e608416f7f9468737583ce5f0a6e8677c4efbf795ce81109d7c", + "sha256:c55853684fe08d4897c37dfc5faeff70607a5f1806c8be148f1695be4a63414b", + "sha256:c65a3b5330b54103e7d21cac3f6bf3900d46f6d50138d73343d9e5b2900b2353", + "sha256:c7964c2183c3e6cce3f497e3a9f49d182e969f2dc3aeeadfa18945ff7bdd7051", + "sha256:cc3f1c053b73f20c7ad88b0d1d23be7e7b3901229ce89f5000a8399746a6e039", + "sha256:ce615c92d90df8373d9e13acddd154152645c0dc060871abf6bd43809673d20a", + "sha256:d29338556a59423d9ff7b6eb0cb89ead2b0875e08fe522f3e068b955c3e7b59b", + "sha256:d8a993c0a0ffd5f2d3bda23d0cd75e7086736f8f8268de8a82fbc4bd0ac6791e", + "sha256:d9c727bbcf0065cbb20f39d2b4f932f8fa1631c3e01fcedc979bd4f51fe051c5", + "sha256:dac37cf08fcf2094159922edc7a2784cfcc5c70f8354469f79ed085f0328ebdf", + "sha256:dd829712de97753367153ed84f2de752b86cd1f7a88b55a3a775eb52eafe8a94", + "sha256:e54ddd0bb8fb626aa1f9ba7b36629564544954fff9669b15da3610c22b9a0991", + "sha256:e77c90ab5997e85901da85131fd36acd0ed2221368199b65f0d11bca44549711", + "sha256:ebedc192abbc7fd13c5ee800e83a6df252bec691eb2c4bedc9f8b2e2903f5e2a", + "sha256:ef71561f82a89af6cfcbee47f0fabfdb6e63788a9258e913955d89fdd96902ab", + "sha256:f0a47efb1dbef13af9c9a54a94a0b814902e547b7f21acb29434504d18f36e3a", + "sha256:f4f2ca6df64cbdd27f27b34f35adb640b5d2d77264228554e68deda54456eb11", + "sha256:fb02e4257376ae25c6dd95a5aec377f9b18c09be6ebdefa7ad209b9137b73d48" ], - "markers": "python_version >= '3.6'", - "version": "==2022.10.31" + "markers": "python_version >= '3.7'", + "version": "==2023.10.3" }, "requests": { "hashes": [ - "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983", - "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349" + "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", + "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" ], - "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==2.28.1" + "markers": "python_version >= '3.7'", + "version": "==2.31.0" + }, + "rich": { + "hashes": [ + "sha256:a4eb26484f2c82589bd9a17c73d32a010b1e29d89f1604cd9bf3a2097b81bb5e", + "sha256:ba3a3775974105c221d31141f2c116f4fd65c5ceb0698657a11e9f295ec93fd0" + ], + "version": "==12.6.0" }, "rlp": { "hashes": [ @@ -3597,6 +4392,117 @@ ], "version": "==3.0.0" }, + "rpds-py": { + "hashes": [ + "sha256:023574366002bf1bd751ebaf3e580aef4a468b3d3c216d2f3f7e16fdabd885ed", + "sha256:031f76fc87644a234883b51145e43985aa2d0c19b063e91d44379cd2786144f8", + "sha256:052a832078943d2b2627aea0d19381f607fe331cc0eb5df01991268253af8417", + "sha256:0699ab6b8c98df998c3eacf51a3b25864ca93dab157abe358af46dc95ecd9801", + "sha256:0713631d6e2d6c316c2f7b9320a34f44abb644fc487b77161d1724d883662e31", + "sha256:0774a46b38e70fdde0c6ded8d6d73115a7c39d7839a164cc833f170bbf539116", + "sha256:0898173249141ee99ffcd45e3829abe7bcee47d941af7434ccbf97717df020e5", + "sha256:09586f51a215d17efdb3a5f090d7cbf1633b7f3708f60a044757a5d48a83b393", + "sha256:102eac53bb0bf0f9a275b438e6cf6904904908562a1463a6fc3323cf47d7a532", + "sha256:10f32b53f424fc75ff7b713b2edb286fdbfc94bf16317890260a81c2c00385dc", + "sha256:150eec465dbc9cbca943c8e557a21afdcf9bab8aaabf386c44b794c2f94143d2", + "sha256:1d7360573f1e046cb3b0dceeb8864025aa78d98be4bb69f067ec1c40a9e2d9df", + "sha256:1f36a9d751f86455dc5278517e8b65580eeee37d61606183897f122c9e51cef3", + "sha256:24656dc36f866c33856baa3ab309da0b6a60f37d25d14be916bd3e79d9f3afcf", + "sha256:25860ed5c4e7f5e10c496ea78af46ae8d8468e0be745bd233bab9ca99bfd2647", + "sha256:26857f0f44f0e791f4a266595a7a09d21f6b589580ee0585f330aaccccb836e3", + "sha256:2bb2e4826be25e72013916eecd3d30f66fd076110de09f0e750163b416500721", + "sha256:2f6da6d842195fddc1cd34c3da8a40f6e99e4a113918faa5e60bf132f917c247", + "sha256:30adb75ecd7c2a52f5e76af50644b3e0b5ba036321c390b8e7ec1bb2a16dd43c", + "sha256:3339eca941568ed52d9ad0f1b8eb9fe0958fa245381747cecf2e9a78a5539c42", + "sha256:34ad87a831940521d462ac11f1774edf867c34172010f5390b2f06b85dcc6014", + "sha256:3777cc9dea0e6c464e4b24760664bd8831738cc582c1d8aacf1c3f546bef3f65", + "sha256:3953c6926a63f8ea5514644b7afb42659b505ece4183fdaaa8f61d978754349e", + "sha256:3c4eff26eddac49d52697a98ea01b0246e44ca82ab09354e94aae8823e8bda02", + "sha256:40578a6469e5d1df71b006936ce95804edb5df47b520c69cf5af264d462f2cbb", + "sha256:40f93086eef235623aa14dbddef1b9fb4b22b99454cb39a8d2e04c994fb9868c", + "sha256:4134aa2342f9b2ab6c33d5c172e40f9ef802c61bb9ca30d21782f6e035ed0043", + "sha256:442626328600bde1d09dc3bb00434f5374948838ce75c41a52152615689f9403", + "sha256:4a5ee600477b918ab345209eddafde9f91c0acd931f3776369585a1c55b04c57", + "sha256:4ce5a708d65a8dbf3748d2474b580d606b1b9f91b5c6ab2a316e0b0cf7a4ba50", + "sha256:516a611a2de12fbea70c78271e558f725c660ce38e0006f75139ba337d56b1f6", + "sha256:52c215eb46307c25f9fd2771cac8135d14b11a92ae48d17968eda5aa9aaf5071", + "sha256:53c43e10d398e365da2d4cc0bcaf0854b79b4c50ee9689652cdc72948e86f487", + "sha256:5752b761902cd15073a527b51de76bbae63d938dc7c5c4ad1e7d8df10e765138", + "sha256:5e8a78bd4879bff82daef48c14d5d4057f6856149094848c3ed0ecaf49f5aec2", + "sha256:5ed505ec6305abd2c2c9586a7b04fbd4baf42d4d684a9c12ec6110deefe2a063", + "sha256:5ee97c683eaface61d38ec9a489e353d36444cdebb128a27fe486a291647aff6", + "sha256:61fa268da6e2e1cd350739bb61011121fa550aa2545762e3dc02ea177ee4de35", + "sha256:64ccc28683666672d7c166ed465c09cee36e306c156e787acef3c0c62f90da5a", + "sha256:66414dafe4326bca200e165c2e789976cab2587ec71beb80f59f4796b786a238", + "sha256:68fe9199184c18d997d2e4293b34327c0009a78599ce703e15cd9a0f47349bba", + "sha256:6a555ae3d2e61118a9d3e549737bb4a56ff0cec88a22bd1dfcad5b4e04759175", + "sha256:6bdc11f9623870d75692cc33c59804b5a18d7b8a4b79ef0b00b773a27397d1f6", + "sha256:6cf4393c7b41abbf07c88eb83e8af5013606b1cdb7f6bc96b1b3536b53a574b8", + "sha256:6eef672de005736a6efd565577101277db6057f65640a813de6c2707dc69f396", + "sha256:734c41f9f57cc28658d98270d3436dba65bed0cfc730d115b290e970150c540d", + "sha256:73e0a78a9b843b8c2128028864901f55190401ba38aae685350cf69b98d9f7c9", + "sha256:775049dfa63fb58293990fc59473e659fcafd953bba1d00fc5f0631a8fd61977", + "sha256:7854a207ef77319ec457c1eb79c361b48807d252d94348305db4f4b62f40f7f3", + "sha256:78ca33811e1d95cac8c2e49cb86c0fb71f4d8409d8cbea0cb495b6dbddb30a55", + "sha256:79edd779cfc46b2e15b0830eecd8b4b93f1a96649bcb502453df471a54ce7977", + "sha256:7bf347b495b197992efc81a7408e9a83b931b2f056728529956a4d0858608b80", + "sha256:7fde6d0e00b2fd0dbbb40c0eeec463ef147819f23725eda58105ba9ca48744f4", + "sha256:81de24a1c51cfb32e1fbf018ab0bdbc79c04c035986526f76c33e3f9e0f3356c", + "sha256:879fb24304ead6b62dbe5034e7b644b71def53c70e19363f3c3be2705c17a3b4", + "sha256:8e7f2219cb72474571974d29a191714d822e58be1eb171f229732bc6fdedf0ac", + "sha256:9164ec8010327ab9af931d7ccd12ab8d8b5dc2f4c6a16cbdd9d087861eaaefa1", + "sha256:945eb4b6bb8144909b203a88a35e0a03d22b57aefb06c9b26c6e16d72e5eb0f0", + "sha256:99a57006b4ec39dbfb3ed67e5b27192792ffb0553206a107e4aadb39c5004cd5", + "sha256:9e9184fa6c52a74a5521e3e87badbf9692549c0fcced47443585876fcc47e469", + "sha256:9ff93d3aedef11f9c4540cf347f8bb135dd9323a2fc705633d83210d464c579d", + "sha256:a360cfd0881d36c6dc271992ce1eda65dba5e9368575663de993eeb4523d895f", + "sha256:a5d7ed104d158c0042a6a73799cf0eb576dfd5fc1ace9c47996e52320c37cb7c", + "sha256:ac17044876e64a8ea20ab132080ddc73b895b4abe9976e263b0e30ee5be7b9c2", + "sha256:ad857f42831e5b8d41a32437f88d86ead6c191455a3499c4b6d15e007936d4cf", + "sha256:b2039f8d545f20c4e52713eea51a275e62153ee96c8035a32b2abb772b6fc9e5", + "sha256:b455492cab07107bfe8711e20cd920cc96003e0da3c1f91297235b1603d2aca7", + "sha256:b4a9fe992887ac68256c930a2011255bae0bf5ec837475bc6f7edd7c8dfa254e", + "sha256:b5a53f5998b4bbff1cb2e967e66ab2addc67326a274567697379dd1e326bded7", + "sha256:b788276a3c114e9f51e257f2a6f544c32c02dab4aa7a5816b96444e3f9ffc336", + "sha256:bddd4f91eede9ca5275e70479ed3656e76c8cdaaa1b354e544cbcf94c6fc8ac4", + "sha256:c0503c5b681566e8b722fe8c4c47cce5c7a51f6935d5c7012c4aefe952a35eed", + "sha256:c1b3cd23d905589cb205710b3988fc8f46d4a198cf12862887b09d7aaa6bf9b9", + "sha256:c48f3fbc3e92c7dd6681a258d22f23adc2eb183c8cb1557d2fcc5a024e80b094", + "sha256:c63c3ef43f0b3fb00571cff6c3967cc261c0ebd14a0a134a12e83bdb8f49f21f", + "sha256:c6c45a2d2b68c51fe3d9352733fe048291e483376c94f7723458cfd7b473136b", + "sha256:caa1afc70a02645809c744eefb7d6ee8fef7e2fad170ffdeacca267fd2674f13", + "sha256:cc435d059f926fdc5b05822b1be4ff2a3a040f3ae0a7bbbe672babb468944722", + "sha256:cf693eb4a08eccc1a1b636e4392322582db2a47470d52e824b25eca7a3977b53", + "sha256:cf71343646756a072b85f228d35b1d7407da1669a3de3cf47f8bbafe0c8183a4", + "sha256:d08f63561c8a695afec4975fae445245386d645e3e446e6f260e81663bfd2e38", + "sha256:d29ddefeab1791e3c751e0189d5f4b3dbc0bbe033b06e9c333dca1f99e1d523e", + "sha256:d7f5e15c953ace2e8dde9824bdab4bec50adb91a5663df08d7d994240ae6fa31", + "sha256:d858532212f0650be12b6042ff4378dc2efbb7792a286bee4489eaa7ba010586", + "sha256:d97dd44683802000277bbf142fd9f6b271746b4846d0acaf0cefa6b2eaf2a7ad", + "sha256:dcdc88b6b01015da066da3fb76545e8bb9a6880a5ebf89e0f0b2e3ca557b3ab7", + "sha256:dd609fafdcdde6e67a139898196698af37438b035b25ad63704fd9097d9a3482", + "sha256:defa2c0c68734f4a82028c26bcc85e6b92cced99866af118cd6a89b734ad8e0d", + "sha256:e22260a4741a0e7a206e175232867b48a16e0401ef5bce3c67ca5b9705879066", + "sha256:e225a6a14ecf44499aadea165299092ab0cba918bb9ccd9304eab1138844490b", + "sha256:e3df0bc35e746cce42579826b89579d13fd27c3d5319a6afca9893a9b784ff1b", + "sha256:e6fcc026a3f27c1282c7ed24b7fcac82cdd70a0e84cc848c0841a3ab1e3dea2d", + "sha256:e782379c2028a3611285a795b89b99a52722946d19fc06f002f8b53e3ea26ea9", + "sha256:e8cdd52744f680346ff8c1ecdad5f4d11117e1724d4f4e1874f3a67598821069", + "sha256:e9616f5bd2595f7f4a04b67039d890348ab826e943a9bfdbe4938d0eba606971", + "sha256:e98c4c07ee4c4b3acf787e91b27688409d918212dfd34c872201273fdd5a0e18", + "sha256:ebdab79f42c5961682654b851f3f0fc68e6cc7cd8727c2ac4ffff955154123c1", + "sha256:f0f17f2ce0f3529177a5fff5525204fad7b43dd437d017dd0317f2746773443d", + "sha256:f4e56860a5af16a0fcfa070a0a20c42fbb2012eed1eb5ceeddcc7f8079214281" + ], + "markers": "python_version >= '3.8'", + "version": "==0.10.6" + }, + "safe-pysha3": { + "hashes": [ + "sha256:e429146b1edd198b2ca934a2046a65656c5d31b0ec894bbd6055127f4deaff17" + ], + "version": "==1.0.4" + }, "semantic-version": { "hashes": [ "sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c", @@ -3607,24 +4513,33 @@ }, "sentry-sdk": { "hashes": [ - "sha256:5bbe4b72de22f9ac1e67f2a4e6efe8fbd595bb59b7b223443f50fe5802a5551c", - "sha256:9f0b960694e2d8bb04db4ba6ac2a645040caef4e762c65937998ff06064f10d6" + "sha256:67f62238af273eebd6432f85116dc6cd5422d4bc02df886514e8139e755f48e4", + "sha256:9d3644b7c36a2c290f0d3275cba250202773f37545ef9097c8bcf561c6f5cdea" ], - "version": "==1.12.1" + "version": "==1.39.0" }, "service-identity": { "hashes": [ - "sha256:6e6c6086ca271dc11b033d17c3a8bea9f24ebff920c587da090afc9519419d34", - "sha256:f0b0caac3d40627c3c04d7a51b6e06721857a0e10a8775f2d1d7e72901b3a7db" + "sha256:87415a691d52fcad954a500cb81f424d0273f8e7e3ee7d766128f4575080f383", + "sha256:ecb33cd96307755041e978ab14f8b14e13b40f1fbd525a4dc78f46d2b986431d" ], - "version": "==21.1.0" + "markers": "python_version >= '3.8'", + "version": "==23.1.0" + }, + "setuptools": { + "hashes": [ + "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87", + "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a" + ], + "markers": "python_version >= '3.8'", + "version": "==68.2.2" }, "six": { "hashes": [ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.16.0" }, "snaptime": { @@ -3640,6 +4555,67 @@ ], "version": "==2.4.0" }, + "sqlalchemy": { + "hashes": [ + "sha256:0b0b3f2686c3f162123adba3cb8b626ed7e9b8433ab528e36ed270b4f70d1cdb", + "sha256:0c1fea8c0abcb070ffe15311853abfda4e55bf7dc1d4889497b3403629f3bf00", + "sha256:0e1ce8ebd2e040357dde01a3fb7d30d9b5736b3e54a94002641dfd0aa12ae6ce", + "sha256:129415f89744b05741c6f0b04a84525f37fbabe5dc3774f7edf100e7458c48cd", + "sha256:13790cb42f917c45c9c850b39b9941539ca8ee7917dacf099cc0b569f3d40da7", + "sha256:14cd3bcbb853379fef2cd01e7c64a5d6f1d005406d877ed9509afb7a05ff40a5", + "sha256:154a32f3c7b00de3d090bc60ec8006a78149e221f1182e3edcf0376016be9396", + "sha256:19c6986cf2fb4bc8e0e846f97f4135a8e753b57d2aaaa87c50f9acbe606bd1db", + "sha256:2096d6b018d242a2bcc9e451618166f860bb0304f590d205173d317b69986c95", + "sha256:2c9bac865ee06d27a1533471405ad240a6f5d83195eca481f9fc4a71d8b87df8", + "sha256:3076740335e4aaadd7deb3fe6dcb96b3015f1613bd190a4e1634e1b99b02ec86", + "sha256:3940677d341f2b685a999bffe7078697b5848a40b5f6952794ffcf3af150c301", + "sha256:3aa1472bf44f61dd27987cd051f1c893b7d3b17238bff8c23fceaef4f1133868", + "sha256:40b1206a0d923e73aa54f0a6bd61419a96b914f1cd19900b6c8226899d9742ad", + "sha256:4bb062784f37b2d75fd9b074c8ec360ad5df71f933f927e9e95c50eb8e05323c", + "sha256:4e869a8ff7ee7a833b74868a0887e8462445ec462432d8cbeff5e85f475186da", + "sha256:4f6ff392b27a743c1ad346d215655503cec64405d3b694228b3454878bf21590", + "sha256:505f503763a767556fa4deae5194b2be056b64ecca72ac65224381a0acab7ebe", + "sha256:53a766cb0b468223cafdf63e2d37f14a4757476157927b09300c8c5832d88560", + "sha256:5434cc601aa17570d79e5377f5fd45ff92f9379e2abed0be5e8c2fba8d353d2b", + "sha256:54bcceaf4eebef07dadfde424f5c26b491e4a64e61761dea9459103ecd6ccc95", + "sha256:55914d45a631b81a8a2cb1a54f03eea265cf1783241ac55396ec6d735be14883", + "sha256:564e9f9e4e6466273dbfab0e0a2e5fe819eec480c57b53a2cdee8e4fdae3ad5f", + "sha256:56a7e2bb639df9263bf6418231bc2a92a773f57886d371ddb7a869a24919face", + "sha256:58a3aba1bfb32ae7af68da3f277ed91d9f57620cf7ce651db96636790a78b736", + "sha256:625b72d77ac8ac23da3b1622e2da88c4aedaee14df47c8432bf8f6495e655de2", + "sha256:69fd9e41cf9368afa034e1c81f3570afb96f30fcd2eb1ef29cb4d9371c6eece2", + "sha256:6ac28bd6888fe3c81fbe97584eb0b96804bd7032d6100b9701255d9441373ec1", + "sha256:7c6c3e9350f9fb16de5b5e5fbf17b578811a52d71bb784cc5ff71acb7de2a7f9", + "sha256:7ee7ccf47aa503033b6afd57efbac6b9e05180f492aeed9fcf70752556f95624", + "sha256:875de9414393e778b655a3d97d60465eb3fae7c919e88b70cc10b40b9f56042d", + "sha256:8db5ba8b7da759b727faebc4289a9e6a51edadc7fc32207a30f7c6203a181592", + "sha256:92e512a6af769e4725fa5b25981ba790335d42c5977e94ded07db7d641490a85", + "sha256:9886a72c8e6371280cb247c5d32c9c8fa141dc560124348762db8a8b236f8692", + "sha256:9e55dff5ec115316dd7a083cdc1a52de63693695aecf72bc53a8e1468ce429e5", + "sha256:a42c9fa3abcda0dcfad053e49c4f752eef71ecd8c155221e18b99d4224621176", + "sha256:a571bc8ac092a3175a1d994794a8e7a1f2f651e7c744de24a19b4f740fe95034", + "sha256:af66001d7b76a3fab0d5e4c1ec9339ac45748bc4a399cbc2baa48c1980d3c1f4", + "sha256:b39a6e21110204a8c08d40ff56a73ba542ec60bab701c36ce721e7990df49fb9", + "sha256:b560f075c151900587ade06706b0c51d04b3277c111151997ea0813455378ae0", + "sha256:c8f1792d20d2f4e875ce7a113f43c3561ad12b34ff796b84002a256f37ce9437", + "sha256:cb9a758ad973e795267da334a92dd82bb7555cb36a0960dcabcf724d26299db8", + "sha256:ccca778c0737a773a1ad86b68bda52a71ad5950b25e120b6eb1330f0df54c3d0", + "sha256:ccd87c25e4c8559e1b918d46b4fa90b37f459c9b4566f1dfbce0eb8122571547", + "sha256:d143c5a9dada696bcfdb96ba2de4a47d5a89168e71d05a076e88a01386872f97", + "sha256:d80eeb5189d7d4b1af519fc3f148fe7521b9dfce8f4d6a0820e8f5769b005051", + "sha256:e04ab55cf49daf1aeb8c622c54d23fa4bec91cb051a43cc24351ba97e1dd09f5", + "sha256:f146c61ae128ab43ea3a0955de1af7e1633942c2b2b4985ac51cc292daf33222", + "sha256:f776c2c30f0e5f4db45c3ee11a5f2a8d9de68e81eb73ec4237de1e32e04ae81c" + ], + "version": "==2.0.22" + }, + "stack-data": { + "hashes": [ + "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", + "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695" + ], + "version": "==0.6.3" + }, "tabulate": { "hashes": [ "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", @@ -3648,20 +4624,76 @@ "markers": "python_version >= '3.7'", "version": "==0.9.0" }, + "time-machine": { + "hashes": [ + "sha256:02b33a8c19768c94f7ffd6aa6f9f64818e88afce23250016b28583929d20fb12", + "sha256:0c9829b2edfcf6b5d72a6ff330d4380f36a937088314c675531b43d3423dd8af", + "sha256:0cc116056a8a2a917a4eec85661dfadd411e0d8faae604ef6a0e19fe5cd57ef1", + "sha256:0db97f92be3efe0ac62fd3f933c91a78438cef13f283b6dfc2ee11123bfd7d8a", + "sha256:12eed2e9171c85b703d75c985dab2ecad4fe7025b7d2f842596fce1576238ece", + "sha256:1812e48c6c58707db9988445a219a908a710ea065b2cc808d9a50636291f27d4", + "sha256:19a3b10161c91ca8e0fd79348665cca711fd2eac6ce336ff9e6b447783817f93", + "sha256:1a22be4df364f49a507af4ac9ea38108a0105f39da3f9c60dce62d6c6ea4ccdc", + "sha256:1ac8ff145c63cd0dcfd9590fe694b5269aacbc130298dc7209b095d101f8cdde", + "sha256:20205422fcf2caf9a7488394587df86e5b54fdb315c1152094fbb63eec4e9304", + "sha256:21bef5854d49b62e2c33848b5c3e8acf22a3b46af803ef6ff19529949cb7cf9f", + "sha256:2bd4169b808745d219a69094b3cb86006938d45e7293249694e6b7366225a186", + "sha256:2dc76ee55a7d915a55960a726ceaca7b9097f67e4b4e681ef89871bcf98f00be", + "sha256:32b71e50b07f86916ac04bd1eefc2bd2c93706b81393748b08394509ee6585dc", + "sha256:34dcdbbd25c1e124e17fe58050452960fd16a11f9d3476aaa87260e28ecca0fd", + "sha256:3a7a0a49ce50d9c306c4343a7d6a3baa11092d4399a4af4355c615ccc321a9d3", + "sha256:3c87856105dcb25b5bbff031d99f06ef4d1c8380d096222e1bc63b496b5258e6", + "sha256:42ef5349135626ad6cd889a0a81400137e5c6928502b0817ea9e90bb10702000", + "sha256:4ca20f85a973a4ca8b00cf466cd72c27ccc72372549b138fd48d7e70e5a190ab", + "sha256:4e3a2611f8788608ebbcb060a5e36b45911bc3b8adc421b1dc29d2c81786ce4d", + "sha256:4f2ae8d0e359b216b695f1e7e7256f208c390db0480601a439c5dd1e1e4e16ce", + "sha256:5aee23cd046abf9caeddc982113e81ba9097a01f3972e9560f5ed64e3495f66d", + "sha256:5c6245db573863b335d9ca64b3230f623caf0988594ae554c0c794e7f80e3e66", + "sha256:5f87787d562e42bf1006a87eb689814105b98c4d5545874a281280d0f8b9a2d9", + "sha256:5fe3fda5fa73fec74278912e438fce1612a79c36fd0cc323ea3dc2d5ce629f31", + "sha256:62fd14a80b8b71726e07018628daaee0a2e00937625083f96f69ed6b8e3304c0", + "sha256:66fb3877014dca0b9286b0f06fa74062357bd23f2d9d102d10e31e0f8fa9b324", + "sha256:679cbf9b15bfde1654cf48124128d3fbe52f821fa158a98fcee5fe7e05db1917", + "sha256:67fa45cd813821e4f5bec0ac0820869e8e37430b15509d3f5fad74ba34b53852", + "sha256:685d98593f13649ad5e7ce3e58efe689feca1badcf618ba397d3ab877ee59326", + "sha256:6c16d90a597a8c2d3ce22d6be2eb3e3f14786974c11b01886e51b3cf0d5edaf7", + "sha256:71acbc1febbe87532c7355eca3308c073d6e502ee4ce272b5028967847c8e063", + "sha256:7558622a62243be866a7e7c41da48eacd82c874b015ecf67d18ebf65ca3f7436", + "sha256:7693704c0f2f6b9beed912ff609781edf5fcf5d63aff30c92be4093e09d94b8e", + "sha256:88601de1da06c7cab3d5ed3d5c3801ef683366e769e829e96383fdab6ae2fe42", + "sha256:8d526cdcaca06a496877cfe61cc6608df2c3a6fce210e076761964ebac7f77cc", + "sha256:918f8389de29b4f41317d121f1150176fae2cdb5fa41f68b2aee0b9dc88df5c3", + "sha256:924377d398b1c48e519ad86a71903f9f36117f69e68242c99fb762a2465f5ad2", + "sha256:9f128db8997c3339f04f7f3946dd9bb2a83d15e0a40d35529774da1e9e501511", + "sha256:9fad549521c4c13bdb1e889b2855a86ec835780d534ffd8f091c2647863243be", + "sha256:a26bdf3462d5f12a4c1009fdbe54366c6ef22c7b6f6808705b51dedaaeba8296", + "sha256:ab04cf4e56e1ee65bee2adaa26a04695e92eb1ed1ccc65fbdafd0d114399595a", + "sha256:b0c8f24ae611a58782773af34dd356f1f26756272c04be2be7ea73b47e5da37d", + "sha256:bdfe4a7f033e6783c3e9a7f8d8fc0b115367330762e00a03ff35fedf663994f3", + "sha256:c23b2408e3adcedec84ea1131e238f0124a5bc0e491f60d1137ad7239b37c01a", + "sha256:ccbce292380ebf63fb9a52e6b03d91677f6a003e0c11f77473efe3913a75f289", + "sha256:cfef4ebfb4f055ce3ebc7b6c1c4d0dbfcffdca0e783ad8c6986c992915a57ed3", + "sha256:d4a2d3db2c3b8e519d5ef436cd405abd33542a7b7761fb05ef5a5f782a8ce0b1", + "sha256:dabb3b155819811b4602f7e9be936e2024e20dc99a90f103e36b45768badf9c3", + "sha256:de01f33aa53da37530ad97dcd17e9affa25a8df4ab822506bb08101bab0c2673", + "sha256:dec0ec2135a4e2a59623e40c31d6e8a8ae73305ade2634380e4263d815855750", + "sha256:e433827eccd6700a34a2ab28fd9361ff6e4d4923f718d2d1dac6d1dcd9d54da6", + "sha256:e58d82fe0e59d6e096ada3281d647a2e7420f7da5453b433b43880e1c2e8e0c5", + "sha256:e9935aff447f5400a2665ab10ed2da972591713080e1befe1bb8954e7c0c7806", + "sha256:e9a9d150e098be3daee5c9f10859ab1bd14a61abebaed86e6d71f7f18c05b9d7", + "sha256:f5fa9610f7e73fff42806a2ed8b06d862aa59ce4d178a52181771d6939c3e237" + ], + "markers": "implementation_name != 'pypy'", + "version": "==2.13.0" + }, "toml": { "hashes": [ "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" ], + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.10.2" }, - "tomli": { - "hashes": [ - "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", - "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" - ], - "version": "==2.0.1" - }, "toolz": { "hashes": [ "sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f", @@ -3670,61 +4702,75 @@ "markers": "python_version >= '3.5'", "version": "==0.12.0" }, + "tqdm": { + "hashes": [ + "sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386", + "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7" + ], + "version": "==4.66.1" + }, + "traitlets": { + "hashes": [ + "sha256:7564b5bf8d38c40fa45498072bf4dc5e8346eb087bbf1e2ae2d8774f6a0f078e", + "sha256:98277f247f18b2c5cabaf4af369187754f4fb0e85911d473f72329db8a7f4fae" + ], + "version": "==5.11.2" + }, "trie": { "hashes": [ - "sha256:8bfc6b82979b7caa6f020a89c9142c7522f017788240487d1c941b0ad82e7132", - "sha256:edef6b392f49f80be31c167236c6569aa07d7926138d5fe23d327d65d62b7201" + "sha256:1c7fa6f4a3088e083764cf4e32a07a69c672fcf15ad922e03f51158d64a855cf", + "sha256:c1a5fc17b37a75008a4517e4f297ad8026dce777eb0eed63ee6335c66d7437b7" ], - "markers": "python_version >= '3.6' and python_version < '4'", - "version": "==2.0.2" + "markers": "python_version >= '3.7' and python_version < '4'", + "version": "==2.1.1" }, "twisted": { "hashes": [ - "sha256:32acbd40a94f5f46e7b42c109bfae2b302250945561783a8b7a059048f2d4d31", - "sha256:86c55f712cc5ab6f6d64e02503352464f0400f66d4f079096d744080afcccbd0" + "sha256:3c73360add17336a622c0d811c2a2ce29866b6e59b1125fd6509b17252098a24", + "sha256:b8bdba145de120ffb36c20e6e071cce984e89fba798611ed0704216fb7f884cd" ], "markers": "python_full_version >= '3.7.1'", - "version": "==22.10.0" + "version": "==23.8.0" }, "txaio": { "hashes": [ - "sha256:2e4582b70f04b2345908254684a984206c0d9b50e3074a24a4c55aba21d24d01", - "sha256:41223af4a9d5726e645a8ee82480f413e5e300dd257db94bc38ae12ea48fb2e5" + "sha256:aaea42f8aad50e0ecfb976130ada140797e9dcb85fad2cf72b0f37f8cefcb490", + "sha256:f9a9216e976e5e3246dfd112ad7ad55ca915606b60b84a757ac769bd404ff704" ], - "markers": "python_version >= '3.6'", - "version": "==22.2.1" + "markers": "python_version >= '3.7'", + "version": "==23.1.1" }, "typing-extensions": { "hashes": [ - "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa", - "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e" + "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", + "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" ], - "markers": "python_version >= '3.7'", - "version": "==4.4.0" + "markers": "python_version >= '3.8'", + "version": "==4.8.0" }, "tzdata": { "hashes": [ - "sha256:04a680bdc5b15750c39c12a448885a51134a27ec9af83667663f0b3a1bf3f342", - "sha256:91f11db4503385928c15598c98573e3af07e7229181bee5375bd30f1695ddcae" + "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a", + "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda" ], - "markers": "python_version >= '3.6'", - "version": "==2022.6" + "markers": "python_version >= '2'", + "version": "==2023.3" }, "tzlocal": { "hashes": [ - "sha256:89885494684c929d9191c57aa27502afc87a579be5cdd3225c77c463ea043745", - "sha256:ee5842fa3a795f023514ac2d801c4a81d1743bbe642e3940143326b3a00addd7" + "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8", + "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e" ], - "markers": "python_version >= '3.6'", - "version": "==4.2" + "markers": "python_version >= '3.8'", + "version": "==5.2" }, "urllib3": { "hashes": [ - "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc", - "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8" + "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84", + "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==1.26.13" + "markers": "python_version >= '3.7'", + "version": "==2.0.7" }, "varint": { "hashes": [ @@ -3734,247 +4780,349 @@ }, "virtualenv": { "hashes": [ - "sha256:40a7e06a98728fd5769e1af6fd1a706005b4bb7e16176a272ed4292473180389", - "sha256:7d6a8d55b2f73b617f684ee40fd85740f062e1f2e379412cb1879c7136f05902" + "sha256:02ece4f56fbf939dbbc33c0715159951d6bf14aaf5457b092e4548e1382455af", + "sha256:520d056652454c5098a00c0f073611ccbea4c79089331f60bf9d7ba247bb7381" ], - "version": "==20.17.0" + "markers": "python_version >= '3.7'", + "version": "==20.24.6" }, "watchdog": { "hashes": [ - "sha256:083171652584e1b8829581f965b9b7723ca5f9a2cd7e20271edf264cfd7c1412", - "sha256:117ffc6ec261639a0209a3252546b12800670d4bf5f84fbd355957a0595fe654", - "sha256:186f6c55abc5e03872ae14c2f294a153ec7292f807af99f57611acc8caa75306", - "sha256:195fc70c6e41237362ba720e9aaf394f8178bfc7fa68207f112d108edef1af33", - "sha256:226b3c6c468ce72051a4c15a4cc2ef317c32590d82ba0b330403cafd98a62cfd", - "sha256:247dcf1df956daa24828bfea5a138d0e7a7c98b1a47cf1fa5b0c3c16241fcbb7", - "sha256:255bb5758f7e89b1a13c05a5bceccec2219f8995a3a4c4d6968fe1de6a3b2892", - "sha256:43ce20ebb36a51f21fa376f76d1d4692452b2527ccd601950d69ed36b9e21609", - "sha256:4f4e1c4aa54fb86316a62a87b3378c025e228178d55481d30d857c6c438897d6", - "sha256:5952135968519e2447a01875a6f5fc8c03190b24d14ee52b0f4b1682259520b1", - "sha256:64a27aed691408a6abd83394b38503e8176f69031ca25d64131d8d640a307591", - "sha256:6b17d302850c8d412784d9246cfe8d7e3af6bcd45f958abb2d08a6f8bedf695d", - "sha256:70af927aa1613ded6a68089a9262a009fbdf819f46d09c1a908d4b36e1ba2b2d", - "sha256:7a833211f49143c3d336729b0020ffd1274078e94b0ae42e22f596999f50279c", - "sha256:8250546a98388cbc00c3ee3cc5cf96799b5a595270dfcfa855491a64b86ef8c3", - "sha256:97f9752208f5154e9e7b76acc8c4f5a58801b338de2af14e7e181ee3b28a5d39", - "sha256:9f05a5f7c12452f6a27203f76779ae3f46fa30f1dd833037ea8cbc2887c60213", - "sha256:a735a990a1095f75ca4f36ea2ef2752c99e6ee997c46b0de507ba40a09bf7330", - "sha256:ad576a565260d8f99d97f2e64b0f97a48228317095908568a9d5c786c829d428", - "sha256:b530ae007a5f5d50b7fbba96634c7ee21abec70dc3e7f0233339c81943848dc1", - "sha256:bfc4d351e6348d6ec51df007432e6fe80adb53fd41183716017026af03427846", - "sha256:d3dda00aca282b26194bdd0adec21e4c21e916956d972369359ba63ade616153", - "sha256:d9820fe47c20c13e3c9dd544d3706a2a26c02b2b43c993b62fcd8011bcc0adb3", - "sha256:ed80a1628cee19f5cfc6bb74e173f1b4189eb532e705e2a13e3250312a62e0c9", - "sha256:ee3e38a6cc050a8830089f79cbec8a3878ec2fe5160cdb2dc8ccb6def8552658" + "sha256:0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a", + "sha256:13bbbb462ee42ec3c5723e1205be8ced776f05b100e4737518c67c8325cf6100", + "sha256:233b5817932685d39a7896b1090353fc8efc1ef99c9c054e46c8002561252fb8", + "sha256:25f70b4aa53bd743729c7475d7ec41093a580528b100e9a8c5b5efe8899592fc", + "sha256:2b57a1e730af3156d13b7fdddfc23dea6487fceca29fc75c5a868beed29177ae", + "sha256:336adfc6f5cc4e037d52db31194f7581ff744b67382eb6021c868322e32eef41", + "sha256:3aa7f6a12e831ddfe78cdd4f8996af9cf334fd6346531b16cec61c3b3c0d8da0", + "sha256:3ed7c71a9dccfe838c2f0b6314ed0d9b22e77d268c67e015450a29036a81f60f", + "sha256:4c9956d27be0bb08fc5f30d9d0179a855436e655f046d288e2bcc11adfae893c", + "sha256:4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9", + "sha256:4f94069eb16657d2c6faada4624c39464f65c05606af50bb7902e036e3219be3", + "sha256:5113334cf8cf0ac8cd45e1f8309a603291b614191c9add34d33075727a967709", + "sha256:51f90f73b4697bac9c9a78394c3acbbd331ccd3655c11be1a15ae6fe289a8c83", + "sha256:5d9f3a10e02d7371cd929b5d8f11e87d4bad890212ed3901f9b4d68767bee759", + "sha256:7ade88d0d778b1b222adebcc0927428f883db07017618a5e684fd03b83342bd9", + "sha256:7c5f84b5194c24dd573fa6472685b2a27cc5a17fe5f7b6fd40345378ca6812e3", + "sha256:7e447d172af52ad204d19982739aa2346245cc5ba6f579d16dac4bfec226d2e7", + "sha256:8ae9cda41fa114e28faf86cb137d751a17ffd0316d1c34ccf2235e8a84365c7f", + "sha256:8f3ceecd20d71067c7fd4c9e832d4e22584318983cabc013dbf3f70ea95de346", + "sha256:9fac43a7466eb73e64a9940ac9ed6369baa39b3bf221ae23493a9ec4d0022674", + "sha256:a70a8dcde91be523c35b2bf96196edc5730edb347e374c7de7cd20c43ed95397", + "sha256:adfdeab2da79ea2f76f87eb42a3ab1966a5313e5a69a0213a3cc06ef692b0e96", + "sha256:ba07e92756c97e3aca0912b5cbc4e5ad802f4557212788e72a72a47ff376950d", + "sha256:c07253088265c363d1ddf4b3cdb808d59a0468ecd017770ed716991620b8f77a", + "sha256:c9d8c8ec7efb887333cf71e328e39cffbf771d8f8f95d308ea4125bf5f90ba64", + "sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44", + "sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33" ], - "markers": "python_version >= '3.6'", - "version": "==2.1.9" + "markers": "python_version >= '3.7'", + "version": "==3.0.0" + }, + "wcwidth": { + "hashes": [ + "sha256:77f719e01648ed600dfa5402c347481c0992263b81a027344f3e1ba25493a704", + "sha256:8705c569999ffbb4f6a87c6d1b80f324bd6db952f5eb0b95bc07517f4c1813d4" + ], + "version": "==0.2.8" }, "web3": { "hashes": [ - "sha256:1674301b261da529ee6537b970d1a01a1e6d22328b246c16636263f96c2b6df2", - "sha256:df74801cb4dff45b175227feb3126ac77480c801ac6412d471520abecf2c8c00" + "sha256:0d39f58cbb0c652b45e711f01e01ec655117b47ba4eefd1f9550c52d205afa8c", + "sha256:d301d7120922d5b9e5c9535ef9780012ea25ea4011c2b177490ba7d3ef886b92" ], "markers": "python_full_version >= '3.7.2'", - "version": "==6.0.0b6" + "version": "==6.11.1" }, "websockets": { "hashes": [ - "sha256:00213676a2e46b6ebf6045bc11d0f529d9120baa6f58d122b4021ad92adabd41", - "sha256:00c870522cdb69cd625b93f002961ffb0c095394f06ba8c48f17eef7c1541f96", - "sha256:0154f7691e4fe6c2b2bc275b5701e8b158dae92a1ab229e2b940efe11905dff4", - "sha256:05a7233089f8bd355e8cbe127c2e8ca0b4ea55467861906b80d2ebc7db4d6b72", - "sha256:09a1814bb15eff7069e51fed0826df0bc0702652b5cb8f87697d469d79c23576", - "sha256:0cff816f51fb33c26d6e2b16b5c7d48eaa31dae5488ace6aae468b361f422b63", - "sha256:185929b4808b36a79c65b7865783b87b6841e852ef5407a2fb0c03381092fa3b", - "sha256:2fc8709c00704194213d45e455adc106ff9e87658297f72d544220e32029cd3d", - "sha256:33d69ca7612f0ddff3316b0c7b33ca180d464ecac2d115805c044bf0a3b0d032", - "sha256:389f8dbb5c489e305fb113ca1b6bdcdaa130923f77485db5b189de343a179393", - "sha256:38ea7b82bfcae927eeffc55d2ffa31665dc7fec7b8dc654506b8e5a518eb4d50", - "sha256:3d3cac3e32b2c8414f4f87c1b2ab686fa6284a980ba283617404377cd448f631", - "sha256:40e826de3085721dabc7cf9bfd41682dadc02286d8cf149b3ad05bff89311e4f", - "sha256:4239b6027e3d66a89446908ff3027d2737afc1a375f8fd3eea630a4842ec9a0c", - "sha256:45ec8e75b7dbc9539cbfafa570742fe4f676eb8b0d3694b67dabe2f2ceed8aa6", - "sha256:47a2964021f2110116cc1125b3e6d87ab5ad16dea161949e7244ec583b905bb4", - "sha256:48c08473563323f9c9debac781ecf66f94ad5a3680a38fe84dee5388cf5acaf6", - "sha256:4c6d2264f485f0b53adf22697ac11e261ce84805c232ed5dbe6b1bcb84b00ff0", - "sha256:4f72e5cd0f18f262f5da20efa9e241699e0cf3a766317a17392550c9ad7b37d8", - "sha256:56029457f219ade1f2fc12a6504ea61e14ee227a815531f9738e41203a429112", - "sha256:5c1289596042fad2cdceb05e1ebf7aadf9995c928e0da2b7a4e99494953b1b94", - "sha256:62e627f6b6d4aed919a2052efc408da7a545c606268d5ab5bfab4432734b82b4", - "sha256:74de2b894b47f1d21cbd0b37a5e2b2392ad95d17ae983e64727e18eb281fe7cb", - "sha256:7c584f366f46ba667cfa66020344886cf47088e79c9b9d39c84ce9ea98aaa331", - "sha256:7d27a7e34c313b3a7f91adcd05134315002aaf8540d7b4f90336beafaea6217c", - "sha256:7d3f0b61c45c3fa9a349cf484962c559a8a1d80dae6977276df8fd1fa5e3cb8c", - "sha256:82ff5e1cae4e855147fd57a2863376ed7454134c2bf49ec604dfe71e446e2193", - "sha256:84bc2a7d075f32f6ed98652db3a680a17a4edb21ca7f80fe42e38753a58ee02b", - "sha256:884be66c76a444c59f801ac13f40c76f176f1bfa815ef5b8ed44321e74f1600b", - "sha256:8a5cc00546e0a701da4639aa0bbcb0ae2bb678c87f46da01ac2d789e1f2d2038", - "sha256:8dc96f64ae43dde92530775e9cb169979f414dcf5cff670455d81a6823b42089", - "sha256:8f38706e0b15d3c20ef6259fd4bc1700cd133b06c3c1bb108ffe3f8947be15fa", - "sha256:90fcf8929836d4a0e964d799a58823547df5a5e9afa83081761630553be731f9", - "sha256:931c039af54fc195fe6ad536fde4b0de04da9d5916e78e55405436348cfb0e56", - "sha256:932af322458da7e4e35df32f050389e13d3d96b09d274b22a7aa1808f292fee4", - "sha256:942de28af58f352a6f588bc72490ae0f4ccd6dfc2bd3de5945b882a078e4e179", - "sha256:9bc42e8402dc5e9905fb8b9649f57efcb2056693b7e88faa8fb029256ba9c68c", - "sha256:a7a240d7a74bf8d5cb3bfe6be7f21697a28ec4b1a437607bae08ac7acf5b4882", - "sha256:a9f9a735deaf9a0cadc2d8c50d1a5bcdbae8b6e539c6e08237bc4082d7c13f28", - "sha256:ae5e95cfb53ab1da62185e23b3130e11d64431179debac6dc3c6acf08760e9b1", - "sha256:b029fb2032ae4724d8ae8d4f6b363f2cc39e4c7b12454df8df7f0f563ed3e61a", - "sha256:b0d15c968ea7a65211e084f523151dbf8ae44634de03c801b8bd070b74e85033", - "sha256:b343f521b047493dc4022dd338fc6db9d9282658862756b4f6fd0e996c1380e1", - "sha256:b627c266f295de9dea86bd1112ed3d5fafb69a348af30a2422e16590a8ecba13", - "sha256:b9968694c5f467bf67ef97ae7ad4d56d14be2751000c1207d31bf3bb8860bae8", - "sha256:ba089c499e1f4155d2a3c2a05d2878a3428cf321c848f2b5a45ce55f0d7d310c", - "sha256:bbccd847aa0c3a69b5f691a84d2341a4f8a629c6922558f2a70611305f902d74", - "sha256:bc0b82d728fe21a0d03e65f81980abbbcb13b5387f733a1a870672c5be26edab", - "sha256:c57e4c1349fbe0e446c9fa7b19ed2f8a4417233b6984277cce392819123142d3", - "sha256:c94ae4faf2d09f7c81847c63843f84fe47bf6253c9d60b20f25edfd30fb12588", - "sha256:c9b27d6c1c6cd53dc93614967e9ce00ae7f864a2d9f99fe5ed86706e1ecbf485", - "sha256:d210abe51b5da0ffdbf7b43eed0cfdff8a55a1ab17abbec4301c9ff077dd0342", - "sha256:d58804e996d7d2307173d56c297cf7bc132c52df27a3efaac5e8d43e36c21c48", - "sha256:d6a4162139374a49eb18ef5b2f4da1dd95c994588f5033d64e0bbfda4b6b6fcf", - "sha256:da39dd03d130162deb63da51f6e66ed73032ae62e74aaccc4236e30edccddbb0", - "sha256:db3c336f9eda2532ec0fd8ea49fef7a8df8f6c804cdf4f39e5c5c0d4a4ad9a7a", - "sha256:dd500e0a5e11969cdd3320935ca2ff1e936f2358f9c2e61f100a1660933320ea", - "sha256:dd9becd5fe29773d140d68d607d66a38f60e31b86df75332703757ee645b6faf", - "sha256:e0cb5cc6ece6ffa75baccfd5c02cffe776f3f5c8bf486811f9d3ea3453676ce8", - "sha256:e23173580d740bf8822fd0379e4bf30aa1d5a92a4f252d34e893070c081050df", - "sha256:e3a686ecb4aa0d64ae60c9c9f1a7d5d46cab9bfb5d91a2d303d00e2cd4c4c5cc", - "sha256:e789376b52c295c4946403bd0efecf27ab98f05319df4583d3c48e43c7342c2f", - "sha256:edc344de4dac1d89300a053ac973299e82d3db56330f3494905643bb68801269", - "sha256:eef610b23933c54d5d921c92578ae5f89813438fded840c2e9809d378dc765d3", - "sha256:f2c38d588887a609191d30e902df2a32711f708abfd85d318ca9b367258cfd0c", - "sha256:f55b5905705725af31ccef50e55391621532cd64fbf0bc6f4bac935f0fccec46", - "sha256:f5fc088b7a32f244c519a048c170f14cf2251b849ef0e20cbbb0fdf0fdaf556f", - "sha256:fe10ddc59b304cb19a1bdf5bd0a7719cbbc9fbdd57ac80ed436b709fcf889106", - "sha256:ff64a1d38d156d429404aaa84b27305e957fd10c30e5880d1765c9480bea490f" - ], - "markers": "python_version >= '3.7'", - "version": "==10.4" + "sha256:00700340c6c7ab788f176d118775202aadea7602c5cc6be6ae127761c16d6b0b", + "sha256:0bee75f400895aef54157b36ed6d3b308fcab62e5260703add87f44cee9c82a6", + "sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df", + "sha256:12743ab88ab2af1d17dd4acb4645677cb7063ef4db93abffbf164218a5d54c6b", + "sha256:1a9d160fd080c6285e202327aba140fc9a0d910b09e423afff4ae5cbbf1c7205", + "sha256:1bf386089178ea69d720f8db6199a0504a406209a0fc23e603b27b300fdd6892", + "sha256:1df2fbd2c8a98d38a66f5238484405b8d1d16f929bb7a33ed73e4801222a6f53", + "sha256:1e4b3f8ea6a9cfa8be8484c9221ec0257508e3a1ec43c36acdefb2a9c3b00aa2", + "sha256:1f38a7b376117ef7aff996e737583172bdf535932c9ca021746573bce40165ed", + "sha256:23509452b3bc38e3a057382c2e941d5ac2e01e251acce7adc74011d7d8de434c", + "sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd", + "sha256:25eb766c8ad27da0f79420b2af4b85d29914ba0edf69f547cc4f06ca6f1d403b", + "sha256:27a5e9964ef509016759f2ef3f2c1e13f403725a5e6a1775555994966a66e931", + "sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30", + "sha256:2cb388a5bfb56df4d9a406783b7f9dbefb888c09b71629351cc6b036e9259370", + "sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be", + "sha256:2e5fc14ec6ea568200ea4ef46545073da81900a2b67b3e666f04adf53ad452ec", + "sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf", + "sha256:3c6cc1360c10c17463aadd29dd3af332d4a1adaa8796f6b0e9f9df1fdb0bad62", + "sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b", + "sha256:3e3aa8c468af01d70332a382350ee95f6986db479ce7af14d5e81ec52aa2b402", + "sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f", + "sha256:423fc1ed29f7512fceb727e2d2aecb952c46aa34895e9ed96071821309951123", + "sha256:46e71dbbd12850224243f5d2aeec90f0aaa0f2dde5aeeb8fc8df21e04d99eff9", + "sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603", + "sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45", + "sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558", + "sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4", + "sha256:5f6ffe2c6598f7f7207eef9a1228b6f5c818f9f4d53ee920aacd35cec8110438", + "sha256:604428d1b87edbf02b233e2c207d7d528460fa978f9e391bd8aaf9c8311de137", + "sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480", + "sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447", + "sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8", + "sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04", + "sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c", + "sha256:7b645f491f3c48d3f8a00d1fce07445fab7347fec54a3e65f0725d730d5b99cb", + "sha256:7fa3d25e81bfe6a89718e9791128398a50dec6d57faf23770787ff441d851967", + "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b", + "sha256:8572132c7be52632201a35f5e08348137f658e5ffd21f51f94572ca6c05ea81d", + "sha256:87b4aafed34653e465eb77b7c93ef058516cb5acf3eb21e42f33928616172def", + "sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c", + "sha256:9893d1aa45a7f8b3bc4510f6ccf8db8c3b62120917af15e3de247f0780294b92", + "sha256:9edf3fc590cc2ec20dc9d7a45108b5bbaf21c0d89f9fd3fd1685e223771dc0b2", + "sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113", + "sha256:a02413bc474feda2849c59ed2dfb2cddb4cd3d2f03a2fedec51d6e959d9b608b", + "sha256:a1d9697f3337a89691e3bd8dc56dea45a6f6d975f92e7d5f773bc715c15dde28", + "sha256:a571f035a47212288e3b3519944f6bf4ac7bc7553243e41eac50dd48552b6df7", + "sha256:ab3d732ad50a4fbd04a4490ef08acd0517b6ae6b77eb967251f4c263011a990d", + "sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f", + "sha256:b067cb952ce8bf40115f6c19f478dc71c5e719b7fbaa511359795dfd9d1a6468", + "sha256:b2ee7288b85959797970114deae81ab41b731f19ebcd3bd499ae9ca0e3f1d2c8", + "sha256:b81f90dcc6c85a9b7f29873beb56c94c85d6f0dac2ea8b60d995bd18bf3e2aae", + "sha256:ba0cab91b3956dfa9f512147860783a1829a8d905ee218a9837c18f683239611", + "sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d", + "sha256:bbe6013f9f791944ed31ca08b077e26249309639313fff132bfbf3ba105673b9", + "sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca", + "sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f", + "sha256:c3181df4583c4d3994d31fb235dc681d2aaad744fbdbf94c4802485ececdecf2", + "sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077", + "sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2", + "sha256:cbe83a6bbdf207ff0541de01e11904827540aa069293696dd528a6640bd6a5f6", + "sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374", + "sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc", + "sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e", + "sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53", + "sha256:e469d01137942849cff40517c97a30a93ae79917752b34029f0ec72df6b46399", + "sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547", + "sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3", + "sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870", + "sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5", + "sha256:fc4e7fa5414512b481a2483775a8e8be7803a35b30ca805afa4998a84f9fd9e8", + "sha256:ffefa1374cd508d633646d51a8e9277763a9b78ae71324183693959cf94635a7" + ], + "markers": "python_version >= '3.8'", + "version": "==12.0" }, "werkzeug": { "hashes": [ - "sha256:7ea2d48322cc7c0f8b3a215ed73eabd7b5d75d0b50e31ab006286ccff9e00b8f", - "sha256:f979ab81f58d7318e064e99c4506445d60135ac5cd2e177a2de0089bfd4c9bd5" + "sha256:507e811ecea72b18a404947aded4b3390e1db8f826b494d76550ef45bb3b1dcc", + "sha256:90a285dc0e42ad56b34e696398b8122ee4c681833fb35b8334a095d82c56da10" ], - "markers": "python_version >= '3.7'", - "version": "==2.2.2" + "markers": "python_version >= '3.8'", + "version": "==3.0.1" + }, + "wrapt": { + "hashes": [ + "sha256:01592f7b69b0e721146eed35f0e73f64d06c4caf449d630382863e1f1709150d", + "sha256:09695a747c4af43a50425a45badebdb932d026d6e4d57b885e328f1294a14825", + "sha256:115970769617c7d03d23ecfa08c174f29a9bbf8da08ded204702bc34b76658ab", + "sha256:169ae1817e18a8ae3e10796b1e0c203e04d83ca487f64e7ddb22077eae9a1915", + "sha256:16e5d269660b7217a7a53631df87900ee8937038fae6a3adb88411b108bb8f50", + "sha256:17e978083c577ee724c8eeb0155ed96dd7a1e50b97f30c535da1c09cda0970c9", + "sha256:1e3df5fd073559d32ad8cf6ee10d55e956ed794c130b24c57769416a13c37a60", + "sha256:221eca686d29b2babd09007296816fe338e502a002c965b27737d108e2ce1832", + "sha256:228533d82158a4d25de8b3703195d5c69bae5860010c75bd01f6ab393561ea22", + "sha256:22c6ba8b141ec9b6e34beff8429bd03cd082987dd4831d288b2931fee6c34d29", + "sha256:2522e09d2f8fc0f1db4aafdeebe84597c078cd7d70cc56b1bbc4887870b1f24c", + "sha256:29c20ca9bab38759a1d8fb171ad17f7da5ec18855fc7aacd6c93edc83dbc9764", + "sha256:29d70cbf5814bf91193cdac1ffc76240adfeb7c89a8070dc29e49674249542c2", + "sha256:2e287347a241c3db125d58ec0c0c9f363fd7cbfdf2affc352c0f5bd4d0f0b799", + "sha256:378021d27d168f6f09cf69eaaa9052c8ea48e103beb7d403fc978ad7d6dcdc3e", + "sha256:399a64e99b3a327159e79cc20b6f0552e72e32bf6155d5521b0496cab26d1110", + "sha256:3a7e40704f48038f5233b993d61ac3195beb748cfe8e8f4698349c5fecbe6280", + "sha256:3b13c53d8629cced58bdee9ee3c3a4372097660dad7e8398b3f26267a942cb2e", + "sha256:3ca9ab90a5d6fa91761a6151018819a9239b28c9cc2e8e1d679833bd0f5f939c", + "sha256:3cf2fae5a9757491ed8756f580ece8312fea95e07be2b340ddef982a766a7ac7", + "sha256:3ee64ab62c8fdc671c16b6d44bee12d598e0ad936b3a17e891404fd79f1f3d61", + "sha256:4148753415a77f674a9f3ed372d68f9b6c0e83e6f2bcf91d3068462a40cb43cd", + "sha256:4409bd44e5ffa1656bce5c8824155abc0e3151d07393c3434a28f812c5a123d0", + "sha256:467ca88d704655f3e7429af2fa4649d602cb27ce289f26b833c207bf11d96830", + "sha256:4c51ab4213d97f9e2287c5dd9f61fc44a2604be79246239ebadeae636b274596", + "sha256:4e07ac0a4f44693bfc8df134b181268adfcdd7e73db9814901df3e051d9266fc", + "sha256:4f31b53e611854ab300535f81038a83dbcd472814dd3a9970eeb201578df6262", + "sha256:54be66645d5b2358b9294ff0349005789541ac9a4c3a10d60042685e2ea51ca0", + "sha256:55d9cbee700697ae3a5a34045446d0890baada178fe6028604e8f2c9992470cb", + "sha256:5816dee9ab69a18ca47a0d1d67086b2995910e11b7a0a2a2bae6e9ac63ac2828", + "sha256:59ecece1b2b35d5fc6f1605d15e90d4342b0658b17158643e6a17b72e38da826", + "sha256:5b3f2cef94b53f0d55d96c6309f1100110475c7b1fb907bc5f3fd2b0c940b238", + "sha256:604dad6f6b34d767097b12a1ae84a128d899626c78e86e1180eff35d64f1a57d", + "sha256:640fdfcb41865941c2fa4c0dfb9db6ab389d65e3266a464afeeff23f8f77fb24", + "sha256:65586e7a33267e5725cf228c0f7b9e819ab60c0c88ccf9827c2e0526d43a1103", + "sha256:6bb06bfe4c53f65d59bbe9101a8181c5e8dcde1ad0f778a4d502b599ebc213e6", + "sha256:6d4950d0b5ebbe74ca549b2000474330988c88ae59a67b961e2cfdc18cd75003", + "sha256:706bddba81c86330d92bbf080afef4a8c4f4fd86e0bc4a1975fac9b84c6758af", + "sha256:76263e0c1207dfe9099805d1cf6147de05f638a598c8453cd8bb914aaf7520db", + "sha256:77cd63017a8c35ead1a07f85c3ec4fa259bb2260332d69c6e9ae4c35b2c8e79f", + "sha256:793c91e9c86d80850f2f40f1d3d5dce4f810f5aa6e5a80310fb8d32f5210f4df", + "sha256:7d71ac38f1f178a8d3139e5560d95dabd4f894820a5627d0cd7535e9a255056a", + "sha256:7e372d054af5b9652c7ba05fda93aec3bcb8f53dab21e61249c98a1596e48402", + "sha256:8c9b972bc3dad5363f966912b8134b2ebfc1dc5a030e0835dc6c60f107390fe7", + "sha256:969d518cc42be5f9f78fb7e6f42e51796e1ebce02219c93a03fcb29a7a3eb1e7", + "sha256:a3461740b336424b836840f3568a56775e5fc988521cb6072aa3c3f2a589036c", + "sha256:a3a15c874a1a30a9c4edb5ec55d96c1210f5974df51a6d69a367aace74378467", + "sha256:a3fdde5f045de444875fa2c6822a1551dd03dcbb3a22fb52ded73744d7ebad55", + "sha256:a7675ff09d87435b8f678d17e78211cb589ae805fd31579dc918e23c71710a6c", + "sha256:a9a65f98a571083dc61419295aeb8d59170227227d4ba13d6d5b96a953a519aa", + "sha256:b265aaab64dfb9db412ee315ff23f52f1986cf6e0989d719d90423baf4019d63", + "sha256:b96bbcbf81ee9ee2e0c81a5f2a3bd0975a6dc0a6a9fc335f9b302a661999e3ed", + "sha256:bdbb31db39b69d0f0e5ae83f99b8e28fa3ad7b7e05de6c5faa3cd52a4de20ef5", + "sha256:c3f3c320272601223a036fecd942dd1258a15cebe88e18012cc88b2e6b813483", + "sha256:c85b8fbd7c0e303a6d6e5731a7898f10e070dead30822b0481327dba74e7123c", + "sha256:c939d2cc4015311e8aae68f52a6bc8e69c02b2c7166953fef9c1f06657aabdfc", + "sha256:d6a866d5b8fc0f713440aafb9507f688f4d660c2f868093ae6cd0acb62d1a918", + "sha256:d7c7e203e93f1eed57880f84505e7d2b4ece02e3ed7c6690ba90d0385f1a74b4", + "sha256:d8d2fda2907c42ba3df720f0c7a704f36e09c586c8f7a4eed8b9db0e1d2fa79a", + "sha256:db39f9065ed5b30081f8df71ced66cd29640b21e0091e2e5572ba0d70078f611", + "sha256:db4772a9498023ce19f95b7aa86a8d94c8838269597361a986133373990be41f", + "sha256:dd5dd67c074201664e4b80022128ef6eee8a007f2281d7099cd2114061af796a", + "sha256:dfc2a91a23de91c9cedc9bc34742469ad7d1f177d4bf1a7a359af1adf9050e9b", + "sha256:e5b450194731714cba9267e5c04e1f3622090c3ec43e1acba36744d92354da5e", + "sha256:e7b324089cb59d700ed5cace6b39013f81473d1bf410da77a0d304ebadbc6eb9", + "sha256:ea6041327840465f2450a1c8894a834a99aa4626a96f82547d9c042526eb1487", + "sha256:eb72f906837cea3583fd9c91c6e286f8616360767703c837e7dfa1a70b123ad0", + "sha256:f0b9edc564b1af9e9ac9cf932349136c74894ce2f699e00c1279b0fa5909d515", + "sha256:f9e10c3bf07074377fbbff3d2b02d740c17602ce5d6c91455977bdb32fbbebe8", + "sha256:fc43eb869c6baba54dda3264109354a5d0ea621c51ba945ff71308347f24a1c9" + ], + "version": "==1.16.0rc1" }, "yarl": { "hashes": [ - "sha256:076eede537ab978b605f41db79a56cad2e7efeea2aa6e0fa8f05a26c24a034fb", - "sha256:07b21e274de4c637f3e3b7104694e53260b5fc10d51fb3ec5fed1da8e0f754e3", - "sha256:0ab5a138211c1c366404d912824bdcf5545ccba5b3ff52c42c4af4cbdc2c5035", - "sha256:0c03f456522d1ec815893d85fccb5def01ffaa74c1b16ff30f8aaa03eb21e453", - "sha256:12768232751689c1a89b0376a96a32bc7633c08da45ad985d0c49ede691f5c0d", - "sha256:19cd801d6f983918a3f3a39f3a45b553c015c5aac92ccd1fac619bd74beece4a", - "sha256:1ca7e596c55bd675432b11320b4eacc62310c2145d6801a1f8e9ad160685a231", - "sha256:1e4808f996ca39a6463f45182e2af2fae55e2560be586d447ce8016f389f626f", - "sha256:205904cffd69ae972a1707a1bd3ea7cded594b1d773a0ce66714edf17833cdae", - "sha256:20df6ff4089bc86e4a66e3b1380460f864df3dd9dccaf88d6b3385d24405893b", - "sha256:21ac44b763e0eec15746a3d440f5e09ad2ecc8b5f6dcd3ea8cb4773d6d4703e3", - "sha256:29e256649f42771829974e742061c3501cc50cf16e63f91ed8d1bf98242e5507", - "sha256:2d800b9c2eaf0684c08be5f50e52bfa2aa920e7163c2ea43f4f431e829b4f0fd", - "sha256:2d93a049d29df172f48bcb09acf9226318e712ce67374f893b460b42cc1380ae", - "sha256:31a9a04ecccd6b03e2b0e12e82131f1488dea5555a13a4d32f064e22a6003cfe", - "sha256:3d1a50e461615747dd93c099f297c1994d472b0f4d2db8a64e55b1edf704ec1c", - "sha256:449c957ffc6bc2309e1fbe67ab7d2c1efca89d3f4912baeb8ead207bb3cc1cd4", - "sha256:4a88510731cd8d4befaba5fbd734a7dd914de5ab8132a5b3dde0bbd6c9476c64", - "sha256:4c322cbaa4ed78a8aac89b2174a6df398faf50e5fc12c4c191c40c59d5e28357", - "sha256:5395da939ffa959974577eff2cbfc24b004a2fb6c346918f39966a5786874e54", - "sha256:5587bba41399854703212b87071c6d8638fa6e61656385875f8c6dff92b2e461", - "sha256:56c11efb0a89700987d05597b08a1efcd78d74c52febe530126785e1b1a285f4", - "sha256:5999c4662631cb798496535afbd837a102859568adc67d75d2045e31ec3ac497", - "sha256:59ddd85a1214862ce7c7c66457f05543b6a275b70a65de366030d56159a979f0", - "sha256:6347f1a58e658b97b0a0d1ff7658a03cb79bdbda0331603bed24dd7054a6dea1", - "sha256:6628d750041550c5d9da50bb40b5cf28a2e63b9388bac10fedd4f19236ef4957", - "sha256:6afb336e23a793cd3b6476c30f030a0d4c7539cd81649683b5e0c1b0ab0bf350", - "sha256:6c8148e0b52bf9535c40c48faebb00cb294ee577ca069d21bd5c48d302a83780", - "sha256:76577f13333b4fe345c3704811ac7509b31499132ff0181f25ee26619de2c843", - "sha256:7c0da7e44d0c9108d8b98469338705e07f4bb7dab96dbd8fa4e91b337db42548", - "sha256:7de89c8456525650ffa2bb56a3eee6af891e98f498babd43ae307bd42dca98f6", - "sha256:7ec362167e2c9fd178f82f252b6d97669d7245695dc057ee182118042026da40", - "sha256:7fce6cbc6c170ede0221cc8c91b285f7f3c8b9fe28283b51885ff621bbe0f8ee", - "sha256:85cba594433915d5c9a0d14b24cfba0339f57a2fff203a5d4fd070e593307d0b", - "sha256:8b0af1cf36b93cee99a31a545fe91d08223e64390c5ecc5e94c39511832a4bb6", - "sha256:9130ddf1ae9978abe63808b6b60a897e41fccb834408cde79522feb37fb72fb0", - "sha256:99449cd5366fe4608e7226c6cae80873296dfa0cde45d9b498fefa1de315a09e", - "sha256:9de955d98e02fab288c7718662afb33aab64212ecb368c5dc866d9a57bf48880", - "sha256:a0fb2cb4204ddb456a8e32381f9a90000429489a25f64e817e6ff94879d432fc", - "sha256:a165442348c211b5dea67c0206fc61366212d7082ba8118c8c5c1c853ea4d82e", - "sha256:ab2a60d57ca88e1d4ca34a10e9fb4ab2ac5ad315543351de3a612bbb0560bead", - "sha256:abc06b97407868ef38f3d172762f4069323de52f2b70d133d096a48d72215d28", - "sha256:af887845b8c2e060eb5605ff72b6f2dd2aab7a761379373fd89d314f4752abbf", - "sha256:b19255dde4b4f4c32e012038f2c169bb72e7f081552bea4641cab4d88bc409dd", - "sha256:b3ded839a5c5608eec8b6f9ae9a62cb22cd037ea97c627f38ae0841a48f09eae", - "sha256:c1445a0c562ed561d06d8cbc5c8916c6008a31c60bc3655cdd2de1d3bf5174a0", - "sha256:d0272228fabe78ce00a3365ffffd6f643f57a91043e119c289aaba202f4095b0", - "sha256:d0b51530877d3ad7a8d47b2fff0c8df3b8f3b8deddf057379ba50b13df2a5eae", - "sha256:d0f77539733e0ec2475ddcd4e26777d08996f8cd55d2aef82ec4d3896687abda", - "sha256:d2b8f245dad9e331540c350285910b20dd913dc86d4ee410c11d48523c4fd546", - "sha256:dd032e8422a52e5a4860e062eb84ac94ea08861d334a4bcaf142a63ce8ad4802", - "sha256:de49d77e968de6626ba7ef4472323f9d2e5a56c1d85b7c0e2a190b2173d3b9be", - "sha256:de839c3a1826a909fdbfe05f6fe2167c4ab033f1133757b5936efe2f84904c07", - "sha256:e80ed5a9939ceb6fda42811542f31c8602be336b1fb977bccb012e83da7e4936", - "sha256:ea30a42dc94d42f2ba4d0f7c0ffb4f4f9baa1b23045910c0c32df9c9902cb272", - "sha256:ea513a25976d21733bff523e0ca836ef1679630ef4ad22d46987d04b372d57fc", - "sha256:ed19b74e81b10b592084a5ad1e70f845f0aacb57577018d31de064e71ffa267a", - "sha256:f5af52738e225fcc526ae64071b7e5342abe03f42e0e8918227b38c9aa711e28", - "sha256:fae37373155f5ef9b403ab48af5136ae9851151f7aacd9926251ab26b953118b" + "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571", + "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3", + "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3", + "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c", + "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7", + "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04", + "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191", + "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea", + "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4", + "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4", + "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095", + "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e", + "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74", + "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef", + "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33", + "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde", + "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45", + "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf", + "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b", + "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac", + "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0", + "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528", + "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716", + "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb", + "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18", + "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72", + "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6", + "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582", + "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5", + "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368", + "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc", + "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9", + "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be", + "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a", + "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80", + "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8", + "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6", + "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417", + "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574", + "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59", + "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608", + "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82", + "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1", + "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3", + "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d", + "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8", + "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc", + "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac", + "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8", + "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955", + "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0", + "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367", + "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb", + "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a", + "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623", + "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2", + "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6", + "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7", + "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4", + "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051", + "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938", + "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8", + "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9", + "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3", + "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5", + "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9", + "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333", + "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185", + "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3", + "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560", + "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b", + "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7", + "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78", + "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7" ], "markers": "python_version >= '3.7'", - "version": "==1.8.1" + "version": "==1.9.2" }, "zipp": { "hashes": [ - "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa", - "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766" + "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31", + "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0" + ], + "version": "==3.17.0" + }, + "zope-interface": { + "hashes": [ + "sha256:0c8cf55261e15590065039696607f6c9c1aeda700ceee40c70478552d323b3ff", + "sha256:13b7d0f2a67eb83c385880489dbb80145e9d344427b4262c49fbf2581677c11c", + "sha256:1f294a15f7723fc0d3b40701ca9b446133ec713eafc1cc6afa7b3d98666ee1ac", + "sha256:239a4a08525c080ff833560171d23b249f7f4d17fcbf9316ef4159f44997616f", + "sha256:2f8d89721834524a813f37fa174bac074ec3d179858e4ad1b7efd4401f8ac45d", + "sha256:2fdc7ccbd6eb6b7df5353012fbed6c3c5d04ceaca0038f75e601060e95345309", + "sha256:34c15ca9248f2e095ef2e93af2d633358c5f048c49fbfddf5fdfc47d5e263736", + "sha256:387545206c56b0315fbadb0431d5129c797f92dc59e276b3ce82db07ac1c6179", + "sha256:43b576c34ef0c1f5a4981163b551a8781896f2a37f71b8655fd20b5af0386abb", + "sha256:57d0a8ce40ce440f96a2c77824ee94bf0d0925e6089df7366c2272ccefcb7941", + "sha256:5a804abc126b33824a44a7aa94f06cd211a18bbf31898ba04bd0924fbe9d282d", + "sha256:67be3ca75012c6e9b109860820a8b6c9a84bfb036fbd1076246b98e56951ca92", + "sha256:6af47f10cfc54c2ba2d825220f180cc1e2d4914d783d6fc0cd93d43d7bc1c78b", + "sha256:6dc998f6de015723196a904045e5a2217f3590b62ea31990672e31fbc5370b41", + "sha256:70d2cef1bf529bff41559be2de9d44d47b002f65e17f43c73ddefc92f32bf00f", + "sha256:7ebc4d34e7620c4f0da7bf162c81978fce0ea820e4fa1e8fc40ee763839805f3", + "sha256:964a7af27379ff4357dad1256d9f215047e70e93009e532d36dcb8909036033d", + "sha256:97806e9ca3651588c1baaebb8d0c5ee3db95430b612db354c199b57378312ee8", + "sha256:9b9bc671626281f6045ad61d93a60f52fd5e8209b1610972cf0ef1bbe6d808e3", + "sha256:9ffdaa5290422ac0f1688cb8adb1b94ca56cee3ad11f29f2ae301df8aecba7d1", + "sha256:a0da79117952a9a41253696ed3e8b560a425197d4e41634a23b1507efe3273f1", + "sha256:a41f87bb93b8048fe866fa9e3d0c51e27fe55149035dcf5f43da4b56732c0a40", + "sha256:aa6fd016e9644406d0a61313e50348c706e911dca29736a3266fc9e28ec4ca6d", + "sha256:ad54ed57bdfa3254d23ae04a4b1ce405954969c1b0550cc2d1d2990e8b439de1", + "sha256:b012d023b4fb59183909b45d7f97fb493ef7a46d2838a5e716e3155081894605", + "sha256:b51b64432eed4c0744241e9ce5c70dcfecac866dff720e746d0a9c82f371dfa7", + "sha256:bbe81def9cf3e46f16ce01d9bfd8bea595e06505e51b7baf45115c77352675fd", + "sha256:c9559138690e1bd4ea6cd0954d22d1e9251e8025ce9ede5d0af0ceae4a401e43", + "sha256:e30506bcb03de8983f78884807e4fd95d8db6e65b69257eea05d13d519b83ac0", + "sha256:e33e86fd65f369f10608b08729c8f1c92ec7e0e485964670b4d2633a4812d36b", + "sha256:e441e8b7d587af0414d25e8d05e27040d78581388eed4c54c30c0c91aad3a379", + "sha256:e8bb9c990ca9027b4214fa543fd4025818dc95f8b7abce79d61dc8a2112b561a", + "sha256:ef43ee91c193f827e49599e824385ec7c7f3cd152d74cb1dfe02cb135f264d83", + "sha256:ef467d86d3cfde8b39ea1b35090208b0447caaabd38405420830f7fd85fbdd56", + "sha256:f89b28772fc2562ed9ad871c865f5320ef761a7fcc188a935e21fe8b31a38ca9", + "sha256:fddbab55a2473f1d3b8833ec6b7ac31e8211b0aa608df5ab09ce07f3727326de" ], "markers": "python_version >= '3.7'", - "version": "==3.11.0" - }, - "zope.interface": { - "hashes": [ - "sha256:008b0b65c05993bb08912f644d140530e775cf1c62a072bf9340c2249e613c32", - "sha256:0217a9615531c83aeedb12e126611b1b1a3175013bbafe57c702ce40000eb9a0", - "sha256:0fb497c6b088818e3395e302e426850f8236d8d9f4ef5b2836feae812a8f699c", - "sha256:17ebf6e0b1d07ed009738016abf0d0a0f80388e009d0ac6e0ead26fc162b3b9c", - "sha256:311196634bb9333aa06f00fc94f59d3a9fddd2305c2c425d86e406ddc6f2260d", - "sha256:3218ab1a7748327e08ef83cca63eea7cf20ea7e2ebcb2522072896e5e2fceedf", - "sha256:404d1e284eda9e233c90128697c71acffd55e183d70628aa0bbb0e7a3084ed8b", - "sha256:4087e253bd3bbbc3e615ecd0b6dd03c4e6a1e46d152d3be6d2ad08fbad742dcc", - "sha256:40f4065745e2c2fa0dff0e7ccd7c166a8ac9748974f960cd39f63d2c19f9231f", - "sha256:5334e2ef60d3d9439c08baedaf8b84dc9bb9522d0dacbc10572ef5609ef8db6d", - "sha256:604cdba8f1983d0ab78edc29aa71c8df0ada06fb147cea436dc37093a0100a4e", - "sha256:6373d7eb813a143cb7795d3e42bd8ed857c82a90571567e681e1b3841a390d16", - "sha256:655796a906fa3ca67273011c9805c1e1baa047781fca80feeb710328cdbed87f", - "sha256:65c3c06afee96c654e590e046c4a24559e65b0a87dbff256cd4bd6f77e1a33f9", - "sha256:696f3d5493eae7359887da55c2afa05acc3db5fc625c49529e84bd9992313296", - "sha256:6e972493cdfe4ad0411fd9abfab7d4d800a7317a93928217f1a5de2bb0f0d87a", - "sha256:7579960be23d1fddecb53898035a0d112ac858c3554018ce615cefc03024e46d", - "sha256:765d703096ca47aa5d93044bf701b00bbce4d903a95b41fff7c3796e747b1f1d", - "sha256:7e66f60b0067a10dd289b29dceabd3d0e6d68be1504fc9d0bc209cf07f56d189", - "sha256:8a2ffadefd0e7206adc86e492ccc60395f7edb5680adedf17a7ee4205c530df4", - "sha256:959697ef2757406bff71467a09d940ca364e724c534efbf3786e86eee8591452", - "sha256:9d783213fab61832dbb10d385a319cb0e45451088abd45f95b5bb88ed0acca1a", - "sha256:a16025df73d24795a0bde05504911d306307c24a64187752685ff6ea23897cb0", - "sha256:a2ad597c8c9e038a5912ac3cf166f82926feff2f6e0dabdab956768de0a258f5", - "sha256:bfee1f3ff62143819499e348f5b8a7f3aa0259f9aca5e0ddae7391d059dce671", - "sha256:d169ccd0756c15bbb2f1acc012f5aab279dffc334d733ca0d9362c5beaebe88e", - "sha256:d514c269d1f9f5cd05ddfed15298d6c418129f3f064765295659798349c43e6f", - "sha256:d692374b578360d36568dd05efb8a5a67ab6d1878c29c582e37ddba80e66c396", - "sha256:dbaeb9cf0ea0b3bc4b36fae54a016933d64c6d52a94810a63c00f440ecb37dd7", - "sha256:dc26c8d44472e035d59d6f1177eb712888447f5799743da9c398b0339ed90b1b", - "sha256:e1574980b48c8c74f83578d1e77e701f8439a5d93f36a5a0af31337467c08fcf", - "sha256:e74a578172525c20d7223eac5f8ad187f10940dac06e40113d62f14f3adb1e8f", - "sha256:e945de62917acbf853ab968d8916290548df18dd62c739d862f359ecd25842a6", - "sha256:f0980d44b8aded808bec5059018d64692f0127f10510eca71f2f0ace8fb11188", - "sha256:f98d4bd7bbb15ca701d19b93263cc5edfd480c3475d163f137385f49e5b3a3a7", - "sha256:fb68d212efd057596dee9e6582daded9f8ef776538afdf5feceb3059df2d2e7b" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==5.5.2" + "version": "==6.1" } } } diff --git a/README.rst b/README.rst index df57f55..27c3f18 100644 --- a/README.rst +++ b/README.rst @@ -7,103 +7,106 @@ Porter Overview -------- -NuCypher Porter can be described as the *“Infura for NuCypher”*. Porter is a web-based service that performs -nucypher-based protocol operations on behalf of applications. +Porter can be described as the *“Infura for TACo”*. Porter is a +web-based service that performs TACo-based protocol operations for +applications. -Its goal is to simplify and abstract the complexities surrounding the nucypher protocol to negate the need for -applications to interact with the network directly. Porter enables applications to behave like a "light-client" -by delegating network intensive operations like peering and node discovery to Porter. Porter facilitates cross-platform -support for the `nucypher protocol `_. +Its goal is to simplify and abstract the complexities surrounding the +TACo protocol to negate the need for applications to interact with the protocol +directly. Porter introduces the TACo protocol to +cross-platform functionality, including web and mobile applications. .. image:: ./porter_diagram.png :target: ./porter_diagram.png -Running Porter --------------- +You can utilize any publicly available Porter to interface with the +Threshold Network. Alternatively, some application developers may choose to +operate their own. -There are a variety of possible infrastructure setups for running the Porter service, and two scenarios for running -the Porter service are provided here: +Running a Porter Instance +------------------------- -#. Run the Porter service directly via docker, docker-compose, or the CLI (see `Run Porter Directly`_) -#. Run the Porter service with a reverse proxy via docker-compose (see `Run Porter with Reverse Proxy`_) +By default, Porter runs on port ``9155``. +Security Considerations +*********************** -Run Porter Directly -******************* +- **HTTPS:** To run the Porter service over HTTPS, it will require a + TLS key and a TLS certificate. +- **CORS:** Allowed origins for `Cross-Origin Resource Sharing + (CORS) `_ +- **Authentication:** Usage restriction via authentication protocols, + e.g. basic authentication etc. -.. note:: - If running the Porter service using Docker or Docker Compose, it will run on port 80 (HTTP). If - running via the CLI the default port is 9155, unless specified otherwise via the ``--http-port`` option. +.. note:: + Managing a Porter instance on ``mainnet`` requires solid server + administration skills. This includes understanding how to provision and + secure servers, applying security best practices, and maintaining + consistent system performance. Key competencies like network configuration, + SSL/TLS encryption, and CORS, are also essential to ensure the + secure and efficient operation of your Porter instance. -Security -^^^^^^^^ +.. warning:: -* **CORS:** Allowed origins for `Cross-Origin Resource Sharing (CORS) `_ - is not enabled by default and can be enabled either via the ``--allow-origins`` option for the CLI, - or the ``PORTER_CORS_ALLOW_ORIGINS`` environment variable for docker-compose. + By default, Porter runs over HTTP. However, Porter instances must be + secured with a valid HTTPS certificate in order to be compatible with + network applications. A Porter instance running without SSL/TLS is not + only insecure but also browser-based apps and websites will be + unable to connect. - The value is expected to be a comma-delimited list of strings/regular expressions for origins to allow requests from. To allow all origins, - simply use "*". + To secure your Porter instance with HTTPS, use a reverse proxy + like `Nginx `_ or + `Apache `_ for SSL + processing, and potentially `Let's Encrypt `_ + for automated SSL certificate issuance and renewal. Additionally, consider + using cloud-based services like AWS/Digital Ocean load balancers or + Cloudflare for SSL termination and enhanced security. - .. note:: - Origin values can be a string (for exact matches) or regular expressions (for more complex matches). +Configurable Operation Timeouts +******************************* +Some Porter endpoints allow optional integer timeouts to be specified as a +parameter. However, to prevent DDOS attacks, timeouts are capped. By default +the ``/decrypt`` and ``/get_ursulas`` endpoints limit their timeouts at 15s. If +the optional timeout parameter is not provided or the provided timeout +parameter value is greater than the default timeout, the timeout used for the +operation will be the default timeout. - As part of CORS, the scheme (``https`` or ``http``) is also checked, so using only ``example.com`` is incorrect - to allow an origin from that specific domain. For exact matches, you can use ``https://example.com`` for HTTPS or - ``http://example.com`` for HTTP. For non-default ports (i.e. not 443 or 80), the ports should be specified - e.g. ``https://example.com:8000`` or ``http://example.com:8001``. +If modifying the default timeout values is desirable, they can be configured +via environment variables: - For regular expressions, to allow all sub-domains of ``example.com``, you could use ``.*\.example\.com$`` which - incorporates wildcards for scheme and sub-domain. To allow multiple top-level domains you could use - ``.*\.example\.(com|org)$`` which allows any origins from both ``example.com`` and ``example.org`` domains. +* ``PORTER_MAX_DECRYPTION_TIMEOUT`` for ``/decrypt`` operations +* ``PORTER_MAX_GET_URSULAS_TIMEOUT`` for ``/get_ursulas`` operations -via Docker -^^^^^^^^^^ -Run Porter within Docker without acquiring or installing the ``nucypher-porter`` codebase. +Run via Docker +************** -#. Get the latest image: +#. Get the latest ``porter`` image: .. code:: bash $ docker pull nucypher/porter:latest -#. Run Porter service - - For HTTP service (on default port 80): +#. Run Porter HTTP Service on port 80 .. code:: bash $ docker run -d --rm \ - --name porter-http \ + --name porter \ -v ~/.local/share/nucypher/:/root/.local/share/nucypher \ -p 80:9155 \ + --restart=unless-stopped \ nucypher/porter:latest \ nucypher-porter run \ - --eth-provider \ - --network - - * With CORS enabled to allow all origins: + --eth-endpoint \ + --polygon-endpoint \ + --domain - .. code:: bash - - $ docker run -d --rm \ - --name porter-http-cors \ - -v ~/.local/share/nucypher/:/root/.local/share/nucypher \ - -v :/etc/porter/tls \ - -p 443:9155 \ - nucypher/porter:latest \ - nucypher-porter run \ - --eth-provider \ - --network \ - --allow-origins "*" - - .. note:: - - The commands above are for illustrative purposes and can be modified as necessary. + The command above is for illustrative purposes and can be modified as + necessary. #. Porter will be available on default port 80 (HTTP). @@ -111,74 +114,17 @@ Run Porter within Docker without acquiring or installing the ``nucypher-porter`` .. code:: bash - $ docker logs -f + $ docker logs -f porter #. Stop Porter service .. code:: bash - $ docker stop - - -via Docker Compose -^^^^^^^^^^^^^^^^^^ - -Docker Compose will start the Porter service within a Docker container. - -#. There is no need to install ``nucypher-porter`` after acquiring the codebase since Docker will be used. - -#. Set the required environment variables: - - * Web3 Provider URI environment variable - - .. code:: bash - - $ export WEB3_PROVIDER_URI= - - .. note:: - - Local ipc is not supported when running via Docker. + $ docker stop porter - * Network Name environment variable - - .. code:: bash - - $ export NUCYPHER_NETWORK= - - * *(Optional)* Enable CORS. For example, to only allow access from your sub-domains for ``example.com``: - - .. code:: bash - - $ export PORTER_CORS_ALLOW_ORIGINS=".*\.example\.com$" - - -#. Run Porter service - - For HTTP service (on default port 80): - - .. code:: bash - - $ docker-compose -f deploy/docker/docker-compose.yml up -d porter-http - - Porter will be available on default ports 80 (HTTP). - - -#. View Porter logs - - .. code:: bash - - $ docker-compose -f deploy/docker/docker-compose.yml logs -f - -#. Stop Porter service - - .. code:: bash - - $ docker-compose -f deploy/docker/docker-compose.yml down - - -via CLI -^^^^^^^ +Run via CLI +*********** Acquire the ``nucypher-porter`` code base, and install using pip. Either: @@ -197,134 +143,28 @@ For a full list of CLI options after installation ``nucypher-porter``, run: .. code:: console - $ nucypher-porter run --help - - -* Run Porter service - - * Run via HTTP - - .. code:: console - - $ nucypher-porter run --eth-provider --network - - - ______ - (_____ \ _ - _____) )__ ____| |_ ____ ____ - | ____/ _ \ / ___) _)/ _ )/ ___) - | | | |_| | | | |_( (/ /| | - |_| \___/|_| \___)____)_| - - the Pipe for PRE Application network operations - - Network: - Provider: ... - Running Porter Web Controller at http://127.0.0.1:9155 - - To enable CORS, use the ``--allow-origins`` option: - - .. code:: console - - $ nucypher-porter run --eth-provider --network --allow-origins ".*\.example\.com$" - - - ______ - (_____ \ _ - _____) )__ ____| |_ ____ ____ - | ____/ _ \ / ___) _)/ _ )/ ___) - | | | |_| | | | |_( (/ /| | - |_| \___/|_| \___)____)_| - - the Pipe for PRE Application network operations - - Network: - Provider: ... - CORS Allow Origins: ['.*\\.example\\.com$'] - Running Porter Web Controller at http://127.0.0.1:9155 - - -Run Porter with Reverse Proxy -***************************** - -This type of Porter execution illustrates the use of a reverse proxy that is a go between or intermediate server that -handles requests from clients to an internal Porter service. An NGINX reverse proxy instance is -used in this case. It will handle functionality such as TLS, CORS, and authentication so that the Porter service -itself does not have to, and allows for more complex configurations than provided by Porter itself. More information -about the NGINX reverse proxy docker image used and additional configuration options -is available `here `_. - - -via Docker Compose -^^^^^^^^^^^^^^^^^^ - -Docker Compose will be used to start the NGINX reverse proxy and the Porter service containers. - -#. There is no need to install ``nucypher-porter`` after acquiring the codebase since Docker will be used. - -#. Set the required environment variables: - - * Web3 Provider URI environment variable + $ nucypher-porter run --help - .. code:: bash - $ export WEB3_PROVIDER_URI= - - .. note:: - - Local ipc is not supported when running via Docker. - - - * Network Name environment variable - - .. code:: bash - - $ export NUCYPHER_NETWORK= - - * The reverse proxy is set up to run over HTTPS by default, and therefore requires a TLS directory containing - the TLS key and certificate for the reverse proxy. The directory is expected to contain two files: - - * ``porter.local.key`` - the TLS key - * ``porter.local.crt`` - the TLS certificate - - Set the TLS directory environment variable - - .. code:: bash - - $ export TLS_DIR= - - * *(Optional)* The CORS configuration is set in the ``nucypher-porter/deploy/docker/nginx/porter.local_location`` file. - - .. important:: - - By default, CORS for the reverse proxy is configured to allow all origins - -#. *(Optional)* Build the docker images: - - .. code:: bash - - $ docker-compose -f deploy/docker/nginx/docker-compose.yml build - -#. Run the NGINX reverse proxy and Porter service - - .. code:: bash - - $ docker-compose -f deploy/docker/nginx/docker-compose.yml up -d - -#. The NGINX reverse proxy will be publicly accessible via the default HTTPS port 443, and will route requests to the - internal Porter service. - -#. View Porter service logs +* Run Porter service via HTTP +.. code:: console - .. code:: bash + $ nucypher-porter run --eth-endpoint --polygon-endpoint --domain - $ docker-compose -f deploy/docker/nginx/docker-compose.yml logs -f nginx-porter -#. Stop Porter service and NGINX reverse proxy + ______ + (_____ \ _ + _____) )__ ____| |_ ____ ____ + | ____/ _ \ / ___) _)/ _ )/ ___) + | | | |_| | | | |_( (/ /| | + |_| \___/|_| \___)____)_| - .. code:: bash + the Pipe for TACo Application operations - $ docker-compose -f deploy/docker/nginx/docker-compose.yml down + TACo Domain: + ETH Endpoint URI: ... + Polygon Endpoint URI: ... + Running Porter Web Controller at http://127.0.0.1:9155 API @@ -387,26 +227,118 @@ More examples shown below. and it is dependent on the tool being used. +POST /decrypt +***************** +Use TACo nodes to decrypt data that was encrypted with associated conditions. + +Parameters +^^^^^^^^^^ ++-----------------------------------+----------------------+------------------------------------------------+ +| **Parameter** | **Type** | **Description** | ++===================================+======================+================================================+ +| ``threshold`` | Integer | | Threshold of nodes needed to respond | +| | | | successfully. | ++-----------------------------------+----------------------+------------------------------------------------+ +| ``encrypted_decryption_requests`` | Dict[String, String] | | Base64 encoded encrypted decryption requests | +| | | | keyed by node staking provider address. | ++-----------------------------------+----------------------+------------------------------------------------+ +| ``timeout`` | *(Optional)* int | | The timeout for the operation. Default value | +| | | | is 15s unless the Porter instance is | +| | | | configured to modify the default setting via | +| | | | the ``PORTER_MAX_DECRYPTION_TIMEOUT`` env | +| | | | variable on startup. Timeouts provided that | +| | | | are greater than this max default value are | +| | | | capped at the default value | ++-----------------------------------+----------------------+------------------------------------------------+ + + +Returns +^^^^^^^ +The result of the decryption operations performed: + + * ``decryption_results`` - The list of results from the decryption operations performed; contains a mapping of + Node staking provider address/decryption fragment pairs. The decryption fragments are base64 encoded. + + +Example Request +^^^^^^^^^^^^^^^ +.. code:: bash + + curl -X POST /decrypt \ + -H "Content-Type: application/json" \ + -d '{"threshold":5, + "encrypted_decryption_requests":{ + "0x04aDC6465Efa53BBD096B2aD2E3dD7DB6EA9c3F4":"RVRScQACAACTAMQgwhlSChp/epwy4evVaXSy1MTn0IjTeH+KlEqHr18tOm/FAfMbyHGdQtnqB66KWQfoEDjs/zxIqIQYM/jFDldmfNIv1RmHxGYJrcXRfF22ewFeTlPEhWmO7T6m15o1c7uas81pzsekF7/WqtTHHuStL7EuQU8Y5VKryUAx86eg6He5lQTZhQx85ZSxiCbDyHd1m8LxT31rM0Mgk7ZDOnYwK/JyNMMRo1hC9/Cl3btEsn/YKnYL4owiUmnXUM2uh+oPJ2h+C/De0KG6cmLlGu9uJOzbAbOrBjB4hoY5p4W70ecqJU8zAvs3deEbuHaa9FE7CUdsq56ugf/vtA+bzdQxIalBCJQLaqSYB/OQl2SaN+WQ/Bp4sToqUWwsDTs9dm7qyFkffqynIyrjhs+fmYI6L3LNa3bXwrKnovR4pv8QTJ67vlyO6C4/jCSjZ2CEP6vv5dlwvyE+2Tots0nJzEoPK2baz2pi2a171f612ethXEApY8OhJCNpMSlEWAATZ741gnYl7mMvP3xwgevu0i+3YD5rTkEJlVh5rQrflIRqRmw4f6qdftcFVDcMipgGoess8qHmmNw7qkKVlQQqv2tzzUtHlenjQ/mtqwE3X1PdsoYnpR/ywUYr+8nGZ7xO6g9REz74dufuccm1+HK67zS58vBy4r1vx/SHj2h9ShR9y+Rakmn35MV1frpUSDZL3w7K+PeifKgF", + "0x18EC3906D608b2b0B0f240C84AdC6d28671a48ce":"RVRScQACAACTAMQgwhlSChp/epwy4evVaXSy1MTn0IjTeH+KlEqHr18tOm/FAfNu9h6h+nBMsSqFXAbjIzGrD5f2rmKN2pDqD6p+I7iJEu2+qi6Is5EveAVJsW/kkgPPSc5V7OzJUnB2ycOnRzs+Gl+vlzihwdDm64Lo5TMQuZAnW6l8O7lgcd7PO/8q4GfeH73LGaQUuhpDjkjZ1Jga7mASps3o+FxIsbMbUjHBK7FydJO0tvc9sS8tDFT5xPrLvKtr8Et+l3I2bguyfFwCuLw74yaV7Cqxx6x0pzhUeZ4BaAIgGyf1R7l2EPxeLaF+6F3yyUK1wy35BE6YfdPYh4J3Y4Tu3ccgIOORJrOQwypVrRgLy7nLzlJJuv5T+Ej7ZyFqOSevnUlccMTEHCvgRAWcq+tBO9hgTO7yNo25EoX/EUJJwZ+0S6g/kaPNkVT6jmpwdmKWULSqZ/2MRAuE4qvBhLFBbondCgnZHVYndwcefjB8OfLPeRkc5YRFkHQcxqySb1uPaoM0++3l9/cmXxotxv9TwksVoEHwWgEHGTEgcdlz9QEgryn9pISTPYGWv0/+A7tPXV88Z5owTYQprNzxgtCpyOiFhhA+H4NBZ2rSX01cNKjPzqGbB3LKWgNdbSp7HaG7BEkVSAMcCiX9xWMcfgnhCi8f3lbhGTIXJ4WvD81yIUdlPlBFsVAaLBisNUPauMphiwbCBnTRjTVaawBr", + "0xABbacaDabA000000000000000000000000000009":"RVRScQACAACTAMQgwhlSChp/epwy4evVaXSy1MTn0IjTeH+KlEqHr18tOm/FAfPFriRyxW2nCZaPCfU6je/sRhv1WOKi9NOUi46s4EKPxGpkqLMk6yLrn1+xhhlfQZ7rOZ/PmWTdtnMDPfRmRwOp976wVZm8xuo76DKcL5vI/m+x6KmOtQFQL2uNu0iCS0reZ9gP87/EvzP3G1aqgIGQQrQf5jAcdfXFCnseMDcZX/Do7ElRqBVoXxYT+jsyEcPTglfU2oWrQGuJs5kO5Lm3PJUI1zLWbmSrloGPELHzPHtGQ8t3XcToDrEiSaXXRU698ErCXE9TPVctuk26AYOTikAylfEsjkocmJn8w1op0C2ccDbS7zg889BLM18f17cfIU2CEiANkoJA7Bth/beDkM00icnaZ0ZhOcqaTV48+T2pEEW/FhNSkBG1LECIxUBiJLJJYj5FpO2S1O2MHlNEVFF2BQmmw24qzE2REpB1dSoRZU4HBBqeS4IDbekGoBZ3IbGCK1xoBQwEnAQPN0Eyi8vAqYNRmSRj77n+OPJybwdUpd9Yvh/UC0nhNz7GgaZTwtN1/7kn4IY8/8Q37lyhihOdaNJATaFpJEqqz4pRoHsI3FwCTbK7N4KQTXXnR8o7x28GxfC7sX+Ff8Ybvii1nRBm9N54k+Y9HM7ihGxpnEv2hs3GAk55XjuIqJ1DJlJVBAIJioABFG6e2q8ALqHWnxOO", + "0xAbbAcAdaBA000000000000000000000000000007":"RVRScQACAACTAMQgwhlSChp/epwy4evVaXSy1MTn0IjTeH+KlEqHr18tOm/FAfPr1njsR8BdPtJTcPxFUKatB5/PP0UgUKRY/hOKm0Btl/PKvlbMYQYeL2+4NJCRNev+RfZN1R8SVeJbLgZC2v8edwO0YqUWVqu4VU73VqcCn242Z/7zvwHIc7cFlLIIiZ8jboQonT49XUpvjQCRv2KlRRoR/dAs5gAVnxd/4TZNLWFh+HwQEptbh3rADbZlxptAT2rk4Lxtl4oLgSFCzvRRhptusdLEyI1a8Qn55AoeDtaARI5c7PU3TBdhK6zLJym850IM3cAAr+H1ChadRT3ntrji4ppO6umUQTpXVBSm0u4O37tWshGX/37ER+urs5D7JAdOS7bJT8o37eHZMWIeUFtxsakhowl4jUtaVayZKD64+RDDYC4UtUQVWpjhbc8x0hsLhKqqIo8EliyA97EQoLskRh4KK3aOmlAfNckQhuu8H6580vzAxLt5uVQtiVr3UbJpMqU3kj1GDe1ecTYl3NSvEhhy9M70MRttYu0JULvmv28spAZuIi05qtNTagSy32UvPMtob95THs7JOVN4BxlgqBEQTQF5Q4hKjfm1GTa01S86ZDXAO7ZpBHOHbzvOVgD/RLE6vQ/9UPvXClHI3DU0tbbpW080G04KvtN6SxMne0AmtO3Me9N3/UyGacKm1IrRR79mJb50novbESghDJET", + "0xB5Fa888B41F1A252757118F427Be483E1e0d611e":"RVRScQACAACTAMQgwhlSChp/epwy4evVaXSy1MTn0IjTeH+KlEqHr18tOm/FAfPUP8mf6pA6n4PW589wNPomu/GF30cnjrgelkReVE3HtIe+AaPoIG4xFS/JCKLORjwREMbaP901RIef8fAQIFRaX8dFrwYhSfG4BgG68gl4zFwQIJys2fiqmYd2qCXtcjulnj0mlCQ/xA94lTQ0g+TgB1s1pnbn6WYmNqFUsKfpGp7g+/cRMC/zpOG4AD+Ozyr9IN5XSAE3bO3G3Ui8pGA+fSsUGA+EQx/ab/IcwGbjw8U0eUIwGWLokCu5kpJ1UzN9fr/+0tKZZsX7fONV/dXrj5Fy56Lqbf1HrWv1RIpKNYUSKXn4QfKqv9OS6yOUW38zv0h2NFOnFQlGmgjIM4KD/6Ytvp3Ne5B+SDRIIRgN8kOT88fXs3CI9I0P/pRJanrCJ2KxoVnySHKX1BTxmLPh/NLQK0xCsUw7h5lawZmsJX7G8JdD1qJKUgQ2m9o5ZMWV9kc9kQmKg1pS2LV79g/VNtFVj7ad/P8XSANUvarGpXyEctojTUsXiD2QzTvZE8hrwmoFnVMHvp2RDg9aX36MZK7K9vhP/W55TPsYhZ+1I3/B9d47JYMGo6WseSN8oIJnlqk4LUp1vnYiIRE5yoUG1quK+XwEcgqWePAfRqF9W19f8AUZth4+E47t0GLUVA38GD8RdxhZu8bGzhffXLwQ3J/G", + "0xaBBACADABA000000000000000000000000000005":"RVRScQACAACTAMQgwhlSChp/epwy4evVaXSy1MTn0IjTeH+KlEqHr18tOm/FAfOyePokgnuuvse3eOxLCuJ6QBq6r799898Ib6mLhZ7RBHRtrdErimC2fXDIiVQ5UfxhLUpCMx20fBgGvzi9SZiKz0K06xrX1WvEVb9shK3PSh20mLG/PIwI108aI/jBJJsO5/rnCk0gUTarWY3+PQHnGbLagaaxJvdXtJ/8/C/RiL8ieNGOn19g8osdKTVxMNy4zZ4lMXW+C/VMBMQWPxR2n5VuMoFUrHidnHADxYMfv1/mdwHOK6AqNphX+hfmx0PxMt6kMipdOWHC15LqCy+wtlm1eMu5CuakC/DZqAPXX6fSxApIK5DD3zjWaRRFThDdwfZy3Q0I58l9D+NSUU59n1hgxO04e53BOU+AJ7X71iLEhgsdt36M7u4cm9s0l+r+F/CWlsf3UwBjJS0xGgOIfzHlpmsqHTADmphBx3eP6CZbIRBZ/JBDhCRyqxlfEonuYXg/mVXeBjunglu6roqGJ1p/AyPSMAlWnGcTNsoC07nR5hdNWL/fraZZcTAEOg043ZEZzKvqIZhZyvqCZ1dKtaChU8C9+ax9+UnI7SWS8dI1Lc2TTBVk3XLLqtMXZtbCKausve6sHS5Xm9t/YV5pY0WPfvOeFZ03NPQ0PlTv1JRqVj9VOCMxL7W43eEXOjj1cusd08XzBrWlhEVNZC5G8lxI", + "0xaBBAcadabA000000000000000000000000000008":"RVRScQACAACTAMQgwhlSChp/epwy4evVaXSy1MTn0IjTeH+KlEqHr18tOm/FAfPgCj9zBXVXdvc7ULeIUPEdxuTTt0dUpUajPVhFLyks20VAkv92h96ZRmVDLRdP41stCKbQwfmDxZphJSNl58A/tCPBwcr2xMjjDmDwxTmKtshdM1XX/t7PE2eFInMHASoSwYv6PMhFcFvQ7mKS+nQQldafGT/9i4cu4mGoOsY2KZhNd53NU2k6bQrFuinQP5Wr7EPw8l+pTtBPzUXxVH7iRBwVj4UVnzUMUxv4yFFnyPxJ95GXkgkPE3e+XMs+LpCc1i/iqgOi8Rnm3YmF8YYgT7sGM+5BqhFncYLoqz5JVVkwO0Ep6U3cVI6iidMFxWhAH1NiwUTGVwAiisaOHgy5jRS5BS/vqoWGNN7bmSbWtU7TBd8ahPGGybRejwofy8/1dUi8Vxu5hB9VhgLfIF4bXWwEIjUtRqgZRbE/q3wdyCnOmnz39Sf5QrSvS7haZ2ZK1WN94h28oCiHFG8PMdSA0TVCyBeJe2nx5WkKdOdaFfmozXx5A0xjlvTW+D5uqFnw8aAwWu1fIuY70Dabk9lOfARPOGa5QySMLtWLE47uH96BisHhHOXVNMUTmpwNbqqLyCgFhqpnRIbqAYIMdAhbD8XhhCEqWfNRIpZYbbPZu4eKWmLhLy7kKKy0/KZC2TVd9QP5f3n7pRjJE/Qu1X2iPoO5", + "0xaBbaCadaBA000000000000000000000000000006":"RVRScQACAACTAMQgwhlSChp/epwy4evVaXSy1MTn0IjTeH+KlEqHr18tOm/FAfOlQRtUlA1X52lcI5y6O+leZhH7BbIzawqMht+UBjjAYg9AdYGL8Az0kR5hwPzFFJ/qLYecUGZQm4Fbp4CIUoeJ/AsbPCUTw9VlceLlNGVxd+pe8Ej6hr76sCiiFpmo+mTvX3aKlj5WpJUiNEJCyZKTffBdK+kkQKLmb4xo4JPfmSHWr71KhYO5+L9Ctc4styA96fYopp31WHlcWlcYaNGAS8RCvsDK9GBvpxTad32se2+L0J2Zu9C0TjKnuRZ+mscGZxtgOkqH9p1fGchZFliwEzDHrcJhwS0tfqCPIwTveVgKIk/1uNlUAX81rkIR7vZCinIExQXfozUzqy1PotLntS1q4ZjKmOcI1GBbIEfcuB7ZvudeMf8+dqraEkgvjPR9oyUZ+YWZMYE0wlMVqVgwZFAGw7xFkRqbWUn6089LESJ55gqeskN+3PCq4yF6rdlfUrW2KC0KECV1nxmeZP+e9Wxze5wRu7LOgsoF3EKwcrRPtJi7xpSOCRQJFaDp+ZcNFYtSv78pxWaSClfjks5Tk20zbXXmjyPdPGvGdxBQfBxfY7ut5mRuKW4awY1mA+3KT0sJqgolIW4bDI5EP2Kvmvg6ynva5zLQhwiGQNCIi/9S4n51W+L0W8/6vkXeYehfcvRMtYpbtfxTDMhvHGzfJx+t" + }}' + + +Example Response +^^^^^^^^^^^^^^^^ +.. code:: + + Status: 200 OK + + +.. code:: json + + { + "result":{ + "decryption_results":{ + "encrypted_decryption_responses":{ + "0xaBbaCadaBA000000000000000000000000000006":"RVRScwACAACSAMUC0QOCuW22G1u9q8ultJf7GmknsSt3tgFbbDXH8wYzebij5wobdpUIQmO5AiEriFWAEzdZwYhdlEDdG8Av+gzVkZNYGmPdjUk0Q7C6VEJpMB0CXDZr0H3oqNnMOHzCAbwbmYimxw0Wb12xTtaPPh4GUNnTiSegI3Bp1Ug5F7LF97cBepi/WwxxX8yC2XiAGawwEtXV8/Ll4gEbhW1RK/pqq97qH1QQeXVL7MtryvgkhRKOOdjEJ2m/gaEQOlzt5ChM1BLOiR35tfVc+UABYB9jy/F5lMt84Ac31sAhJZzWGFfQV+JUgkJGN2isIUQukYgiHpCA1oQ99CJcve3mZSSpZLFdxrrpshNe+rPWVqZTs0C5Qh0cl98jvQZQumD567CscofLhKQJV4g4mkyFlv9eKNkqSEEcSx2bmTr8rGqEQFqIGcUJbCzPebgGXzHjrcH23l9jY0h53k1LY2IzYndOXqNv0Wf+cYMEPx4x1eDhkQucmypsGcAEjo4uFbXnFkk/kiHas+HtoommlAPWeyXmDfPEhVMPkU2P8lf7OuYnQpBrZF5d1nnIN9cXRWW2EHceiSmllRMkN4NnqWy5B/rJ5UudCDJaf3gbhEhV0VEzJAKRGbPE5kau2JyPSdPFLiYYIhRTy6Sw1XQVUe9v6sy1ykTmSav0TeO1NWph7SyZQGJotm5fPPSvSuFG5AoMc2zD8kPY2eBSNMncvCCu7L0pxyVPSMJyE80OEQEXA8W2kfSQKfbr8nLQf0D5H4nI7XuN2ecgpjWfglKlD8W8rlbdWQ2ydLQYSmeko8cXInOMHrOSckuWnpjw/92eWWnkXkiqTOhHtwNf39eDBbXCQGZDLZEPis9MP+yiuUaR88rftkRprNSXJW7cP3Q4FXvKI+xZuEOCWqiOuxokR6S2DRRt2neDNO8TP6HrjjAIrG+3LfvoH5j920DHn3SnhPRH3febMQw=", + "0x40896f32bD685E6F5C74A5b6ab4d8c7953cbFA53":"RVRScwACAACSAMUC0ec0FnIRxE4p3kjRVzmuEMWZKlk9wADuNeeW4mJoI5GiS7G0/dL8ZIlkLv2BiQXNJAuY3IZTZvkT1ppFRrBK8s65OjzBWvS+Mmarf9nj6qJovkS8szLsMV8qKSwF5KIrHC0RUYHqTSiAL0azkie5VRevY/F9QiG9yX4FGg2wzaHUEv0e14m8bbk/+a+tpQRFkgX3psjModOEoxHSqbEm9oRkVgySj0KEaXjwyPhbGhGDMjoEHuE/t3dw9/3ykKRPonDyG28SEJlTe9rDKbfxqqCxUjd3bgmyFym0APcPyh8EeA9mdGa5PWcuxe0HT0ff2aGV518MUBfk+DQ3l784B7mSRkSqpwgO0vEldeiujihUU5BGDskBL5qzuoJNzC0Giy7YcbMRIgAFsFZ9CjBN5xj3bftJewzrE4JRMMtdskhUJiEJ4ii3gwEmhR3qRnA8lLb8425JnI8cCsV6TwPy+kjYiHDw2BSQw6cm84wz99rqLCZ51CeWgLvs/nph/EISPpMhdA5Gju7F3HZF+Vlx64WIQPz+r/WGLhWaHcTKDTLajPVTFKFtWQodcIl84KjIvRVGFtbpx4PsZtLNdBotfQSX8KGCvZ9Sr58Ccq54A0u1Y6JWjC7B2uOowqd/xepXqNR0FFLHGIk5YYe0uNmX5uJA16yTJs/VNu5kqdWr0dvFXafmMk5M4JSioRk90ERRFhQXtUks4HR49sRCA18r7Tk4xANDC3ePO+XJ1CnH4v49076N4DckKIcf7V23wFW3veS1mwMWPauhlk+xndnyNENl1N+d6cx1hAy5G+AlK2s35RKWdafQ3+f049qk6zDwXiU7h+7CpQEXxP1iK/EZzZDVuSAjRvhqzUTtUR+sAheVNGgIUbjXmgeu/3o2kTcNhOaMS6PT9Z1ogSzDap8DDl9ihE6sSPYAnexdhrtSr9aPGixD9MX4YaQQ2ovW5+gvao0=", + "0xD27a0b270FBB5b090C5bBdD98e439EA992605436":"RVRScwACAACSAMUC0Y8NgrSrmQwHk4kjLqjEkyQg6A7OiGWDTuZH7U6LkApsw+cBJQTtI+TKJaWl1rOHGGfwoUEf7qJyBiNSRc/mGqMGX9C4Ufgbd+O7ld6P8zxbcFJKoirVyeXMZGz9jfMFsSBzjmSuZbtepPmcVcgOcouJaofNi6VfwwMJtjueMfM8M3f7W/cWZIPH+OXQFTw+tVrP1Tu0S1rU+SvHDLfnRf9cqhyEAZrhONdLUQMDOMzf1ksI3hsZV8LtDq0b1Ov3rshoqQzVgyeSUGP6l+GYTqdeS0fRhuGY071oDjKNssYQ/14JiyJsUEbolg6gG7onbPTjuoz0lLSTYUV+9rWdh2nTcj8gwk/ywKmSXA3s0449II5hZkKd6HH+5jTUvMP/ak/aCk6UWPTezV1a1jfhBnmDbxTxG9Ejjhiaa2iH1Uk6eGJ2t/r5N2e5nQxnIJyx6VYVS3FNMDOPT2DJaTpJxK0lP5bpLo2u/kxZNZALgahayb1TXKXVqe0XJMjLDehPeL75/dcNXCjwKMIet9HCjav8iOvsZoGkZPnd6oAIXq/O3GMEUzn3jgVyETOk03TjtnyoYDK9whP2C7Xa07+a5LNx4YofjFGdAE9zmqTI7Am9sttj5uCeFobEldYgv6mWFAWSCbnW+vYqAldGNRamH8ZUw/je1wmndFjBo0KPFNFypB7Nlygxu2luhgqkqttq5z1tq+HG9IRASh8VyoRdSlCFnmHtWavac4J7sWIfpBfIGXeTj96PXL1MmehTvPAukv/qQ2F304OHdeC/HUUT64ukfufqQtTeZ/m64kDC/pDOkXiAiy8hPnU87+fWKpl8kOTufRx7Qo2EHenjaJF+bOV76uhFmICyY7jTSkS8W6O78M2MQcSCPCqF1tcxz9I98zgUsh7hkHFWTE1AHB6eq+x5s32k2K5wdomzObUHSymhH5clhgibDilhULnSnTw8MYk=", + "0xAbbAcAdaBA000000000000000000000000000007":"RVRScwACAACSAMUC0b9T7D+3J8vVFlHo1bbeGyZnrh50uRri0h4oO9XkFC3fCveLQM9F5vS/4BBEh3bk5S8MRszX1DMfHcDuOzMFw36bA3pd87pELVsd7IYwKsqyNb5JuMDskdShT5tQEaardEs8Hbwv2xFQeZpTdQxhAzZL/cOBrOTuq9JfB1LwvMEgGf/uvBRup2UxhYuYunNUB4gEiHHlbI1TO5AURJq7R2PKNV4dmggv8X3kUdvvK3hz0IaIBvswoZhXSu3wCzVvM9wJrq6vuVEnhvh3TbcaS6kM1Q8n2cmjc13eiG/OmkAWiAbXz7wLewVTV9nHP7qZvpqoy/hJiOsl5pZ1wls42DuH5YUu1Mp2pAofSvxLTl1xR+1y4gUhOUsoX+vnjEvb5ZftK4/720btc+T9giQ8gptnJKR6QKLMZOAaU17Q2cVKRHd4kAdF90/afQc2yVmjjmiC6zNKUaJJIBDO1J63C7afBMXxyh0tQ1n92w3YrUC27so/dlCUfqe4PL6HjGzOa/Y5El7T4tM0P+wEbGs14XM+cbMl7Ub58mFtTXR0nlOfFHtEDG+QnywTAXxXCw3jR1PiVZ6PWKtNIZeKMvVO8fXI6YFRuYNoHhtA9ogft2qo3/YD/QeCegrPI9brqbhXGrbavyaKV1qqUwPCOKLmfDIwvcucr7pKGc9vgrhiQp8lltAqslu8pa1DBG0pducVAYReH9WwD+dJEjmEh5LHLm/4ddR9KVXxn1bpGTkpw9Zp5hhBADzs2XCZmhGmSrb/H53u9mBIXxvaH9tBJeNSo3TTcds6bvVnoN70qYwe72UZVunZh2ThwldZLNuQLlbbDC5xF695eL6GuNgmdYQqVPq77BSfCGEXvFKbtd3ecNYmqNtsf+Yo8014SYKw5qBGSB12szH0w8MEXu5cel+4PcDApi/z2TXhgSzH+DIcLdHlBRIY2D/sIw98wlOW6gt/3lw=", + "0xaBBAcadabA000000000000000000000000000008":"RVRScwACAACSAMUC0Qqm6cDZHHBJgK86+MehwqBFWz4guKcJMFhX/RjrpwH7HR0Z0iLTjLxevluC5PnyuqDJFysvLsliulKIDYlWi5ryFxpYP533QQtLfoaAUXd9ypm/yzlg4VkRHpr6cRTBYxjlLYCpUsTqPNOnbm1YWT/UnIBtzPAoHDkZLXYX+yKbuMjsgs66gPfOheMIZAjcLyNby9kSqWBYxejDm0IyqJmh5JxHSnsmpCpQcexV0300KQ01fPHjuxo5C29IK7NzlVW9gSQtCm7jL1lEitvlKIghpsA7lRWZ1atDFT9AqbFBaHH42knhdSaYD10NmW6eL27L0Is69ydaihZnlv70DezQKEVJsXVQltwkFovfbJVWBWvuURhiOHavnJ9mqJ610VGxPNMiACnhvWK3L6zsdO/CuEdh070QtCMUH4zin5TYI/dbc9Zy1yBTzUhAE0xHRLI4H4Rs9w6Vw1vzE+VndCa5Ey0WVD6Bx+/0/CGkSc3j9/lbsxRMDswMjWIa2J7RhP5/FzwiBWTz7WSsOq/IT71m2578uKSsxQxzdqFgrqCW6Pm/5OMigN/e/R1SkyH2u8gJG7gwzkTJqsUQl54Y/GRk3LS3Wco+dSIr/EnwW5EwDZ2P0ADkRcdDjQjub7Ao0Ut40p/m2noiJKhK2+0JO7c0aMsKP7+xNS5Hc3m1nGpcz2AvM7s0HWRX54U3brKSZ6P66NcoHHxeP60B87ephPeSfyAkK9+m7l7xpahmJy7bJAv5vkAJcYtOcJvNO6Pk3S83qzYjKyKKf8MLZSP2REp/mqs98iIw6C2cNJSZ822zN+ifPY3WQ0yWpweEU1CSMMfgepuQCVAxxC08k5Xfx8SV4Shw1ZgDcgcKVv5vJmb1Pcfoe4fkr8805IXEY1pd/UHOJYAEK1HygQH0o1QtgHQxrGr1lCbUE3nGQZYwQj15n+Yo3sbhyHsmUp+bP5looDg=" + }, + "errors":{ + } + } + }, + "version": "3.3.0" + } + +.. note:: + + Only a threshold of responses are returned if the request is successful. + + + GET /get_ursulas **************** -Sample available Ursulas for a policy as part of Alice's ``grant`` workflow. Returns a list of Ursulas -and their associated information that is used for the policy. +Sample available TACo nodes (Ursulas). Returns a list of TACo node staking provider +and associated information. Parameters ^^^^^^^^^^ -+----------------------------------+---------------+-----------------------------------------------+ -| **Parameter** | **Type** | **Description** | -+==================================+===============+===============================================+ -| ``quantity`` | Integer | Number of total Ursulas to return. | -+----------------------------------+---------------+-----------------------------------------------+ -| ``include_ursulas`` *(Optional)* | List[String] | | List of Ursula checksum addresses to | -| | | | give preference to. If any of these Ursulas | -| | | | are unavailable, they will not be included | -| | | | in result. | -+----------------------------------+---------------+-----------------------------------------------+ -| ``exclude_ursulas`` *(Optional)* | List[String] | | List of Ursula checksum addresses to not | -| | | | include in the result. | -+----------------------------------+---------------+-----------------------------------------------+ ++----------------------------------+------------------+------------------------------------------------+ +| **Parameter** | **Type** | **Description** | ++==================================+==================+================================================+ +| ``quantity`` | Integer | Number of total TACo nodes to return. | ++----------------------------------+------------------+------------------------------------------------+ +| ``include_ursulas`` *(Optional)* | List[String] | | List of Ursula checksum addresses to | +| | | | give preference to. If any of these Ursulas | +| | | | are unavailable, they will not be included | +| | | | in result. | ++----------------------------------+------------------+------------------------------------------------+ +| ``exclude_ursulas`` *(Optional)* | List[String] | | List of Ursula checksum addresses to not | +| | | | include in the result. | ++----------------------------------+------------------+------------------------------------------------+ +| ``timeout`` | *(Optional)* int | | The timeout for the operation. Default value | +| | | | is 15s unless the Porter instance is | +| | | | configured to modify the default setting via | +| | | | the ``PORTER_MAX_GET_URSULAS_TIMEOUT`` env | +| | | | variable on startup. Timeouts provided that | +| | | | are greater than this max default value are | +| | | | capped at the default value | ++----------------------------------+------------------+------------------------------------------------+ Returns @@ -473,16 +405,19 @@ Example Response } ] }, - "version": "1.0.0" + "version": "3.3.0" } +PRE +*** + POST /retrieve_cfrags -********************* -Get data re-encrypted by the network as part of Bob's ``retrieve`` workflow. +^^^^^^^^^^^^^^^^^^^^^ +Get data proxy re-encrypted by TACo nodes (Ursulas). Parameters -^^^^^^^^^^ +++++++++++ +-------------------------------------------+---------------+----------------------------------------+ | **Parameter** | **Type** | **Description** | +===========================================+===============+========================================+ @@ -504,7 +439,7 @@ Parameters +-------------------------------------------+---------------+----------------------------------------+ - * A single *retrieval kit* is an encapsulation of the information necessary to obtain cfrags from Ursulas. + * A single *retrieval kit* is an encapsulation of the information necessary to obtain cfrags from TACo nodes. It contains a capsule and the checksum addresses of the Ursulas from which the requester has already received cfrags, i.e. the Ursulas in the treasure map to skip. @@ -532,7 +467,7 @@ Parameters Returns -^^^^^^^ ++++++++ The result of the re-encryption operations performed: * ``retrieval_results`` - The list of results from the re-encryption operations performed; contains a mapping of @@ -541,7 +476,7 @@ The result of the re-encryption operations performed: *retrieval kit*, the corresponding list of cfrags could be empty or less than the expected threshold. Example Request -^^^^^^^^^^^^^^^ ++++++++++++++++ .. code:: bash curl -X POST /retrieve_cfrags \ @@ -555,7 +490,7 @@ Example Request Example Response -^^^^^^^^^^^^^^^^ +++++++++++++++++ .. code:: Status: 200 OK @@ -574,5 +509,5 @@ Example Response } ] }, - "version": "1.0.0" + "version": "3.3.0" } diff --git a/deploy/docker/docker-compose.yml b/deploy/docker/docker-compose.yml index 4ae49be..ac6edda 100644 --- a/deploy/docker/docker-compose.yml +++ b/deploy/docker/docker-compose.yml @@ -15,6 +15,6 @@ services: - .:/code - ~/.local/share/nucypher:/nucypher command: ["nucypher-porter", "run", - "--eth-provider", "${WEB3_PROVIDER_URI}", - "--network", "${NUCYPHER_NETWORK}", - "--allow-origins", "${PORTER_CORS_ALLOW_ORIGINS}"] # empty string if env var not defined which translates to CORS not enabled by default + "--eth-endpoint", "${ETH_WEB3_PROVIDER_URI}", + "--polygon-endpoint", "${POLY_WEB3_PROVIDER_URI}", + "--domain", "${TACO_DOMAIN}"] diff --git a/deploy/docker/nginx/Dockerfile b/deploy/docker/nginx/Dockerfile deleted file mode 100644 index f7bb6b1..0000000 --- a/deploy/docker/nginx/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM nginxproxy/nginx-proxy:alpine - -# Copy porter.local virtual host location configuration file -COPY ./deploy/docker/nginx/porter.local_location /etc/nginx/vhost.d/ diff --git a/deploy/docker/nginx/docker-compose.yml b/deploy/docker/nginx/docker-compose.yml deleted file mode 100644 index 418c3a0..0000000 --- a/deploy/docker/nginx/docker-compose.yml +++ /dev/null @@ -1,38 +0,0 @@ -version: '3' - -services: - - nginx-proxy: - restart: always - image: nginxproxy/nginx-proxy:alpine - build: - context: ../../.. - dockerfile: deploy/docker/nginx/Dockerfile - ports: - - "443:443" - volumes: - - /var/run/docker.sock:/tmp/docker.sock:ro - # because of the vhost name used below, the cert and key should be named "porter.local.crt" and "porter.local.key" respectively; - # otherwise a conf file needs to be specified that providers server configuration values including ssl_certificate and ssl_certificate_key - - "${TLS_DIR}:/etc/nginx/certs/" - - nginx-porter: - restart: on-failure - image: porter:latest - build: - context: ../../.. - dockerfile: deploy/docker/Dockerfile - expose: - # Default Porter port - - "9155" - volumes: - - .:/code - - ~/.local/share/nucypher:/nucypher - command: [ "nucypher-porter", "run", - "--eth-provider", "${WEB3_PROVIDER_URI}", - "--network", "${NUCYPHER_NETWORK}" ] - environment: - - VIRTUAL_HOST=porter.local - - VIRTUAL_PORT=9155 - depends_on: - - nginx-proxy diff --git a/deploy/docker/nginx/porter.local_location b/deploy/docker/nginx/porter.local_location deleted file mode 100644 index 8c4771b..0000000 --- a/deploy/docker/nginx/porter.local_location +++ /dev/null @@ -1,19 +0,0 @@ -# -# Allow CORS for any domain by default - modify if not desired -# -# https://enable-cors.org/server_nginx.html -# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin -# -if ($request_method ~* "(GET|POST)") { - add_header "Access-Control-Allow-Origin" *; -} - -# Preflighted requests -if ($request_method = 'OPTIONS' ) { - add_header "Access-Control-Allow-Origin" *; - add_header "Access-Control-Allow-Methods" "GET, POST, OPTIONS, HEAD"; - # Tell client that this pre-flight info is valid for 20 days - add_header 'Access-Control-Max-Age' 1728000; - add_header "Access-Control-Allow-Headers" "Authorization, Origin, X-Requested-With, Content-Type, Accept"; - return 204; -} diff --git a/dev-requirements.txt b/dev-requirements.txt index 3ce8290..d7de2a6 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -1,135 +1,174 @@ -i https://pypi.python.org/simple -aiohttp==3.8.1; python_version >= '3.6' +aiohttp==3.8.2; python_version >= '3.6' aiosignal==1.3.1; python_version >= '3.7' +ape-solidity==0.6.9 appdirs==1.4.4 -async-timeout==4.0.2; python_version >= '3.6' -attrs==22.1.0; python_version >= '3.5' -autobahn==22.7.1; python_version >= '3.7' +appnope==0.1.3; sys_platform == 'darwin' +asttokens==2.4.0 +async-timeout==4.0.3; python_version >= '3.7' +attrs==23.1.0; python_version >= '3.7' +autobahn==23.6.2; python_version >= '3.9' automat==22.10.0 -base58==2.1.1; python_version >= '3.5' -bitarray==2.6.0 +backcall==0.2.0 +base58==1.0.3 +bitarray==2.8.2 +blinker==1.6.3; python_version >= '3.7' bytestring-splitter==2.4.1 cached-property==1.5.2 -certifi==2022.12.7; python_version >= '3.6' -cffi==1.15.1 -cfgv==3.3.1 -charset-normalizer==2.1.1; python_version >= '3.6' -click==8.1.3; python_version >= '3.7' +certifi==2023.7.22; python_version >= '3.6' +cffi==1.16.0; python_version >= '3.8' +cfgv==3.4.0; python_version >= '3.8' +charset-normalizer==2.1.1; python_full_version >= '3.6.0' +click==8.1.7; python_version >= '3.7' colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' +commonmark==0.9.1 constant-sorrow==0.1.0a9; python_version >= '3' constantly==15.1.0 -coverage[toml]==6.5.0 -cryptography==38.0.4; python_version >= '3.6' -cytoolz==0.12.0; implementation_name == 'cpython' -dateparser==1.1.4; python_version >= '3.7' +coverage[toml]==6.5.0; python_version >= '3.7' +cryptography==41.0.5; python_version >= '3.7' +cytoolz==0.12.2; implementation_name == 'cpython' +dataclassy==0.11.1 +dateparser==1.1.8; python_version >= '3.7' decorator==5.1.1 -distlib==0.3.6 -eip712-structs==1.1.0 -eth-abi==3.0.1; python_version >= '3.7' and python_version < '4' -eth-account==0.7.0; python_version >= '3.6' and python_version < '4' -eth-bloom==1.0.4; python_version >= '3.6' and python_version < '4' -eth-hash[pycryptodome]==0.3.3; python_version >= '3.5' and python_version < '4' -eth-keyfile==0.6.0 +deprecated==1.2.14 +distlib==0.3.7 +eip712==0.2.1 +eth-abi==4.2.1; python_version < '4' and python_full_version >= '3.7.2' +eth-account==0.8.0; python_version >= '3.6' and python_version < '4' +eth-ape==0.6.19 +eth-bloom==2.0.0; python_version >= '3.7' and python_version < '4' +eth-hash[pycryptodome]==0.5.2; python_version >= '3.7' and python_version < '4' +eth-keyfile==0.6.1 eth-keys==0.4.0 eth-rlp==0.3.0; python_version >= '3.7' and python_version < '4' -eth-tester==0.8.0b1; python_full_version >= '3.6.8' and python_version < '4' -eth-typing==3.2.0; python_version >= '3.6' and python_version < '4' -eth-utils==2.1.0; python_version >= '3.7' and python_version < '4' -exceptiongroup==1.0.4 -filelock==3.8.0 -flask==2.2.2; python_version >= '3.7' -frozenlist==1.3.3; python_version >= '3.7' --e git+https://github.com/nucypher/nucypher.git@9ed0186060fa59da827b2e49f70530ce65745054#egg=nucypher -greenlet==2.0.1 +eth-tester==0.9.1b1; python_version < '4' and python_full_version >= '3.6.8' +eth-typing==3.5.1; python_version < '4' and python_full_version >= '3.7.2' +eth-utils==2.3.0; python_version >= '3.7' and python_version < '4' +ethpm-types==0.5.8 +evm-trace==0.1.0a25 +executing==2.0.0 +filelock==3.12.4 +flask==3.0.0; python_version >= '3.8' +frozenlist==1.4.0; python_version >= '3.8' +greenlet==3.0.0 hendrix==4.0.0 -hexbytes==0.3.0; python_version >= '3.7' and python_version < '4' -humanize==4.4.0; python_version >= '3.7' +hexbytes==0.3.1; python_version >= '3.7' and python_version < '4' +humanize==4.8.0; python_version >= '3.8' hyperlink==21.0.0 -hypothesis==6.58.1 -identify==2.5.9 +hypothesis==6.88.1 +identify==2.5.30; python_version >= '3.8' idna==3.4; python_version >= '3.5' -importlib-metadata==5.1.0; python_version < '3.10' +ijson==3.2.3 +importlib-metadata==6.8.0 incremental==22.10.0 -iniconfig==1.1.1 -ipfshttpclient==0.8.0a2; python_full_version >= '3.6.2' and python_full_version not in '3.7.0, 3.7.1' +iniconfig==2.0.0; python_version >= '3.7' +ipython==8.16.1 itsdangerous==2.1.2; python_version >= '3.7' -jinja2==3.0.3; python_version >= '3.6' -jsonschema==4.17.1; python_version >= '3.7' -lru-dict==1.1.8 +jedi==0.19.1 +jinja2==3.1.2; python_version >= '3.7' +jsonschema==4.19.1; python_version >= '3.8' +jsonschema-specifications==2023.7.1; python_version >= '3.8' +lazyasd==0.1.4 +lru-dict==1.2.0 mako==1.2.4; python_version >= '3.7' -markupsafe==2.1.1; python_version >= '3.7' -marshmallow==3.19.0; python_version >= '3.7' +markupsafe==2.1.3; python_version >= '3.7' +marshmallow==3.20.1; python_version >= '3.8' +matplotlib-inline==0.1.6 maya==0.6.1 mnemonic==0.20; python_version >= '3.5' +morphys==1.0 +msgpack==1.0.7; python_version >= '3.8' msgpack-python==0.5.6 -msgpack==1.0.4 -multiaddr==0.0.9; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -multidict==6.0.2; python_version >= '3.7' -mypy-extensions==0.4.3 -mypy==0.991 -netaddr==0.8.0 -nodeenv==1.7.0 -nucypher-core==0.4.1 -packaging==21.3; python_version >= '3.6' -parsimonious==0.8.1 -pendulum==2.1.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -platformdirs==2.5.4 -pluggy==1.0.0 -pre-commit==2.20.0 -prometheus-client==0.15.0 -protobuf==3.20.1; python_version >= '3.7' +msgspec==0.18.4 +multidict==5.2.0; python_version >= '3.6' +mypy-extensions==1.0.0; python_version >= '3.5' +nodeenv==1.8.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' +nucypher@ git+https://github.com/nucypher/nucypher.git@4b029f707c021da8e87f5a753c9eadd86dbe4b30 +nucypher-core==0.13.0 +numpy==1.26.1 +packaging==23.2; python_version >= '3.7' +pandas==1.5.3 +parsimonious==0.9.0 +parso==0.8.3 +pendulum==3.0.0b1; python_version >= '3.8' +pexpect==4.8.0 +pickleshare==0.7.5 +platformdirs==3.11.0 +pluggy==1.3.0; python_version >= '3.8' +pre-commit==2.12.1; python_full_version >= '3.6.1' +prometheus-client==0.19.0; python_version >= '3.8' +prompt-toolkit==3.0.39 +protobuf==4.25.0rc2; python_version >= '3.8' +ptyprocess==0.7.0 +pure-eval==0.2.2 +py==1.11.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +py-cid==0.3.0 py-ecc==6.0.0; python_version >= '3.6' and python_version < '4' -py-evm==0.6.1a1 -py-solc-x==0.10.1 -py==1.11.0 -pyasn1-modules==0.2.8 -pyasn1==0.4.8 +py-evm==0.7.0a4 +py-geth==3.13.0 +py-multibase==1.0.3 +py-multicodec==0.2.1 +py-multihash==0.2.3 +py-solc-x==1.1.1 +pyasn1==0.5.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' +pyasn1-modules==0.3.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' pychalk==2.0.1 pycparser==2.21 -pycryptodome==3.16.0 +pycryptodome==3.19.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +pydantic==1.10.13 pyethash==0.1.27 -pyflakes==3.0.1 +pygithub==1.59.1 +pygments==2.16.1 +pyjwt[crypto]==2.8.0 pynacl==1.5.0; python_version >= '3.6' -pyopenssl==22.1.0; python_version >= '3.6' -pyparsing==3.0.9; python_full_version >= '3.6.8' -pyrsistent==0.19.2; python_version >= '3.7' -pysha3==1.0.2 -pytest-cov==4.0.0 -pytest-mock==3.10.0 -pytest-timeout==2.1.0 +pyopenssl==23.2.0; python_version >= '3.6' +pytest==6.2.5; python_version >= '3.6' +pytest-cov==4.1.0; python_version >= '3.7' +pytest-mock==3.12.0; python_version >= '3.8' +pytest-timeout==2.2.0 pytest-twisted==1.14.0 -pytest==6.2.5 -python-dateutil==2.8.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2' -pytz-deprecation-shim==0.1.0.post0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' -pytz==2022.6 -pytzdata==2020.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -pyyaml==6.0 -regex==2022.10.31; python_version >= '3.6' -requests==2.28.1; python_version >= '3.7' and python_version < '4' +python-baseconv==1.2.2 +python-dateutil==2.8.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +pytz==2023.3.post1 +pyunormalize==15.0.0; python_version >= '3.6' +pyyaml==6.0.1; python_version >= '3.6' +referencing==0.30.2; python_version >= '3.8' +regex==2023.10.3; python_version >= '3.7' +requests==2.31.0; python_version >= '3.7' +rich==12.6.0 rlp==3.0.0 +rpds-py==0.10.6; python_version >= '3.8' +safe-pysha3==1.0.4 semantic-version==2.10.0; python_version >= '2.7' -sentry-sdk==1.12.1 -service-identity==21.1.0 -six==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2' +sentry-sdk==1.39.0 +service-identity==23.1.0; python_version >= '3.8' +setuptools==68.2.2; python_version >= '3.8' +six==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' snaptime==0.2.4 sortedcontainers==2.4.0 +sqlalchemy==2.0.22 +stack-data==0.6.3 tabulate==0.9.0; python_version >= '3.7' -toml==0.10.2 -tomli==2.0.1 +time-machine==2.13.0; implementation_name != 'pypy' +toml==0.10.2; python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2' toolz==0.12.0; python_version >= '3.5' -trie==2.0.2; python_version >= '3.6' and python_version < '4' -twisted==22.10.0; python_full_version >= '3.7.1' -txaio==22.2.1; python_version >= '3.6' -typing-extensions==4.4.0; python_version >= '3.7' -tzdata==2022.6; python_version >= '3.6' -tzlocal==4.2; python_version >= '3.6' -urllib3==1.26.13; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' +tqdm==4.66.1 +traitlets==5.11.2 +trie==2.1.1; python_version >= '3.7' and python_version < '4' +twisted==23.8.0; python_full_version >= '3.7.1' +txaio==23.1.1; python_version >= '3.7' +typing-extensions==4.8.0; python_version >= '3.8' +tzdata==2023.3; python_version >= '2' +tzlocal==5.2; python_version >= '3.8' +urllib3==2.0.7; python_version >= '3.7' varint==1.0.2 -virtualenv==20.17.0 -watchdog==2.1.9; python_version >= '3.6' -web3==6.0.0b6; python_full_version >= '3.7.2' -websockets==10.4; python_version >= '3.7' -werkzeug==2.2.2; python_version >= '3.7' -yarl==1.8.1; python_version >= '3.7' -zipp==3.11.0; python_version >= '3.7' -zope.interface==5.5.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +virtualenv==20.24.6; python_version >= '3.7' +watchdog==3.0.0; python_version >= '3.7' +wcwidth==0.2.8 +web3==6.11.1; python_full_version >= '3.7.2' +websockets==12.0; python_version >= '3.8' +werkzeug==3.0.1; python_version >= '3.8' +wrapt==1.16.0rc1 +yarl==1.9.2; python_version >= '3.7' +zipp==3.17.0 +zope-interface==6.1; python_version >= '3.7' diff --git a/porter/__about__.py b/porter/__about__.py index 95149b8..0fa0282 100644 --- a/porter/__about__.py +++ b/porter/__about__.py @@ -12,9 +12,9 @@ __url__ = "https://github.com/nucypher/nucypher-porter" -__summary__ = 'Pipe for PRE on Threshold Network' +__summary__ = "Pipe for TACo on Threshold Network" -__version__ = "1.0.0" +__version__ = "3.3.0" __author__ = "NuCypher" diff --git a/porter/__init__.py b/porter/__init__.py index d0698a1..91de018 100644 --- a/porter/__init__.py +++ b/porter/__init__.py @@ -1,5 +1,12 @@ from porter.__about__ import ( - __author__, __license__, __summary__, __title__, __version__, __copyright__, __email__, __url__ + __author__, + __copyright__, + __email__, + __license__, + __summary__, + __title__, + __url__, + __version__, ) __all__ = [ diff --git a/porter/cli/help.py b/porter/cli/help.py index 4358e50..6af6e9e 100644 --- a/porter/cli/help.py +++ b/porter/cli/help.py @@ -1,6 +1,6 @@ import click +from nucypher.config.constants import DEFAULT_CONFIG_ROOT, USER_LOG_DIR -from nucypher.config.constants import USER_LOG_DIR, DEFAULT_CONFIG_ROOT from porter.main import BANNER diff --git a/porter/cli/main.py b/porter/cli/main.py index a1ea396..730ef95 100644 --- a/porter/cli/main.py +++ b/porter/cli/main.py @@ -1,24 +1,20 @@ import click -from nucypher.blockchain.eth.networks import NetworksInventory +from nucypher.blockchain.eth import domains from nucypher.characters.lawful import Ursula from nucypher.cli.config import group_general_config from nucypher.cli.options import ( - option_network, - option_eth_provider_uri, - option_teacher_uri, + option_domain, + option_eth_endpoint, + option_min_stake, option_registry_filepath, - option_min_stake + option_teacher_uri, ) from nucypher.cli.types import NETWORK_PORT -from nucypher.cli.utils import setup_emitter, get_registry -from nucypher.config.constants import TEMPORARY_DOMAIN +from nucypher.cli.utils import get_registry, setup_emitter -from porter.cli.help import echo_version, echo_config_root_path, echo_logging_root_path -from porter.cli.literature import ( - PORTER_CORS_ALLOWED_ORIGINS, - PORTER_RUN_MESSAGE -) -from porter.main import Porter, BANNER +from porter.cli.help import echo_config_root_path, echo_logging_root_path, echo_version +from porter.cli.literature import PORTER_CORS_ALLOWED_ORIGINS, PORTER_RUN_MESSAGE +from porter.main import BANNER, Porter @click.group() @@ -34,52 +30,80 @@ def porter_cli(): @porter_cli.command() @group_general_config -@option_network(default=NetworksInventory.DEFAULT, validate=True, required=False) -@option_eth_provider_uri(required=False) +@option_domain(default=str(domains.DEFAULT_DOMAIN), validate=True, required=True) +@option_eth_endpoint(required=True) +@click.option( + "--polygon-endpoint", + "polygon_endpoint", + help="Connection URL for Polygon chain", + type=click.STRING, + required=True, +) @option_teacher_uri @option_registry_filepath @option_min_stake -@click.option('--http-port', help="Porter HTTP/HTTPS port for JSON endpoint", type=NETWORK_PORT, default=Porter.DEFAULT_PORT) -@click.option('--allow-origins', help="The CORS origin(s) comma-delimited list of strings/regexes for origins to allow - no origins allowed by default", type=click.STRING) -@click.option('--dry-run', '-x', help="Execute normally without actually starting Porter", is_flag=True) -@click.option('--eager', help="Start learning and scraping the network before starting up other services", is_flag=True, default=True) -def run(general_config, - network, - eth_provider_uri, - teacher_uri, - registry_filepath, - min_stake, - http_port, - allow_origins, - dry_run, - eager): +@click.option( + "--http-port", + help="Porter HTTP/HTTPS port for JSON endpoint", + type=NETWORK_PORT, + default=Porter.DEFAULT_PORT, +) +@click.option( + "--allow-origins", + help="The CORS origin(s) comma-delimited list of strings/regexes for origins to allow - no origins allowed by default", + type=click.STRING, +) +@click.option( + "--dry-run", + "-x", + help="Execute normally without actually starting Porter", + is_flag=True, +) +@click.option( + "--eager", + help="Start learning and scraping the domain before starting up other services", + is_flag=True, + default=True, +) +def run( + general_config, + domain, + eth_endpoint, + polygon_endpoint, + teacher_uri, + registry_filepath, + min_stake, + http_port, + allow_origins, + dry_run, + eager, +): """Start Porter's Web controller.""" emitter = setup_emitter(general_config, banner=BANNER) - # HTTP/HTTPS - if not eth_provider_uri: - raise click.BadOptionUsage(option_name='--eth-provider', - message=click.style("--eth-provider is required for decentralized porter.", fg="red")) - if not network: - # should never happen - network defaults to 'mainnet' if not specified - raise click.BadOptionUsage(option_name='--network', - message=click.style("--network is required for decentralized porter.", "red")) - - registry = get_registry(network=network, registry_filepath=registry_filepath) + domain = domains.get_domain(domain) + registry = get_registry(domain=domain, registry_filepath=registry_filepath) teacher = None if teacher_uri: - teacher = Ursula.from_teacher_uri(teacher_uri=teacher_uri, - min_stake=min_stake, - registry=registry) + teacher = Ursula.from_teacher_uri( + teacher_uri=teacher_uri, + min_stake=min_stake, + registry=registry, + eth_endpoint=eth_endpoint, + ) - PORTER = Porter(domain=network, - known_nodes={teacher} if teacher else None, - registry=registry, - start_learning_now=eager, - eth_provider_uri=eth_provider_uri) + PORTER = Porter( + domain=domain, + known_nodes={teacher} if teacher else None, + registry=registry, + start_learning_now=eager, + eth_endpoint=eth_endpoint, + polygon_endpoint=polygon_endpoint, + ) - emitter.message(f"Network: {PORTER.domain.capitalize()}", color='green') - emitter.message(f"ETH Provider URI: {eth_provider_uri}", color='green') + emitter.message(f"TACo Domain: {str(PORTER.domain).capitalize()}", color="green") + emitter.message(f"ETH Endpoint URI: {eth_endpoint}", color="green") + emitter.message(f"Polygon Endpoint URI: {polygon_endpoint}", color="green") # firm up falsy status (i.e. change specified empty string to None) allow_origins = allow_origins if allow_origins else None @@ -89,8 +113,9 @@ def run(general_config, allow_origins_list = allow_origins.split(",") # split into list of origins to allow emitter.message(PORTER_CORS_ALLOWED_ORIGINS.format(allow_origins=allow_origins_list), color='green') - controller = PORTER.make_web_controller(crash_on_error=False, - cors_allow_origins_list=allow_origins_list) + controller = PORTER.make_web_controller( + crash_on_error=False, cors_allow_origins_list=allow_origins_list + ) message = PORTER_RUN_MESSAGE.format(http_port=http_port) emitter.message(message, color='green', bold=True) return controller.start(port=http_port, diff --git a/porter/cli/types.py b/porter/cli/types.py index 288d02e..f8a8148 100644 --- a/porter/cli/types.py +++ b/porter/cli/types.py @@ -8,7 +8,7 @@ class ChecksumAddress(click.ParamType): def convert(self, value, param, ctx): try: value = to_checksum_address(value=value) - except ValueError as e: + except ValueError: self.fail("Invalid ethereum address") else: return value diff --git a/porter/controllers.py b/porter/controllers.py index fc9085b..8c62cc8 100644 --- a/porter/controllers.py +++ b/porter/controllers.py @@ -9,12 +9,13 @@ from flask import Flask, Response from hendrix.deploy.base import HendrixDeploy from hendrix.deploy.tls import HendrixDeployTLS - from nucypher.config.constants import MAX_UPLOAD_CONTENT_LENGTH from nucypher.network.resources import get_static_resources from nucypher.utilities.concurrency import WorkerPoolException from nucypher.utilities.emitters import StdoutEmitter -from nucypher.utilities.logging import Logger, GlobalLoggerSettings +from nucypher.utilities.logging import GlobalLoggerSettings, Logger + +from porter import interfaces from porter.emitters import WebEmitter @@ -273,10 +274,7 @@ class PorterCLIController(CLIController): _emitter_class = StdoutEmitter - def __init__(self, - interface: 'PorterInterface', - *args, - **kwargs): + def __init__(self, interface: "interfaces.PorterInterface", *args, **kwargs): super().__init__(interface=interface, *args, **kwargs) def _perform_action(self, *args, **kwargs) -> dict: diff --git a/porter/emitters.py b/porter/emitters.py index 8bc069b..36ea814 100644 --- a/porter/emitters.py +++ b/porter/emitters.py @@ -4,9 +4,9 @@ from typing import Callable from flask import Response +from nucypher.utilities.logging import Logger import porter -from nucypher.utilities.logging import Logger def null_stream(): diff --git a/porter/fields/key.py b/porter/fields/key.py deleted file mode 100644 index a74b2e2..0000000 --- a/porter/fields/key.py +++ /dev/null @@ -1,17 +0,0 @@ -from marshmallow import fields -from nucypher_core.umbral import PublicKey - -from porter.fields.base import BaseField -from porter.fields.exceptions import InvalidInputData, InvalidNativeDataTypes - - -class Key(BaseField, fields.Field): - - def _serialize(self, value, attr, obj, **kwargs): - return bytes(value).hex() - - def _deserialize(self, value, attr, data, **kwargs): - try: - return PublicKey.from_bytes(bytes.fromhex(value)) - except InvalidNativeDataTypes as e: - raise InvalidInputData(f"Could not convert input for {self.name} to an Umbral Key: {e}") \ No newline at end of file diff --git a/porter/fields/taco.py b/porter/fields/taco.py new file mode 100644 index 0000000..6b89051 --- /dev/null +++ b/porter/fields/taco.py @@ -0,0 +1,63 @@ +from nucypher_core import ( + EncryptedThresholdDecryptionRequest as EncryptedThresholdDecryptionRequestClass, +) +from nucypher_core import ( + EncryptedThresholdDecryptionResponse as EncryptedThresholdDecryptionResponseClass, +) + +from porter.fields.base import Base64BytesRepresentation +from porter.fields.exceptions import InvalidInputData + + +class EncryptedThresholdDecryptionRequestField(Base64BytesRepresentation): + """ + Parameter representation of encrypted threshold decryption request. + """ + + def _serialize(self, value, attr, obj, **kwargs): + if not isinstance(value, EncryptedThresholdDecryptionRequestClass): + raise InvalidInputData( + f"Provided object is not an {EncryptedThresholdDecryptionRequestClass.__name__}" + ) + + return super()._serialize(value, attr, obj, **kwargs) + + def _deserialize(self, value, attr, data, **kwargs): + try: + encrypted_decryption_request_bytes = super()._deserialize( + value, attr, data, **kwargs + ) + return EncryptedThresholdDecryptionRequestClass.from_bytes( + encrypted_decryption_request_bytes + ) + except Exception as e: + raise InvalidInputData( + f"Could not convert input for {self.name} to an {EncryptedThresholdDecryptionRequestClass.__name__}: {e}" + ) from e + + +class EncryptedThresholdDecryptionResponseField(Base64BytesRepresentation): + """ + Parameter representation of encrypted threshold decryption response. + """ + + def _serialize(self, value, attr, obj, **kwargs): + if not isinstance(value, EncryptedThresholdDecryptionResponseClass): + raise InvalidInputData( + f"Provided object is not an {EncryptedThresholdDecryptionResponseClass.__name__}" + ) + + return super()._serialize(value, attr, obj, **kwargs) + + def _deserialize(self, value, attr, data, **kwargs): + try: + encrypted_decryption_response_bytes = super()._deserialize( + value, attr, data, **kwargs + ) + return EncryptedThresholdDecryptionResponseClass.from_bytes( + encrypted_decryption_response_bytes + ) + except Exception as e: + raise InvalidInputData( + f"Could not convert input for {self.name} to an {EncryptedThresholdDecryptionResponseClass.__name__}: {e}" + ) from e diff --git a/porter/fields/treasuremap.py b/porter/fields/treasuremap.py index 04cc497..bb62697 100644 --- a/porter/fields/treasuremap.py +++ b/porter/fields/treasuremap.py @@ -1,7 +1,7 @@ from nucypher_core import TreasureMap as TreasureMapClass -from porter.fields.exceptions import InvalidInputData from porter.fields.base import Base64BytesRepresentation +from porter.fields.exceptions import InvalidInputData class TreasureMap(Base64BytesRepresentation): diff --git a/porter/fields/umbralkey.py b/porter/fields/umbralkey.py new file mode 100644 index 0000000..0c2bc7f --- /dev/null +++ b/porter/fields/umbralkey.py @@ -0,0 +1,23 @@ +from marshmallow import fields +from nucypher_core.umbral import PublicKey + +from porter.fields.base import BaseField +from porter.fields.exceptions import InvalidInputData, InvalidNativeDataTypes + + +class UmbralKey(BaseField, fields.Field): + def _serialize(self, value, attr, obj, **kwargs): + if isinstance(value, PublicKey): + data = value.to_compressed_bytes() + else: + data = bytes(value) + + return data.hex() + + def _deserialize(self, value, attr, data, **kwargs): + try: + return PublicKey.from_compressed_bytes(bytes.fromhex(value)) + except InvalidNativeDataTypes as e: + raise InvalidInputData( + f"Could not convert input for {self.name} to an Umbral Key: {e}" + ) diff --git a/porter/fields/ursula.py b/porter/fields/ursula.py index deef5b8..654cb17 100644 --- a/porter/fields/ursula.py +++ b/porter/fields/ursula.py @@ -9,6 +9,14 @@ class UrsulaChecksumAddress(String): """Ursula checksum address.""" click_type = EIP55_CHECKSUM_ADDRESS + def _serialize(self, value, attr, obj, **kwargs): + try: + return to_checksum_address(value=value) + except ValueError as e: + raise InvalidInputData( + f"Could not convert input for {self.name} to a valid checksum address: {e}" + ) + def _deserialize(self, value, attr, data, **kwargs): try: return to_checksum_address(value=value) diff --git a/porter/interfaces.py b/porter/interfaces.py index f02d76e..894b876 100644 --- a/porter/interfaces.py +++ b/porter/interfaces.py @@ -5,7 +5,7 @@ from nucypher_core import RetrievalKit, TreasureMap from nucypher_core.umbral import PublicKey -from porter import schema +from porter import main, schema def attach_schema(schema): @@ -29,27 +29,28 @@ def __init__(self, implementer=None, *args, **kwargs): class PorterInterface(ControlInterface): - def __init__(self, porter: 'Porter' = None, *args, **kwargs): + def __init__(self, porter: "main.Porter" = None, *args, **kwargs): super().__init__(implementer=porter, *args, **kwargs) - # - # Alice Endpoints - # - @attach_schema(schema.AliceGetUrsulas) - def get_ursulas(self, - quantity: int, - exclude_ursulas: Optional[List[ChecksumAddress]] = None, - include_ursulas: Optional[List[ChecksumAddress]] = None) -> Dict: + @attach_schema(schema.GetUrsulas) + def get_ursulas( + self, + quantity: int, + exclude_ursulas: Optional[List[ChecksumAddress]] = None, + include_ursulas: Optional[List[ChecksumAddress]] = None, + timeout: Optional[int] = None, + ) -> Dict: ursulas_info = self.implementer.get_ursulas( quantity=quantity, exclude_ursulas=exclude_ursulas, include_ursulas=include_ursulas, + timeout=timeout, ) response_data = {"ursulas": ursulas_info} # list of UrsulaInfo objects return response_data - @attach_schema(schema.AliceRevoke) + @attach_schema(schema.PRERevoke) def revoke(self) -> dict: # Steps (analogous to nucypher.character.control.interfaces): # 1. creation of objects / setup @@ -57,7 +58,7 @@ def revoke(self) -> dict: # 3. create response pass - @attach_schema(schema.BobRetrieveCFrags) + @attach_schema(schema.PRERetrieveCFrags) def retrieve_cfrags(self, treasure_map: TreasureMap, retrieval_kits: List[RetrievalKit], @@ -77,3 +78,18 @@ def retrieve_cfrags(self, "retrieval_results": retrieval_outcomes } # list of RetrievalOutcome objects return response_data + + @attach_schema(schema.Decrypt) + def decrypt( + self, + threshold: int, + encrypted_decryption_requests: Dict[ChecksumAddress, bytes], + timeout: Optional[int] = None, + ): + decrypt_outcome = self.implementer.decrypt( + threshold=threshold, + encrypted_decryption_requests=encrypted_decryption_requests, + timeout=timeout, + ) + response_data = {"decryption_results": decrypt_outcome} + return response_data diff --git a/porter/main.py b/porter/main.py index c442eca..3beb5a7 100644 --- a/porter/main.py +++ b/porter/main.py @@ -1,34 +1,36 @@ +import os from pathlib import Path -from typing import Dict, List, NamedTuple, Optional, Sequence +from typing import Dict, List, NamedTuple, Optional, Sequence, Union -from constant_sorrow.constants import ( - NO_BLOCKCHAIN_CONNECTION, - NO_CONTROL_PROTOCOL -) +from constant_sorrow.constants import NO_CONTROL_PROTOCOL from eth_typing import ChecksumAddress from eth_utils import to_checksum_address from flask import Response, request -from nucypher_core import RetrievalKit, TreasureMap -from nucypher_core.umbral import PublicKey - -from nucypher.blockchain.eth.agents import ContractAgency, PREApplicationAgent -from nucypher.blockchain.eth.interfaces import BlockchainInterfaceFactory -from nucypher.blockchain.eth.registry import ( - BaseContractRegistry, - InMemoryContractRegistry, +from nucypher.blockchain.eth.agents import ( + ContractAgency, + TACoChildApplicationAgent, ) +from nucypher.blockchain.eth.domains import DEFAULT_DOMAIN, TACoDomain +from nucypher.blockchain.eth.interfaces import BlockchainInterfaceFactory +from nucypher.blockchain.eth.registry import ContractRegistry from nucypher.characters.lawful import Ursula from nucypher.crypto.powers import DecryptingPower +from nucypher.network.decryption import ThresholdDecryptionClient from nucypher.network.nodes import Learner -from nucypher.network.retrieval import RetrievalClient -from nucypher.policy.reservoir import ( - PrefetchStrategy, - make_staking_provider_reservoir, -) +from nucypher.network.retrieval import PRERetrievalClient +from nucypher.policy.reservoir import PrefetchStrategy, make_staking_provider_reservoir from nucypher.utilities.concurrency import WorkerPool from nucypher.utilities.logging import Logger -from porter.controllers import PorterCLIController -from porter.controllers import WebController +from nucypher_core import ( + EncryptedThresholdDecryptionRequest, + EncryptedThresholdDecryptionResponse, + RetrievalKit, + TreasureMap, +) +from nucypher_core.umbral import PublicKey +from prometheus_flask_exporter import PrometheusMetrics + +from porter.controllers import PorterCLIController, WebController from porter.interfaces import PorterInterface BANNER = r""" @@ -40,7 +42,7 @@ | | | |_| | | | |_( (/ /| | |_| \___/|_| \___)____)_| -the Pipe for PRE Application network operations +the Pipe for TACo Application operations """ @@ -52,10 +54,14 @@ class Porter(Learner): _LONG_LEARNING_DELAY = 30 _ROUNDS_WITHOUT_NODES_AFTER_WHICH_TO_SLOW_DOWN = 25 - DEFAULT_EXECUTION_TIMEOUT = 15 # 15s - DEFAULT_PORT = 9155 + MAX_GET_URSULAS_TIMEOUT = os.getenv("PORTER_MAX_GET_URSULAS_TIMEOUT", default=15) + MAX_DECRYPTION_TIMEOUT = os.getenv( + "PORTER_MAX_DECRYPTION_TIMEOUT", + default=ThresholdDecryptionClient.DEFAULT_DECRYPTION_TIMEOUT, + ) + _interface_class = PorterInterface class UrsulaInfo(NamedTuple): @@ -64,7 +70,7 @@ class UrsulaInfo(NamedTuple): uri: str encrypting_key: PublicKey - class RetrievalOutcome(NamedTuple): + class PRERetrievalOutcome(NamedTuple): """ Simple object that stores the results and errors of re-encryption operations across one or more Ursulas. @@ -73,27 +79,50 @@ class RetrievalOutcome(NamedTuple): cfrags: Dict errors: Dict - def __init__(self, - domain: str = None, - registry: BaseContractRegistry = None, - controller: bool = True, - node_class: object = Ursula, - eth_provider_uri: str = None, - execution_timeout: int = DEFAULT_EXECUTION_TIMEOUT, - *args, **kwargs): - if not eth_provider_uri: - raise ValueError('ETH Provider URI is required for decentralized Porter.') - - if not BlockchainInterfaceFactory.is_interface_initialized(eth_provider_uri=eth_provider_uri): - BlockchainInterfaceFactory.initialize_interface(eth_provider_uri=eth_provider_uri) + class DecryptOutcome(NamedTuple): + """ + Simple object that stores the results and errors of TACo decrypt operations across + one or more Ursulas. + """ - self.registry = registry or InMemoryContractRegistry.from_latest_publication(network=domain) - self.application_agent = ContractAgency.get_agent(PREApplicationAgent, registry=self.registry) + encrypted_decryption_responses: Dict[ + ChecksumAddress, EncryptedThresholdDecryptionResponse + ] + errors: Dict[ChecksumAddress, str] + + def __init__( + self, + eth_endpoint: str, + polygon_endpoint: str, + domain: TACoDomain = DEFAULT_DOMAIN, + registry: ContractRegistry = None, + controller: bool = True, + node_class: object = Ursula, + *args, + **kwargs, + ): + if not domain: + raise ValueError("TACo Domain must be provided.") + if not eth_endpoint: + raise ValueError("ETH Provider URI must be provided.") + if not polygon_endpoint: + raise ValueError("Polygon Provider URI must be provided.") + + self._initialize_endpoints(eth_endpoint, polygon_endpoint) + self.eth_endpoint, self.polygon_endpoint = eth_endpoint, polygon_endpoint + + self.registry = registry or ContractRegistry.from_latest_publication( + domain=domain + ) + self.taco_child_application_agent = ContractAgency.get_agent( + TACoChildApplicationAgent, + registry=self.registry, + blockchain_endpoint=self.polygon_endpoint, + ) super().__init__(save_metadata=True, domain=domain, node_class=node_class, *args, **kwargs) self.log = Logger(self.__class__.__name__) - self.execution_timeout = execution_timeout # Controller Interface self.interface = self._interface_class(porter=self) @@ -104,11 +133,36 @@ def __init__(self, self.log.info(BANNER) - def get_ursulas(self, - quantity: int, - exclude_ursulas: Optional[Sequence[ChecksumAddress]] = None, - include_ursulas: Optional[Sequence[ChecksumAddress]] = None) -> List[UrsulaInfo]: + @staticmethod + def _initialize_endpoints(eth_endpoint: str, polygon_endpoint: str): + if not BlockchainInterfaceFactory.is_interface_initialized( + endpoint=eth_endpoint + ): + BlockchainInterfaceFactory.initialize_interface(endpoint=eth_endpoint) + + if not BlockchainInterfaceFactory.is_interface_initialized( + endpoint=polygon_endpoint + ): + BlockchainInterfaceFactory.initialize_interface(endpoint=polygon_endpoint) + + def get_ursulas( + self, + quantity: int, + exclude_ursulas: Optional[Sequence[ChecksumAddress]] = None, + include_ursulas: Optional[Sequence[ChecksumAddress]] = None, + timeout: Optional[int] = None, + ) -> List[UrsulaInfo]: + timeout = self._configure_timeout( + "sampling", timeout, self.MAX_GET_URSULAS_TIMEOUT + ) + reservoir = self._make_reservoir(exclude_ursulas, include_ursulas) + available_nodes_to_sample = len(reservoir.values) + len(reservoir.reservoir) + if available_nodes_to_sample < quantity: + raise ValueError( + f"Insufficient nodes ({available_nodes_to_sample}) from which to sample {quantity}" + ) + value_factory = PrefetchStrategy(reservoir, quantity) def get_ursula_info(ursula_address) -> Porter.UrsulaInfo: @@ -127,16 +181,17 @@ def get_ursula_info(ursula_address) -> Porter.UrsulaInfo: self.log.debug(f"Ursula ({ursula_address}) is unreachable: {str(e)}") raise - self.block_until_number_of_known_nodes_is(quantity, - timeout=self.execution_timeout, - learn_on_this_thread=True, - eager=True) + self.block_until_number_of_known_nodes_is( + quantity, timeout=timeout, learn_on_this_thread=True, eager=True + ) - worker_pool = WorkerPool(worker=get_ursula_info, - value_factory=value_factory, - target_successes=quantity, - timeout=self.execution_timeout, - stagger_timeout=1) + worker_pool = WorkerPool( + worker=get_ursula_info, + value_factory=value_factory, + target_successes=quantity, + timeout=timeout, + stagger_timeout=1, + ) worker_pool.start() try: successes = worker_pool.block_until_target_successes() @@ -147,14 +202,16 @@ def get_ursula_info(ursula_address) -> Porter.UrsulaInfo: ursulas_info = successes.values() return list(ursulas_info) - def retrieve_cfrags(self, - treasure_map: TreasureMap, - retrieval_kits: Sequence[RetrievalKit], - alice_verifying_key: PublicKey, - bob_encrypting_key: PublicKey, - bob_verifying_key: PublicKey, - context: Optional[Dict] = None) -> List[RetrievalOutcome]: - client = RetrievalClient(self) + def retrieve_cfrags( + self, + treasure_map: TreasureMap, + retrieval_kits: Sequence[RetrievalKit], + alice_verifying_key: PublicKey, + bob_encrypting_key: PublicKey, + bob_verifying_key: PublicKey, + context: Optional[Dict] = None, + ) -> List[PRERetrievalOutcome]: + client = PRERetrievalClient(self) context = context or dict() # must not be None results, errors = client.retrieve_cfrags( treasure_map, @@ -162,22 +219,64 @@ def retrieve_cfrags(self, alice_verifying_key, bob_encrypting_key, bob_verifying_key, - **context, + context, ) result_outcomes = [] for result, error in zip(results, errors): - result_outcome = Porter.RetrievalOutcome( + result_outcome = Porter.PRERetrievalOutcome( cfrags=result.cfrags, errors=error.errors ) result_outcomes.append(result_outcome) return result_outcomes - def _make_reservoir(self, - exclude_ursulas: Optional[Sequence[ChecksumAddress]] = None, - include_ursulas: Optional[Sequence[ChecksumAddress]] = None): - return make_staking_provider_reservoir(application_agent=self.application_agent, - exclude_addresses=exclude_ursulas, - include_addresses=include_ursulas) + def decrypt( + self, + threshold: int, + encrypted_decryption_requests: Dict[ + ChecksumAddress, EncryptedThresholdDecryptionRequest + ], + timeout: Optional[int] = None, + ) -> DecryptOutcome: + decryption_client = ThresholdDecryptionClient(self) + timeout = self._configure_timeout( + "decryption", timeout, self.MAX_DECRYPTION_TIMEOUT + ) + + successes, failures = decryption_client.gather_encrypted_decryption_shares( + encrypted_requests=encrypted_decryption_requests, + threshold=threshold, + timeout=timeout, + ) + + decrypt_outcome = Porter.DecryptOutcome( + encrypted_decryption_responses=successes, errors=failures + ) + return decrypt_outcome + + def _configure_timeout( + self, operation: str, timeout: Union[int, None], max_timeout: int + ): + if timeout and timeout > max_timeout: + self.log.warn( + f"Provided {operation} timeout ({timeout}s) exceeds " + f"maximum ({max_timeout}s); " + f"using {max_timeout}s instead" + ) + timeout = max_timeout + else: + timeout = timeout or max_timeout + return timeout + + def _make_reservoir( + self, + exclude_ursulas: Optional[Sequence[ChecksumAddress]] = None, + include_ursulas: Optional[Sequence[ChecksumAddress]] = None, + ): + return make_staking_provider_reservoir( + application_agent=self.taco_child_application_agent, + exclude_addresses=exclude_ursulas, + include_addresses=include_ursulas, + ) def make_cli_controller(self, crash_on_error: bool = False): controller = PorterCLIController(app_name=self.APP_NAME, @@ -186,6 +285,9 @@ def make_cli_controller(self, crash_on_error: bool = False): self.controller = controller return controller + def _setup_prometheus(self, app): + self.controller.metrics = PrometheusMetrics(app) + def make_web_controller(self, crash_on_error: bool = False, htpasswd_filepath: Path = None, @@ -197,6 +299,16 @@ def make_web_controller(self, # Register Flask Decorator porter_flask_control = controller.make_control_transport() + self._setup_prometheus(porter_flask_control) + + # static information as metric + + self.controller.metrics.info("app_info", "Application info", version="1.0.3") + by_path_counter = controller.metrics.counter( + "by_path_counter", + "Request count by request paths", + labels={"path": lambda: request.path}, + ) # CORS origins if cors_allow_origins_list: @@ -224,21 +336,31 @@ def make_web_controller(self, # Porter Control HTTP Endpoints # @porter_flask_control.route('/get_ursulas', methods=['GET']) + @by_path_counter def get_ursulas() -> Response: """Porter control endpoint for sampling Ursulas on behalf of Alice.""" response = controller(method_name='get_ursulas', control_request=request) return response @porter_flask_control.route("/revoke", methods=['POST']) + @by_path_counter def revoke(): """Porter control endpoint for off-chain revocation of a policy on behalf of Alice.""" response = controller(method_name='revoke', control_request=request) return response @porter_flask_control.route("/retrieve_cfrags", methods=['POST']) + @by_path_counter def retrieve_cfrags() -> Response: """Porter control endpoint for executing a PRE work order on behalf of Bob.""" response = controller(method_name='retrieve_cfrags', control_request=request) return response + @porter_flask_control.route("/decrypt", methods=["POST"]) + @by_path_counter + def decrypt() -> Response: + """Porter control endpoint for executing a TACo decryption request.""" + response = controller(method_name="decrypt", control_request=request) + return response + return controller diff --git a/porter/schema.py b/porter/schema.py index deadfa8..cecb9d7 100644 --- a/porter/schema.py +++ b/porter/schema.py @@ -1,16 +1,17 @@ import click -from marshmallow import fields as marshmallow_fields, Schema, INCLUDE -from marshmallow import validates_schema -from marshmallow.fields import String, Dict -from marshmallow.fields import URL +from marshmallow import INCLUDE, Schema, validates_schema +from marshmallow import fields as marshmallow_fields from porter.cli.types import EIP55_CHECKSUM_ADDRESS -from porter.fields.base import StringList, PositiveInteger, JSON -from porter.fields.exceptions import InvalidArgumentCombo -from porter.fields.exceptions import InvalidInputData -from porter.fields.key import Key -from porter.fields.retrieve import RetrievalKit, CapsuleFrag +from porter.fields.base import JSON, PositiveInteger, StringList +from porter.fields.exceptions import InvalidArgumentCombo, InvalidInputData +from porter.fields.retrieve import CapsuleFrag, RetrievalKit +from porter.fields.taco import ( + EncryptedThresholdDecryptionRequestField, + EncryptedThresholdDecryptionResponseField, +) from porter.fields.treasuremap import TreasureMap +from porter.fields.umbralkey import UmbralKey from porter.fields.ursula import UrsulaChecksumAddress @@ -44,8 +45,8 @@ def option_bob_encrypting_key(): class UrsulaInfoSchema(BaseSchema): """Schema for the result of sampling of Ursulas.""" checksum_address = UrsulaChecksumAddress() - uri = URL() - encrypting_key = Key() + uri = marshmallow_fields.URL() + encrypting_key = UmbralKey() # maintain field declaration ordering class Meta: @@ -53,11 +54,11 @@ class Meta: # -# Alice Endpoints +# Common Endpoints # -class AliceGetUrsulas(BaseSchema): +class GetUrsulas(BaseSchema): quantity = PositiveInteger( required=True, load_only=True, @@ -94,6 +95,18 @@ class AliceGetUrsulas(BaseSchema): required=False, load_only=True) + timeout = PositiveInteger( + required=False, + load_only=True, + click=click.option( + "--timeout", + "-t", + help="Timeout for getting the required quantity of ursulas", + type=click.INT, + required=False, + ), + ) + # output ursulas = marshmallow_fields.List(marshmallow_fields.Nested(UrsulaInfoSchema), dump_only=True) @@ -101,9 +114,11 @@ class AliceGetUrsulas(BaseSchema): def check_valid_quantity_and_include_ursulas(self, data, **kwargs): # TODO does this make sense - perhaps having extra ursulas could be a good thing if some are down or can't # be contacted at that time - ursulas_to_include = data.get('include_ursulas') - if ursulas_to_include and len(ursulas_to_include) > data['quantity']: - raise InvalidArgumentCombo(f"Ursulas to include is greater than quantity requested") + ursulas_to_include = data.get("include_ursulas") + if ursulas_to_include and len(ursulas_to_include) > data["quantity"]: + raise InvalidArgumentCombo( + "Ursulas to include is greater than quantity requested" + ) @validates_schema def check_include_and_exclude_are_mutually_exclusive(self, data, **kwargs): @@ -115,26 +130,29 @@ def check_include_and_exclude_are_mutually_exclusive(self, data, **kwargs): f"common entries {common_ursulas}") -class AliceRevoke(BaseSchema): +# +# PRE Endpoints +# + + +class PRERevoke(BaseSchema): pass # TODO need to understand revoke process better -class RetrievalOutcomeSchema(BaseSchema): +class PRERetrievalOutcomeSchema(BaseSchema): """Schema for the result of /retrieve_cfrags endpoint.""" - cfrags = Dict(keys=UrsulaChecksumAddress(), values=CapsuleFrag()) - errors = Dict(keys=UrsulaChecksumAddress(), values=String()) + + cfrags = marshmallow_fields.Dict(keys=UrsulaChecksumAddress(), values=CapsuleFrag()) + errors = marshmallow_fields.Dict( + keys=UrsulaChecksumAddress(), values=marshmallow_fields.String() + ) # maintain field declaration ordering class Meta: ordered = True -# -# Bob Endpoints -# - - -class BobRetrieveCFrags(BaseSchema): +class PRERetrieveCFrags(BaseSchema): treasure_map = TreasureMap( required=True, load_only=True, @@ -156,7 +174,7 @@ class BobRetrieveCFrags(BaseSchema): default=[]), required=True, load_only=True) - alice_verifying_key = Key( + alice_verifying_key = UmbralKey( required=True, load_only=True, click=click.option( @@ -165,11 +183,11 @@ class BobRetrieveCFrags(BaseSchema): help="Alice's verifying key as a hexadecimal string", type=click.STRING, required=True)) - bob_encrypting_key = Key( + bob_encrypting_key = UmbralKey( required=True, load_only=True, click=option_bob_encrypting_key()) - bob_verifying_key = Key( + bob_verifying_key = UmbralKey( required=True, load_only=True, click=click.option( @@ -195,6 +213,75 @@ class BobRetrieveCFrags(BaseSchema): # output retrieval_results = marshmallow_fields.List( - marshmallow_fields.Nested(RetrievalOutcomeSchema), dump_only=True + marshmallow_fields.Nested(PRERetrievalOutcomeSchema), dump_only=True + ) + +# +# TACo Endpoints +# + + +class DecryptOutcomeSchema(BaseSchema): + """Schema for the result of /retrieve_cfrags endpoint.""" + + encrypted_decryption_responses = marshmallow_fields.Dict( + keys=UrsulaChecksumAddress(), values=EncryptedThresholdDecryptionResponseField() + ) + errors = marshmallow_fields.Dict( + keys=UrsulaChecksumAddress(), values=marshmallow_fields.String() + ) + + # maintain field declaration ordering + class Meta: + ordered = True + + +class Decrypt(BaseSchema): + threshold = PositiveInteger( + required=True, + load_only=True, + click=click.option( + "--decryption-threshold", + "-d", + help="Threshold of decryption responses required", + type=click.INT, + required=True, + ), + ) + encrypted_decryption_requests = marshmallow_fields.Dict( + keys=UrsulaChecksumAddress(), + values=EncryptedThresholdDecryptionRequestField(), + required=True, + load_only=True, + click=click.option( + "--encrypted-decryption-requests", + "-e", + help="Encrypted decryption requests dictionary keyed by ursula checksum address", + type=click.STRING, + required=True, + ), + ) + timeout = PositiveInteger( + required=False, + load_only=True, + click=click.option( + "--timeout", + "-t", + help="Timeout for decryption operation", + type=click.INT, + required=False, + ), ) + # output + decryption_results = marshmallow_fields.Nested(DecryptOutcomeSchema, dump_only=True) + + @validates_schema + def check_valid_threshold_and_requests(self, data, **kwargs): + # TODO is this check a good thing? What about re-requests after failures? + threshold = data.get("threshold") + encrypted_decryption_requests = data.get("encrypted_decryption_requests") + if len(encrypted_decryption_requests) < threshold: + raise InvalidArgumentCombo( + "Number of provided requests must be >= the expected threshold" + ) diff --git a/porter/utils.py b/porter/utils.py index d87769f..e6feef7 100644 --- a/porter/utils.py +++ b/porter/utils.py @@ -3,15 +3,14 @@ import string from typing import Dict, List, Optional, Tuple -from nucypher_core import MessageKit, RetrievalKit - from nucypher.characters.lawful import Enrico from nucypher.crypto.powers import DecryptingPower +from nucypher_core import MessageKit, RetrievalKit from porter.fields.base import JSON -from porter.fields.key import Key from porter.fields.retrieve import RetrievalKit as RetrievalKitField from porter.fields.treasuremap import TreasureMap +from porter.fields.umbralkey import UmbralKey def generate_random_label() -> bytes: @@ -51,17 +50,17 @@ def retrieval_request_setup(enacted_policy, bob.start_learning_loop() # We can pass any number of capsules as args; here we pass just one. - enrico = Enrico(policy_encrypting_key=enacted_policy.public_key) + enrico = Enrico(encrypting_key=enacted_policy.public_key) message_kits = [] if specific_messages: for message in specific_messages: - message_kits.append(enrico.encrypt_message(message)) + message_kits.append(enrico.encrypt_for_pre(message)) else: for i in range(num_random_messages): random_message = "".join( random.choice(string.ascii_lowercase) for j in range(20) ).encode() # random message - message_kits.append(enrico.encrypt_message(random_message)) + message_kits.append(enrico.encrypt_for_pre(random_message)) encode_bytes = (lambda field, obj: field()._serialize(value=obj, attr=None, obj=None)) if encode_for_rest else (lambda field, obj: obj) @@ -71,9 +70,9 @@ def retrieval_request_setup(enacted_policy, encode_bytes(RetrievalKitField, RetrievalKit.from_message_kit(message_kit)) for message_kit in message_kits ], - alice_verifying_key=encode_bytes(Key, alice.stamp.as_umbral_pubkey()), - bob_encrypting_key=encode_bytes(Key, bob.public_keys(DecryptingPower)), - bob_verifying_key=encode_bytes(Key, bob.stamp.as_umbral_pubkey()), + alice_verifying_key=encode_bytes(UmbralKey, alice.stamp.as_umbral_pubkey()), + bob_encrypting_key=encode_bytes(UmbralKey, bob.public_keys(DecryptingPower)), + bob_verifying_key=encode_bytes(UmbralKey, bob.stamp.as_umbral_pubkey()), ) # context is optional if context: @@ -83,18 +82,24 @@ def retrieval_request_setup(enacted_policy, def retrieval_params_decode_from_rest(retrieval_params: Dict) -> Dict: - decode_bytes = lambda field, data: field()._deserialize( - value=data, attr=None, data=None - ) + def decode_bytes(field, data): + return field()._deserialize(value=data, attr=None, data=None) + decoded_params = dict( treasure_map=decode_bytes(TreasureMap, retrieval_params["treasure_map"]), retrieval_kits=[ decode_bytes(RetrievalKitField, kit) for kit in retrieval_params["retrieval_kits"] ], - alice_verifying_key=decode_bytes(Key, retrieval_params["alice_verifying_key"]), - bob_encrypting_key=decode_bytes(Key, retrieval_params["bob_encrypting_key"]), - bob_verifying_key=decode_bytes(Key, retrieval_params["bob_verifying_key"]), + alice_verifying_key=decode_bytes( + UmbralKey, retrieval_params["alice_verifying_key"] + ), + bob_encrypting_key=decode_bytes( + UmbralKey, retrieval_params["bob_encrypting_key"] + ), + bob_verifying_key=decode_bytes( + UmbralKey, retrieval_params["bob_verifying_key"] + ), ) # context is optional if "context" in retrieval_params: diff --git a/porter_diagram.png b/porter_diagram.png index 4718333..6e533ee 100644 Binary files a/porter_diagram.png and b/porter_diagram.png differ diff --git a/porter_diagram.svg b/porter_diagram.svg index c0f8d6d..ae32667 100644 --- a/porter_diagram.svg +++ b/porter_diagram.svg @@ -1,23 +1,23 @@ + viewBox="0 0 1773.588 1194.0533" + height="336.9884mm" + width="500.54593mm" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + id="base" + inkscape:showpageshadow="2" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:export-bgcolor="#ffffffff" /> @@ -306,15 +310,19 @@ image/svg+xml - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + d="m -62.85881,479.83432 v 14.68506 h 2.526855 q 1.354981,0 1.922607,0.531 0.585938,0.5127 0.585938,1.35498 0,0.82398 -0.585938,1.35499 -0.567626,0.51269 -1.922607,0.51269 h -8.789062 q -1.354981,0 -1.940918,-0.51269 -0.567627,-0.53101 -0.567627,-1.3733 0,-0.82397 0.567627,-1.33667 0.585937,-0.531 1.940918,-0.531 h 2.508544 v -14.68506 h -4.064941 v 3.55225 q 0,1.35498 -0.531006,1.94091 -0.512695,0.56763 -1.35498,0.56763 -0.823975,0 -1.354981,-0.56763 -0.512695,-0.58593 -0.512695,-1.94091 v -7.32422 l 19.445801,0.0183 v 7.30591 q 0,1.35498 -0.531006,1.94091 -0.512695,0.56763 -1.354981,0.56763 -0.823974,0 -1.35498,-0.56763 -0.512695,-0.58593 -0.512695,-1.94091 v -3.55225 z m 25.268554,12.39624 h -9.118652 l -0.915527,2.28882 h 0.915527 q 1.35498,0 1.922607,0.531 0.585938,0.5127 0.585938,1.35498 0,0.82398 -0.585938,1.35499 -0.567627,0.51269 -1.922607,0.51269 h -5.053711 q -1.35498,0 -1.922607,-0.51269 -0.585938,-0.53101 -0.585938,-1.3733 0,-0.84228 0.604248,-1.37329 0.604248,-0.531 1.99585,-0.49438 l 5.895996,-14.68506 h -2.453613 q -1.354981,0 -1.940918,-0.5127 -0.567627,-0.531 -0.567627,-1.37329 0,-0.84228 0.567627,-1.35498 0.585937,-0.531 1.940918,-0.531 l 8.111572,0.0183 7.470703,18.43872 q 1.318359,0 1.739502,0.29297 0.842285,0.60425 0.842285,1.59301 0,0.82398 -0.567627,1.35499 -0.567627,0.51269 -1.922607,0.51269 h -5.053711 q -1.354981,0 -1.940918,-0.51269 -0.567627,-0.53101 -0.567627,-1.3733 0,-0.82397 0.567627,-1.33667 0.585937,-0.531 1.940918,-0.531 h 0.915527 z m -1.556396,-3.75366 -3.02124,-7.43408 -3.039551,7.43408 z m 25.360107,-11.44409 q 0.347901,-0.47608 0.750733,-0.71411 0.421142,-0.23804 0.897216,-0.23804 0.823975,0 1.33667,0.56762 0.531006,0.56763 0.531006,1.92261 v 3.18604 q 0,1.35498 -0.531006,1.94092 -0.512695,0.56762 -1.33667,0.56762 -0.750732,0 -1.208496,-0.42114 -0.457763,-0.42114 -0.67749,-1.57471 -0.128174,-0.76904 -0.512695,-1.19018 -0.750733,-0.82398 -2.105713,-1.31836 -1.33667,-0.49439 -2.691651,-0.49439 -1.68457,0 -3.094482,0.73242 -1.409912,0.73243 -2.490234,2.38038 -1.080323,1.64795 -1.080323,3.91845 v 2.43531 q 0,2.70996 1.959229,4.5227 1.977539,1.81275 5.474853,1.81275 2.087403,0 3.533936,-0.56763 0.842285,-0.32959 1.794434,-1.30005 0.585937,-0.58594 0.915527,-0.75073 0.32959,-0.18311 0.750732,-0.18311 0.750733,0 1.31836,0.56763 0.5676267,0.56763 0.5676267,1.33667 0,0.76904 -0.7690427,1.64795 -1.116944,1.28174 -2.874756,2.01416 -2.362061,0.98877 -5.218506,0.98877 -3.33252,0 -6.005859,-1.37329 -2.160645,-1.09864 -3.68042,-3.4607 -1.519776,-2.38037 -1.519776,-5.18188 v -2.54517 q 0,-2.92969 1.354981,-5.45654 1.373291,-2.54517 3.790283,-3.91846 2.416992,-1.37329 5.126953,-1.37329 1.629639,0 3.039551,0.38452 1.428223,0.36621 2.655029,1.13526 z m 26.367188,13.23852 q 0,2.16065 -1.208496,4.19312 -1.190186,2.01416 -3.570557,3.22265 -2.3620606,1.19019 -4.9438477,1.19019 -2.56347655,0 -4.9072266,-1.17188 -2.34375,-1.19018 -3.5705566,-3.22265 -1.2268066,-2.03247 -1.2268066,-4.24805 0,-2.2522 1.2451172,-4.41284 1.2451171,-2.17896 3.5705566,-3.42407 2.34374999,-1.24512 4.888916,-1.24512 2.5634766,0 4.9255371,1.28174 2.3803716,1.26343 3.5888676,3.42407 1.208496,2.14233 1.208496,4.41284 z m -3.7536624,0.0183 q 0,-1.81274 -1.3000488,-3.33252 -1.7761231,-2.05078 -4.6691895,-2.05078 -2.54516601,0 -4.2480469,1.62964 -1.7028808,1.62964 -1.7028808,3.77197 0,1.75782 1.7211914,3.2959 1.72119139,1.51978 4.2297363,1.51978 2.5268555,0 4.2480469,-1.51978 1.7211914,-1.53808 1.7211914,-3.31421 z m 48.7609864,-0.0183 q 0,2.16065 -1.208496,4.19312 -1.190186,2.01416 -3.570557,3.22265 -2.36206,1.19019 -4.943847,1.19019 -2.563477,0 -4.907227,-1.17188 -2.34375,-1.19018 -3.570557,-3.22265 -1.226806,-2.03247 -1.226806,-4.24805 0,-2.2522 1.245117,-4.41284 1.245117,-2.17896 3.570557,-3.42407 2.34375,-1.24512 4.888916,-1.24512 2.563476,0 4.925537,1.28174 2.380371,1.26343 3.588867,3.42407 1.208496,2.14233 1.208496,4.41284 z m -3.753662,0.0183 q 0,-1.81274 -1.300049,-3.33252 -1.776123,-2.05078 -4.669189,-2.05078 -2.545166,0 -4.248047,1.62964 -1.702881,1.62964 -1.702881,3.77197 0,1.75782 1.721191,3.2959 1.721192,1.51978 4.229737,1.51978 2.526855,0 4.248046,-1.51978 1.721192,-1.53808 1.721192,-3.31421 z m 11.846924,5.91431 v 6.15234 h 2.252197 q 1.35498,0 1.922607,0.5127 0.585938,0.531 0.585938,1.37329 0,0.82397 -0.585938,1.33667 -0.567627,0.531 -1.922607,0.531 h -6.646729 q -1.35498,0 -1.940918,-0.531 -0.567627,-0.5127 -0.567627,-1.33667 0,-0.84229 0.585938,-1.37329 0.585937,-0.5127 1.922607,-0.5127 h 0.64087 v -16.95556 h -0.64087 q -1.35498,0 -1.940918,-0.5127 -0.567627,-0.531 -0.567627,-1.37329 0,-0.82397 0.567627,-1.33667 0.585938,-0.53101 1.940918,-0.53101 h 4.394532 v 1.28174 q 1.318359,-0.89721 2.728271,-1.33667 1.409912,-0.43945 2.893067,-0.43945 3.845214,0 6.555175,2.61841 2.709961,2.6001 2.709961,5.96924 0,3.71704 -3.204345,6.13403 -2.67334,2.01416 -6.02417,2.01416 -1.446534,0 -2.856446,-0.42114 -1.409912,-0.42115 -2.801513,-1.26343 z m 11.132812,-6.44531 q 0,-0.78736 -0.622558,-1.99585 -0.622559,-1.22681 -1.922608,-2.03247 -1.281738,-0.82398 -3.02124,-0.82398 -2.801514,0 -4.449463,2.10571 -1.116943,1.44654 -1.116943,2.78321 0,1.50146 1.593017,2.92969 1.611328,1.40991 3.973389,1.40991 2.380371,0 3.973389,-1.40991 1.593017,-1.40992 1.593017,-2.96631 z m 25.451659,2.10571 H 86.866531 q 0.585938,1.46484 2.069092,2.36206 1.501465,0.89722 4.046631,0.89722 2.087402,0 5.548096,-0.89722 1.428222,-0.36621 1.97754,-0.36621 0.75073,0 1.26343,0.531 0.51269,0.53101 0.51269,1.33667 0,0.73243 -0.54931,1.24512 -0.73243,0.67749 -3.570561,1.30005 -2.838135,0.60425 -5.456543,0.60425 -4.504395,0 -7.214356,-2.54517 -2.69165,-2.54516 -2.69165,-6.2622 0,-3.95508 2.911377,-6.42701 2.929687,-2.49023 6.738281,-2.49023 2.288819,0 4.193115,0.80566 1.922608,0.80567 2.856446,1.73951 1.318361,1.35498 2.178951,3.35083 0.58594,1.3916 0.58594,3.22265 z m -4.156493,-3.75366 q -0.860596,-1.61133 -2.252197,-2.39868 -1.391602,-0.80567 -3.314209,-0.80567 -1.904297,0 -3.295899,0.80567 -1.391601,0.78735 -2.270507,2.39868 z m 16.461183,-6.46363 v 2.34375 q 2.36206,-1.70288 3.71704,-2.2705 1.37329,-0.56763 2.56348,-0.56763 1.83105,0 3.55224,1.35498 1.17188,0.91553 1.17188,1.86768 0,0.80566 -0.56763,1.37329 -0.54932,0.54931 -1.33667,0.54931 -0.6958,0 -1.46484,-0.6958 -0.76905,-0.6958 -1.37329,-0.6958 -0.78736,0 -2.36206,0.98877 -1.5564,0.98877 -3.90015,2.96631 v 5.65796 h 5.34668 q 1.35498,0 1.92261,0.531 0.58593,0.5127 0.58593,1.35498 0,0.82398 -0.58593,1.35499 -0.56763,0.51269 -1.92261,0.51269 h -11.33423 q -1.35498,0 -1.94092,-0.51269 -0.56762,-0.53101 -0.56762,-1.3733 0,-0.82397 0.56762,-1.33667 0.58594,-0.531 1.94092,-0.531 h 2.23389 v -9.11865 h -1.35498 q -1.35498,0 -1.94092,-0.5127 -0.56763,-0.531 -0.56763,-1.37329 0,-0.82397 0.56763,-1.33667 0.58594,-0.53101 1.94092,-0.53101 z m 26.66016,16.62598 v -0.87891 q -1.40992,0.75074 -3.1128,1.11695 -1.70288,0.38452 -3.09448,0.38452 -3.02124,0 -4.90723,-1.59302 -1.88598,-1.61133 -1.88598,-3.55224 0,-2.36206 2.39868,-4.37623 2.41699,-2.03247 6.66504,-2.03247 1.70288,0 3.93677,0.36622 v -0.89722 q 0,-0.84229 -0.73243,-1.37329 -0.71411,-0.53101 -2.74658,-0.53101 -1.66626,0 -4.32129,0.65918 -0.98877,0.23804 -1.53808,0.23804 -0.75074,0 -1.28174,-0.53101 -0.5127,-0.54931 -0.5127,-1.3916 0,-0.47607 0.18311,-0.82397 0.1831,-0.3479 0.51269,-0.54932 0.32959,-0.21973 1.37329,-0.5127 1.39161,-0.38452 2.83814,-0.60424 1.44653,-0.23804 2.61841,-0.23804 3.49731,0 5.41992,1.51977 1.94092,1.50147 1.94092,4.11988 v 7.72705 h 0.64087 q 1.35498,0 1.9226,0.531 0.58594,0.5127 0.58594,1.35498 0,0.82398 -0.58594,1.35499 -0.56762,0.51269 -1.9226,0.51269 z m 0,-6.71997 q -2.2522,-0.43945 -4.1565,-0.43945 -2.28882,0 -3.93677,1.11694 -1.02539,0.71411 -1.02539,1.44653 0,0.53101 0.49439,0.8606 0.91552,0.60425 2.50854,0.60425 1.35498,0 3.05786,-0.53101 1.7212,-0.531 3.05787,-1.44653 z m 18.20068,-6.15234 v 7.52563 q 0,1.2085 0.49438,1.59302 0.76905,0.60425 2.74659,0.60425 2.87475,0 5.31005,-1.22681 0.93384,-0.47607 1.46485,-0.47607 0.73242,0 1.26343,0.54931 0.54931,0.54932 0.54931,1.33667 0,0.73242 -0.58594,1.26343 -0.89721,0.8606 -3.55224,1.59302 -2.63672,0.71411 -4.44946,0.71411 -3.49732,0 -5.25513,-1.50147 -1.7395,-1.51977 -1.7395,-3.71704 v -8.25805 h -1.35498 q -1.35498,0 -1.94092,-0.5127 -0.56763,-0.531 -0.56763,-1.37329 0,-0.82397 0.56763,-1.33667 0.58594,-0.53101 1.94092,-0.53101 h 1.35498 v -3.38745 q 0,-1.35498 0.51269,-1.9226 0.53101,-0.58594 1.37329,-0.58594 0.82398,0 1.33667,0.58594 0.53101,0.56762 0.53101,1.9226 v 3.38745 h 6.9397 q 1.35498,0 1.9226,0.53101 0.58594,0.5127 0.58594,1.35498 0,0.82398 -0.58594,1.35498 -0.56762,0.5127 -1.9226,0.5127 z m 24.77417,-10.87647 v 3.97339 h -4.46777 v -3.97339 z m 0.51269,7.1228 v 12.87232 h 4.5044 q 1.35498,0 1.92261,0.531 0.58593,0.5127 0.58593,1.35498 0,0.82398 -0.58593,1.35499 -0.56763,0.51269 -1.92261,0.51269 h -12.76245 q -1.35498,0 -1.94092,-0.51269 -0.56763,-0.53101 -0.56763,-1.3733 0,-0.82397 0.56763,-1.33667 0.58594,-0.531 1.94092,-0.531 h 4.50439 v -9.11865 h -3.02124 q -1.33667,0 -1.92261,-0.5127 -0.58593,-0.531 -0.58593,-1.37329 0,-0.82397 0.56762,-1.33667 0.58594,-0.53101 1.94092,-0.53101 z m 30.39551,8.62427 q 0,2.16065 -1.20849,4.19312 -1.19019,2.01416 -3.57056,3.22265 -2.36206,1.19019 -4.94385,1.19019 -2.56348,0 -4.90723,-1.17188 -2.34375,-1.19018 -3.57055,-3.22265 -1.22681,-2.03247 -1.22681,-4.24805 0,-2.2522 1.24512,-4.41284 1.24512,-2.17896 3.57056,-3.42407 2.34375,-1.24512 4.88891,-1.24512 2.56348,0 4.92554,1.28174 2.38037,1.26343 3.58887,3.42407 1.20849,2.14233 1.20849,4.41284 z m -3.75366,0.0183 q 0,-1.81274 -1.30005,-3.33252 -1.77612,-2.05078 -4.66919,-2.05078 -2.54516,0 -4.24805,1.62964 -1.70288,1.62964 -1.70288,3.77197 0,1.75782 1.72119,3.2959 1.7212,1.51978 4.22974,1.51978 2.52686,0 4.24805,-1.51978 1.72119,-1.53808 1.72119,-3.31421 z m 12.70752,-8.64258 v 1.26343 q 1.02539,-0.8789 2.2522,-1.31836 1.24511,-0.43945 2.69165,-0.43945 3.33252,0 5.27343,2.06909 1.53809,1.64795 1.53809,4.32129 v 6.97632 q 1.19019,0 1.75781,0.531 0.56763,0.5127 0.56763,1.35498 0,0.82398 -0.58594,1.35499 -0.56762,0.51269 -1.92261,0.51269 h -3.38745 q -1.35498,0 -1.94091,-0.51269 -0.56763,-0.53101 -0.56763,-1.3733 0,-0.82397 0.56763,-1.33667 0.56762,-0.531 1.75781,-0.531 v -7.08618 q 0,-1.22681 -0.65918,-1.79444 -0.8606,-0.73242 -2.58179,-0.73242 -1.30005,0 -2.28882,0.5127 -0.97046,0.49438 -2.47192,2.12402 v 6.97632 q 1.44653,0 1.86767,0.27466 0.89722,0.54931 0.89722,1.61132 0,0.82398 -0.58594,1.35499 -0.56762,0.51269 -1.9226,0.51269 h -4.26636 q -1.35498,0 -1.94092,-0.51269 -0.56763,-0.53101 -0.56763,-1.3733 0,-1.02539 0.87891,-1.59301 0.43945,-0.27466 1.88599,-0.27466 v -9.11865 q -1.19019,0 -1.75782,-0.53101 -0.56762,-0.53101 -0.56762,-1.35498 0,-0.82397 0.56762,-1.33667 0.58594,-0.53101 1.94092,-0.53101 z" + id="text1" + style="font-weight:bold;font-size:37.5px;line-height:1.25;font-family:'Courier New';-inkscape-font-specification:'Courier New, Bold';fill:#4d4d4d;stroke-width:0.9375" + aria-label="TACo operation" /> + d="m -29.414623,758.49292 v 14.68506 h 2.526855 q 1.354981,0 1.922608,0.531 0.585937,0.5127 0.585937,1.35498 0,0.82398 -0.585937,1.35499 -0.567627,0.51269 -1.922608,0.51269 h -8.789062 q -1.354981,0 -1.940918,-0.51269 -0.567627,-0.53101 -0.567627,-1.3733 0,-0.82397 0.567627,-1.33667 0.585937,-0.531 1.940918,-0.531 h 2.508545 v -14.68506 h -4.064942 v 3.55225 q 0,1.35498 -0.531006,1.94091 -0.512695,0.56763 -1.35498,0.56763 -0.823975,0 -1.354981,-0.56763 -0.512695,-0.58593 -0.512695,-1.94091 v -7.32422 l 19.445801,0.0183 v 7.30591 q 0,1.35498 -0.531006,1.94091 -0.512695,0.56763 -1.35498,0.56763 -0.823975,0 -1.354981,-0.56763 -0.512695,-0.58593 -0.512695,-1.94091 v -3.55225 z m 25.2685544,12.39624 h -9.1186524 l -0.915527,2.28882 h 0.915527 q 1.354981,0 1.922608,0.531 0.585937,0.5127 0.585937,1.35498 0,0.82398 -0.585937,1.35499 -0.567627,0.51269 -1.922608,0.51269 h -5.053711 q -1.35498,0 -1.922607,-0.51269 -0.585938,-0.53101 -0.585938,-1.3733 0,-0.84228 0.604248,-1.37329 0.604248,-0.531 1.99585,-0.49438 l 5.895996,-14.68506 h -2.453613 q -1.354981,0 -1.940918,-0.5127 -0.567627,-0.531 -0.567627,-1.37329 0,-0.84228 0.567627,-1.35498 0.585937,-0.531 1.940918,-0.531 l 8.111572,0.0183 7.47070308,18.43872 q 1.31835942,0 1.73950192,0.29297 0.8422852,0.60425 0.8422852,1.59301 0,0.82398 -0.567627,1.35499 -0.5676269,0.51269 -1.92260738,0.51269 H -4.1643791 q -1.3549805,0 -1.940918,-0.51269 -0.5676269,-0.53101 -0.5676269,-1.3733 0,-0.82397 0.5676269,-1.33667 0.5859375,-0.531 1.940918,-0.531 h 0.9155273 z m -1.5563965,-3.75366 -3.0212402,-7.43408 -3.0395507,7.43408 z M 19.657642,755.69141 q 0.347901,-0.47608 0.750733,-0.71412 0.421142,-0.23803 0.897217,-0.23803 0.823974,0 1.33667,0.56762 0.531005,0.56763 0.531005,1.92261 v 3.18604 q 0,1.35498 -0.531005,1.94092 -0.512696,0.56762 -1.33667,0.56762 -0.750733,0 -1.208497,-0.42114 -0.457763,-0.42114 -0.67749,-1.57471 -0.128174,-0.76904 -0.512695,-1.19018 -0.750732,-0.82398 -2.105713,-1.31836 -1.33667,-0.49439 -2.69165,-0.49439 -1.684571,0 -3.094483,0.73242 -1.4099119,0.73243 -2.4902341,2.38038 -1.0803223,1.64795 -1.0803223,3.91845 v 2.43531 q 0,2.70996 1.9592285,4.5227 1.9775389,1.81274 5.4748539,1.81274 2.087402,0 3.533935,-0.56762 0.842285,-0.32959 1.794434,-1.30005 0.585937,-0.58594 0.915527,-0.75073 0.32959,-0.18311 0.750733,-0.18311 0.750732,0 1.318359,0.56763 0.567627,0.56763 0.567627,1.33667 0,0.76904 -0.769043,1.64795 -1.116943,1.28174 -2.874756,2.01416 -2.362061,0.98877 -5.218506,0.98877 -3.332519,0 -6.0058592,-1.37329 -2.1606445,-1.09864 -3.6804199,-3.4607 -1.5197754,-2.38037 -1.5197754,-5.18188 v -2.54517 q 0,-2.92969 1.3549805,-5.45654 1.373291,-2.54517 3.7902832,-3.91846 2.4169918,-1.37329 5.1269528,-1.37329 1.629639,0 3.039551,0.38452 1.428223,0.36621 2.655029,1.13526 z m 26.367188,13.23852 q 0,2.16065 -1.208496,4.19312 -1.190186,2.01416 -3.570557,3.22265 -2.36206,1.19019 -4.943848,1.19019 -2.563476,0 -4.907226,-1.17188 -2.34375,-1.19018 -3.570557,-3.22265 -1.226806,-2.03247 -1.226806,-4.24805 0,-2.2522 1.245117,-4.41284 1.245117,-2.17896 3.570556,-3.42407 2.34375,-1.24512 4.888916,-1.24512 2.563477,0 4.925538,1.28174 2.380371,1.26343 3.588867,3.42407 1.208496,2.14233 1.208496,4.41284 z m -3.753662,0.0183 q 0,-1.81274 -1.300049,-3.33252 -1.776123,-2.05078 -4.66919,-2.05078 -2.545166,0 -4.248046,1.62964 -1.702881,1.62964 -1.702881,3.77197 0,1.75782 1.721191,3.2959 1.721192,1.51978 4.229736,1.51978 2.526856,0 4.248047,-1.51978 1.721192,-1.53808 1.721192,-3.31421 z m 38.232422,-8.64258 v 2.34375 q 2.36206,-1.70288 3.717041,-2.2705 1.373291,-0.56763 2.563476,-0.56763 1.831055,0 3.552246,1.35498 1.171875,0.91553 1.171875,1.86768 0,0.80566 -0.567627,1.37329 -0.549316,0.54931 -1.33667,0.54931 -0.6958,0 -1.464843,-0.6958 -0.769043,-0.6958 -1.373291,-0.6958 -0.787354,0 -2.362061,0.98877 -1.556396,0.98877 -3.900146,2.96631 v 5.65796 h 5.346679 q 1.354981,0 1.922608,0.531 0.585937,0.5127 0.585937,1.35498 0,0.82398 -0.585937,1.35499 -0.567627,0.51269 -1.922608,0.51269 H 74.516041 q -1.354981,0 -1.940918,-0.51269 -0.567627,-0.53101 -0.567627,-1.3733 0,-0.82397 0.567627,-1.33667 0.585937,-0.531 1.940918,-0.531 h 2.233887 v -9.11865 h -1.354981 q -1.35498,0 -1.940918,-0.5127 -0.567627,-0.53101 -0.567627,-1.37329 0,-0.82397 0.567627,-1.33667 0.585938,-0.53101 1.940918,-0.53101 z m 32.70264,10.21729 H 97.807056 q 0.585938,1.46484 2.069092,2.36206 1.501462,0.89722 4.046632,0.89722 2.0874,0 5.54809,-0.89722 1.42823,-0.36621 1.97754,-0.36621 0.75074,0 1.26343,0.531 0.5127,0.53101 0.5127,1.33667 0,0.73243 -0.54932,1.24512 -0.73242,0.67749 -3.57056,1.30005 -2.83813,0.60425 -5.45654,0.60425 -4.504394,0 -7.214355,-2.54517 -2.69165,-2.54516 -2.69165,-6.2622 0,-3.95508 2.911377,-6.42701 2.929687,-2.49023 6.738278,-2.49023 2.28882,0 4.19312,0.80566 1.92261,0.80567 2.85644,1.73951 1.31836,1.35498 2.17896,3.35083 0.58594,1.3916 0.58594,3.22265 z m -4.1565,-3.75366 q -0.86059,-1.61133 -2.2522,-2.39868 -1.3916,-0.80567 -3.3142,-0.80567 -1.9043,0 -3.2959,0.80567 -1.391604,0.78735 -2.27051,2.39868 z m 21.29517,-2.06909 q -0.91553,-0.56763 -1.92261,-0.84229 -1.00708,-0.29297 -2.10571,-0.29297 -2.17896,0 -3.4607,0.71411 -0.56762,0.31128 -0.56762,0.67749 0,0.42115 0.76904,0.82398 0.58594,0.29297 2.61841,0.56762 3.73535,0.5127 5.20019,1.0254 1.92261,0.67749 2.96631,2.01416 1.0437,1.33667 1.0437,2.81982 0,2.01416 -1.77612,3.36914 -2.54517,1.95923 -6.61011,1.95923 -1.62964,0 -3.02124,-0.29297 -1.37329,-0.27466 -2.52685,-0.82397 -0.27466,0.23803 -0.58594,0.36621 -0.31128,0.12817 -0.64087,0.12817 -0.87891,0 -1.40991,-0.56763 -0.5127,-0.58593 -0.5127,-1.94091 v -1.26343 q 0,-1.35498 0.5127,-1.92261 0.531,-0.58594 1.37329,-0.58594 0.67749,0 1.13525,0.38452 0.45777,0.36621 0.71412,1.28174 0.86059,0.73242 2.06909,1.11695 1.20849,0.36621 2.7832,0.36621 2.58179,0 4.01001,-0.80567 0.67749,-0.40283 0.67749,-0.84228 0,-0.73242 -0.97046,-1.2085 -0.97046,-0.47607 -4.01001,-0.80566 -4.5227,-0.47608 -6.04248,-1.83106 -1.51977,-1.33667 -1.51977,-3.2959 0,-2.01416 1.70288,-3.35083 2.30713,-1.83105 6.04248,-1.83105 1.30005,0 2.49023,0.25635 1.2085,0.23803 2.30713,0.75073 0.3479,-0.25635 0.64087,-0.38452 0.31128,-0.12818 0.56763,-0.12818 0.76904,0 1.28173,0.58594 0.5127,0.56763 0.5127,1.92261 v 0.91553 q 0,1.2268 -0.29297,1.66626 -0.58594,0.84228 -1.59302,0.84228 -0.67749,0 -1.19018,-0.42114 -0.5127,-0.42114 -0.65918,-1.11694 z m 26.42212,-4.39454 v 12.87232 q 1.19018,0 1.75781,0.531 0.56763,0.53101 0.56763,1.35498 0,0.82398 -0.58594,1.35499 -0.56763,0.51269 -1.92261,0.51269 h -3.57055 v -0.8606 q -1.61133,0.73243 -3.07618,1.09864 -1.46484,0.36621 -2.7832,0.36621 -1.84936,0 -3.20435,-0.76904 -1.35498,-0.78736 -2.14233,-2.16065 -0.56763,-0.98877 -0.56763,-2.47192 v -8.07495 h -0.64087 q -1.35498,0 -1.94091,-0.5127 -0.56763,-0.53101 -0.56763,-1.37329 0,-0.82397 0.56763,-1.33667 0.58593,-0.53101 1.94091,-0.53101 h 4.39454 v 11.16944 q 0,1.19018 0.56762,1.75781 0.58594,0.54932 1.77613,0.54932 1.13525,0 2.4353,-0.43946 1.31836,-0.45776 3.24097,-1.62964 v -7.6538 h -1.35499 q -1.35498,0 -1.94091,-0.5127 -0.56763,-0.53101 -0.56763,-1.37329 0,-0.82397 0.56763,-1.33667 0.58593,-0.53101 1.94091,-0.53101 z m 16.40625,-7.1228 v 19.99512 h 4.50439 q 1.35498,0 1.92261,0.531 0.58594,0.5127 0.58594,1.35498 0,0.82398 -0.58594,1.35499 -0.56763,0.51269 -1.92261,0.51269 h -12.76245 q -1.35498,0 -1.94092,-0.51269 -0.56762,-0.53101 -0.56762,-1.3733 0,-0.82397 0.56762,-1.33667 0.58594,-0.531 1.94092,-0.531 h 4.5044 v -16.24146 h -3.02124 q -1.33667,0 -1.92261,-0.51269 -0.58594,-0.53101 -0.58594,-1.37329 0,-0.82398 0.56763,-1.33667 0.58593,-0.53101 1.94092,-0.53101 z m 19.70215,10.87647 v 7.52563 q 0,1.2085 0.49438,1.59302 0.76904,0.60425 2.74658,0.60425 2.87476,0 5.31006,-1.22681 0.93384,-0.47607 1.46484,-0.47607 0.73243,0 1.26343,0.54931 0.54932,0.54932 0.54932,1.33667 0,0.73242 -0.58594,1.26343 -0.89722,0.8606 -3.55224,1.59302 -2.63672,0.71411 -4.44947,0.71411 -3.49731,0 -5.25512,-1.50147 -1.73951,-1.51977 -1.73951,-3.71704 v -8.25805 h -1.35498 q -1.35498,0 -1.94091,-0.5127 -0.56763,-0.53101 -0.56763,-1.37329 0,-0.82397 0.56763,-1.33667 0.58593,-0.53101 1.94091,-0.53101 h 1.35498 v -3.38745 q 0,-1.35498 0.5127,-1.9226 0.531,-0.58594 1.37329,-0.58594 0.82397,0 1.33667,0.58594 0.53101,0.56762 0.53101,1.9226 v 3.38745 h 6.93969 q 1.35498,0 1.92261,0.53101 0.58594,0.5127 0.58594,1.35498 0,0.82397 -0.58594,1.35498 -0.56763,0.5127 -1.92261,0.5127 z" + id="text1-2" + style="font-weight:bold;font-size:37.5px;line-height:1.25;font-family:'Courier New';-inkscape-font-specification:'Courier New, Bold';fill:#4d4d4d;stroke-width:0.9375" + aria-label="TACo result" /> diff --git a/pyproject.toml b/pyproject.toml index bee8df5..8297ef7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,3 +34,10 @@ directory = "misc" name = "Misc" showcontent = true + +[tool.ruff] +select = ["E", "F", "I"] +ignore = ["E501"] + +[tool.ruff.isort] +known-first-party = ["porter"] diff --git a/requirements.txt b/requirements.txt index 1c3ba02..e601874 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,107 +1,103 @@ -i https://pypi.python.org/simple -aiohttp==3.8.1; python_version >= '3.6' +aiohttp==3.8.2; python_version >= '3.6' aiosignal==1.3.1; python_version >= '3.7' appdirs==1.4.4 -async-timeout==4.0.2; python_version >= '3.6' -attrs==22.1.0; python_version >= '3.5' -autobahn==22.7.1; python_version >= '3.7' +async-timeout==4.0.3; python_version >= '3.7' +attrs==23.1.0; python_version >= '3.7' +autobahn==23.6.2; python_version >= '3.9' automat==22.10.0 -base58==2.1.1; python_version >= '3.5' -bitarray==2.6.0 +bitarray==2.8.2 +blinker==1.6.3; python_version >= '3.7' bytestring-splitter==2.4.1 cached-property==1.5.2 -certifi==2022.12.7; python_version >= '3.6' -cffi==1.15.1 -charset-normalizer==2.1.1; python_version >= '3.6' -click==8.1.3; python_version >= '3.7' +certifi==2023.7.22; python_version >= '3.6' +cffi==1.16.0; python_version >= '3.8' +charset-normalizer==2.1.1; python_full_version >= '3.6.0' +click==8.1.7; python_version >= '3.7' colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' constant-sorrow==0.1.0a9; python_version >= '3' constantly==15.1.0 -cryptography==38.0.4; python_version >= '3.6' -cytoolz==0.12.0; implementation_name == 'cpython' -dateparser==1.1.4; python_version >= '3.7' -eip712-structs==1.1.0 -eth-abi==3.0.1; python_version >= '3.7' and python_version < '4' -eth-account==0.7.0; python_version >= '3.6' and python_version < '4' -eth-bloom==1.0.4; python_version >= '3.6' and python_version < '4' -eth-hash[pycryptodome]==0.3.3; python_version >= '3.5' and python_version < '4' -eth-keyfile==0.6.0 +cryptography==41.0.5; python_version >= '3.7' +cytoolz==0.12.2; implementation_name == 'cpython' +dateparser==1.1.8; python_version >= '3.7' +eth-abi==4.2.1; python_version < '4' and python_full_version >= '3.7.2' +eth-account==0.8.0; python_version >= '3.6' and python_version < '4' +eth-bloom==2.0.0; python_version >= '3.7' and python_version < '4' +eth-hash[pycryptodome]==0.5.2; python_version >= '3.7' and python_version < '4' +eth-keyfile==0.6.1 eth-keys==0.4.0 eth-rlp==0.3.0; python_version >= '3.7' and python_version < '4' -eth-tester==0.8.0b1; python_full_version >= '3.6.8' and python_version < '4' -eth-typing==3.2.0; python_version >= '3.6' and python_version < '4' -eth-utils==2.1.0; python_version >= '3.7' and python_version < '4' -flask-cors==3.0.10 -flask==2.2.2; python_version >= '3.7' -frozenlist==1.3.3; python_version >= '3.7' -git+https://github.com/nucypher/nucypher.git@9ed0186060fa59da827b2e49f70530ce65745054#egg=nucypher +eth-tester==0.9.1b1; python_version < '4' and python_full_version >= '3.6.8' +eth-typing==3.5.1; python_version < '4' and python_full_version >= '3.7.2' +eth-utils==2.3.0; python_version >= '3.7' and python_version < '4' +flask==3.0.0; python_version >= '3.8' +flask-cors==4.0.0 +frozenlist==1.4.0; python_version >= '3.8' hendrix==4.0.0 -hexbytes==0.3.0; python_version >= '3.7' and python_version < '4' -humanize==4.4.0; python_version >= '3.7' +hexbytes==0.3.1; python_version >= '3.7' and python_version < '4' +humanize==4.8.0; python_version >= '3.8' hyperlink==21.0.0 idna==3.4; python_version >= '3.5' -importlib-metadata==5.1.0; python_version < '3.10' incremental==22.10.0 -ipfshttpclient==0.8.0a2; python_full_version >= '3.6.2' and python_full_version not in '3.7.0, 3.7.1' itsdangerous==2.1.2; python_version >= '3.7' -jinja2==3.0.3; python_version >= '3.6' -jsonschema==4.17.1; python_version >= '3.7' -lru-dict==1.1.8 +jinja2==3.1.2; python_version >= '3.7' +jsonschema==4.19.1; python_version >= '3.8' +jsonschema-specifications==2023.7.1; python_version >= '3.8' +lru-dict==1.2.0 mako==1.2.4; python_version >= '3.7' -markupsafe==2.1.1; python_version >= '3.7' -marshmallow==3.19.0; python_version >= '3.7' +markupsafe==2.1.3; python_version >= '3.7' +marshmallow==3.20.1; python_version >= '3.8' maya==0.6.1 mnemonic==0.20; python_version >= '3.5' +msgpack==1.0.7; python_version >= '3.8' msgpack-python==0.5.6 -msgpack==1.0.4 -multiaddr==0.0.9; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -multidict==6.0.2; python_version >= '3.7' -mypy-extensions==0.4.3 -netaddr==0.8.0 -nucypher-core==0.4.1 -packaging==21.3; python_version >= '3.6' -parsimonious==0.8.1 -pendulum==2.1.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -protobuf==3.20.1; python_version >= '3.7' +multidict==5.2.0; python_version >= '3.6' +mypy-extensions==1.0.0; python_version >= '3.5' +nucypher@ git+https://github.com/nucypher/nucypher.git@4b029f707c021da8e87f5a753c9eadd86dbe4b30 +nucypher-core==0.13.0 +packaging==23.2; python_version >= '3.7' +parsimonious==0.9.0 +pendulum==3.0.0b1; python_version >= '3.8' +prometheus-client==0.19.0; python_version >= '3.8' +prometheus-flask-exporter==0.23.0 +protobuf==4.25.0rc2; python_version >= '3.8' py-ecc==6.0.0; python_version >= '3.6' and python_version < '4' -py-evm==0.6.1a1 -pyasn1-modules==0.2.8 -pyasn1==0.4.8 +py-evm==0.7.0a4 +pyasn1==0.5.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' +pyasn1-modules==0.3.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' pychalk==2.0.1 pycparser==2.21 -pycryptodome==3.16.0 +pycryptodome==3.19.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' pyethash==0.1.27 pynacl==1.5.0; python_version >= '3.6' -pyopenssl==22.1.0; python_version >= '3.6' -pyparsing==3.0.9; python_full_version >= '3.6.8' -pyrsistent==0.19.2; python_version >= '3.7' -pysha3==1.0.2 -python-dateutil==2.8.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2' -pytz-deprecation-shim==0.1.0.post0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' -pytz==2022.6 -pytzdata==2020.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -regex==2022.10.31; python_version >= '3.6' -requests==2.28.1; python_version >= '3.7' and python_version < '4' +pyopenssl==23.2.0; python_version >= '3.6' +python-dateutil==2.8.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +pytz==2023.3.post1 +pyunormalize==15.0.0; python_version >= '3.6' +referencing==0.30.2; python_version >= '3.8' +regex==2023.10.3; python_version >= '3.7' +requests==2.31.0; python_version >= '3.7' rlp==3.0.0 +rpds-py==0.10.6; python_version >= '3.8' semantic-version==2.10.0; python_version >= '2.7' -service-identity==21.1.0 -six==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2' +service-identity==23.1.0; python_version >= '3.8' +setuptools==68.2.2; python_version >= '3.8' +six==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' snaptime==0.2.4 sortedcontainers==2.4.0 tabulate==0.9.0; python_version >= '3.7' +time-machine==2.13.0; implementation_name != 'pypy' toolz==0.12.0; python_version >= '3.5' -trie==2.0.2; python_version >= '3.6' and python_version < '4' -twisted==22.10.0; python_full_version >= '3.7.1' -txaio==22.2.1; python_version >= '3.6' -typing-extensions==4.4.0; python_version >= '3.7' -tzdata==2022.6; python_version >= '3.6' -tzlocal==4.2; python_version >= '3.6' -urllib3==1.26.13; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' -varint==1.0.2 -watchdog==2.1.9; python_version >= '3.6' -web3==6.0.0b6; python_full_version >= '3.7.2' -websockets==10.4; python_version >= '3.7' -werkzeug==2.2.2; python_version >= '3.7' -yarl==1.8.1; python_version >= '3.7' -zipp==3.11.0; python_version >= '3.7' -zope.interface==5.5.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +trie==2.1.1; python_version >= '3.7' and python_version < '4' +twisted==23.8.0; python_full_version >= '3.7.1' +txaio==23.1.1; python_version >= '3.7' +typing-extensions==4.8.0; python_version >= '3.8' +tzdata==2023.3; python_version >= '2' +tzlocal==5.2; python_version >= '3.8' +urllib3==2.0.7; python_version >= '3.7' +watchdog==3.0.0; python_version >= '3.7' +web3==6.11.1; python_full_version >= '3.7.2' +websockets==12.0; python_version >= '3.8' +werkzeug==3.0.1; python_version >= '3.8' +yarl==1.9.2; python_version >= '3.7' +zope-interface==6.1; python_version >= '3.7' diff --git a/scripts/install_solc.py b/scripts/install_solc.py deleted file mode 100644 index 563a083..0000000 --- a/scripts/install_solc.py +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env python3 - -from solcx import install_solc -from nucypher.blockchain.eth.sol import SOLIDITY_COMPILER_VERSION - -install_solc(SOLIDITY_COMPILER_VERSION) diff --git a/scripts/relock_dependencies.sh b/scripts/relock_dependencies.sh new file mode 100755 index 0000000..c73423a --- /dev/null +++ b/scripts/relock_dependencies.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +# Parse optional flag -k, to be used when we want to base the process on an existing Pipfile.lock +KEEP_LOCK=false +OPTIND=1 +while getopts 'k' opt; do + case $opt in + k) KEEP_LOCK=true ;; + *) echo 'Error in command line parsing' >&2 + exit 1 + esac +done +shift "$(( OPTIND - 1 ))" + +# can change output file names with relock_dependencies.sh +PREFIX=${1:-requirements} + +# these steps might fail, but that's okay. +if ! "$KEEP_LOCK"; then + echo "Removing existing Pipfile.lock file" + rm -f Pipfile.lock +fi + +echo "Removing existing requirement files" +pipenv --rm +rm -f $PREFIX.txt +rm -f dev-$PREFIX.txt + +echo "Removing pip cache" +pip cache purge + +# start enforcing failures +set -e + +echo "Building Development Requirements" +pipenv --python 3.11 lock --clear --pre --dev-only +pipenv requirements --dev-only > dev-$PREFIX.txt + +echo "Building Standard Requirements" +pipenv --python 3.11 lock --clear --pre +pipenv requirements > $PREFIX.txt + +echo "OK!" diff --git a/scripts/run_unit_tests.sh b/scripts/run_tests.sh old mode 100755 new mode 100644 similarity index 66% rename from scripts/run_unit_tests.sh rename to scripts/run_tests.sh index e84a379..2b04db1 --- a/scripts/run_unit_tests.sh +++ b/scripts/run_tests.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash set -e -pytest tests/unit +pytest tests exit 0 diff --git a/setup.py b/setup.py index f7104a9..1d13bcc 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,6 @@ # -*- coding: utf-8 -*- import os -import subprocess from pathlib import Path from typing import Dict from urllib.parse import urlparse @@ -19,18 +18,17 @@ PACKAGE_NAME = 'porter' BASE_DIR = Path(__file__).parent PYPI_CLASSIFIERS = [ - "Development Status :: 3 - Alpha", - "Intended Audience :: Developers", - "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", - "Natural Language :: English", - "Operating System :: OS Independent", - "Programming Language :: Python", - "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Topic :: Security" + "Development Status :: 3 - Alpha", + "Intended Audience :: Developers", + "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", + "Natural Language :: English", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Topic :: Security", ] ABOUT: Dict[str, str] = dict() @@ -72,7 +70,6 @@ class PostDevelopCommand(develop): def run(self): """development setup scripts (pre-requirements)""" develop.run(self) - subprocess.call(f"scripts/install_solc.py") # diff --git a/tests/conftest.py b/tests/conftest.py index a199e8c..bdd9d04 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,16 +1,43 @@ import os +from typing import Iterable, List, Optional, Tuple +from unittest.mock import MagicMock +import maya +import prometheus_client import pytest from click.testing import CliRunner +from eth_typing import ChecksumAddress from eth_utils import to_checksum_address -from nucypher.config.constants import TEMPORARY_DOMAIN -from nucypher.crypto.powers import DecryptingPower -from nucypher.network.nodes import Learner +from nucypher.blockchain.eth.actors import Operator +from nucypher.blockchain.eth.agents import ( + ContractAgency, + CoordinatorAgent, + StakingProvidersReservoir, + TACoChildApplicationAgent, +) +from nucypher.blockchain.eth.interfaces import BlockchainInterfaceFactory +from nucypher.blockchain.eth.registry import ContractRegistry +from nucypher.blockchain.eth.signers.software import Web3Signer +from nucypher.characters.lawful import Enrico, Ursula +from nucypher.crypto.ferveo import dkg +from nucypher.crypto.powers import DecryptingPower, RitualisticPower +from nucypher.network.nodes import Learner, Teacher +from nucypher.policy.conditions.lingo import ConditionLingo from nucypher.utilities.logging import GlobalLoggerSettings -from nucypher_core import Address, HRAC, TreasureMap +from nucypher_core import HRAC, Address, ThresholdMessageKit, TreasureMap +from nucypher_core.ferveo import DkgPublicKey, Validator +from prometheus_flask_exporter import PrometheusMetrics from porter.emitters import WebEmitter from porter.main import Porter +from tests.constants import ( + MOCK_ETH_PROVIDER_URI, + TEMPORARY_DOMAIN, + TESTERCHAIN_CHAIN_ID, +) +from tests.mock.agents import MockContractAgent +from tests.mock.interfaces import MockBlockchain +from tests.utils.registry import MockRegistrySource, mock_registry_sources # Crash on server error by default WebEmitter._crash_on_error_default = True @@ -20,38 +47,12 @@ 'pytest-nucypher', # Includes external fixtures module from nucypher ] -def pytest_addoption(parser): - parser.addoption("--run-nightly", - action="store_true", - default=False, - help="run tests even if they are marked as nightly") - -def pytest_configure(config): - message = "{0}: mark test as {0} to run (skipped by default, use '{1}' to include these tests)" - config.addinivalue_line("markers", message.format("nightly", "--run-nightly")) +def pytest_addhooks(pluginmanager): + pluginmanager.set_blocked("ape_test") def pytest_collection_modifyitems(config, items): - - # - # Handle slow tests marker - # - - option_markers = { - "--run-nightly": "nightly" - } - - for option, marker in option_markers.items(): - option_is_set = config.getoption(option) - if option_is_set: - continue - - skip_reason = pytest.mark.skip(reason=f"need {option} option to run tests marked with '@pytest.mark.{marker}'") - for item in items: - if marker in item.keywords: - item.add_marker(skip_reason) - # # Handle Log Level # @@ -67,6 +68,16 @@ def pytest_collection_modifyitems(config, items): @pytest.fixture(scope='session') def monkeysession(): from _pytest.monkeypatch import MonkeyPatch + + mpatch = MonkeyPatch() + yield mpatch + mpatch.undo() + + +@pytest.fixture(scope="module") +def monkeymodule(): + from _pytest.monkeypatch import MonkeyPatch + mpatch = MonkeyPatch() yield mpatch mpatch.undo() @@ -88,17 +99,126 @@ def _get_random_checksum_address(): return _get_random_checksum_address +@pytest.fixture(scope="module") +def testerchain(mock_testerchain, module_mocker) -> MockBlockchain: + def always_use_mock(*a, **k): + return mock_testerchain + + module_mocker.patch.object( + BlockchainInterfaceFactory, "get_interface", always_use_mock + ) + return mock_testerchain + + +@pytest.fixture(scope="module", autouse=True) +def mock_condition_blockchains(module_mocker): + """adds testerchain's chain ID to permitted conditional chains""" + module_mocker.patch.dict( + "nucypher.policy.conditions.evm._CONDITION_CHAINS", + {TESTERCHAIN_CHAIN_ID: "eth-tester/pyevm"}, + ) + + +@pytest.fixture(scope="module") +def test_registry(module_mocker): + with mock_registry_sources(mocker=module_mocker): + mock_source = MockRegistrySource(domain=TEMPORARY_DOMAIN) + registry = ContractRegistry(source=mock_source) + yield registry + + +@pytest.fixture(scope="module", autouse=True) +def staking_providers(testerchain, test_registry, monkeymodule): + def faked(self, *args, **kwargs): + return testerchain.stake_providers_accounts[ + testerchain.ursulas_accounts.index(self.transacting_power.account) + ] + + Operator.get_staking_provider_address = faked + return testerchain.stake_providers_accounts + + +@pytest.fixture(scope="module", autouse=True) +def mock_contract_agency(): + from tests.mock.agents import MockContractAgency + + # Monkeypatch # TODO: Use better tooling for this monkeypatch? + get_agent = ContractAgency.get_agent + get_agent_by_name = ContractAgency.get_agent_by_contract_name + ContractAgency.get_agent = MockContractAgency.get_agent + ContractAgency.get_agent_by_contract_name = ( + MockContractAgency.get_agent_by_contract_name + ) + + # Test + yield MockContractAgency() + + # Restore the monkey patching + ContractAgency.get_agent = get_agent + ContractAgency.get_agent_by_contract_name = get_agent_by_name + + +@pytest.fixture(scope="module") +def coordinator_agent(mock_contract_agency) -> MockContractAgent: + coordinator_agent = mock_contract_agency.get_agent( + CoordinatorAgent, registry=None, provider_uri=None # parameters don't matter + ) + return coordinator_agent + + +@pytest.fixture(scope="module", autouse=True) +def mock_condition_provider_configuration(module_mocker, testerchain): + module_mocker.patch.object( + Operator, "_make_condition_provider", return_value=testerchain.provider + ) + + +@pytest.fixture(scope="module", autouse=True) +def mock_sample_reservoir(testerchain, mock_contract_agency): + def mock_reservoir( + without: Optional[Iterable[ChecksumAddress]] = None, *args, **kwargs + ): + addresses = { + address: 1 + for address in testerchain.stake_providers_accounts + if address not in without + } + return StakingProvidersReservoir(addresses) + + mock_agent = mock_contract_agency.get_agent(TACoChildApplicationAgent) + mock_agent.get_staking_provider_reservoir = mock_reservoir + + +@pytest.fixture(scope="module", autouse=True) +def mock_substantiate_stamp(module_mocker, monkeymodule): + fake_signature = b"\xb1W5?\x9b\xbaix>'\xfe`\x1b\x9f\xeb*9l\xc0\xa7\xb9V\x9a\x83\x84\x04\x97\x0c\xad\x99\x86\x81W\x93l\xc3\xbde\x03\xcd\"Y\xce\xcb\xf7\x02z\xf6\x9c\xac\x84\x05R\x9a\x9f\x97\xf7\xa02\xb2\xda\xa1Gv\x01" + module_mocker.patch.object(Ursula, "_substantiate_stamp", autospec=True) + module_mocker.patch.object(Ursula, "operator_signature", fake_signature) + module_mocker.patch.object(Teacher, "validate_operator") + + +@pytest.fixture(scope="module") +def mock_signer(get_random_checksum_address): + signer = MagicMock(spec=Web3Signer) + signer.sign_message.return_value = os.urandom(32) + signer.accounts = [get_random_checksum_address()] + return signer + + @pytest.fixture(scope="module") @pytest.mark.usefixtures('testerchain', 'agency') -def porter(ursulas, mock_rest_middleware): - porter = Porter(domain=TEMPORARY_DOMAIN, - eth_provider_uri="tester://pyevm", - abort_on_learning_error=True, - start_learning_now=True, - known_nodes=ursulas, - verify_node_bonding=False, - execution_timeout=2, - network_middleware=mock_rest_middleware) +def porter(ursulas, mock_rest_middleware, test_registry): + porter = Porter( + domain=TEMPORARY_DOMAIN, + eth_endpoint=MOCK_ETH_PROVIDER_URI, + polygon_endpoint=MOCK_ETH_PROVIDER_URI, + registry=test_registry, + abort_on_learning_error=True, + start_learning_now=True, + known_nodes=ursulas, + verify_node_bonding=False, + network_middleware=mock_rest_middleware, + ) yield porter porter.stop_learning_loop() @@ -131,6 +251,126 @@ def random_treasure_map_data(alice, bob, ursulas): @pytest.fixture(scope='module') -def porter_web_controller(porter): +def porter_web_controller(porter, monkeymodule): + def _setup_prometheus(_porter, app): + _porter.controller.metrics = PrometheusMetrics(app) + _porter.controller.metrics.registry = prometheus_client.CollectorRegistry( + auto_describe=True + ) + + Porter._setup_prometheus = _setup_prometheus web_controller = porter.make_web_controller(crash_on_error=False) yield web_controller.test_client() + + +@pytest.fixture(scope="module") +def dkg_setup( + get_random_checksum_address, ursulas, coordinator_agent +) -> Tuple[int, DkgPublicKey, List[Ursula], int]: + ritual_id = 0 + num_shares = 8 + threshold = 5 + cohort = ursulas[:num_shares] + + # configure validator cohort + validators = [] + for ursula in cohort: + validators.append( + Validator( + address=ursula.checksum_address, + public_key=ursula.public_keys(RitualisticPower), + ) + ) + + validators.sort(key=lambda x: x.address) # must be sorted + cohort.sort(key=lambda x: x.checksum_address) # sort to match + + # Go through ritual and set up Ursulas + transcripts = [] + for i, validator in enumerate(validators): + transcript = dkg.generate_transcript( + ritual_id=ritual_id, + me=validator, + shares=num_shares, + threshold=threshold, + nodes=validators, + ) + transcripts.append(transcript) + + cohort[i].dkg_storage.store_transcript( + ritual_id=ritual_id, transcript=transcript + ) + + aggregated_transcript, public_key = dkg.aggregate_transcripts( + ritual_id=ritual_id, + me=validators[0], + shares=num_shares, + threshold=threshold, + transcripts=list(zip(validators, transcripts)), + ) + + for ursula in cohort: + ursula.dkg_storage.store_aggregated_transcript( + ritual_id=ritual_id, aggregated_transcript=aggregated_transcript + ) + ursula.dkg_storage.store_public_key(ritual_id=ritual_id, public_key=public_key) + + now = maya.now() + ritual = CoordinatorAgent.Ritual( + initiator=get_random_checksum_address(), + authority=get_random_checksum_address(), + access_controller=get_random_checksum_address(), + dkg_size=num_shares, + init_timestamp=now.epoch, + end_timestamp=now.add(days=1).epoch, + threshold=threshold, + total_transcripts=num_shares, + total_aggregations=num_shares, + public_key=CoordinatorAgent.Ritual.G1Point.from_dkg_public_key(public_key), + aggregation_mismatch=False, + aggregated_transcript=bytes(aggregated_transcript), + participants=[ + CoordinatorAgent.Ritual.Participant( + provider=ursula.checksum_address, + aggregated=True, + transcript=bytes(transcripts[i]), + decryption_request_static_key=ursula.threshold_request_power.get_pubkey_from_ritual_id( + ritual_id + ), + ) + for i, ursula in enumerate(cohort) + ], + ) + + # Configure CoordinatorAgent + coordinator_agent.get_ritual.return_value = ritual + coordinator_agent.get_ritual_status.return_value = ( + CoordinatorAgent.Ritual.Status.ACTIVE + ) + coordinator_agent.is_encryption_authorized.return_value = True + + return ritual_id, public_key, cohort, threshold + + +PLAINTEXT = "peace at dawn" +CONDITIONS = { + "version": ConditionLingo.VERSION, + "condition": { + "conditionType": "time", + "returnValueTest": {"value": 0, "comparator": ">"}, + "method": "blocktime", + "chain": TESTERCHAIN_CHAIN_ID, + }, +} + + +@pytest.mark.usefixtures("mock_rpc_condition") +@pytest.fixture(scope="module") +def dkg_encrypted_data(dkg_setup, mock_signer) -> Tuple[ThresholdMessageKit, bytes]: + _, public_key, _, _ = dkg_setup + enrico = Enrico(encrypting_key=public_key, signer=mock_signer) + threshold_message_kit = enrico.encrypt_for_dkg( + plaintext=PLAINTEXT.encode(), conditions=CONDITIONS + ) + + return threshold_message_kit, PLAINTEXT.encode() diff --git a/tests/pre/conftest.py b/tests/pre/conftest.py new file mode 100644 index 0000000..6d68a71 --- /dev/null +++ b/tests/pre/conftest.py @@ -0,0 +1,26 @@ +from typing import Iterable, Optional + +import pytest +from eth_typing import ChecksumAddress +from nucypher.blockchain.eth.agents import ( + StakingProvidersReservoir, + TACoApplicationAgent, +) + + +@pytest.fixture(scope="module", autouse=True) +def mock_sample_reservoir(testerchain, mock_contract_agency): + def mock_reservoir( + without: Optional[Iterable[ChecksumAddress]] = None, *args, **kwargs + ): + addresses = { + address: 1 + for address in testerchain.stake_providers_accounts + if address not in without + } + return StakingProvidersReservoir(addresses) + + # TODO - this is needed for PRE Policy.enact(...) sample functionality which + # uses TACoApplication - should we change this (in `nucypher`)? + mock_agent = mock_contract_agency.get_agent(TACoApplicationAgent) + mock_agent.get_staking_provider_reservoir = mock_reservoir diff --git a/tests/pre/test_porter_pre_python_interface.py b/tests/pre/test_porter_pre_python_interface.py new file mode 100644 index 0000000..530961d --- /dev/null +++ b/tests/pre/test_porter_pre_python_interface.py @@ -0,0 +1,22 @@ +from porter.utils import retrieval_request_setup + + +def test_retrieve_cfrags(porter, bob, alice, enacted_policy): + # Setup + retrieval_args, _ = retrieval_request_setup(enacted_policy, bob, alice) + + result = porter.retrieve_cfrags(**retrieval_args) + + assert result, "valid result returned" + + +def test_retrieve_cfrags_with_context( + porter, bob, alice, enacted_policy, valid_user_address_context +): + # Setup + retrieval_args, _ = retrieval_request_setup( + enacted_policy, bob, alice, context=valid_user_address_context + ) + + result = porter.retrieve_cfrags(**retrieval_args) + assert result, "valid result returned" diff --git a/tests/pre/test_porter_pre_web_interface.py b/tests/pre/test_porter_pre_web_interface.py new file mode 100644 index 0000000..d934bc5 --- /dev/null +++ b/tests/pre/test_porter_pre_web_interface.py @@ -0,0 +1,160 @@ +import json +from base64 import b64encode + +from nucypher.characters.lawful import Enrico +from nucypher.crypto.powers import DecryptingPower +from nucypher.policy.kits import PolicyMessageKit, RetrievalResult +from nucypher_core import RetrievalKit + +from porter.fields.base import JSON +from porter.fields.retrieve import RetrievalKit as RetrievalKitField +from porter.schema import PRERetrievalOutcomeSchema +from porter.utils import retrieval_params_decode_from_rest, retrieval_request_setup + + +def test_retrieve_cfrags( + porter, + porter_web_controller, + enacted_policy, + bob, + alice, + random_treasure_map_data, + valid_user_address_context, +): + # Send bad data to assert error return + response = porter_web_controller.post( + "/retrieve_cfrags", data=json.dumps({"bad": "input"}) + ) + assert response.status_code == 400 + + # Setup + original_message = ( + b"The paradox of education is precisely this - that as one begins to become " + b"conscious one begins to examine the society in which " + b"he is (they are) being educated." + ) # - James Baldwin + retrieve_cfrags_params, message_kits = retrieval_request_setup( + enacted_policy, + bob, + alice, + specific_messages=[original_message], + encode_for_rest=True, + ) + assert len(message_kits) == 1 + message_kit = message_kits[0] + + # + # Success + # + response = porter_web_controller.post( + "/retrieve_cfrags", data=json.dumps(retrieve_cfrags_params) + ) + assert response.status_code == 200 + + response_data = json.loads(response.data) + retrieval_results = response_data["result"]["retrieval_results"] + assert retrieval_results + + # expected results - can only compare length of results, ursulas are randomized to obtain cfrags + retrieve_args = retrieval_params_decode_from_rest(retrieve_cfrags_params) + expected_results = porter.retrieve_cfrags(**retrieve_args) + assert len(retrieval_results) == len(expected_results) + + # check that the re-encryption performed was valid + treasure_map = retrieve_args["treasure_map"] + policy_message_kit = PolicyMessageKit.from_message_kit( + message_kit=message_kit, + policy_encrypting_key=enacted_policy.public_key, + threshold=treasure_map.threshold, + ) + assert len(retrieval_results) == 1 + field = PRERetrievalOutcomeSchema() + cfrags = field.load(retrieval_results[0])["cfrags"] + verified_cfrags = {} + for ursula, cfrag in cfrags.items(): + # need to obtain verified cfrags (verified cfrags are not deserializable, only non-verified cfrags) + verified_cfrag = cfrag.verify( + capsule=policy_message_kit.message_kit.capsule, + verifying_pk=alice.stamp.as_umbral_pubkey(), + delegating_pk=enacted_policy.public_key, + receiving_pk=bob.public_keys(DecryptingPower), + ) + verified_cfrags[ursula] = verified_cfrag + retrieval_result_object = RetrievalResult(cfrags=verified_cfrags) + policy_message_kit = policy_message_kit.with_result(retrieval_result_object) + + assert policy_message_kit.is_decryptable_by_receiver() + + cleartext = bob._crypto_power.power_ups( + DecryptingPower + ).keypair.decrypt_message_kit(policy_message_kit) + assert cleartext == original_message + + # + # Try using multiple retrieval kits + # + multiple_retrieval_kits_params = dict(retrieve_cfrags_params) + enrico = Enrico(encrypting_key=enacted_policy.public_key) + retrieval_kit_1 = RetrievalKit.from_message_kit( + enrico.encrypt_for_pre(b"The paradox of education is precisely this") + ) + retrieval_kit_2 = RetrievalKit.from_message_kit( + enrico.encrypt_for_pre(b"that as one begins to become conscious") + ) + retrieval_kit_3 = RetrievalKit.from_message_kit( + enrico.encrypt_for_pre(b"begins to examine the society in which") + ) + retrieval_kit_4 = RetrievalKit.from_message_kit( + enrico.encrypt_for_pre(b"he is (they are) being educated.") + ) + retrieval_kit_field = RetrievalKitField() + # use multiple retrieval kits and serialize for json + multiple_retrieval_kits_params["retrieval_kits"] = [ + retrieval_kit_field._serialize(value=retrieval_kit_1, attr=None, obj=None), + retrieval_kit_field._serialize(value=retrieval_kit_2, attr=None, obj=None), + retrieval_kit_field._serialize(value=retrieval_kit_3, attr=None, obj=None), + retrieval_kit_field._serialize(value=retrieval_kit_4, attr=None, obj=None), + ] + response = porter_web_controller.post( + "/retrieve_cfrags", data=json.dumps(multiple_retrieval_kits_params) + ) + assert response.status_code == 200 + + response_data = json.loads(response.data) + retrieval_results = response_data["result"]["retrieval_results"] + assert retrieval_results + assert len(retrieval_results) == 4 + for i in range(0, 4): + assert len(retrieval_results[i]["cfrags"]) > 0 + assert len(retrieval_results[i]["errors"]) == 0 + + # + # Use context + # + context_field = JSON() + multiple_retrieval_kits_params["context"] = context_field._serialize( + valid_user_address_context, attr=None, obj=None + ) + response = porter_web_controller.post( + "/retrieve_cfrags", data=json.dumps(multiple_retrieval_kits_params) + ) + assert response.status_code == 200 + + response_data = json.loads(response.data) + retrieval_results = response_data["result"]["retrieval_results"] + assert retrieval_results + assert len(retrieval_results) == 4 + + # + # Failure + # + failure_retrieve_cfrags_params = dict(retrieve_cfrags_params) + # use encrypted treasure map + _, random_treasure_map = random_treasure_map_data + failure_retrieve_cfrags_params["treasure_map"] = b64encode( + bytes(random_treasure_map) + ).decode() + response = porter_web_controller.post( + "/retrieve_cfrags", data=json.dumps(failure_retrieve_cfrags_params) + ) + assert response.status_code == 400 # invalid treasure map provided diff --git a/tests/pre/test_pre_specifications.py b/tests/pre/test_pre_specifications.py new file mode 100644 index 0000000..90dd316 --- /dev/null +++ b/tests/pre/test_pre_specifications.py @@ -0,0 +1,264 @@ +import base64 +import random + +import pytest +from nucypher.crypto.powers import DecryptingPower +from nucypher_core import TreasureMap as TreasureMapClass +from nucypher_core.umbral import PublicKey + +from porter.fields.exceptions import ( + InvalidInputData, + SpecificationError, +) +from porter.fields.treasuremap import TreasureMap +from porter.fields.umbralkey import UmbralKey +from porter.main import Porter +from porter.schema import ( + BaseSchema, + PRERetrievalOutcomeSchema, + PRERetrieveCFrags, +) +from porter.utils import retrieval_request_setup + + +def test_alice_revoke(): + pass # TODO + + +def test_bob_retrieve_cfrags( + porter, + enacted_policy, + bob, + alice, + valid_user_address_context, + get_random_checksum_address, +): + bob_retrieve_cfrags_schema = PRERetrieveCFrags() + + # no args + with pytest.raises(InvalidInputData): + bob_retrieve_cfrags_schema.load({}) + + # Setup - no context + retrieval_args, _ = retrieval_request_setup( + enacted_policy, bob, alice, encode_for_rest=True + ) + bob_retrieve_cfrags_schema.load(retrieval_args) + + # simple schema load w/ optional context + retrieval_args, _ = retrieval_request_setup( + enacted_policy, + bob, + alice, + encode_for_rest=True, + context=valid_user_address_context, + ) + bob_retrieve_cfrags_schema.load(retrieval_args) + + # invalid context specified + retrieval_args, _ = retrieval_request_setup( + enacted_policy, + bob, + alice, + encode_for_rest=True, + context=[1, 2, 3], # list instead of dict + ) + with pytest.raises(InvalidInputData): + # invalid context type + bob_retrieve_cfrags_schema.load(retrieval_args) + + # missing required argument + updated_data = dict(retrieval_args) + updated_data.pop("context") # context is not a required param + key_to_remove = random.choice(list(updated_data.keys())) + del updated_data[key_to_remove] + with pytest.raises(InvalidInputData): + # missing arg + bob_retrieve_cfrags_schema.load(updated_data) + + # + # Retrieval output for 1 retrieval kit + # + non_encoded_retrieval_args, _ = retrieval_request_setup( + enacted_policy, + bob, + alice, + encode_for_rest=False, + context=valid_user_address_context, + ) + retrieval_outcomes = porter.retrieve_cfrags(**non_encoded_retrieval_args) + expected_retrieval_results_json = [] + retrieval_outcome_schema = PRERetrievalOutcomeSchema() + + assert len(retrieval_outcomes) == 1 + assert len(retrieval_outcomes[0].cfrags) > 0 + assert len(retrieval_outcomes[0].errors) == 0 + for outcome in retrieval_outcomes: + data = retrieval_outcome_schema.dump(outcome) + expected_retrieval_results_json.append(data) + + output = bob_retrieve_cfrags_schema.dump( + obj={"retrieval_results": retrieval_outcomes} + ) + assert output == {"retrieval_results": expected_retrieval_results_json} + assert len(output["retrieval_results"]) == 1 + assert len(output["retrieval_results"][0]["cfrags"]) > 0 + assert len(output["retrieval_results"][0]["errors"]) == 0 + + # now include errors + errors = { + get_random_checksum_address(): "Error Message 1", + get_random_checksum_address(): "Error Message 2", + get_random_checksum_address(): "Error Message 3", + } + new_retrieval_outcome = Porter.PRERetrievalOutcome( + cfrags=retrieval_outcomes[0].cfrags, errors=errors + ) + expected_retrieval_results_json = [ + retrieval_outcome_schema.dump(new_retrieval_outcome) + ] + output = bob_retrieve_cfrags_schema.dump( + obj={"retrieval_results": [new_retrieval_outcome]} + ) + assert output == {"retrieval_results": expected_retrieval_results_json} + assert len(output["retrieval_results"]) == 1 + assert len(output["retrieval_results"][0]["cfrags"]) > 0 + assert len(output["retrieval_results"][0]["errors"]) == len(errors) + + # + # Retrieval output for multiple retrieval kits + # + num_retrieval_kits = 4 + non_encoded_retrieval_args, _ = retrieval_request_setup( + enacted_policy, + bob, + alice, + encode_for_rest=False, + context=valid_user_address_context, + num_random_messages=num_retrieval_kits, + ) + retrieval_outcomes = porter.retrieve_cfrags(**non_encoded_retrieval_args) + expected_retrieval_results_json = [] + retrieval_outcome_schema = PRERetrievalOutcomeSchema() + + assert len(retrieval_outcomes) == num_retrieval_kits + for i in range(num_retrieval_kits): + assert len(retrieval_outcomes[i].cfrags) > 0 + assert len(retrieval_outcomes[i].errors) == 0 + for outcome in retrieval_outcomes: + data = retrieval_outcome_schema.dump(outcome) + expected_retrieval_results_json.append(data) + + output = bob_retrieve_cfrags_schema.dump( + obj={"retrieval_results": retrieval_outcomes} + ) + assert output == {"retrieval_results": expected_retrieval_results_json} + + # now include errors + error_message_template = "Retrieval Kit {} - Error Message {}" + new_retrieval_outcomes_with_errors = [] + for i in range(num_retrieval_kits): + specific_kit_errors = dict() + for j in range(i): + # different number of errors for each kit; 1 error for kit 1, 2 errors for kit 2 etc. + specific_kit_errors[get_random_checksum_address()] = ( + error_message_template.format(i, j) + ) + new_retrieval_outcomes_with_errors.append( + Porter.PRERetrievalOutcome( + cfrags=retrieval_outcomes[i].cfrags, errors=specific_kit_errors + ) + ) + + expected_retrieval_results_json = [] + for outcome in new_retrieval_outcomes_with_errors: + data = retrieval_outcome_schema.dump(outcome) + expected_retrieval_results_json.append(data) + + output = bob_retrieve_cfrags_schema.dump( + obj={"retrieval_results": new_retrieval_outcomes_with_errors} + ) + assert output == {"retrieval_results": expected_retrieval_results_json} + assert len(output["retrieval_results"]) == num_retrieval_kits + for i in range(num_retrieval_kits): + assert len(output["retrieval_results"][i]["cfrags"]) > 0 + # ensures errors are associated appropriately + kit_errors = output["retrieval_results"][i]["errors"] + assert len(kit_errors) == i + values = kit_errors.values() # ordered? + for j in range(i): + assert error_message_template.format(i, j) in values + + +def make_header(brand: bytes, major: int, minor: int) -> bytes: + # Hardcoding this since it's too much trouble to expose it all the way from Rust + assert len(brand) == 4 + major_bytes = major.to_bytes(2, "big") + minor_bytes = minor.to_bytes(2, "big") + header = brand + major_bytes + minor_bytes + return header + + +def test_treasure_map_validation(enacted_policy, bob): + class UnenncryptedTreasureMapsOnly(BaseSchema): + tmap = TreasureMap() + + # this will raise a base64 error + with pytest.raises(SpecificationError) as e: + UnenncryptedTreasureMapsOnly().load( + {"tmap": "your face looks like a treasure map"} + ) + + # assert that field name is in the error message + assert "Could not parse tmap" in str(e) + assert "Invalid base64-encoded string" in str(e) + + # valid base64 but invalid treasuremap + bad_map = make_header(b"TMap", 1, 0) + b"your face looks like a treasure map" + bad_map_b64 = base64.b64encode(bad_map).decode() + + with pytest.raises(InvalidInputData) as e: + UnenncryptedTreasureMapsOnly().load({"tmap": bad_map_b64}) + + assert "Could not convert input for tmap to a TreasureMap" in str(e) + assert "Failed to deserialize" in str(e) + + # a valid treasuremap + decrypted_treasure_map = bob._decrypt_treasure_map( + enacted_policy.treasure_map, enacted_policy.publisher_verifying_key + ) + tmap_bytes = bytes(decrypted_treasure_map) + tmap_b64 = base64.b64encode(tmap_bytes).decode() + result = UnenncryptedTreasureMapsOnly().load({"tmap": tmap_b64}) + assert isinstance(result["tmap"], TreasureMapClass) + + +def test_key_validation(bob): + class BobKeyInputRequirer(BaseSchema): + bobkey = UmbralKey() + + with pytest.raises(InvalidInputData) as e: + BobKeyInputRequirer().load({"bobkey": "I am the key to nothing"}) + assert "non-hexadecimal number found in fromhex()" in str(e) + assert "bobkey" in str(e) + + with pytest.raises(InvalidInputData) as e: + BobKeyInputRequirer().load({"bobkey": "I am the key to nothing"}) + assert "non-hexadecimal number found in fromhex()" in str(e) + assert "bobkey" in str(e) + + with pytest.raises(InvalidInputData) as e: + # lets just take a couple bytes off (less bytes than required) + BobKeyInputRequirer().load( + { + "bobkey": ( + "02f0cb3f3a33f16255d9b2586e6c56570aa07bbeb1157e169f1fb114ffb40037" + ) + } + ) + assert "Could not convert input for bobkey to an Umbral Key" in str(e) + + result = BobKeyInputRequirer().load( + dict(bobkey=bob.public_keys(DecryptingPower).to_compressed_bytes().hex()) + ) + assert isinstance(result["bobkey"], PublicKey) diff --git a/tests/taco/test_porter_taco_python_interface.py b/tests/taco/test_porter_taco_python_interface.py new file mode 100644 index 0000000..a8f7112 --- /dev/null +++ b/tests/taco/test_porter_taco_python_interface.py @@ -0,0 +1,113 @@ +import pytest +from nucypher_core import SessionStaticSecret, ThresholdDecryptionRequest +from nucypher_core.ferveo import ( + DecryptionShareSimple, + FerveoVariant, + combine_decryption_shares_simple, +) + + +@pytest.mark.parametrize("timeout", [None, 5, 7, 9]) +def test_taco_decryption_success(porter, dkg_setup, dkg_encrypted_data, timeout): + ritual_id, public_key, cohort, threshold = dkg_setup + threshold_message_kit, expected_plaintext = dkg_encrypted_data + + decryption_request = ThresholdDecryptionRequest( + ritual_id=ritual_id, + variant=FerveoVariant.Simple, + ciphertext_header=threshold_message_kit.ciphertext_header, + acp=threshold_message_kit.acp, + ) + + requester_secret_key = SessionStaticSecret.random() + + encrypted_decryption_requests = {} + shared_secrets = {} + for ursula in cohort: + ursula_decryption_request_static_key = ( + ursula.threshold_request_power.get_pubkey_from_ritual_id(ritual_id) + ) + shared_secret = requester_secret_key.derive_shared_secret( + ursula_decryption_request_static_key + ) + encrypted_decryption_requests[ursula.checksum_address] = ( + decryption_request.encrypt( + shared_secret=shared_secret, + requester_public_key=requester_secret_key.public_key(), + ) + ) + shared_secrets[ursula.checksum_address] = shared_secret + + decrypt_outcome = porter.decrypt( + threshold=threshold, + encrypted_decryption_requests=encrypted_decryption_requests, + timeout=timeout, + ) + + # sufficient successes + assert len(decrypt_outcome.encrypted_decryption_responses) >= threshold + + # no errors + assert len(decrypt_outcome.errors) == 0 + + cohort_addresses = [ursula.checksum_address for ursula in cohort] + + decryption_shares = [] + for ( + ursula_address, + encrypted_decryption_response, + ) in decrypt_outcome.encrypted_decryption_responses.items(): + assert ursula_address in cohort_addresses + shared_secret = shared_secrets[ursula_address] + decryption_response = encrypted_decryption_response.decrypt( + shared_secret=shared_secret + ) + decryption_share = DecryptionShareSimple.from_bytes( + decryption_response.decryption_share + ) + decryption_shares.append(decryption_share) + + combined_shares = combine_decryption_shares_simple(decryption_shares) + cleartext = threshold_message_kit.decrypt_with_shared_secret(combined_shares) + assert bytes(cleartext) == expected_plaintext + + +@pytest.mark.parametrize("timeout", [None, 5, 7, 9]) +def test_taco_decryption_failure(porter, dkg_setup, dkg_encrypted_data, timeout): + ritual_id, public_key, cohort, threshold = dkg_setup + threshold_message_kit, expected_plaintext = dkg_encrypted_data + + decryption_request = ThresholdDecryptionRequest( + ritual_id=ritual_id, + variant=FerveoVariant.Simple, + ciphertext_header=threshold_message_kit.ciphertext_header, + acp=threshold_message_kit.acp, + ) + + requester_secret_key = SessionStaticSecret.random() + + # + # errors - invalid encrypting key used for request + # + random_public_key = SessionStaticSecret.random().public_key() + shared_secret = requester_secret_key.derive_shared_secret(random_public_key) + encrypted_decryption_requests = {} + for ursula in cohort: + encrypted_decryption_requests[ursula.checksum_address] = ( + decryption_request.encrypt( + shared_secret=shared_secret, + requester_public_key=requester_secret_key.public_key(), + ) + ) + + decrypt_outcome = porter.decrypt( + threshold=threshold, + encrypted_decryption_requests=encrypted_decryption_requests, + timeout=timeout, + ) + + # sufficient successes + assert len(decrypt_outcome.encrypted_decryption_responses) == 0 + + # no errors + assert len(decrypt_outcome.errors) == len(cohort) # all ursulas fail diff --git a/tests/taco/test_porter_taco_web_interface.py b/tests/taco/test_porter_taco_web_interface.py new file mode 100644 index 0000000..50058ce --- /dev/null +++ b/tests/taco/test_porter_taco_web_interface.py @@ -0,0 +1,184 @@ +import json +from base64 import b64decode + +import pytest +from eth_utils import to_checksum_address +from nucypher_core import ( + EncryptedThresholdDecryptionResponse, + SessionStaticSecret, + ThresholdDecryptionRequest, +) +from nucypher_core.ferveo import ( + DecryptionShareSimple, + FerveoVariant, + combine_decryption_shares_simple, +) + +from porter.fields.taco import EncryptedThresholdDecryptionRequestField + + +def test_taco_decrypt_bad_input(porter_web_controller): + # Send bad data to assert error return + response = porter_web_controller.post("/decrypt", data=json.dumps({"bad": "input"})) + assert response.status_code == 400 + + +@pytest.mark.parametrize("timeout", [None, 5, 7, 9]) +def test_taco_decrypt( + porter, porter_web_controller, dkg_setup, dkg_encrypted_data, timeout +): + # Setup + ritual_id, public_key, cohort, threshold = dkg_setup + threshold_message_kit, expected_plaintext = dkg_encrypted_data + + decryption_request = ThresholdDecryptionRequest( + ritual_id=ritual_id, + variant=FerveoVariant.Simple, + ciphertext_header=threshold_message_kit.ciphertext_header, + acp=threshold_message_kit.acp, + ) + + requester_secret_key = SessionStaticSecret.random() + + encrypted_request_field = EncryptedThresholdDecryptionRequestField() + encrypted_decryption_requests = {} + shared_secrets = {} + for ursula in cohort: + ursula_decryption_request_static_key = ( + ursula.threshold_request_power.get_pubkey_from_ritual_id(ritual_id) + ) + shared_secret = requester_secret_key.derive_shared_secret( + ursula_decryption_request_static_key + ) + encrypted_decryption_request = decryption_request.encrypt( + shared_secret=shared_secret, + requester_public_key=requester_secret_key.public_key(), + ) + encrypted_decryption_requests[ursula.checksum_address] = ( + encrypted_request_field._serialize( + value=encrypted_decryption_request, attr=None, obj=None + ) + ) + shared_secrets[ursula.checksum_address] = shared_secret + + request_data = { + "threshold": threshold, + "encrypted_decryption_requests": encrypted_decryption_requests, + } + if timeout: + request_data["timeout"] = timeout + + # + # Success + # + response = porter_web_controller.post("/decrypt", data=json.dumps(request_data)) + assert response.status_code == 200 + + response_data = json.loads(response.data) + + decryption_results = response_data["result"]["decryption_results"] + assert decryption_results + + errors = decryption_results["errors"] + assert len(errors) == 0, f"{errors}" # no errors + + assert len(decryption_results["encrypted_decryption_responses"]) >= threshold + + cohort_addresses = [ + to_checksum_address(ursula.checksum_address) for ursula in cohort + ] + + encrypted_decryption_responses = decryption_results[ + "encrypted_decryption_responses" + ] + assert len(encrypted_decryption_responses) >= threshold + + # check that the decryption performed was valid + decryption_shares = [] + for ursula_address, response_bytes in encrypted_decryption_responses.items(): + assert ursula_address in cohort_addresses + assert len(response_bytes) > 0 + encrypted_decryption_response = EncryptedThresholdDecryptionResponse.from_bytes( + b64decode(response_bytes) + ) + shared_secret = shared_secrets[ursula_address] + decryption_response = encrypted_decryption_response.decrypt( + shared_secret=shared_secret + ) + decryption_share = DecryptionShareSimple.from_bytes( + decryption_response.decryption_share + ) + decryption_shares.append(decryption_share) + + combined_shares = combine_decryption_shares_simple(decryption_shares) + cleartext = threshold_message_kit.decrypt_with_shared_secret(combined_shares) + assert bytes(cleartext) == expected_plaintext + + +@pytest.mark.parametrize("timeout", [None, 5, 10, 15]) +def test_taco_decrypt_errors( + porter, porter_web_controller, dkg_setup, dkg_encrypted_data, timeout +): + # Setup + ritual_id, public_key, cohort, threshold = dkg_setup + threshold_message_kit, expected_plaintext = dkg_encrypted_data + + requester_secret_key = SessionStaticSecret.random() + + encrypted_request_field = EncryptedThresholdDecryptionRequestField() + + decryption_request = ThresholdDecryptionRequest( + ritual_id=ritual_id, + variant=FerveoVariant.Simple, + ciphertext_header=threshold_message_kit.ciphertext_header, + acp=threshold_message_kit.acp, + ) + + # + # Errors (some invalid threshold decryption requests) + # + encrypted_decryption_requests = {} + for i in range(0, len(cohort)): + if i < threshold - 1: + # less than threshold valid data + request = decryption_request + + else: + # invalid data + request = ThresholdDecryptionRequest( + ritual_id=999, # rando invalid ritual id + variant=FerveoVariant.Simple, + ciphertext_header=threshold_message_kit.ciphertext_header, + acp=threshold_message_kit.acp, + ) + + ursula_decryption_request_static_key = cohort[ + i + ].threshold_request_power.get_pubkey_from_ritual_id(ritual_id=ritual_id) + shared_secret = requester_secret_key.derive_shared_secret( + ursula_decryption_request_static_key + ) + encrypted_decryption_request = request.encrypt( + shared_secret=shared_secret, + requester_public_key=requester_secret_key.public_key(), + ) + data = encrypted_request_field._serialize( + value=encrypted_decryption_request, attr=None, obj=None + ) + encrypted_decryption_requests[cohort[i].checksum_address] = data + + request_data = { + "threshold": threshold, + "encrypted_decryption_requests": encrypted_decryption_requests, + } + if timeout: + request_data["timeout"] = timeout + + response = porter_web_controller.post("/decrypt", data=json.dumps(request_data)) + response_data = json.loads(response.data) + + decryption_results = response_data["result"]["decryption_results"] + assert decryption_results + assert len(decryption_results["encrypted_decryption_responses"]) == (threshold - 1) + errors = decryption_results["errors"] + assert len(errors) == (len(cohort) - (threshold - 1)) diff --git a/tests/taco/test_taco_specifications.py b/tests/taco/test_taco_specifications.py new file mode 100644 index 0000000..dc99354 --- /dev/null +++ b/tests/taco/test_taco_specifications.py @@ -0,0 +1,245 @@ +import pytest +from eth_utils import to_checksum_address +from nucypher_core import SessionStaticSecret, ThresholdDecryptionRequest +from nucypher_core.ferveo import FerveoVariant + +from porter.fields.exceptions import InvalidArgumentCombo, InvalidInputData +from porter.fields.taco import ( + EncryptedThresholdDecryptionRequestField, + EncryptedThresholdDecryptionResponseField, +) +from porter.main import Porter +from porter.schema import Decrypt, DecryptOutcomeSchema + + +def test_taco_decrypt_schema(dkg_setup, dkg_encrypted_data): + ritual_id, public_key, cohort, threshold = dkg_setup + threshold_message_kit, expected_plaintext = dkg_encrypted_data + + decrypt_schema = Decrypt() + + requester_secret_key = SessionStaticSecret.random() + encrypted_decryption_requests = _generate_encrypted_requests( + cohort, requester_secret_key, ritual_id, threshold_message_kit + ) + + encrypted_request_field = EncryptedThresholdDecryptionRequestField() + for ( + checksum_address, + encrypted_decryption_request, + ) in encrypted_decryption_requests.items(): + encrypted_decryption_requests[checksum_address] = ( + encrypted_request_field._serialize( + value=encrypted_decryption_request, attr=None, obj=None + ) + ) + + # no args + with pytest.raises(InvalidInputData): + decrypt_schema.load({}) + + # missing required args + with pytest.raises(InvalidInputData): + request_data = {"threshold": threshold} + decrypt_schema.load(request_data) + + with pytest.raises(InvalidInputData): + request_data = { + "encrypted_decryption_requests": encrypted_decryption_requests, + } + decrypt_schema.load(request_data) + + # invalid param names + with pytest.raises(InvalidInputData): + request_data = { + "dkg_threshold": threshold, + "encrypted_decryption_requests": encrypted_decryption_requests, + } + decrypt_schema.load(request_data) + + with pytest.raises(InvalidInputData): + request_data = { + "threshold": threshold, + "encrypted_dec_requests": encrypted_decryption_requests, + } + decrypt_schema.load(request_data) + + # invalid param types + with pytest.raises(InvalidInputData): + request_data = { + "threshold": "threshold? we don't need no stinking threshold", + "encrypted_decryption_requests": encrypted_decryption_requests, + } + decrypt_schema.load(request_data) + + # invalid threshold value + with pytest.raises(InvalidInputData): + request_data = { + "threshold": 0, + "encrypted_decryption_requests": encrypted_decryption_requests, + } + decrypt_schema.load(request_data) + + with pytest.raises(InvalidInputData): + request_data = { + "threshold": -1, + "encrypted_decryption_requests": encrypted_decryption_requests, + } + decrypt_schema.load(request_data) + + # invalid timeout value + with pytest.raises(InvalidInputData): + request_data = { + "threshold": threshold, + "encrypted_decryption_requests": encrypted_decryption_requests, + "timeout": "some number", + } + decrypt_schema.load(request_data) + + with pytest.raises(InvalidInputData): + request_data = { + "threshold": threshold, + "encrypted_decryption_requests": encrypted_decryption_requests, + "timeout": 0, + } + decrypt_schema.load(request_data) + + with pytest.raises(InvalidInputData): + request_data = { + "threshold": threshold, + "encrypted_decryption_requests": encrypted_decryption_requests, + "timeout": -1, + } + decrypt_schema.load(request_data) + + # invalid param combination + with pytest.raises(InvalidArgumentCombo): + request_data = { + "threshold": ( + len(encrypted_decryption_requests) + 1 + ), # threshold larger than number of requests + "encrypted_decryption_requests": encrypted_decryption_requests, + } + decrypt_schema.load(request_data) + + # simple schema successful load + request_data = { + "threshold": threshold, + "encrypted_decryption_requests": encrypted_decryption_requests, + } + decrypt_schema.load(request_data) + + +def test_taco_decrypt(porter, dkg_setup, dkg_encrypted_data): + ritual_id, public_key, cohort, threshold = dkg_setup + threshold_message_kit, expected_plaintext = dkg_encrypted_data + + decrypt_schema = Decrypt() + + requester_secret_key = SessionStaticSecret.random() + + encrypted_decryption_requests = _generate_encrypted_requests( + cohort, requester_secret_key, ritual_id, threshold_message_kit + ) + decrypt_outcome = porter.decrypt( + threshold=threshold, encrypted_decryption_requests=encrypted_decryption_requests + ) + + assert len(decrypt_outcome.errors) == 0, f"{decrypt_outcome.errors}" + assert len(decrypt_outcome.encrypted_decryption_responses) >= threshold + + decrypt_outcome_schema = DecryptOutcomeSchema() + outcome_json = decrypt_outcome_schema.dump(decrypt_outcome) + output = decrypt_schema.dump(obj={"decryption_results": decrypt_outcome}) + assert ( + len(output["decryption_results"]["encrypted_decryption_responses"]) >= threshold + ) + assert ( + output["decryption_results"]["encrypted_decryption_responses"] + == outcome_json["encrypted_decryption_responses"] + ) + encrypted_response_field = EncryptedThresholdDecryptionResponseField() + for ( + ursula_checksum_address, + encrypted_decryption_response, + ) in decrypt_outcome.encrypted_decryption_responses.items(): + assert output["decryption_results"]["encrypted_decryption_responses"][ + ursula_checksum_address + ] == encrypted_response_field._serialize( + value=encrypted_decryption_response, attr=None, obj=None + ) + + assert len(output["decryption_results"]["errors"]) == 0 + assert output["decryption_results"]["errors"] == outcome_json["errors"] + + assert output == {"decryption_results": outcome_json} + + # now include errors + errors = {} + for i in range(len(cohort) - threshold, len(cohort)): + ursula_checksum_address = to_checksum_address(cohort[i].checksum_address) + errors[ursula_checksum_address] = f"Error Message {i}" + + faked_decrypt_outcome = Porter.DecryptOutcome( + encrypted_decryption_responses=decrypt_outcome.encrypted_decryption_responses, + errors=errors, + ) + faked_outcome_json = decrypt_outcome_schema.dump(faked_decrypt_outcome) + output = decrypt_schema.dump(obj={"decryption_results": faked_decrypt_outcome}) + assert ( + len(output["decryption_results"]["encrypted_decryption_responses"]) >= threshold + ) + assert ( + output["decryption_results"]["encrypted_decryption_responses"] + == faked_outcome_json["encrypted_decryption_responses"] + ) + for ( + ursula_checksum_address, + encrypted_decryption_response, + ) in faked_decrypt_outcome.encrypted_decryption_responses.items(): + assert output["decryption_results"]["encrypted_decryption_responses"][ + ursula_checksum_address + ] == encrypted_response_field._serialize( + value=encrypted_decryption_response, attr=None, obj=None + ) + + assert len(output["decryption_results"]["errors"]) == len(errors) + assert output["decryption_results"]["errors"] == faked_outcome_json["errors"] + for i in range(len(cohort) - threshold, len(cohort)): + ursula_checksum_address = to_checksum_address(cohort[i].checksum_address) + assert ( + output["decryption_results"]["errors"][ursula_checksum_address] + == f"Error Message {i}" + ) + + assert output == {"decryption_results": faked_outcome_json} + + +def _generate_encrypted_requests( + cohort, requester_secret_key, ritual_id, threshold_message_kit +): + decryption_request = ThresholdDecryptionRequest( + ritual_id=ritual_id, + variant=FerveoVariant.Simple, + ciphertext_header=threshold_message_kit.ciphertext_header, + acp=threshold_message_kit.acp, + context=None, + ) + + encrypted_decryption_requests = {} + for ursula in cohort: + ursula_decryption_request_static_key = ( + ursula.threshold_request_power.get_pubkey_from_ritual_id(ritual_id) + ) + shared_secret = requester_secret_key.derive_shared_secret( + ursula_decryption_request_static_key + ) + encrypted_decryption_request = decryption_request.encrypt( + shared_secret=shared_secret, + requester_public_key=requester_secret_key.public_key(), + ) + encrypted_decryption_requests[ursula.checksum_address] = ( + encrypted_decryption_request + ) + + return encrypted_decryption_requests diff --git a/tests/test_fields.py b/tests/test_fields.py index 686eae3..ab351df 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -1,16 +1,39 @@ import json +import os from base64 import b64encode import pytest from eth_utils import to_canonical_address -from nucypher_core import RetrievalKit as RetrievalKitClass, Address, MessageKit +from marshmallow import fields as marshmallow_fields +from nucypher_core import ( + Address, + EncryptedThresholdDecryptionRequest, + EncryptedThresholdDecryptionResponse, + MessageKit, +) +from nucypher_core import RetrievalKit as RetrievalKitClass +from nucypher_core import ( + SessionStaticSecret, + ThresholdDecryptionRequest, + ThresholdDecryptionResponse, +) +from nucypher_core.ferveo import FerveoVariant from nucypher_core.umbral import SecretKey -from porter.fields.base import PositiveInteger, String, Base64BytesRepresentation, JSON -from porter.fields.base import StringList +from porter.fields.base import ( + JSON, + Base64BytesRepresentation, + PositiveInteger, + String, + StringList, +) from porter.fields.exceptions import InvalidInputData -from porter.fields.key import Key from porter.fields.retrieve import RetrievalKit +from porter.fields.taco import ( + EncryptedThresholdDecryptionRequestField, + EncryptedThresholdDecryptionResponseField, +) +from porter.fields.umbralkey import UmbralKey from porter.fields.ursula import UrsulaChecksumAddress @@ -25,9 +48,19 @@ def test_ursula_checksum_address_field(get_random_checksum_address): assert serialized == ursula_checksum assert serialized != other_address + # test letter case of address + serialized = field._serialize(value=ursula_checksum.lower(), attr=None, obj=None) + assert serialized == ursula_checksum + assert serialized != ursula_checksum.lower() + serialized = field._serialize(value=ursula_checksum.upper(), attr=None, obj=None) + assert serialized == ursula_checksum + assert serialized != ursula_checksum.lower() + + with pytest.raises(InvalidInputData): + field._serialize(value="0xdeadbeef", attr=None, obj=None) + deserialized = field._deserialize(value=serialized, attr=None, data=None) assert deserialized == ursula_checksum - assert deserialized != other_address field._deserialize(value=ursula_checksum, attr=None, data=None) field._deserialize(value=ursula_checksum.lower(), attr=None, data=None) @@ -104,15 +137,15 @@ def run_tests_on_kit(kit: RetrievalKitClass): field._deserialize(value=b64encode(b"invalid_retrieval_kit_bytes").decode(), attr=None, data=None) -def test_key(): - field = Key() +def test_umbral_key(): + field = UmbralKey() umbral_pub_key = SecretKey.random().public_key() other_umbral_pub_key = SecretKey.random().public_key() serialized = field._serialize(value=umbral_pub_key, attr=None, obj=None) - assert serialized == bytes(umbral_pub_key).hex() - assert serialized != bytes(other_umbral_pub_key).hex() + assert serialized == umbral_pub_key.to_compressed_bytes().hex() + assert serialized != other_umbral_pub_key.to_compressed_bytes().hex() deserialized = field._deserialize(value=serialized, attr=None, data=None) assert deserialized == umbral_pub_key @@ -224,3 +257,130 @@ def test_json_field(): with pytest.raises(InvalidInputData): # attempt to deserialize invalid data field._deserialize(value=json.dumps(d), attr=None, data=None) + + +def test_taco_dict_field(get_random_checksum_address): + # test data + original_data = {} + expected_serialized_result = {} + num_decryption_requests = 5 + for i in range(0, num_decryption_requests): + ursula_checksum_address = get_random_checksum_address() + encrypted_decryption_request = os.urandom(32) + original_data[ursula_checksum_address] = encrypted_decryption_request + expected_serialized_result[ursula_checksum_address] = b64encode( + encrypted_decryption_request + ).decode() + + # mimic usage for TACo fields + field = marshmallow_fields.Dict( + keys=UrsulaChecksumAddress(), values=Base64BytesRepresentation() + ) + serialized = field._serialize(value=original_data, attr=None, obj=None) + assert serialized == expected_serialized_result + + deserialized = field._deserialize(value=serialized, attr=None, data=None) + assert deserialized == original_data + + with pytest.raises(InvalidInputData): + # attempt to deserialize invalid key; must be checksum address + json_to_deserialize = {"a": b64encode(os.urandom(32)).decode()} + field._deserialize(value=json_to_deserialize, attr=None, data=None) + + with pytest.raises(InvalidInputData): + # attempt to deserialize invalid value; must be base64 string + json_to_deserialize = { + get_random_checksum_address(): "✨ not a valid base64 ✨" + } + field._deserialize(value=json_to_deserialize, attr=None, data=None) + + +def test_encrypted_threshold_decryption_request(dkg_setup, dkg_encrypted_data): + ritual_id, _, _, _ = dkg_setup + threshold_message_kit, expected_plaintext = dkg_encrypted_data + + decryption_request = ThresholdDecryptionRequest( + ritual_id=ritual_id, + variant=FerveoVariant.Simple, + ciphertext_header=threshold_message_kit.ciphertext_header, + acp=threshold_message_kit.acp, + ) + + field = EncryptedThresholdDecryptionRequestField() + + ursula_public_key = SessionStaticSecret.random().public_key() + requester_secret_key = SessionStaticSecret.random() + + shared_secret = requester_secret_key.derive_shared_secret(ursula_public_key) + encrypted_request = decryption_request.encrypt( + shared_secret=shared_secret, + requester_public_key=requester_secret_key.public_key(), + ) + + serialized_data = field._serialize(value=encrypted_request, attr=None, obj=None) + assert serialized_data == b64encode(bytes(encrypted_request)).decode() + + deserialized_encrypted_request = field._deserialize( + value=serialized_data, attr=None, data=None + ) + assert isinstance( + deserialized_encrypted_request, EncryptedThresholdDecryptionRequest + ) + assert deserialized_encrypted_request.ritual_id == ritual_id + assert ( + deserialized_encrypted_request.requester_public_key + == requester_secret_key.public_key() + ) + assert bytes(deserialized_encrypted_request) == bytes(encrypted_request) + + deserialized_request = deserialized_encrypted_request.decrypt( + shared_secret=shared_secret + ) + assert bytes(deserialized_request) == bytes(decryption_request) + + with pytest.raises(InvalidInputData): + field._serialize( + value="EncryptedThresholdDecryptionRequestString", attr=None, obj=None + ) + + with pytest.raises(InvalidInputData): + field._deserialize(value=os.urandom(32), attr=None, data=None) + + +def test_encrypted_threshold_decryption_response(): + ritual_id = 123 + decryption_share = os.urandom(32) + decryption_response = ThresholdDecryptionResponse( + ritual_id=ritual_id, decryption_share=decryption_share + ) + + field = EncryptedThresholdDecryptionResponseField() + + requester_public_key = SessionStaticSecret.random().public_key() + ursula_secret_key = SessionStaticSecret.random() + shared_secret = ursula_secret_key.derive_shared_secret(requester_public_key) + + encrypted_response = decryption_response.encrypt(shared_secret=shared_secret) + + serialized_data = field._serialize(value=encrypted_response, attr=None, obj=None) + assert serialized_data == b64encode(bytes(encrypted_response)).decode() + + deserialized_encrypted_response = field._deserialize( + value=serialized_data, attr=None, data=None + ) + assert isinstance( + deserialized_encrypted_response, EncryptedThresholdDecryptionResponse + ) + assert bytes(deserialized_encrypted_response) == bytes(encrypted_response) + assert deserialized_encrypted_response.ritual_id == ritual_id + + deserialized_response = deserialized_encrypted_response.decrypt( + shared_secret=shared_secret + ) + assert bytes(deserialized_response) == bytes(decryption_response) + + with pytest.raises(InvalidInputData): + field._serialize(value=[1, 2, 3, 4, 5], attr=None, obj=None) + + with pytest.raises(InvalidInputData): + field._deserialize(value=os.urandom(32), attr=None, data=None) diff --git a/tests/test_get_ursulas.py b/tests/test_get_ursulas.py new file mode 100644 index 0000000..c1db261 --- /dev/null +++ b/tests/test_get_ursulas.py @@ -0,0 +1,321 @@ +import json + +import pytest +from nucypher_core.umbral import SecretKey + +from porter.fields.exceptions import InvalidArgumentCombo, InvalidInputData +from porter.main import Porter +from porter.schema import GetUrsulas, UrsulaInfoSchema + + +def test_get_ursulas_schema(get_random_checksum_address): + # + # Input i.e. load + # + + # no args + with pytest.raises(InvalidInputData): + GetUrsulas().load({}) + + quantity = 10 + required_data = { + "quantity": quantity, + } + + # required args + GetUrsulas().load(required_data) + + # missing required args + updated_data = {k: v for k, v in required_data.items() if k != "quantity"} + with pytest.raises(InvalidInputData): + GetUrsulas().load(updated_data) + + # optional components + + # only exclude + updated_data = dict(required_data) + exclude_ursulas = [] + for i in range(2): + exclude_ursulas.append(get_random_checksum_address()) + updated_data["exclude_ursulas"] = exclude_ursulas + GetUrsulas().load(updated_data) + + # only include + updated_data = dict(required_data) + include_ursulas = [] + for i in range(3): + include_ursulas.append(get_random_checksum_address()) + updated_data["include_ursulas"] = include_ursulas + GetUrsulas().load(updated_data) + + # both exclude and include + updated_data = dict(required_data) + updated_data["exclude_ursulas"] = exclude_ursulas + updated_data["include_ursulas"] = include_ursulas + GetUrsulas().load(updated_data) + + # both exclude and include and timeout + updated_data = dict(required_data) + updated_data["exclude_ursulas"] = exclude_ursulas + updated_data["include_ursulas"] = include_ursulas + updated_data["timeout"] = 20 + GetUrsulas().load(updated_data) + + # list input formatted as ',' separated strings + updated_data = dict(required_data) + updated_data["exclude_ursulas"] = ",".join(exclude_ursulas) + updated_data["include_ursulas"] = ",".join(include_ursulas) + data = GetUrsulas().load(updated_data) + assert data["exclude_ursulas"] == exclude_ursulas + assert data["include_ursulas"] == include_ursulas + + # single value as string cast to list + updated_data = dict(required_data) + updated_data["exclude_ursulas"] = exclude_ursulas[0] + updated_data["include_ursulas"] = include_ursulas[0] + data = GetUrsulas().load(updated_data) + assert data["exclude_ursulas"] == [exclude_ursulas[0]] + assert data["include_ursulas"] == [include_ursulas[0]] + + # invalid include entry + updated_data = dict(required_data) + updated_data["exclude_ursulas"] = exclude_ursulas + updated_data["include_ursulas"] = list(include_ursulas) # make copy to modify + updated_data["include_ursulas"].append("0xdeadbeef") + with pytest.raises(InvalidInputData): + GetUrsulas().load(updated_data) + + # invalid exclude entry + updated_data = dict(required_data) + updated_data["exclude_ursulas"] = list(exclude_ursulas) # make copy to modify + updated_data["exclude_ursulas"].append("0xdeadbeef") + updated_data["include_ursulas"] = include_ursulas + with pytest.raises(InvalidInputData): + GetUrsulas().load(updated_data) + + # too many ursulas to include + updated_data = dict(required_data) + too_many_ursulas_to_include = [] + while len(too_many_ursulas_to_include) <= quantity: + too_many_ursulas_to_include.append(get_random_checksum_address()) + updated_data["include_ursulas"] = too_many_ursulas_to_include + with pytest.raises(InvalidArgumentCombo): + # number of ursulas to include exceeds quantity to sample + GetUrsulas().load(updated_data) + + # include and exclude addresses are not mutually exclusive - include has common entry + updated_data = dict(required_data) + updated_data["exclude_ursulas"] = exclude_ursulas + updated_data["include_ursulas"] = list(include_ursulas) # make copy to modify + updated_data["include_ursulas"].append( + exclude_ursulas[0] + ) # one address that overlaps + with pytest.raises(InvalidArgumentCombo): + # 1 address in both include and exclude lists + GetUrsulas().load(updated_data) + + # include and exclude addresses are not mutually exclusive - exclude has common entry + updated_data = dict(required_data) + updated_data["exclude_ursulas"] = list(exclude_ursulas) # make copy to modify + updated_data["exclude_ursulas"].append( + include_ursulas[0] + ) # on address that overlaps + updated_data["include_ursulas"] = include_ursulas + with pytest.raises(InvalidArgumentCombo): + # 1 address in both include and exclude lists + GetUrsulas().load(updated_data) + + # invalid timeout value + with pytest.raises(InvalidInputData): + updated_data = dict(required_data) + updated_data["exclude_ursulas"] = exclude_ursulas + updated_data["timeout"] = "some number" + GetUrsulas().load(updated_data) + + with pytest.raises(InvalidInputData): + updated_data = dict(required_data) + updated_data["exclude_ursulas"] = exclude_ursulas + updated_data["include_ursulas"] = include_ursulas + updated_data["timeout"] = 0 + GetUrsulas().load(updated_data) + + with pytest.raises(InvalidInputData): + updated_data = dict(required_data) + updated_data["exclude_ursulas"] = exclude_ursulas + updated_data["include_ursulas"] = include_ursulas + updated_data["timeout"] = -1 + GetUrsulas().load(updated_data) + + # + # Output i.e. dump + # + ursulas_info = [] + expected_ursulas_info = [] + port = 11500 + for i in range(3): + ursula_info = Porter.UrsulaInfo( + get_random_checksum_address(), + f"https://127.0.0.1:{port+i}", + SecretKey.random().public_key(), + ) + ursulas_info.append(ursula_info) + + # use schema to determine expected output (encrypting key gets changed to hex) + expected_ursulas_info.append(UrsulaInfoSchema().dump(ursula_info)) + + output = GetUrsulas().dump(obj={"ursulas": ursulas_info}) + assert output == {"ursulas": expected_ursulas_info} + + +@pytest.mark.parametrize("timeout", [None, 15, 20]) +def test_get_ursulas_python_interface(porter, ursulas, timeout): + # simple + quantity = 4 + ursulas_info = porter.get_ursulas(quantity=quantity) + returned_ursula_addresses = { + ursula_info.checksum_address for ursula_info in ursulas_info + } + assert len(returned_ursula_addresses) == quantity # ensure no repeats + + ursulas_list = list(ursulas) + + # include specific ursulas + include_ursulas = [ + ursulas_list[0].checksum_address, + ursulas_list[1].checksum_address, + ] + ursulas_info = porter.get_ursulas( + quantity=quantity, include_ursulas=include_ursulas, timeout=timeout + ) + returned_ursula_addresses = { + ursula_info.checksum_address for ursula_info in ursulas_info + } + assert len(returned_ursula_addresses) == quantity + for address in include_ursulas: + assert address in returned_ursula_addresses + + # exclude specific ursulas + number_to_exclude = len(ursulas_list) - 4 + exclude_ursulas = [] + for i in range(number_to_exclude): + exclude_ursulas.append(ursulas_list[i].checksum_address) + ursulas_info = porter.get_ursulas( + quantity=quantity, exclude_ursulas=exclude_ursulas, timeout=timeout + ) + returned_ursula_addresses = { + ursula_info.checksum_address for ursula_info in ursulas_info + } + assert len(returned_ursula_addresses) == quantity + for address in exclude_ursulas: + assert address not in returned_ursula_addresses + + # include and exclude + include_ursulas = [ + ursulas_list[0].checksum_address, + ursulas_list[1].checksum_address, + ] + exclude_ursulas = [ + ursulas_list[2].checksum_address, + ursulas_list[3].checksum_address, + ] + ursulas_info = porter.get_ursulas( + quantity=quantity, + include_ursulas=include_ursulas, + exclude_ursulas=exclude_ursulas, + timeout=timeout, + ) + returned_ursula_addresses = { + ursula_info.checksum_address for ursula_info in ursulas_info + } + assert len(returned_ursula_addresses) == quantity + for address in include_ursulas: + assert address in returned_ursula_addresses + for address in exclude_ursulas: + assert address not in returned_ursula_addresses + + # too many ursulas requested + with pytest.raises(ValueError, match="Insufficient nodes"): + porter.get_ursulas(quantity=len(ursulas) + 1) + + +@pytest.mark.parametrize("timeout", [None, 10, 20]) +def test_get_ursulas_web_interface(porter_web_controller, ursulas, timeout): + # Send bad data to assert error return + response = porter_web_controller.get( + "/get_ursulas", data=json.dumps({"bad": "input"}) + ) + assert response.status_code == 400 + + quantity = 4 + ursulas_list = list(ursulas) + include_ursulas = [ + ursulas_list[0].checksum_address, + ursulas_list[1].checksum_address, + ] + exclude_ursulas = [ + ursulas_list[2].checksum_address, + ursulas_list[3].checksum_address, + ] + + get_ursulas_params = { + "quantity": quantity, + "include_ursulas": include_ursulas, + "exclude_ursulas": exclude_ursulas, + } + + if timeout: + get_ursulas_params["timeout"] = timeout + + # + # Success + # + response = porter_web_controller.get( + "/get_ursulas", data=json.dumps(get_ursulas_params) + ) + assert response.status_code == 200 + + response_data = json.loads(response.data) + ursulas_info = response_data["result"]["ursulas"] + returned_ursula_addresses = { + ursula_info["checksum_address"] for ursula_info in ursulas_info + } # ensure no repeats + assert len(returned_ursula_addresses) == quantity + for address in include_ursulas: + assert address in returned_ursula_addresses + for address in exclude_ursulas: + assert address not in returned_ursula_addresses + + # + # Test Query parameters + # + query_params = ( + f"/get_ursulas?quantity={quantity}" + f'&include_ursulas={",".join(include_ursulas)}' + f'&exclude_ursulas={",".join(exclude_ursulas)}' + ) + if timeout: + query_params += f"&timeout={timeout}" + + response = porter_web_controller.get(query_params) + assert response.status_code == 200 + response_data = json.loads(response.data) + ursulas_info = response_data["result"]["ursulas"] + returned_ursula_addresses = { + ursula_info["checksum_address"] for ursula_info in ursulas_info + } # ensure no repeats + assert len(returned_ursula_addresses) == quantity + for address in include_ursulas: + assert address in returned_ursula_addresses + for address in exclude_ursulas: + assert address not in returned_ursula_addresses + + # + # Failure case: too many ursulas requested + # + failed_ursula_params = dict(get_ursulas_params) + failed_ursula_params["quantity"] = len(ursulas_list) + 1 # too many to get + response = porter_web_controller.get( + "/get_ursulas", data=json.dumps(failed_ursula_params) + ) + assert response.status_code == 400 + assert "Insufficient nodes" in response.text diff --git a/tests/test_porter.py b/tests/test_porter.py deleted file mode 100644 index 04ae13e..0000000 --- a/tests/test_porter.py +++ /dev/null @@ -1,74 +0,0 @@ -from porter.utils import retrieval_request_setup - - -def test_get_ursulas(porter, ursulas): - # simple - quantity = 4 - ursulas_info = porter.get_ursulas(quantity=quantity) - returned_ursula_addresses = {ursula_info.checksum_address for ursula_info in ursulas_info} - assert len(returned_ursula_addresses) == quantity # ensure no repeats - - ursulas_list = list(ursulas) - - # include specific ursulas - include_ursulas = [ursulas_list[0].checksum_address, ursulas_list[1].checksum_address] - ursulas_info = porter.get_ursulas(quantity=quantity, - include_ursulas=include_ursulas) - returned_ursula_addresses = {ursula_info.checksum_address for ursula_info in ursulas_info} - assert len(returned_ursula_addresses) == quantity - for address in include_ursulas: - assert address in returned_ursula_addresses - - # exclude specific ursulas - number_to_exclude = len(ursulas_list) - 4 - exclude_ursulas = [] - for i in range(number_to_exclude): - exclude_ursulas.append(ursulas_list[i].checksum_address) - ursulas_info = porter.get_ursulas(quantity=quantity, - exclude_ursulas=exclude_ursulas) - returned_ursula_addresses = {ursula_info.checksum_address for ursula_info in ursulas_info} - assert len(returned_ursula_addresses) == quantity - for address in exclude_ursulas: - assert address not in returned_ursula_addresses - - # include and exclude - include_ursulas = [ursulas_list[0].checksum_address, ursulas_list[1].checksum_address] - exclude_ursulas = [ursulas_list[2].checksum_address, ursulas_list[3].checksum_address] - ursulas_info = porter.get_ursulas(quantity=quantity, - include_ursulas=include_ursulas, - exclude_ursulas=exclude_ursulas) - returned_ursula_addresses = {ursula_info.checksum_address for ursula_info in ursulas_info} - assert len(returned_ursula_addresses) == quantity - for address in include_ursulas: - assert address in returned_ursula_addresses - for address in exclude_ursulas: - assert address not in returned_ursula_addresses - - -def test_retrieve_cfrags(porter, - bob, - alice, - enacted_policy): - # Setup - retrieval_args, _ = retrieval_request_setup(enacted_policy, - bob, - alice) - - result = porter.retrieve_cfrags(**retrieval_args) - - assert result, "valid result returned" - - -def test_retrieve_cfrags_with_context(porter, - bob, - alice, - enacted_policy, - valid_user_address_context): - # Setup - retrieval_args, _ = retrieval_request_setup(enacted_policy, - bob, - alice, - context=valid_user_address_context) - - result = porter.retrieve_cfrags(**retrieval_args) - assert result, "valid result returned" diff --git a/tests/test_porter_cli.py b/tests/test_porter_cli.py index 0f7dc42..c398e78 100644 --- a/tests/test_porter_cli.py +++ b/tests/test_porter_cli.py @@ -1,16 +1,12 @@ import pytest from nucypher.characters.lawful import Ursula -from nucypher.config.constants import TEMPORARY_DOMAIN -from tests.utils.ursula import select_test_port -from porter.cli.literature import ( - PORTER_RUN_MESSAGE, - PORTER_CORS_ALLOWED_ORIGINS -) +from porter.cli.literature import PORTER_CORS_ALLOWED_ORIGINS, PORTER_RUN_MESSAGE from porter.cli.main import porter_cli from porter.main import Porter +from tests.constants import TEMPORARY_DOMAIN_NAME, TEST_ETH_PROVIDER_URI +from tests.utils.ursula import select_test_port -TEST_ETH_PROVIDER_URI = "tester://pyevm" @pytest.fixture(scope="function") def teacher_uri(mocker, ursulas): @@ -21,68 +17,119 @@ def teacher_uri(mocker, ursulas): def test_porter_cli_run_simple(click_runner, teacher_uri): - porter_run_command = ('run', - '--dry-run', - '--network', TEMPORARY_DOMAIN, - '--eth-provider', TEST_ETH_PROVIDER_URI, - '--teacher', teacher_uri) + porter_run_command = ( + "run", + "--dry-run", + "--domain", + TEMPORARY_DOMAIN_NAME, + "--eth-endpoint", + TEST_ETH_PROVIDER_URI, + "--polygon-endpoint", + TEST_ETH_PROVIDER_URI, + "--teacher", + teacher_uri, + ) result = click_runner.invoke(porter_cli, porter_run_command, catch_exceptions=False) assert result.exit_code == 0, result.output output = result.output - assert f"Network: {TEMPORARY_DOMAIN}" in output + assert f"Domain: {TEMPORARY_DOMAIN_NAME}" in output assert PORTER_RUN_MESSAGE.format(http_port=Porter.DEFAULT_PORT) in output # Non-default port non_default_port = select_test_port() - porter_run_command = ('run', - '--dry-run', - '--network', TEMPORARY_DOMAIN, - '--eth-provider', TEST_ETH_PROVIDER_URI, - '--http-port', non_default_port, - '--teacher', teacher_uri) + porter_run_command = ( + "run", + "--dry-run", + "--domain", + TEMPORARY_DOMAIN_NAME, + "--eth-endpoint", + TEST_ETH_PROVIDER_URI, + "--polygon-endpoint", + TEST_ETH_PROVIDER_URI, + "--http-port", + non_default_port, + "--teacher", + teacher_uri, + ) result = click_runner.invoke(porter_cli, porter_run_command, catch_exceptions=False) assert result.exit_code == 0, result.output output = result.output - assert f"Network: {TEMPORARY_DOMAIN}" in output + assert f"Domain: {TEMPORARY_DOMAIN_NAME}" in output assert PORTER_RUN_MESSAGE.format(http_port=non_default_port) in output def test_porter_cli_run_eth_provider_must_be_provided(click_runner, teacher_uri): - porter_run_command = ('run', - '--dry-run', - '--network', TEMPORARY_DOMAIN, - '--teacher', teacher_uri) + porter_run_command = ( + "run", + "--dry-run", + "--domain", + TEMPORARY_DOMAIN_NAME, + "--polygon-endpoint", + TEST_ETH_PROVIDER_URI, + "--teacher", + teacher_uri, + ) + result = click_runner.invoke(porter_cli, porter_run_command, catch_exceptions=False) + assert result.exit_code != 0, result.output + assert "Missing option '--eth-endpoint'" in result.output + + +def test_porter_cli_run_polygon_provider_must_be_provided(click_runner, teacher_uri): + porter_run_command = ( + "run", + "--dry-run", + "--domain", + TEMPORARY_DOMAIN_NAME, + "--eth-endpoint", + TEST_ETH_PROVIDER_URI, + "--teacher", + teacher_uri, + ) result = click_runner.invoke(porter_cli, porter_run_command, catch_exceptions=False) assert result.exit_code != 0, result.output - assert f"--eth-provider is required" in result.output + assert "Missing option '--polygon-endpoint'" in result.output -def test_cli_run_with_cors_origin(click_runner, - teacher_uri): +def test_cli_run_with_cors_origin(click_runner, teacher_uri): allow_origins = ".*\.example\.com,.*\.otherexample\.org" - porter_run_command = ('run', - '--dry-run', - '--network', TEMPORARY_DOMAIN, - '--eth-provider', TEST_ETH_PROVIDER_URI, - '--teacher', teacher_uri, - '--allow-origins', allow_origins) + porter_run_command = ( + "run", + "--dry-run", + "--domain", + TEMPORARY_DOMAIN_NAME, + "--eth-endpoint", + TEST_ETH_PROVIDER_URI, + "--polygon-endpoint", + TEST_ETH_PROVIDER_URI, + "--teacher", + teacher_uri, + "--allow-origins", + allow_origins, + ) result = click_runner.invoke(porter_cli, porter_run_command, catch_exceptions=False) assert result.exit_code == 0, result.output assert PORTER_RUN_MESSAGE.format(http_port=Porter.DEFAULT_PORT) in result.output assert PORTER_CORS_ALLOWED_ORIGINS.format(allow_origins=allow_origins.split(",")) in result.output -def test_cli_run_with_empty_string_cors_origin(click_runner, - teacher_uri): +def test_cli_run_with_empty_string_cors_origin(click_runner, teacher_uri): empty_string_allow_origins = "" - porter_run_command = ('run', - '--dry-run', - '--network', TEMPORARY_DOMAIN, - '--eth-provider', TEST_ETH_PROVIDER_URI, - '--teacher', teacher_uri, - '--allow-origins', empty_string_allow_origins) + porter_run_command = ( + "run", + "--dry-run", + "--domain", + TEMPORARY_DOMAIN_NAME, + "--eth-endpoint", + TEST_ETH_PROVIDER_URI, + "--polygon-endpoint", + TEST_ETH_PROVIDER_URI, + "--teacher", + teacher_uri, + "--allow-origins", + empty_string_allow_origins, + ) result = click_runner.invoke(porter_cli, porter_run_command, catch_exceptions=False) assert result.exit_code == 0, result.output assert PORTER_RUN_MESSAGE.format(http_port=Porter.DEFAULT_PORT) in result.output diff --git a/tests/test_porter_configure_timeout.py b/tests/test_porter_configure_timeout.py new file mode 100644 index 0000000..fd49d24 --- /dev/null +++ b/tests/test_porter_configure_timeout.py @@ -0,0 +1,45 @@ +import pytest + +from porter.main import Porter + + +@pytest.mark.parametrize( + "provided_timeout,max_timeout,expected_timeout", + [ + (None, 10, 10), + (1, 10, 1), + (5, 10, 5), + (9, 10, 9), + (10, 10, 10), + (11, 10, 10), + (20, 10, 10), + (25, 10, 10), + ( + Porter.MAX_GET_URSULAS_TIMEOUT - 1, + Porter.MAX_GET_URSULAS_TIMEOUT, + Porter.MAX_GET_URSULAS_TIMEOUT - 1, + ), + ( + Porter.MAX_GET_URSULAS_TIMEOUT + 1, + Porter.MAX_GET_URSULAS_TIMEOUT, + Porter.MAX_GET_URSULAS_TIMEOUT, + ), + ( + Porter.MAX_DECRYPTION_TIMEOUT / 2, + Porter.MAX_DECRYPTION_TIMEOUT, + Porter.MAX_DECRYPTION_TIMEOUT / 2, + ), + ( + Porter.MAX_DECRYPTION_TIMEOUT * 2, + Porter.MAX_DECRYPTION_TIMEOUT, + Porter.MAX_DECRYPTION_TIMEOUT, + ), + ], +) +def test_porter_configure_timeout( + porter, provided_timeout, max_timeout, expected_timeout +): + resultant_timeout = porter._configure_timeout( + operation="test", timeout=provided_timeout, max_timeout=max_timeout + ) + assert resultant_timeout == expected_timeout diff --git a/tests/test_porter_specifications.py b/tests/test_porter_specifications.py deleted file mode 100644 index 603dc46..0000000 --- a/tests/test_porter_specifications.py +++ /dev/null @@ -1,380 +0,0 @@ -import base64 -import random - -import pytest -from nucypher.crypto.powers import DecryptingPower -from nucypher_core import TreasureMap as TreasureMapClass -from nucypher_core.umbral import PublicKey -from nucypher_core.umbral import SecretKey - -from porter.fields.exceptions import SpecificationError, InvalidInputData, InvalidArgumentCombo -from porter.fields.key import Key -from porter.fields.treasuremap import TreasureMap -from porter.main import Porter -from porter.schema import ( - AliceGetUrsulas, - BobRetrieveCFrags, - UrsulaInfoSchema -) -from porter.schema import BaseSchema -from porter.schema import RetrievalOutcomeSchema -from porter.utils import retrieval_request_setup - - -def test_alice_get_ursulas_schema(get_random_checksum_address): - # - # Input i.e. load - # - - # no args - with pytest.raises(InvalidInputData): - AliceGetUrsulas().load({}) - - quantity = 10 - required_data = { - 'quantity': quantity, - } - - # required args - AliceGetUrsulas().load(required_data) - - # missing required args - updated_data = {k: v for k, v in required_data.items() if k != 'quantity'} - with pytest.raises(InvalidInputData): - AliceGetUrsulas().load(updated_data) - - # optional components - - # only exclude - updated_data = dict(required_data) - exclude_ursulas = [] - for i in range(2): - exclude_ursulas.append(get_random_checksum_address()) - updated_data['exclude_ursulas'] = exclude_ursulas - AliceGetUrsulas().load(updated_data) - - # only include - updated_data = dict(required_data) - include_ursulas = [] - for i in range(3): - include_ursulas.append(get_random_checksum_address()) - updated_data['include_ursulas'] = include_ursulas - AliceGetUrsulas().load(updated_data) - - # both exclude and include - updated_data = dict(required_data) - updated_data['exclude_ursulas'] = exclude_ursulas - updated_data['include_ursulas'] = include_ursulas - AliceGetUrsulas().load(updated_data) - - # list input formatted as ',' separated strings - updated_data = dict(required_data) - updated_data['exclude_ursulas'] = ','.join(exclude_ursulas) - updated_data['include_ursulas'] = ','.join(include_ursulas) - data = AliceGetUrsulas().load(updated_data) - assert data['exclude_ursulas'] == exclude_ursulas - assert data['include_ursulas'] == include_ursulas - - # single value as string cast to list - updated_data = dict(required_data) - updated_data['exclude_ursulas'] = exclude_ursulas[0] - updated_data['include_ursulas'] = include_ursulas[0] - data = AliceGetUrsulas().load(updated_data) - assert data['exclude_ursulas'] == [exclude_ursulas[0]] - assert data['include_ursulas'] == [include_ursulas[0]] - - # invalid include entry - updated_data = dict(required_data) - updated_data['exclude_ursulas'] = exclude_ursulas - updated_data['include_ursulas'] = list(include_ursulas) # make copy to modify - updated_data['include_ursulas'].append("0xdeadbeef") - with pytest.raises(InvalidInputData): - AliceGetUrsulas().load(updated_data) - - # invalid exclude entry - updated_data = dict(required_data) - updated_data['exclude_ursulas'] = list(exclude_ursulas) # make copy to modify - updated_data['exclude_ursulas'].append("0xdeadbeef") - updated_data['include_ursulas'] = include_ursulas - with pytest.raises(InvalidInputData): - AliceGetUrsulas().load(updated_data) - - # too many ursulas to include - updated_data = dict(required_data) - too_many_ursulas_to_include = [] - while len(too_many_ursulas_to_include) <= quantity: - too_many_ursulas_to_include.append(get_random_checksum_address()) - updated_data['include_ursulas'] = too_many_ursulas_to_include - with pytest.raises(InvalidArgumentCombo): - # number of ursulas to include exceeds quantity to sample - AliceGetUrsulas().load(updated_data) - - # include and exclude addresses are not mutually exclusive - include has common entry - updated_data = dict(required_data) - updated_data['exclude_ursulas'] = exclude_ursulas - updated_data['include_ursulas'] = list(include_ursulas) # make copy to modify - updated_data['include_ursulas'].append(exclude_ursulas[0]) # one address that overlaps - with pytest.raises(InvalidArgumentCombo): - # 1 address in both include and exclude lists - AliceGetUrsulas().load(updated_data) - - # include and exclude addresses are not mutually exclusive - exclude has common entry - updated_data = dict(required_data) - updated_data['exclude_ursulas'] = list(exclude_ursulas) # make copy to modify - updated_data['exclude_ursulas'].append(include_ursulas[0]) # on address that overlaps - updated_data['include_ursulas'] = include_ursulas - with pytest.raises(InvalidArgumentCombo): - # 1 address in both include and exclude lists - AliceGetUrsulas().load(updated_data) - - # - # Output i.e. dump - # - ursulas_info = [] - expected_ursulas_info = [] - port = 11500 - for i in range(3): - ursula_info = Porter.UrsulaInfo(get_random_checksum_address(), - f"https://127.0.0.1:{port+i}", - SecretKey.random().public_key()) - ursulas_info.append(ursula_info) - - # use schema to determine expected output (encrypting key gets changed to hex) - expected_ursulas_info.append(UrsulaInfoSchema().dump(ursula_info)) - - output = AliceGetUrsulas().dump(obj={'ursulas': ursulas_info}) - assert output == {"ursulas": expected_ursulas_info} - - -def test_alice_revoke(): - pass # TODO - - -def test_bob_retrieve_cfrags(porter, - enacted_policy, - bob, - alice, - valid_user_address_context, - get_random_checksum_address): - bob_retrieve_cfrags_schema = BobRetrieveCFrags() - - # no args - with pytest.raises(InvalidInputData): - bob_retrieve_cfrags_schema.load({}) - - # Setup - no context - retrieval_args, _ = retrieval_request_setup(enacted_policy, - bob, - alice, - encode_for_rest=True) - bob_retrieve_cfrags_schema.load(retrieval_args) - - # simple schema load w/ optional context - retrieval_args, _ = retrieval_request_setup( - enacted_policy, - bob, - alice, - encode_for_rest=True, - context=valid_user_address_context, - ) - bob_retrieve_cfrags_schema.load(retrieval_args) - - # invalid context specified - retrieval_args, _ = retrieval_request_setup( - enacted_policy, - bob, - alice, - encode_for_rest=True, - context=[1, 2, 3], # list instead of dict - ) - with pytest.raises(InvalidInputData): - # invalid context type - bob_retrieve_cfrags_schema.load(retrieval_args) - - # missing required argument - updated_data = dict(retrieval_args) - updated_data.pop("context") # context is not a required param - key_to_remove = random.choice(list(updated_data.keys())) - del updated_data[key_to_remove] - with pytest.raises(InvalidInputData): - # missing arg - bob_retrieve_cfrags_schema.load(updated_data) - - # - # Retrieval output for 1 retrieval kit - # - non_encoded_retrieval_args, _ = retrieval_request_setup( - enacted_policy, - bob, - alice, - encode_for_rest=False, - context=valid_user_address_context, - ) - retrieval_outcomes = porter.retrieve_cfrags(**non_encoded_retrieval_args) - expected_retrieval_results_json = [] - retrieval_outcome_schema = RetrievalOutcomeSchema() - - assert len(retrieval_outcomes) == 1 - assert len(retrieval_outcomes[0].cfrags) > 0 - assert len(retrieval_outcomes[0].errors) == 0 - for outcome in retrieval_outcomes: - data = retrieval_outcome_schema.dump(outcome) - expected_retrieval_results_json.append(data) - - output = bob_retrieve_cfrags_schema.dump( - obj={"retrieval_results": retrieval_outcomes} - ) - assert output == {"retrieval_results": expected_retrieval_results_json} - assert len(output["retrieval_results"]) == 1 - assert len(output["retrieval_results"][0]["cfrags"]) > 0 - assert len(output["retrieval_results"][0]["errors"]) == 0 - - # now include errors - errors = { - get_random_checksum_address(): "Error Message 1", - get_random_checksum_address(): "Error Message 2", - get_random_checksum_address(): "Error Message 3", - } - new_retrieval_outcome = Porter.RetrievalOutcome( - cfrags=retrieval_outcomes[0].cfrags, errors=errors - ) - expected_retrieval_results_json = [ - retrieval_outcome_schema.dump(new_retrieval_outcome) - ] - output = bob_retrieve_cfrags_schema.dump( - obj={"retrieval_results": [new_retrieval_outcome]} - ) - assert output == {"retrieval_results": expected_retrieval_results_json} - assert len(output["retrieval_results"]) == 1 - assert len(output["retrieval_results"][0]["cfrags"]) > 0 - assert len(output["retrieval_results"][0]["errors"]) == len(errors) - - # - # Retrieval output for multiple retrieval kits - # - num_retrieval_kits = 4 - non_encoded_retrieval_args, _ = retrieval_request_setup( - enacted_policy, - bob, - alice, - encode_for_rest=False, - context=valid_user_address_context, - num_random_messages=num_retrieval_kits, - ) - retrieval_outcomes = porter.retrieve_cfrags(**non_encoded_retrieval_args) - expected_retrieval_results_json = [] - retrieval_outcome_schema = RetrievalOutcomeSchema() - - assert len(retrieval_outcomes) == num_retrieval_kits - for i in range(num_retrieval_kits): - assert len(retrieval_outcomes[i].cfrags) > 0 - assert len(retrieval_outcomes[i].errors) == 0 - for outcome in retrieval_outcomes: - data = retrieval_outcome_schema.dump(outcome) - expected_retrieval_results_json.append(data) - - output = bob_retrieve_cfrags_schema.dump( - obj={"retrieval_results": retrieval_outcomes} - ) - assert output == {"retrieval_results": expected_retrieval_results_json} - - # now include errors - error_message_template = "Retrieval Kit {} - Error Message {}" - new_retrieval_outcomes_with_errors = [] - for i in range(num_retrieval_kits): - specific_kit_errors = dict() - for j in range(i): - # different number of errors for each kit; 1 error for kit 1, 2 errors for kit 2 etc. - specific_kit_errors[ - get_random_checksum_address() - ] = error_message_template.format(i, j) - new_retrieval_outcomes_with_errors.append( - Porter.RetrievalOutcome( - cfrags=retrieval_outcomes[i].cfrags, errors=specific_kit_errors - ) - ) - - expected_retrieval_results_json = [] - for outcome in new_retrieval_outcomes_with_errors: - data = retrieval_outcome_schema.dump(outcome) - expected_retrieval_results_json.append(data) - - output = bob_retrieve_cfrags_schema.dump( - obj={"retrieval_results": new_retrieval_outcomes_with_errors} - ) - assert output == {"retrieval_results": expected_retrieval_results_json} - assert len(output["retrieval_results"]) == num_retrieval_kits - for i in range(num_retrieval_kits): - assert len(output["retrieval_results"][i]["cfrags"]) > 0 - # ensures errors are associated appropriately - kit_errors = output["retrieval_results"][i]["errors"] - assert len(kit_errors) == i - values = kit_errors.values() # ordered? - for j in range(i): - assert error_message_template.format(i, j) in values - - -def make_header(brand: bytes, major: int, minor: int) -> bytes: - # Hardcoding this since it's too much trouble to expose it all the way from Rust - assert len(brand) == 4 - major_bytes = major.to_bytes(2, 'big') - minor_bytes = minor.to_bytes(2, 'big') - header = brand + major_bytes + minor_bytes - return header - - -def test_treasure_map_validation(enacted_policy, - bob): - class UnenncryptedTreasureMapsOnly(BaseSchema): - tmap = TreasureMap() - - # this will raise a base64 error - with pytest.raises(SpecificationError) as e: - UnenncryptedTreasureMapsOnly().load({'tmap': "your face looks like a treasure map"}) - - # assert that field name is in the error message - assert "Could not parse tmap" in str(e) - assert "Invalid base64-encoded string" in str(e) - - # valid base64 but invalid treasuremap - bad_map = make_header(b'TMap', 1, 0) + b"your face looks like a treasure map" - bad_map_b64 = base64.b64encode(bad_map).decode() - - with pytest.raises(InvalidInputData) as e: - UnenncryptedTreasureMapsOnly().load({'tmap': bad_map_b64}) - - assert "Could not convert input for tmap to a TreasureMap" in str(e) - assert "Failed to deserialize" in str(e) - - # a valid treasuremap - decrypted_treasure_map = bob._decrypt_treasure_map(enacted_policy.treasure_map, - enacted_policy.publisher_verifying_key) - tmap_bytes = bytes(decrypted_treasure_map) - tmap_b64 = base64.b64encode(tmap_bytes).decode() - result = UnenncryptedTreasureMapsOnly().load({'tmap': tmap_b64}) - assert isinstance(result['tmap'], TreasureMapClass) - - -def test_key_validation(bob): - - class BobKeyInputRequirer(BaseSchema): - bobkey = Key() - - with pytest.raises(InvalidInputData) as e: - BobKeyInputRequirer().load({'bobkey': "I am the key to nothing"}) - assert "non-hexadecimal number found in fromhex()" in str(e) - assert "bobkey" in str(e) - - with pytest.raises(InvalidInputData) as e: - BobKeyInputRequirer().load({'bobkey': "I am the key to nothing"}) - assert "non-hexadecimal number found in fromhex()" in str(e) - assert "bobkey" in str(e) - - with pytest.raises(InvalidInputData) as e: - # lets just take a couple bytes off - BobKeyInputRequirer().load({'bobkey': "02f0cb3f3a33f16255d9b2586e6c56570aa07bbeb1157e169f1fb114ffb40037"}) - assert "Could not convert input for bobkey to an Umbral Key" in str(e) - assert "xpected 33 bytes, got 32" in str(e) - - result = BobKeyInputRequirer().load(dict(bobkey=bytes(bob.public_keys(DecryptingPower)).hex())) - assert isinstance(result['bobkey'], PublicKey) \ No newline at end of file diff --git a/tests/test_porter_web_controller.py b/tests/test_porter_web_controller.py deleted file mode 100644 index 0006149..0000000 --- a/tests/test_porter_web_controller.py +++ /dev/null @@ -1,244 +0,0 @@ -import json -import sys -from base64 import b64encode - -from flask import Response, request -from nucypher.characters.lawful import Enrico -from nucypher.crypto.powers import DecryptingPower -from nucypher.policy.kits import PolicyMessageKit, RetrievalResult -from nucypher.utilities.concurrency import WorkerPoolException -from nucypher_core import RetrievalKit - -from porter.controllers import WebController -from porter.fields.base import JSON -from porter.fields.retrieve import RetrievalKit as RetrievalKitField -from porter.interfaces import PorterInterface -from porter.schema import RetrievalOutcomeSchema -from porter.utils import ( - retrieval_params_decode_from_rest, - retrieval_request_setup, -) - - -def test_get_ursulas(porter_web_controller, ursulas): - # Send bad data to assert error return - response = porter_web_controller.get('/get_ursulas', data=json.dumps({'bad': 'input'})) - assert response.status_code == 400 - - quantity = 4 - ursulas_list = list(ursulas) - include_ursulas = [ursulas_list[0].checksum_address, ursulas_list[1].checksum_address] - exclude_ursulas = [ursulas_list[2].checksum_address, ursulas_list[3].checksum_address] - - get_ursulas_params = { - 'quantity': quantity, - 'include_ursulas': include_ursulas, - 'exclude_ursulas': exclude_ursulas - } - - # - # Success - # - response = porter_web_controller.get('/get_ursulas', data=json.dumps(get_ursulas_params)) - assert response.status_code == 200 - - response_data = json.loads(response.data) - ursulas_info = response_data['result']['ursulas'] - returned_ursula_addresses = {ursula_info['checksum_address'] for ursula_info in ursulas_info} # ensure no repeats - assert len(returned_ursula_addresses) == quantity - for address in include_ursulas: - assert address in returned_ursula_addresses - for address in exclude_ursulas: - assert address not in returned_ursula_addresses - - # - # Test Query parameters - # - response = porter_web_controller.get(f'/get_ursulas?quantity={quantity}' - f'&include_ursulas={",".join(include_ursulas)}' - f'&exclude_ursulas={",".join(exclude_ursulas)}') - assert response.status_code == 200 - response_data = json.loads(response.data) - ursulas_info = response_data['result']['ursulas'] - returned_ursula_addresses = {ursula_info['checksum_address'] for ursula_info in ursulas_info} # ensure no repeats - assert len(returned_ursula_addresses) == quantity - for address in include_ursulas: - assert address in returned_ursula_addresses - for address in exclude_ursulas: - assert address not in returned_ursula_addresses - - # - # Failure case - # - failed_ursula_params = dict(get_ursulas_params) - failed_ursula_params['quantity'] = len(ursulas_list) + 1 # too many to get - response = porter_web_controller.get('/get_ursulas', data=json.dumps(failed_ursula_params)) - assert response.status_code == 500 - - -def test_retrieve_cfrags(porter, - porter_web_controller, - enacted_policy, - bob, - alice, - random_treasure_map_data, - valid_user_address_context): - # Send bad data to assert error return - response = porter_web_controller.post('/retrieve_cfrags', data=json.dumps({'bad': 'input'})) - assert response.status_code == 400 - - # Setup - original_message = b'The paradox of education is precisely this - that as one begins to become ' \ - b'conscious one begins to examine the society in which ' \ - b'he is (they are) being educated.' # - James Baldwin - retrieve_cfrags_params, message_kits = retrieval_request_setup(enacted_policy, - bob, - alice, - specific_messages=[original_message], - encode_for_rest=True) - assert len(message_kits) == 1 - message_kit = message_kits[0] - - # - # Success - # - response = porter_web_controller.post('/retrieve_cfrags', data=json.dumps(retrieve_cfrags_params)) - assert response.status_code == 200 - - response_data = json.loads(response.data) - retrieval_results = response_data['result']['retrieval_results'] - assert retrieval_results - - # expected results - can only compare length of results, ursulas are randomized to obtain cfrags - retrieve_args = retrieval_params_decode_from_rest(retrieve_cfrags_params) - expected_results = porter.retrieve_cfrags(**retrieve_args) - assert len(retrieval_results) == len(expected_results) - - # check that the re-encryption performed was valid - treasure_map = retrieve_args['treasure_map'] - policy_message_kit = PolicyMessageKit.from_message_kit(message_kit=message_kit, - policy_encrypting_key=enacted_policy.public_key, - threshold=treasure_map.threshold) - assert len(retrieval_results) == 1 - field = RetrievalOutcomeSchema() - cfrags = field.load(retrieval_results[0])['cfrags'] - verified_cfrags = {} - for ursula, cfrag in cfrags.items(): - # need to obtain verified cfrags (verified cfrags are not deserializable, only non-verified cfrags) - verified_cfrag = cfrag.verify(capsule=policy_message_kit.message_kit.capsule, - verifying_pk=alice.stamp.as_umbral_pubkey(), - delegating_pk=enacted_policy.public_key, - receiving_pk=bob.public_keys(DecryptingPower)) - verified_cfrags[ursula] = verified_cfrag - retrieval_result_object = RetrievalResult(cfrags=verified_cfrags) - policy_message_kit = policy_message_kit.with_result(retrieval_result_object) - - assert policy_message_kit.is_decryptable_by_receiver() - - cleartext = bob._crypto_power.power_ups(DecryptingPower).keypair.decrypt_message_kit(policy_message_kit) - assert cleartext == original_message - - # - # Try using multiple retrieval kits - # - multiple_retrieval_kits_params = dict(retrieve_cfrags_params) - enrico = Enrico(policy_encrypting_key=enacted_policy.public_key) - retrieval_kit_1 = RetrievalKit.from_message_kit(enrico.encrypt_message(b'The paradox of education is precisely this')) - retrieval_kit_2 = RetrievalKit.from_message_kit(enrico.encrypt_message(b'that as one begins to become conscious')) - retrieval_kit_3 = RetrievalKit.from_message_kit(enrico.encrypt_message(b'begins to examine the society in which')) - retrieval_kit_4 = RetrievalKit.from_message_kit(enrico.encrypt_message(b'he is (they are) being educated.')) - retrieval_kit_field = RetrievalKitField() - # use multiple retrieval kits and serialize for json - multiple_retrieval_kits_params['retrieval_kits'] = [ - retrieval_kit_field._serialize(value=retrieval_kit_1, attr=None, obj=None), - retrieval_kit_field._serialize(value=retrieval_kit_2, attr=None, obj=None), - retrieval_kit_field._serialize(value=retrieval_kit_3, attr=None, obj=None), - retrieval_kit_field._serialize(value=retrieval_kit_4, attr=None, obj=None) - ] - response = porter_web_controller.post('/retrieve_cfrags', data=json.dumps(multiple_retrieval_kits_params)) - assert response.status_code == 200 - - response_data = json.loads(response.data) - retrieval_results = response_data['result']['retrieval_results'] - assert retrieval_results - assert len(retrieval_results) == 4 - for i in range(0, 4): - assert len(retrieval_results[i]["cfrags"]) > 0 - assert len(retrieval_results[i]["errors"]) == 0 - - # - # Use context - # - context_field = JSON() - multiple_retrieval_kits_params['context'] = context_field._serialize(valid_user_address_context, attr=None, obj=None) - response = porter_web_controller.post('/retrieve_cfrags', data=json.dumps(multiple_retrieval_kits_params)) - assert response.status_code == 200 - - response_data = json.loads(response.data) - retrieval_results = response_data['result']['retrieval_results'] - assert retrieval_results - assert len(retrieval_results) == 4 - - # - # Failure - # - failure_retrieve_cfrags_params = dict(retrieve_cfrags_params) - # use encrypted treasure map - _, random_treasure_map = random_treasure_map_data - failure_retrieve_cfrags_params['treasure_map'] = b64encode(bytes(random_treasure_map)).decode() - response = porter_web_controller.post('/retrieve_cfrags', data=json.dumps(failure_retrieve_cfrags_params)) - assert response.status_code == 400 # invalid treasure map provided - - -def test_web_controller_handling_worker_pool_exception(mocker): - interface_impl = mocker.Mock() - num_failures = 3 - message_prefix = "Execution failed because test designed that way" - - def get_ursulas_method(*args, **kwargs): - failures = {} - for i in range(num_failures): - try: - raise ValueError(f'error_{i}') - except BaseException as e: - failures[f"value_{i}"] = sys.exc_info() - - raise WorkerPoolException(message_prefix=message_prefix, failures=failures) - - interface_impl.get_ursulas.side_effect = get_ursulas_method - controller = WebController(app_name="web_controller_app_test", - crash_on_error=False, - # too lazy to create test schema - use existing one - interface=PorterInterface(porter=interface_impl)) - control_transport = controller.make_control_transport() - - @control_transport.route('/get_ursulas', methods=['GET']) - def get_ursulas() -> Response: - """Porter control endpoint for sampling Ursulas on behalf of Alice.""" - response = controller(method_name='get_ursulas', control_request=request) - return response - - client = controller.test_client() - - get_ursulas_params = { - 'quantity': 5, - } - response = client.get('/get_ursulas', data=json.dumps(get_ursulas_params)) - - assert response.status_code == 404 - assert response.content_type == 'application/json' - response_data = json.loads(response.data) - - assert message_prefix in response_data['result']['failure_message'] - response_failures = response_data['result']['failures'] - assert len(response_failures) == 3 - - values = [f"value_{i}" for i in range(num_failures)] - errors = [f"error_{i}" for i in range(num_failures)] - for failure in response_failures: - assert failure['value'] in values - assert failure['error'] in errors - - # remove checked entry - values.remove(failure['value']) - errors.remove(failure['error']) \ No newline at end of file