diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 02ef562..83c66d0 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,2 +1 @@ -github: OpenDebates -open_collective: openskill +github: vivekjoshy diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index ac5a66b..1fd04e8 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -3,7 +3,7 @@ name: Bug report about: Create a report to help us improve title: '' labels: 'maybe: bug' -assignees: daegontaven +assignees: vivekjoshy --- @@ -21,8 +21,8 @@ If applicable, add screenshots to help explain your problem. **Platform Information** - OS: [e.g. Ubuntu] - - Python Version: [e.g. 3.10] - - openskill.py Version: [e.g. 0.2.0-alpha.0] + - Python Version: [e.g. 3.12] + - openskill.py Version: [e.g. 5.0.2] **Additional context** Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 64f1ccb..18d038e 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -3,7 +3,7 @@ name: Feature request about: Suggest an idea for this project title: '' labels: enhancement -assignees: daegontaven +assignees: vivekjoshy --- diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml index e55dc3c..5d81a58 100644 --- a/.github/workflows/draft-pdf.yml +++ b/.github/workflows/draft-pdf.yml @@ -1,3 +1,4 @@ +name: Draft Paper on: [push] jobs: @@ -6,14 +7,14 @@ jobs: name: Paper Draft steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Build draft PDF uses: openjournals/openjournals-draft-action@master with: journal: joss paper-path: paper/paper.md - name: Upload - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: name: paper path: paper/paper.pdf diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 05b5caa..4d17fc0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,24 +19,25 @@ jobs: fail-fast: false matrix: os: [Ubuntu, MacOS, Windows] - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] architecture: ["x86", "x64"] experimental: [false] defaults: run: shell: bash steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Stable CPython - ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} + allow-prereleases: true cache: 'pip' cache-dependency-path: "**/pyproject.toml" - name: Install Tox - run: python -m pip install tox-gh-actions>=3.1.3 + run: python -m pip install tox-gh-actions>=3.2.0 - name: Setup Test Suite run: tox -vv --notest - name: Run Tests @@ -45,7 +46,7 @@ jobs: tox --skip-pkg-install continue-on-error: ${{ matrix.experimental }} - name: "Upload Coverage to Codecov" - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: ${{ !matrix.experimental }} @@ -66,17 +67,17 @@ jobs: run: shell: bash steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Unstable CPython - ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: 'pip' cache-dependency-path: "**/pyproject.toml" - name: Install Tox - run: python -m pip install tox-gh-actions>=3.1.3 + run: python -m pip install tox-gh-actions>=3.2.0 - name: Setup Test Suite run: tox -vv --notest - name: Run Tests @@ -85,7 +86,7 @@ jobs: tox --skip-pkg-install continue-on-error: ${{ matrix.experimental }} - name: "Upload Coverage to Codecov" - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: ${{ !matrix.experimental }} @@ -99,24 +100,24 @@ jobs: fail-fast: true matrix: os: [Ubuntu, MacOS, Windows] - python-version: ["pypy3.8", "pypy3.9", "pypy3.10"] + python-version: ["pypy3.9", "pypy3.10"] architecture: ["x64"] experimental: [false] defaults: run: shell: bash steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up PyPy - ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: 'pip' cache-dependency-path: "**/pyproject.toml" - name: Install Tox - run: python -m pip install tox-gh-actions>=3.1.3 + run: python -m pip install tox-gh-actions>=3.2.0 - name: Setup Test Suite run: tox -vv --notest - name: Run Tests @@ -125,7 +126,7 @@ jobs: tox --skip-pkg-install continue-on-error: ${{ matrix.experimental }} - name: "Upload Coverage to Codecov" - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: ${{ !matrix.experimental }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bfbb2eb..c01ebee 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,14 +11,14 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Get Tag id: tag run: echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT - - name: Set Up Python 3.11 - uses: actions/setup-python@v4 + - name: Set Up Python 3.12 + uses: actions/setup-python@v5 with: python-version: "3.12" cache: 'pip' diff --git a/LICENSE b/LICENSE index c56fe1f..b3a45b4 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2023 Vivek Joshy +Copyright (c) 2024 Vivek Joshy Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 5f7a9fd..8d30427 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,8 @@ and bury Elo once and for all: - Multifaction. - Asymmetric faction size. - Predict Win, Draw and Rank Outcomes. +- Per Player Weights +- Partial Play - 150% faster than TrueSkill. - 100% Pure Python. - 100% Test Coverage. @@ -69,7 +71,7 @@ and bury Elo once and for all: - 5 Separate Models. - Fine-grained control of mathematical constants. - Open License -- Up to 7% more accurate than TrueSkill. +- Accuracy on par with TrueSkill. ## Installation diff --git a/SECURITY.md b/SECURITY.md index df0781b..4199f6e 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -10,4 +10,4 @@ ## Reporting a Vulnerability -Submit any sensitive issues through private vulnerability reporting or send an email to [`vivek@opendebates.net`](mailto:vivek@opendebates.net). +Submit any sensitive issues through private vulnerability reporting or send an email to [`vivekjoshy97@gmail.com`](mailto:vivek@opendebates.net). diff --git a/changes/138.breaking.rst b/changes/138.breaking.rst new file mode 100644 index 0000000..e70d549 --- /dev/null +++ b/changes/138.breaking.rst @@ -0,0 +1 @@ +Prediction methods better account for uncertainty. diff --git a/changes/138.feature.rst b/changes/138.feature.rst new file mode 100644 index 0000000..4367d8a --- /dev/null +++ b/changes/138.feature.rst @@ -0,0 +1,2 @@ +Support Per Player Weights and Balance Flag +Prediction methods have faster runtime. diff --git a/docs/doc_requires.txt b/docs/doc_requires.txt index 3eb0133..fd5432e 100644 --- a/docs/doc_requires.txt +++ b/docs/doc_requires.txt @@ -1,13 +1,13 @@ -sphinx~=7.2 +sphinx~=7.4 nbsphinx~=0.9 -pygments~=2.15 -shibuya~=2024.4 -ipykernel~=6.25 -myst_parser~=2.0 # Must Be Underscore, not Hyphen -sphinx-intl~=2.1 +pygments~=2.18 +shibuya~=2024.7 +ipykernel~=6.29 +myst_parser~=3.0 # Must Be Underscore, not Hyphen +sphinx-intl~=2.2 sphinx_favicon~=1.0 sphinx-copybutton~=0.5 -sphinx-autoapi~=3.0 -sphinxext-opengraph~=0.8 +sphinx-autoapi~=3.1 +sphinxext-opengraph~=0.9 sphinxcontrib-bibtex~=2.6 -sphinx-autodoc-typehints~=2.0 +sphinx-autodoc-typehints~=2.2 diff --git a/docs/source/api/openskill/models/common/index.rst b/docs/source/api/openskill/models/common/index.rst index 32a42a3..199b88c 100644 --- a/docs/source/api/openskill/models/common/index.rst +++ b/docs/source/api/openskill/models/common/index.rst @@ -18,21 +18,12 @@ Functions .. autoapisummary:: - openskill.models.common._arg_sort openskill.models.common._matrix_transpose - openskill.models.common._rank_data + openskill.models.common._normalize openskill.models.common._unary_minus -.. py:function:: _arg_sort(vector) - - Returns the indices that would sort a vector. - - :param vector: A list of objects. - :return: Rank vector without ties. - - .. py:function:: _matrix_transpose(matrix) Transpose a matrix. @@ -41,13 +32,14 @@ Functions :return: A transposed matrix. -.. py:function:: _rank_data(vector) +.. py:function:: _normalize(vector, target_minimum, target_maximum) - Sorting with 'competition ranking'. Pure python equivalent of - :code:`scipy.stats.rankdata` function. + Normalizes a vector to a target range of values. - :param vector: A list of objects. - :return: Rank vector with ties. + :param vector: A vector to normalize. + :param target_minimum: Minimum value to scale the values between. + :param target_maximum: Maximum value to scale the values between. + :return: Normalized vector. .. py:function:: _unary_minus(number) diff --git a/docs/source/api/openskill/models/weng_lin/bradley_terry_full/index.rst b/docs/source/api/openskill/models/weng_lin/bradley_terry_full/index.rst index d5b921b..c9c9c88 100644 --- a/docs/source/api/openskill/models/weng_lin/bradley_terry_full/index.rst +++ b/docs/source/api/openskill/models/weng_lin/bradley_terry_full/index.rst @@ -25,7 +25,7 @@ Classes -.. py:class:: BradleyTerryFull(mu = 25.0, sigma = 25.0 / 3.0, beta = 25.0 / 6.0, kappa = 0.0001, gamma = _gamma, tau = 25.0 / 300.0, limit_sigma = False) +.. py:class:: BradleyTerryFull(mu = 25.0, sigma = 25.0 / 3.0, beta = 25.0 / 6.0, kappa = 0.0001, gamma = _gamma, tau = 25.0 / 300.0, limit_sigma = False, balance = False) Algorithm 1 by :cite:t:`JMLR:v12:weng11a` @@ -76,6 +76,8 @@ Classes :param limit_sigma: Boolean that determines whether to restrict the value of sigma from increasing. + :param balance: Boolean that determines whether to emphasize + rating outliers. .. py:method:: _a(team_ratings) :staticmethod: @@ -89,7 +91,7 @@ Classes A_q = |\{s: r(s) = r(q)\}|, q = 1,...,k :param team_ratings: The whole rating of a list of teams in a game. - :return: A list of Decimals. + :return: A list of ints. .. py:method:: _c(team_ratings) @@ -123,7 +125,7 @@ Classes :return: A list of ranks for each team in the game. - .. py:method:: _calculate_team_ratings(game, ranks = None) + .. py:method:: _calculate_team_ratings(game, ranks = None, weights = None) Get the team ratings of a game. @@ -132,6 +134,11 @@ Classes :param ranks: A list of ranks for each team in the game. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. The values should be normalized + from 0 to 1. + :return: A list of :class:`BradleyTerryFullTeamRating` objects. @@ -160,7 +167,7 @@ Classes :param c: The square root of the collective team sigma. - :return: A list of Decimals. + :return: A list of floats. .. py:method:: create_rating(rating, name = None) @@ -181,7 +188,7 @@ Classes Predict how likely a match up against teams of one or more players will draw. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. :return: The odds of a draw. @@ -190,7 +197,7 @@ Classes .. py:method:: predict_rank(teams) Predict the shape of a match outcome. This algorithm has a time - complexity of :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the + complexity of :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. @@ -201,7 +208,7 @@ Classes Predict how likely a match up against teams of one or more players will go. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. This is a generalization of the algorithm in :cite:p:`Ibstedt1322103` to asymmetric n-player n-teams. @@ -210,19 +217,23 @@ Classes :return: A list of odds of each team winning. - .. py:method:: rate(teams, ranks = None, scores = None, tau = None, limit_sigma = None) + .. py:method:: rate(teams, ranks = None, scores = None, weights = None, tau = None, limit_sigma = None) Calculate the new ratings based on the given teams and parameters. :param teams: A list of teams where each team is a list of :class:`BradleyTerryFullRating` objects. - :param ranks: A list of Decimals where the lower values + :param ranks: A list of floats where the lower values represent winners. - :param scores: A list of Decimals where higher values + :param scores: A list of floats where higher values represent winners. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. + :param tau: Additive dynamics parameter that prevents sigma from getting too small to increase rating change volatility. @@ -236,12 +247,12 @@ Classes .. py:method:: rating(mu = None, sigma = None, name = None) Returns a new rating object with your default parameters. The given - parameters can be overriden from the defaults provided by the main + parameters can be overridden from the defaults provided by the main model, but is not recommended unless you know what you are doing. :param mu: Represents the initial belief about the skill of a player before any matches have been played. Known - mostly as the mean of the Guassian prior distribution. + mostly as the mean of the Gaussian prior distribution. *Represented by:* :math:`\mu` @@ -278,15 +289,24 @@ Classes :param name: Optional name for the player. - .. py:method:: ordinal(z = 3.0) + .. py:method:: ordinal(z = 3.0, alpha = 1, target = 0) A single scalar value that represents the player's skill where their true skill is 99.7% likely to be higher. - :param z: Integer that represents the variance of the skill of a - player. By default, set to 3. + :param z: Float that represents the number of standard deviations to subtract + from the mean. By default, set to 3.0, which corresponds to a + 99.7% confidence interval in a normal distribution. + + :param alpha: Float scaling factor applied to the entire calculation. + Adjusts the overall scale of the ordinal value. + Defaults to 1. + + :param target: Optional float value used to shift the ordinal value + towards a specific target. The shift is adjusted by the + alpha scaling factor. Defaults to 0. - :return: :math:`\mu - z * \sigma` + :return: :math:`\alpha \cdot ((\mu - z * \sigma) + \frac{\text{target}}{\alpha})` diff --git a/docs/source/api/openskill/models/weng_lin/bradley_terry_part/index.rst b/docs/source/api/openskill/models/weng_lin/bradley_terry_part/index.rst index c03b138..cc21c5f 100644 --- a/docs/source/api/openskill/models/weng_lin/bradley_terry_part/index.rst +++ b/docs/source/api/openskill/models/weng_lin/bradley_terry_part/index.rst @@ -25,7 +25,7 @@ Classes -.. py:class:: BradleyTerryPart(mu = 25.0, sigma = 25.0 / 3.0, beta = 25.0 / 6.0, kappa = 0.0001, gamma = _gamma, tau = 25.0 / 300.0, limit_sigma = False) +.. py:class:: BradleyTerryPart(mu = 25.0, sigma = 25.0 / 3.0, beta = 25.0 / 6.0, kappa = 0.0001, gamma = _gamma, tau = 25.0 / 300.0, limit_sigma = False, balance = False) Algorithm 2 by :cite:t:`JMLR:v12:weng11a` @@ -76,6 +76,8 @@ Classes :param limit_sigma: Boolean that determines whether to restrict the value of sigma from increasing. + :param balance: Boolean that determines whether to emphasize + rating outliers. .. py:method:: _a(team_ratings) :staticmethod: @@ -89,7 +91,7 @@ Classes A_q = |\{s: r(s) = r(q)\}|, q = 1,...,k :param team_ratings: The whole rating of a list of teams in a game. - :return: A list of Decimals. + :return: A list of ints. .. py:method:: _c(team_ratings) @@ -123,7 +125,7 @@ Classes :return: A list of ranks for each team in the game. - .. py:method:: _calculate_team_ratings(game, ranks = None) + .. py:method:: _calculate_team_ratings(game, ranks = None, weights = None) Get the team ratings of a game. @@ -132,6 +134,11 @@ Classes :param ranks: A list of ranks for each team in the game. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. The values should be normalized + from 0 to 1. + :return: A list of :class:`BradleyTerryPartTeamRating` objects. @@ -160,7 +167,7 @@ Classes :param c: The square root of the collective team sigma. - :return: A list of Decimals. + :return: A list of floats. .. py:method:: create_rating(rating, name = None) @@ -181,7 +188,7 @@ Classes Predict how likely a match up against teams of one or more players will draw. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. :return: The odds of a draw. @@ -190,7 +197,7 @@ Classes .. py:method:: predict_rank(teams) Predict the shape of a match outcome. This algorithm has a time - complexity of :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the + complexity of :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. @@ -201,7 +208,7 @@ Classes Predict how likely a match up against teams of one or more players will go. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. This is a generalization of the algorithm in :cite:p:`Ibstedt1322103` to asymmetric n-player n-teams. @@ -210,19 +217,23 @@ Classes :return: A list of odds of each team winning. - .. py:method:: rate(teams, ranks = None, scores = None, tau = None, limit_sigma = None) + .. py:method:: rate(teams, ranks = None, scores = None, weights = None, tau = None, limit_sigma = None) Calculate the new ratings based on the given teams and parameters. :param teams: A list of teams where each team is a list of :class:`BradleyTerryPartRating` objects. - :param ranks: A list of Decimals where the lower values + :param ranks: A list of floats where the lower values represent winners. - :param scores: A list of Decimals where higher values + :param scores: A list of floats where higher values represent winners. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. + :param tau: Additive dynamics parameter that prevents sigma from getting too small to increase rating change volatility. @@ -236,12 +247,12 @@ Classes .. py:method:: rating(mu = None, sigma = None, name = None) Returns a new rating object with your default parameters. The given - parameters can be overriden from the defaults provided by the main + parameters can be overridden from the defaults provided by the main model, but is not recommended unless you know what you are doing. :param mu: Represents the initial belief about the skill of a player before any matches have been played. Known - mostly as the mean of the Guassian prior distribution. + mostly as the mean of the Gaussian prior distribution. *Represented by:* :math:`\mu` @@ -278,15 +289,24 @@ Classes :param name: Optional name for the player. - .. py:method:: ordinal(z = 3.0) + .. py:method:: ordinal(z = 3.0, alpha = 1, target = 0) A single scalar value that represents the player's skill where their true skill is 99.7% likely to be higher. - :param z: Integer that represents the variance of the skill of a - player. By default, set to 3. + :param z: Float that represents the number of standard deviations to subtract + from the mean. By default, set to 3.0, which corresponds to a + 99.7% confidence interval in a normal distribution. + + :param alpha: Float scaling factor applied to the entire calculation. + Adjusts the overall scale of the ordinal value. + Defaults to 1. + + :param target: Optional float value used to shift the ordinal value + towards a specific target. The shift is adjusted by the + alpha scaling factor. Defaults to 0. - :return: :math:`\mu - z * \sigma` + :return: :math:`\alpha \cdot ((\mu - z * \sigma) + \frac{\text{target}}{\alpha})` diff --git a/docs/source/api/openskill/models/weng_lin/plackett_luce/index.rst b/docs/source/api/openskill/models/weng_lin/plackett_luce/index.rst index 3d90042..c523ba9 100644 --- a/docs/source/api/openskill/models/weng_lin/plackett_luce/index.rst +++ b/docs/source/api/openskill/models/weng_lin/plackett_luce/index.rst @@ -25,7 +25,7 @@ Classes -.. py:class:: PlackettLuce(mu = 25.0, sigma = 25.0 / 3.0, beta = 25.0 / 6.0, kappa = 0.0001, gamma = _gamma, tau = 25.0 / 300.0, limit_sigma = False) +.. py:class:: PlackettLuce(mu = 25.0, sigma = 25.0 / 3.0, beta = 25.0 / 6.0, kappa = 0.0001, gamma = _gamma, tau = 25.0 / 300.0, limit_sigma = False, balance = False) Algorithm 4 by :cite:t:`JMLR:v12:weng11a` @@ -40,7 +40,7 @@ Classes :param mu: Represents the initial belief about the skill of a player before any matches have been played. Known - mostly as the mean of the Guassian prior distribution. + mostly as the mean of the Gaussian prior distribution. *Represented by:* :math:`\mu` @@ -77,6 +77,8 @@ Classes :param limit_sigma: Boolean that determines whether to restrict the value of sigma from increasing. + :param balance: Boolean that determines whether to emphasize + rating outliers. .. py:method:: _a(team_ratings) :staticmethod: @@ -90,7 +92,7 @@ Classes A_q = |\{s: r(s) = r(q)\}|, q = 1,...,k :param team_ratings: The whole rating of a list of teams in a game. - :return: A list of Decimals. + :return: A list of ints. .. py:method:: _c(team_ratings) @@ -124,7 +126,7 @@ Classes :return: A list of ranks for each team in the game. - .. py:method:: _calculate_team_ratings(game, ranks = None) + .. py:method:: _calculate_team_ratings(game, ranks = None, weights = None) Get the team ratings of a game. @@ -133,6 +135,11 @@ Classes :param ranks: A list of ranks for each team in the game. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. The values should be normalized + from 0 to 1. + :return: A list of :class:`PlackettLuceTeamRating` objects. @@ -160,7 +167,7 @@ Classes :param c: The square root of the collective team sigma. - :return: A list of Decimals. + :return: A list of floats. .. py:method:: create_rating(rating, name = None) @@ -181,7 +188,7 @@ Classes Predict how likely a match up against teams of one or more players will draw. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. :return: The odds of a draw. @@ -190,7 +197,7 @@ Classes .. py:method:: predict_rank(teams) Predict the shape of a match outcome. This algorithm has a time - complexity of :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the + complexity of :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. @@ -201,7 +208,7 @@ Classes Predict how likely a match up against teams of one or more players will go. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. This is a generalization of the algorithm in :cite:p:`Ibstedt1322103` to asymmetric n-player n-teams. @@ -210,19 +217,23 @@ Classes :return: A list of odds of each team winning. - .. py:method:: rate(teams, ranks = None, scores = None, tau = None, limit_sigma = None) + .. py:method:: rate(teams, ranks = None, scores = None, weights = None, tau = None, limit_sigma = None) Calculate the new ratings based on the given teams and parameters. :param teams: A list of teams where each team is a list of :class:`PlackettLuceRating` objects. - :param ranks: A list of Decimals where the lower values + :param ranks: A list of floats where the lower values represent winners. - :param scores: A list of Decimals where higher values + :param scores: A list of floats where higher values represent winners. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. + :param tau: Additive dynamics parameter that prevents sigma from getting too small to increase rating change volatility. @@ -236,12 +247,12 @@ Classes .. py:method:: rating(mu = None, sigma = None, name = None) Returns a new rating object with your default parameters. The given - parameters can be overriden from the defaults provided by the main + parameters can be overridden from the defaults provided by the main model, but is not recommended unless you know what you are doing. :param mu: Represents the initial belief about the skill of a player before any matches have been played. Known - mostly as the mean of the Guassian prior distribution. + mostly as the mean of the Gaussian prior distribution. *Represented by:* :math:`\mu` @@ -278,15 +289,24 @@ Classes :param name: Optional name for the player. - .. py:method:: ordinal(z = 3.0) + .. py:method:: ordinal(z = 3.0, alpha = 1, target = 0) A single scalar value that represents the player's skill where their true skill is 99.7% likely to be higher. - :param z: Integer that represents the variance of the skill of a - player. By default, set to 3. + :param z: Float that represents the number of standard deviations to subtract + from the mean. By default, set to 3.0, which corresponds to a + 99.7% confidence interval in a normal distribution. + + :param alpha: Float scaling factor applied to the entire calculation. + Adjusts the overall scale of the ordinal value. + Defaults to 1. + + :param target: Optional float value used to shift the ordinal value + towards a specific target. The shift is adjusted by the + alpha scaling factor. Defaults to 0. - :return: :math:`\mu - z * \sigma` + :return: :math:`\alpha \cdot ((\mu - z * \sigma) + \frac{\text{target}}{\alpha})` diff --git a/docs/source/api/openskill/models/weng_lin/thurstone_mosteller_full/index.rst b/docs/source/api/openskill/models/weng_lin/thurstone_mosteller_full/index.rst index 3a091cd..9413de4 100644 --- a/docs/source/api/openskill/models/weng_lin/thurstone_mosteller_full/index.rst +++ b/docs/source/api/openskill/models/weng_lin/thurstone_mosteller_full/index.rst @@ -25,7 +25,7 @@ Classes -.. py:class:: ThurstoneMostellerFull(mu = 25.0, sigma = 25.0 / 3.0, beta = 25.0 / 6.0, kappa = 0.0001, gamma = _gamma, tau = 25.0 / 300.0, limit_sigma = False) +.. py:class:: ThurstoneMostellerFull(mu = 25.0, sigma = 25.0 / 3.0, beta = 25.0 / 6.0, kappa = 0.0001, gamma = _gamma, tau = 25.0 / 300.0, limit_sigma = False, balance = False) Algorithm 3 by :cite:t:`JMLR:v12:weng11a` @@ -40,7 +40,7 @@ Classes :param mu: Represents the initial belief about the skill of a player before any matches have been played. Known - mostly as the mean of the Guassian prior distribution. + mostly as the mean of the Gaussian prior distribution. *Represented by:* :math:`\mu` @@ -77,6 +77,8 @@ Classes :param limit_sigma: Boolean that determines whether to restrict the value of sigma from increasing. + :param balance: Boolean that determines whether to emphasize + rating outliers. .. py:method:: _a(team_ratings) :staticmethod: @@ -90,7 +92,7 @@ Classes A_q = |\{s: r(s) = r(q)\}|, q = 1,...,k :param team_ratings: The whole rating of a list of teams in a game. - :return: A list of Decimals. + :return: A list of floats. .. py:method:: _c(team_ratings) @@ -124,7 +126,7 @@ Classes :return: A list of ranks for each team in the game. - .. py:method:: _calculate_team_ratings(game, ranks = None) + .. py:method:: _calculate_team_ratings(game, ranks = None, weights = None) Get the team ratings of a game. @@ -133,6 +135,11 @@ Classes :param ranks: A list of ranks for each team in the game. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. The values should be normalized + from 0 to 1. + :return: A list of :class:`ThurstoneMostellerFullTeamRating` objects. @@ -161,7 +168,7 @@ Classes :param c: The square root of the collective team sigma. - :return: A list of Decimals. + :return: A list of floats. .. py:method:: create_rating(rating, name = None) @@ -182,7 +189,7 @@ Classes Predict how likely a match up against teams of one or more players will draw. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. :return: The odds of a draw. @@ -191,7 +198,7 @@ Classes .. py:method:: predict_rank(teams) Predict the shape of a match outcome. This algorithm has a time - complexity of :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the + complexity of :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. @@ -202,7 +209,7 @@ Classes Predict how likely a match up against teams of one or more players will go. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. This is a generalization of the algorithm in :cite:p:`Ibstedt1322103` to asymmetric n-player n-teams. @@ -211,19 +218,23 @@ Classes :return: A list of odds of each team winning. - .. py:method:: rate(teams, ranks = None, scores = None, tau = None, limit_sigma = None) + .. py:method:: rate(teams, ranks = None, scores = None, weights = None, tau = None, limit_sigma = None) Calculate the new ratings based on the given teams and parameters. :param teams: A list of teams where each team is a list of :class:`ThurstoneMostellerFullRating` objects. - :param ranks: A list of Decimals where the lower values + :param ranks: A list of floats where the lower values represent winners. - :param scores: A list of Decimals where higher values + :param scores: A list of floats where higher values represent winners. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. + :param tau: Additive dynamics parameter that prevents sigma from getting too small to increase rating change volatility. @@ -237,12 +248,12 @@ Classes .. py:method:: rating(mu = None, sigma = None, name = None) Returns a new rating object with your default parameters. The given - parameters can be overriden from the defaults provided by the main + parameters can be overridden from the defaults provided by the main model, but is not recommended unless you know what you are doing. :param mu: Represents the initial belief about the skill of a player before any matches have been played. Known - mostly as the mean of the Guassian prior distribution. + mostly as the mean of the Gaussian prior distribution. *Represented by:* :math:`\mu` @@ -267,7 +278,7 @@ Classes :param mu: Represents the initial belief about the skill of a player before any matches have been played. Known - mostly as the mean of the Guassian prior distribution. + mostly as the mean of the Gaussian prior distribution. *Represented by:* :math:`\mu` @@ -279,15 +290,24 @@ Classes :param name: Optional name for the player. - .. py:method:: ordinal(z = 3.0) + .. py:method:: ordinal(z = 3.0, alpha = 1, target = 0) A single scalar value that represents the player's skill where their true skill is 99.7% likely to be higher. - :param z: Integer that represents the variance of the skill of a - player. By default, set to 3. + :param z: Float that represents the number of standard deviations to subtract + from the mean. By default, set to 3.0, which corresponds to a + 99.7% confidence interval in a normal distribution. + + :param alpha: Float scaling factor applied to the entire calculation. + Adjusts the overall scale of the ordinal value. + Defaults to 1. + + :param target: Optional float value used to shift the ordinal value + towards a specific target. The shift is adjusted by the + alpha scaling factor. Defaults to 0. - :return: :math:`\mu - z * \sigma` + :return: :math:`\alpha \cdot ((\mu - z * \sigma) + \frac{\text{target}}{\alpha})` diff --git a/docs/source/api/openskill/models/weng_lin/thurstone_mosteller_part/index.rst b/docs/source/api/openskill/models/weng_lin/thurstone_mosteller_part/index.rst index edbd937..6aea9a8 100644 --- a/docs/source/api/openskill/models/weng_lin/thurstone_mosteller_part/index.rst +++ b/docs/source/api/openskill/models/weng_lin/thurstone_mosteller_part/index.rst @@ -25,7 +25,7 @@ Classes -.. py:class:: ThurstoneMostellerPart(mu = 25.0, sigma = 25.0 / 3.0, beta = 25.0 / 6.0, kappa = 0.0001, gamma = _gamma, tau = 25.0 / 300.0, limit_sigma = False) +.. py:class:: ThurstoneMostellerPart(mu = 25.0, sigma = 25.0 / 3.0, beta = 25.0 / 6.0, kappa = 0.0001, gamma = _gamma, tau = 25.0 / 300.0, limit_sigma = False, balance = False) Based on Algorithm 3 by :cite:t:`JMLR:v12:weng11a` @@ -78,6 +78,8 @@ Classes :param limit_sigma: Boolean that determines whether to restrict the value of sigma from increasing. + :param balance: Boolean that determines whether to emphasize + rating outliers. .. py:method:: _a(team_ratings) :staticmethod: @@ -91,7 +93,7 @@ Classes A_q = |\{s: r(s) = r(q)\}|, q = 1,...,k :param team_ratings: The whole rating of a list of teams in a game. - :return: A list of Decimals. + :return: A list of ints. .. py:method:: _c(team_ratings) @@ -125,7 +127,7 @@ Classes :return: A list of ranks for each team in the game. - .. py:method:: _calculate_team_ratings(game, ranks = None) + .. py:method:: _calculate_team_ratings(game, ranks = None, weights = None) Get the team ratings of a game. @@ -134,6 +136,11 @@ Classes :param ranks: A list of ranks for each team in the game. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. The values should be normalized + from 0 to 1. + :return: A list of :class:`ThurstoneMostellerPartTeamRating` objects. @@ -162,7 +169,7 @@ Classes :param c: The square root of the collective team sigma. - :return: A list of Decimals. + :return: A list of floats. .. py:method:: create_rating(rating, name = None) @@ -183,7 +190,7 @@ Classes Predict how likely a match up against teams of one or more players will draw. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. :return: The odds of a draw. @@ -192,7 +199,7 @@ Classes .. py:method:: predict_rank(teams) Predict the shape of a match outcome. This algorithm has a time - complexity of :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the + complexity of :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. @@ -203,7 +210,7 @@ Classes Predict how likely a match up against teams of one or more players will go. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. This is a generalization of the algorithm in :cite:p:`Ibstedt1322103` to asymmetric n-player n-teams. @@ -212,19 +219,23 @@ Classes :return: A list of odds of each team winning. - .. py:method:: rate(teams, ranks = None, scores = None, tau = None, limit_sigma = None) + .. py:method:: rate(teams, ranks = None, scores = None, weights = None, tau = None, limit_sigma = None) Calculate the new ratings based on the given teams and parameters. :param teams: A list of teams where each team is a list of :class:`ThurstoneMostellerPartRating` objects. - :param ranks: A list of Decimals where the lower values + :param ranks: A list of floats where the lower values represent winners. - :param scores: A list of Decimals where higher values + :param scores: A list of floats where higher values represent winners. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. + :param tau: Additive dynamics parameter that prevents sigma from getting too small to increase rating change volatility. @@ -238,12 +249,12 @@ Classes .. py:method:: rating(mu = None, sigma = None, name = None) Returns a new rating object with your default parameters. The given - parameters can be overriden from the defaults provided by the main + parameters can be overridden from the defaults provided by the main model, but is not recommended unless you know what you are doing. :param mu: Represents the initial belief about the skill of a player before any matches have been played. Known - mostly as the mean of the Guassian prior distribution. + mostly as the mean of the Gaussian prior distribution. *Represented by:* :math:`\mu` @@ -280,15 +291,24 @@ Classes :param name: Optional name for the player. - .. py:method:: ordinal(z = 3.0) + .. py:method:: ordinal(z = 3.0, alpha = 1, target = 0) A single scalar value that represents the player's skill where their true skill is 99.7% likely to be higher. - :param z: Integer that represents the variance of the skill of a - player. By default, set to 3. + :param z: Float that represents the number of standard deviations to subtract + from the mean. By default, set to 3.0, which corresponds to a + 99.7% confidence interval in a normal distribution. + + :param alpha: Float scaling factor applied to the entire calculation. + Adjusts the overall scale of the ordinal value. + Defaults to 1. + + :param target: Optional float value used to shift the ordinal value + towards a specific target. The shift is adjusted by the + alpha scaling factor. Defaults to 0. - :return: :math:`\mu - z * \sigma` + :return: :math:`\alpha \cdot ((\mu - z * \sigma) + \frac{\text{target}}{\alpha})` diff --git a/docs/source/conf.py b/docs/source/conf.py index 36569b6..087fcfa 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -13,7 +13,7 @@ # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information project: str = "openskill.py" -copyright: str = "Copyright © 2023, Vivek Joshy" +copyright: str = "Copyright © 2023 - 2024, Vivek Joshy" author: str = "Vivek Joshy" version: str = openskill.__version__ release: str = version @@ -54,14 +54,14 @@ html_static_path = ["_static"] html_theme_options = { "dark_code": False, - "github_url": "https://github.com/OpenDebates/openskill.py", + "github_url": "https://github.com/vivekjoshy/openskill.py", "discord_url": "https://discord.gg/4JNDeHMYkM", "light_logo": "_static/text_logo_light.svg", "dark_logo": "_static/text_logo_dark.svg", } html_context = { "source_type": "github", - "source_user": "OpenDebates", + "source_user": "vivekjoshy", "source_repo": "openskill.py", "source_version": "main", "source_docs_path": "/docs/source/", @@ -103,7 +103,7 @@ # -- Options for OpenGraph output --------------------------------------------- ogp_site_url = "https://openskill.me/en/stable/" -ogp_site_name = "OpenSkill - Multiplayer Rating System. No Friction." +ogp_site_name = "OpenSkill: Multiplayer Rating System. No Friction." ogp_image = "https://i.imgur.com/HqkBLVt.png" ogp_description_length = 200 ogp_type = "website" diff --git a/docs/source/faq.rst b/docs/source/faq.rst index e57a8c7..9c16936 100644 --- a/docs/source/faq.rst +++ b/docs/source/faq.rst @@ -2,22 +2,20 @@ Frequently Asked Questions ========================== -1. Does this library support partial play? -++++++++++++++++++++++++++++++++++++++++++ - -No. Partial play is theoretically easy to implement, but hard to verify due to lack of data. -Without data, any modifications to models might end up over-fitting the data. It is also not -clear what metric to use for partial play since different groups mean different -things. If partial play is to implemented, what we mean by it is that the amount of time a -player was in a game. +1. Does this library support weights? ++++++++++++++++++++++++++++++++++++++ +Yes. By weights we mean any value that represents a player's contribution to +the team's overall victory (if they win). You can pass raw scores to :code:`weights` if they mainly determine +the win condition. If they don't explicitly determine win conditions (eg: last to stay alive wins), then it's +usually redundant and won't improve predictions. -2. Does this library support weights? -+++++++++++++++++++++++++++++++++++++ -No. By weights we mean a value between :math:`0` and :math:`1` that represent a player's contribution to -the team's overall victory (if they win). We are however currently working on it. +2. Does this library support partial play? +++++++++++++++++++++++++++++++++++++++++++ +Yes, however it's only effective if the player's playtime determines the win condition. You can use any number +representing playtime and invert it relative to all other player durations. Simply pass these values into :code:`weights`. 3. Does this library support score margins? +++++++++++++++++++++++++++++++++++++++++++ @@ -48,3 +46,11 @@ section. Yes. Simply adjust ``sigma`` by a small value as needed when you feel a player has been inactive. A small negative delta added every day after being inactive till the value reaches the default sigma is usually good enough. Make sure to test against your own data to ensure it actually predicts outcomes. + +7. How do I scale rating ordinal score to reflect Elo? +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +While there is no one-to-one correpondence between Elo and OpenSkill, one standard deviation is approximately +equivalent to around 200 points for an Elo rating starting at around 1500. To mimic Elo, simply set :code:`alpha` +to :math:`\frac{200}{\sigma}` and :code:`target` to 1500 for :py:meth:`ordinal`. + diff --git a/docs/source/index.rst b/docs/source/index.rst index a32143d..6e25018 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -1,4 +1,5 @@ .. meta:: + :title: OpenSkill: Multiplayer Rating System. No Friction. :description: This advanced rating system is faster, accurate, and flexible with an open license. It supports multiple teams, factions, and predicts outcomes. Elevate your gaming experience with OpenSkill - the superior alternative to TrueSkill. @@ -6,7 +7,7 @@ .. image:: /_static/banner_agnostic.png - :alt: OpenSkill - Multiplayer Rating System. No Friction. + :alt: OpenSkill: Multiplayer Rating System. No Friction. :align: center diff --git a/docs/source/installation.rst b/docs/source/installation.rst index 878a551..f08c2ce 100644 --- a/docs/source/installation.rst +++ b/docs/source/installation.rst @@ -28,7 +28,7 @@ For Contributors Requirements ------------ -* Python 3.8+ +* Python 3.9+ * `PDM Package Manager `_ Installing from source @@ -38,7 +38,7 @@ openskill.py is easy to install from source if you already meet the requirements :: - git clone https://github.com/OpenDebates/openskill.py + git clone https://github.com/vivekjoshy/openskill.py cd openskill.py/ :: diff --git a/docs/source/manual.rst b/docs/source/manual.rst index 9ed82d4..792a804 100644 --- a/docs/source/manual.rst +++ b/docs/source/manual.rst @@ -8,9 +8,9 @@ If you don't know what those are, please consider using a short resource on stat the terms. We recommend Khan Academy's short course on `statistics and probability `_. If you're struggling with any of the concepts, please search the discussions section to see if your question has already been answered. -If you can't find an answer, please open a new `discussion `_ and we'll try to help you out. +If you can't find an answer, please open a new `discussion `_ and we'll try to help you out. You can also get help from the official `Discord Server `_. If you have a feature request, or want to report -a bug please create a new `issue `_ if one already doesn't exist. +a bug please create a new `issue `_ if one already doesn't exist. Let's start with a short refresher: @@ -76,6 +76,11 @@ You can ofcourse shift the values higher or lower. But it doesn't make sense to :math:`\frac{1}{3}` of :code:`mu`. If you do, the model may not work as intended. If you know what you're doing and are a statistics expert, you can change the parameters to your liking. But if you're not, we recommend you stick to the default values. +Finally, there is a :code:`balance` flag you can set to :code:`True` if you want the rating system to modify it's +assumptions about users on the tail ends of the skill distribution. With :code:`balance` turned on, the higher the rating +a player has, it's assumed it's a much more monumental achievement. The inverse is true for lower rated players. We won't +enable this feature for our purposes. + Let's now get the object representing a single player by calling the :code:`rating` method on the model. This method returns a :py:class:`.PlackettLuceRating` object for which you can set your own values. Since we are using the default values, each player will also start with those values. We can also set a optional name. @@ -203,6 +208,21 @@ Ties should have either equivalent rank or score: [[p1], [p2], [p3], [p4]] = model.rate(match, scores=scores) +Weights +------- + +For faster convergence of ratings, you can use pass the :code:`weights` argument to :py:meth:`.PlackettLuce.rate` method. +The :code:`weights` argument takes raw numeric values for each player from at the end of a match. These values should only +represent metrics that **always** contribute to a win condition in the match. For instance, in large scale open battle +arena games, there is a time limit for the entire game. In such games, a player can still win with very low points or kills. +Always make sure the metric you choose in your game is something that significantly contributes to winning the match. + +.. code-block:: python + + weights = [[20], [1], [3], [15]] + [[p1], [p2], [p3], [p4]] = model.rate(match, weights=weights) + + Matchmaking ----------- @@ -228,7 +248,7 @@ Let's see what this outputs: .. code-block:: text - [0.11101571601720539, 0.8889842839827946] + [0.2021226121041832, 0.7978773878958167] 1.0 @@ -259,10 +279,10 @@ Let's see what this outputs: .. code-block:: text - 0.6062109454031768 + 0.0002807397636510 -Odd, we have a slightly higher than random chance for a draw. This is because the more teams we have the possibilities +Odd, we have almost no chance for a draw. This is because the more teams we have the possibilities for draws decrease due to match dynamics. Let's try with 2 teams and fewer players. .. code-block:: python @@ -280,11 +300,15 @@ Okay let's see what changed: .. code-block:: text - 0.9737737539743392 + 0.4868868769871696 A much higher draw probability! So keep in mind that the more teams you have, the lower the probability of a draw and you should account for that in your matchmaking service. +.. note:: + + Draw probabilities will never exceed 0.5 since there is always some uncertainty. + Predicting Ranks ~~~~~~~~~~~~~~~~ @@ -314,20 +338,13 @@ It will produce the rank and the likelihood of that rank for each team: .. code-block:: text - [(1, 0.3784550980818606), (2, 0.27207781945315074), (3, 0.17308509853356993)] - -Another fact of note is tThe sum of the probabilities of the ranks and the draw probability is always :math:`1.0`. - -.. code-block:: python + [(1, 0.5043035277836156), (2, 0.3328317993957732), (3, 0.16286467282061112)] - draw_probability = model.predict_draw(teams=[team1, team2, team3]) - print(sum([y for x, y in rank_predictions]) + draw_probability) -This will produce the following output: +.. warning:: -.. code-block:: text + The sum of the probabilities of the ranks and the draw probability no longer equal 1.0 from :code:`v6` onwards. - 1.0 Picking Models -------------- diff --git a/docs/source/ordinal.ipynb b/docs/source/ordinal.ipynb index d9e0dce..c901baa 100644 --- a/docs/source/ordinal.ipynb +++ b/docs/source/ordinal.ipynb @@ -7,7 +7,8 @@ }, "kernelspec": { "name": "python3", - "display_name": "Python 3" + "display_name": "Python 3 (ipykernel)", + "language": "python" }, "language_info": { "name": "python" @@ -36,7 +37,6 @@ { "cell_type": "code", "source": [ - "%pip install openskill\n", "%pip install pandas\n", "%pip install matplotlib\n", "%pip install numpy\n", @@ -57,35 +57,42 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "ce5d6fa0-358f-4d21-9c7d-01f73ea6059b" + "outputId": "ce5d6fa0-358f-4d21-9c7d-01f73ea6059b", + "ExecuteTime": { + "end_time": "2024-07-15T15:22:37.992782Z", + "start_time": "2024-07-15T15:22:26.447119Z" + } }, - "execution_count": 1, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "Requirement already satisfied: openskill in /usr/local/lib/python3.10/dist-packages (5.0.1)\n", - "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (1.5.3)\n", - "Requirement already satisfied: python-dateutil>=2.8.1 in /usr/local/lib/python3.10/dist-packages (from pandas) (2.8.2)\n", - "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas) (2023.3)\n", - "Requirement already satisfied: numpy>=1.21.0 in /usr/local/lib/python3.10/dist-packages (from pandas) (1.23.5)\n", - "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.1->pandas) (1.16.0)\n", - "Requirement already satisfied: matplotlib in /usr/local/lib/python3.10/dist-packages (3.7.1)\n", - "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (1.1.0)\n", - "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (0.11.0)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (4.42.0)\n", - "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (1.4.4)\n", - "Requirement already satisfied: numpy>=1.20 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (1.23.5)\n", - "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (23.1)\n", - "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (9.4.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (3.1.1)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (2.8.2)\n", - "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n", - "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (1.23.5)\n" + "Requirement already satisfied: pandas in c:\\users\\taven\\pycharmprojects\\openskill.py\\venv\\3.12\\lib\\site-packages (2.2.1)\n", + "Requirement already satisfied: numpy<2,>=1.26.0 in c:\\users\\taven\\pycharmprojects\\openskill.py\\venv\\3.12\\lib\\site-packages (from pandas) (1.26.4)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in c:\\users\\taven\\pycharmprojects\\openskill.py\\venv\\3.12\\lib\\site-packages (from pandas) (2.9.0.post0)\n", + "Requirement already satisfied: pytz>=2020.1 in c:\\users\\taven\\pycharmprojects\\openskill.py\\venv\\3.12\\lib\\site-packages (from pandas) (2024.1)\n", + "Requirement already satisfied: tzdata>=2022.7 in c:\\users\\taven\\pycharmprojects\\openskill.py\\venv\\3.12\\lib\\site-packages (from pandas) (2024.1)\n", + "Requirement already satisfied: six>=1.5 in c:\\users\\taven\\pycharmprojects\\openskill.py\\venv\\3.12\\lib\\site-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)\n", + "Note: you may need to restart the kernel to use updated packages.\n", + "Requirement already satisfied: matplotlib in c:\\users\\taven\\pycharmprojects\\openskill.py\\venv\\3.12\\lib\\site-packages (3.8.3)Note: you may need to restart the kernel to use updated packages.\n", + "\n", + "Requirement already satisfied: contourpy>=1.0.1 in c:\\users\\taven\\pycharmprojects\\openskill.py\\venv\\3.12\\lib\\site-packages (from matplotlib) (1.2.0)\n", + "Requirement already satisfied: cycler>=0.10 in c:\\users\\taven\\pycharmprojects\\openskill.py\\venv\\3.12\\lib\\site-packages (from matplotlib) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in c:\\users\\taven\\pycharmprojects\\openskill.py\\venv\\3.12\\lib\\site-packages (from matplotlib) (4.49.0)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in c:\\users\\taven\\pycharmprojects\\openskill.py\\venv\\3.12\\lib\\site-packages (from matplotlib) (1.4.5)\n", + "Requirement already satisfied: numpy<2,>=1.21 in c:\\users\\taven\\pycharmprojects\\openskill.py\\venv\\3.12\\lib\\site-packages (from matplotlib) (1.26.4)\n", + "Requirement already satisfied: packaging>=20.0 in c:\\users\\taven\\pycharmprojects\\openskill.py\\venv\\3.12\\lib\\site-packages (from matplotlib) (24.0)\n", + "Requirement already satisfied: pillow>=8 in c:\\users\\taven\\pycharmprojects\\openskill.py\\venv\\3.12\\lib\\site-packages (from matplotlib) (10.2.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in c:\\users\\taven\\pycharmprojects\\openskill.py\\venv\\3.12\\lib\\site-packages (from matplotlib) (3.1.1)\n", + "Requirement already satisfied: python-dateutil>=2.7 in c:\\users\\taven\\pycharmprojects\\openskill.py\\venv\\3.12\\lib\\site-packages (from matplotlib) (2.9.0.post0)\n", + "Requirement already satisfied: six>=1.5 in c:\\users\\taven\\pycharmprojects\\openskill.py\\venv\\3.12\\lib\\site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n", + "Requirement already satisfied: numpy in c:\\users\\taven\\pycharmprojects\\openskill.py\\venv\\3.12\\lib\\site-packages (1.26.4)\n", + "Note: you may need to restart the kernel to use updated packages.\n" ] } - ] + ], + "execution_count": 12 }, { "cell_type": "markdown", @@ -113,26 +120,24 @@ "height": 175 }, "id": "A1kj7-uVan6G", - "outputId": "5f269c44-8629-48ae-f0bb-209090586a96" + "outputId": "5f269c44-8629-48ae-f0bb-209090586a96", + "ExecuteTime": { + "end_time": "2024-07-15T15:22:38.010911Z", + "start_time": "2024-07-15T15:22:37.995854Z" + } }, - "execution_count": 2, "outputs": [ { - "output_type": "execute_result", "data": { "text/plain": [ " id name mu sigma ordinal\n", - "0 e2404cb87b1846fca9ccd6572d95a528 None 27.795253 8.263572 3.004537\n", - "1 f652af00058c423e92cd34575927427c None 26.552918 8.179618 2.014064\n", - "2 0ea2b05f51e24e199ad789b71c86fe0c None 24.689416 8.084128 0.437033\n", - "3 cf5f8d5f4bdb4ddb89aa7d7f6bfdbc4a None 20.962413 8.084128 -3.289971" + "0 707a027966d74db88261a79a97ac490b None 27.795253 8.263572 3.004537\n", + "1 f810cf4fcd1c42b9a1fdc99652404d08 None 26.552918 8.179618 2.014064\n", + "2 06a4432f86e148379d7ab34306ebc61f None 24.689416 8.084128 0.437033\n", + "3 67cae4cfff664caa86405478b42ac634 None 20.962413 8.084128 -3.289971" ], "text/html": [ - "\n", - "\n", - "
\n", - "
\n", - "
\n", + "
\n", "\n", - "\n", - " \n", - "\n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n" + "
" ] }, + "execution_count": 13, "metadata": {}, - "execution_count": 2 + "output_type": "execute_result" } - ] + ], + "execution_count": 13 }, { "cell_type": "markdown", @@ -355,17 +220,34 @@ "cell_type": "code", "source": [ "visualization_data = np.arange(-25, 75, 0.001)\n", - "fig = plt.figure(figsize=(10, 8), dpi=80)\n", - "fig.patch.set_facecolor(\"grey\")\n", + "plt.style.use(\"dark_background\")\n", + "fig, ax = plt.subplots(figsize=(12, 9), dpi=100)\n", + "fig.patch.set_facecolor(\"#1E1E1E\")\n", + "ax.set_facecolor(\"#2E2E2E\")\n", + "\n", "df.apply(\n", - " lambda row: plt.plot(\n", + " lambda row: ax.plot(\n", " visualization_data,\n", " norm.pdf(visualization_data, row[\"mu\"], row[\"sigma\"]),\n", - " label=f\"μ: {row['mu']: 0.2f}, σ: {row['sigma']: 0.2f}\",\n", + " label=f\"μ: {row['mu']:.2f}, σ: {row['sigma']:.2f}\",\n", + " linewidth=2,\n", " ),\n", " axis=1,\n", ")\n", - "plt.legend(title=\"Parameters\")" + "\n", + "ax.set_title(\"Normal Distributions\", fontsize=20, color=\"white\", fontweight=\"bold\")\n", + "ax.set_xlabel(\"X\", fontsize=14, color=\"white\")\n", + "ax.set_ylabel(\"Probability Density\", fontsize=14, color=\"white\")\n", + "ax.tick_params(colors=\"white\", which=\"both\")\n", + "ax.grid(True, linestyle=\"--\", alpha=0.3)\n", + "\n", + "legend = ax.legend(title=\"Parameters\", title_fontsize=14, fontsize=12)\n", + "legend.get_frame().set_facecolor(\"#3E3E3E\")\n", + "legend.get_frame().set_edgecolor(\"white\")\n", + "plt.setp(legend.get_texts(), color=\"white\")\n", + "plt.setp(legend.get_title(), color=\"white\")\n", + "plt.tight_layout()\n", + "plt.show()" ], "metadata": { "colab": { @@ -373,31 +255,25 @@ "height": 561 }, "id": "vRK3-52WcO9l", - "outputId": "bac2d64b-1373-4a73-eb41-75b2f0e0abf2" + "outputId": "bac2d64b-1373-4a73-eb41-75b2f0e0abf2", + "ExecuteTime": { + "end_time": "2024-07-15T15:22:38.675537Z", + "start_time": "2024-07-15T15:22:38.011919Z" + } }, - "execution_count": 3, "outputs": [ { - "output_type": "execute_result", - "data": { - "text/plain": [ - "" - ] - }, - "metadata": {}, - "execution_count": 3 - }, - { - "output_type": "display_data", "data": { "text/plain": [ - "
" + "
" ], - "image/png": "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f/7zn4Fn27dvZ+PGjaxZs4aysjK+973v6TpPSTiFEIuCqqqMbd2KtagQc0bkrYbCxXyr8y0KEgoia4fUthXcY1B87Hq6mPP8Zy7Htm6juWeUlt4x3luegeEkttM12mrrjOc4M6sgNhOaX5ny8sWl6ViMBv56QNojicXPZrPx4IMPUl9fz969exkbG+O73/3ulDHbt29nx44dLF++fNo44+PjXHPNNXzjG9+grq6O/fv3c/755wPwy1/+kl27drFr1y7q6uowGAxT7myfa9/85jcpKipi37597N+/n6NHj/LYY4+FHPuVr3yFjRs30tTUxGOPPcZNN90UuKP+U5/6FPfccw+7d+9m69at/OAHP6C2doaev7M0u1vihRBinnI2NuHp7SU+guvgItUy1ELPRA+X5l8a2RuaX/V/Lbwk8FL0+vUoZjNjW7fytxX+rf5Ly08tIV6bsRazwcy2zm3cXHFz6EGK4p/Hnidg6Agk+hvMx9nMnFeUyj8bexkad5EYbTmluYjF6d9e/TeOjByZk9jL4pbx4/f8OOy4E28aSk1NZefOneTn50f8exUVFQX+2Wg0smHDBvbv3x94bXx8nM985jP84Q9/CCSQofzf//0fGzduDDRxNxqNpKWlAbB3714uueQSLBb/v0tXXHEF999/P1/84hdnnJuqqtx999289NJLTExMcOSI/8/7+9//Pl/4whci/oyKojAyMoLP58PlcjE+Ph64vvJETz/9NM3NzQBs2LCB7Oxs/vGPf3DJJZegKApDQ0MAjI2NYbFYSE5Ojnge4cgKpxBiUQhsp0+uKOpB206P+Pxmy6v+VcWMisBLhqgootatY3zHDl7b206c1XRS1enHizJFsTZjLe8efRen1zn9wML3HJvXcS6vzMTjU3m5VrbVxcIU6V3qxxsbG+ORRx7hmmuuCbz2pS99iTvuuINly2a+8au2thar1cr73vc+qqur+fjHP05vr7812bp163jhhRcYHh7G7Xbz9NNP09raGnY+v//97/nb3/7Gjh07OHz4MLfffju33357INmsrq6ms7MzbJx7772X5uZmMjMzSU9Pp6ysjKuvDr5Ot7+/H7fbTWbmsd2a/Px8Dh8+DMBjjz3GvffeS15eHsXFxXzrW9+aMvZUyQqnEGJRGHvnbTCbiV63TreY27u3Y1JMrMuIIKa9HXrrofoj/tXF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\n" + "image/png": "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u62aVlRUxPfff69X3r179yrtxjd//nyDAan6UNXfncqwt7dn9erVegGpsgYOHMhHH31UK+evK7U9vp988klmzpypl9+slLm5OR988AFOTk465a1bty43ICWEEELUNJkpJYQQQtSwpKQkVq9ezfTp0wFQqVS89NJLvPjiiya1M2PGDAYPHqxXfvz4cSIjI3FycmLgwIHaWVkANjY2fPPNNwwaNKjCWSSenp4AZGRksGfPHlJTU2nRokW5AadSTk5OZGVl8c8//6BUKrn//vt1giyOjo689957gGZZ0549e/D19aVXr1467fTo0YOAgACd5X5lJSYmcv78ee1yIbVajZOTE0FBQdq+l5o9ezZ//PFHg1tCZGipmpWVFe3btycyMrLS7ZiZmTFixAidsry8PPbt20dcXBwqlQpXV1f8/f3x8vLSO750J7xmzZrpBfBKk7WXFRUVZbQ/Vf3dqYwmTZoAkJKSwo4dOygsLKR///56QapRo0bxyy+/sHPnzmqf83YxMTHaHfRuD75lZmby008/6ZSlpaWZfI7aHt+urq4AnDt3jgMHDuDl5cWAAQN06jg4ODBmzBi+/fZbbdnIkSP1AlIXLlzgyJEj5OTkYGdnR+vWrfH398fW1tbk6xZCCCHKkqCUEEIIUQsWL17MU089pf2jbeTIkXz++eecO3euUsdbW1szbdo0vfLb8+N4e3sTGhqKi4uLtqxFixY8+uijfPfddxWeJyIigsmTJ5OSkqItK/tHsCGZmZmMHj2amJgYAJ544gneffddvXrHjx9n7Nix5ObmAvDtt98yZMgQnTq9evXSC0r9+uuv/Pzzz0RHRxs8v5mZGYsWLdIJrnh7e9OuXTuTljbVhStXrhgsv312SkWcnJywtrbWKZsxY4bBZYDu7u4MGjRIZ4ZM6U54vXv31gtKGUrWXhlV+d2prJiYGMaOHUtqaioAlpaWrFixgr59++rUmzJlSq0EpaKiorSBuduDUmlpadXeXa+uxndoaCivvfaaNhfV3Llz9ZbG9uzZUycodXvA9+jRo4SEhOjlszIzM6Nr166MGDGCgoKCCvsihBBCGCLL94QQQohakJKSopPnqHS2VGUFBwdrZ4yUunjxIp999plO2aVLl/jiiy/0jh86dGiF5ygqKuKFF17QCSoAOksPDVmzZo02IAXozbIp9fHHH2sDUoDB3DWGZtYcO3aM6OhoLCwsCA4O5qmnnuLll19m7ty5vPHGG7z++uvY29vrHdexY0ej/a4P2dnZBssN9d/Udtzd3Q3WTUxMZO3atQaXDtaUqv7uVNa7776rDUgB5Ofn85///EevXu/evau0FLK+1cX4zsvL45133tEJJhn6nbh9DN7+u2Zra4udnZ3ecUVFRYSHh/Pf//5X7/dACCGEqCyZKSWEEELUktLZUqV/0I0YMYLPP/+8Usd26dJFr2zXrl0Gl6dt376d//73vxUef7vw8PByZ/IYc3sQytAuesXFxezfv1+nrHQnuLIM/bFrY2PDK6+8wmOPPWbw9fKYOvuoLpS3vCkzM9OkdrKzs4mMjCQwMFBb9v777/Ovf/2L6OhoLl68yPnz5zlx4gTHjh2jsLCwOt2uUFV/dyqjsLCQvXv36pXHxMQQFxens4zPwsICPz8/Tpw4USt9qS11Mb737NmjFywyNFZvH2NhYWFMnTpV+9zf35/Dhw8TExPD+fPnuXDhAjExMRw+fJjExMQK+yGEEEIYI0EpIYQQopakpqayatUqnn/+eeDWbKnKLDdydnbWK7t27ZrBuvHx8Xpljo6OmJubGw1OVHWp2+3nM5TbJjk5Wa/cUF8UCoXOczMzM3744QeCgoJM7peVlZXJx9S2Vq1aGSxPTk42ua233nqLH374QWcZn4eHBx4eHjq5gtLT0wkNDWXhwoVkZGSY3ulKqM1lkikpKeUuB0tISNDLLdUQg5EVqYvxHRcXp1dmaKzePgZ37NjBn3/+yQMPPKAts7S0pGPHjnqzESMiIvj888+rtJukEEIIAbJ8TwghhKhVS5Ys0ZkVM2LECPz9/euxR7dUNWBRUYLlytYx5PHHH69SQAr0/7huCIKDg/XK8vLyOHPmjMltHTlyhGHDhrF+/XqjPztHR0cmT57Mjz/+WKld3aqitoJdtUGp1P+4e/vSuTtR2eWPpW7PC1We6dOnM2fOnHI3ISjVtWtXli1bppeEXwghhKgsmSklhBBC1KK0tDRWrVrFzJkzAc0fyE8++WSFxxmaSXN7AuJSzZo10ytLT0+vcAlXQ9upDtBLhA6wbds2Fi5cyIULF7T5bh5//HHtDn8Nlbm5OU888YReeXh4eJWDdhcvXuTVV19FqVTi7+9PmzZtaNWqFW3btuXee+/F0dFRWzcgIIDhw4ezefPmKl9DeWrzd8fJyQkLCwuDs6U8PDz0ysouUTMUdDE0g+722VZ1rS7Gd3Wo1WrWrFnDmjVrcHJyon379vj4+ODt7U23bt3o2rWrtq5SqeTVV1/l999/r7X+CCGEuHNJUEoIIYSoZUuWLGHixIna5NaV2aGsdOevsu655x4UCoVeQGDgwIGVOr4xMPSH+SuvvEJaWppOWdk/ihuq+fPn4+3trVe+fPnyarddUlLC6dOndZbRtWrVSi/fV2BgoE5Qqri4WK+tsrv0NQTm5ub069dPb0lYmzZt9IJJBQUFOkn3DSVaNxTIevDBByvdn+LiYp33qCber8Y0vlNSUggLCyMsLExb9umnnzJ69Gjtc19fXxwcHBrVDDohhBANgyzfE0IIIWpZeno6K1euNOmY/fv36wViWrduzYsvvqhT5u3tzQsvvKB3/N9//21qNxsEQ7M/OnTooPN85MiRhISE1FWXTNayZUu+/vprJk6cqPfagQMHqpx/56OPPmLEiBHl7tzn6uqqV2ZhYaHz3FDQpk2bNlXqT216/fXXdZbYWVpa6iX7Bs37WXbWmaHk6/fcc4/ODnPt2rUzOIOtPLfvRufi4qIzI60qGvL4HjJkCLNmzaJdu3YGX1coFDRt2lSv/PbfNSGEEKIyZKaUEEIIUQdKZ0s5ODhUqn5ubi6LFy9m9uzZOuWvvPIKQ4YMITIykqZNmzJo0CC9mVdXr17lp59+qrG+16Xjx4/Tvn17nbIVK1awY8cOUlNTadeuXZVzTtWGwMBA3njjDZRKJQ4ODvj7+9O+fXuDs2muXbumTXpfFf379+fRRx+lsLCQmJgYLl68SGpqKmq1mubNm9OnTx+9Yy5evKjz/PLly5SUlOjkWercuTOhoaGcPn1au2Ru6dKlBhNs1xU/Pz927NjB9u3bKSwspH///rRo0UKv3ooVK3Senz17ltTUVJ2gSZMmTdiwYQNbt27F0dGRwYMHm5QU/9KlS3Tu3Fn73MLCgk2bNnHgwAFtkG/r1q16u00a05DHt7OzMzNnzmTmzJkkJSVx9uxZ4uLiyMnJwdbWlqCgIHx9fXWOSU9Pr1LyfiGEEEKCUkIIIUQdyMjIYMWKFbz00kuVPuabb76he/fuDB48WKe8U6dOdOrUyeAxOTk5TJ8+vco5i+rb6tWrCQkJ0QnqWFlZMWzYMJ16u3bt4p577qnr7unx8/PDz8+vwnrHjx9nxowZJCUlVfuc5ubmdOjQQW8G2e3S09P18kllZWURHh5Or169dMq7d+9O9+7dtc83bNhQb0GpzMxMSkpKcHJy4pFHHim33m+//aY366yoqIgffvhBm8OtlKurK48//rj2eXJyssEd8AzZsWOHTlAKNLOaWrdurX2ekJBgUlAKGsf4dnFxwcXFpcJ6P/zwQ4PMUSeEEKLhk+V7QgghRB359ttvSU9Pr3T9kpISpk2bxrJlyygqKqqw/rlz5xgzZgzHjx+vTjfr1fHjx3nrrbcM5j4CzXvywQcf1Ery7tqQnJzMZ599RkhIiMGlZaYw5Y/+5ORkpk2bxo0bN/Ree//998nLy6tWX2pTWloaTz/9tNEA3q5du3jllVcMvvb5559z5MiRco+NjY3l0UcfrXR/li1bVu2fnSENdXybGlzauHEjCxcurKXeCCGEuNPJTCkhhBCijmRkZLB8+XJefvnlSh9TWFjIW2+9xcqVKxk3bhzBwcG0atUKBwcH8vPzSU5OJioqir/++os//vij0lu+N2QrV67kxIkTTJ06le7du+Pg4EBycjJHjx5l5cqVHDp0yOgMmrpWXFxMYWEhOTk5pKamkpCQwLlz5zh06BBbt26tsVktDzzwAP3796dbt2506NCBFi1a4OzsjIWFhfZ3ISYmhl27drF+/XqysrIMtnP06FEeeughpk2bRs+ePXF1dTVpOVtdOHr0KPfddx9Tp05l6NChNG/enKKiIs6ePcu6dev4+eefyz02Pz+fxx57jMmTJ/PQQw/RunVriouLuXjxIr/99hsrVqww6WeSnp6ufb/uvfdeWrZsia2tbU1cZoMc3+vWrePUqVP06dOHLl264Ovri4eHB7a2tqjVarKzs7ly5QqRkZFs2rSJw4cP13qfhBBC3LkUXl5eMtdWCCGEEEIIIYQQQtQpWb4nhBBCCCGEEEIIIeqcBKWEEEIIIYQQQgghRJ2ToJQQQgghhBBCCCGEqHMSlBJCCCGEEEIIIYQQdU6CUkIIIYQQQgghhBCizklQSgghhBBCCCGEEELUObP67kBj4u7uTnZ2dn13QwghhBBCCCGEEKJBs7W1JTEx0WgdCUpVkru7O4cOHarvbgghhBBCCCGEEEI0Cj179jQamJKgVCWVzpC67777yMnJqefeCJVKRXBwMPv376e4uLi+uyNEgyNjRAjjZIwIYZyMESGMkzEihHE2Njb8888/Fa42k6CUiXJycmQJXwOgUqnIy8sjOztbbgJCGCBjRAjjZIwIYZyMESGMkzEiRM2QROeiUSopKeHs2bOUlJTUd1eEaJBkjAhhnIwRIYyTMSKEcTJGhKgZMlNKNEpqtZqEhIT67oYQDZaMESGMkzEihHEyRoQwTsaIEDVDZkqJRkmlUtG9e3dUKlV9d0WIBknGiBDGyRgRwjgZI0IYJ2NEiJohQSnRaNna2tZ3F4Ro0GSMCGGcjBEhjJMxIoRxMkaEqD4JSgkhhBBCCCGEEEKIOic5pYQQQgghhBBCiEqwsbHB1dUVMzMz3Nzc8Pb2lt33xF1DrVaTlpZGRkYGarW6RtqUoJRolIqLizl27JjcAIQoh4wRIYyTMSKEcTJGhNClUCiYMmUKgwcP1pYplUrGjBlTj70Son5kZGTw448/snPnzmoHpyQoJRqt1NTU+u6CEA2ajBEhjJMxIoRxMkaEuKU0IBUaGkp0dDRFRUX13SUh6pxKpcLBwYGePXsybdo0fH19+fbbb6vVpgSlRKOkUqno3bs3Bw4ckG/whDBAxogQxskYEcI4GSNC3GJra6sNSP3555+AZuaUra0t2dnZNbaMSYjGIioqiri4OB588EHWrl1LdnZ2lduSROei0TIzk5iqEMbIGBHCOBkjQhgnY0QIDRcXFwCio6N1yhUKRX10R4gG4fTp05iZmWnHR1VJUEoIIYQQQgghhChHafBJluwJcUvpLNrqBmclKCWEEEIIIYQQQggh6pwEpUSjVFxcTHh4uOQ4EKIcMkaEME7GiBDGyRgRwji1Wi35pISoAbJQXDRa+fn59d0FIRo0GSNCGCdjRAjjZIwIYVxDD0h5eHgQGhqqU1ZYWEhKSgpRUVF8//33nD9/vp561zAsWrSIoKAg+vbtW99duWvJTCnRKKlUKvr164dKparvrgjRIMkYEcI4GSNCGCdjRAjjFAoFdnZ2jSLZ+dWrV1m2bBnLli3j559/JiEhgaFDh7J06VI6depU390TdzmZKSWEEEIIIYQQQtyhrl69yvLly3XKpk6dytNPP82zzz7LCy+8UE89E0KCUkIIIYQQQgghxF1l/fr1PP3007Rv3x4XFxdGjRpFr1698PT0xNbWluTkZPbv38+yZctIS0vTOXbu3LkMHz6csWPHMmDAAEaOHEnz5s35559/WLBgQbXau+eee3jooYdwd3fn2rVrrFixgm3btmFmZsbkyZMZOnQoTk5OXLlyha+//poDBw7oXZuNjQ2PPfYYAwcOxNPTk4KCAk6dOsXKlSs5duyYtl5YWJjBx1u2bGHBggXa576+vkyYMIHAwEAcHR1JTk5m7969LFu2jIyMDG290uWSW7Zs4fvvv2fatGnaY0JCQkhISKBt27ZMmDCB9u3b4+TkRHZ2NgkJCezevZvVq1dX9cfZqElQSgghhBBCCCGEuAup1Wq6dOnC+PHjOXLkCCdPnqSoqIi2bdsyZswYevXqxaRJk8jOztY79uWXXyYgIIB9+/YRFhZGamoqQJXbe+GFF+jQoQNhYWGUlJQwePBg/vvf/5KZmckjjzyCt7c3+/btw8LCgqFDh/L+++/zxBNPEBcXp23D3t6er776Ch8fH6Kiojh06BA2Njb079+fRYsWMW/ePPbs2QPAsmXLGD58OM2aNWPZsmXaNmJiYrSP+/Xrx1tvvYVarWbPnj1cv34db29vHnnkEXr27Mmzzz5LZmamznU0b96cJUuWcP78ebZs2YKjoyNFRUX4+fnxzTffUFJSwp49e0hMTMTOzg5vb29GjRolQSkhGpPi4mL27t0rO8IIUQ4ZI0IYJ2NECONkjAhhnFqtJisrq8EnOy/PmDFjADh9+jRHjhzhoYceIjc3V6fOAw88wPz58wkJCTEYMPH19WXSpEkkJibqlFe1PW9vbyZOnKidSfX777/z7bff8uabb3Lx4kUmTJhAXl4eAIcOHeLtt99m7NixfPrpp9o2XnnlFXx8fHj//ff59ddfteXffPMNy5YtY/bs2Rw8eJCCggKWL19O165dadasmd7yRgAHBwfmz59Peno606dP17nOwYMH89Zbb/HMM8+wcOFCneO6dOnC8uXLdQJdAOPHj8fS0pLZs2ezd+9evXPdrRpsovMJEyawd+9ezp49y8aNG+nSpYvR+sOHD2fbtm2cPXuWv/76i4EDB+q8/vHHH3P58mWd/1atWlWblyBqmaWlZX13QYgGTcaIEMbJGBHCOBkjQhjXGJKcA7Ro0YLJkyczefJknn/+eb788ksmT55Mfn4+ixcvJi0tTS+ABPDnn3+SlZVFjx49DLa7Zs0avYAUUOX2Vq1apbO07/Tp08TFxeHg4MDixYu1ASmAnTt3UlhYSJs2bbRljo6ODBo0iMOHD+sEpEr7tHbtWpo2bUr37t0Nnv92w4YNw87Ojm+++UbvOrdt28aZM2cYPHiw3nFJSUlGYw0FBQV6ZWWXAd5tGuRMqZEjRzJv3jzmzp1LZGQkkydP5rvvvmPgwIEkJyfr1e/WrRuLFi3iww8/ZNu2bYwaNYolS5YwYsQIoqOjtfV27tzJa6+9pn0u29w2XiqVih49esg3eEKUQ8aIEMbJGBHCOBkjQhinUCiwtbVtFLOlWrRowZQpUwAoLCwkJSWFv//+m++++44LFy4AcM899zBq1Cjatm2Lvb09Zma3QgUuLi4G2z19+nS556xKe2WXzZVKSkqiefPmeq+VlJSQmpqq01b79u0xMzPD3NycyZMn67XVsmVLAFq1asW+ffvK7XupgIAA7f+bN2+u97qlpSVNmzbF0dGR9PR0bfm5c+coKirSq799+3YeffRR3n33XbZt20Z4eDiRkZEkJSVV2Jc7WYMMSj3zzDP8+OOP/PzzzwC8/vrrDBo0iEcffZSvv/5ar/6kSZPYtWsXixcvBuCTTz6hX79+TJw4kblz52rr5efnc+PGjbq5CCGEEEIIIYQQop4dOHCAV199tdzXx48fzwsvvEBqairh4eFcv35dO4Hj0Ucfxdzc3OBxKSkpNdqeoTxTpUHxnJwcg6+VDXaVLoHr0qWL0ZVWVlZW5b5WVml7ISEhRutZWVnpBKVKc2vd7tSpU7zwwgs89dRTDBkyhJEjR2rLv/76a44ePVqpft1pGlxQytzcnE6dOvHVV19py9RqNXv37iUoKMjgMUFBQXz77bc6Zbt372bo0KE6Zb179+bIkSOkp6ezb98+Pv74Y73M/0IIIYQQQgghxN1ApVLx9NNPk5SUpJPPqdQTTzxR7rGGZohVp73qKg1qrVmzhi+//LLG2nvyySe5ePFipY8zNnMuKiqKqKgoLCwsCAgIoG/fvowZM4aPPvqIp556imvXrlW7341NgwtKNW3aFDMzM70pbElJSfj6+ho8xtXV1WB9V1dX7fNdu3bx559/cuXKFVq1asX//d//sWrVKkaPHk1JSYlemxYWFlhYWGif29raAppBplKpAM0vW0lJCUqlUmc9cUlJCWq1utzy0uNLlUZ/a7NcoVCgVN5KIVba9/LKG/o1lb5WtryxX9Od+HOSa6rfayopKdF57U64pjvx5yTXVH/XVHaM3CnXVFvlck133zWVHSN3yjXdiT8nuaa6uSaVSqXTL0O5pG4vKw1M1Gd56WvG+u7o6Ii9vb128kbp62q1mvbt22tnFSkUCr1gS+k5yp6zSZMm2vZKA1KlbbZr105nllJ5ObnK629F9c+cOUNJSQkdO3Ys9725vaw0FlD6b13ZuidPnuTee++lU6dOXLp0SVteXtuG+lRe/YKCAiIiIoiMjCQrK4upU6fSs2dPNm7caLT9ylxTXf+OlcZIbh9Phv6GN6TBBaVqS9lEZ2fPnuX06dPs3buX4OBgwsLC9Oo/99xzvPzyy3rlwcHB2gRr8fHxREdH06ZNG5o1a6atc+nSJS5fvkxAQABOTk46501ISKBr167aIBfAsWPHSE1NpXfv3jrTD8PDw8nPz6dfv346fdi7dy+WlpY6CeKKiooICwujadOmdO7cWVuenZ3N4cOHcXd3x9/fX1uekpLC8ePH8fLywtvbW1vemK7p3LlzBAcH31HXdCf+nOSa6u+alEqldozcKdd0J/6c5Jrq55p69OihM0buhGu6E39Ock31f03BwcF33DXBnfdzkmuq3Wtyc3PTLjmztLTUmbxgaWlJXl4elpaWOsvSCgoKyM/Px8rKSqePeXl5FBYWYmNjoxOwy83NpaioCFtbW50gQHZ2Nmq1Gjs7O51rysrK0ua1KlW6I6CZmRnW1tba10rPY25urhMUKioqIjU1lby8PNq1a4ezszP5+fkUFhZibm7OK6+8oj3ezs5Oe02lwQZbW1vs7Ox0rqmwsFDbnq2tLdnZ2dja2mJvb6+zhFChUGivqfR9Kw0Elr2m0r6XXlOp0gBS2XYKCgrYtWsXAwcOZMKECWzYsEFbv7RfXbp04erVq9rlhKWzoVq2bKmTvzovL48tW7bw9NNPM23aNC5cuMDly5d1fk5WVla0bt2aM2fOkJ2drf25mZuba/tU9ufUvn17zp07R0FBgc7Pyd3dXedna+jnlJubq/e7V3pN9fW7Z2Njg6WlJUFBQXh4eOiNp8ouk1R4eXk1qKxs5ubmnDlzhhkzZvD3339ryz/55BMcHByYOnWq3jH79u3j22+/1dnG8eWXX2bo0KEMGzas3HMdPXqUjz/+mDVr1ui9Zmim1KFDh+jfv7/2F7exRvrL9r0xf3vh5OSks3b3TrimO/HnJNdUf9fk4uKis6b9TrimO/HnJNdUf9fUtGlT7Ri5U66ptsrlmu7OayodI3fSNd1eLtck11SZa/L29mbBggW89dZbxMbGavtYOjukvmerlFfu4eHB+vXrOXjwoDbAZKj+888/z+OPP86VK1cICwvD1taW3r17k5CQgIeHB0VFRYwdO1bb9ty5cxk+fDiPPPIICQkJen15/vnneeyxx4y298gjj2jrv/766wwfPpyQkBASEhJ0+rho0SK6du1K37599fpemoN67Nix2jJ7e3s+++wz2rZty7lz5zh58iRZWVm4ubnh7++Pl5cXDz30kDYf1qhRo5g1axZnz57lwIEDFBQUcO7cOfbu3QtAnz59ePvttzEzM+PgwYNcvnwZCwsLmjVrRmBgICdOnODVV19FrVbj4eFBaGgoW7Zs4d1339X7ebz77rsEBQURFRXFtWvXKCgowN/fn+7duxMXF8ekSZO0sYbGMFOqVatWzJ8/n7lz53Lp0iW98WRra8uePXsICAggKyuL8jS4mVKFhYUcP36cvn37aoNSCoWCvn37lrut4tGjR+nbt69OUKp///5GE4V5eHjQtGlTrl+/bvD1goICg1s1FhcXa9/sUmWn+VWm/Pbj66JcrVabVN7Qr0mlUtGpUyeDO8I01muCO+/nBHJNUD/XpFKpCAgIMDhGGus1mVou1yTXZKwvgMEx0piv6U78Ock11d81lb2PlP4B0tivqbb6aGq5XFPju6bSwFPZ1xQKBdbW1to/tsu+fns79VVe+trtfb/dN998Q2ZmJsOGDWP06NGkpqaydetWli9fznfffVfucWXPUbbO119/TUZGhtH2KntNFfX99vKMjAymTZvGI488wuDBgxkyZAhKpZLk5GTOnTvHypUrSUtL0x7z66+/0qxZM+677z6eeOIJzMzM2LJlizYotW/fPiZNmsTjjz9O9+7d6dGjB3l5eVy/fp3ff/+dv/76q9z35vbnGzZsIDs7mw4dOhAYGIhCoSAxMZFVq1axbt06nUTvpvy86/t37PYYSdlxUxkNbqYUwMiRI/nkk094/fXXiYqKYvLkyYwcOZJBgwaRlJTE//73PxISEvjwww8B6NatG+vWreODDz5g+/btPPjggzz//POMGDGC6OhobGxs+Ne//sUff/zBjRs3aNWqFXPmzMHW1pb777/fYPDpdnZ2dpw8eZI+ffoY3BVA1C2VSkW/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n/FB7VpycjKioqKcyrp164bc3FwAQE5ODgoLC5GQkOBIQnl7e6N///749NNP3V5foraISSlqU0JDQ7F582bk5ubi5ZdfdlrivvaO3TfffIP58+dj5cqVWLNmDWJiYjBnzhwsW7bMU9UmcqsPP/wQb7zxBo4ePYojR45gzpw50Gg0+OKLLzxdNSK3W7FiBaZNm4YHH3wQer3eMcdHRUUFDAYDdDodNm/ejMWLF6OsrAw6nQ7Lli1DcnIyVxaja55er3fMr1arqqoKpaWljnLGB7VnH374Ib788ks89thj+P7779G/f3/cc889eP755x37fPTRR5g3bx7OnDmDnJwcLFy4EIWFhY6bg0TkmhAeHm5tejei1uH222/HG2+80eC2iIgIx/exsbFYvnw54uPjUVpainXr1mHt2rXuqiaRx82ePRsPPfQQgoODkZaWhr/+9a9ISUnxdLWI3C47O7vB8oULFzqGjatUKixevBjTpk2DUqnE7t27sXjxYg5PonZp06ZNSEtLc9zMY3xQezdu3Dg8++yziIyMxLlz5/DBBx/Um892wYIFmDFjBnx9fZGUlITFixfjzJkzHqoxUdvCpBQREREREREREbmd6OkKEBERERERERFR+8OkFBERERERERERuR2TUkRERERERERE5HZMShERERERERERkdsxKUVERERERERERG7HpBQREREREREREbkdk1JEREREREREROR2TEoREREREREREZHbMSlFRERERERERERux6QUERERURtx//33Izs7G6tWrWpwu6+vL/bv348TJ06gW7dubq4dERER0eVhUoqIiIiojVi3bh1+++03TJ8+HRMnTqy3fcWKFejYsSP+9re/4cyZMx6oIREREVHzCeHh4VZPV4KIiIiImicsLAw//PADqqurMXHiRJSWlgIApkyZgjVr1mDv3r2YMWOGh2tJRERE1DT2lCIiIiJqQ86dO4cVK1YgODgYL7/8MgAgKCgIK1asgE6nw6JFizxcQyIiIqLmkXu6AkRERER0eT777DPceOONuOmmmzBt2jTcfPPNCAwMxNNPP43c3FxPV4+IiIioWTh8j4iIiKgNCg0NxY8//giVSgW1Wo2dO3figQce8HS1iIiIiJqNw/eIiIiI2qCCggKsX78earUaRqMRzz//vKerRERERHRZmJQiIiIiaoMCAwNxzz33AACUSiXGjRvn4RoRERERXR4mpYiIiIjaoFdeeQVBQUF49dVXceHCBSxevBidO3f2dLWIiIiImo1JKSIiIqI25rbbbsONN96InTt3Yu3atXjppZfg4+ODlStXerpqRERERM3GpBQRERFRGxIaGoqlS5eitLTUMY/U999/j61bt2L06NGOIX1ERERErR1X3yMiIiJqQ9avX48xY8Zg3rx5+Pbbbx3lAQEBjtX4Jk2ahNzcXA/WkoiIiKhp7ClFRERE1Ebcc889GDNmDLZu3eqUkAKAkpISLF68GD4+Pnjttdc8VEMiIiKi5mNSioiIiKgN6Nq1K1544QUUFRXhhRdeaHCf7du345tvvkFCQgLuu+8+N9eQiIiI6PJw+B4REREREREREbkde0oREREREREREZHbMSlFRERERERERERux6QUERERERERERG5HZNSRERERERERETkdkxKERERERERERGR2zEpRUREREREREREbsekFBERERERERERuR2TUkRERERERERE5HZMShERERERERERkdsxKUVERERERERERG7HpBQREREREREREbkdk1JEREREREREROR2TEoREREREREREZHb/T8fiTsrwc58EAAAAABJRU5ErkJggg==" }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" } - ] + ], + "execution_count": 14 }, { "cell_type": "markdown", @@ -427,27 +303,25 @@ "height": 206 }, "id": "lQVqfn1gnjJT", - "outputId": "740ca4ba-e540-4aa3-d466-f4a34644bfc4" + "outputId": "740ca4ba-e540-4aa3-d466-f4a34644bfc4", + "ExecuteTime": { + "end_time": "2024-07-15T15:22:38.695252Z", + "start_time": "2024-07-15T15:22:38.678547Z" + } }, - "execution_count": 4, "outputs": [ { - "output_type": "execute_result", "data": { "text/plain": [ " id name mu sigma ordinal\n", - "0 ac2c7220bbd94a3db89adedda04ae55d None 27.666827 8.290970 2.793916\n", - "1 ce0be9394e3a42509e66106b07c8d34a None 25.166677 8.240555 0.445012\n", - "2 3b2957c57cba4427bfaf627749b954cd None 25.166677 8.172851 0.648125\n", - "3 7f9961faa3ce4fbd897acf7e81d28be4 None 25.166677 8.240555 0.445012\n", - "4 1898d1957be042868ba0edbde50f536c None 21.833143 8.172851 -2.685409" + "0 9b60dd03cfa94c6d826e403c3a77b2fc None 27.666827 8.290970 2.793916\n", + "1 88ec6d5136cc43d39fe3e54574fa7c24 None 25.166677 8.240555 0.445012\n", + "2 46e697fab2884de3b8dcb535036c76e4 None 25.166677 8.172851 0.648125\n", + "3 d819d48ca1654c9090685d8ce6a8e228 None 25.166677 8.240555 0.445012\n", + "4 035b1b49ca944759be9c33dde325ee95 None 21.833143 8.172851 -2.685409" ], "text/html": [ - "\n", - "\n", - "
\n", - "
\n", - "
\n", + "
\n", "\n", - "\n", - " \n", - "\n", - " \n", - " \n", - "\n", - " \n", - "
\n", - "
\n" + "
" ] }, + "execution_count": 15, "metadata": {}, - "execution_count": 4 + "output_type": "execute_result" } - ] + ], + "execution_count": 15 }, { "cell_type": "markdown", @@ -678,17 +412,34 @@ "cell_type": "code", "source": [ "visualization_data = np.arange(-25, 75, 0.001)\n", - "fig = plt.figure(figsize=(10, 8), dpi=80)\n", - "fig.patch.set_facecolor(\"grey\")\n", + "plt.style.use(\"dark_background\")\n", + "fig, ax = plt.subplots(figsize=(12, 9), dpi=100)\n", + "fig.patch.set_facecolor(\"#1E1E1E\")\n", + "ax.set_facecolor(\"#2E2E2E\")\n", + "\n", "df.apply(\n", - " lambda row: plt.plot(\n", + " lambda row: ax.plot(\n", " visualization_data,\n", " norm.pdf(visualization_data, row[\"mu\"], row[\"sigma\"]),\n", - " label=f\"μ: {row['mu']: 0.2f}, σ: {row['sigma']: 0.2f}\",\n", + " label=f\"μ: {row['mu']:.2f}, σ: {row['sigma']:.2f}\",\n", + " linewidth=2,\n", " ),\n", " axis=1,\n", ")\n", - "plt.legend(title=\"Parameters\")" + "\n", + "ax.set_title(\"Normal Distributions\", fontsize=20, color=\"white\", fontweight=\"bold\")\n", + "ax.set_xlabel(\"X\", fontsize=14, color=\"white\")\n", + "ax.set_ylabel(\"Probability Density\", fontsize=14, color=\"white\")\n", + "ax.tick_params(colors=\"white\", which=\"both\")\n", + "ax.grid(True, linestyle=\"--\", alpha=0.3)\n", + "\n", + "legend = ax.legend(title=\"Parameters\", title_fontsize=14, fontsize=12)\n", + "legend.get_frame().set_facecolor(\"#3E3E3E\")\n", + "legend.get_frame().set_edgecolor(\"white\")\n", + "plt.setp(legend.get_texts(), color=\"white\")\n", + "plt.setp(legend.get_title(), color=\"white\")\n", + "plt.tight_layout()\n", + "plt.show()" ], "metadata": { "colab": { @@ -696,36 +447,30 @@ "height": 561 }, "id": "NbV6GRwGorzh", - "outputId": "35a71079-1c5c-4381-f3cf-5a0dc49d3154" + "outputId": "35a71079-1c5c-4381-f3cf-5a0dc49d3154", + "ExecuteTime": { + "end_time": "2024-07-15T15:22:39.671572Z", + "start_time": "2024-07-15T15:22:38.697263Z" + } }, - "execution_count": 5, "outputs": [ { - "output_type": "execute_result", "data": { "text/plain": [ - "" - ] - }, - "metadata": {}, - "execution_count": 5 - }, - { - "output_type": "display_data", - "data": { - "text/plain": [ - "
" + "
" ], - "image/png": "iVBORw0KGgoAAAANSUhEUgAAApwAAAIOCAYAAAAV5d3tAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAAxOAAAMTgF/d4wjAADEKElEQVR4nOzdeXic1Xnw/+8zizTSLNr3xZItS7ItWzLeTSBxHDaDsZ3SQAqBhPgHJOTlbaA0TZPw0iRkaVoCDaFp2NtQQkiNgYSGJUAw3vCCvEtete8jaaQZLbM9vz/GM0ZYtufRM7a13J/r6nUh67nPnLHVya1zzn1u5cEHH1QRQgghhBDiPDFc7AkIIYQQQojJTRJOIYQQQghxXknCKYQQQgghzitJOIUQQgghxHklCacQQgghhDivJOEUQgghhBDnleliTyAaP/rRj8jIyLjY0xBCCCGEEGfQ2trKAw88MOr3JkTCmZGRQVNT08WehhBCCCGEOAOHw3HG78mWuhBCCCGEOK8k4RRCCCGEEOeVJJxCCCGEEOK8mhBnOIUQQghxYQSDQVRVvdjTEOOQoigYDGNbq5SEUwghhBB4vV4aGhrw+XwXeypiHDObzRQWFhIXF6cpThJOIYQQQtDQ0IDdbictLQ1FUS72dMQ4pKoqTqeThoYGSkpKNMVKwimEEEJMccFgEJ/PR1paGiaTpAbizNLS0uju7iYYDGraXo/6p8rpdPLyyy8zMDCAxWJh7dq1ZGZmnvbc7t27+eCDD1BVleLiYq699lqMRiMnTpzg+eefJy0tLfLs+vXrMZvNUU9WCCGEELEXPrMpK5viXMI/I1rP+UadcL722mssWLCA+fPnc+DAATZu3Mgdd9wx4pmenh7eeecd7rzzTmw2Gy+88AK7du1i8eLFQCgr/trXvqZpgkIIIYQQYmKLai3U7XbT0tLCvHnzAJg9ezYulwun0zniuYMHD1JWVobdbkdRFBYuXMi+fftiP2shhBBCTAlFRUWUlZVRVVXF7Nmz+eUvf3mxp3SajRs3sm3btos9jXEtqhXOvr4+7HY7RqMRCC2nJiUl4XK5RmyRu1wukpOTI18nJyfjcrkiX/f09PCrX/0Kg8FAVVVVZOXzk7Zs2cLWrVsjX4+1BF8IIYQQE9+LL75IVVUV9fX1zJs3j8suuyyyCHY2fr//gpxJ3bhxI1VVVSxdulRzbCAQiORXk9kFOxmck5PDvffei8ViweVy8fzzz5OYmEhFRcVpzy5fvpzly5dHvn7iiScu1DSFEEIIMU5NmzaNsrIy/vSnP/HVr34Vn8+H2Wzm3/7t31i2bBkQWhG98cYbeffdd5k5cyb/+q//yhe/+EX6+voYGhpixYoV/Nu//RsGg4Fnn32W3/zmN2RkZLBnzx6Sk5N58skn+c53vkNNTQ0FBQVs2LABm82Gz+fje9/7Hu+88w5er5fS0lL+4z/+g61bt/Lqq6/y1ltv8eyzz/KNb3yD9evX81//9V889thj+Hw+bDYbv/jFL6isrOTZZ5/lueeeIzU1lcOHD/PrX/+aP//5zzz//PPEx8cD8MorrzBt2rSL+Vcdc1ElnA6Hg/7+/kgWrqoqLpeLpKSkEc8lJSXR3d0d+bq3tzfyjMViGfHc3LlzaWhoGDXhFEIIIYT4pH379lFTU8OKFSv4+7//ewC2bdvGl7/8ZWpqaiLPOZ1Otm/fjqIoDA0N8dprr2Gz2QgEAqxZs4bf/e533HTTTQDs2LGDffv2UVhYyJe+9CVWr17Nli1byMrK4rrrruO5557j7rvv5mc/+xlWq5UPP/wQgB/84Ad897vf5Ze//CXXX389VVVV/O3f/i0Amzdv5oUXXuD9998nPj6eTZs28Td/8zccOHAAgO3bt/PRRx9RVlZGT08P11xzDa2trSQkJDAwMDApd3ajSjhtNhs5OTns3buX+fPnc/DgQRwOx4jtdIBZs2bx9NNP85nPfAabzcbOnTsjCWV/fz9WqxWDwcDw8DCHDx9m/vz5sX9HQgghhJhUbrzxRhISEkhMTOTpp5+mp6eHT3/60zidTkwmE7W1tQwODpKQkADAl7/85Ug1dTAY5Fvf+lbkBp2Ojg4qKioiCeeyZcsoLCwEYOHChfh8PrKysgBYtGgRR44cAULb5i6Xi//5n/8BQhflFxUVjTrfV155hT179rBkyZLIn3V3dzM4OAiEdnLLysqA0KLezJkzueWWW7jyyiu59tpryc/Pj+Vf37gQ9Zb66tWr2bhxI5s2bSI+Pp61a9cCob/UsrIyysvLSU1NZcWKFTz99NNAaFl74cKFQKigaOfOnRgMBoLBILNnz5aEUwghhBDnFD7DCaFELzU1lXfffZdFixbR19dHUlISw8PDkYTTZrNFYh9++GE6OjrYvn07FouFe++9l6Ghocj3P74DazQaT/va7/cDoWuAfvGLX3DllVeec76qqnLbbbfxox/9aNTvf3x+RqORbdu2sWXLFt577z2WLl3KCy+8wGWXXRbF38zEEXXCmZ6ezvr160/78zVr1oz4esGCBSxYsOC055YsWTIi0xdCCCGE0GpoaAiv1xtZlfzFL35x1ud7enrIzs7GYrHQ1tbGSy+9xF/91V9pft21a9fy85//nE996lMkJiYyMDDAiRMnmDNnDg6HY0SR9PXXX8/NN9/MXXfdRWFhIcFgkN27d0cW4T6uv7+f/v5+LrvsMi677DIOHDjARx99NHUTTiGEEEKIi83hcPDDH/6QxYsXk56eHtkaP5P/+3//LzfccANz5swhNzeXz33uc2N63W9961sMDw+zZMmSyHb9t771LebMmcOXvvQlvvzlL7Nx40buvvtu1q9fzz//8z+zbt06/H4/Xq+Xa6+9dtSE0+VyccMNN+DxeFAUhZkzZ3LbbbeNaY7jmfLggw9quyr+InjiiSdoamq62NMQQgghJqVAIMDhw4cpLS2dElf0iLE728+Kw+HgvvvuGzVu8pVBCSGEEEKIcUUSTiGEiJLW3sEXaiwhhBjv5AynEEKchbtnmOq3Gjixt5P+7mHiEozkliQz99P5FMxO1TTWIech/vPgf7K1ZSs9wz2kW9K5NO9Sbp19KyUpJefpHQghxMUnCacQQpzBwc0tbPrtYfy+II50C9Mq0hhye6nb28WJPV2ULMhkxZfKibOc/aPUH/TzyK5HeO7gcwCUp5YzL2Mejf2NvHz0ZV499irr567n61Vfx6DIxpMQYvKRhFMIIUax7ZVj7Prfemyp8Xz6i2VMq0iLVKb2OQf54HdHOLqrg572AdZ+cz4Wq3nUcXwBH3/73t/yftP7VGZU8r2l36MstSzy/X2d+/jBth/wH3v/g7q+On5y2U8wGeSjWQgxuciv0kII8Qm736hn1//Wk1Xs4Av/uIiiuemRZBPAkZbANXfNZdF1xTib3Lz2b9X4vIHTxgmqQb616Vu83/Q+18+4nmeueobShHwG/vc39D/7Ewbf+i0V9hn85zX/yRXTruCNujf4/tbvy/lOIcSkI79GCyHExzQe7GbrxmOk5VlZ/X8qiU8cfeVSURQWX1dMwB9k95/qef+FWlbeNnvEM0/vf5q36t/iymlX8mD51+m59yZ63jlA0HcqeTXGP0jKVZfw43/4OYP+QV4++jJz0uZwY/mN5/V9CiHEhSQrnEIIcdJAn5e3njlAXLyRa+6ae8Zk8+OWXj+dwjlp1Gxto3Z7W+TPqzuq+cVHv6AkuYTvxa2g4borcL5xEJPNSMb1l5Dz9TWkXzsPQ7xC16sf0bx6JQ+lriPPlsdPd/yUwz2Hz+dbFWJK2LdvH5dffjnl5eVUVFRw++23R/qZ79u3j6qqqsj/FRUVkZp65kLAffv28ZnPfIZZs2Yxa9YsNmzYAMAzzzwzYpz09HQ+//nPX5D3B9DZ2cnq1auZN28es2bN4rbbbou8x0/6yle+QmlpKZWVlVx66aXs2LEj8r0jR45wxRVXUFlZyZw5c3jxxRdjOk9JOIUQ4qTN/3OEwX4fn7m5nKSMxKhiFIPCFV+ZTYLdzAe/O8Kg24sv6OOftv4TRsXIPyeupuNrf4fXFSTzpk8x/f2PSP/n50m+5ydk/OuLzHh/FxnXX8Kw049z/T38S8bNBNQA/7T1nwiqQSB0hdKOum7+9c1avvX7vfzkf2v4y+FO/IHg+fzrEGLCs1gsPPbYY9TU1LBnzx48Hg8//elPAZg7dy7V1dWR/7vuuuu4+eabRx1nYGCANWvW8MMf/pBDhw6xf//+SOvJr3zlKyPGyc7OPuM458NDDz3EzJkz2bt3L/v376e9vZ1nnnlm1GfXrVvHwYMH2bNnD9/+9rf567/+68j3vvzlL3PjjTeyZ88e3nvvPf7+7/+e5ubmmM1TttSFEAJorOnm8PZ2plWkUbIwU1OsxWbmsi+U8uZTB9jy+6OcWLCFo71H+duMtaj3/zNBHxQ88DVsX/y/p8UqlkTS//l54kp/QPO/Po/l3h/x5R+u4+n213ip9iUqHFfz3Y37+aihd0Tcr/5yjJJMG99fM4flM9L1vHUhTrP+uR3UOwfOy9jT0hJ58rZF53xOURR6enpITk4GID09nZ07d1JUVBT1a82cOTPy30ajkUWLFrF///7TnhsaGuL555/n3XffHXWc//7v/2bp0qV86lOfioyVkZFx2nPbt2+no6OD66+//pxzU1WVe++9l9dff53BwUEaGxsB+NnPfsbf/d3fRfX+IPT31N/fTzAYxOv1MjAwQH5+/qjPfnxeS5cupbm5Gb/fj8lkYs+ePaxatQqAjIwMKisrefHFF7n33nujnsvZyAqnEGLKU4Mqm186itFs4PKbSkcUCEWrZGEmBbNSqNnexu+3vEZxYgEr/uVVAkMKuffePGqy+XGO9d8jZ/21+Nyw9pE/kRWfzs93/YLP//s77GtyccvSQl65+1KqH7iCP/3tZXz9MzNo7hnk5ie38+v3j431rQsxIT3wwAP86le/0hTj8Xh48sknWbNmzWnf27BhA9OnT6eqqmrU2IMHDxIfH891111HVVUVt956K52dnac999RTT/GlL30Js/ncx3F+//vf8+abb7Jjxw4aGhq46667uOuuuyLJZlVVFS0tLecc53vf+x5Hjx4lOzubzMxMZs2aFVXC++ijj7Jq1SpMptDa44IFC/jNb34DwPHjx9myZQt1dXXnHCdassIphJjyju7uwNnsZv4VhTjSE8Y0hqIoLFtXQuOPdjDvxOf4/L4/MNziJfWzM3Gs/15UYyTf968M7ttL77Ym7t6axQOXdGHL3MLTa79DZUHyqecS4yi/2sFfLyzgrv/axY9er8EXULl7hVweL2IjmhXIi+n73/++pue9Xi833ngjV155JevWrTvt+0899RRf/epXzxjv9/t5++232bZtG7m5ufzjP/4jX/va1/j9738fecbj8fDb3/6Wbdu2RTWnzZs384UvfAGHwwHAnXfeOWJu1dXVUY3z29/+ltmzZ/P2228zMDDA9ddfz5NPPsn69evPGPOb3/yG3/3ud7z//vuRP3vuuee47777qKqqYtq0aaxcuTKSjMaCrHAKIaa0YCDIh6+dwGwxcslV03SNFUjzcCz9I6b1zkHdaSQ+3Ujmw7/VNEbWo7/F5IBZb58gtzMJY8r7TDt95w6A4nQrv71jKbNyHPzsjVr+sPfcqyFCTCQfvyLM5/ONaQyfz8eNN95ITk4Ojz766GnfP3HiBNu2beNv/uZvzjhGYWEhK1asIC8vD0VRuOWWW05LLF966SXmzJnD7NmzzzDKSGazecT7CwaDY0rwHn/8cW6++WaMRiN2u50bbrjhjEcDAF588UX+6Z/+ibfeeousrKzInxcVFfE///M/VFdX88orr+ByuZgzZ47m+ZyJJJxCiCnt6O4OetsHqFpZgMV27m2ws3nuwHN8mPcHUIM05F9Jzv/7LooluuKjMKfBxu8WXYcaUPjBex4GAwO8WHvmatEUaxzPfmURGfZ47n9pL0fa+3W9ByHGk3BSt2XLFvr6+vD7/Zri/X4/N910E6mpqfz6178e9bjM008/zbp16yJnRUfzhS98gR07dtDX1wfA66+/TmVl5YhnzrRKWl5ePmrxzVVXXcVvf/tbXC4XAL/61a+4+uqrtbw9AKZPn86f/vQnIJRcv/HGG1RUVIz67O9+9zu++93v8vbbb1NYWDjie+3t7QSDoULEN954g4MHD541CddKEk4hxJSlqip73m7EZDYwb0WBrrH6vf1sOLKBT3f4yOjaS1f6PAbnrNY8znc37uMJ+2cwlSZhPzrEZa02/rvmvxnyD50xJsth4d9vvoRhf4C/+/1eAkG5OF5MDi+88AILFy7k4YcfZvXq1dx1111A9Gc4X3zxRTZs2MDOnTuZP38+VVVV3H333ZHvB4NBnn322VETxfXr1/Pqq68CoRXOf/zHf2T58uXMmzePd955Z8Tr19bWUl1dzY03jrw/t6OjA6fTOep1S5/73Oe46667uPTSS6moqGBgYICHHnoo8v1oz3A++uijbN++nblz51JZWUlGRgbf/OY3Adi5c2ekEAjg5ptvZmhoiDVr1kSucXI6nQC89tprlJaWUlZWxk9+8hNef/11EhLGdsRoNMqDDz447j+ZnnjiCZqami72NIQQk0zLkV5e/tfdVFyex6f/puzcAWfx3IHn+NcPf8Z/PhlkOFDIzqq/p3x5DitvnRX1GG8caOPO/9rFtfNy+HnFIMdu+iqeTBNf+TJ8d+n3znkZ/I9eP8Sv3z/Od1bN4v+7fLqu9yOmlkAgwOHDhyktLcVoNF7s6QCnV6lPRC+99BK1tbV897vfvdhTiZmz/aw4HA7uu+++UeNkhVMIMWVVv90AQOVKfaub/qCf3xz6DVfXxBHvVClenEhOSRKHP2xjyB3dubNBb4AHXz2A3WLi/103m7h5l5Jy6XSsbQGW18Xx3zX/fc6Wl/deUcq0tEQe/fMRutzDut6TEEK/v/7rv55UyaYeknAKIaak/u4hTuztYtrcNJKztJ2z/KS/NP2FNncrX/hgCINZJe07P6fi8jyCfpWaba1RjfHc1jpaXUN883OlZDosAKTd/yMwqHzpAy/HXcf5qOOjs45hMRv59jXluIf9PPK2dCoSE5uqqhN6dVOMJAmnEGJKqtnaCirM+VSu7rFePvIylxwHq1Ml+VOlGLOmMX1+BharmQObWs65Muka9PHv7x0jLzmBm5eeOshvLq0iaUEeaU0ByhpVfn/492cZJeSqOdksnJbCCx82crzTrfu9CSFELEjCKYSYctSgyqEtrSQ64phWkaZrrI6BDjY1b+LmDwFFJfX//j8ATGYjZcuy6W0foOVI71nHeHLTcVyDPu69opR408gzUWnf/C6gcut2hTfq3sA17DrrWIqi8K1rygkEVf79PbkQXggxPkjCKYSYcpoO99DvHKJ8WTYGo76PwVePvUpBW4CCugCOeRmYyxdEvhdePT24+cyVpp5hP89tqaM43cra+XmnfT/+khXYZjooOerD3jPMH47/4ZxzWlSUyuLiVF7+qJnm3sExvCshhIgtSTiFEFPOoc2hc5WzluvbTldVlY1HN3LdyaOVqf/f/xnx/ZRsK1nFDo5Xd+EbDow6xu92NtI35Gf9ZcUYDaO31Ez54hdRVIVrquH1469HNbe7V5TgD6r8+i+yyimEuPgk4RRCTCneIT8nqjvJmZGku1hof9d+Wp11LD/gJz7diOWzN5z2TOniLPzDAer2dp32PX8gyFMfnCDVGsdfXZJ/xtex/vXdmO1wRXWAA+17aOxrPOfcLp+ZzpxcBy/taqJvaGwdWoSY6Pbt28fll19OeXk5FRUV3H777QwOnlr1VxSFuXPnRu6k3LRp06jj7Nixg+XLl5OYmMjatWtHfO+hhx6KxFdVVeFwOLj33nvP59sa4ciRI6xYsYKqqirKy8u57777Ihe4f9zQ0BBr166ltLSUyspKrrjiCo4ePXrac++88w5Go5FHHnkkpvOUhFMIMaXU73Pi9wUpWZh17ofP4U91f2JpjYrZq5B89eUohtM/UksWZKEYFA5/2Hba99482E5TzyBfWjoNi/nMdx8q5jiSr1hEwgAsOqzyxxN/POfcFEXhtuVFDHgDbNgl9xiLqclisfDYY49RU1PDnj178Hg8/PSnPx3xzKZNm6iurqa6uprLLrts1HFycnJ45JFH+PnPf37a977zne9E4rdv347ZbObmm28+L+9nNPfffz/r1q2LzOHNN9+MdB76pDvuuIPa2lr27NnDmjVrTuu37nK5+Id/+IcRl8XHiiScQogp5eiuDhQFZlxyhgblUQqqQd6oe4NrqlUUg0rS//etUZ9LdMRRUJ5Cw4Hu0+7k/O/tDZgMCrcsPXcP9+Q7/xEUlc/thz8e/+M5K98BVs/LJSnBzH9tq4/qeSHGE0VR6O3tjXydnp5OXV2dpjFmzpzJvHnzADAajSxatEjzGAD5+fksXryY+Pj4sz63ceNGCgoKWLBgwVmfAxgcHOTWW2+lvLyc7OxsFEVBURR+//tz30bxcYqiRNpjDg4O4vP5yMnJOe05i8XCqlWrIu09ly5detrfxTe+8Q2++93vkpamr5hyNNq7xAshxATlHfRTv99Jbmky1qSz/w/Huezp3IOhsY0ZTSr2ykyMWWdOGksXZ9FwsJujuzuouDxUGNTYPcAHR7u4piKbDPu552KaVo51up2K4/04205wqPsQs9NmnzUmIc7IFxbm88SmE2w55uTSknRtb1JMXf99E/ScOD9jpxTD3/xW1xAPPPAAubm5kVaX0fB4PDz55JP8+Mc/HvHnK1euxO/3s3LlSn7wgx9gtVrHPK8z9VMfzWOPPUZTUxN79+7FaDSyZs0aLrvsMm644QZaWlpYtWoV1dXV5xznkUceYfXq1fz7v/87PT09fO9732P+/PnnjHv00UdZs2ZN5Ovf//73GAwGrr/+ejZs2BDVe9BCVjiFEFPGib1dBPxBShbEYDv9xJ+49GBo1TDpr8/ecrK4MgODSeF4dWfkz17cETqHeeOi6LscJV17NYagwqUHVd6ufzuqmPDq6QsfNkT9OkKMd9///vc1JZter5cbb7yRK6+8knXr1kX+vL6+nl27drFlyxY6Ozu5//77xzyn+vp6Pvjgg6i30zdv3sxtt91GXFwcRqOR9evXR7bCc3Nzo0o2AR5//HG++MUv0tLSQn19Pc8//zxvvfXWWWN+9KMfcfTo0Ujy3dbWxg9/+EMeffTRqF5zLGSFUwgxZRzd1YFiUGKynf5W3Zs8cDCI0aJiXX32FY24BBP5Zak0HepmeMCHMd7IS7sayUtO4LKZ0c/FfvPfojz+Eiv2qzzR+C73XHLPOWOmpVlZXJzKWwfb6Rvy4bCYo349MYXpXIGMlY8fBfH5xlb85vP5uPHGG8nJyTktoSosDDVasFqtfP3rX+eOO+4Y81yfeeYZ1qxZQ2pqalTPm83mEe8vGAxiMmlPy375y19y+HCos1hmZiarVq3ivffe44orrhj1+X/5l39hw4YNvP322yQmhgond+3aRWtrK1VVVQB0dXXx6quv0tnZyUMPPaR5TqORFU4hxJTgHfLTeLCbvNJkEmxxusba27mXxPpOsrrBsaAIJd5yzpjpVekEgyp1+5xsOtJFe98wX1hYcMarkEZjSErDMS+b4lYVz7Ej1PfVRxX3V5fkMewP8r/7omuzKcR4sW3bNgC2bNlCX18ffr9fU7zf7+emm24iNTWVX//615HziwA9PT0MDAwAoWTvxRdfjGorejTBYJBnnnnmtO305uZmysvLR4256qqrePbZZxkeHsbv9/Pkk09y9dVXa37t6dOnR1ZGPR4P7777LhUVFaM++/DDD/PCCy/w1ltvjWgbeu2119Le3k5dXR11dXXccMMNPPDAAzFLNkESTiHEFNF0qIeAP0jRPP3nGP/S9BeWHwpdO+L4/BejiimuzAAFTlR38kp1MwCfv+T0i97PxbHmrwBYWqPy54Y/RxVzzdwc4k0G/mdXs+bXE+JieuGFF1i4cCEPP/wwq1evjmyjP/DAA/zqV786Z/yLL77Ihg0b2LlzJ/Pnz6eqqoq7774bgJqaGpYuXUplZSVz587F6XSOuApo1apV7Ny5E4Da2lry8/O59957eeONN8jPz+fxxx+PPPv2229jMBhYuXLliNdvbm4+46rl7bffzrJly1iwYAFVVVWUlJRwzz2hXYuWlpbIauO5PPfcczz11FNUVlaycOFCVq5cyU033QTAq6++GqlEb2pq4r777qO3tzdyjdKSJUuieo1YUB588MFxX7r4xBNP0NQk13oIIcbuz/95iJotrXzph8twpCfoGmvdxrXc++Nasv1Qsn0fSpTbYBt+tovOxn4eSxqiJMfOy1+/VPNrq4MeDi9ZwPEUhd986xKeX/V8VHH/54WPeG1PC+/fv4LCNH33j4rJJxAIcPjwYUpLSzEaz3xF14WkKAo9PT0jVuImmp/97Gfk5ORwyy23XOypxMzZflYcDgf33XffqHGywimEmPTUoEr9vi5Sc626k82m/ibUQ0dJd4FjUUnUySZAcVUGfm+QzAGV1fPG1uVISbBin5NNUTu0HtlDx0BHVHGfP9k289U9ssopxIVy//33T6pkUw9JOIUQk157XR+D/b6YbacvPhzaTrevOXt1+icVV4Zef4bPyHXzTr8nL1r2q68BYPFhlQ+aP4gq5lMz00lKMPO/+0+/gF6I8UhV1Qm9uilGkoRTCDHphdtKFscg4Xyv8T0WHlExWFQSPvcFTbEGh5leQ5Ay1RzV3ZtnYv38HSgmlaU1wagTTrPRwBWzszjQ0ke90zPm1xZCiLGQhFMIMenV7esiwW4ms8iha5x+bz8Nhz6koAvsFbkoZm3V7m8fbOeYKYjFp9LTOjDmeRjsKdjK0ihrhkM1m/AFo7suZtXcbABZ5RRCXHCScAohJrX+7iGczR6mzUnDoOEKotFsb91O1eHQtSz2K67SHP/mgXbq4gIA1B9w6pqL/YpQNWxZ7QB7O/dGFXNpSTr2eJNcjySEuOAk4RRCTGqNh7oBKJgT3WXMZ7OlZQsLj6pgVLGuXa8pdsgX4P0jnaQXOzCaDDToTDht676KqqjMP6ayuXlzVDHxJiMrZ2Wyp8lFU8/YV1iFEEIrSTiFEJNa08mEM79Mf8JZfXQTsxpUbDOSMCSlaYrdeszJgDfAZyuyyStNpuVoL94hbZdYf5wxaxqJeRbmnVDZWvde1HHXzA0VK71xoH3Mry2EEFpJwimEmLTUoEpjTQ/pBTYSHfq6CzX2NZK5rwWjCrbLtd+f+ebBUIJ3xewsCuekEfSrNB/u1TUn26K5WHyg7K2la7ArqpjLZqYTZzLwTo0knGLy27dvH5dffjnl5eVUVFRw++23Mzg4GPm+oijMnTuXqqoqqqqq2LRp06jj7Nixg+XLl5OYmMjatWtHfO+hhx6KxFdVVeFwOLj33nvP59sa4ciRI5GL3MvLy7nvvvsIBoOjPnvPPfdQVFSEoigjerU7nc4R76G0tBSTyUR3d3fM5ikJpxBi0upqcjPk9lEwS//q5tbWrcw/FuqTYVv3FU2xwaDK24famZ5hZUaGjcKT2/u6t9WvC3UT0bKtnhhnYtn0ND480Y17eOwrrEJMBBaLhccee4yamhr27NmDx+Phpz/96YhnNm3aRHV1NdXV1Vx22WWjjpOTk8MjjzzCz3/+89O+953vfCcSv337dsxmMzfffPN5eT+juf/++1m3bl1kDm+++Wak1eUn3XDDDXzwwQdMmzZtxJ+npaVF4qurq7njjju45pprou4LHw3tXeKFEGKCiJzfjEXC2bSZL9SpmNIMmGfM1RS7p6mXzv7hSCvL5KxEbKnxNNf26JpT/LJrMFj/jkuOqbzT9iFrStZEFffZ8kz+criTD450cnXF2O8DFZPX//nz/6Gxv/G8jF1gL+AXK39xzuc+2WkoPT2dnTt3UlRUFPVrzZw5M/LfRqORRYsWsX//fq1TJj8/n/z8fA4ePHjW5zZu3EhBQQELFiw455iDg4PceeedfPjhh/T29tLeHtp1eOmll7jhhhuinpuiKLhcrsiYPp+PnJzR///68ssvj2rMp556ih//+MdRzyEassIphJi0Gg91YzQbyClJ0jWOP+inuXozyR5wVM7QHP/2odD/kFw5OwsI/Q9EflkKPW0DeHqHxzwvxWDAMSeP3G44tvcvqGp0nYo/W54JwJ8PRdelSIjxJtpe6h/n8Xh48sknWbNm5C9mK1eupLKyknvvvRePR98dtU899RRf/epXo3r2scceo6mpib1799Lc3My1117LT37yE2644QZNvdQfeeQRXnrpJXJzc8nNzeXWW29l/vz5Y34PW7Zsoaenh+uuu27MY4xGVjiFEJOSzxug9aiL3NJkTGZ9vaEPOA9QcjR07sv6We3XIf3lcCfJiWaqClIif5ZflkLN1jaaansoW5I95rnZVl5B74fPUnCoh4b+BqY5pp0zpiA1kZmZNt6t7SQYVHVfFyUmn2hWIC+m73//+5qe93q93HjjjVx55ZWsW7cu8uf19fUUFhbi8Xi46667uP/++3n88cfHNKf6+no++OADfvvb30b1/ObNm7ntttuIiwudL1+/fj2PPvoo3/rWt8jNzR1xxvJsHn/8cb74xS/y7W9/m46ODlasWMGiRYu44oorxvQ+nnrqKW699VZMGtr2RkNWOIUQk1LrkV4C/iAF5THYTm/ZSuUJFdWoknjV32iKdbqH2d/cx6dK0jF+LLHLKwsln3q31ROv/RKqojK3TmV76/ao4z47K5Mu9zD7ml26Xl+I8+njq/Y+X3QNDj7J5/Nx4403kpOTw6OPPjrie4WFhQBYrVa+/vWvn7FoKBrPPPMMa9asifrco9lsHvH+gsHgmJK8X/7yl9x2220AZGZmsmrVKt577z3N4wC43W5+97vfcfvtt48p/mwk4RRCTErNh0OJXP6slHM8eW4f1W1mVqOKdZoNg13beB8cDVWPX16aMeLPbSkWkjITaNKZcBrTc4nLiWN2g8qOpq1Rx322LLSt/k6NbKuL8Wvbtm1AaJu3r68Pv19boZvf7+emm24iNTWVX//61yjKqV/6enp6GBgI3UcbDAZ58cUXx7wVHQwGeeaZZ07bTm9ubqa8vHzUmKuuuopnn32W4eFh/H4/Tz75JFdffbXm154+fXqkSMjj8fDuu+9SUVGh/U0AL774IpWVlWecsx6ScAohJqXmw73EJ5pIy7PpGscb8OL9aC/mANgWVWmO/8vhTgAun5lx2vfyy1Lodw7R1zV42ve0cFSWYR2Gjl2bCaqjX4fySQumpWCLN0USYiHGoxdeeIGFCxfy8MMPs3r1au666y4g+jOcL774Ihs2bGDnzp3Mnz+fqqoq7r77bgBqampYunQplZWVzJ07F6fTySOPPBKJXbVqFTt37gSgtraW/Px87r33Xt544w3y8/NHbL2//fbbGAwGVq5cOeL1m5ubz7hqefvtt7Ns2TIWLFhAVVUVJSUl3HPPPQCaznA+99xzPPXUU1RWVrJw4UJWrlzJTTeFbrB49dVXWb/+VJOKO++8k/z8fJqamrjqqqsoKSkZMZaWM6haKQ8++GB0p8wvoieeeIKmpqaLPQ0hxAThGw7w5Dffp7AijWu/Pk/XWLvbd/Pnv7uF63aoFD/zcyzLol+BUFWVxT/6M6mJcbzxzdOrQ4/sbOfNJw+w4kvlzL40d8xz9Lz6FA1//y+88GkDt/zkZUpTSqOKW//cTt6t7eCjB67AYTGP+fXFxBcIBDh8+DClpaUYjfrOPMfKJ6vUJ6Kf/exn5OTkcMstt1zsqcTM2X5WHA4H991336hxssIphJh02o65CAZVcmcm6x5rZ/tO5p1QCSaqxC+5UlPsodZ+OvuHubw0fdTv55XG5hxnwue+gGoMneP8sPXDqOMum5lOIKiy/XjsLncWQpxy//33T6pkUw9JOIUQk07zkVACF4uE80DNXyjsAkdpJopB20fm+0dObqeXnr6dDpDoiCMtz0pTbU/UVxqNxpBoJ6HQSlmTyq666IseLi0JJcIfnJynEOOJqqoTenVTjCQJpxBi0mk50ovZYiSjQN/5TV/Qh686dEm0fdEizfHvH+4k3mRgUdGZq1ZzZ6Yw4PLqP8e5cB7mALh37Yz6HOeMDCvZDouc4xRCnHeScAohJhW/N0B7XR85M5IwGPV9xB10HmRmXegqlsTPrdUUO+QLsLOuhyXT07Cc5R7Q8KX0LUf0XU+UuPJ6AKYfG+SE60RUMYqi8KmZ6Rzr9NDq0pfwCiHE2UjCKYSYVNpP9BH0x+b85q72XcxuVAlawTz3Uk2xu+t78AaCLJ+RdtbncmYkA9B6rHeMswyxfGo1wXiVijqV3R27o477VGRbXVY5hRDnjyScQohJpflIL3CqIEeP/bV/obAT7CXpms9vbjvuBGDp9LMnnLaUeBzpFlqP6lvhVEwmEoqSKG6Hvcc3Rx0XOccp2+pCiPNIEk4hxKTScqQHk9lARqFd1ziBYADv7j0A2Bcu0By/7Xg3tngTFbmOcz6bMyOZ3vYBBvq8ml/n45Kq5mJUoW/ntqhjMuzxlGfb2XzUqatwSYjxaN++fVx++eWUl5dTUVHB7bffzuDgqeMjiqIwd+5cqqqqqKqqOmOnoR07drB8+XISExNZu3btiO899NBDkfiqqiocDgf33nvv+XxbIxw5coQVK1ZQVVVFeXk59913H8Hg6ee4h4aGWLt2LaWlpVRWVnLFFVdw9OjR05575513MBqNI+4kjQVJOIUQk0bAH6TteB/ZM5IwmvR9vNX21DK9LpQAWq/4vKbYQW+Ajxp7WFSUgimKc6Thc5xtx3Se4/x06I7QjON9tHnaoo5bOj2NLvcwx7s8ul5fiPHGYrHw2GOPUVNTw549e/B4PPz0pz8d8cymTZuorq6murqayy67bNRxcnJyeOSRR/j5z39+2ve+853vROK3b9+O2Wzm5ptvPi/vZzT3338/69ati8zhzTffjHQe+qQ77riD2tpa9uzZw5o1a0ZcCg/gcrn4h3/4B1atWhXzeUrCKYSYNLoa3QR8QXJmJOkeq7qjmtkNKoFEFfO8T2mK3d3Qgy+gnnM7PSynJBmAFr3nOC+9jqBZZVajykcdH0Udt6Q4VEX/4Qm5j1OMH4qi0NvbG/k6PT2duro6TWPMnDmTefNCzR+MRiOLFi3SPAZAfn4+ixcvJj4+/qzPbdy4kYKCAhYsOPeuyODgILfeeivl5eVkZ2ejKAqKovD73/9e09wURcHlckXG9Pl85OTknPacxWJh1apVkfaeS5cuPe3v4hvf+Abf/e53SUuL7rNLC+1d4oUQYpxqOx760M2erj/hrDmymS92QsLctPN2fjMsJTsRi9VM68nzp2OlxFsw5ydS0jDI643buKb4mqjiFp9MOLcfd/LFxYW65iAmh8avfR1vY8N5GTuuoJCCf3/83A+exQMPPEBubm6k1WU0PB4PTz75JD/+8Y9H/PnKlSvx+/2sXLmSH/zgB1it1jHPS0tryMcee4ympib27t2L0WhkzZo1XHbZZdxwww20tLSwatUqqqurzznOI488wurVq/n3f/93enp6+N73vhdVT/hHH32UNWvWRL7+/e9/j8Fg4Prrr2fDhg1RvQctZIVTCDFphBPOrOJzn5s8l8GTPZSTFi3UHLvtuBN7vIk5UZzfhNAKRU5JEp2NbnzDAc2v93Ep82YRF4DOD9+POibNFk9Jpo3tJ7rlHKeYEL7//e9rSja9Xi833ngjV155JevWrYv8eX19Pbt27WLLli10dnZy//33j3lO9fX1fPDBB1Fvp2/evJnbbruNuLg4jEYj69evj2yF5+bmRpVsAjz++ON88YtfpKWlhfr6ep5//nneeuuts8b86Ec/4ujRo5Hku62tjR/+8Ic8+uijUb3mWMgKpxBi0mg77iI110p8or6+4J0DnWSd6Acg8bNrzvH0SIPeANWNvVw2MyOq85thOTOSObGni7YTLgrKz3xR/LlYL7uCrld2YzvSQZ+3D0dcdEnvkuJUnt/eQFPPIAWpiWN+fTE56F2BjJWP/wLk8/nGNIbP5+PGG28kJyfntISqsDC0om+1Wvn617/OHXfcMea5PvPMM6xZs4bU1Oj+/9dsNo94f8FgEJNJe1r2y1/+ksOHDwOQmZnJqlWreO+997jiiitGff5f/uVf2LBhA2+//TaJiaH/X9+1axetra1UVVUB0NXVxauvvkpnZycPPfSQ5jmNRlY4hRCTgrtnCHfPMNkxWN3c07mH0iYVv0Ul7pLPaIrdVR8+v6ktaQwXDum9HsnymXUEDSqzGlT2dOyJOm7Jye3/8HEAIcaDbdtCNy5s2bKFvr4+/H6/pni/389NN91Eamoqv/71ryPnFwF6enoYGBgAQsneiy++GNVW9GiCwSDPPPPMadvpzc3NlJeXjxpz1VVX8eyzzzI8PIzf7+fJJ5/k6quv1vza06dPj6yMejwe3n33XSoqKkZ99uGHH+aFF17grbfeGtE29Nprr6W9vZ26ujrq6uq44YYbeOCBB2KWbIIknEKISaLteB8A2TEoGNrXuJ3idjAX2M77+c2wjAI7BpNC+4k+TXGfZLAloeTGU9qssr9VCofExPbCCy+wcOFCHn74YVavXh3ZRn/ggQf41a9+dc74F198kQ0bNrBz507mz59PVVUVd999NwA1NTUsXbqUyspK5s6di9PpHHEV0KpVq9h58mhNbW0t+fn53Hvvvbzxxhvk5+fz+OOnVoHffvttDAYDK1euHPH6zc3NZ1y1vP3221m2bBkLFiygqqqKkpIS7rnnHgBaWloiq43n8txzz/HUU09RWVnJwoULWblyJTfddBMAr776aqQSvampifvuu4/e3t7INUpLliyJ6jViQbbUhRCTQvhKoVgUDHV++BdMQUirmK059sO6bqxxRmbnaFtpNZoNZBTYaa9zoarqiJUYrVLnlNDTdJDWne/AonuiislyWChKS2S7JJxiHPm3f/u3EStxYd///vejir/55pvPeKZy2bJl7N2794yxr7/+euS/y8rKaGpqOuOzV155JSdOnN5S9i9/+Qv/8A//MGqMwWDgxz/+8WlFTKDtDOf8+fPZvHn0Zg/XX389118fanubn58f9RntZ599NqrntJAVTiHEpNB2wkW81URypr7zh76AD/ORFgCsy1dojA2yp7GX+YXR3b/5SVnFDoY9flwd+vqa25Z9GgD10AmC6ukXQJ/JkuI0GroHpK+6EDFy//33c8stt1zsaYwLknAKISY8vy9AZ0M/2cVJKIaxrwwCHOo+REljkKBBxXL59ZpiD7T0MewPsmDa2NpqZheHVmfbT+g7x5mwIlToNK3RR31ffdRxi2VbXYwjqqqOuropJiZJOIUQE15nfT/BgBqT7fTq9o8obVYJZpoxJGk7h7mzLpSojTXhDF/npPccpzFrGr4UhZktKns7z7xl+EnhhHNnXY+u1xdCiE+ShFMIMeFFCoam669QP1H9No5BSC4t0By7q74HgwLzC5PH9Nr2NAsJdjNtOhNOgMTpGWS64MjBv0Qdk5+SQIY9nt0NknAKIWJLEk4hxITXdtyFokBmkf6E07v3IABJi5ZqilNVlZ31PZRlO7BbxnYPqKIoZBUn4Wxy4/fquwA+rSp0vUvfRzs0vf6CwhQOtfbhGdZ2/YwQQpyNJJxCiAmv7YSL1DwbcRZ9F2+0e9rJqQ8VzCR8dt05nh6psXuQzv5hFo5xOz0se7qDYFCls6Ff1zgJnwrd52c73s2gP/oioAXTUgiqsKexV9frCyHEx0nCKYSY0Nw9wwy4vGTFYHVzf9d+SptVvHYwz5irKXZnfej85sIifQln+H3o3VaPX/Q5/HEqJc1BDjoPRh13ybRkIHQ8QAghYkUSTiHEhNZRH0rMMqfZdY9Vc2wzBV0QV5SsOXbnyQRtrAVDYZlFDlD0Fw4pJhPkWpjRBvuad0YdNyc3iTijQc5xiklh3759XH755ZSXl1NRUcHtt9/O4OCpFf8bbriB3NxcFEWht7f3jOMMDg5y6623UlFRQUVFBddffz2dnZ0AbN26laqqKqqqqpgzZw533nknw8PD5/utRRw5ciRykXt5eTn33XcfweDo16Hdc889FBUVoSjKiHs+nU5n5D1UVVVRWlqKyWSiuzt2N1ZIwimEmNA66k4mnDFY4ezd8QEAGZVVmmN31fWQ7bCQl5ygaw5xFhOpOVbdVyMBpJbPIM4PLTvejjrGYjZSkedgd0MvwWB0l0QLMV5ZLBYee+wxampq2LNnDx6Ph5/+9KeR7991111RXbD+H//xHwwMDLBv3z72799PVlYWP/vZzwCorKxkx44dVFdXs2/fPjo6OkZ0ITrf7r//ftatW0d1dTXV1dW8+eabkVaXn3TDDTfwwQcfMG3atBF/npaWFomvrq7mjjvu4Jprrom6L3w0pNOQEGJC66jvw2g2kJpr1TWOqqoYj7QCYF2+8hxPj+Qa9HG4o59Vc3N0dQgKyy52cHBzK57eYazJ8WMeJ2nJ5fT96SD+g0c1xV1SmMLuhl6Od7kpydS/ciwmnj8+vhdX5/lpAJCUkcC1X593zucURaGnpydyF2d6ejo7d+6kqKgo6teaOXNm5L+NRiOLFi1i//79kT/73Oc+F9U4iqIwMDCAz+fDYDDgdruZOzd07CYx8VSzCa/Xy+DgYFSfA4ODg9x55518+OGH9Pb20t7eDsBLL73EDTfcENW8wnNzuVyRMX0+Hzk5OaM+e/nll0c15lNPPTVqByQ9ZIVTCDFhqapKR30/GQU2jGPo7PNxDf0NFLQECBhULMuu0RT7UUMPqgoLCvVtp4dlRS6A17etnvDZtQDkNA7T7mmPOi58LEDOcYrxKtpe6h/n8Xh48sknWbNmjebXu/POO7Hb7WRmZpKVlYXL5eIb3/hG5Pt1dXVUVlaSnp5OUlISX//618855mOPPUZTUxN79+6lubmZa6+9lp/85CfccMMNmnqpP/LII7z00kvk5uaSm5vLrbfeyvz58zW/x7AtW7bQ09PDddddN+YxRiMrnEKICcvVOcjwgJ/MaTEoGOrYS0mrii/LhJKgbbV0d4zOb4ZlFoVWFTsa+pg+P2PM4xizpjGUqlDarHLQeZAsa1ZUcZd8LOG8cVHhmF9fTFzRrEBeTNH2Ug/zer3ceOONXHnllaxbp+0GCoA333yTYDBIW1sbBoOBL3/5yzzwwAP88Ic/BKCoqIg9e/bgdru55ZZb2LBhAzfddNNZx9y8eTO33XYbcXFxAKxfv55HH32Ub33rW5p6qT/++ON88Ytf5Nvf/jYdHR2sWLGCRYsWccUVV2h+nxBa3bz11lsxmWKbIsoKpxBiwooUDMXg/ObxvX/GMQjW6aNvRZ1NdZOLOJOBWTn65wGQkmPFaDbQWa/vaiSA+KK00AXwh96LOibLYSE/JYHdDb26X18IPVT11Dlin883pjF8Ph833ngjOTk5PProo2Ma49e//jXr1q3DYrEQFxfHzTffzLvvvnvaczabjZtuuonnn3/+nGOazeYR7y8YDI4pyfvlL3/JbbfdBkBmZiarVq3ivffe0zwOgNvt5ne/+x233377mOLPRhJOIcSE1VEXSshiUaHu3vMRABlVizTFqarKnsZeKnIdxJli85FqNBpIz7fRUd8/4n+QxiLz5Dmz3t3bNMVdUpjC0Q43vQNeXa8vhB7btoV+brds2UJfXx9+v7aGBH6/n5tuuonU1FR+/etfj/mM9fTp03nzzTdRVRVVVfnjH/9IRUUFAEePHo0kw16vl5dffpl580IrxM3NzZSXl4865lVXXcWzzz7L8PAwfr+fJ598kquvvnpMcwsXCXk8Ht59993I3LR68cUXqaysPOOc9ZCEUwgxYXXU9xFnMZKcmXjuh8/CH/QTf8IJQOKl2rah6pwDuAZ9VBYk65rDJ2UW2hny+OjvHtI1jnXJZwEwHGvVlLxecrI950dyAby4iF544QUWLlzIww8/zOrVq7nrrruA6M9wvvjii2zYsIGdO3cyf/58qqqquPvuuyPfv/baa8nPzwdgzpw5fOYzn4l8b9WqVezcGbpS7MEHH8TtdkeuRWpvb+ehhx4C4J133mH+/PlUVlYyf/58srKy+N73vgeEEs4zrVrefvvtLFu2jAULFlBVVUVJSQn33HMPgKYznM899xxPPfUUlZWVLFy4kJUrV0a281999VXWr18fefbOO+8kPz+fpqYmrrrqKkpKSkaM9dRTT/HVr341qtfVSnnwwQfH/b0XTzzxBE1NTRd7GkKIcSQYCPLEN98nqziJtd8c+wF5gMM9h9n/12so6VCZu3t/6A7LKG38qJm/fbGaR2+qYk1Vnq55fNyhLa2885+HuPqOCmZckjnmcdRBDwcWLGBPkYGVL71DtjU7qrjqxl7W/nIz3/xcKf/3czPPHSAmtEAgwOHDhyktLcVoNF7s6QCnV6lPRD/72c/IycnhlltuudhTiZmz/aw4HA7uu+++UeOkaEgIMSH1tA3g9wbJKtK/nX6g9SOK2yGQZ9GUbEIoMQOoivUK58ljAh31/boSTiXBijfTRElrgAOd+6JOOGfl2DEbFfY09Y75tYWY6u6///6LPYVxQ7bUhRATUnv4wvcYVKg37nwLiw+SZ2qvyK5u7CUl0Uxhqr5t/U9KyU7EZDZECqP0SCjOxDEIx/ZGfwF8vMnIrBwHe5t6dZ8jFWIsVFWd0KubYqSof5V3Op28/PLLDAwMYLFYWLt2LZmZp//WvXv3bj744ANUVaW4uJhrr712xJKrqqo899xztLa28u1vfzs270IIMeV0nKzgjkWF+uD+AwCkXbJMU5zXH+RgSx/LS9JicuH7xxmMBtIL7HQ2hAqH9IyfOe8SOrb+kb7qnXB99HGV+cnsbXLR3DtIfkpsE2oxvsT651dMflp/ZqJe4XzttddYsGAB99xzD5deeikbN2487Zmenh7eeecdvvKVr3DPPffgdrvZtWvXiGe2bt0a01ZJQoipqaOujwS7GVvK2DvxAHgDXmwNoS4dCZdru+j4UGsf3kCQyvxkXXM4k8xpdoYH/PR16Sscsi0PFUKZjndoWq2clx+6gH5Po/42m2J8UxQFRVHGfPWQmDp8Pl/k50WLqFY43W43LS0tfOlLXwJg9uzZvP766zidTtLS0iLPHTx4kLKyMuz20NmjhQsXsmnTJhYvXgxAR0cHNTU1rF27lgMHDmiaqBBChAV8QZzNbgpmpepemantrmV6i8qwFcwz5mqKDZ9vrDpZ0R1rGZFznH0kZYy9R3vcJSvwm1XyWgK0eFrIs0VX3BQ+l7q3qZdr52m/n1RMHIqikJycTHt7O3l5ebLiKUalqirt7e0kJyefn4Szr68Pu90e2RpXFIWkpCRcLteIhNPlco04b5GcnBzp7xkIBHj11VdZs2aN/CALIXTpbvUQDKiRhEyPmsadzOoEf6n2XuzhgqHztsJZGDou0Fnfz8yF0XUJGo1ijsObFcf0Nh8H2/dFnXBOz7BhizdF3qeY3DIzM6mvr+fIkSMXeypiHLNYLKMeqTyXC1al/t577zFr1iwyMjLo6Tl7f94tW7awdevWyNcGg9Q2CSFO6WwInd/MKNCfcLbveJsKFezlJed++BOqG3spTE0k1Rqnex6jSc5OxBRvpKNBf8ch6/Qc1KYGdu/6E8yI7nJpo0GhIs/B3iYXgaCK0SCLBZOZwWCguLiYYDAohWJiVIqijDkniyrhdDgc9Pf3EwgEMBqNqKqKy+UiKSlpxHNJSUl0d3dHvu7t7Y08U19fj8vl4sMPPyQYDDI8PMzPf/5z7rjjDqzWkSsLy5cvZ/ny5ZGvn3jiiTG9OSHE5NTZGErA0gtsusfyHwyt5qQv+YymONegj+OdHq6vzNU9hzMxGBQyCmyhwqGgiqIj4cuav5i29xvo31sNX4g+rrIgmW3HuznW6aY0S3+CL8Y/WeQR50NUP1U2m42cnBz27t0LhM5qOhyOEdvpALNmzaK2tpb+/lBV5c6dOyPtlW6//Xa++c1v8s1vfpPbb7+d+Ph4vvnNb56WbAohxLl0NfYTbzVhT7XoGscX9GFrdANg+dS1mmL3njy/GesOQ5+UWejAO+jH1TmoaxzrpaFVzbi6Lk2rV1UnjwvItroQQo+ot9RXr17Nxo0b2bRpE/Hx8axduxaAV155hbKyMsrLy0lNTWXFihU8/fTTABQVFbFw4cLzMnEhxNQUDKp0NbnJnp6k+zz4CdcJprWrDCSBMbNAU+yeyIXvSWd/UKdI4VBDH8lZY7+ayFyxDK9FpaAlQFN/EwWO6N7vvI8VDn1hoba/IyGECIs64UxPTx/RjzNszZo1I75esGABCxYsOOtYKSkpcgenEGJMettDHYbSY3B+s6ZuGzOcMDRb+9Z8daMLk0FhTu55TjgLQ++zq8FN6aKxj6MYDPhyLBQ1DnOobU/UCWdukoV0W7xcjSSE0EUOagghJpSuk+c3Mwr1n99s3/FnDEDyzOmaY/c3u5iZZcdiPr99p5OzQh2HwudW9bDOyCfOD80f/inqGEVRqCpI4lBrH0O+gO45CCGmJkk4hRATSiwr1AdrQgVDmQsv0zaH/mHa+oaYm6e/y9G5GAwKafk2uprcuiuHs6uWAOA+uF9T3Lz8ZPxBlYOt+ttsCiGmJkk4hRATSmejG1O8kaRMfa0Wg2oQy8lt4oRl12iK3d8Sipubd36308PSC+wMuX14eod1jWNdfiUA5ganprhwx6H9zbKtLoQYG0k4hRAThqqqdDX2k55nw6DzTsim/iYK2oMM2MGUP0NT7P6mUOI150IlnPmh4wNdJyvqx8pcvojheJWsVj/OweiTzoo8STiFEPpIwimEmDD6nUMMD/jJiMH9mzVNOynohGCu9pXSfc0ujAaF2Tnnf0sdTh0f0HuOUzEY8GbHUdQBtR3Rb6un2+LJSbKwr1m21IUQYyMJpxBiwgiv8KUX6j+/2bz9DYwqOEoKNcceaOljZqbtvBcMhaXmWVEU6GrSt8IJkDAtC4sP6nZFXzgEMCc3iSPt/VI4JIQYE0k4hRATRniFLxYFQwOHDgKQfcmlmuK6PV6aewfP+3VIH2eOM5KcbY1U6OuRNS90bV3f3t2a4iryHPiDKofb9c9BCDH1SMIphJgwuhr7MRgVUnP1dShTVRVzQw8Aicu1FQztaw4XDF2Y7fSw9HwbfV1DDA/4dI2TtDRUOERdu6a4cIHUPjnHKYQYA0k4hRATRmdDP6m5VowmfR9dHQMd5LYFGEwEc/EcTbHhwpm5+RduhRNOrerq3VaPq/wUPpNKaquXAd9A1HGnCofkHKcQQjtJOIUQE8JAnxePyxuT7fSalo8o7ARfrvZe7PubXRgUmHWBCobC0gtiU6mumOMYzDJR3K5yuLs26rhMezzptngOtMgKpxBCO0k4hRATwqkOQ/oTzoYdf8IcANv0PM2x+5pdzMiwkRgXdWfgmDiVcOo/Q2kuSMM2BMer34w6RlEU5uY5qGntx+sP6p6DEGJqkYRTCDEhhAuGYtFD3X1gLwDZVcs0xfUOeGnqGbxgF75/XIItDltKPJ06VzgBMubMBcD50RZNcRV5SXgDQY50SOGQEEIbSTiFEBNCZ4MbFEjL01cwBGCs6wLAsfxqTXHh84sX6sL3T0ovsNPT6iHg07fCmLHkcwAEjzVpigtX5h+Qc5xCCI0k4RRCTAjOZjfJmYnEWfRtZfd7+8lq9TFkUTGVztcUe6pC/SIlnPk2gkGV7laPrnHiF11BwKDiaBnEH/RHHVdxsjJ/v5zjFEJoJAmnEGLc83kD9HYMkJanv8PQ4Y79TOuAoew4FIO2j8D9LS4UBWbnXtiCobCYdRxKsOLOMFLYrlLnqos6Li85gZREs1yNJITQTBJOIcS4193iARXS8/VvpzfseJ14P8QXZ2uO3d/sojjdii3+whYMhcWqUh3AkJ9EqhsOH/hz1DGKolCRl8Sh1j78ASkcEkJETxJOIcS45zx592QsVjh794U67GTO1bad7hr0Ue8cuGjb6QD2NAtxCSa6mvQX7aSWlQHQufM9TXFzcpMY8gU53qVvW18IMbVIwimEGPe6mk8mnPn6E071RCsA6Yuu1BQXvn/yYiaciqKQnm+jq9GNGlR1jZWzeCUA3sPHNcWFz3Hua5JtdSFE9CThFEKMe84mN3EWI/ZU7Re1f1xQDWJvHcJnUomvukxTbLgy+0L2UB9Ner4N33CA/u4hXeMkLL2aoKKS2OxGVaNPXsMJtxQOCSG0kIRTCDGuqaqKs9lNWr4NRVF0jdXY30h+h4on3YhijtMUe7A1lHDOvsAdhj4pvMqrt8WlITkdd4qB3PYgXYNdUccVpiZit5giLT6FECIaknAKIcY1d88wwwN+0mNwfvPogT+TPADKGLbFD7X2kZecQFKiWfc89AifY3U26y8cCuQkkt0Lh+u2RR2jKAqzcxwcau0nqHNbXwgxdUjCKYQY1yIFQzE4v9l+skAmaWaJprghX4CjHe6Ldh3Sx6XmWkGJTcJpm14AQMuH0be4hNC1UO5hP009g7rnIISYGiThFEKMa7EsGBo6cgyA3AWf0RR3tMONP6gy6yJvpwOY44wkZybibNZfJZ49bykA7poDmuLCxwoOtsq2uhAiOpJwCiHGNWdTqKVlao7+OzjjTp47tC3T1tJyvJzfDEvLs9LbMYDPG9A1TsrJvwdDg1NTXDjxPtgiLS6FENGRhFMIMa45m90kpSfobmnp9rrJaA/QnwTG9FxNseHEas442FKHk+c41ZMX4utgmj6XQQuktHnxBXxRx83MsmEyKBxs1X8fqBBiapCEUwgxbvm9AXrbB0iPwXb6kZaPyHOCN1v71UoHW/uwx5vIT0nQPY9YiFXhkGIwMJhpoqATjncfjTou3mSkJNPGoVZZ4RRCREcSTiHEuNXd6kFVY3N+s2HbHzCqkDAtR1Ocqqocau1jVo5D97VMsRJOwJ06r0YCMBWkYfFB3a7XNcXNznHQ3DtI74BX9xyEEJOfJJxCiHGrK4YtLV0H9gCQOXeBprimnkH6h/zjokI9zJ5qwWwxxqRSPbV8FgBde7Zqigv/fRySbXUhRBQk4RRCjFvhFbxYbKmr9e0AZC4ZW8HQrBy77jnEimJQSMu10aWxS9BochZdAYDveKOmuEjhkGyrCyGiIAmnEGLccja7McespeUww3EqcbOXaIo9FKlQv7gtLT8pLd/GsMePp1fflnbi4isIGFQSWrStloYTTjnHKYSIhiScQohxSVVVuprcpOfZUAz6zk429TVS0KnizjChmLRVux9s6cNoUJiZpX+VNZbS80LXROndVjck2ulPNZDdEaR3qDfquFRrHNkOi1yNJISIiiScQohxydMbamkZi/Obx6r/hG0IDPnJmmMPtvYxI8OKxWzUPY9Yim2LSyuZLjhybLOmuNm5Do509OP1B3XPQQgxuUnCKYQYl7pi2NKyY/f7ACSXlWmKcw36aOoZHDcXvn9cagwTzsRwi8vtf9IUNzvHgS+gcqxT/xyEEJObJJxCiHEpnEjFomBo6OgJAPIWfFZTXE34/OY4qlAPi08wYU+zxCThzKlaBkD/oYOa4qTjkBAiWpJwCiHGpXCFemqu/paW8U19BBUV+9KxVqiPv4QTQtvqPa0DBHRuaWcsXw2A0tilKS6ciEuluhDiXCThFEKMS11NbhwZ+ltaenweMjsC9KUoGJLSNMUeGucJZ3q+jWBQpadtQNc4pmnleBIhuc1LIBh9f/ZpqYkkxhmlUl0IcU6ScAohxh2/72RLyxgUDB2p305WD/izEzXHHmztI8sRT7otXvc8zodYFg4NZJnJ74IG57GoYwwGhfJsOwdb+3TfByqEmNwk4RRCjDs9rQOhlpZ5+rfTm7a9jgFIKM7TFOcLBDnc5h63q5tw6u8nVi0u4/xwYsermuJm5zroHfDR1jekew5CiMlLEk4hxLjjbIldS8u+A/sAyJq7SFPc8U4P3kBwXFaohyVlJmI0G2LU4nIOAF17t2mKk8IhIUQ0JOEUQow73c0eIDYFQzR0AJC1/DpNYQdbXcD4rFAPMxgU0nKtdMUg4cxbciUAvmPaWlzOloRTCBEFSTiFEOOOs8WD0WQgKSNB1ziqquJoG2bAAuaSSk2x4QRqPG+pQ2gVeMDlZbBfX4tL24LP4TeqWDS2uCzPdmBQ4FCbJJxCiDOThFMIMe50t7hJyUnEYNT3EdU10ElOp4o704Ri0DbWodZ+EsxGitJisMp6HsWqcEixJOJKM5DVEcTtjX6shDgjRelWWeEUQpyVJJxCiHFleNCPu2c4Jtvpx3f/kUQvkJekKU5VVQ629lGWbceos4/7+ZZ6snCou9Wje6xAjpW0fjimtcVljoM65wDuYb/uOQghJidJOIUQ40p3SyhxSsvVXzDU/tEmABzTizXFdfYP0+3xjvvtdDj19+Rs0Z9wJhTlA9pbXIb/ng639+uegxBicpKEUwgxroS3hmOxwjlw9CgAOfMv1xRX0xZKnMqz7brncL4l2M1YbGa6Y1A4lDl3IQB9NdpaXJZlhf6eatsk4RRCjE4STiHEuBJZ4YzBlUjG5l7gVOvGaNWcLIApmwAJp6KEKtWdLR7dl6/nLg1V8qsnK/ujVZ4T+nuqkY5DQogzkIRTCDGudLe4MVuM2FL0dfcJqkGSOny4HGBMzdYUO5FWOAFSc234hgK4e4Z1jWOePpcBC9jatY2Tl5yAPd7EIVnhFEKcgSScQohxQ1VVnM0e0nKtKIq+Yp3mrqPkOGEwK05zbG1bP9kOC8mJ2mMvhvDxA92V6gYD7gwjOV0qzoGu6OMUhbJsO7Vt/dLiUggxKkk4hRDjxmC/jyGPj9QYFAzVffgapiCY8tM1xfkDQY50uCfEdnpY2smEszsGhUNqXhKJw3Ci+n81xZXn2HENSotLIcToJOEUQowb4ZaWsSgYcu7dDkBy2SxNcXVOD15/MHIucSJIjWHCaZ8xHYDWXe9piivLDlWq18i2uhBiFJJwCiHGjXBLy7QYJJzDxxsAyFu4UlPcRDu/CRCfaMaWEh9J2PXIrboMgIEjRzXFzcoOFw5JwimEOJ0knEKIcaM7ssKpf0s9rtWN3wApC6/SFBdOmMqzx/8dnB+Xmmujp3WAYFDfGcpwRb+xuUdTXGl2+GokqVQXQpxOEk4hxLjhbPGQYDeT6NBXrOML+kjrCNCbqqBYEjXF1rT1YzIozMjQn/ReSGm5VgL+IH2dg7rGMaXl0OuApA6fpgIgh8VMXnKCbKkLIUYlCacQYlxQVZXuFk9Mzm821O8iow+82QmaY2vb+5ieYSXONLE+HsMtLvVWqkOosj/bCW3O45riZuXYOdrhxusP6p6DEGJymVifqEKISavfOYRvOBCTlpYN2/8AQHyhtvs33cN+GrsHJ9x2OsS2xaUxPw1TEE5sf0VTXFm2HX9Q5XiX/qRXCDG5SMIphBgXwhXWsVjh7DlQDUDa7EpNceHWjBPpSqSwlOxEUE6dg9UjubQcgK6Tlf7RCifqUjgkhPgkSTiFEONCuMI6Fi0tA3VtABQsu05TXO0ErFAPM8UZScpIiMnVSPkLrwBOVfpHK/z3Juc4hRCfJAmnEGJciKxw5uhf4UxoG2AoDqyzlmqKC/dQL8+ZeFvqENpW7+0YxO8L6BonddFV+A1gbtGWOBanW4kzGiJ/j0IIESYJpxBiXHC2eLClxhOXYNI1zqB3gMxOld4MA4pB20dcTVs/douJ3CSLrjlcLKm5VtSgSm/7gK5xFEsivakKqZ0BAsHok1eT0cDMLJtsqQshTiMJpxDiogsGgvS0eWJSMHTiwJ+xD0EwR9tYqqpS29ZPWZZddx/3iyV8HMHZrH9bfTg7gYw+aGzYrSmuLNtOW98QvQNe3XMQQkweknAKIS46V+cgQb8ak4Khlh1vApBQVKgprq1vCNegb0K1tPykWLa4jJuWBUDD1lc1xc2SFpdCiFFIwimEuOicMWxp2Vd7CICsysWa4moiFeoT8/wmQFJmAgaTEpNK9bTZVQB0n6z4j1ZZpOOQJJxCiFMk4RRCXHSxbGmpNnYBkL98naa4iVyhHmY0GkjJssbkLs7CJaEKf399q6a48AqxFA4JIT5OEk4hxEXX3eJBUU7eJamTvX2YPhvE55VoiqtpDSVIE/EOzo9LzbXS7xzCO+TXNY5t9lIG40MV/1pk2OJJs8ZxSAqHhBAfIwmnEOKic7Z4SMpMxBRn1DWOy9NFlhP6M7RXute09ZOXnIDDYtY1h4stLS825zgVg4HedAOZnSrDvqHo4xSFsmw7h9v7CQaj78UuhJjcJOEUQlxUfm8AV8dATAqGTnz4KnF+IC9ZU5wvEORYp3tCb6eHhY8lxKJwKJBrxzYEJ/a/pSmuPNvBgDdAY4++65mEEJOHJJxCiIuqp20AVY1NwVDbR+8DYC+ZoSnueKcHX0Cd8NvpcOrv0RmDwqGE4gIAWj58U1OcdBwSQnySJJxCiIsqlgVDA0ePAZA7/9Oa4sIFLpMh4bSnWjDFG2Oywpk1bwkA/Scr/6MVKRySc5xCiJMk4RRCXFThiurw2UM9jM29BBXIXbZGU1x4JW7WBG1p+XGKQSE1JzaV6gWXfh44VfkfrZmZdgyKVKoLIU6RhFMIcVF1t3gwmBSSMhJ0jaOqKo5OP90pYHSkaoqtbevHbFQoTtef9I4HaXlWBvu8DPbr6/ZjyZlOrx2s7cOa4hLijBSlWeUuTiFEhCScQoiLytniJiXbisGo7+Ooq/M4mT0wmBmvOba2rZ8ZGTbMOucwXqTFsHDInWki0wlut1NTXHmOnRNOD4Pe6HuxCyEmr8nx6SqEmJC8g37c3cMxKRg6sWUDBhWMBema4lyDPpp7ByfFdnpYaqRwSH/CSV4KcQE4/uHLmsLKshyoKhzpkFVOIYQknEKIi6i7NZQQxeJKJOe+DwFILputKe5we7il5cQvGAo71VNdf6W6rSR0gX777k2a4qRwSAjxcZJwCiEuGmdzKCFKi0GF+tCJRgDyF1+lKe5UD/XJk3AmOuKwWM2RHvV65FxyOQCeo8c1xc062ZP+kBQOCSGQhFMIcRGFt3xjscJpbnXjNUHm/Cs0xYVbWoYTpMlAURRSc610t7hRVX3dfvKXrSOggLHFpS0uJYHEOKMUDgkhAEk4hRAXUXeLG3O8EXuqRdc4QTVIameA7nQFxRynKba2rZ+kBDNZDu3FRuNZWq4V71AAd4+2CvNPMlmT6E4FR4dPU5zBoFCaZZeEUwgBSMIphLiIuls8pOZaUQyKrnGaj31IihuGsxM1xamqSm1bP2XZdhRF3xzGm9S82FWqD2TFk94Lzo6jmuLKs+04PV46+/UlvUKIiU8STiHERTHQ52Ww3xeT7fTGLa8CEDctW1Ncc+8g/cN+Zk2i85thpwqH9CecxoIMDEDdFm2V6qdaXMo5TiGmOkk4hRAXRbiCOhYFQz2H9oTGmj1fU1xtpGBo8pzfDEvNiV2lenLpLAC69n6oKS789yrb6kIISTiFEBdFpGAoBi0t/fVtABQtH1tLy/AVPpOJxWrGmhwfk7s48xdfCcDwyZsAonVqhVMSTiGmOkk4hRAXRXirNxYrnJb2QdwJ4Jhxiaa4cCJUmjX5Ek4IFQ71tHoIBvVVqmdVXcWwGUyt2lZLU6xxZDniZUtdCCEJpxDi4uhucWOxmkmwm3WN4/N7yehU6c0wohi0faTVtvVRkJqALd6kaw7jVWquFb8vSF/XoK5xDGYzznSF1M6A5muWyrIdHGl3E9CZ9AohJjZJOIUQF5yqqjjDFeo6q8Mbdr9Oghf8OdpWSof9AY53eiifhOc3w1Jj2FN9OCuRJA+0H9V2jrM8286wP0idMwZtNoUQE1bUv9Y7nU5efvllBgYGsFgsrF27lszMzNOe2717Nx988AGqqlJcXMy1116L0WiksbGRP/zhDwAEg0EKCwu55pprMJkm58qCEOLM3D3D+IYCMemh3rzzbTKAhOmFmuKOdXjwB9XIOcPJKC3vVOHQ9KoMXWPFFeVA9VEatr5K9swlUceVnTyuUNvWz4wM/ccnhBATU9QrnK+99hoLFizgnnvu4dJLL2Xjxo2nPdPT08M777zDV77yFe655x7cbje7du0CICsrizvuuIOvfe1rfO1rX8Pj8bBjx46YvREhxMTRHSkY0p+A9B+uASBz3jJNcbXtoXOFk6ml5SelZFtBISaFQ6lzqgDoPrhHU9ypnupyjlOIqSyqhNPtdtPS0sK8efMAmD17Ni6XC6fTOeK5gwcPUlZWht0eukR54cKF7Nu3D4C4uDiMRiMAgUAAn09b1wohxOThPHlVT/jqHj2CjV0ATLv085riIhXqk3hL3RxvxJGeEJMt9WlLVwPgO3kjQLRKMm0YDYpUqgsxxUW1n93X14fdbo8kjIqikJSUhMvlIi0tLfKcy+UiOTk58nVycjIu16n+uz09Pfz2t7+lu7ub0tJSFi1aNOrrbdmyha1bt0a+NmgsBBBCjG/dMeyhbu3w0p0EszKnaYqrae0nzmSgKE1bd6KJJjXHSsN+JwF/EKNp7J+laTMXcywRLG0DmuLiTUaK063UtkvCKcRUdkEPUKakpPC1r32N4eFhNmzYwKFDh5g7d+5pzy1fvpzly5dHvn7iiScu5DSFEOdZd4sHa1IcFqu+CvVhj4sMp0rTdO3j1Lb1MzPThsk4uX+hTcu1Ure3i972AdJ0HmHoyTCS0Rog4PNi1NCzvizbzuv7WvEM+7FO0hsBhBBnF9UnrcPhoL+/n0AgAIQqTF0uF0lJSSOeS0pKore3N/J1b2/vac8AxMfHU1FREdluF0JMHWpQpafVE5PVzRPbNmAKgpp3+ufM2bgGfLT1DU3q85thqXmxa3Hpz7GR4IWm6jc0xc3KtqOqcFhWOYWYsqJKOG02Gzk5OezduxcIndV0OBwjttMBZs2aRW1tLf39/aiqys6dO6moqABCVe7hhNXv91NTU0NWVlYs34sQYgLocw7i9wUjV/bo0Vb9PgC2khma4sIXkU/mCvWw8MX6zhi0uEwoDt0E0LzjTU1x0uJSCBH13sbq1avZuHEjmzZtIj4+nrVr1wLwyiuvUFZWRnl5OampqaxYsYKnn34agKKiIhYuXAjAiRMn2L59OwaDgWAwSHFxMZdffnns35EQYlxzNsfu/KbnyDEAsio/pSkufJ5wMvZQ/6TkrEQMBiUmK5wZ85bAC/twHT6kKU5aXAohok4409PTWb9+/Wl/vmbNyN7FCxYsYMGCBac9t3DhwkjyKYSYumJZMERLL34DlC2/QVPYqQr1yb/CaTQZSMpKjMnVSEXL19HEkwQbujTF5SWHujlJi0shpq7JfVpeCDHudLeeTDhjcCWSo8OHMwXibMma4mrb+klONJNpj9c9h4kgLddKX9cgPm9A1zj2rOk4k8DaMawpzmBQKM2yUdvWr7k1phBicpCEUwhxQXW3uLGnWoiz6KtWdjsbSe0Fd5a2pFFVVQ639VOWZdfdVnOiSM21ggo9rfpXOfsyzaR1g9fTqymuLNtBz4CPzn5tyaoQYnKQhFMIccEEAkF62gYildN61G/+HwyAIT/tnM9+XItriP5h/5TYTg9Li2FP9WBeMqYg1G97WVOcnOMUYmqThFMIccG4OgYJBtSY9FDv2LMdAMfMMk1xtSfPEZZOoYQzfF42Fuc4bSXTAWjd/b6muFMJp5zjFGIqkoRTCHHBRAqGYnB+c/BEPQA5i1ZqiptKBUNhjowEjGYD3TG4Gil7/qcB8Bw9qiku3EJUVjiFmJok4RRCXDCRHuoxuIPT0NLHsAkKL7lWU1z4LsjSrKmTcBoMCqk51phsqRctXYffAEqz69wPf0xSoplsh0Xu4hRiipKEUwhxwfS0eFAUSMnW3788uTNAV7qCOc6iKa62rZ+85ATsFn1tNSea1Fwr7p5hhgd8usaxWJPpTFOwd2gfpzzHzpEON/5AUNcchBATjyScQogLxtniwZGRgCnOqGuc3rq9JHlgIFtbsukLBDnW6Z5S2+lh4XOcsVjl9GTGkdoHA211muLKsu14/UHqnPrnIISYWCThFEJcEH5fAFfnYKRiWo/6ra8AYCrQ1h73eKcHX0CdEj3UPyl8bjYWhUNKQToQuilAC6lUF2LqkoRTCHFB9LYPoAbVmHQYcu7fBUBy+RxNceEK6amYcKblxe5qJEfpLAA69m3XFFeWJT3VhZiqJOEUQlwQseyhPlTXDED+0lWa4mojFeqTv4f6J9lS4jFbjDGpVM9bfAUAAycaNMXNyLRiMigcapWEU4ipRhJOIcQFEWlpGYOEM65tALcF8sov1xRX29aP2agwPSMGfdwnGEVRSMu14mz26G4vWVh1NQPxYGrRljjGm4xMz7BS2y53cQox1UjCKYS4ILpbPBgMCsmZ+irU1WCQ1M4gXRkGjEZt7TFr2vqZkWHDbJyaH32puTaGPD4G+/VVqptNcXSmKyR3BVGD2irOy7IdNHYP4h7265qDEGJimZqfukKIC667xU1ydiJGk76PHeeBTSR4wZutbZWyf8hHc+/glDy/GXaq45D+bfWhrARsg9B3dJemuHDhkJzjFGJqkYRTCHHe+YYD9HUNxWQ7vWHb6wCYi3I1xR1uDyVZU+nC908KtxTtbtZfOGSalgNA3ZZXNMVJwinE1CQJpxDivIuc34xBS8uemr0ApM2Zrymudgq2tPykcIenWBQOpc6pDI11aI+muLJIwinnOIWYSiThFEKcd+EEJxZ3cPoa2gEoXHq9prjaKXwlUliiI44Euzkmd3EWLF0NgLe+VVNcXnIC9niT3MUpxBQjCacQ4rwL3/0Yiy11S/sQ3XbInlalKa6mrR97vIm85ATdc5jIUnOtdLfqr1TPm7GYHhvEtQ5oilMUhbJsOzVt/brnIISYOCThFEKcd90tHowmA44MfclecGiQVKdKT4YRRVGijlNVldr2fkqz7ZriJqPUXBu+oQDunmFd4xgUA90ZRlKdKqrPqym2LNuOa9BHe5++OQghJg5JOIUQ5113q4eUnEQMBn3JXvuuP2EOgC9X27Z4R/8wvQO+Kb2dHhYuHHI26z/H6cuxEeeHjo/e0hR3qsWlnOMUYqqQhFMIcV4ND/hw9wzHZDu9adfbACQUF2qKq5GCoYhThUP6z3HGFecD0PzhG5riyrKlxaUQU40knEKI8yqc2MSiYMhVWwNA+rwlmuIiBUNT+EqksHDiH4uEM33uYgB6ag9piiuLrHBKwinEVCEJpxDivIplS8tgs5OgAsVL12mKq5nCPdQ/KT7BhC0lPiaXvxcv/zxBINDUqSkuKcFMbpJFEk4hphBJOIUQ51X4Cp5Y3MGZ2D5MRwqkZRRriqtt6yfbYSEp0ax7DpNBaq6VntYBgkF9VeIZGTPoTAn9u2hVlm3nWIcbX0Bba0whxMQkCacQ4rzqbnFjjjdiT7XoGifQ101KL/Rlaksa/YEgRzrcUjD0Mam5NgL+IH2dg7rGURSF3kwTKT2hfx8tynMceANBTnTp39oXQox/knAKIc6r7hYPqblWFJ0V6i1bX8GgQjA3SVNcnXMArz8oCefHpMWwp3ogLxmDCq3bX9MUVy7nOIWYUiThFEKcNwN9Xgb7fTHZTm+pfh+AhJIZmuIOt4cSGikYOiWWhUPWGdMBaNn9F01x0uJSiKlFEk4hxHkTy4Kh/qNHAciuukxTXHgFTVY4T0nJsYICzmb9CWfm/NC/R/jfJ1rT022YDIpcjSTEFCEJpxDivIllS0uae/EaoXiR9h7qRoNCSab+a5kmC3OckaT0hEiPez2mL16D1wg09WiKizMZKMm0cahVEk4hpgJJOIUQ5004oYnFHZy2Dj/t6ZBkz9AUV9vWT1FaIhazUfccJpPUXCu9HYMEfPqqxJNtGbSng63Trzm2LNtOc+8g/UM+XXMQQox/knAKIc6b7hYP8YkmEpPidI3jbT1BkhvcmfGa4ga8fuq7B+T+zVGk5dlQgyo97QO6x+rPjMfhDv07aRE+5hA+ZyuEmLwk4RRCnBeqqtLderJCXdFXod605ZXQf+Snaoo70u5GVeX85mhOFQ7p31anIA2A5s0vawoLV6rLtroQk58knEKI88LT62V4wB/p3a1H+96tANhKyzXF1UrB0BmlRq5G0l84ZC8L/bu07duuKa5ceqoLMWVIwimEOC+6W8PnN/UXDA2caAAgd+FnNcWdamkpCecnJWcmYjAqMbkaKWfBSgAGjtdri0uyYLeYJOEUYgqQhFMIcV50x7ClpaGlH088FM+7WlNcbXsfiXFGClISdc9hsjGaDCRnJcamUn3ulbgtYGzRljgqikJ5tp2atj5UVV+bTSHE+CYJpxDivHDG6EokNRjE0RWgPUPBGq9te762rZ+ZWXYMOrscTVZpuVb6uobwDQd0jWONt9GWoeDoCqIGtVW9l2c76Bvy0+oa0jUHIcT4JgmnEOK86G52k2A3k2DXV6E+dGwPiUMwkKWtF3uXe5gut5dy6TB0RuHzteEL+vUYzEogYRgGD+/UFHeq45BsqwsxmUnCKYSIOTUYqlBPy9NfMNRwskLdWJCpKS6cwJTK+c0zimWlurEwC4DGrX/QFCc91YWYGiThFELEnKtrEL83GJML3zsPfgRAcnmFprhaKRg6p1hWqifNmRca68BHmuJKIwmn9FQXYjKThFMIEXPdJ3t0p+bpLxgaqmsGoGDZak1xciXSuTnSEzCZDTGpVM9ffA0AQw2t2uZgMZOXnCBb6kJMcpJwCiFizhluaRmDLfW41gGcdiiauVxTXE1bH+m2ONJt2roTTSUGg0JKjpXu5hhUqk9fRpcDzK3aOxeVZ9s51unGF9DXZlMIMX5JwimEiDlnsxuUGFSoDw+R4lTpyjBiNpijjgsEVWrb+5mVIy0tzyUt14rH5WXIo6+feZwxjq4MA8ndKuqQtqSzLNuOL6ByvFP/SqsQYnyShFMIEXPOZg9JGQmY44y6xunZ+SamAHg1ngWtd3oY8gXl/GYUIpXqMdhWH86xYQpA3573NMWVn/zFQM5xCjF5ScIphIgpvzeAq2MgJtvpjTveACB+RqGmuHBvblnhPLfwOdtYVKrHFeUD0LT9DU1xUqkuxOQnCacQIqZ62gZQ1di0tOytPQRA+rylmuLCK2XhXt3izNJiWKmeOnchAD21BzXFFadbMRsVKRwSYhKThFMIEVPO5tgVDAUau/AbYPqSNZriDrX2YTIolGTqn8NkZ02OJy7BFJMt9cIlqwko4Gvs1BRnNhqYkWGThFOISUwSTiFETMUy4Uxs99GaBtlp0zXFHWrtpyTTRpxJPuLORVEU0nKtOFvcuvuZF2aW05YKlo5hzbGzchw09w7iGtRXvCSEGJ/k01gIEVPOZjcmswFHRoKucfztDST1gysrDkWJvhd635CP5t5BKRjSIDXXyrDHz0CfV9c4JoOJ7kwTjl4I9nZpig3fl3q4XVY5hZiMJOEUQsSUs9lDSo4VgyH6JHE0rZs3AqAWpGqKq5GCIc0ilerN+rfV/blJGIDubX/UFFcmhUNCTGqScAohYmbQ7WWgz0taDDoMte7ZAoC1tExTXKRgSBLOqIULh7pb9SecCTOKAWj56C+a4iKV6q1yNZIQk5EknEKImHGeXCGLxflNz7E6AHIWfk5T3KkrkWRLPVqneqrrvxopo+pSAFxHj2qKy3ZYSEowS+GQEJOUJJxCiJiJFAxpvKh9NIaWfvoSYMZcrQlnH2nWODKkpWXUEuxxJDjiYlKpXnzJKobMEGzu0RSnKApl2XZq2/t1Fy8JIcYfSTiFEDET7smdqnNLXfX7SeoM0pahkGRJjjouGFSpbeunPMeuqdBIhLbVu1s8qEF9yV5uUgHN6QrWDr/m2PJsO/1DflpcQ7rmIIQYfyThFELEjLPFg8VmJtERp2ucwQNbiffBQE6iprj67gEGfQFmyYXvmqXmWPENB+jv1pfsKYpCf6YZ6wD4m45oig1f1C/nOIWYfCThFELEhBpUcbZ4SMuz6l5dbDpZ4WwqytEUF05UpGBIu/A5zlhsq6v5aQB0bpFKdSFEiCScQoiY6HMO4R8OxKRgqOvgHgCSK+ZrijvUJgVDYxX+d4tF4ZC1LHSzQNverZriwgmnFA4JMflIwimEiIlYdhjy1rcRJNQqUYtDrX0YpaXlmKTmnKxUj8FdnNkLPgtA/4l6TXG2eBP5KQmRq62EEJOHJJxCiJjoboldhXpc+xBtqTA9r0pTXE1bHzMyrMSbjLrnMNXEJZhwpFsivzjoMXPOSlyJoLRoX6ksz3ZwvNOD1x/UPQ8hxPghCacQIiaczR5QTp0FHKugy0lSDzgzjZiN5qjj+od8NHYPSochHdLybPS0DRDw6Uv2Ui2ptGYoOLqCqH5t1erl2Xb8QZVjnfoTXyHE+CEJpxAiJpzNbhzpCZjj9a0u9m5/HQPgy0vSFBc+91cuFepjlpZvQw2qMek4NJiVQJwPhg5t1xQn5ziFmJwk4RRC6BbwBentGIy0SNSjaee7wKkWidGSgiH90sOFQzHYVjdNywZO3TgQrfC/3yE5xynEpCIJpxBCt+620IXhsSgYch0J3d2YccllmuIOnbwSSbbUxy7879cVg4Qz5eQNA50HqjXFFaVZiTMZZIVTiElGEk4hhG7dMaxQDzb3MhgH06uu0RRX09pHSqKZTLu0tByrpIwETHEGnE36E87CZWsIKuCta9UUZzIaKMmwScIpxCQjCacQQreuk1fppOltaRkMYuvw05yhkJtUEHVcuKXlrByHtLTUQTEopOXZ6Gpy6+5nPj2/itZUiG/T3rmoPNtOq2sI14BP1xyEEOOHJJxCCN26m90YTQaSMhJ0jeM7vp/EIejLitOUODb2DODxBqRgKAbS8m0MuX0M9Hl1jWM2mOnONJHcC4HuNk2x4WMRB6XFpRCThiScQgjdnM1uUnISMRj1faS0bz1ZYFKYoSnuUKsUDMVKpHAoBtvq/oJkALo3v6YpbnZuKOE8JAmnEJOGJJxCCF0G3V48Li/p+frPb7btC12h4yifoylOCoZiJ+3kv2NXDBLOxNJSAJp2vacpTlY4hZh8JOEUQugSTkzS8/WvLg6caAKgYMkqTXE1bdLSMlbSYng1UvaSKwDoP3pcU1yqNY6cJAsHWiThFGKykIRTCKGLM5Jw6k/2zC0DtCdBacmnNMUdau2nON2KxSwtLfWKTzBhT7XEZIWzZHaoxaWhWXviODvHwdGOfmlxKcQkIQmnEEKXcGKSpjPhDPb34OgO0pFlJNGcGHVc35CPhu4B5uTKdnqspOXb6I1Bi8t0awYtmQqOzgCqT1sR0uxcB76AypEOuR5JiMlAEk4hhC5djW5sKfFYrNH3PR9N3/b/xagqDOdrSxwPndx2nS3nN2MmPd9GMKjS066/xaUnJxGzX2Go+i+a4sK/QByUbXUhJgVJOIUQYxbwB+lp88RkO73pw7cBsMzU1tIyXFgyJ1db73VxZpGOQzHYVjfPyAegafv/aoqbnRP695TCISEmB0k4hRBj1tPmIRhQdW+nA/TWHgYgc8FnNMWFC0tmy5Z6zIR/gYjF1Ugp8xaFxjqwV1NcfkoC9niTFA4JMUlIwimEGLNYVqirTb24LVCisaXlwZY+cpIspFrjdM9BhDhOtriMxQpn0eLVeI3ga+jUFGcwKMzKcXCopU931yMhxMUnCacQYsy6YlShrvr92Dv8NGUq5Nrzoo7z+oMc6eiX85sxZjAopObaYnI10vSMWTSnQ0Kb9s5Fs3Md9A/7aeoZ1D0PIcTFJQmnEGLMnE1uTPFG3S0tvfu3EO9TcOdYNLW0PNLRjy+gSoX6eZCeZ2Ww34fHNaxrHLPRTHe2GasH/A2HNcWGj0nItroQE58knEKIMVFVla4mN2m5VhRD9EniaFq2vg6AoThXU5yc3zx/0k4ek4jFKmewIC001tY/aIqbLR2HhJg0JOEUQoyJp9fLkNsXkwr1zv27AUiZu0BTXPjKHKlQj730fCsQm0p166xZALR+tEVT3MwsGyaDwsEWl+45CCEuLkk4hRBj0tUUupA7FgnncH0HfgNMW3K9priDLX3YLSbyU/Rt6YvTxbLFZe7iqwDwHKvXFBdvMlKSaZO7OIWYBCThFEKMSTgRSYtBhbqlbZimdCjJqYg6JhhUOdjax+wch6ZznyI68YlmbKnxMbkaaWbJpXQkgaFV+0Xys3MdtLiG6PFoLzoSQowfknAKIcYk0tIyz6prHH/TMWxu6Mo2E2+MjzqusWcA97Bfzm+eR+l5NnpaBwjo7GeenpBOS6YBhzNI0K1tezx8XOKQnOMUYkKThFMIMSbOJjdJGQnEWUy6xuk9WUgSKEjVFHdAzm+ed2nhFpdtA7rHGsyzYlAVBne8rSlOCoeEmBwk4RRCaOb3BuhtH4jJ+c2W3ZsBsJXP0hR3UHqon3eRc5wnz+vqETd9GgAtH76lKS6ScMo5TiEmtKiXJpxOJy+//DIDAwNYLBbWrl1LZmbmac/t3r2bDz74AFVVKS4u5tprr8VoNHL8+HHefvttvF4viqIwc+ZMPve5z2EwSM4rxETjbPGgqsSkpWX/sTpSgdylV2qKO9DiIs5ooCRT/xzE6DIKQudzOxvdlC3VN1baJcvh6f101x7SFJeUaCYvOUHu4hRigos623vttddYsGAB99xzD5deeikbN2487Zmenh7eeecdvvKVr3DPPffgdrvZtWsXAAkJCdxwww184xvf4I477qCxsZE9e/bE7I0IIS6crsbYVagbWtx0JEFpyWWa4g629jEzy0acSX5pPV+SMhIwxxsj/956lFxyLQPx4G/s1hw7O9fB0U43Q76A7nkIIS6OqD6p3W43LS0tzJs3D4DZs2fjcrlwOp0jnjt48CBlZWXY7XYURWHhwoXs27cPgJycHFJTQ2e0zGYz2dnZ9Pb2xvCtCCEulHDlst4VzqDbhcMZpCXLQHpCetRxXe5h2vuGpcPQeaYYFNLzbXQ1uXX3My9Onk5DBlg7fKhBbUVIc3IdBIIqR9r1V8wLIS6OqLbU+/r6sNvtGI1GABRFISkpCZfLRVpaWuQ5l8tFcnJy5Ovk5GRcrtMrEvv7+zl48CB/8zd/M+rrbdmyha1bt0a+lm13IcaXrmY38Ykm7KkWXeMM7ngrVEiSqy1xlfObF056gZ3WYy76nUM40sd+36nJYKIvx0J80xDeQzuIn7Mk6thThUMu5uZLkZgQE5G+8tIxGBoa4oUXXuDSSy8lLy9v1GeWL1/O8uXLI18/8cQTF2p6QohzUFUVZ5Ob9AK77vsvW7aHCkjMJdM0xUUq1PMk+Tjf0gtCvwx0NvbrSjgBlOJs2FFHx5bXKNCScOZK4ZAQE11US4cOh4P+/n4CgdD5GVVVcblcJCWN/LBPSkoasU3e29s74pnh4WF+85vfUFZWNiKhFEJMHP3OIbxDgZic3+yuCRWQpF9yqaa48BU55dn6L50XZxcuHOpq1L+dnTxvIQDte3ZqistLTsBhMUnhkBATWFQJp81mIycnh7179wKhs5oOh2PEdjrArFmzqK2tpb+/H1VV2blzJxUVoc4h4WSzpKSET3/60zF+G0KIC6UzXDBUoD/Z8zd147ZASdU1muIOtLgoSkvEbjHrnoM4u9RcKwajEvl316N42fX4jDB0olVTnKIozMlN4mBrH8GgvrOkQoiLI+ot9dWrV7Nx40Y2bdpEfHw8a9euBeCVV16hrKyM8vJyUlNTWbFiBU8//TQARUVFLFwY+o12+/btNDc34/V6OXQotKoxZ84cLr/88hi/JSHE+dTZEEo8Mgr1rXCqfj/WDj/HswzMT54edZxn2M+JLg/XVGTren0RHaPJQGqula4G/QnnzKy5vJ0BOa1e1GAQRcP5/Io8B1uPOzne5ZGrsISYgKJOONPT01m/fv1pf75mzZoRXy9YsIAFCxac9tzll18uyaUQk0BngxuDSSElR19Ly+E97xPvVXDlWTAZoj9OXtPWh6pKh6ELKb3ATs2WVgb6vCQ64sY8jsVkwZkTx4w2L/4TBzDPmBt1bMXJ87r7m12ScAoxAUn5txBCk67GftLzbBiN+j4+Ora8DoBhxujFg2eyryl080WFFAxdMBknC4dicR9noCh0/VX3B69pipt78t97X7O2XuxCiPFBEk4hRNQ8rmEG+rwxOb/Zvnc3AKlV0VcrA+xrDhWOzJWE84JJj3Qc0p9wOipC9zm3fLT1HE+OVJRmxRZvkoRTiAlKEk4hRNROnd/Un3D66jsZjIMZi9ec++GP2d/sIi85gVTr2Ld2hTbp+TZQYlOpXrjsevwGGDzepCnOYFCYk+vgYIsUDgkxEUnCKYSIWiTh1LnCqQaDJLb7qM+EkvSyqOMGvQGOdPRTkScXvl9IcRYTSRkJMVnhLM9fQFM6mFuHNMfOzUvCPeznhNOjex5CiAtLEk4hRNS6Gt0oBoW0PH0FQ779W4kfVujJjSfOGP1K5cFWF0FVttMvhowCO66OQbxDfl3jOOIctGebsPWDv+mIpthwl6H9sq0uxIQjCacQImqdDf2kZCdiijPqGqfjgz+E/qM4R1NcuGBobn6yrtcX2oU7DnU16d9W9xemAtD3wR81xYULxcI/B0KIiUMSTiFEVIbcPvq7h2JyfrNj3y4AUqoWaoqTgqGL51THIf3b6tY5swFo2fW+prhiKRwSYsKShFMIEZXw+T295zcBhk+0MWyC4sXXa4qTgqGL51Sluv4VzrylqwgC7qP1muIMBoXZuQ4OSOGQEBOOJJxCiKhEEk69HYaCQSytXuqyoDRzTtRxUjB0cSU64rAmxcVkhbN82hJa0sDYMqA5Nlw4VCeFQ0JMKJJwCiGiEm5tmJ6vb4XTV7MDy7CCMyeORHNi1HEHW/ukYOgiSy+0093iIeAP6honIyGD5mwjNhcE2rWtcsoF8EJMTJJwCiGi0tnoJikzgbiE6NtQjqbnZKFIsChTU1y4Mlk6DF08GQV2ggGV7hZ9q4uKojBcEFqpdm/+X02xH29xKYSYOCThFEKck3fIT2/7QEzOb7bt2QFAUuV8TXF7wxXqknBeNOFK9Vjcx2kpD92/2rrrL5ripqdbscYZZYVTiAlGEk4hxDmFr8KJRYX6wIkWvEYoWnydprhwwVCaLV73HMTYRCrVG/QnnNlLrgDAdfiYprhQx6EkDjRL4ZAQE4kknEKIc4plh6H4Vi/1mVCWXRl1nBQMjQ/2NAvxVhMdMUg4Z5dcRmsKKM3aq94r8pLoH/ZT36296EgIcXFIwimEOKdIwZDOCnX/0WoSBqEjx0xSfPRb41IwND4oikLmNAddTW4CAX2FQ/m2fJqyDdi6gwR7OjTFzs0P/eIh2+pCTByScAohzqmzsR9bSjwJNn33X7pOFogEitI0xUnB0PiRWWgn4AvS06q/cGgo34GCgkdjx6G5UjgkxIQjCacQ4qz8vgDdrQORi7/1aP1oKwC2OfM0xYVXsmSF8+LLnBZaXeyo17+tnlA+E4Dm7W9piitOt5EYZ5QWl0JMIJJwCiHOqqvRjRpUyZymP+H0HG/CZ4Sipas1xe1vdpGbZJGCoXEgsyj0c9BR16d7rNzlqwDorTmiKc5oUJiT62B/i0sKh4SYICThFEKcVUd9KLHILNJXsKMGg8S1DNOQAXPyou+hPugNcLi9n7n5sro5HliT40lwxMVkhXP2zE/TkgrGJu2FQ3Pzkukfko5DQkwUknAKIc4qnFjoXeH01+4iYQBac80kW5KjjjvQ4iKowrz86GPE+RMqHLLjbHYT8OkrHMq2ZtOYY8DWC4HWOk2xVYXJAOxp6tU1ByHEhSEJpxDirDrq+rCnWXQXDPVseg2A4HRtHYaqG3sBqCpI1vX6InYyC0Mdh5wt2lcmP05RFIaKUgBwv/+Kptiqk7+A7GmUc5xCTASScAohzsg75KenfSBSKKJH665QwVDy/Oi30wH2hDsMyZb6uBHLwqHEOXMAaN7xnqa4gtQEUhLNkV9IhBDjmyScQogz6mzoB/VUoYgegyfaGYyD6UvWaIqrbuxhRoYVh8Wsew4iNjJOHq8In+/Vo2D5dfgN0H+4XlOcoihUFiRzsKUPr1/f1r4Q4vyThFMIcUYddaEVrCydK5yqz0tCq5fj2Qqzs6K/EsnpHqaxe5CqghRdry9iy5oUjzU5PiYrnHMKl9CYAebmQc2xlfnJeANBatr0J75CiPNLEk4hxBl11PeBor+HuvejvxDnU+jKi8NqtkYdt/fkdnpVgWynjzeZ0+x0t3jwewP6xknMpDnHRIIHfEf3aIoNn+vdI9vqQox7knAKIc6oo76PlKxE4hJMusbp2hTqJKOU5GmKC5/Pq5SCoXEnc5odNajSNYYrjT7JVxzqPNX//h80xc07ea63WgqHhBj3JOEUQoxqyO2jr2soJgVDHXt3A5C68FJNcXuaeokzGSjP1j8HEVsZMSwcsldWAdC6a7OmuDRbPAWpCXI1khATgCScQohRhQtCMmLQYchb76Q3EUqrrok6RlVV9jT2MifXQZxJPqrGm8wYFg4VLVnNsAk8x5o1x1bmJ3Os003fkE/3PIQQ5498igshRhVeucrS2WEoONCPtSPA8RyF8vTZUcc1dA/QM+CjUi58H5cSbHHY0yyx6TiUXcWJbIhvHUYNaqs4rypIRlWRvupCjHOScAohRtVR34fBoJCeb9M1ztDm1zEGFXoLEog3Rt8LXS58H/8yp9npafPgHfLrGictIY22XDNxwwq+vR9oig2f75X7OIUY3yThFEKMqqOuj9Q8K6Y4o65xOre+CYCxrFhTXLiDjBQMjV+Z0xygQlej/lXOwPQsAFwfvK4priI3CaNBkUp1IcY5STiFEKfx9A7jcXnJ1HkdEkDXwYMAZC1eqSluT1MvSQlmitISdc9BnB/h873tdfoTzuRLlgDQ+tEOTXEJcUbKsuxSOCTEOCcJpxDiNOFCkEyd5zcBgg0u2pJh1qwVUcf4AkH2N7uoLEhGURTdcxDnR9Y0ByjQfkL/+cnShdfhtsBQXbvm2MqCZNr7hmlzDemehxDi/JCEUwhxmnAhiN4rkQKdzVi7g9TlKMxInhF1XG1bP8P+IFXSP31ci0swkZpjpf2E/kr1ORlzOZ6tkNDmRx0a0BQbbgwg5ziFGL8k4RRCnKb9hAuj2UBqXvRdgUYzsOk1FBT6C+2YDdH3Qo8UDBUm63p9cf5lFTtw9wzj6R3WNY7VbMVZYMEUUBja9r+aYsPnfGVbXYjxSxJOIcQIalCl/UQfmdPsGI36PiJat74NQOLsWZriwgnnPLkSadzLLg6tLsZildNYHiosa9+krXBoZqadxDgj1Q29uucghDg/JOEUQozQ0zaAdyhAVrH+7WxXzTH8Bii87HpNcbsbeihITSDdFv01SuLiyCoOHbtoi8E5zuxLrwSga99+TXFGg8K8/CT2NPXiD2i7x1MIcWFIwimEGCGcOGQX6zu/qQaDmJoGqcuCedOWRx3X4/FyvNPDgsIUXa8vLoyUHCvmeGNsznGWraQlFZQxdC9aMC2FAW+Amjb9FfNCiNiThFMIMUI4cdC7wunb+wGWQYXGfBNZiVlRx33U2AOEEggx/hkMCplFDjrq+wjqXF2cnjyd43kGEl3gbzisKTb887K7oUfXHIQQ54cknEKIEdpPuLClxGNL0bed3fPeqwAES3I0XW20qz6UMFwiCeeEkV3swO8N4mzx6BrHoBgYLA79u/e/8z+aYucXnEw46yXhFGI8koRTCBHhHfTjbPHE5Pxm28kLvFOXfEpT3K76HhJPXuYtJobwOc5YbKvb5s8HoO3D9zXFpVjjmJ5hZZescAoxLknCKYSIaK/vAxWyp+u/8N17vItuG5RXroo6xh8IsqfRRVVBMiadFfLiwsmKVKrrLxyavmQNA3HgPtKsOXZBYQqN3YN09MkF8EKMN/KJLoSIaD8em/Obge42ErsCHM1TmJUxJ+q4mrZ+Bn0BOb85wSQ64rCnWWKywjk3Zz5HcxUsrV7NF8DLOU4hxi9JOIUQEe0nXBiMChkFNl3jDL63EYOq0FtoI8GUEHWcnN+cuLKLHfS0DTA84NM1TlpCGu15cZj8CkPb3tAUG044d8k5TiHGHUk4hRAAqKpK24k+0vNtmOKMusZq3/pnAOIryjXFRRLOAkk4J5rItnqd/lVOygoB6PlAW8ehGRk2HBYTu+UCeCHGHUk4hRAA9HUNMuT2kTVdf8FQz6Gj+A1QcOl1muJ21fdQkmkjKTH6NphifIhl4VDm8pUAdOzdqynOYFCYX5jCviYXw/6A7nkIIWJHEk4hBABtJ89v6i0YCl/4fiIL5hUuizquvW+I5t5BufB9gsoosGMwKTFJOGeXraAlFYL12ouQFkxLwRsIsr85BiutQoiYkYRTCAFA+/FwhyF9K5ze6k3EDyk05JvIt+dHHbc7cn4zWdfri4vDaDaQUWCn7YQLNajqGqs8tZyjeQoJei6Al3OcQowrknAKIQBoO9FHgt2MPc2ia5y+918DwF+SNaYL36VCfeLKnpHEsMdPT7u26vJPijPG4SlOBsDzzgZNsZUFyRgUqVQXYryRhFMIgW84gLPJTVZxkqYkcTRtu09e+L5I44XvDT0kJZiZnq6vQl5cPDkzQqvjrUd7dY9lr7oEgJYP/6IpzhZvoizbwc76HlRV30qrECJ2JOEUQtBe10cwqJJTor9gaPh4J047zJ4f/YXvQ74AB5r7mF+YjMGgL+EVF0/OjGQA2o7pvwC+dNk6BuLBXdukOXbBtGQ6+4dp6hnUPQ8hRGxIwimEiKxI5ZYk6xon0FqHtUulNl+hImNe1HF7GnvxBoIslO30CS3REUdSZgItMUg4q3IXUpOnkNDqI+jWNl74WMbO+m7d8xBCxIYknEIIWo/2Roo+9PC89TsA+mYkYTFFfxZ0R10oMVgyPU3X64uLL2dGEn2dg3hcw7rGSYpPoqMoAWNQYehdbec4FxeHfo4+PCHnOIUYLyThFGKKCwaCtB3vI6vIgdGs7yOhZcu7AFgvuURT3PYT3cSZDMzL17+lLy6unJOr5LHYVjfPLQOg/f3XNcXlJSeQl5zAhyecuucghIgNSTiFmOKczR58w4GYnN/0HG7EbYGZy9ZFHeMPBNld30NVQTLxJn0djsTFd6pwSH/COe3yNXiN0H3giObYJcWpHOv00OXWt9IqhIgNSTiFmOJaTp7fzNF5fjPocmJp81Obr1CVsyDquIOtfXi8AZYUp+p6fTE+JGclYrGaaT3Wq3usqsLlHM0Fc+MQqs+rKXbRyZ+nHSfkHKcQ44EknEJMca1HXaBAts6WloPvbsAQVGiflkCKJfrinw9PJgSLJeGcFBRFIXtGEp2NbnzD+tpL5tvyaSgwY/YpDG3+o6bY8M/Tdkk4hRgXJOEUYgpTVZXWY72k5dmITzDpGqtj0xsAxFXO0hS3/UQ3RoPCJdLSctLIKUlCDaq01+lrL6koCuqsaQD0vPcHTbHT062k2+Iiv9AIIS4uSTiFmML6uoYYcHnJnaH//GbPgSMMm2DapddHHRMMquyo66Yi14E1Xl/CK8aP8H2csbgAPvtTVxEEOvfs1RSnKAqLi1M51NaHa9Cnex5CCH0k4RRiCgufs9N7flMdHsLcPMyRXIX5hcuijjva6aZ3wCfb6ZNMZqEdo8lAawwq1StnrqA+C9S6ftRgUFPs4qJUVBV2yX2cQlx0knAKMYWFK4n1VqgPffAqJp9CQ6GJfFt+1HHh83WLiiThnEyMZgOZRXbajrsIBvW1lyxLLeNIvpH4QQVv9SZNsXIfpxDjhyScQkxhrUd7sadasKVEf0n7aLrfC92TqMwu0tSL/UNJOCetnBnJ+IYCOJvcusYxGUwMl2YA4H5no6bYsmw7DotJ7uMUYhyQhFOIKWrQ7aWnbSAm92927t1PQIGcT0XfP11VVXac6KYsy06KNU73HMT4kluaDEDLkV7dY6UtWwFA664PNcUZDQqLilLZ2+Ri0KuvYl4IoY8knEJMUeFEQPf5Tb8fpd7NiSyomvHpqOMauwdp6xuS85uTVM6MJBSDQvNh/dvZlfNW0ZoCvmPaz2IuLk7FH1T5qEG21YW4mCThFGKKaj7cC0B+mb7riIa3v0HckMLRaSbKUsuijtt2PLTNKQnn5BRnMZE5zU7LkV5Unec452bMpabQgKUPfDW7NMWGf762yfVIQlxUknAKMUU11/ZgTYojKTNB1zg9b20AIDi7EIMS/UfKlmNdACydnqbr9cX4lVeazPCAn65mfec4443xeMpC5zj7/vRbTbEVeUkkxhkjv+AIIS4OSTiFmIIG+710t3jILU3RVOQzmvbd1aHzm5+5NuoYVVXZcsxJWZadDHu8rtcX41duaWj1vOXkaroeqZ86eY5z2xZNcWajgcXFqXzU0MOA1697HkKIsZGEU4gpKFbb6arPi6HOw7EcWDBzZdRxxzo9dPQPs2yGrG5OZrE9x3ktTWngP9qt+T7OS2ek4wuo7KyTc5xCXCyScAoxBbWcTADClcRjNbTpVcxehSNFJmamzIw6buvJ7fTlknBOarE8xzkvYx410wzEu8G3b7Om2PAvNptP/twJIS48STiFmIKaDvdiS4knKUPn+c0/vwqAWlGk8fymE4MCS+T85qQXOcep8z7O/7+9+w6PszoTv/99pqvOqPcuy7Ysy03uDRvTbAymJBASs7BAKAkkhLRN9rch2U02jU0CbxotQCCEEmzjUEyMwR3jXmXZslzUu0ZlNPV53j9kCwzYnpnHQpZ8f65rLmvKfc6RRzNzz6kWowXXqBQAOt9+JaTY4rRY4iLNbKqUeZxCDBZJOIW4yLg6vbTX95Be5NA9f7Np1158RsiYG9r56ZurWhmbYcceYdZVv7jwnZrHeT6G1RNmXQZAw9bQ9uM0GBSmFySwr86J0yXnqgsxGCThFOIic+qDP6NI5/xNtwvjiV4Op0NZfvD7bx6o76TD5WN6QaKu+sXQ8NE8zg7dZU0YcznHkiFQ1RHyPM7pBYloGmyW1epCDApJOIW4yJxaMaw34exduxyTT6Ey10yhozDouM1H+j7wZf7mxeHUPM76yg7d56qPTRzLwRwDFpeCd9u7IcXOPPn3tknmcQoxKCThFOIiU3uoneg4K7GJ+s5PPzV/UxlbEPL+m2ajQlmuvoRXDB0ZRXF4XH7d56pbjBZ6R6cB0PnOP0KKzUuMIs1uY9MR6eEUYjBIwinERaTH6aG9wUXGSP37bzbvOYjHBFlzFgcd4wuofHi0jQlZcURaTLrqF0NHxsndEGoq9M/jTJ59OaoCDdtDO3FIUfrmcVY2ddPY6dbdDiFEaCThFOIiUnPw/MzfVLudmKrdVGQqTMkNfv7mnhonPd6A7L95kUkb4cBgUqgp13+85ORRV1CVClpVF5o/tI3cZ56cN7xZejmF+NxJwinEReTUB37WaH3nl/e+/TeMAYWqfAv59vyg49YfbgZgZqEsGLqYmC1G0goc1B3uwO8L6CprTMIYKnJNmD0K7g0rQoqdUXhyP85KmccpxOdNEk4hLhKapnGivI24tCii4/QdJ9n47koALJNLQxqaX3eomWiriQnZDl31i6Ena3Qcfp9K/RGnrnJMBhPquL4vOa1vvhpSbJo9gvykKDZUtqBp+hYwCSFCIwmnEBeJtvoeXE4vWaP1L9Zx7j1ORySMmnVj8DEuH7uqO5hZmIDZKG89F5tTvernY1g9d971uM3QsnN/yLFzRiRR73RT2aRvAZMQIjTyri/ERaKmvG/+pt7hdN/R/dhaVPbkKUzLnBl03MYjLagazClK0lW/GJqSsmKwRZmpLte/cGha3jz2ZyuYa70EWupCip07su/vb+2hZt3tEEIETxJOIS4SJw60YTAquhcMdb/+HADNIx0kRAS/+GdtRd8H/JwRknBejBSDQuaoOJqru+jt9uoqKysmi+MjbBhUBdebz4cUOy0vAYvJIAmnEJ8zSTiFuAgEfCp1h9tJzbdjthp1ldWwcT0Ajjnzgo7RNI11h5vJT4wiKz5SV/1i6Moqjgfto90SwqUoCtapkwFofG9VSLERFiNT8+LZUtWGyxvaKnchRPgk4RTiIlBf5cTvVfs+8HXQ/H58h9s4lgyTSq8OOq6yqZt6p1uG0y9yp6ZzVJ+HeZyl066jyQ7dB0IbUgeYW5SEN6CypUp/O4QQwQl65+XW1laWLVuGy+XCZrOxZMkSkpOTP/W4HTt2sGHDBjRNIy8vj0WLFmE0Gmlvb2f58uU0NDTgcDi49957z+svIoQ4s+rztB2Se8NKzL0K+0sN3J8yMei4U8OXcyXhvKjFxNtwpERSXd6Gpmm6Dh+Ymj6d5/IUFuzS8O7ZiKU0+PnEc4uS+J83yll7qJl5oz79OSaEOP+C7uFcuXIlkyZN4oEHHmDmzJksX778U49pb29nzZo13H777TzwwAN0d3ez/eRpEFarlfnz53PDDTect8YLIYJTU96GNdJEUnaMrnKcq/qOE3SXZmM1Br+10tpDzViMBqbm60t4xdCXNSqO7jYPHY0uXeXYrXbaRvft59r1zxdCii1MjibdbmOdzOMU4nMTVMLZ3d1NXV0dpaWlABQXF+N0OmltPf20hgMHDjBy5EhiYmJQFIWysjL27t0LQGRkJDk5OZjN5vP8Kwghzsbd7aPpRBeZo+IxGPQdZ9m0fW/fcZZzrwm+fl+AD4+2MTlPjrMU9E/rOB/D6klzLyegQMMHW0OKUxSFuSOTqGrp4USrvsRXCBGcoN79Ozs7iYmJwWjsW2ygKAp2ux2n00lCwkerVJ1OJw6Ho/+6w+HA6Qx9k99NmzaxefPm/usGg0w1FSJcx/e3ggbZY/T1LgZa6jDWeNiXa2B6waVBx31Q1YrHr8pwugAgY2QcBqPC8X2tlM7L0lXW1NFXcTjjBQqPdqG5XSi24BekzRmRxIsfVrP2cDNLE3J0tUMIcW4XZHfDjBkzmDFjRv/1J554YhBbI8TQdnxf30hETom+88t7VjyNQVWoLLLxJceIoOPWHGwC4JKRMldOgMVmIn2Eg9qKDnyegK5dE8YljeOdfDOjany43n6BqCV3BR07ozARo0FhbUUzS6dJwinEQAuq6zA2Npauri4Cgb4zcDVNw+l0YrfbT3uc3W6no6Oj/3pHR8enHiOE+PyoAZUT+1tJyo4hyq7vOMuGd/u2n4maNSPoxR6apvFueRNZ8RGMSI7WVb8YPnLHJhLwq9RU6NseyWQwoUwdA0DTW8tCirVHmJmY7WBjZQtunee7CyHOLaiEMzo6mrS0NPbs2QP0zdWMjY09bTgdYPTo0VRUVNDV1YWmaWzbto2SkpLz32ohRFAajnbicfl1925qfj/u8mZOJEHZ1C8EHXewoYvajl4uHZWia0WyGF5O/T0e39uiu6wxc79Eawx07j4WcuyC0Sn0+gJsrmo994OFELoEPTly8eLFbN++nUcffZQNGzawZMkSAFasWMHBgwcBiI+PZ968eTz99NM8+uijREVFUVZWBoDX6+WRRx7hlVdeobm5mUceeYTVq1ef/99ICNHv+N7zM5zufu9VzL0KuwsNTEmbEnTcqeH0BaNTdNUvhhdHSiT2pAiO72tF0zRdZc3KnM2OQgVLh4Znx9qQYhcU9/1drj7QqKsNQohzC3oOZ2JiInfeeeenbr/22mtPuz5p0iQmTZr0qcdZLBYeeuihMJoohAjX8X0t2KLNJOfG6iqn7Y2XAXBPyCfCFBF03OryRqKtJqbkyXZI4nQ5YxPYs6aGtroeEjLCn24RZ4ujrSQFdjbgXP4MyRPnBh1bkBRNfmIUq8sb+Z8lJdILL8QAkuXfQgxTXW1uWmt7yBmToHs7pJbtFXTZYMT8LwYf0+1hV3UHc4oSsZjkrUacLrekbw/NY+dhWD1jwbV4TND4wY6QYy8dnUxjp4d9tZ262yGEODP5FBBimOpfnT5W33C679AuLM0qOwsU5uTODzpuzcEmNA0uHSXD6eLT0kc4MFmN/X+neswqvIK9uQqGag+BxuMhxZ6a7rG6XIbVhRhIknAKMUwd39eKYlDI1nl+eteypwGoKbaTEZ0RdNy75Y0YFOToQPGZjGYDWaPiaDjixN3j01XWqPhRHBppw6ApdL/2VEixk3LicESaJeEUYoBJwinEMOT3Bqg52EZagR1rpL7TvRo2bCKgQNIlVwQd4/YFWH+4hYnZccRHWXTVL4av3LGJaBqc2K+vl1NRFKJmzwKg8b13Q4o1GQ3MH5nM/rpO6jp6dbVDCHFmknAKMQydONCG36uSW5qoqxy1vQm1qpvybIVZJcEfZ7m5qhWXN8D80dK7Kc4sZ2wCKFC1S/88zmmTrudIKngqWtE87pBiT61Wf1d6OYUYMJJwCjEMHd3VDED+eH3HSXa/+ieMAYV9oyyMSxoXdNzbexsAuHJMqq76xfAWZbeSmmfnxP5W/Do3X5+ePp3dI0yYPAquN54NKXZOURIWo4F/lTfpaoMQ4swk4RRimFEDKkf3tpCQGY09KfgtjD5L/TtvARA5bzZGQ3BHEPoDKu8caGBkSgz5SXK6kDi7/PFJ+DwBasr1nTpkNVpRZ/QdNNK08pWQYqOtJqYXJLD5SAvOXn3zSYUQn00STiGGmbrDHXh6/Lp7N9VuJ76D7RxKhxllwW+HtOVoG+0uH1eNld5NcW75E/qmfRw52Suvx6Q5X6YuHrp216D5/SHFLhybii+gySbwQgwQSTiFGGZOzYfTm3D2rHgKo09h5ygTU9OmBh331r56AK4qSdNVv7g42JMiSciI5tjuFtSAqqus2Vlz2TrSgNml0LvqhZBiLy9OxWhQeHNvva42CCE+myScQgwjmqZxdHczsYk2EjKidJXV9OYKAIyzy7AYg1tprqoaq/Y3kp8YRVGKDKeL4OSPT8Td46O+0qmrnBhLDK6pRQC0rHgppNi4KAszChJYf7iFTrcMqwtxvknCKcQw0nS8i+52D/kTknUd06d53Lj2NXIsGaZMvznouO0n2mnu8nBlSaocEyiClj+hbzeD8zGsXnrJl2iyQ8fOo2hqaD2mC8em4Q2oslpdiAEgCacQw0jVeVqd7nrjWUwehW0jjczOmB103FsnV6fLcLoIRUJGFLGJNo7uakbTNF1lXZIzny0jFcxd4H7v1ZBiLy9OOTms3qCrDUKIT5OEU4hhQtM0qnY2ExlrITUvVldZLSv7Pqh900cTaY4Muv5V+xvIjIugJENf/eLioigK+eOT6G730HS8S1dZiRGJtE/KBqDttdDmcSZEW5mWH8/aQ810ybC6EOeVJJxCDBMt1d10NLoomJSMYtA3nO7cVU1NAkye/ZWg43ac6KC2o5eFY9NkOF2ErGBi37B65Tb9w9kl82+hLRpatx0KeVj9qpI0vH6VNQdlT04hzidJOIUYJg6f/KAeUZaiq5yeFU9i7lX4YIyReTmXBh23YlctANeMS9dVv7g4peTFEpNgo3J7E5qqb1j98oKr2DJKwewE97plIcVeMSYVgwJv7JHV6kKcT5JwCjEMaJrG4W2NRMdbdQ+nNy17GYDAnAlEW4Jbae4LqLyxp56CpCjGpMtwugidoiiMKEuhu91D/RF9q9WTIpNom5YPQMuLT4UWG2NlekEC71c043TJsLoQ54sknEIMA41HO+lu8zBiUoqu4XS1qx3XviYqU2HGrKVBx22sbKG1x8uS8RkynC7CNmJyX+/84fMwrD5+wa00OKBj61E0nzek2CXjM/AGVN7cJ72cQpwvknAKMQwc3npyOH2yvuH07pd/j9GnsHWMidmZwa9Of31XHQDXjJfhdBG+hIwo4lIjObKjSfcm8JflXcGmMQZMLnCtfDqk2CtLUrGaDCzbWaurDUKIj0jCKcQQp6oaldubsCdHkJilb7P1xn+uRAVMl84gwhTcOey93gCr9jcwPstBToK+zebFxU1RFEZMTqG3y0dNhb6z1e1WO65ZJ89W/8eLIcXG2MxcVpzCh0fbqGl36WqHEKKPJJxCDHF1hztwdXoZUZaiazg70FyL95CTA9kKcyffEnTc6vJGerwBrpXeTXEenFr0dqrXXo/pc5dSlQo9extRu0ObF3rdhAwAVpzsvRdC6CMJpxBD3KEP+zap1rs6vfP532IIKOwoMTMjfUbQcSt21WJQ4OpSSTiFfo6USJKyY6ja2YzfF9BV1vys+XwwxojRq9D90mMhxc4pSiIu0syynbW6N6MXQkjCKcSQ5vMEqNzeRHJODPHp+oaz6998B68RHFdcidloDiqmqcvNexXNzB6RRFKMVVf9QpxSNCUFrzvA0d0tusqJNEdimDcNFWhY+XpIsWajgcXj0qls6mZ/XaeudgghJOEUYkir2tWMzx1g1HR9R0l692xEqfaytUhh4cTgN3tfvrOWgKrxxbIsXfUL8XFFU1JRDAoHN+tfJX759NvZl6vgO9SJv+ZwSLFLTg6rv7ZDFg8JoZcknEIMYQc312MwKrqH09ue/r++8ibHU5JYElSMpmm8tLWauEgzC4qTddUvxMdFxlrIKUmg+kAb3e0eXWVNS5vGjgmRGFSFjid/EVLshCwH+UlRLNtZg8evb3hfiIudJJxCDFFdbW5qKtrJK03EFh3cEPhn0XxemjccoCUGihfeGvTCox0nOjjS3MOSCRlYTcaw6xfis4yekYamQcUWfb2cRoORzKu/QLcNGv61OaSjLhVF4ebJWbS7fPzrgP5FTEJczCThFGKIqvigATR0D6f3rHgCUzesG2vg6qIlQce9sq0agC9MkuF0cf7ljE0gIsbMwc0NuhftLC65iQ3FCsZWFfe7L4cUe/3ETMxGhb9/WK2rDUJc7CThFGII0jSNg5vriYi1kDUmXldZTS/9DYDOuSUkRwY3NO7y+lm5u46xGXaK5ShLMQCMRgNFU1LpaHTRUKVv0U6uPZfaWbkANP/18ZBiE6OtXFacwobKFqrbZE9OIcIlCacQQ1B9ZQfO5l6KpqRgNIb/Mg40Hqf3QCsHsmDenNuDjntjTz093gBfLMsMu24hzuVU7/3BTfr3wpy+4A6qUqBzZx1qR2ir32+enA3AS1ull1OIcEnCKcQQtG9d3wfwmFn69r5s/+N/YwgofDDBxvzs+UHHPf/BcWxmA9eMz9BVvxBnk5gZTVJ2DIe3NeF1+3WVdUXuFWwYZ8LoU+h85pchxc4qTCTDEcEr26vx6zxyU4iLlSScQgwxrk4vR3Y0kTHSQVxq+Htvan4/DW9tpDMCMq75IhajJai43dUd7K5xct2EDOwR4S9WEiIYJXMy8HkCHNrSoKucaEs00QuvwGOCuhVvhRRrMCh8sSyLxk4P71U062qHEBcrSTiFGGLKN9WhBjRK5ugbzu557U8YnbBmnMIN44Lfe/O5zccBWDotV1f9QgRjxOQULBEm9q7Vf+LPDVPuZMMYBaXeT2+Ii4dunpKFyaDw7KZjutogxMVKEk4hhhBV1di/vo6IWAt54xJ1ldXwwnOoQPuCUrJigltp3tbjZeWeOspy4mSxkPhcmK1GRk1Ppa2uh/rK0M5D/6RR8aOompsDQONTvw8pNiXWxlVj09hQ2cLhxi5d7RDiYiQJpxBDSPWBNrpa3RTPTMNoCv/l6zu4He+hTnYWKlw15+6g417eVo3Xr7J0ek7YdQsRqpI5fXOF962t0V3WvCvuozwTenY3hnzy0G0z+v7un5FeTiFCJgmnEEPIvrU1KAqMma1vsU7rH3+Goil8OCWGOZlzgooJqBovbDlOYrSVq0r07f0pRCjiUqPIGBnHkZ3N9Dj1nTx0ee7lrJsSgSGg0P77n4QUOzE7jrEZdl7bUYvT5dPVDiEuNpJwCjFEdDS6OLavlZyxicTE28IuR3W20rJ2Pw0OKFl8O0ZDcKcE/etAI9VtvdwyJQuLjt5VIcIxdm4GakDjwAZ9WyRZjVZyFt9MWzQ0/msbmscddKyiKNw2I5deX4CXt8kWSUKEQj41hBgidr9bDRpMuEzfyT4df/gRRrfCqikmvjj65qBiNE3jz+uOYDEZWDo9V1f9QoQjd1wi0XFW9q6txe/Td675TWO/wrsTDBi7oeu50LZIunpcGonRFp7dfIyAqm8RkxAXE0k4hRgC3N0+Dm6uJzknhrRCR9jlaD4v9cvX0GUD+3XX4rAFV9a24+3sPNHBDRMzSIqxhl2/EOEyGg2MuzSL3k4vh7boO9c8PTod/6LZeE1Q+/zLIZ2vbjUZuWVqDjXtvby5V98570JcTCThFGII2LeuFr9PZdyCLBRFCbucrucfweDUeGeiwi2T7go67s9rq1AUuHN2fth1C6FX8ax0LBEmdq0+gaazd/GmWffzXqkCjQFcy58IKfa2GbnYzAb+8P4R3Vs1CXGxkIRTiAtcwKey9/0aouOsFEwM7qzzM6n/64v4jNC1cCo5scGtNK9s6mZ1eSMLRqdQkBStq34h9LDYTIyZnU57g4vj+1p1lTUmcQzHrxiNqkDdk6Gdrx4fZeHmydmU13ey9pBsBC9EMCThFOICV/FhA65OL6XzsnSdm+5663nUOh/rShS+MOtrQcc9sa4KgLvnSO+mGHyl87IwGBV2/uuE7rKuu/QbbB6l4K9y4V7/ekixd83Jx2RQ+MP7R3S3Q4iLgSScQlzA1IDK9rePY400UTxb37nptY/9BhU4tCCfSSmTgoqpbnPxjx01lOXEUZYbr6t+Ic6H6DgrRZNTqDvcQUOVvo3gZ2XMYvu8FAAaHv1FSLEZjgiWTMjgw6NtbD/epqsdQlwMJOEU4gJ2eFsTnc29lM7PwhphCruc3lUv4q9ysalY4QtXfS/oeaB/eL8Sv6rxzQVFYdctxPk24YocUGDrG8d0lWNQDCxc9C125yq49rXi2bE2pPh75uajKPD796SXU4hzkYRTiAuUqmpse/MYFpuR0nn6zk2v/d2vUYHdV+YwK2NWUDHVbS5e2VbD5Nw4ZhYm6KpfiPMpPi2KEWUpnNjfSsNRfb2cV+VdxfoFCSiaQv3PfxhSbGFyDAtL0lhzsIkdJ9p1tUOI4U4STiEuUEe2N9HR6GLsvExsUeawy+ld/TK+KhebRyvccOV3g+7d/P17fb2bDy4o0rUyXoiBULYwt6+X85/HdJVjMpi48rrvsjNfwbWnBc+WVSHFP3hZEQYFHnmnQlc7hBjuJOEU4gKkqhrb3jqGyWpk/KXZusqq+80vUYHtl2dySdYlQcVUt7l4dXsNU3LjmV4gvZviwnP+ezkTUVCo+8XDIcUWJkdz3YRMNla2sulIi652CDGcScIpxAXo0JYG2up6KJ2XiS06/N7NnhVP4j3Sw+bRCjcuCn7u5q9WVfT1bl4mvZviwtXfy7nyqK5yTAYTC6/9DtsKFdwHOkJesf7NBSMwGxV+vapC9uUU4gwk4RTiAuP3BdjyehXWKBMTLw+/d1Pz+6n5v9/hN8CuawqZnzU/qLg9NR28vruOeSOTpHdTXNDi06IompzCiQNtVB/Ut1L8qryr2HBF34r1mp//JKTYrPhIbpqcxY4THaw52KSrHUIMV5JwCnGB2fteLd3tHsquysUaGX7vZtdT/4Pa6GfVRIXbF/4oqJ5KTdP46RvlGBT4j4Wjw65biM/L1GvyMZgUNv2jUtfpQyaDiZuv/S/Wj1HwHemh+6XHQoq/f/4IIsxGfvpmOb5A8EdlCnGxkIRTiAuIu8fH9rePERNvY+zc8Femq64uap56CZcVGq+fFvS+m++WN7HlaBtfLMuiKCUm7PqF+LzEJkYwbl4WLdXdHPqwQVdZl2Rdwt4lo/GaoPrRP6F53EHHpsTauO+SAqqae/jr5uO62iHEcCQJpxAXkG1vHcPj8jP1mjyM5vBfnm0//wZKJyyfbuDueT8IKsbrV/nZW+VEmI186zLZd1MMHZOuysEaZeKDFVX4vYGwy1EUhbuv+jErpyjQqtLx2++GFH/XnHwyHBH8dvUh2nq8YbdDiOFIEk4hLhBtdT3sXVNDck4MRVNSwy7Hd2Qvjcs20egA201LKIwrDCruyQ1VVDX3cO8lBSTH2sKuX4jPmzXSzOSFeXS3e3QfeVmSWILrCwtoj4K6F98h0FwbdKzNbOT7V42i0+3nt6sP6WqHEMONJJxCXAA0TWPdSxWomsacm0eiGMJfGV73/Xsx+BReviKCr88Iroempt3Fo+8eJi8xirvnypnpYugpmZtBXGok298+jrO5V1dZ98/+D/5xiRmDW6Hh+3eEFHt1aRplOXE8/8Fx9tXq265JiOFEEk4hLgCV25uoreigeEYaKXmxYZfT89qfce1tZVuhwvwv/wC71R5U3I9XHsDtU/nJtWOwmoxh1y/EYDGaDMz50kgCPpX1Lx3StT1RWnQaY259gIOZ4Nx4jN7VLwcdqygKP7m2BEVR+P5re/DLAiIhAEk4hRh03l4/G1+txBppYtp1BWGXo7q6OPGr3+E1wcYb8riu8Lqg4lYfaORfBxpZVJrG7BFJYdcvxGDLHBlH0dQUju9r5egufZuwLx37b7x1fToBg8KJh38c0gKi4vRYvjonn321nTyz6ZiudggxXEjCKcQg2/haJT0dHqZfV0BEtCXscpq+dyu0a7w208D9i3+J0XDunsoOl5cfLNtLjM3E/1tUHHbdQlwoZt4wAkuEifUvH8LT6w+7HLPBzFev/wWvT1NQW1Ra/+fekOK/cekIchIieeSdQ1S3ucJuhxDDhSScQgyi6oNtHFhfR+aoOIpnpYddTu+7L9O2upwjqRD377cxJnFMUHEPv76fpi4PP1o8hlS7LBQSQ19krIUZ1xfQ3e5h4yuHdZVVllpG4CvX0OCAxtc249m2JuhYm9nIT5eMpdcX4Puv7UHVsUeoEMOBJJxCDBKv2897fz2IyWpk3ldGhX2EpNrt5Pj/+zEBReH1G1O5t+yBoOLe3tfA8l11XDoqmRsmZoRVtxAXouJZ6WQVx1O+qZ5je/UNrT8464f8/ToHBBSOPfQNNHfwvZWzRiTypSnZbKxs5emN+o7fFGKok4RTiEGy8dVKulrdTF9SQGxiRNjlNH7nK2htKq/OMnDfF3+D1Wg9Z0xTl5v/XL4Xe4SZ/71+rJyXLoYVRVGY95VRWCJMvPfXg7h7fGGXFWOJ4bal/8eK6Qpqo5/mH9wWUvz/u3o0eYlR/PLtCg42dIbdDiGGOkk4hRgEh7c1cmBD31D62Lnh9y52vfB/dLxXSUUGJPz77YxPHn/OmICq8Y0Xd9HS7eVn142VPTfFsBQTb2P2TSNwdXp5//mDulatT0+fjnb7FziWDC1v7cG16m9Bx0ZaTPzmpvEEtL7XndsX/sb0QgxlknAK8TnrbOnl/ecPEhFjZsHtxWHvuek7tIsTv3qcbhu8c2sR9075RlBxj605zOaqVr4yLZtFpWlh1S3EUDByaiqFk5I5srOZve/X6CrrwenfY/nN6fiMCkd/8N/4a4KfHzo+y8E3Lx1BRWMXP1qxX1c7hBiqJOEU4nMU8KmsenI/XneABbcXE2U/9/D3Z9HcLo7ddxsGt8JfFtv44Q1/wGwwnzNuY2ULv3v3MMVpsfynrEoXw9ypoXV7UgQbX62k8Wj4Q9qR5ki+e8vjPHOVGUMPHL/zJjRf8MdX3jevkDlFSby0rZoXP9R3GpIQQ5EknEJ8TjRNY+2LFTQd62TiFdlkFyeEXVbtvdfir/HwRpnC9Xf+iozocw/LH2vp4b4XdhBlMfH7L0/EZpYN3sXwZ4kwceXdfRuxr3piH73d4Z9xXuAoYP49P+Vf4xW8x3pp+s4tQccaDQqP3jyezLgIfrRiP7uqO8JuhxBDkSScQnxO9rxXQ/mmerLHxDP12vA3eG/72dfo2lzDnlwF6/13sCBnwTljnL0+7nh2K11uH4/dMoG8xKiw6xdiqEnMjGHOl4roanPz1p/2EvCFf/rP4oLFdN5zPZWp0Pb2fpx//K+gYx2RFv70lUkoCtz9123UO/UdwSnEUCIJpxCfg+oDbWx8tRJHSiSX3zEGQ5jzNnte/SMNf32X+jjYds8MvjblwXPG+AIq97+4kyPNPfxwUTHzRiaHVbcQQ1nxzHTGXZpFfaWT917Qt4joe7N/xOq7xtIWDTWPvYzrjWeDji3JsPOrL4yjsdPDbU9vpdMd/gp6IYYSSTiFGGBNxzt56897MVuNLLx3LNbIc8+1/Cy9a17l2I9/h8ui8Pd/y+ThRb/DoJz9JayqGt99dQ/rDjVz8+Qs/n1mblh1CzEczLihkNzSRCo+aGDbm8fCLsdsNPOTG5/g2VtT8JgUjv7gf/HsWBt0/DXj0vnelaOoaOzi3ue34/XLeeti+JOEU4gB1NHoYuVju1FVjUVfKyUuNbyhbM+2NVR96z/xawpP3uLgJ0v/SpT57GVpmsbDK/ezbGctlxWn8D9LSmS/TXFRMxgULvv3YhKzovlw5VH2vFcddll2q50f3vYsT9wQieZVqPzqPXgPbAk6/p65+SydlsPGyla+8fed+AKSdIrhTRJOIQZIZ0svr/9uFx6XnyvuKiG90BFWOd49G6m8+2uoXoU/3xjJ9+75G6lRqWeN0TSNX66q4LnNx5lRkMBjX5qAySgvdyEsNhOL7x+PIyWS9S8d5sDGurDLyonN4etff46nrrFCN1Tedhu+QzuCilUUhYevGcPVpWm8ta+Bb/59F35JOsUwJp9AQgyAjiYXyx7ZQVe7m/m3jiKvNDGscjxbV3P4tjvABU9dY+W+rz9Lnj3vrDGqqvHjlQf44/tHGJ/l4PFby2RFuhAfExlr4dpvjicmwcZ7zx+kfFN92GWNSRjDrQ/9hacXmVE64fCtXwk66TQaFH5703gWjk3ljb31PPjybunpFMOWJJxCnGdt9T0se2QHPR0eFtxWzKhp4W2u7t6wksq7vo7qVvjzdTbu+vYLlCSWnDUmoGr8x2t7eWbTMabmxfP8nVOJtprCql+I4Sw6zsa135xATJyNNc+Vs/vd8IfXJyRP4Avffpy/XGlC6dA4dMuX8WxdHVSsyWjgdzdP4MoxqazcXcddz22jx+MPuy1CXKgk4RTiPKo73M5rv96Ou8vH5XeWMHLq2Ye+z6T7pceovO87BHx9w+hf+/bfGZM45uwxHj93PbeNl7ZVM7coiWdunyLJphBnYU+K4PrvTCQuNZINrxzmgxVHwl69Pi1tGrf84K88fq0V1QWH7/x60Edgmo0GHrtlAl+YlMn7Fc186YkPaOn2hNUOIS5UknAKcZ5UfFDPit/uQvVrLLyvlMJJ4W0/1Pqzr3H84d/Ta1B4Ymkc33roFUbGjzxrTE27ixv/uIk1B5u4fmIGj986iQiLDKMLcS7RcTau+/ZEknNi2P7Wcd55cj8+T3jnnY9PHs8933uJP90cjU9VOPqtn9D+u+8FFWs2GvjljaXcP7+QPTVOlvx+I/vrnGG1Q4gLkSScQugU8KtsePUwq58pJzLWwvXfmUROSeinCKnOVo4tnUfTc2todCg8f/8IfvzNf5Jvzz9r3PsVTVz7/23kYEMX371yJI98YRxWkySbQgQrItrCkm9NpGBCEpXbm3jt19vpbA1vU/aR8SP54bdW8JevZtAWqdDwx9epufNKNLfrnLGKovDQ5SP5+fVjaex0c/0fNvHaDn1nwAtxoZCEUwgdOlt7WfbIDnavriY1386N3y8jMTM65HI8H/6L8oVz6N3awK48hfU/vIxf3vYK8bb4M8b4Air/+1Y5t/1lK96Ayp+XTuK+Swpl6yMhwmC2GrnirhKmLM6jpbqbl3+6lSM7msIqKz06nZ/f8zqrfjiH/dnQteE45VdNxbt7fVDxN0/J5uW7pxMXaeFbL+/me6/uoVvmdYohThJOIcKgaRrlm+p5+adbaTzayYTLs1ny0ASi7NbQyvF5afrRHRz+9/vR2lRevsRIxG//mx9d/ShW45nLOlDXyfV/2MSf11YxLsvBmw/M5oox4c0XFUL0UQwKkxflsei+UhSDwtuP72PNc+V43aEne5HmSP772j/h+sVD/HOqAa3ez6Ev30Xrr76Bpp57JfqE7DhW3j+LWYWJvLStmqt+t44Pj7aF82sJcUFQHn744fDP9/qcPPHEE9TUyLCCuDB0tbl5//mDnDjQRmSshXlLR5E7NvRtj9yb3+bID76Dod5PgwNW3pjKvXc8zoi4EWeO8QV4bM1h/ry2ClXT+OqcAr51WREWk3x3FOJ86nF6ePfZcqoPtBEdZ2X2F4vIG58Y1gjCwbaD/PmJu7j+Hy0kdoKWY6Xgp/+HtWz+OWNVVeP5Lcf52ZvlePwqX56azbcvH4kj0hLOryXEgIqNjeWhhx76zPsk4RQiSD5PgJ3vHGfnOyfw+1RGTU9l5o0jsEWFdlSlv+YI1T+6B9fmatAU3p5swH7vnfzb1K9jNnx2WaqqsXJPHb9aVUFNey9j0mP5xQ2llGTYz8evJoT4DJqqsX99LZuXV+Ht9ZNbmsjMGwpxpESGXFavv5cn1v4S0+MvMW+3hmrQiJlfRMbDf8KYmH7O+Krmbr7/j718eKyNuEgz375iJDeVZcmBDuKCIgmnEDoE/CoVHzSwZWUVLqeXuNRIZn1xBNnFoS0MCrQ10PCrh2h9Yztmr8KhdNh6fSG3f+W3FDgKPjNG0zTWH27h1+9UsKfGSazNxAOXjuC2GbnyQSPE56TH6WHjq5Uc3tqIYlAYPTONyQvziI4LbQoNwKH2Qzz93APMee04eY3gs2kkXT2FlO/8BoP97O8pmqbx+u46fvpGOU1dHvITo/jGghFcXZqO0SBzt8Xgk4RTiDD4vQEObKxj5zsn6G73YIs2M+XqPMbMTscQQrLnrzlC7a+/g/O9A5g9Co0OWH2Zncvv+jmzs+Z+5hBdQNVYtb+BP75/hL21TsxGhaXTcrl/fiFxUTKUJsRgqK/sYPPyI9RXOjGaDYyensa4S7NC7vFUNZV3Kt9ky+M/Zv7abhI7wRMJCZdPIP0bP8OYlnvW+G6Pn8fXVfH0hqN0e/yMSI7mrjn5XDMuXU4VE4NKEk4hQtDe0MOBDXUc3NyAu8dHRIyZ8QuyKZmTgSUiuI3UNVWl950XOfLsH2BvKya/Qn0cbJoVw7jbvs2Vo6/7zOHzxk43r2yr5qVt1VS39WI1Gbh5chZ3zs4nKz70YTwhxPmlaRrH97Wy9Z9HaTreBQrklSZSMieDzNHxGELoafSpPpbve5GDT/+W+Rt6ie8Gv0nDOCmVvDseJGLOtWeN73B5eXxdFc9uOkaPN0B8lIVbpmRz0+Qseb8Qg0ISTiHOwdXp5ejuZg5vbaT2UAcAjpRIxl6SSfHMNExBbqLu3bWOEy/+no6Ne4lq6XtpVWTAwZnJTLr1+1xacAUG5fTe0U63j3fLG3ljTz3vVTQTUDUSo63cPDmL22bmkhgd+rCdEGJgaZpGfWUHO/9VzbE9LQBEOayMnJZK0ZQU4tOigl5g5Ff9rD70T7Y//2vGbWiloKHvdleiQsLciWTc/h3MhePOGN/p9vHKthqe3XSME219+31OyY1nyYQMFo5NlQVG4nMjCacQn6BpGu31LqoPtnF0dwt1h9rRNDCYFArGJzFmdgbpRY5zfmBobhfda17l2Duv4t5+hOjmvu1Oum2wpcSIctVMrlj4HQrjCk+r+1iri42VLbxb3siGyhZ8AQ2DArNHJPGlKdlcOjoZs8zRFGJIcDb3cvCDeg5urqe7re9IytikCPLGJZI/LpGUPDvGIHaS0DSNfc17WL/iEVizg8nlAaLdffd1pRiImVBIzrVLiZi9BMX06dGWgKqx7lAzr+2s5Z39DXj8KkaDQllOHPNHJTN/VDKFydGyV68YMJJwioueGlBpq++h8Wgn9Uec1JS30eP0AmA0GcgeE0/BxGRySxOxnmXYXG1vwrluOTUfrKZ772EiT/Ri8fa9eXfZYNdII/6pRYy95l6m5V2C2WjGH1A51NjN3toOth1rZ9ORVmo7+k4xMRkUphckcFVJGpePSZHeTCGGME3VqD3UTtXOZo7uaaG7vS/5NFkMpObbyShykD7CQWJWDBbb2afneAIe1lWu4vCrfyZi+zFKqtT+5NNt1XDnRGAfU0TWJdcQNfsaDJExp8V3uX28va+BVfsb2VjZQq+v77jO5Bgrk3PjKcuNY3JuPCNTY+TLrThvzkvC2drayrJly3C5XNhsNpYsWUJy8qfPit6xYwcbNmxA0zTy8vJYtGgRRqPxnPedjSScIliapuFyemlv6KG9wUV7g4uW6i6aT3Th93202XJcWhRZo+LIGh1PepHjU2/+mtuFe+9GGnavpaViL+4T9ZhruolpVTHQl2D6DVCZDo0F0URNHs+oy/6NpJhSTrR4qGru5khzD/vrnOyv68Tj/6ju/KQoZhYkMrMwken5CdgjQ9tWSQhx4dM0jeYTXRzf10rtoQ4aqpwETr0HKeBIjiQpK5rErBjiUiNxpEQSmxjxmT2hPtXH9urNHHjrKdQP95J8rJe8BjCdLC5g0OiKNxBIjyYiP4vE4okkl87CNmoyii0Sty/AB1WtvHewiS1H26ho7EI7+clvMRoYkRLN6LRYRqfFMjIlhpyESNLsNtkJQ4TsvCSczzzzDOPGjWPChAns37+fjRs38tWvfvW0x7S3t/PUU09x9913Ex0dzYsvvkhhYSFTpkw5633nIgmnAPD7Anh6/Lh7fPR2++hpd9Pd4aG7zdP3b7ubzuZevO7AaXGWCBPJOTEk58aSnB1NYkwP9Byns76S7tqj9NQeo7exEV9rJ4YON5ZOP7FODaN6+rBTkx1q0gx0Z8TSm1NIS+5ceg0ltHQaaHC6OdHm6u9FOMUeYaY0087YDDulmQ7GZzlItdsG/P9KCHFhCfhUGo93Ul/ZQUt1N83VXTibTj+vXVEgJsGGPSmCqDgb0Q4rUXYLUQ4rUQ4rETEWrJEm3IqLXUfXUb3mH/j3lmOt6SKtSSXZ+Yk6FY1uu0JvnBk1PgJzXCwRiUlYUzJpi8rgsJbOTped7a3Q2O07LdZkUMiMiyA7IYrMuAiSY6wkxVhJiraSHGsjKcZKfKQFm9kgQ/Si39kSzqCW3HZ3d1NXV8fSpUsBKC4u5s0336S1tZWEhI/2DTtw4AAjR44kJqava7+srIz169czZcqUs953ofD7fHh6XSevaZw6fUzTNNAC/d8IUVU0TUOj7wZVC5x8HGiBTxxZpql9t2ugaQFOhqBqKv1XAPXkN1+tr+a+n07GgYamaifr+NjjtJPtOFmM0t/gk/X2l6GhfqwuTdX6fqe+hnx0z8mY/vs+HqdqH5V96nc99X8QUFE10FTQAhqaqvTVqfbVpaonfw5w8ra+2wMBUH0Q8Cuofg2/VyPgDRDwaX0XP/h9xr6L34Smnu3PNYBJ68SothPtb8Tia8TiacDSW4/N1U7EBwFMbuh1Q90nvmJFnbwA9FihPRqq8420OSy0xto5HpnOPksxDcoItMDJc9LbTl5oxWoykO6IoCw3jvzEKAqSo8lPjKYgOYrUWJu8GQshMJoNpBc6SC909N/m7fXTUttNR6MLZ5OLjqZenE0u6iud+H3tZyzLYFSwRtqxRd1NdJ4J6xgzTpOfOncz3rYa/J3NaD2dmHpcRPS4cXR5sVQHUE8E6NUCuLWjmNRKirUAJVqALxPAZ+67+C0qPhP4zAp+E/gUA34j+A1GOg1G2o0m9hqNeA0mvAYjGEwoRhNGsxnFbMFkMmOyWjGZLRjMNoxWC4rZ2neb0YzFZMRkNmExmTCajJiMRgxGM0aDEaPJgMnU97PJZMRoMGE2mTCYTJiMff8qBiOKAhgMJ39WUBRQ4GP/KhgUpe9nFE6t01RO3aaAohj6HnMy/mwUPvEAg+EMt5/rvd4Q3MPgkyX3/b7nDvsUiy0Ck/nCGEULKuHs7OwkJiamf/hbURTsdjtOp/O0hNPpdOJwOPqvOxwOnE7nOe+7UGx95w12rIwd7GYMIcrJy/kfdlFUH8aAF5Pfhc3Xg9nXg9nvwuzrweTvu27zdGD1tGP1dGDxdqFweiapAl4zuC3QY4P2eAW3TcFtNdJrNeG2WOiyRtJki6PWmsZRcwGtZGIzRhFlMeOINOOItOCIMDMj0oIj0kxcpJm4KAtpdhupsRGk2W04Is2SVAohQmaJMH0qCYW+L/PeXj/dHR5cHV56nH2jOO4uHx6XD7fL3/dvj5/OVjeeE90E/CpgAfL7LkbwxEJPLLSknb82K4Dt5KVf4OTF/enHqx97iAfoCaqWUwV6w22mOKlw6hGuuP2uwW4GEGTC+XnbtGkTmzdv7r9uMHw+80gcSUlE9G7+2C3ax/sF6XupfXSLcto9pz/ykz8pn7hN4/RvMKdqOj1t0U6r5JP1fPbXHe1T15TTbj/DDIr+ek61T+mvS1M+3f5P1qkQoO+tpe9fRTv186nrJ+9XTt2nouAFzY+CFwUvmuIHgx/NqIIBNLMBzWpEMxpxG430GoxoRhOc/FczmNHMmQRsI8EWAxGxGCLjICoJU1QCxqgkIiyRmI1GTEYDJoOC3aCQaDIQaTYSYTES8bF/Iy0mrCZDSPvoCSHE+aYoCtZIM9ZIMwnnPvUS6Dv+1u8N4Peq+L0BfB//2RNADWgnL+ppPwc+43Z/IIDf68bnceHzuAh4evF73AR8HgJeL5rfh+oLoKnqyYv20cjZqREtTUXTlL7Rsf5hPjh99O5jPnmD9okrGnzyU1PRzvDwsPoCz2Rofx7YU4sGuwn9gko4Y2Nj6erqIhAIYDQa0TQNp9OJ3X76Oc52u522trb+6x0dHf2POdt9nzRjxgxmzJjRf/2JJ54I/jfSYfSUmYyeMvNzqUsIIYQ4XwwGBYvNhEWmiIsLVFBdh9HR0aSlpbFnzx6gb65mbGzsacPpAKNHj6aiooKuri40TWPbtm2UlJSc8z4hhBBCCDF8BT2kvnjxYpYvX8769euxWq0sWbIEgBUrVjBy5EhGjRpFfHw88+bN4+mnnwYgNzeXsrIygLPeJ4QQQgghhi/Z+F0IIYQQQuh2tm2RZFdXIYQQQggxoCThFEIIIYQQA0oSTiGEEEIIMaAk4RRCCCGEEANKEk4hhBBCCDGgJOEUQgghhBADShJOIYQQQggxoCThFEIIIYQQA0oSTiGEEEIIMaAk4RRCCCGEEANKEk4hhBBCCDGgJOEUQgghhBADShJOIYQQQggxoCThFEIIIYQQA0oSTiGEEEIIMaAk4RRCCCGEEANKEk4hhBBCCDGgTIPdgGDU19cTGxs72M0YMF6vF4vFMtjNEDrIczi0yfM39MlzOPTJczj09fT0nPG+IZFw/td//ddgN2FAPfLIIzz00EOD3QyhgzyHQ5s8f0OfPIdDnzyHw5sMqQshhBBCiAElCacQQgghhBhQknBeAKZPnz7YTRA6yXM4tMnzN/TJczj0yXM4vCkPP/ywNtiNEEIIIYQQw5f0cAohhBBCiAElCacQQgghhBhQknAKIYQQQogBNST24RyOPvjgA7Zv346iKADMnDmTcePG9d+/du1adu3aBUBJSQmXXnrpYDRTnENrayvLli3D5XJhs9lYsmQJycnJg90scQY+n49XX32V5uZmzGYzUVFRLFq0iISEBLq7u1m2bBnt7e0YjUYWLVpEbm7uYDdZnMXOnTtZsWIFN910E6NHj5bncAjx+/2sWrWKI0eOYDKZSElJ4YYbbpD31GFMEs5BkpyczB133IHNZsPpdPKnP/2JrKws4uPjOXbsGPv27ePee+/FYDDw1FNPkZWVRVFR0WA3W3zCypUrmTRpEhMmTGD//v0sX76cr371q4PdLHEWkyZNYsSIESiKwpYtW3j99de5/fbbWb16NZmZmSxdupTa2lr+/ve/881vfhOj0TjYTRafob29ne3bt5OZmdl/mzyHQ8fq1atRFIX7778fRVHo6uoC5D11OJMh9UGSn5+PzWYDwG63Ex0djdPpBGD//v2UlpZisVgwmUxMmDCBvXv3DmZzxWfo7u6mrq6O0tJSAIqLi3E6nbS2tg5yy8SZmM1mioqK+kcWMjMz6ejoAPped2VlZQBkZGQQExPDsWPHBqml4mxUVeX1119n4cKFpyWT8hwODV6vlx07djB//vz+12JMTIy8pw5z0sN5AThy5Ahut5uMjAwAnE4n2dnZ/fc7HA727ds3WM0TZ9DZ2UlMTEz/B56iKNjtdpxOJwkJCYPcOhGMLVu2MGrUKFwuF6qqEhMT03+fw+Ho/xIoLiybN28mOzub9PT0/tvkORw62traiIiIYP369VRVVWE2m7nkkkuw2WzynjqMScI5QJ588skzfiu75557sNvtADQ2NrJixQpuvPFGLBbL59lEIS5q69ato62tjVtvvRW/3z/YzRFBamxspLy8nNtvv32wmyLCpKoqTqeTpKQkLrvsMurr63nuuef48pe/PNhNEwNIEs4Bcuedd57zMU1NTfztb3/j2muvJScnp/92u93eP8wH0NHR0Z+gigtHbGwsXV1dBAIBjEYjmqbhdDrluRoCNm7cSHl5ObfeeisWiwWLxYLBYKCrq6u/h0xedxemEydO0NHRwaOPPgr0TW1ZuXIl8+bNk+dwiLDb7SiK0j90npaWRlxcHB0dHfKeOozJHM5B0tzczAsvvMDixYspKCg47b7i4mL27NmD1+vF7/ezc+dOSkpKBqml4kyio6NJS0tjz549ABw4cIDY2FgZ+rnAbdq0iX379nHrrbcSERHRf3txcTHbtm0DoLa2lq6uLlnhfAGaPHky3/72t3nwwQd58MEHyczMZPHixUyePFmewyEiKiqKvLw8Kisrgb4FYO3t7WRnZ8t76jAmR1sOkueee466urrTvrlddtllFBYWAvD++++fti3SggULBqOZ4hxaWlpYvnw5LpcLq9XKkiVLSElJGexmiTNwOp385je/IS4urn8Ki8lk4q677qK7u5vXXnuNjo4OjEYjCxcuJC8vb5BbLM7lL3/5C9OmTevfFkmew6Ghra2N119/HZfLhaIozJ07l+LiYnlPHcYk4RRCCCGEEANKhtSFEEIIIcSAkoRTCCGEEEIMKEk4hRBCCCHEgJKEUwghhBBCDChJOIUQQgghxICShFMIIYQQQgwoSTiFEEIIIcSAkoRTCCGEEEIMqP8fzxDzTi44gMoAAAAASUVORK5CYII=\n" + "image/png": "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HgRVa6taVk8qV5NS7sFuhIMB6A1GlGtU7PzFo724fHms7TLPEFpbVimalAJiS/isdTXQ6fUoX9acs68HEVE2OZ1O/Pa3v8VNN92E0tJS7Ny5E//6r/+KH/7wh7j66qvxpz/9aUH3q6urg8ViAQB86UtfOuX7v/zlL1OSUtdccw02btyY+Prss8/G2WefDQDYt29fIik1k7179+Izn/kM/vEf/xHXXnstrFYrBgYGcN999+F3v/td4rrh4WG8/PLLOPvss3HllVdCr9djcHAQ27Ztw0MPPZRSDB2IzayKL89L58UXX0QkEsGNN96IW265BVNTU3j11Vdx7733YmIisz92eTwe/OM//iM++clPoq2tDe9///vh8Xjw1FNP4b777kvZ6W82N9xwA2praxNfX3LJJbjkkksAAM8++2xKUqqpqQmnnXYaHn74YU2WouZsUurGG2/Epz71KVRWVuLQoUP4l3/5F+zdO/va/6uuugpf/OIX0dDQgM7OTvzgBz/ASy+9NOO1d955Jz760Y/i29/+dsZbWpK2otEojhw5whoHRLNgjFAuK2+UFznP/s57AFBf1wybL1kUdc/QmGptVa2OLRWLhEIY7cjNwtFSNILxvhOobD0dZkcVikttmPK5stqHlw90Q1p9GoRwBBZvLCn1xpvbFW1j+MhxrLxkM4BY8XkmpWbH5whRepIkFUQ9qbg//elPpySfrrvuupSvf/WrX83r8/Nbb70152wguVtvvXVe183W/qFDh2ZMfsm53W788Ic/nFc7LS0tsNvtuPPOO+d1/SuvvJIye2k28x0nAIyOjuIHP/jBnNfN9t8k3Qyvk3V3dy/o9VJaTtaUuuaaa/CNb3wDP/nJT3DNNdfg0KFD+M1vfoPy8vIZrz/77LPx05/+FI8++iiuvvpqPPfcc7j//vuxatWqU6694oorsGHDBgwODqo9DFKRJEkYHBwsmIcAkdIYI5TLHA3xot8e+JzqFRdPp7lpZaKeFBDb/U0NxdYylNXE6iONHu9ENDT3Xze14uxJJmgcTdmvKxUMR+ApKwIAGIN+rG9uVbyNIVkSinWl0uNzhGhu2S4ITdmxceNG7N+//5SaUKSOnExKffKTn8QjjzyCxx57DEePHsXXv/51TE5O4kMf+tCM199000145ZVXcN999+HYsWO46667cODAgcQ61Ljq6mp8+9vf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e48//jgefPBBbNu2Dbfffjt27typSEeJiIiWKktlHfSGYgCx7e61YNDrYPLGkmGTxWXY3678873YWgazww5gup4Ui5xThlyypJS9rhXaRA0wVmREvJrUJauX4YX9ys/+Gz3emTiuWMZi50RElF8ymim1du1aPPnkk6ckpOIOHz6Mp556CmecccaiOkdERESAvW5Z4lg+AySbtpzeADEaK4zjMzswMjqgeBspRc5VrCdFhc810J0odq7lDnxHp3erBIDT7eVprsycb2QUU95YO9yBj4iI8k1GSanJyUmMjY2lvWZ0dBSTk5MZdYpoLtFoFEeOHOFuF0SzYIwUFnt98kO1VjOlLlmd7MOYwah+kXMV60kBjJFCFwkF4B3tBwBYqxog6ha1t0/GXm3viO8NgMqwejP/4kncEmsZzBUORe7JGCFKjzFCpIyMklLbt2/H5s2b016zefNmbN++PaNOEc1FkiQMDg6q8qGIqBAwRgqLfOc9l0YzpeSzPI561alpVZGSlOpWpY04xkjhi88qFPV6lGlU7PzA0SOYLLEBiBU7NxnVSY6NyoudK1RXijFClB5jhEgZGSWl7rzzTpSXl+NHP/oRamtrU75XW1uLH//4x3A4HPje976nSCeJTqbT6XDOOedAp1NnJxuifMcYKRyCKMJW2wIA8I0NIjSlzq53c6kKx/5fAvDykWOqtBHfOSzg98M7NKxKG3GMkcLn6utMHNs1WsInL3YuSFFcvKZpjp/IjHwHPqWKnTNGiNJjjBApY15/rnn44YdPOefxePD+978f733ve9Hf34/R0VFUVFSgrq4OOp0Ohw8fxt13342PfOQjineaCADMZrPWXSDKaYyRwmCprIeuyABAu6V7JqMeJfEi5yU2vHP0VeXbcNhRYrMCyF49KcZIYRtPKXbeokmxc0mSMFpkQNX011tWNuOZt04o3k7qTCnl6koxRojSY4wQLd68klLnn3/+7DfQ69HU1ISmptS//Jx++umcykhERLRIKfWkNFq6964zmiFIsZoZ3tJyjI4NKt6GfMmRfDcxoky5BrsgRaOx2YYaFjtv9/qwZvr4dKs6xc4nXR74neMwO+yx2myCwN0riYgoL8wrKdXaqt2DnIiIaClL2XlPo5lSF61oAaaX743qi1Rpo2J5cnaHfNYHUaYiwQC8owMoq6qHtboRok6PaCSc9X68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amtrsx0GMGaRI0B65AiQHjkCpEeOACcGI6WQk0zT1MyZM5lYEBgBOQKkR44A6ZEjQHrkCHBikEHISYZhqKKigiVYgRGQI0B65AiQHjkCpEeOACcGRSkAAAAAAABkHHNKHSO/35/tECDJsiz5fD4FAgHF4/FshwOMOeQIkB45AqRHjgDpkSNAeqOtnVCUGqVAICBJeu2117IcCQAAAAAAwNgXCATU3d094najqqqKNSxHqby8XKFQKNthQIk/7Pfff19f+tKXeE2AYZAjQHrkCJAeOQKkR44ARxcIBHTw4MG0+zBS6hgc7clE5oVCobRVV+B0R44A6ZEjQHrkCJAeOQKMbDS5wUTnAAAAAAAAyDiKUgAAAAAAAMg4ilLISZFIRP/8z/+sSCSS7VCAMYkcAdIjR4D0yBEgPXIEODGY6BwAAAAAAAAZx0gpAAAAAAAAZBxFKQAAAAAAAGQcRSkAAAAAAABkHEUp5JRJkyZp5cqV2rBhg3bu3Kk33nhDd999t9xu96D9Zs+ereeee047d+7UO++8ox/+8IdZihjIjoULF6by5IUXXtC5556b7ZCArFi0aJF+//vf66OPPtLmzZv1+OOPa9q0aYP28Xq9evjhh7V161bV1NToscceU0lJSZYiBrLnRz/6kerq6vTAAw+k2sgPnO7Ky8v1L//yL9q6dat27typV199VXPmzBm0zz333KONGzdq586devrppzVlypTsBAvkIIpSyCnTp0+XYRi6//77dcUVV2j58uX6/ve/r5/85CepfYLBoNatW6eGhgZdd911+ulPf6q7775bN998cxYjBzLnuuuu07Jly/Sv//qvuu6667Rjxw6tW7dOxcXF2Q4NyLiLLrpITz31lL797W9rwYIFcrvdWrdunfLy8lL7/MM//IMuv/xyLVq0SN/73vdUXl6uf//3f89i1EDmzZ07V9///vdVU1MzqJ38wOmsoKBAzz//vKLRqG699VZdccUVWrFihQ4dOpTa584779QPfvAD/f3f/72+9a1vqaenR+vWrZPX681i5EDuYPU95Lwf/vCHWrBggebPny9JWrBgge69915dcMEFikajkqT77rtPV111lS6//PJshgpkxAsvvKBt27alznQbhqF3331XTz75pFavXp3l6IDsKioq0gcffKDvfve7ev/995Wfn68tW7boxz/+sdavXy8pcQLk9ddf17e//W198MEHWY4YOPn8fr9efvllLVu2THfddZdqamq0fPly8gOnvfvuu08XXHCBvvvd7464z8aNG/XEE0/o8ccflyTl5+dr06ZNWrJkiV588cVMhQrkLEZKIefl5+ero6Mj9f28efP03nvvpQpSkvTGG29oxowZKigoyEKEQOa43W7NmTNHGzZsSLU5jqMNGzZo3rx5WYwMGBvy8/MlKfV/Y86cOfJ4PINyZteuXdq3bx85g9PGww8/rNdff11vvfXWoHbyA6e7K6+8Utu2bdMvf/lLbd68WevXr9dNN92U2l5ZWamysrJBOdLV1aWtW7eSI8AoUZRCTps8ebJuvfVWPf3006m20tJStbS0DNqv//uysrKMxgdkWmFhoVwu17A5UFpamqWogLHBMAw9+OCD2rhxo2prayUl/meEw2F1dnYO2pecwenim9/8ps455xytXLlyyDbyA6e7yspKLViwQLt379bChQu1bt06PfTQQ7rhhhskHf5swXEXcPxc2Q4AkBJDYxctWpR2n8suu0y7du1KfV9eXq6nnnpK69ev1zPPPHOyQwQA5LiHH35YM2fO1I033pjtUIAxoaKiQg8++KAWLFigcDic7XCAMcc0TW3fvl2/+MUvJEkfffSRZs2apQULFuj555/PcnTAqYGiFMaEJ554Qr/97W/T7rN3797U/bKyMj3zzDPavHmz/u7v/m7Qfs3NzUNWhen/vqmp6QRFDIxN7e3tisViw+ZAc3NzlqICsm/58uW6/PLL9b3vfU8HDhxItTc3N8vr9aqgoGDQaBByBqeDOXPmqLS0VC+//HKqzeVy6aKLLtKtt96qhQsXkh84rTU1NemTTz4Z1Pbpp5/qmmuuSW2XEjkx8HNGSUnJkEUDAAyPohTGhLa2NrW1tY1q3/Lycj3zzDPavn27lixZIscZPFf/li1bdO+998rlcikWi0mSLrnkEn366adDhp8Dp5poNKrt27erurpaf/jDHyQlLlmqrq7W2rVrsxwdkB3Lly/X17/+df3FX/yF6uvrB23bvn27IpGIqqur9corr0iSpk2bpkmTJmnLli3ZCBfImLfeektXXnnloLZ/+qd/0q5du7R69Wo1NjaSHzitbd68WdOmTRvUNnXqVDU0NEiS6uvr1dTUpOrq6lQRKhgM6rzzztNvfvObjMcL5CKKUsgp5eXlevbZZ9XQ0KBHHnlk0BL3/Wfsfve73+nHP/6xVq5cqdWrV2vWrFm67bbbtHz58myFDWTUmjVr9Oijj2rbtm368MMPddttt8nv9+u5557LdmhAxq1YsULXX3+9br/9doVCodQcH52dnQqHw+rq6tKzzz6rZcuWqaOjQ11dXVq+fLk2b97MymI45YVCodT8av16enrU3t6eaic/cDpbs2aN/vu//1t//dd/rZdeeknnnXeebrnlFt1///2pfX71q1/prrvu0u7du1VfX6/FixerqakpdXIQQHpGVVWVc/TdgLHhxhtv1KOPPjrstsmTJ6fuz549Ww8//LDmzp2r9vZ2Pfnkk3rssccyFSaQdbfeeqvuuOMOlZaWqqamRv/4j/+orVu3ZjssIOPq6uqGbV+8eHHqsnGv16tly5bp+uuvl8fj0RtvvKFly5ZxeRJOS88884xqampSJ/PID5zuLrvsMt13332aMmWK9u3bpyeeeGLIfLb33HOPbr75ZhUUFGjTpk1atmyZdu/enaWIgdxCUQoAAAAAAAAZZ2Y7AAAAAAAAAJx+KEoBAAAAAAAg4yhKAQAAAAAAIOMoSgEAAAAAACDjKEoBAAAAAAAg4yhKAQAAAAAAIOMoSgEAAAAAACDjKEoBAAAAAAAg4yhKAQAAAAAAIOMoSgEAAOSIH/zgB6qrq9OqVauG3V5QUKD33ntPH3/8saZOnZrh6AAAAI4NRSkAAIAc8eSTT+qdd97RDTfcoCuvvHLI9hUrVmjChAn6+c9/rt27d2chQgAAgNEzqqqqnGwHAQAAgNGZNGmSXn31VfX29urKK69Ue3u7JOkb3/iGVq9erbfffls333xzlqMEAAA4OkZKAQAA5JB9+/ZpxYoVKi0t1SOPPCJJKikp0YoVK9TV1aUlS5ZkOUIAAIDRcWU7AAAAAByb//zP/9TVV1+ta6+9Vtdff72++c1vqri4WPfee68aGhqyHR4AAMCocPkeAABADiovL9cf//hHeb1e+Xw+vfbaa/qrv/qrbIcFAAAwaly+BwAAkIMOHjyotWvXyufzKRKJ6P777892SAAAAMeEohQAAEAOKi4u1i233CJJ8ng8uuyyy7IcEQAAwLGhKAUAAJCDfvrTn6qkpEQ/+9nP1NraqmXLlmnixInZDgsAAGDUKEoBAADkmO985zu6+uqr9dprr+mxxx7TAw88oPz8fK1cuTLboQEAAIwaRSkAAIAcUl5eroceekjt7e2peaReeuklvfzyy5o/f37qkj4AAICxjtX3AAAAcsjatWt16aWX6q677tLvf//7VHtRUVFqNb6vf/3ramhoyGKUAAAAR8dIKQAAgBxxyy236NJLL9XLL788qCAlSW1tbVq2bJny8/P1i1/8IksRAgAAjB5FKQAAgBxQWVmppUuXqrm5WUuXLh12n1deeUW/+93vVF1drb/8y7/McIQAAADHhsv3AAAAAAAAkHGMlAIAAAAAAEDGUZQCAAAAAABAxlGUAgAAAAAAQMZRlAIAAAAAAEDGUZQCAAAAAABAxlGUAgAAAAAAQMZRlAIAAAAAAEDGUZQCAAAAAABAxlGUAgAAAAAAQMZRlAIAAAAAAEDGUZQCAAAAAABAxlGUAgAAAAAAQMZRlAIAAAAAAEDG/X9VVcWeGXn5WgAAAABJRU5ErkJggg==" }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" } - ] + ], + "execution_count": 16 }, { "cell_type": "markdown", "source": [ - "It looks like players at index 1, 2 and 3, they have almost indentical means. So they overlap each other quite a bit. But if you have a keen eye, you will notice that the green line representing player at index 2 has a higher peak (also known as negative kurtosis in literature). This means the system is overall more confident in player at index 2's skill.\n", + "It looks like players at index 1, 2 and 3, they have almost indentical means. So they overlap each other quite a bit. But if you have a keen eye, you will notice that the lavender line representing player at index 2 has a higher peak (also known as negative kurtosis in literature). This means the system is overall more confident in player at index 2's skill.\n", "\n", "By default the value of an ordinal is determined by the fomula '$μ - 3σ$' which by the [empirical rule](https://en.wikipedia.org/wiki/68%E2%80%9395%E2%80%9399.7_rule) only allows for the system to be confident upto 99.7%. As such when $σ$ is still high such as when players have played few games will lead to the overal ordinal fluctuating.\n", "\n", diff --git a/openskill/__init__.py b/openskill/__init__.py index 6a64e45..e807ba0 100644 --- a/openskill/__init__.py +++ b/openskill/__init__.py @@ -7,8 +7,8 @@ # Metadata __version__ = "5.1.1" __author__ = "Vivek Joshy" -__email__ = "vivek@opendebates.net" -__copyright__ = "Copyright 2023, Vivek Joshy" +__email__ = "vivekjoshy97@gmail.com" +__copyright__ = "Copyright 2023 - 2024, Vivek Joshy" __credits__ = ["Philihp Busby"] __deprecated__ = False __license__ = "MIT" diff --git a/openskill/models/common.py b/openskill/models/common.py index 56a153d..4b5776a 100644 --- a/openskill/models/common.py +++ b/openskill/models/common.py @@ -15,51 +15,42 @@ def _unary_minus(number: float) -> float: return -number -def _arg_sort(vector: List[Any]) -> List[int]: +def _matrix_transpose(matrix: List[List[Any]]) -> List[List[Any]]: """ - Returns the indices that would sort a vector. + Transpose a matrix. - :param vector: A list of objects. - :return: Rank vector without ties. + :param matrix: A matrix in the form of a list of lists. + :return: A transposed matrix. """ - return [i for (v, i) in sorted((v, i) for (i, v) in enumerate(vector))] + return [list(row) for row in zip(*matrix)] -def _rank_data(vector: List[Any]) -> List[int]: +def _normalize( + vector: List[float], target_minimum: float, target_maximum: float +) -> List[float]: """ - Sorting with 'competition ranking'. Pure python equivalent of - :code:`scipy.stats.rankdata` function. + Normalizes a vector to a target range of values. - :param vector: A list of objects. - :return: Rank vector with ties. + :param vector: A vector to normalize. + :param target_minimum: Minimum value to scale the values between. + :param target_maximum: Maximum value to scale the values between. + :return: Normalized vector. """ - vector_length = len(vector) - arg_sort_rank_vector = _arg_sort(vector) - arg_sorted_vector = [vector[rank] for rank in arg_sort_rank_vector] - sum_ranks = 0 - duplicate_count = 0 - rank_vector_with_ties = [0] * vector_length - for index in range(vector_length): - sum_ranks += index - duplicate_count += 1 - if ( - index == vector_length - 1 - or arg_sorted_vector[index] != arg_sorted_vector[index + 1] - ): - for j in range(index - duplicate_count + 1, index + 1): - rank_vector_with_ties[arg_sort_rank_vector[j]] = ( - index + 1 - duplicate_count + 1 - ) - sum_ranks = 0 - duplicate_count = 0 - return rank_vector_with_ties + if len(vector) == 1: + return [target_maximum] -def _matrix_transpose(matrix: List[List[Any]]) -> List[List[Any]]: - """ - Transpose a matrix. + source_minimum = min(vector) + source_maximum = max(vector) + source_range = source_maximum - source_minimum + target_range = target_maximum - target_minimum - :param matrix: A matrix in the form of a list of lists. - :return: A transposed matrix. - """ - return [list(row) for row in zip(*matrix)] + if source_range == 0: + source_range = 0.0001 + + scaled_vector = [ + ((((value - source_minimum) / source_range) * target_range) + target_minimum) + for value in vector + ] + + return scaled_vector diff --git a/openskill/models/weng_lin/bradley_terry_full.py b/openskill/models/weng_lin/bradley_terry_full.py index 38652e3..3503cb2 100644 --- a/openskill/models/weng_lin/bradley_terry_full.py +++ b/openskill/models/weng_lin/bradley_terry_full.py @@ -7,10 +7,9 @@ import itertools import math import uuid -from functools import reduce from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Type -from openskill.models.common import _rank_data, _unary_minus +from openskill.models.common import _normalize, _unary_minus from openskill.models.weng_lin.common import _unwind, phi_major, phi_major_inverse __all__: List[str] = ["BradleyTerryFull", "BradleyTerryFullRating"] @@ -133,17 +132,26 @@ def __ge__(self, other: "BradleyTerryFullRating") -> bool: "You can only compare BradleyTerryFullRating objects with each other." ) - def ordinal(self, z: float = 3.0) -> float: + def ordinal(self, z: float = 3.0, alpha: float = 1, target: float = 0) -> float: r""" A single scalar value that represents the player's skill where their true skill is 99.7% likely to be higher. - :param z: Integer that represents the variance of the skill of a - player. By default, set to 3. + :param z: Float that represents the number of standard deviations to subtract + from the mean. By default, set to 3.0, which corresponds to a + 99.7% confidence interval in a normal distribution. - :return: :math:`\mu - z * \sigma` + :param alpha: Float scaling factor applied to the entire calculation. + Adjusts the overall scale of the ordinal value. + Defaults to 1. + + :param target: Float value used to shift the ordinal value + towards a specific target. The shift is adjusted by the + alpha scaling factor. Defaults to 0. + + :return: :math:`\alpha \cdot ((\mu - z * \sigma) + \frac{\text{target}}{\alpha})` """ - return self.mu - z * self.sigma + return alpha * ((self.mu - z * self.sigma) + (target / alpha)) class BradleyTerryFullTeamRating: @@ -213,6 +221,7 @@ def _gamma( sigma_squared: float, team: Sequence[BradleyTerryFullRating], rank: int, + weights: Optional[List[float]] = None, ) -> float: """ Default gamma function for Bradley-Terry Full Pairing. @@ -229,6 +238,8 @@ def _gamma( :param rank: The rank of the team. + :param weights: The weights of the players in a team. + :return: A number. """ return math.sqrt(sigma_squared) / c @@ -260,11 +271,13 @@ def __init__( float, Sequence[BradleyTerryFullRating], int, + Optional[List[float]], ], float, ] = _gamma, tau: float = 25.0 / 300.0, limit_sigma: bool = False, + balance: bool = False, ): r""" :param mu: Represents the initial belief about the skill of @@ -306,6 +319,8 @@ def __init__( :param limit_sigma: Boolean that determines whether to restrict the value of sigma from increasing. + :param balance: Boolean that determines whether to emphasize + rating outliers. """ # Model Parameters self.mu: float = float(mu) @@ -320,12 +335,14 @@ def __init__( float, Sequence[BradleyTerryFullRating], int, + Optional[List[float]], ], float, ] = gamma self.tau: float = float(tau) self.limit_sigma: bool = limit_sigma + self.balance: bool = balance # Model Data Container self.BradleyTerryFullRating: Type[BradleyTerryFullRating] = ( @@ -350,12 +367,12 @@ def rating( ) -> BradleyTerryFullRating: r""" Returns a new rating object with your default parameters. The given - parameters can be overriden from the defaults provided by the main + parameters can be overridden from the defaults provided by the main model, but is not recommended unless you know what you are doing. :param mu: Represents the initial belief about the skill of a player before any matches have been played. Known - mostly as the mean of the Guassian prior distribution. + mostly as the mean of the Gaussian prior distribution. *Represented by:* :math:`\mu` @@ -451,6 +468,7 @@ def rate( teams: List[List[BradleyTerryFullRating]], ranks: Optional[List[float]] = None, scores: Optional[List[float]] = None, + weights: Optional[List[List[float]]] = None, tau: Optional[float] = None, limit_sigma: Optional[bool] = None, ) -> List[List[BradleyTerryFullRating]]: @@ -460,12 +478,16 @@ def rate( :param teams: A list of teams where each team is a list of :class:`BradleyTerryFullRating` objects. - :param ranks: A list of Decimals where the lower values + :param ranks: A list of floats where the lower values represent winners. - :param scores: A list of Decimals where higher values + :param scores: A list of floats where higher values represent winners. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. + :param tau: Additive dynamics parameter that prevents sigma from getting too small to increase rating change volatility. @@ -530,6 +552,41 @@ def rate( f"not '{scores.__class__.__name__}'." ) + # Catch weights argument errors + if weights: + if isinstance(weights, list): + if len(weights) != len(teams): + raise ValueError( + f"Argument 'weights' must have the same number of elements as" + f" 'teams', not {len(weights)}." + ) + + for index, team_weights in enumerate(weights): + if isinstance(team_weights, list): + if len(team_weights) != len(teams[index]): + raise ValueError( + f"Argument 'weights' must have the same number of elements" + f"as each team in 'teams', not {len(team_weights)}." + ) + for weight in team_weights: + if isinstance(weight, (int, float)): + pass + else: + raise TypeError( + f"Argument 'weights' must be a list of lists of 'float' values, " + f"not '{weight.__class__.__name__}'." + ) + else: + raise TypeError( + f"Argument 'weights' must be a list of lists of 'float' values, " + f"not '{team_weights.__class__.__name__}'." + ) + else: + raise TypeError( + f"Argument 'weights' must be a list of lists of 'float' values, " + f"not '{weights.__class__.__name__}'." + ) + # Deep Copy Teams original_teams = copy.deepcopy(teams) @@ -548,9 +605,17 @@ def rate( for score in scores: ranks.append(_unary_minus(score)) + # Normalize Weights + if weights: + weights = [_normalize(team_weights, 1, 2) for team_weights in weights] + tenet = None if ranks: rank_teams_unwound = _unwind(ranks, teams) + + if weights: + weights, _ = _unwind(ranks, weights) + ordered_teams = rank_teams_unwound[0] tenet = rank_teams_unwound[1] teams = ordered_teams @@ -558,7 +623,7 @@ def rate( processed_result = [] if ranks and tenet: - result = self._compute(teams, ranks) + result = self._compute(teams=teams, ranks=ranks, weights=weights) unwound_result = _unwind(tenet, result)[0] for item in unwound_result: team = [] @@ -566,7 +631,7 @@ def rate( team.append(player) processed_result.append(team) else: - result = self._compute(teams) + result = self._compute(teams=teams, weights=weights) for item in result: team = [] for player in item: @@ -633,7 +698,7 @@ def _sum_q(team_ratings: List[BradleyTerryFullTeamRating], c: float) -> List[flo :param c: The square root of the collective team sigma. - :return: A list of Decimals. + :return: A list of floats. """ sum_q: Dict[int, float] = {} @@ -659,7 +724,7 @@ def _a(team_ratings: List[BradleyTerryFullTeamRating]) -> List[int]: A_q = |\{s: r(s) = r(q)\}|, q = 1,...,k :param team_ratings: The whole rating of a list of teams in a game. - :return: A list of Decimals. + :return: A list of ints. """ result = list( map( @@ -673,14 +738,12 @@ def _compute( self, teams: Sequence[Sequence[BradleyTerryFullRating]], ranks: Optional[List[float]] = None, + weights: Optional[List[List[float]]] = None, ) -> List[List[BradleyTerryFullRating]]: # Initialize Constants original_teams = teams team_ratings = self._calculate_team_ratings(teams, ranks=ranks) beta = self.beta - c = self._c(team_ratings) - sum_q = self._sum_q(team_ratings, c) - a = self._a(team_ratings) result = [] for i, team_i in enumerate(team_ratings): @@ -704,24 +767,56 @@ def _compute( s = 0.5 omega += sigma_squared_to_ciq * (s - piq) - gamma_value = self.gamma( - c_iq, - len(team_ratings), - team_i.mu, - team_i.sigma_squared, - team_i.team, - team_i.rank, - ) + if weights: + gamma_value = self.gamma( + c_iq, + len(team_ratings), + team_i.mu, + team_i.sigma_squared, + team_i.team, + team_i.rank, + weights[i], + ) + else: + gamma_value = self.gamma( + c_iq, + len(team_ratings), + team_i.mu, + team_i.sigma_squared, + team_i.team, + team_i.rank, + None, + ) delta += ((gamma_value * sigma_squared_to_ciq) / c_iq) * piq * (1 - piq) intermediate_result_per_team = [] for j, j_players in enumerate(team_i.team): + + if weights: + weight = weights[i][j] + else: + weight = 1 + mu = j_players.mu sigma = j_players.sigma - mu += (sigma**2 / team_i.sigma_squared) * omega - sigma *= math.sqrt( - max(1 - (sigma**2 / team_i.sigma_squared) * delta, self.kappa), - ) + + if omega > 0: + mu += (sigma**2 / team_i.sigma_squared) * omega * weight + sigma *= math.sqrt( + max( + 1 - (sigma**2 / team_i.sigma_squared) * delta * weight, + self.kappa, + ), + ) + else: + mu += (sigma**2 / team_i.sigma_squared) * omega / weight + sigma *= math.sqrt( + max( + 1 - (sigma**2 / team_i.sigma_squared) * delta / weight, + self.kappa, + ), + ) + modified_player = original_teams[i][j] modified_player.mu = mu modified_player.sigma = sigma @@ -733,7 +828,7 @@ def predict_win(self, teams: List[List[BradleyTerryFullRating]]) -> List[float]: r""" Predict how likely a match up against teams of one or more players will go. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. This is a generalization of the algorithm in :cite:p:`Ibstedt1322103` to asymmetric n-player n-teams. @@ -745,11 +840,10 @@ def predict_win(self, teams: List[List[BradleyTerryFullRating]]) -> List[float]: self._check_teams(teams) n = len(teams) - denominator = (n * (n - 1)) / 2 + total_player_count = sum(len(team) for team in teams) # 2 Player Case if n == 2: - total_player_count = len(teams[0]) + len(teams[1]) teams_ratings = self._calculate_team_ratings(teams) a = teams_ratings[0] b = teams_ratings[1] @@ -773,22 +867,26 @@ def predict_win(self, teams: List[List[BradleyTerryFullRating]]) -> List[float]: sigma_b = pair_b_subset[0].sigma_squared pairwise_probabilities.append( phi_major( - (mu_a - mu_b) / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) + (mu_a - mu_b) + / math.sqrt(total_player_count * self.beta**2 + sigma_a + sigma_b) ) ) - return [ - (sum(team_prob) / denominator) - for team_prob in itertools.zip_longest( - *[iter(pairwise_probabilities)] * (n - 1) - ) - ] + win_probabilities = [] + for i in range(n): + team_win_probability = sum( + pairwise_probabilities[j] for j in range(i * (n - 1), (i + 1) * (n - 1)) + ) / (n - 1) + win_probabilities.append(team_win_probability) + + total_probability = sum(win_probabilities) + return [probability / total_probability for probability in win_probabilities] def predict_draw(self, teams: List[List[BradleyTerryFullRating]]) -> float: r""" Predict how likely a match up against teams of one or more players will draw. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. :return: The odds of a draw. @@ -796,8 +894,7 @@ def predict_draw(self, teams: List[List[BradleyTerryFullRating]]) -> float: # Check Arguments self._check_teams(teams) - n = len(teams) - total_player_count = sum([len(_) for _ in teams]) + total_player_count = sum(len(team) for team in teams) draw_probability = 1 / total_player_count draw_margin = ( math.sqrt(total_player_count) @@ -806,7 +903,7 @@ def predict_draw(self, teams: List[List[BradleyTerryFullRating]]) -> float: ) pairwise_probabilities = [] - for pair_a, pair_b in itertools.permutations(teams, 2): + for pair_a, pair_b in itertools.combinations(teams, 2): pair_a_subset = self._calculate_team_ratings([pair_a]) pair_b_subset = self._calculate_team_ratings([pair_b]) mu_a = pair_a_subset[0].mu @@ -816,26 +913,22 @@ def predict_draw(self, teams: List[List[BradleyTerryFullRating]]) -> float: pairwise_probabilities.append( phi_major( (draw_margin - mu_a + mu_b) - / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) + / math.sqrt(total_player_count * self.beta**2 + sigma_a + sigma_b) ) - phi_major( - (mu_a - mu_b - draw_margin) - / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) + (mu_b - mu_a - draw_margin) + / math.sqrt(total_player_count * self.beta**2 + sigma_a + sigma_b) ) ) - denominator = 1 - if n > 2: - denominator = n * (n - 1) - - return abs(sum(pairwise_probabilities)) / denominator + return sum(pairwise_probabilities) / len(pairwise_probabilities) def predict_rank( self, teams: List[List[BradleyTerryFullRating]] ) -> List[Tuple[int, float]]: r""" Predict the shape of a match outcome. This algorithm has a time - complexity of :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the + complexity of :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. @@ -844,47 +937,45 @@ def predict_rank( self._check_teams(teams) n = len(teams) - total_player_count = sum([len(_) for _ in teams]) - denom = (n * (n - 1)) / 2 - draw_probability = 1 / total_player_count - draw_margin = ( - math.sqrt(total_player_count) - * self.beta - * phi_major_inverse((1 + draw_probability) / 2) + total_player_count = sum(len(team) for team in teams) + team_ratings = self._calculate_team_ratings(teams) + + win_probabilities = [] + for i, team_i in enumerate(team_ratings): + team_win_probability = 0.0 + for j, team_j in enumerate(team_ratings): + if i != j: + team_win_probability += phi_major( + (team_i.mu - team_j.mu) + / math.sqrt( + total_player_count * self.beta**2 + + team_i.sigma_squared + + team_j.sigma_squared + ) + ) + win_probabilities.append(team_win_probability / (n - 1)) + + total_probability = sum(win_probabilities) + normalized_probabilities = [p / total_probability for p in win_probabilities] + + sorted_teams = sorted( + enumerate(normalized_probabilities), key=lambda x: x[1], reverse=True ) - pairwise_probabilities = [] - for pair_a, pair_b in itertools.permutations(teams, 2): - pair_a_subset = self._calculate_team_ratings([pair_a]) - pair_b_subset = self._calculate_team_ratings([pair_b]) - mu_a = pair_a_subset[0].mu - sigma_a = pair_a_subset[0].sigma_squared - mu_b = pair_b_subset[0].mu - sigma_b = pair_b_subset[0].sigma_squared - pairwise_probabilities.append( - phi_major( - (mu_a - mu_b - draw_margin) - / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) - ) - ) - win_probability = [ - (sum(team_prob) / denom) - for team_prob in itertools.zip_longest( - *[iter(pairwise_probabilities)] * (n - 1) - ) - ] + ranks = [0] * n + current_rank = 1 + for i, (team_index, _) in enumerate(sorted_teams): + if i > 0 and sorted_teams[i][1] < sorted_teams[i - 1][1]: + current_rank = i + 1 + ranks[team_index] = current_rank - ranked_probability = [abs(_) for _ in win_probability] - ranks = list(_rank_data(ranked_probability)) - max_ordinal = max(ranks) - ranks = [abs(_ - max_ordinal) + 1 for _ in ranks] - predictions = list(zip(ranks, ranked_probability)) - return predictions + return list(zip(ranks, normalized_probabilities)) def _calculate_team_ratings( self, game: Sequence[Sequence[BradleyTerryFullRating]], ranks: Optional[List[float]] = None, + weights: Optional[List[List[float]]] = None, ) -> List[BradleyTerryFullTeamRating]: """ Get the team ratings of a game. @@ -894,6 +985,11 @@ def _calculate_team_ratings( :param ranks: A list of ranks for each team in the game. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. The values should be normalized + from 0 to 1. + :return: A list of :class:`BradleyTerryFullTeamRating` objects. """ if ranks: @@ -903,10 +999,23 @@ def _calculate_team_ratings( result = [] for index, team in enumerate(game): - mu_summed = reduce(lambda x, y: x + y, map(lambda p: p.mu, team)) - sigma_squared = reduce(lambda x, y: x + y, map(lambda p: p.sigma**2, team)) + sorted_team = sorted(team, key=lambda p: p.ordinal(), reverse=True) + max_ordinal = sorted_team[0].ordinal() + + mu_summed = 0.0 + sigma_squared_summed = 0.0 + for player in sorted_team: + if self.balance: + ordinal_diff = max_ordinal - player.ordinal() + balance_weight = 1 + (ordinal_diff / (max_ordinal + self.kappa)) + else: + balance_weight = 1.0 + mu_summed += player.mu * balance_weight + sigma_squared_summed += (player.sigma * balance_weight) ** 2 result.append( - BradleyTerryFullTeamRating(mu_summed, sigma_squared, team, rank[index]) + BradleyTerryFullTeamRating( + mu_summed, sigma_squared_summed, team, rank[index] + ) ) return result diff --git a/openskill/models/weng_lin/bradley_terry_part.py b/openskill/models/weng_lin/bradley_terry_part.py index c17cd06..4aae350 100644 --- a/openskill/models/weng_lin/bradley_terry_part.py +++ b/openskill/models/weng_lin/bradley_terry_part.py @@ -7,10 +7,9 @@ import itertools import math import uuid -from functools import reduce from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Type -from openskill.models.common import _rank_data, _unary_minus +from openskill.models.common import _normalize, _unary_minus from openskill.models.weng_lin.common import ( _ladder_pairs, _unwind, @@ -138,17 +137,26 @@ def __ge__(self, other: "BradleyTerryPartRating") -> bool: "You can only compare BradleyTerryPartRating objects with each other." ) - def ordinal(self, z: float = 3.0) -> float: + def ordinal(self, z: float = 3.0, alpha: float = 1, target: float = 0) -> float: r""" A single scalar value that represents the player's skill where their true skill is 99.7% likely to be higher. - :param z: Integer that represents the variance of the skill of a - player. By default, set to 3. + :param z: Float that represents the number of standard deviations to subtract + from the mean. By default, set to 3.0, which corresponds to a + 99.7% confidence interval in a normal distribution. - :return: :math:`\mu - z * \sigma` + :param alpha: Float scaling factor applied to the entire calculation. + Adjusts the overall scale of the ordinal value. + Defaults to 1. + + :param target: Float value used to shift the ordinal value + towards a specific target. The shift is adjusted by the + alpha scaling factor. Defaults to 0. + + :return: :math:`\alpha \cdot ((\mu - z * \sigma) + \frac{\text{target}}{\alpha})` """ - return self.mu - z * self.sigma + return alpha * ((self.mu - z * self.sigma) + (target / alpha)) class BradleyTerryPartTeamRating: @@ -218,6 +226,7 @@ def _gamma( sigma_squared: float, team: Sequence[BradleyTerryPartRating], rank: int, + weights: Optional[List[float]] = None, ) -> float: """ Default gamma function for Bradley-Terry Partial Pairing. @@ -234,6 +243,8 @@ def _gamma( :param rank: The rank of the team. + :param weights: The weights of the players in a team. + :return: A number. """ return math.sqrt(sigma_squared) / c @@ -265,11 +276,13 @@ def __init__( float, Sequence[BradleyTerryPartRating], int, + Optional[List[float]], ], float, ] = _gamma, tau: float = 25.0 / 300.0, limit_sigma: bool = False, + balance: bool = False, ): r""" :param mu: Represents the initial belief about the skill of @@ -311,6 +324,8 @@ def __init__( :param limit_sigma: Boolean that determines whether to restrict the value of sigma from increasing. + :param balance: Boolean that determines whether to emphasize + rating outliers. """ # Model Parameters self.mu: float = float(mu) @@ -325,12 +340,14 @@ def __init__( float, Sequence[BradleyTerryPartRating], int, + Optional[List[float]], ], float, ] = gamma self.tau: float = float(tau) self.limit_sigma: bool = limit_sigma + self.balance: bool = balance # Model Data Container self.BradleyTerryPartRating: Type[BradleyTerryPartRating] = ( @@ -355,12 +372,12 @@ def rating( ) -> BradleyTerryPartRating: r""" Returns a new rating object with your default parameters. The given - parameters can be overriden from the defaults provided by the main + parameters can be overridden from the defaults provided by the main model, but is not recommended unless you know what you are doing. :param mu: Represents the initial belief about the skill of a player before any matches have been played. Known - mostly as the mean of the Guassian prior distribution. + mostly as the mean of the Gaussian prior distribution. *Represented by:* :math:`\mu` @@ -456,6 +473,7 @@ def rate( teams: List[List[BradleyTerryPartRating]], ranks: Optional[List[float]] = None, scores: Optional[List[float]] = None, + weights: Optional[List[List[float]]] = None, tau: Optional[float] = None, limit_sigma: Optional[bool] = None, ) -> List[List[BradleyTerryPartRating]]: @@ -465,12 +483,16 @@ def rate( :param teams: A list of teams where each team is a list of :class:`BradleyTerryPartRating` objects. - :param ranks: A list of Decimals where the lower values + :param ranks: A list of floats where the lower values represent winners. - :param scores: A list of Decimals where higher values + :param scores: A list of floats where higher values represent winners. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. + :param tau: Additive dynamics parameter that prevents sigma from getting too small to increase rating change volatility. @@ -535,6 +557,41 @@ def rate( f"not '{scores.__class__.__name__}'." ) + # Catch weights argument errors + if weights: + if isinstance(weights, list): + if len(weights) != len(teams): + raise ValueError( + f"Argument 'weights' must have the same number of elements as" + f" 'teams', not {len(weights)}." + ) + + for index, team_weights in enumerate(weights): + if isinstance(team_weights, list): + if len(team_weights) != len(teams[index]): + raise ValueError( + f"Argument 'weights' must have the same number of elements" + f"as each team in 'teams', not {len(team_weights)}." + ) + for weight in team_weights: + if isinstance(weight, (int, float)): + pass + else: + raise TypeError( + f"Argument 'weights' must be a list of lists of 'float' values, " + f"not '{weight.__class__.__name__}'." + ) + else: + raise TypeError( + f"Argument 'weights' must be a list of lists of 'float' values, " + f"not '{team_weights.__class__.__name__}'." + ) + else: + raise TypeError( + f"Argument 'weights' must be a list of lists of 'float' values, " + f"not '{weights.__class__.__name__}'." + ) + # Deep Copy Teams original_teams = copy.deepcopy(teams) @@ -553,9 +610,17 @@ def rate( for score in scores: ranks.append(_unary_minus(score)) + # Normalize Weights + if weights: + weights = [_normalize(team_weights, 1, 2) for team_weights in weights] + tenet = None if ranks: rank_teams_unwound = _unwind(ranks, teams) + + if weights: + weights, _ = _unwind(ranks, weights) + ordered_teams = rank_teams_unwound[0] tenet = rank_teams_unwound[1] teams = ordered_teams @@ -563,7 +628,7 @@ def rate( processed_result = [] if ranks and tenet: - result = self._compute(teams, ranks) + result = self._compute(teams=teams, ranks=ranks, weights=weights) unwound_result = _unwind(tenet, result)[0] for item in unwound_result: team = [] @@ -571,7 +636,7 @@ def rate( team.append(player) processed_result.append(team) else: - result = self._compute(teams) + result = self._compute(teams=teams, weights=weights) for item in result: team = [] for player in item: @@ -638,7 +703,7 @@ def _sum_q(team_ratings: List[BradleyTerryPartTeamRating], c: float) -> List[flo :param c: The square root of the collective team sigma. - :return: A list of Decimals. + :return: A list of floats. """ sum_q: Dict[int, float] = {} @@ -664,7 +729,7 @@ def _a(team_ratings: List[BradleyTerryPartTeamRating]) -> List[int]: A_q = |\{s: r(s) = r(q)\}|, q = 1,...,k :param team_ratings: The whole rating of a list of teams in a game. - :return: A list of Decimals. + :return: A list of ints. """ result = list( map( @@ -678,6 +743,7 @@ def _compute( self, teams: List[List[BradleyTerryPartRating]], ranks: Optional[List[float]] = None, + weights: Optional[List[List[float]]] = None, ) -> List[List[BradleyTerryPartRating]]: # Initialize Constants original_teams = teams @@ -685,28 +751,29 @@ def _compute( beta = self.beta adjacent_teams = _ladder_pairs(team_ratings) - def i_map( - team_i: BradleyTerryPartTeamRating, - adjacent_i: List[BradleyTerryPartTeamRating], - ) -> List[BradleyTerryPartRating]: - def od_reduce( - od: List[float], game_q: List[BradleyTerryPartTeamRating] - ) -> Tuple[float, float]: - omega, delta = od - for team_q in game_q: - c_iq = math.sqrt( - team_i.sigma_squared + team_q.sigma_squared + (2 * beta**2) - ) - p_iq = 1 / (1 + math.exp((team_q.mu - team_i.mu) / c_iq)) - sigma_squared_to_ciq = team_i.sigma_squared / c_iq + result = [] + for i, (team_i, adjacent_i) in enumerate(zip(team_ratings, adjacent_teams)): + omega = 0.0 + delta = 0.0 + + for q, team_q in enumerate(adjacent_i): + if q == i: + continue - s = 0.0 - if team_q.rank > team_i.rank: - s = 1 - elif team_q.rank == team_i.rank: - s = 0.5 + c_iq = math.sqrt( + team_i.sigma_squared + team_q.sigma_squared + (2 * beta**2) + ) + p_iq = 1 / (1 + math.exp((team_q.mu - team_i.mu) / c_iq)) + sigma_squared_to_ciq = team_i.sigma_squared / c_iq - omega += sigma_squared_to_ciq * (s - p_iq) + s = 0.0 + if team_q.rank > team_i.rank: + s = 1 + elif team_q.rank == team_i.rank: + s = 0.5 + + omega += sigma_squared_to_ciq * (s - p_iq) + if weights: gamma_value = self.gamma( c_iq, len(team_ratings), @@ -714,38 +781,62 @@ def od_reduce( team_i.sigma_squared, team_i.team, team_i.rank, + weights[i], ) - delta += ( - ((gamma_value * sigma_squared_to_ciq) / c_iq) - * p_iq - * (1 - p_iq) + else: + gamma_value = self.gamma( + c_iq, + len(team_ratings), + team_i.mu, + team_i.sigma_squared, + team_i.team, + team_i.rank, + None, ) - - return omega, delta - - i_omega, i_delta = od_reduce([0.0, 0.0], adjacent_i) + delta += ( + ((gamma_value * sigma_squared_to_ciq) / c_iq) * p_iq * (1 - p_iq) + ) intermediate_result_per_team = [] for j, j_players in enumerate(team_i.team): + + if weights: + weight = weights[i][j] + else: + weight = 1 + mu = j_players.mu sigma = j_players.sigma - mu += (sigma**2 / team_i.sigma_squared) * i_omega - sigma *= math.sqrt( - max(1 - (sigma**2 / team_i.sigma_squared) * i_delta, self.kappa), - ) - modified_player = team_i.team[j] + + if omega > 0: + mu += (sigma**2 / team_i.sigma_squared) * omega * weight + sigma *= math.sqrt( + max( + 1 - (sigma**2 / team_i.sigma_squared) * delta * weight, + self.kappa, + ), + ) + else: + mu += (sigma**2 / team_i.sigma_squared) * omega / weight + sigma *= math.sqrt( + max( + 1 - (sigma**2 / team_i.sigma_squared) * delta / weight, + self.kappa, + ), + ) + + modified_player = original_teams[i][j] modified_player.mu = mu modified_player.sigma = sigma intermediate_result_per_team.append(modified_player) - return intermediate_result_per_team - - return list(map(lambda i: i_map(i[0], i[1]), zip(team_ratings, adjacent_teams))) + result.append(intermediate_result_per_team) + return result def predict_win(self, teams: List[List[BradleyTerryPartRating]]) -> List[float]: r""" Predict how likely a match up against teams of one or more players will go. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. This is a generalization of the algorithm in :cite:p:`Ibstedt1322103` to asymmetric n-player n-teams. @@ -757,11 +848,10 @@ def predict_win(self, teams: List[List[BradleyTerryPartRating]]) -> List[float]: self._check_teams(teams) n = len(teams) - denominator = (n * (n - 1)) / 2 + total_player_count = sum(len(team) for team in teams) # 2 Player Case if n == 2: - total_player_count = len(teams[0]) + len(teams[1]) teams_ratings = self._calculate_team_ratings(teams) a = teams_ratings[0] b = teams_ratings[1] @@ -785,22 +875,26 @@ def predict_win(self, teams: List[List[BradleyTerryPartRating]]) -> List[float]: sigma_b = pair_b_subset[0].sigma_squared pairwise_probabilities.append( phi_major( - (mu_a - mu_b) / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) + (mu_a - mu_b) + / math.sqrt(total_player_count * self.beta**2 + sigma_a + sigma_b) ) ) - return [ - (sum(team_prob) / denominator) - for team_prob in itertools.zip_longest( - *[iter(pairwise_probabilities)] * (n - 1) - ) - ] + win_probabilities = [] + for i in range(n): + team_win_probability = sum( + pairwise_probabilities[j] for j in range(i * (n - 1), (i + 1) * (n - 1)) + ) / (n - 1) + win_probabilities.append(team_win_probability) + + total_probability = sum(win_probabilities) + return [probability / total_probability for probability in win_probabilities] def predict_draw(self, teams: List[List[BradleyTerryPartRating]]) -> float: r""" Predict how likely a match up against teams of one or more players will draw. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. :return: The odds of a draw. @@ -808,8 +902,7 @@ def predict_draw(self, teams: List[List[BradleyTerryPartRating]]) -> float: # Check Arguments self._check_teams(teams) - n = len(teams) - total_player_count = sum([len(_) for _ in teams]) + total_player_count = sum(len(team) for team in teams) draw_probability = 1 / total_player_count draw_margin = ( math.sqrt(total_player_count) @@ -818,7 +911,7 @@ def predict_draw(self, teams: List[List[BradleyTerryPartRating]]) -> float: ) pairwise_probabilities = [] - for pair_a, pair_b in itertools.permutations(teams, 2): + for pair_a, pair_b in itertools.combinations(teams, 2): pair_a_subset = self._calculate_team_ratings([pair_a]) pair_b_subset = self._calculate_team_ratings([pair_b]) mu_a = pair_a_subset[0].mu @@ -828,26 +921,22 @@ def predict_draw(self, teams: List[List[BradleyTerryPartRating]]) -> float: pairwise_probabilities.append( phi_major( (draw_margin - mu_a + mu_b) - / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) + / math.sqrt(total_player_count * self.beta**2 + sigma_a + sigma_b) ) - phi_major( - (mu_a - mu_b - draw_margin) - / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) + (mu_b - mu_a - draw_margin) + / math.sqrt(total_player_count * self.beta**2 + sigma_a + sigma_b) ) ) - denominator = 1 - if n > 2: - denominator = n * (n - 1) - - return abs(sum(pairwise_probabilities)) / denominator + return sum(pairwise_probabilities) / len(pairwise_probabilities) def predict_rank( self, teams: List[List[BradleyTerryPartRating]] ) -> List[Tuple[int, float]]: r""" Predict the shape of a match outcome. This algorithm has a time - complexity of :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the + complexity of :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. @@ -856,47 +945,45 @@ def predict_rank( self._check_teams(teams) n = len(teams) - total_player_count = sum([len(_) for _ in teams]) - denom = (n * (n - 1)) / 2 - draw_probability = 1 / total_player_count - draw_margin = ( - math.sqrt(total_player_count) - * self.beta - * phi_major_inverse((1 + draw_probability) / 2) + total_player_count = sum(len(team) for team in teams) + team_ratings = self._calculate_team_ratings(teams) + + win_probabilities = [] + for i, team_i in enumerate(team_ratings): + team_win_probability = 0.0 + for j, team_j in enumerate(team_ratings): + if i != j: + team_win_probability += phi_major( + (team_i.mu - team_j.mu) + / math.sqrt( + total_player_count * self.beta**2 + + team_i.sigma_squared + + team_j.sigma_squared + ) + ) + win_probabilities.append(team_win_probability / (n - 1)) + + total_probability = sum(win_probabilities) + normalized_probabilities = [p / total_probability for p in win_probabilities] + + sorted_teams = sorted( + enumerate(normalized_probabilities), key=lambda x: x[1], reverse=True ) - pairwise_probabilities = [] - for pair_a, pair_b in itertools.permutations(teams, 2): - pair_a_subset = self._calculate_team_ratings([pair_a]) - pair_b_subset = self._calculate_team_ratings([pair_b]) - mu_a = pair_a_subset[0].mu - sigma_a = pair_a_subset[0].sigma_squared - mu_b = pair_b_subset[0].mu - sigma_b = pair_b_subset[0].sigma_squared - pairwise_probabilities.append( - phi_major( - (mu_a - mu_b - draw_margin) - / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) - ) - ) - win_probability = [ - (sum(team_prob) / denom) - for team_prob in itertools.zip_longest( - *[iter(pairwise_probabilities)] * (n - 1) - ) - ] + ranks = [0] * n + current_rank = 1 + for i, (team_index, _) in enumerate(sorted_teams): + if i > 0 and sorted_teams[i][1] < sorted_teams[i - 1][1]: + current_rank = i + 1 + ranks[team_index] = current_rank - ranked_probability = [abs(_) for _ in win_probability] - ranks = list(_rank_data(ranked_probability)) - max_ordinal = max(ranks) - ranks = [abs(_ - max_ordinal) + 1 for _ in ranks] - predictions = list(zip(ranks, ranked_probability)) - return predictions + return list(zip(ranks, normalized_probabilities)) def _calculate_team_ratings( self, game: Sequence[Sequence[BradleyTerryPartRating]], ranks: Optional[List[float]] = None, + weights: Optional[List[List[float]]] = None, ) -> List[BradleyTerryPartTeamRating]: """ Get the team ratings of a game. @@ -906,6 +993,11 @@ def _calculate_team_ratings( :param ranks: A list of ranks for each team in the game. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. The values should be normalized + from 0 to 1. + :return: A list of :class:`BradleyTerryPartTeamRating` objects. """ if ranks: @@ -915,10 +1007,23 @@ def _calculate_team_ratings( result = [] for index, team in enumerate(game): - mu_summed = reduce(lambda x, y: x + y, map(lambda p: p.mu, team)) - sigma_squared = reduce(lambda x, y: x + y, map(lambda p: p.sigma**2, team)) + sorted_team = sorted(team, key=lambda p: p.ordinal(), reverse=True) + max_ordinal = sorted_team[0].ordinal() + + mu_summed = 0.0 + sigma_squared_summed = 0.0 + for player in sorted_team: + if self.balance: + ordinal_diff = max_ordinal - player.ordinal() + balance_weight = 1 + (ordinal_diff / (max_ordinal + self.kappa)) + else: + balance_weight = 1.0 + mu_summed += player.mu * balance_weight + sigma_squared_summed += (player.sigma * balance_weight) ** 2 result.append( - BradleyTerryPartTeamRating(mu_summed, sigma_squared, team, rank[index]) + BradleyTerryPartTeamRating( + mu_summed, sigma_squared_summed, team, rank[index] + ) ) return result diff --git a/openskill/models/weng_lin/plackett_luce.py b/openskill/models/weng_lin/plackett_luce.py index 9c849c6..8487977 100644 --- a/openskill/models/weng_lin/plackett_luce.py +++ b/openskill/models/weng_lin/plackett_luce.py @@ -7,10 +7,9 @@ import itertools import math import uuid -from functools import reduce from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Type -from openskill.models.common import _rank_data, _unary_minus +from openskill.models.common import _normalize, _unary_minus from openskill.models.weng_lin.common import _unwind, phi_major, phi_major_inverse __all__: List[str] = ["PlackettLuce", "PlackettLuceRating"] @@ -133,17 +132,26 @@ def __ge__(self, other: "PlackettLuceRating") -> bool: "You can only compare PlackettLuceRating objects with each other." ) - def ordinal(self, z: float = 3.0) -> float: + def ordinal(self, z: float = 3.0, alpha: float = 1, target: float = 0) -> float: r""" A single scalar value that represents the player's skill where their true skill is 99.7% likely to be higher. - :param z: Integer that represents the variance of the skill of a - player. By default, set to 3. + :param z: Float that represents the number of standard deviations to subtract + from the mean. By default, set to 3.0, which corresponds to a + 99.7% confidence interval in a normal distribution. - :return: :math:`\mu - z * \sigma` + :param alpha: Float scaling factor applied to the entire calculation. + Adjusts the overall scale of the ordinal value. + Defaults to 1. + + :param target: Float value used to shift the ordinal value + towards a specific target. The shift is adjusted by the + alpha scaling factor. Defaults to 0. + + :return: :math:`\alpha \cdot ((\mu - z * \sigma) + \frac{\text{target}}{\alpha})` """ - return self.mu - z * self.sigma + return alpha * ((self.mu - z * self.sigma) + (target / alpha)) class PlackettLuceTeamRating: @@ -215,6 +223,7 @@ def _gamma( sigma_squared: float, team: Sequence[PlackettLuceRating], rank: int, + weights: Optional[List[float]] = None, ) -> float: """ Default gamma function for Plackett-Luce. @@ -231,6 +240,8 @@ def _gamma( :param rank: The rank of the team. + :param weights: The weights of the players in a team. + :return: A number. """ return math.sqrt(sigma_squared) / c @@ -263,16 +274,18 @@ def __init__( float, Sequence[PlackettLuceRating], int, + Optional[List[float]], ], float, ] = _gamma, tau: float = 25.0 / 300.0, limit_sigma: bool = False, + balance: bool = False, ): r""" :param mu: Represents the initial belief about the skill of a player before any matches have been played. Known - mostly as the mean of the Guassian prior distribution. + mostly as the mean of the Gaussian prior distribution. *Represented by:* :math:`\mu` @@ -309,6 +322,8 @@ def __init__( :param limit_sigma: Boolean that determines whether to restrict the value of sigma from increasing. + :param balance: Boolean that determines whether to emphasize + rating outliers. """ # Model Parameters self.mu: float = float(mu) @@ -323,12 +338,14 @@ def __init__( float, Sequence[PlackettLuceRating], int, + Optional[List[float]], ], float, ] = gamma self.tau: float = float(tau) self.limit_sigma: bool = limit_sigma + self.balance: bool = balance # Model Data Container self.PlackettLuceRating: Type[PlackettLuceRating] = PlackettLuceRating @@ -351,12 +368,12 @@ def rating( ) -> PlackettLuceRating: r""" Returns a new rating object with your default parameters. The given - parameters can be overriden from the defaults provided by the main + parameters can be overridden from the defaults provided by the main model, but is not recommended unless you know what you are doing. :param mu: Represents the initial belief about the skill of a player before any matches have been played. Known - mostly as the mean of the Guassian prior distribution. + mostly as the mean of the Gaussian prior distribution. *Represented by:* :math:`\mu` @@ -451,6 +468,7 @@ def rate( teams: List[List[PlackettLuceRating]], ranks: Optional[List[float]] = None, scores: Optional[List[float]] = None, + weights: Optional[List[List[float]]] = None, tau: Optional[float] = None, limit_sigma: Optional[bool] = None, ) -> List[List[PlackettLuceRating]]: @@ -460,12 +478,16 @@ def rate( :param teams: A list of teams where each team is a list of :class:`PlackettLuceRating` objects. - :param ranks: A list of Decimals where the lower values + :param ranks: A list of floats where the lower values represent winners. - :param scores: A list of Decimals where higher values + :param scores: A list of floats where higher values represent winners. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. + :param tau: Additive dynamics parameter that prevents sigma from getting too small to increase rating change volatility. @@ -530,6 +552,41 @@ def rate( f"not '{scores.__class__.__name__}'." ) + # Catch weights argument errors + if weights: + if isinstance(weights, list): + if len(weights) != len(teams): + raise ValueError( + f"Argument 'weights' must have the same number of elements as" + f" 'teams', not {len(weights)}." + ) + + for index, team_weights in enumerate(weights): + if isinstance(team_weights, list): + if len(team_weights) != len(teams[index]): + raise ValueError( + f"Argument 'weights' must have the same number of elements" + f"as each team in 'teams', not {len(team_weights)}." + ) + for weight in team_weights: + if isinstance(weight, (int, float)): + pass + else: + raise TypeError( + f"Argument 'weights' must be a list of lists of 'float' values, " + f"not '{weight.__class__.__name__}'." + ) + else: + raise TypeError( + f"Argument 'weights' must be a list of lists of 'float' values, " + f"not '{team_weights.__class__.__name__}'." + ) + else: + raise TypeError( + f"Argument 'weights' must be a list of lists of 'float' values, " + f"not '{weights.__class__.__name__}'." + ) + # Deep Copy Teams original_teams = copy.deepcopy(teams) @@ -548,9 +605,17 @@ def rate( for score in scores: ranks.append(_unary_minus(score)) + # Normalize Weights + if weights: + weights = [_normalize(team_weights, 1, 2) for team_weights in weights] + tenet = None if ranks: rank_teams_unwound = _unwind(ranks, teams) + + if weights: + weights, _ = _unwind(ranks, weights) + ordered_teams = rank_teams_unwound[0] tenet = rank_teams_unwound[1] teams = ordered_teams @@ -558,7 +623,7 @@ def rate( processed_result = [] if ranks and tenet: - result = self._compute(teams, ranks) + result = self._compute(teams=teams, ranks=ranks, weights=weights) unwound_result = _unwind(tenet, result)[0] for item in unwound_result: team = [] @@ -566,7 +631,7 @@ def rate( team.append(player) processed_result.append(team) else: - result = self._compute(teams) + result = self._compute(teams=teams, weights=weights) for item in result: team = [] for player in item: @@ -633,7 +698,7 @@ def _sum_q(team_ratings: List[PlackettLuceTeamRating], c: float) -> List[float]: :param c: The square root of the collective team sigma. - :return: A list of Decimals. + :return: A list of floats. """ sum_q: Dict[int, float] = {} @@ -659,7 +724,7 @@ def _a(team_ratings: List[PlackettLuceTeamRating]) -> List[int]: A_q = |\{s: r(s) = r(q)\}|, q = 1,...,k :param team_ratings: The whole rating of a list of teams in a game. - :return: A list of Decimals. + :return: A list of ints. """ result = list( map( @@ -673,6 +738,7 @@ def _compute( self, teams: Sequence[Sequence[PlackettLuceRating]], ranks: Optional[List[float]] = None, + weights: Optional[List[List[float]]] = None, ) -> List[List[PlackettLuceRating]]: # Initialize Constants original_teams = teams @@ -701,24 +767,56 @@ def _compute( omega *= team_i.sigma_squared / c delta *= team_i.sigma_squared / c**2 - gamma_value = self.gamma( - c, - len(team_ratings), - team_i.mu, - team_i.sigma_squared, - team_i.team, - team_i.rank, - ) + if weights: + gamma_value = self.gamma( + c, + len(team_ratings), + team_i.mu, + team_i.sigma_squared, + team_i.team, + team_i.rank, + weights[i], + ) + else: + gamma_value = self.gamma( + c, + len(team_ratings), + team_i.mu, + team_i.sigma_squared, + team_i.team, + team_i.rank, + None, + ) delta *= gamma_value intermediate_result_per_team = [] for j, j_players in enumerate(team_i.team): + + if weights: + weight = weights[i][j] + else: + weight = 1 + mu = j_players.mu sigma = j_players.sigma - mu += (sigma**2 / team_i.sigma_squared) * omega - sigma *= math.sqrt( - max(1 - (sigma**2 / team_i.sigma_squared) * delta, self.kappa), - ) + + if omega > 0: + mu += (sigma**2 / team_i.sigma_squared) * omega * weight + sigma *= math.sqrt( + max( + 1 - (sigma**2 / team_i.sigma_squared) * delta * weight, + self.kappa, + ), + ) + else: + mu += (sigma**2 / team_i.sigma_squared) * omega / weight + sigma *= math.sqrt( + max( + 1 - (sigma**2 / team_i.sigma_squared) * delta / weight, + self.kappa, + ), + ) + modified_player = original_teams[i][j] modified_player.mu = mu modified_player.sigma = sigma @@ -730,7 +828,7 @@ def predict_win(self, teams: List[List[PlackettLuceRating]]) -> List[float]: r""" Predict how likely a match up against teams of one or more players will go. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. This is a generalization of the algorithm in :cite:p:`Ibstedt1322103` to asymmetric n-player n-teams. @@ -742,11 +840,10 @@ def predict_win(self, teams: List[List[PlackettLuceRating]]) -> List[float]: self._check_teams(teams) n = len(teams) - denominator = (n * (n - 1)) / 2 + total_player_count = sum(len(team) for team in teams) # 2 Player Case if n == 2: - total_player_count = len(teams[0]) + len(teams[1]) teams_ratings = self._calculate_team_ratings(teams) a = teams_ratings[0] b = teams_ratings[1] @@ -770,22 +867,26 @@ def predict_win(self, teams: List[List[PlackettLuceRating]]) -> List[float]: sigma_b = pair_b_subset[0].sigma_squared pairwise_probabilities.append( phi_major( - (mu_a - mu_b) / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) + (mu_a - mu_b) + / math.sqrt(total_player_count * self.beta**2 + sigma_a + sigma_b) ) ) - return [ - (sum(team_prob) / denominator) - for team_prob in itertools.zip_longest( - *[iter(pairwise_probabilities)] * (n - 1) - ) - ] + win_probabilities = [] + for i in range(n): + team_win_probability = sum( + pairwise_probabilities[j] for j in range(i * (n - 1), (i + 1) * (n - 1)) + ) / (n - 1) + win_probabilities.append(team_win_probability) + + total_probability = sum(win_probabilities) + return [probability / total_probability for probability in win_probabilities] def predict_draw(self, teams: List[List[PlackettLuceRating]]) -> float: r""" Predict how likely a match up against teams of one or more players will draw. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. :return: The odds of a draw. @@ -793,8 +894,7 @@ def predict_draw(self, teams: List[List[PlackettLuceRating]]) -> float: # Check Arguments self._check_teams(teams) - n = len(teams) - total_player_count = sum([len(_) for _ in teams]) + total_player_count = sum(len(team) for team in teams) draw_probability = 1 / total_player_count draw_margin = ( math.sqrt(total_player_count) @@ -803,7 +903,7 @@ def predict_draw(self, teams: List[List[PlackettLuceRating]]) -> float: ) pairwise_probabilities = [] - for pair_a, pair_b in itertools.permutations(teams, 2): + for pair_a, pair_b in itertools.combinations(teams, 2): pair_a_subset = self._calculate_team_ratings([pair_a]) pair_b_subset = self._calculate_team_ratings([pair_b]) mu_a = pair_a_subset[0].mu @@ -813,26 +913,22 @@ def predict_draw(self, teams: List[List[PlackettLuceRating]]) -> float: pairwise_probabilities.append( phi_major( (draw_margin - mu_a + mu_b) - / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) + / math.sqrt(total_player_count * self.beta**2 + sigma_a + sigma_b) ) - phi_major( - (mu_a - mu_b - draw_margin) - / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) + (mu_b - mu_a - draw_margin) + / math.sqrt(total_player_count * self.beta**2 + sigma_a + sigma_b) ) ) - denominator = 1 - if n > 2: - denominator = n * (n - 1) - - return abs(sum(pairwise_probabilities)) / denominator + return sum(pairwise_probabilities) / len(pairwise_probabilities) def predict_rank( self, teams: List[List[PlackettLuceRating]] ) -> List[Tuple[int, float]]: r""" Predict the shape of a match outcome. This algorithm has a time - complexity of :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the + complexity of :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. @@ -841,47 +937,45 @@ def predict_rank( self._check_teams(teams) n = len(teams) - total_player_count = sum([len(_) for _ in teams]) - denom = (n * (n - 1)) / 2 - draw_probability = 1 / total_player_count - draw_margin = ( - math.sqrt(total_player_count) - * self.beta - * phi_major_inverse((1 + draw_probability) / 2) + total_player_count = sum(len(team) for team in teams) + team_ratings = self._calculate_team_ratings(teams) + + win_probabilities = [] + for i, team_i in enumerate(team_ratings): + team_win_probability = 0.0 + for j, team_j in enumerate(team_ratings): + if i != j: + team_win_probability += phi_major( + (team_i.mu - team_j.mu) + / math.sqrt( + total_player_count * self.beta**2 + + team_i.sigma_squared + + team_j.sigma_squared + ) + ) + win_probabilities.append(team_win_probability / (n - 1)) + + total_probability = sum(win_probabilities) + normalized_probabilities = [p / total_probability for p in win_probabilities] + + sorted_teams = sorted( + enumerate(normalized_probabilities), key=lambda x: x[1], reverse=True ) - pairwise_probabilities = [] - for pair_a, pair_b in itertools.permutations(teams, 2): - pair_a_subset = self._calculate_team_ratings([pair_a]) - pair_b_subset = self._calculate_team_ratings([pair_b]) - mu_a = pair_a_subset[0].mu - sigma_a = pair_a_subset[0].sigma_squared - mu_b = pair_b_subset[0].mu - sigma_b = pair_b_subset[0].sigma_squared - pairwise_probabilities.append( - phi_major( - (mu_a - mu_b - draw_margin) - / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) - ) - ) - win_probability = [ - (sum(team_prob) / denom) - for team_prob in itertools.zip_longest( - *[iter(pairwise_probabilities)] * (n - 1) - ) - ] + ranks = [0] * n + current_rank = 1 + for i, (team_index, _) in enumerate(sorted_teams): + if i > 0 and sorted_teams[i][1] < sorted_teams[i - 1][1]: + current_rank = i + 1 + ranks[team_index] = current_rank - ranked_probability = [abs(_) for _ in win_probability] - ranks = list(_rank_data(ranked_probability)) - max_ordinal = max(ranks) - ranks = [abs(_ - max_ordinal) + 1 for _ in ranks] - predictions = list(zip(ranks, ranked_probability)) - return predictions + return list(zip(ranks, normalized_probabilities)) def _calculate_team_ratings( self, game: Sequence[Sequence[PlackettLuceRating]], ranks: Optional[List[float]] = None, + weights: Optional[List[List[float]]] = None, ) -> List[PlackettLuceTeamRating]: """ Get the team ratings of a game. @@ -891,6 +985,11 @@ def _calculate_team_ratings( :param ranks: A list of ranks for each team in the game. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. The values should be normalized + from 0 to 1. + :return: A list of :class:`PlackettLuceTeamRating` objects. """ if ranks: @@ -900,10 +999,23 @@ def _calculate_team_ratings( result = [] for index, team in enumerate(game): - mu_summed = reduce(lambda x, y: x + y, map(lambda p: p.mu, team)) - sigma_squared = reduce(lambda x, y: x + y, map(lambda p: p.sigma**2, team)) + sorted_team = sorted(team, key=lambda p: p.ordinal(), reverse=True) + max_ordinal = sorted_team[0].ordinal() + + mu_summed = 0.0 + sigma_squared_summed = 0.0 + for player in sorted_team: + if self.balance: + ordinal_diff = max_ordinal - player.ordinal() + balance_weight = 1 + (ordinal_diff / (max_ordinal + self.kappa)) + else: + balance_weight = 1.0 + mu_summed += player.mu * balance_weight + sigma_squared_summed += (player.sigma * balance_weight) ** 2 result.append( - PlackettLuceTeamRating(mu_summed, sigma_squared, team, rank[index]) + PlackettLuceTeamRating( + mu_summed, sigma_squared_summed, team, rank[index] + ) ) return result diff --git a/openskill/models/weng_lin/thurstone_mosteller_full.py b/openskill/models/weng_lin/thurstone_mosteller_full.py index 671bd19..88f1857 100644 --- a/openskill/models/weng_lin/thurstone_mosteller_full.py +++ b/openskill/models/weng_lin/thurstone_mosteller_full.py @@ -7,10 +7,9 @@ import itertools import math import uuid -from functools import reduce from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Type -from openskill.models.common import _rank_data, _unary_minus +from openskill.models.common import _normalize, _unary_minus from openskill.models.weng_lin.common import ( _unwind, phi_major, @@ -40,7 +39,7 @@ def __init__( r""" :param mu: Represents the initial belief about the skill of a player before any matches have been played. Known - mostly as the mean of the Guassian prior distribution. + mostly as the mean of the Gaussian prior distribution. *Represented by:* :math:`\mu` @@ -143,17 +142,26 @@ def __ge__(self, other: "ThurstoneMostellerFullRating") -> bool: "You can only compare ThurstoneMostellerFullRating objects with each other." ) - def ordinal(self, z: float = 3.0) -> float: + def ordinal(self, z: float = 3.0, alpha: float = 1, target: float = 0) -> float: r""" A single scalar value that represents the player's skill where their true skill is 99.7% likely to be higher. - :param z: Integer that represents the variance of the skill of a - player. By default, set to 3. + :param z: Float that represents the number of standard deviations to subtract + from the mean. By default, set to 3.0, which corresponds to a + 99.7% confidence interval in a normal distribution. - :return: :math:`\mu - z * \sigma` + :param alpha: Float scaling factor applied to the entire calculation. + Adjusts the overall scale of the ordinal value. + Defaults to 1. + + :param target: Float value used to shift the ordinal value + towards a specific target. The shift is adjusted by the + alpha scaling factor. Defaults to 0. + + :return: :math:`\alpha \cdot ((\mu - z * \sigma) + \frac{\text{target}}{\alpha})` """ - return self.mu - z * self.sigma + return alpha * ((self.mu - z * self.sigma) + (target / alpha)) class ThurstoneMostellerFullTeamRating: @@ -171,7 +179,7 @@ def __init__( r""" :param mu: Represents the initial belief about the collective skill of a team before any matches have been played. Known - mostly as the mean of the Guassian prior distribution. + mostly as the mean of the Gaussian prior distribution. *Represented by:* :math:`\mu` @@ -183,7 +191,7 @@ def __init__( :param team: A list of Thurstone-Mosteller Full Pairing player ratings. - :param rank: The rank of the team within a gam + :param rank: The rank of the team within a game. """ self.mu = float(mu) self.sigma_squared = float(sigma_squared) @@ -223,6 +231,7 @@ def _gamma( sigma_squared: float, team: Sequence[ThurstoneMostellerFullRating], rank: int, + weights: Optional[List[float]] = None, ) -> float: """ Default gamma function for Thurstone-Mosteller Full Pairing. @@ -239,6 +248,8 @@ def _gamma( :param rank: The rank of the team. + :param weights: The weights of the players in a team. + :return: A number. """ return math.sqrt(sigma_squared) / c @@ -271,16 +282,18 @@ def __init__( float, Sequence[ThurstoneMostellerFullRating], int, + Optional[List[float]], ], float, ] = _gamma, tau: float = 25.0 / 300.0, limit_sigma: bool = False, + balance: bool = False, ): r""" :param mu: Represents the initial belief about the skill of a player before any matches have been played. Known - mostly as the mean of the Guassian prior distribution. + mostly as the mean of the Gaussian prior distribution. *Represented by:* :math:`\mu` @@ -317,6 +330,8 @@ def __init__( :param limit_sigma: Boolean that determines whether to restrict the value of sigma from increasing. + :param balance: Boolean that determines whether to emphasize + rating outliers. """ # Model Parameters self.mu: float = float(mu) @@ -331,12 +346,14 @@ def __init__( float, Sequence[ThurstoneMostellerFullRating], int, + Optional[List[float]], ], float, ] = gamma self.tau: float = float(tau) self.limit_sigma: bool = limit_sigma + self.balance: bool = balance # Model Data Container self.ThurstoneMostellerFullRating: Type[ThurstoneMostellerFullRating] = ( @@ -361,12 +378,12 @@ def rating( ) -> ThurstoneMostellerFullRating: r""" Returns a new rating object with your default parameters. The given - parameters can be overriden from the defaults provided by the main + parameters can be overridden from the defaults provided by the main model, but is not recommended unless you know what you are doing. :param mu: Represents the initial belief about the skill of a player before any matches have been played. Known - mostly as the mean of the Guassian prior distribution. + mostly as the mean of the Gaussian prior distribution. *Represented by:* :math:`\mu` @@ -466,6 +483,7 @@ def rate( teams: List[List[ThurstoneMostellerFullRating]], ranks: Optional[List[float]] = None, scores: Optional[List[float]] = None, + weights: Optional[List[List[float]]] = None, tau: Optional[float] = None, limit_sigma: Optional[bool] = None, ) -> List[List[ThurstoneMostellerFullRating]]: @@ -475,12 +493,16 @@ def rate( :param teams: A list of teams where each team is a list of :class:`ThurstoneMostellerFullRating` objects. - :param ranks: A list of Decimals where the lower values + :param ranks: A list of floats where the lower values represent winners. - :param scores: A list of Decimals where higher values + :param scores: A list of floats where higher values represent winners. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. + :param tau: Additive dynamics parameter that prevents sigma from getting too small to increase rating change volatility. @@ -545,6 +567,41 @@ def rate( f"not '{scores.__class__.__name__}'." ) + # Catch weights argument errors + if weights: + if isinstance(weights, list): + if len(weights) != len(teams): + raise ValueError( + f"Argument 'weights' must have the same number of elements as" + f" 'teams', not {len(weights)}." + ) + + for index, team_weights in enumerate(weights): + if isinstance(team_weights, list): + if len(team_weights) != len(teams[index]): + raise ValueError( + f"Argument 'weights' must have the same number of elements" + f"as each team in 'teams', not {len(team_weights)}." + ) + for weight in team_weights: + if isinstance(weight, (int, float)): + pass + else: + raise TypeError( + f"Argument 'weights' must be a list of lists of 'float' values, " + f"not '{weight.__class__.__name__}'." + ) + else: + raise TypeError( + f"Argument 'weights' must be a list of lists of 'float' values, " + f"not '{team_weights.__class__.__name__}'." + ) + else: + raise TypeError( + f"Argument 'weights' must be a list of lists of 'float' values, " + f"not '{weights.__class__.__name__}'." + ) + # Deep Copy Teams original_teams = copy.deepcopy(teams) @@ -563,9 +620,17 @@ def rate( for score in scores: ranks.append(_unary_minus(score)) + # Normalize Weights + if weights: + weights = [_normalize(team_weights, 1, 2) for team_weights in weights] + tenet = None if ranks: rank_teams_unwound = _unwind(ranks, teams) + + if weights: + weights, _ = _unwind(ranks, weights) + ordered_teams = rank_teams_unwound[0] tenet = rank_teams_unwound[1] teams = ordered_teams @@ -573,7 +638,7 @@ def rate( processed_result = [] if ranks and tenet: - result = self._compute(teams, ranks) + result = self._compute(teams=teams, ranks=ranks, weights=weights) unwound_result = _unwind(tenet, result)[0] for item in unwound_result: team = [] @@ -581,7 +646,7 @@ def rate( team.append(player) processed_result.append(team) else: - result = self._compute(teams) + result = self._compute(teams=teams, weights=weights) for item in result: team = [] for player in item: @@ -650,7 +715,7 @@ def _sum_q( :param c: The square root of the collective team sigma. - :return: A list of Decimals. + :return: A list of floats. """ sum_q: Dict[int, float] = {} @@ -676,7 +741,7 @@ def _a(team_ratings: List[ThurstoneMostellerFullTeamRating]) -> List[int]: A_q = |\{s: r(s) = r(q)\}|, q = 1,...,k :param team_ratings: The whole rating of a list of teams in a game. - :return: A list of Decimals. + :return: A list of floats. """ result = list( map( @@ -690,14 +755,12 @@ def _compute( self, teams: Sequence[Sequence[ThurstoneMostellerFullRating]], ranks: Optional[List[float]] = None, + weights: Optional[List[List[float]]] = None, ) -> List[List[ThurstoneMostellerFullRating]]: # Initialize Constants original_teams = teams team_ratings = self._calculate_team_ratings(teams, ranks=ranks) beta = self.beta - c = self._c(team_ratings) - sum_q = self._sum_q(team_ratings, c) - a = self._a(team_ratings) result = [] for i, team_i in enumerate(team_ratings): @@ -713,14 +776,26 @@ def _compute( ) delta_mu = (team_i.mu - team_q.mu) / c_iq sigma_squared_to_ciq = team_i.sigma_squared / c_iq - gamma_value = self.gamma( - c_iq, - len(team_ratings), - team_i.mu, - team_i.sigma_squared, - team_i.team, - team_i.rank, - ) + if weights: + gamma_value = self.gamma( + c_iq, + len(team_ratings), + team_i.mu, + team_i.sigma_squared, + team_i.team, + team_i.rank, + weights[i], + ) + else: + gamma_value = self.gamma( + c_iq, + len(team_ratings), + team_i.mu, + team_i.sigma_squared, + team_i.team, + team_i.rank, + None, + ) if team_q.rank > team_i.rank: omega += sigma_squared_to_ciq * v(delta_mu, self.kappa / c_iq) @@ -749,12 +824,32 @@ def _compute( intermediate_result_per_team = [] for j, j_players in enumerate(team_i.team): + + if weights: + weight = weights[i][j] + else: + weight = 1 + mu = j_players.mu sigma = j_players.sigma - mu += (sigma**2 / team_i.sigma_squared) * omega - sigma *= math.sqrt( - max(1 - (sigma**2 / team_i.sigma_squared) * delta, self.kappa), - ) + + if omega > 0: + mu += (sigma**2 / team_i.sigma_squared) * omega * weight + sigma *= math.sqrt( + max( + 1 - (sigma**2 / team_i.sigma_squared) * delta * weight, + self.kappa, + ), + ) + else: + mu += (sigma**2 / team_i.sigma_squared) * omega / weight + sigma *= math.sqrt( + max( + 1 - (sigma**2 / team_i.sigma_squared) * delta / weight, + self.kappa, + ), + ) + modified_player = original_teams[i][j] modified_player.mu = mu modified_player.sigma = sigma @@ -768,7 +863,7 @@ def predict_win( r""" Predict how likely a match up against teams of one or more players will go. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. This is a generalization of the algorithm in :cite:p:`Ibstedt1322103` to asymmetric n-player n-teams. @@ -780,11 +875,10 @@ def predict_win( self._check_teams(teams) n = len(teams) - denominator = (n * (n - 1)) / 2 + total_player_count = sum(len(team) for team in teams) # 2 Player Case if n == 2: - total_player_count = len(teams[0]) + len(teams[1]) teams_ratings = self._calculate_team_ratings(teams) a = teams_ratings[0] b = teams_ratings[1] @@ -808,22 +902,26 @@ def predict_win( sigma_b = pair_b_subset[0].sigma_squared pairwise_probabilities.append( phi_major( - (mu_a - mu_b) / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) + (mu_a - mu_b) + / math.sqrt(total_player_count * self.beta**2 + sigma_a + sigma_b) ) ) - return [ - (sum(team_prob) / denominator) - for team_prob in itertools.zip_longest( - *[iter(pairwise_probabilities)] * (n - 1) - ) - ] + win_probabilities = [] + for i in range(n): + team_win_probability = sum( + pairwise_probabilities[j] for j in range(i * (n - 1), (i + 1) * (n - 1)) + ) / (n - 1) + win_probabilities.append(team_win_probability) + + total_probability = sum(win_probabilities) + return [probability / total_probability for probability in win_probabilities] def predict_draw(self, teams: List[List[ThurstoneMostellerFullRating]]) -> float: r""" Predict how likely a match up against teams of one or more players will draw. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. :return: The odds of a draw. @@ -831,8 +929,7 @@ def predict_draw(self, teams: List[List[ThurstoneMostellerFullRating]]) -> float # Check Arguments self._check_teams(teams) - n = len(teams) - total_player_count = sum([len(_) for _ in teams]) + total_player_count = sum(len(team) for team in teams) draw_probability = 1 / total_player_count draw_margin = ( math.sqrt(total_player_count) @@ -841,7 +938,7 @@ def predict_draw(self, teams: List[List[ThurstoneMostellerFullRating]]) -> float ) pairwise_probabilities = [] - for pair_a, pair_b in itertools.permutations(teams, 2): + for pair_a, pair_b in itertools.combinations(teams, 2): pair_a_subset = self._calculate_team_ratings([pair_a]) pair_b_subset = self._calculate_team_ratings([pair_b]) mu_a = pair_a_subset[0].mu @@ -851,75 +948,70 @@ def predict_draw(self, teams: List[List[ThurstoneMostellerFullRating]]) -> float pairwise_probabilities.append( phi_major( (draw_margin - mu_a + mu_b) - / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) + / math.sqrt(total_player_count * self.beta**2 + sigma_a + sigma_b) ) - phi_major( - (mu_a - mu_b - draw_margin) - / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) + (mu_b - mu_a - draw_margin) + / math.sqrt(total_player_count * self.beta**2 + sigma_a + sigma_b) ) ) - denominator = 1 - if n > 2: - denominator = n * (n - 1) - - return abs(sum(pairwise_probabilities)) / denominator + return sum(pairwise_probabilities) / len(pairwise_probabilities) def predict_rank( self, teams: List[List[ThurstoneMostellerFullRating]] ) -> List[Tuple[int, float]]: r""" Predict the shape of a match outcome. This algorithm has a time - complexity of :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the + complexity of :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. :return: A list of team ranks with their probabilities. """ + # Check Arguments self._check_teams(teams) n = len(teams) - total_player_count = sum([len(_) for _ in teams]) - denom = (n * (n - 1)) / 2 - draw_probability = 1 / total_player_count - draw_margin = ( - math.sqrt(total_player_count) - * self.beta - * phi_major_inverse((1 + draw_probability) / 2) + total_player_count = sum(len(team) for team in teams) + team_ratings = self._calculate_team_ratings(teams) + + win_probabilities = [] + for i, team_i in enumerate(team_ratings): + team_win_probability = 0.0 + for j, team_j in enumerate(team_ratings): + if i != j: + team_win_probability += phi_major( + (team_i.mu - team_j.mu) + / math.sqrt( + total_player_count * self.beta**2 + + team_i.sigma_squared + + team_j.sigma_squared + ) + ) + win_probabilities.append(team_win_probability / (n - 1)) + + total_probability = sum(win_probabilities) + normalized_probabilities = [p / total_probability for p in win_probabilities] + + sorted_teams = sorted( + enumerate(normalized_probabilities), key=lambda x: x[1], reverse=True ) - pairwise_probabilities = [] - for pair_a, pair_b in itertools.permutations(teams, 2): - pair_a_subset = self._calculate_team_ratings([pair_a]) - pair_b_subset = self._calculate_team_ratings([pair_b]) - mu_a = pair_a_subset[0].mu - sigma_a = pair_a_subset[0].sigma_squared - mu_b = pair_b_subset[0].mu - sigma_b = pair_b_subset[0].sigma_squared - pairwise_probabilities.append( - phi_major( - (mu_a - mu_b - draw_margin) - / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) - ) - ) - win_probability = [ - (sum(team_prob) / denom) - for team_prob in itertools.zip_longest( - *[iter(pairwise_probabilities)] * (n - 1) - ) - ] + ranks = [0] * n + current_rank = 1 + for i, (team_index, _) in enumerate(sorted_teams): + if i > 0 and sorted_teams[i][1] < sorted_teams[i - 1][1]: + current_rank = i + 1 + ranks[team_index] = current_rank - ranked_probability = [abs(_) for _ in win_probability] - ranks = list(_rank_data(ranked_probability)) - max_ordinal = max(ranks) - ranks = [abs(_ - max_ordinal) + 1 for _ in ranks] - predictions = list(zip(ranks, ranked_probability)) - return predictions + return list(zip(ranks, normalized_probabilities)) def _calculate_team_ratings( self, game: Sequence[Sequence[ThurstoneMostellerFullRating]], ranks: Optional[List[float]] = None, + weights: Optional[List[List[float]]] = None, ) -> List[ThurstoneMostellerFullTeamRating]: """ Get the team ratings of a game. @@ -929,6 +1021,11 @@ def _calculate_team_ratings( :param ranks: A list of ranks for each team in the game. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. The values should be normalized + from 0 to 1. + :return: A list of :class:`ThurstoneMostellerFullTeamRating` objects. """ if ranks: @@ -938,11 +1035,22 @@ def _calculate_team_ratings( result = [] for index, team in enumerate(game): - mu_summed = reduce(lambda x, y: x + y, map(lambda p: p.mu, team)) - sigma_squared = reduce(lambda x, y: x + y, map(lambda p: p.sigma**2, team)) + sorted_team = sorted(team, key=lambda p: p.ordinal(), reverse=True) + max_ordinal = sorted_team[0].ordinal() + + mu_summed = 0.0 + sigma_squared_summed = 0.0 + for player in sorted_team: + if self.balance: + ordinal_diff = max_ordinal - player.ordinal() + balance_weight = 1 + (ordinal_diff / (max_ordinal + self.kappa)) + else: + balance_weight = 1.0 + mu_summed += player.mu * balance_weight + sigma_squared_summed += (player.sigma * balance_weight) ** 2 result.append( ThurstoneMostellerFullTeamRating( - mu_summed, sigma_squared, team, rank[index] + mu_summed, sigma_squared_summed, team, rank[index] ) ) return result diff --git a/openskill/models/weng_lin/thurstone_mosteller_part.py b/openskill/models/weng_lin/thurstone_mosteller_part.py index b85f653..2695e8a 100644 --- a/openskill/models/weng_lin/thurstone_mosteller_part.py +++ b/openskill/models/weng_lin/thurstone_mosteller_part.py @@ -7,10 +7,9 @@ import itertools import math import uuid -from functools import reduce from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Type -from openskill.models.common import _rank_data, _unary_minus +from openskill.models.common import _normalize, _unary_minus from openskill.models.weng_lin.common import ( _ladder_pairs, _unwind, @@ -144,17 +143,26 @@ def __ge__(self, other: "ThurstoneMostellerPartRating") -> bool: "You can only compare ThurstoneMostellerPartRating objects with each other." ) - def ordinal(self, z: float = 3.0) -> float: + def ordinal(self, z: float = 3.0, alpha: float = 1, target: float = 0) -> float: r""" A single scalar value that represents the player's skill where their true skill is 99.7% likely to be higher. - :param z: Integer that represents the variance of the skill of a - player. By default, set to 3. + :param z: Float that represents the number of standard deviations to subtract + from the mean. By default, set to 3.0, which corresponds to a + 99.7% confidence interval in a normal distribution. - :return: :math:`\mu - z * \sigma` + :param alpha: Float scaling factor applied to the entire calculation. + Adjusts the overall scale of the ordinal value. + Defaults to 1. + + :param target: Float value used to shift the ordinal value + towards a specific target. The shift is adjusted by the + alpha scaling factor. Defaults to 0. + + :return: :math:`\alpha \cdot ((\mu - z * \sigma) + \frac{\text{target}}{\alpha})` """ - return self.mu - z * self.sigma + return alpha * ((self.mu - z * self.sigma) + (target / alpha)) class ThurstoneMostellerPartTeamRating: @@ -224,6 +232,7 @@ def _gamma( sigma_squared: float, team: Sequence[ThurstoneMostellerPartRating], rank: int, + weights: Optional[List[float]] = None, ) -> float: """ Default gamma function for Thurstone-Mosteller Partial Pairing. @@ -240,6 +249,8 @@ def _gamma( :param rank: The rank of the team. + :param weights: The weights of the players in a team. + :return: A number. """ return math.sqrt(sigma_squared) / c @@ -273,11 +284,13 @@ def __init__( float, Sequence[ThurstoneMostellerPartRating], int, + Optional[List[float]], ], float, ] = _gamma, tau: float = 25.0 / 300.0, limit_sigma: bool = False, + balance: bool = False, ): r""" :param mu: Represents the initial belief about the skill of @@ -319,6 +332,8 @@ def __init__( :param limit_sigma: Boolean that determines whether to restrict the value of sigma from increasing. + :param balance: Boolean that determines whether to emphasize + rating outliers. """ # Model Parameters self.mu: float = float(mu) @@ -333,12 +348,14 @@ def __init__( float, Sequence[ThurstoneMostellerPartRating], int, + Optional[List[float]], ], float, ] = gamma self.tau: float = float(tau) self.limit_sigma: bool = limit_sigma + self.balance: bool = balance # Model Data Container self.ThurstoneMostellerPartRating: Type[ThurstoneMostellerPartRating] = ( @@ -363,12 +380,12 @@ def rating( ) -> ThurstoneMostellerPartRating: r""" Returns a new rating object with your default parameters. The given - parameters can be overriden from the defaults provided by the main + parameters can be overridden from the defaults provided by the main model, but is not recommended unless you know what you are doing. :param mu: Represents the initial belief about the skill of a player before any matches have been played. Known - mostly as the mean of the Guassian prior distribution. + mostly as the mean of the Gaussian prior distribution. *Represented by:* :math:`\mu` @@ -468,6 +485,7 @@ def rate( teams: List[List[ThurstoneMostellerPartRating]], ranks: Optional[List[float]] = None, scores: Optional[List[float]] = None, + weights: Optional[List[List[float]]] = None, tau: Optional[float] = None, limit_sigma: Optional[bool] = None, ) -> List[List[ThurstoneMostellerPartRating]]: @@ -477,12 +495,16 @@ def rate( :param teams: A list of teams where each team is a list of :class:`ThurstoneMostellerPartRating` objects. - :param ranks: A list of Decimals where the lower values + :param ranks: A list of floats where the lower values represent winners. - :param scores: A list of Decimals where higher values + :param scores: A list of floats where higher values represent winners. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. + :param tau: Additive dynamics parameter that prevents sigma from getting too small to increase rating change volatility. @@ -547,6 +569,41 @@ def rate( f"not '{scores.__class__.__name__}'." ) + # Catch weights argument errors + if weights: + if isinstance(weights, list): + if len(weights) != len(teams): + raise ValueError( + f"Argument 'weights' must have the same number of elements as" + f" 'teams', not {len(weights)}." + ) + + for index, team_weights in enumerate(weights): + if isinstance(team_weights, list): + if len(team_weights) != len(teams[index]): + raise ValueError( + f"Argument 'weights' must have the same number of elements" + f"as each team in 'teams', not {len(team_weights)}." + ) + for weight in team_weights: + if isinstance(weight, (int, float)): + pass + else: + raise TypeError( + f"Argument 'weights' must be a list of lists of 'float' values, " + f"not '{weight.__class__.__name__}'." + ) + else: + raise TypeError( + f"Argument 'weights' must be a list of lists of 'float' values, " + f"not '{team_weights.__class__.__name__}'." + ) + else: + raise TypeError( + f"Argument 'weights' must be a list of lists of 'float' values, " + f"not '{weights.__class__.__name__}'." + ) + # Deep Copy Teams original_teams = copy.deepcopy(teams) @@ -565,9 +622,17 @@ def rate( for score in scores: ranks.append(_unary_minus(score)) + # Normalize Weights + if weights: + weights = [_normalize(team_weights, 1, 2) for team_weights in weights] + tenet = None if ranks: rank_teams_unwound = _unwind(ranks, teams) + + if weights: + weights, _ = _unwind(ranks, weights) + ordered_teams = rank_teams_unwound[0] tenet = rank_teams_unwound[1] teams = ordered_teams @@ -575,7 +640,7 @@ def rate( processed_result = [] if ranks and tenet: - result = self._compute(teams, ranks) + result = self._compute(teams=teams, ranks=ranks, weights=weights) unwound_result = _unwind(tenet, result)[0] for item in unwound_result: team = [] @@ -583,7 +648,7 @@ def rate( team.append(player) processed_result.append(team) else: - result = self._compute(teams) + result = self._compute(teams=teams, weights=weights) for item in result: team = [] for player in item: @@ -652,7 +717,7 @@ def _sum_q( :param c: The square root of the collective team sigma. - :return: A list of Decimals. + :return: A list of floats. """ sum_q: Dict[int, float] = {} @@ -678,7 +743,7 @@ def _a(team_ratings: List[ThurstoneMostellerPartTeamRating]) -> List[int]: A_q = |\{s: r(s) = r(q)\}|, q = 1,...,k :param team_ratings: The whole rating of a list of teams in a game. - :return: A list of Decimals. + :return: A list of ints. """ result = list( map( @@ -692,6 +757,7 @@ def _compute( self, teams: List[List[ThurstoneMostellerPartRating]], ranks: Optional[List[float]] = None, + weights: Optional[List[List[float]]] = None, ) -> List[List[ThurstoneMostellerPartRating]]: # Initialize Constants original_teams = teams @@ -699,20 +765,30 @@ def _compute( beta = self.beta adjacent_teams = _ladder_pairs(team_ratings) - def i_map( - team_i: ThurstoneMostellerPartTeamRating, - adjacent_i: List[ThurstoneMostellerPartTeamRating], - ) -> List[ThurstoneMostellerPartRating]: - def od_reduce( - od: List[float], game_q: List[ThurstoneMostellerPartTeamRating] - ) -> Tuple[float, float]: - omega, delta = od - for team_q in game_q: - c_iq = 2 * math.sqrt( - team_i.sigma_squared + team_q.sigma_squared + (2 * beta**2) + result = [] + for i, (team_i, adjacent_i) in enumerate(zip(team_ratings, adjacent_teams)): + omega = 0.0 + delta = 0.0 + + for q, team_q in enumerate(adjacent_i): + if q == i: + continue + c_iq = 2 * math.sqrt( + team_i.sigma_squared + team_q.sigma_squared + (2 * beta**2) + ) + delta_mu = (team_i.mu - team_q.mu) / c_iq + sigma_squared_to_c_iq = team_i.sigma_squared / c_iq + if weights: + gamma_value = self.gamma( + c_iq, + len(team_ratings), + team_i.mu, + team_i.sigma_squared, + team_i.team, + team_i.rank, + weights[i], ) - delta_mu = (team_i.mu - team_q.mu) / c_iq - sigma_squared_to_c_iq = team_i.sigma_squared / c_iq + else: gamma_value = self.gamma( c_iq, len(team_ratings), @@ -720,51 +796,65 @@ def od_reduce( team_i.sigma_squared, team_i.team, team_i.rank, + None, ) - if team_q.rank > team_i.rank: - omega += sigma_squared_to_c_iq * v(delta_mu, self.kappa / c_iq) - delta += ( - (gamma_value * sigma_squared_to_c_iq) - / c_iq - * w(delta_mu, self.kappa / c_iq) - ) - elif team_q.rank < team_i.rank: - omega += -sigma_squared_to_c_iq * v( - -delta_mu, self.kappa / c_iq - ) - delta += ( - (gamma_value * sigma_squared_to_c_iq) - / c_iq - * w(-delta_mu, self.kappa / c_iq) - ) - else: - omega += sigma_squared_to_c_iq * vt(delta_mu, self.kappa / c_iq) - delta += ( - (gamma_value * sigma_squared_to_c_iq) - / c_iq - * wt(delta_mu, self.kappa / c_iq) - ) - - return omega, delta - - i_omega, i_delta = od_reduce([0.0, 0.0], adjacent_i) + if team_q.rank > team_i.rank: + omega += sigma_squared_to_c_iq * v(delta_mu, self.kappa / c_iq) + delta += ( + (gamma_value * sigma_squared_to_c_iq) + / c_iq + * w(delta_mu, self.kappa / c_iq) + ) + elif team_q.rank < team_i.rank: + omega += -sigma_squared_to_c_iq * v(-delta_mu, self.kappa / c_iq) + delta += ( + (gamma_value * sigma_squared_to_c_iq) + / c_iq + * w(-delta_mu, self.kappa / c_iq) + ) + else: + omega += sigma_squared_to_c_iq * vt(delta_mu, self.kappa / c_iq) + delta += ( + (gamma_value * sigma_squared_to_c_iq) + / c_iq + * wt(delta_mu, self.kappa / c_iq) + ) intermediate_result_per_team = [] for j, j_players in enumerate(team_i.team): + + if weights: + weight = weights[i][j] + else: + weight = 1 + mu = j_players.mu sigma = j_players.sigma - mu += (sigma**2 / team_i.sigma_squared) * i_omega - sigma *= math.sqrt( - max(1 - (sigma**2 / team_i.sigma_squared) * i_delta, self.kappa), - ) + + if omega > 0: + mu += (sigma**2 / team_i.sigma_squared) * omega * weight + sigma *= math.sqrt( + max( + 1 - (sigma**2 / team_i.sigma_squared) * delta * weight, + self.kappa, + ), + ) + else: + mu += (sigma**2 / team_i.sigma_squared) * omega / weight + sigma *= math.sqrt( + max( + 1 - (sigma**2 / team_i.sigma_squared) * delta / weight, + self.kappa, + ), + ) + modified_player = team_i.team[j] modified_player.mu = mu modified_player.sigma = sigma intermediate_result_per_team.append(modified_player) - return intermediate_result_per_team - - return list(map(lambda i: i_map(i[0], i[1]), zip(team_ratings, adjacent_teams))) + result.append(intermediate_result_per_team) + return result def predict_win( self, teams: List[List[ThurstoneMostellerPartRating]] @@ -772,7 +862,7 @@ def predict_win( r""" Predict how likely a match up against teams of one or more players will go. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. This is a generalization of the algorithm in :cite:p:`Ibstedt1322103` to asymmetric n-player n-teams. @@ -784,11 +874,10 @@ def predict_win( self._check_teams(teams) n = len(teams) - denominator = (n * (n - 1)) / 2 + total_player_count = sum(len(team) for team in teams) # 2 Player Case if n == 2: - total_player_count = len(teams[0]) + len(teams[1]) teams_ratings = self._calculate_team_ratings(teams) a = teams_ratings[0] b = teams_ratings[1] @@ -812,22 +901,26 @@ def predict_win( sigma_b = pair_b_subset[0].sigma_squared pairwise_probabilities.append( phi_major( - (mu_a - mu_b) / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) + (mu_a - mu_b) + / math.sqrt(total_player_count * self.beta**2 + sigma_a + sigma_b) ) ) - return [ - (sum(team_prob) / denominator) - for team_prob in itertools.zip_longest( - *[iter(pairwise_probabilities)] * (n - 1) - ) - ] + win_probabilities = [] + for i in range(n): + team_win_probability = sum( + pairwise_probabilities[j] for j in range(i * (n - 1), (i + 1) * (n - 1)) + ) / (n - 1) + win_probabilities.append(team_win_probability) + + total_probability = sum(win_probabilities) + return [probability / total_probability for probability in win_probabilities] def predict_draw(self, teams: List[List[ThurstoneMostellerPartRating]]) -> float: r""" Predict how likely a match up against teams of one or more players will draw. This algorithm has a time complexity of - :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the number of teams. + :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. :return: The odds of a draw. @@ -835,8 +928,7 @@ def predict_draw(self, teams: List[List[ThurstoneMostellerPartRating]]) -> float # Check Arguments self._check_teams(teams) - n = len(teams) - total_player_count = sum([len(_) for _ in teams]) + total_player_count = sum(len(team) for team in teams) draw_probability = 1 / total_player_count draw_margin = ( math.sqrt(total_player_count) @@ -845,7 +937,7 @@ def predict_draw(self, teams: List[List[ThurstoneMostellerPartRating]]) -> float ) pairwise_probabilities = [] - for pair_a, pair_b in itertools.permutations(teams, 2): + for pair_a, pair_b in itertools.combinations(teams, 2): pair_a_subset = self._calculate_team_ratings([pair_a]) pair_b_subset = self._calculate_team_ratings([pair_b]) mu_a = pair_a_subset[0].mu @@ -855,26 +947,22 @@ def predict_draw(self, teams: List[List[ThurstoneMostellerPartRating]]) -> float pairwise_probabilities.append( phi_major( (draw_margin - mu_a + mu_b) - / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) + / math.sqrt(total_player_count * self.beta**2 + sigma_a + sigma_b) ) - phi_major( - (mu_a - mu_b - draw_margin) - / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) + (mu_b - mu_a - draw_margin) + / math.sqrt(total_player_count * self.beta**2 + sigma_a + sigma_b) ) ) - denominator = 1 - if n > 2: - denominator = n * (n - 1) - - return abs(sum(pairwise_probabilities)) / denominator + return sum(pairwise_probabilities) / len(pairwise_probabilities) def predict_rank( self, teams: List[List[ThurstoneMostellerPartRating]] ) -> List[Tuple[int, float]]: r""" Predict the shape of a match outcome. This algorithm has a time - complexity of :math:`\mathcal{0}(n!/(n - 2)!)` where 'n' is the + complexity of :math:`\mathcal{0}(n^2)` where 'n' is the number of teams. :param teams: A list of two or more teams. @@ -883,47 +971,45 @@ def predict_rank( self._check_teams(teams) n = len(teams) - total_player_count = sum([len(_) for _ in teams]) - denom = (n * (n - 1)) / 2 - draw_probability = 1 / total_player_count - draw_margin = ( - math.sqrt(total_player_count) - * self.beta - * phi_major_inverse((1 + draw_probability) / 2) + total_player_count = sum(len(team) for team in teams) + team_ratings = self._calculate_team_ratings(teams) + + win_probabilities = [] + for i, team_i in enumerate(team_ratings): + team_win_probability = 0.0 + for j, team_j in enumerate(team_ratings): + if i != j: + team_win_probability += phi_major( + (team_i.mu - team_j.mu) + / math.sqrt( + total_player_count * self.beta**2 + + team_i.sigma_squared + + team_j.sigma_squared + ) + ) + win_probabilities.append(team_win_probability / (n - 1)) + + total_probability = sum(win_probabilities) + normalized_probabilities = [p / total_probability for p in win_probabilities] + + sorted_teams = sorted( + enumerate(normalized_probabilities), key=lambda x: x[1], reverse=True ) - pairwise_probabilities = [] - for pair_a, pair_b in itertools.permutations(teams, 2): - pair_a_subset = self._calculate_team_ratings([pair_a]) - pair_b_subset = self._calculate_team_ratings([pair_b]) - mu_a = pair_a_subset[0].mu - sigma_a = pair_a_subset[0].sigma_squared - mu_b = pair_b_subset[0].mu - sigma_b = pair_b_subset[0].sigma_squared - pairwise_probabilities.append( - phi_major( - (mu_a - mu_b - draw_margin) - / math.sqrt(n * self.beta**2 + sigma_a + sigma_b) - ) - ) - win_probability = [ - (sum(team_prob) / denom) - for team_prob in itertools.zip_longest( - *[iter(pairwise_probabilities)] * (n - 1) - ) - ] + ranks = [0] * n + current_rank = 1 + for i, (team_index, _) in enumerate(sorted_teams): + if i > 0 and sorted_teams[i][1] < sorted_teams[i - 1][1]: + current_rank = i + 1 + ranks[team_index] = current_rank - ranked_probability = [abs(_) for _ in win_probability] - ranks = list(_rank_data(ranked_probability)) - max_ordinal = max(ranks) - ranks = [abs(_ - max_ordinal) + 1 for _ in ranks] - predictions = list(zip(ranks, ranked_probability)) - return predictions + return list(zip(ranks, normalized_probabilities)) def _calculate_team_ratings( self, game: Sequence[Sequence[ThurstoneMostellerPartRating]], ranks: Optional[List[float]] = None, + weights: Optional[List[List[float]]] = None, ) -> List[ThurstoneMostellerPartTeamRating]: """ Get the team ratings of a game. @@ -933,6 +1019,11 @@ def _calculate_team_ratings( :param ranks: A list of ranks for each team in the game. + :param weights: A list of lists of floats, where each inner list + represents the contribution of each player to the + team's performance. The values should be normalized + from 0 to 1. + :return: A list of :class:`ThurstoneMostellerPartTeamRating` objects. """ if ranks: @@ -942,11 +1033,22 @@ def _calculate_team_ratings( result = [] for index, team in enumerate(game): - mu_summed = reduce(lambda x, y: x + y, map(lambda p: p.mu, team)) - sigma_squared = reduce(lambda x, y: x + y, map(lambda p: p.sigma**2, team)) + sorted_team = sorted(team, key=lambda p: p.ordinal(), reverse=True) + max_ordinal = sorted_team[0].ordinal() + + mu_summed = 0.0 + sigma_squared_summed = 0.0 + for player in sorted_team: + if self.balance: + ordinal_diff = max_ordinal - player.ordinal() + balance_weight = 1 + (ordinal_diff / (max_ordinal + self.kappa)) + else: + balance_weight = 1.0 + mu_summed += player.mu * balance_weight + sigma_squared_summed += (player.sigma * balance_weight) ** 2 result.append( ThurstoneMostellerPartTeamRating( - mu_summed, sigma_squared, team, rank[index] + mu_summed, sigma_squared_summed, team, rank[index] ) ) return result diff --git a/pdm.lock b/pdm.lock index f8ff3ff..98ef4be 100644 --- a/pdm.lock +++ b/pdm.lock @@ -4,8 +4,8 @@ [metadata] groups = ["default", "docs", "tests", "benchmarks", "release"] strategy = ["cross_platform", "inherit_metadata"] -lock_version = "4.4.1" -content_hash = "sha256:b2574a883e41201017c63256b76e4ce310360cac450b524dbe1faa775ad839f5" +lock_version = "4.4.2" +content_hash = "sha256:6b1e4a8d356cd4f799c3e069bbf9d81045fd1a6b1a2ca44c557b278a955197a8" [[package]] name = "alabaster" @@ -19,14 +19,14 @@ files = [ ] [[package]] -name = "anyascii" -version = "0.3.2" -requires_python = ">=3.3" -summary = "Unicode to ASCII transliteration" -groups = ["docs"] +name = "annotated-types" +version = "0.7.0" +requires_python = ">=3.8" +summary = "Reusable constraint types to use with typing.Annotated" +groups = ["release"] files = [ - {file = "anyascii-0.3.2-py3-none-any.whl", hash = "sha256:3b3beef6fc43d9036d3b0529050b0c48bfad8bc960e9e562d7223cfb94fe45d4"}, - {file = "anyascii-0.3.2.tar.gz", hash = "sha256:9d5d32ef844fe225b8bc7cba7f950534fae4da27a9bf3a6bea2cb0ea46ce4730"}, + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] [[package]] @@ -73,7 +73,7 @@ name = "attrs" version = "23.2.0" requires_python = ">=3.7" summary = "Classes Without Boilerplate" -groups = ["benchmarks", "docs"] +groups = ["docs"] files = [ {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, @@ -118,7 +118,7 @@ files = [ [[package]] name = "black" -version = "24.3.0" +version = "24.4.2" requires_python = ">=3.8" summary = "The uncompromising code formatter." groups = ["release"] @@ -132,57 +132,57 @@ dependencies = [ "typing-extensions>=4.0.1; python_version < \"3.11\"", ] files = [ - {file = "black-24.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7d5e026f8da0322b5662fa7a8e752b3fa2dac1c1cbc213c3d7ff9bdd0ab12395"}, - {file = "black-24.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9f50ea1132e2189d8dff0115ab75b65590a3e97de1e143795adb4ce317934995"}, - {file = "black-24.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2af80566f43c85f5797365077fb64a393861a3730bd110971ab7a0c94e873e7"}, - {file = "black-24.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:4be5bb28e090456adfc1255e03967fb67ca846a03be7aadf6249096100ee32d0"}, - {file = "black-24.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4f1373a7808a8f135b774039f61d59e4be7eb56b2513d3d2f02a8b9365b8a8a9"}, - {file = "black-24.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:aadf7a02d947936ee418777e0247ea114f78aff0d0959461057cae8a04f20597"}, - {file = "black-24.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c02e4ea2ae09d16314d30912a58ada9a5c4fdfedf9512d23326128ac08ac3d"}, - {file = "black-24.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:bf21b7b230718a5f08bd32d5e4f1db7fc8788345c8aea1d155fc17852b3410f5"}, - {file = "black-24.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:2818cf72dfd5d289e48f37ccfa08b460bf469e67fb7c4abb07edc2e9f16fb63f"}, - {file = "black-24.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4acf672def7eb1725f41f38bf6bf425c8237248bb0804faa3965c036f7672d11"}, - {file = "black-24.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7ed6668cbbfcd231fa0dc1b137d3e40c04c7f786e626b405c62bcd5db5857e4"}, - {file = "black-24.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:56f52cfbd3dabe2798d76dbdd299faa046a901041faf2cf33288bc4e6dae57b5"}, - {file = "black-24.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c45f8dff244b3c431b36e3224b6be4a127c6aca780853574c00faf99258041eb"}, - {file = "black-24.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6905238a754ceb7788a73f02b45637d820b2f5478b20fec82ea865e4f5d4d9f7"}, - {file = "black-24.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7de8d330763c66663661a1ffd432274a2f92f07feeddd89ffd085b5744f85e7"}, - {file = "black-24.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:7bb041dca0d784697af4646d3b62ba4a6b028276ae878e53f6b4f74ddd6db99f"}, - {file = "black-24.3.0-py3-none-any.whl", hash = "sha256:41622020d7120e01d377f74249e677039d20e6344ff5851de8a10f11f513bf93"}, - {file = "black-24.3.0.tar.gz", hash = "sha256:a0c9c4a0771afc6919578cec71ce82a3e31e054904e7197deacbc9382671c41f"}, + {file = "black-24.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce"}, + {file = "black-24.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021"}, + {file = "black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063"}, + {file = "black-24.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96"}, + {file = "black-24.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474"}, + {file = "black-24.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c"}, + {file = "black-24.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb"}, + {file = "black-24.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1"}, + {file = "black-24.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d"}, + {file = "black-24.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04"}, + {file = "black-24.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc"}, + {file = "black-24.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0"}, + {file = "black-24.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1"}, + {file = "black-24.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741"}, + {file = "black-24.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e"}, + {file = "black-24.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7"}, + {file = "black-24.4.2-py3-none-any.whl", hash = "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c"}, + {file = "black-24.4.2.tar.gz", hash = "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d"}, ] [[package]] name = "black" -version = "24.3.0" +version = "24.4.2" extras = ["jupyter"] requires_python = ">=3.8" summary = "The uncompromising code formatter." groups = ["release"] dependencies = [ - "black==24.3.0", + "black==24.4.2", "ipython>=7.8.0", "tokenize-rt>=3.2.0", ] files = [ - {file = "black-24.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7d5e026f8da0322b5662fa7a8e752b3fa2dac1c1cbc213c3d7ff9bdd0ab12395"}, - {file = "black-24.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9f50ea1132e2189d8dff0115ab75b65590a3e97de1e143795adb4ce317934995"}, - {file = "black-24.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2af80566f43c85f5797365077fb64a393861a3730bd110971ab7a0c94e873e7"}, - {file = "black-24.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:4be5bb28e090456adfc1255e03967fb67ca846a03be7aadf6249096100ee32d0"}, - {file = "black-24.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4f1373a7808a8f135b774039f61d59e4be7eb56b2513d3d2f02a8b9365b8a8a9"}, - {file = "black-24.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:aadf7a02d947936ee418777e0247ea114f78aff0d0959461057cae8a04f20597"}, - {file = "black-24.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c02e4ea2ae09d16314d30912a58ada9a5c4fdfedf9512d23326128ac08ac3d"}, - {file = "black-24.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:bf21b7b230718a5f08bd32d5e4f1db7fc8788345c8aea1d155fc17852b3410f5"}, - {file = "black-24.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:2818cf72dfd5d289e48f37ccfa08b460bf469e67fb7c4abb07edc2e9f16fb63f"}, - {file = "black-24.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4acf672def7eb1725f41f38bf6bf425c8237248bb0804faa3965c036f7672d11"}, - {file = "black-24.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7ed6668cbbfcd231fa0dc1b137d3e40c04c7f786e626b405c62bcd5db5857e4"}, - {file = "black-24.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:56f52cfbd3dabe2798d76dbdd299faa046a901041faf2cf33288bc4e6dae57b5"}, - {file = "black-24.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c45f8dff244b3c431b36e3224b6be4a127c6aca780853574c00faf99258041eb"}, - {file = "black-24.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6905238a754ceb7788a73f02b45637d820b2f5478b20fec82ea865e4f5d4d9f7"}, - {file = "black-24.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7de8d330763c66663661a1ffd432274a2f92f07feeddd89ffd085b5744f85e7"}, - {file = "black-24.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:7bb041dca0d784697af4646d3b62ba4a6b028276ae878e53f6b4f74ddd6db99f"}, - {file = "black-24.3.0-py3-none-any.whl", hash = "sha256:41622020d7120e01d377f74249e677039d20e6344ff5851de8a10f11f513bf93"}, - {file = "black-24.3.0.tar.gz", hash = "sha256:a0c9c4a0771afc6919578cec71ce82a3e31e054904e7197deacbc9382671c41f"}, + {file = "black-24.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce"}, + {file = "black-24.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021"}, + {file = "black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063"}, + {file = "black-24.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96"}, + {file = "black-24.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474"}, + {file = "black-24.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c"}, + {file = "black-24.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb"}, + {file = "black-24.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1"}, + {file = "black-24.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d"}, + {file = "black-24.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04"}, + {file = "black-24.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc"}, + {file = "black-24.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0"}, + {file = "black-24.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1"}, + {file = "black-24.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741"}, + {file = "black-24.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e"}, + {file = "black-24.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7"}, + {file = "black-24.4.2-py3-none-any.whl", hash = "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c"}, + {file = "black-24.4.2.tar.gz", hash = "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d"}, ] [[package]] @@ -200,6 +200,17 @@ files = [ {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"}, ] +[[package]] +name = "bracex" +version = "2.4" +requires_python = ">=3.8" +summary = "Bash style brace expander." +groups = ["release"] +files = [ + {file = "bracex-2.4-py3-none-any.whl", hash = "sha256:efdc71eff95eaff5e0f8cfebe7d01adf2c8637c8c92edaf63ef348c241a82418"}, + {file = "bracex-2.4.tar.gz", hash = "sha256:a27eaf1df42cf561fed58b7a8f3fdf129d1ea16a81e1fadd1d17989bc6384beb"}, +] + [[package]] name = "build" version = "1.2.1" @@ -220,20 +231,23 @@ files = [ [[package]] name = "bump-my-version" -version = "0.9.3" -requires_python = ">=3.7" +version = "0.24.2" +requires_python = ">=3.8" summary = "Version bump your Python project" groups = ["release"] dependencies = [ "click", - "pydantic<2.0.0", + "pydantic-settings", + "pydantic>=2.0.0", + "questionary", "rich", "rich-click", "tomlkit", + "wcmatch>=8.5.1", ] files = [ - {file = "bump-my-version-0.9.3.tar.gz", hash = "sha256:4b046cb11ccf700c13a8b9cc3c97431a64ce38154ff8b62cc840e83444efc9ab"}, - {file = "bump_my_version-0.9.3-py3-none-any.whl", hash = "sha256:8455dbc9982c940b971c61f1e2929d29f3845898479b6bec28f94986ef561733"}, + {file = "bump_my_version-0.24.2-py3-none-any.whl", hash = "sha256:b7264acd237fad34712db1ee61aac29576ad1791a5c31b9fa0b55b34ba18e91f"}, + {file = "bump_my_version-0.24.2.tar.gz", hash = "sha256:38581935e821266df24f292bbfe73f1a4ded368b62e52b44218f31aeea2be13c"}, ] [[package]] @@ -431,7 +445,7 @@ name = "colorama" version = "0.4.6" requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" summary = "Cross-platform colored terminal text." -groups = ["benchmarks", "docs", "release", "tests"] +groups = ["docs", "release", "tests"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -453,109 +467,109 @@ files = [ [[package]] name = "coverage" -version = "7.4.4" +version = "7.6.0" requires_python = ">=3.8" summary = "Code coverage measurement for Python" groups = ["release", "tests"] files = [ - {file = "coverage-7.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0be5efd5127542ef31f165de269f77560d6cdef525fffa446de6f7e9186cfb2"}, - {file = "coverage-7.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ccd341521be3d1b3daeb41960ae94a5e87abe2f46f17224ba5d6f2b8398016cf"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fa497a8ab37784fbb20ab699c246053ac294d13fc7eb40ec007a5043ec91f8"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b1a93009cb80730c9bca5d6d4665494b725b6e8e157c1cb7f2db5b4b122ea562"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:690db6517f09336559dc0b5f55342df62370a48f5469fabf502db2c6d1cffcd2"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:09c3255458533cb76ef55da8cc49ffab9e33f083739c8bd4f58e79fecfe288f7"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8ce1415194b4a6bd0cdcc3a1dfbf58b63f910dcb7330fe15bdff542c56949f87"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b91cbc4b195444e7e258ba27ac33769c41b94967919f10037e6355e998af255c"}, - {file = "coverage-7.4.4-cp310-cp310-win32.whl", hash = "sha256:598825b51b81c808cb6f078dcb972f96af96b078faa47af7dfcdf282835baa8d"}, - {file = "coverage-7.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:09ef9199ed6653989ebbcaacc9b62b514bb63ea2f90256e71fea3ed74bd8ff6f"}, - {file = "coverage-7.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0f9f50e7ef2a71e2fae92774c99170eb8304e3fdf9c8c3c7ae9bab3e7229c5cf"}, - {file = "coverage-7.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:623512f8ba53c422fcfb2ce68362c97945095b864cda94a92edbaf5994201083"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0513b9508b93da4e1716744ef6ebc507aff016ba115ffe8ecff744d1322a7b63"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40209e141059b9370a2657c9b15607815359ab3ef9918f0196b6fccce8d3230f"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a2b2b78c78293782fd3767d53e6474582f62443d0504b1554370bde86cc8227"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:73bfb9c09951125d06ee473bed216e2c3742f530fc5acc1383883125de76d9cd"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f384c3cc76aeedce208643697fb3e8437604b512255de6d18dae3f27655a384"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:54eb8d1bf7cacfbf2a3186019bcf01d11c666bd495ed18717162f7eb1e9dd00b"}, - {file = "coverage-7.4.4-cp311-cp311-win32.whl", hash = "sha256:cac99918c7bba15302a2d81f0312c08054a3359eaa1929c7e4b26ebe41e9b286"}, - {file = "coverage-7.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:b14706df8b2de49869ae03a5ccbc211f4041750cd4a66f698df89d44f4bd30ec"}, - {file = "coverage-7.4.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:201bef2eea65e0e9c56343115ba3814e896afe6d36ffd37bab783261db430f76"}, - {file = "coverage-7.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:41c9c5f3de16b903b610d09650e5e27adbfa7f500302718c9ffd1c12cf9d6818"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d898fe162d26929b5960e4e138651f7427048e72c853607f2b200909794ed978"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ea79bb50e805cd6ac058dfa3b5c8f6c040cb87fe83de10845857f5535d1db70"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce4b94265ca988c3f8e479e741693d143026632672e3ff924f25fab50518dd51"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:00838a35b882694afda09f85e469c96367daa3f3f2b097d846a7216993d37f4c"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:fdfafb32984684eb03c2d83e1e51f64f0906b11e64482df3c5db936ce3839d48"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:69eb372f7e2ece89f14751fbcbe470295d73ed41ecd37ca36ed2eb47512a6ab9"}, - {file = "coverage-7.4.4-cp312-cp312-win32.whl", hash = "sha256:137eb07173141545e07403cca94ab625cc1cc6bc4c1e97b6e3846270e7e1fea0"}, - {file = "coverage-7.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:d71eec7d83298f1af3326ce0ff1d0ea83c7cb98f72b577097f9083b20bdaf05e"}, - {file = "coverage-7.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3b799445b9f7ee8bf299cfaed6f5b226c0037b74886a4e11515e569b36fe310d"}, - {file = "coverage-7.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b4d33f418f46362995f1e9d4f3a35a1b6322cb959c31d88ae56b0298e1c22357"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aadacf9a2f407a4688d700e4ebab33a7e2e408f2ca04dbf4aef17585389eff3e"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c95949560050d04d46b919301826525597f07b33beba6187d04fa64d47ac82e"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff7687ca3d7028d8a5f0ebae95a6e4827c5616b31a4ee1192bdfde697db110d4"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5fc1de20b2d4a061b3df27ab9b7c7111e9a710f10dc2b84d33a4ab25065994ec"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c74880fc64d4958159fbd537a091d2a585448a8f8508bf248d72112723974cbd"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:742a76a12aa45b44d236815d282b03cfb1de3b4323f3e4ec933acfae08e54ade"}, - {file = "coverage-7.4.4-cp39-cp39-win32.whl", hash = "sha256:d89d7b2974cae412400e88f35d86af72208e1ede1a541954af5d944a8ba46c57"}, - {file = "coverage-7.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:9ca28a302acb19b6af89e90f33ee3e1906961f94b54ea37de6737b7ca9d8827c"}, - {file = "coverage-7.4.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:b2c5edc4ac10a7ef6605a966c58929ec6c1bd0917fb8c15cb3363f65aa40e677"}, - {file = "coverage-7.4.4.tar.gz", hash = "sha256:c901df83d097649e257e803be22592aedfd5182f07b3cc87d640bbb9afd50f49"}, + {file = "coverage-7.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dff044f661f59dace805eedb4a7404c573b6ff0cdba4a524141bc63d7be5c7fd"}, + {file = "coverage-7.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8659fd33ee9e6ca03950cfdcdf271d645cf681609153f218826dd9805ab585c"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7792f0ab20df8071d669d929c75c97fecfa6bcab82c10ee4adb91c7a54055463"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4b3cd1ca7cd73d229487fa5caca9e4bc1f0bca96526b922d61053ea751fe791"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7e128f85c0b419907d1f38e616c4f1e9f1d1b37a7949f44df9a73d5da5cd53c"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a94925102c89247530ae1dab7dc02c690942566f22e189cbd53579b0693c0783"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dcd070b5b585b50e6617e8972f3fbbee786afca71b1936ac06257f7e178f00f6"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d50a252b23b9b4dfeefc1f663c568a221092cbaded20a05a11665d0dbec9b8fb"}, + {file = "coverage-7.6.0-cp310-cp310-win32.whl", hash = "sha256:0e7b27d04131c46e6894f23a4ae186a6a2207209a05df5b6ad4caee6d54a222c"}, + {file = "coverage-7.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:54dece71673b3187c86226c3ca793c5f891f9fc3d8aa183f2e3653da18566169"}, + {file = "coverage-7.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7b525ab52ce18c57ae232ba6f7010297a87ced82a2383b1afd238849c1ff933"}, + {file = "coverage-7.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bea27c4269234e06f621f3fac3925f56ff34bc14521484b8f66a580aacc2e7d"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed8d1d1821ba5fc88d4a4f45387b65de52382fa3ef1f0115a4f7a20cdfab0e94"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01c322ef2bbe15057bc4bf132b525b7e3f7206f071799eb8aa6ad1940bcf5fb1"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03cafe82c1b32b770a29fd6de923625ccac3185a54a5e66606da26d105f37dac"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0d1b923fc4a40c5832be4f35a5dab0e5ff89cddf83bb4174499e02ea089daf57"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4b03741e70fb811d1a9a1d75355cf391f274ed85847f4b78e35459899f57af4d"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a73d18625f6a8a1cbb11eadc1d03929f9510f4131879288e3f7922097a429f63"}, + {file = "coverage-7.6.0-cp311-cp311-win32.whl", hash = "sha256:65fa405b837060db569a61ec368b74688f429b32fa47a8929a7a2f9b47183713"}, + {file = "coverage-7.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:6379688fb4cfa921ae349c76eb1a9ab26b65f32b03d46bb0eed841fd4cb6afb1"}, + {file = "coverage-7.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f7db0b6ae1f96ae41afe626095149ecd1b212b424626175a6633c2999eaad45b"}, + {file = "coverage-7.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bbdf9a72403110a3bdae77948b8011f644571311c2fb35ee15f0f10a8fc082e8"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc44bf0315268e253bf563f3560e6c004efe38f76db03a1558274a6e04bf5d5"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da8549d17489cd52f85a9829d0e1d91059359b3c54a26f28bec2c5d369524807"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0086cd4fc71b7d485ac93ca4239c8f75732c2ae3ba83f6be1c9be59d9e2c6382"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1fad32ee9b27350687035cb5fdf9145bc9cf0a094a9577d43e909948ebcfa27b"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:044a0985a4f25b335882b0966625270a8d9db3d3409ddc49a4eb00b0ef5e8cee"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:76d5f82213aa78098b9b964ea89de4617e70e0d43e97900c2778a50856dac605"}, + {file = "coverage-7.6.0-cp312-cp312-win32.whl", hash = "sha256:3c59105f8d58ce500f348c5b56163a4113a440dad6daa2294b5052a10db866da"}, + {file = "coverage-7.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:ca5d79cfdae420a1d52bf177de4bc2289c321d6c961ae321503b2ca59c17ae67"}, + {file = "coverage-7.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7221f9ac9dad9492cecab6f676b3eaf9185141539d5c9689d13fd6b0d7de840c"}, + {file = "coverage-7.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ddaaa91bfc4477d2871442bbf30a125e8fe6b05da8a0015507bfbf4718228ab2"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cbe651f3904e28f3a55d6f371203049034b4ddbce65a54527a3f189ca3b390"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:831b476d79408ab6ccfadaaf199906c833f02fdb32c9ab907b1d4aa0713cfa3b"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46c3d091059ad0b9c59d1034de74a7f36dcfa7f6d3bde782c49deb42438f2450"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4d5fae0a22dc86259dee66f2cc6c1d3e490c4a1214d7daa2a93d07491c5c04b6"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:07ed352205574aad067482e53dd606926afebcb5590653121063fbf4e2175166"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:49c76cdfa13015c4560702574bad67f0e15ca5a2872c6a125f6327ead2b731dd"}, + {file = "coverage-7.6.0-cp39-cp39-win32.whl", hash = "sha256:482855914928c8175735a2a59c8dc5806cf7d8f032e4820d52e845d1f731dca2"}, + {file = "coverage-7.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:543ef9179bc55edfd895154a51792b01c017c87af0ebaae092720152e19e42ca"}, + {file = "coverage-7.6.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:6fe885135c8a479d3e37a7aae61cbd3a0fb2deccb4dda3c25f92a49189f766d6"}, + {file = "coverage-7.6.0.tar.gz", hash = "sha256:289cc803fa1dc901f84701ac10c9ee873619320f2f9aff38794db4a4a0268d51"}, ] [[package]] name = "coverage" -version = "7.4.4" +version = "7.6.0" extras = ["toml"] requires_python = ">=3.8" summary = "Code coverage measurement for Python" groups = ["tests"] dependencies = [ - "coverage==7.4.4", + "coverage==7.6.0", "tomli; python_full_version <= \"3.11.0a6\"", ] files = [ - {file = "coverage-7.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0be5efd5127542ef31f165de269f77560d6cdef525fffa446de6f7e9186cfb2"}, - {file = "coverage-7.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ccd341521be3d1b3daeb41960ae94a5e87abe2f46f17224ba5d6f2b8398016cf"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fa497a8ab37784fbb20ab699c246053ac294d13fc7eb40ec007a5043ec91f8"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b1a93009cb80730c9bca5d6d4665494b725b6e8e157c1cb7f2db5b4b122ea562"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:690db6517f09336559dc0b5f55342df62370a48f5469fabf502db2c6d1cffcd2"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:09c3255458533cb76ef55da8cc49ffab9e33f083739c8bd4f58e79fecfe288f7"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8ce1415194b4a6bd0cdcc3a1dfbf58b63f910dcb7330fe15bdff542c56949f87"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b91cbc4b195444e7e258ba27ac33769c41b94967919f10037e6355e998af255c"}, - {file = "coverage-7.4.4-cp310-cp310-win32.whl", hash = "sha256:598825b51b81c808cb6f078dcb972f96af96b078faa47af7dfcdf282835baa8d"}, - {file = "coverage-7.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:09ef9199ed6653989ebbcaacc9b62b514bb63ea2f90256e71fea3ed74bd8ff6f"}, - {file = "coverage-7.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0f9f50e7ef2a71e2fae92774c99170eb8304e3fdf9c8c3c7ae9bab3e7229c5cf"}, - {file = "coverage-7.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:623512f8ba53c422fcfb2ce68362c97945095b864cda94a92edbaf5994201083"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0513b9508b93da4e1716744ef6ebc507aff016ba115ffe8ecff744d1322a7b63"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40209e141059b9370a2657c9b15607815359ab3ef9918f0196b6fccce8d3230f"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a2b2b78c78293782fd3767d53e6474582f62443d0504b1554370bde86cc8227"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:73bfb9c09951125d06ee473bed216e2c3742f530fc5acc1383883125de76d9cd"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f384c3cc76aeedce208643697fb3e8437604b512255de6d18dae3f27655a384"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:54eb8d1bf7cacfbf2a3186019bcf01d11c666bd495ed18717162f7eb1e9dd00b"}, - {file = "coverage-7.4.4-cp311-cp311-win32.whl", hash = "sha256:cac99918c7bba15302a2d81f0312c08054a3359eaa1929c7e4b26ebe41e9b286"}, - {file = "coverage-7.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:b14706df8b2de49869ae03a5ccbc211f4041750cd4a66f698df89d44f4bd30ec"}, - {file = "coverage-7.4.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:201bef2eea65e0e9c56343115ba3814e896afe6d36ffd37bab783261db430f76"}, - {file = "coverage-7.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:41c9c5f3de16b903b610d09650e5e27adbfa7f500302718c9ffd1c12cf9d6818"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d898fe162d26929b5960e4e138651f7427048e72c853607f2b200909794ed978"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ea79bb50e805cd6ac058dfa3b5c8f6c040cb87fe83de10845857f5535d1db70"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce4b94265ca988c3f8e479e741693d143026632672e3ff924f25fab50518dd51"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:00838a35b882694afda09f85e469c96367daa3f3f2b097d846a7216993d37f4c"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:fdfafb32984684eb03c2d83e1e51f64f0906b11e64482df3c5db936ce3839d48"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:69eb372f7e2ece89f14751fbcbe470295d73ed41ecd37ca36ed2eb47512a6ab9"}, - {file = "coverage-7.4.4-cp312-cp312-win32.whl", hash = "sha256:137eb07173141545e07403cca94ab625cc1cc6bc4c1e97b6e3846270e7e1fea0"}, - {file = "coverage-7.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:d71eec7d83298f1af3326ce0ff1d0ea83c7cb98f72b577097f9083b20bdaf05e"}, - {file = "coverage-7.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3b799445b9f7ee8bf299cfaed6f5b226c0037b74886a4e11515e569b36fe310d"}, - {file = "coverage-7.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b4d33f418f46362995f1e9d4f3a35a1b6322cb959c31d88ae56b0298e1c22357"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aadacf9a2f407a4688d700e4ebab33a7e2e408f2ca04dbf4aef17585389eff3e"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c95949560050d04d46b919301826525597f07b33beba6187d04fa64d47ac82e"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff7687ca3d7028d8a5f0ebae95a6e4827c5616b31a4ee1192bdfde697db110d4"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5fc1de20b2d4a061b3df27ab9b7c7111e9a710f10dc2b84d33a4ab25065994ec"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c74880fc64d4958159fbd537a091d2a585448a8f8508bf248d72112723974cbd"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:742a76a12aa45b44d236815d282b03cfb1de3b4323f3e4ec933acfae08e54ade"}, - {file = "coverage-7.4.4-cp39-cp39-win32.whl", hash = "sha256:d89d7b2974cae412400e88f35d86af72208e1ede1a541954af5d944a8ba46c57"}, - {file = "coverage-7.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:9ca28a302acb19b6af89e90f33ee3e1906961f94b54ea37de6737b7ca9d8827c"}, - {file = "coverage-7.4.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:b2c5edc4ac10a7ef6605a966c58929ec6c1bd0917fb8c15cb3363f65aa40e677"}, - {file = "coverage-7.4.4.tar.gz", hash = "sha256:c901df83d097649e257e803be22592aedfd5182f07b3cc87d640bbb9afd50f49"}, + {file = "coverage-7.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dff044f661f59dace805eedb4a7404c573b6ff0cdba4a524141bc63d7be5c7fd"}, + {file = "coverage-7.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8659fd33ee9e6ca03950cfdcdf271d645cf681609153f218826dd9805ab585c"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7792f0ab20df8071d669d929c75c97fecfa6bcab82c10ee4adb91c7a54055463"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4b3cd1ca7cd73d229487fa5caca9e4bc1f0bca96526b922d61053ea751fe791"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7e128f85c0b419907d1f38e616c4f1e9f1d1b37a7949f44df9a73d5da5cd53c"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a94925102c89247530ae1dab7dc02c690942566f22e189cbd53579b0693c0783"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dcd070b5b585b50e6617e8972f3fbbee786afca71b1936ac06257f7e178f00f6"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d50a252b23b9b4dfeefc1f663c568a221092cbaded20a05a11665d0dbec9b8fb"}, + {file = "coverage-7.6.0-cp310-cp310-win32.whl", hash = "sha256:0e7b27d04131c46e6894f23a4ae186a6a2207209a05df5b6ad4caee6d54a222c"}, + {file = "coverage-7.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:54dece71673b3187c86226c3ca793c5f891f9fc3d8aa183f2e3653da18566169"}, + {file = "coverage-7.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7b525ab52ce18c57ae232ba6f7010297a87ced82a2383b1afd238849c1ff933"}, + {file = "coverage-7.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bea27c4269234e06f621f3fac3925f56ff34bc14521484b8f66a580aacc2e7d"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed8d1d1821ba5fc88d4a4f45387b65de52382fa3ef1f0115a4f7a20cdfab0e94"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01c322ef2bbe15057bc4bf132b525b7e3f7206f071799eb8aa6ad1940bcf5fb1"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03cafe82c1b32b770a29fd6de923625ccac3185a54a5e66606da26d105f37dac"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0d1b923fc4a40c5832be4f35a5dab0e5ff89cddf83bb4174499e02ea089daf57"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4b03741e70fb811d1a9a1d75355cf391f274ed85847f4b78e35459899f57af4d"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a73d18625f6a8a1cbb11eadc1d03929f9510f4131879288e3f7922097a429f63"}, + {file = "coverage-7.6.0-cp311-cp311-win32.whl", hash = "sha256:65fa405b837060db569a61ec368b74688f429b32fa47a8929a7a2f9b47183713"}, + {file = "coverage-7.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:6379688fb4cfa921ae349c76eb1a9ab26b65f32b03d46bb0eed841fd4cb6afb1"}, + {file = "coverage-7.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f7db0b6ae1f96ae41afe626095149ecd1b212b424626175a6633c2999eaad45b"}, + {file = "coverage-7.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bbdf9a72403110a3bdae77948b8011f644571311c2fb35ee15f0f10a8fc082e8"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc44bf0315268e253bf563f3560e6c004efe38f76db03a1558274a6e04bf5d5"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da8549d17489cd52f85a9829d0e1d91059359b3c54a26f28bec2c5d369524807"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0086cd4fc71b7d485ac93ca4239c8f75732c2ae3ba83f6be1c9be59d9e2c6382"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1fad32ee9b27350687035cb5fdf9145bc9cf0a094a9577d43e909948ebcfa27b"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:044a0985a4f25b335882b0966625270a8d9db3d3409ddc49a4eb00b0ef5e8cee"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:76d5f82213aa78098b9b964ea89de4617e70e0d43e97900c2778a50856dac605"}, + {file = "coverage-7.6.0-cp312-cp312-win32.whl", hash = "sha256:3c59105f8d58ce500f348c5b56163a4113a440dad6daa2294b5052a10db866da"}, + {file = "coverage-7.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:ca5d79cfdae420a1d52bf177de4bc2289c321d6c961ae321503b2ca59c17ae67"}, + {file = "coverage-7.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7221f9ac9dad9492cecab6f676b3eaf9185141539d5c9689d13fd6b0d7de840c"}, + {file = "coverage-7.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ddaaa91bfc4477d2871442bbf30a125e8fe6b05da8a0015507bfbf4718228ab2"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cbe651f3904e28f3a55d6f371203049034b4ddbce65a54527a3f189ca3b390"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:831b476d79408ab6ccfadaaf199906c833f02fdb32c9ab907b1d4aa0713cfa3b"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46c3d091059ad0b9c59d1034de74a7f36dcfa7f6d3bde782c49deb42438f2450"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4d5fae0a22dc86259dee66f2cc6c1d3e490c4a1214d7daa2a93d07491c5c04b6"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:07ed352205574aad067482e53dd606926afebcb5590653121063fbf4e2175166"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:49c76cdfa13015c4560702574bad67f0e15ca5a2872c6a125f6327ead2b731dd"}, + {file = "coverage-7.6.0-cp39-cp39-win32.whl", hash = "sha256:482855914928c8175735a2a59c8dc5806cf7d8f032e4820d52e845d1f731dca2"}, + {file = "coverage-7.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:543ef9179bc55edfd895154a51792b01c017c87af0ebaae092720152e19e42ca"}, + {file = "coverage-7.6.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:6fe885135c8a479d3e37a7aae61cbd3a0fb2deccb4dda3c25f92a49189f766d6"}, + {file = "coverage-7.6.0.tar.gz", hash = "sha256:289cc803fa1dc901f84701ac10c9ee873619320f2f9aff38794db4a4a0268d51"}, ] [[package]] @@ -708,13 +722,13 @@ files = [ [[package]] name = "filelock" -version = "3.13.3" +version = "3.15.4" requires_python = ">=3.8" summary = "A platform independent file lock." groups = ["tests"] files = [ - {file = "filelock-3.13.3-py3-none-any.whl", hash = "sha256:5ffa845303983e7a0b7ae17636509bc97997d58afeafa72fb141a17b152284cb"}, - {file = "filelock-3.13.3.tar.gz", hash = "sha256:a79895a25bbefdf55d1a2a0a80968f7dbb28edcd6d4234a0afb3f37ecde4b546"}, + {file = "filelock-3.15.4-py3-none-any.whl", hash = "sha256:6ca1fffae96225dab4c6eaf1c4f4f28cd2568d3ec2a44e15a08520504de468e7"}, + {file = "filelock-3.15.4.tar.gz", hash = "sha256:2207938cbc1844345cb01a5a95524dae30f0ce089eba5b00378295a17e3e90cb"}, ] [[package]] @@ -791,7 +805,7 @@ files = [ [[package]] name = "ipykernel" -version = "6.29.4" +version = "6.29.5" requires_python = ">=3.8" summary = "IPython Kernel for Jupyter" groups = ["docs"] @@ -811,8 +825,8 @@ dependencies = [ "traitlets>=5.4.0", ] files = [ - {file = "ipykernel-6.29.4-py3-none-any.whl", hash = "sha256:1181e653d95c6808039c509ef8e67c4126b3b3af7781496c7cbfb5ed938a27da"}, - {file = "ipykernel-6.29.4.tar.gz", hash = "sha256:3d44070060f9475ac2092b760123fadf105d2e2493c24848b6691a7c4f42af5c"}, + {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, + {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, ] [[package]] @@ -932,31 +946,6 @@ files = [ {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, ] -[[package]] -name = "joblib" -version = "1.3.2" -requires_python = ">=3.7" -summary = "Lightweight pipelining with Python functions" -groups = ["benchmarks"] -files = [ - {file = "joblib-1.3.2-py3-none-any.whl", hash = "sha256:ef4331c65f239985f3f2220ecc87db222f08fd22097a3dd5698f693875f8cbb9"}, - {file = "joblib-1.3.2.tar.gz", hash = "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1"}, -] - -[[package]] -name = "jsonlines" -version = "3.1.0" -requires_python = ">=3.6" -summary = "Library with helpers for the jsonlines file format" -groups = ["benchmarks"] -dependencies = [ - "attrs>=19.2.0", -] -files = [ - {file = "jsonlines-3.1.0-py3-none-any.whl", hash = "sha256:632f5e38f93dfcb1ac8c4e09780b92af3a55f38f26e7c47ae85109d420b6ad39"}, - {file = "jsonlines-3.1.0.tar.gz", hash = "sha256:2579cb488d96f815b0eb81629e3e6b0332da0962a18fa3532958f7ba14a5c37f"}, -] - [[package]] name = "jsonschema" version = "4.21.1" @@ -1070,7 +1059,7 @@ name = "markdown-it-py" version = "3.0.0" requires_python = ">=3.8" summary = "Python port of markdown-it. Markdown parsing, done right!" -groups = ["benchmarks", "docs", "release"] +groups = ["docs", "release"] dependencies = [ "mdurl~=0.1", ] @@ -1162,7 +1151,7 @@ name = "mdurl" version = "0.1.2" requires_python = ">=3.7" summary = "Markdown URL utilities" -groups = ["benchmarks", "docs", "release"] +groups = ["docs", "release"] files = [ {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, @@ -1192,8 +1181,8 @@ files = [ [[package]] name = "mypy" -version = "1.4.1" -requires_python = ">=3.7" +version = "1.10.1" +requires_python = ">=3.8" summary = "Optional static typing for Python" groups = ["tests"] dependencies = [ @@ -1202,23 +1191,28 @@ dependencies = [ "typing-extensions>=4.1.0", ] files = [ - {file = "mypy-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:566e72b0cd6598503e48ea610e0052d1b8168e60a46e0bfd34b3acf2d57f96a8"}, - {file = "mypy-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ca637024ca67ab24a7fd6f65d280572c3794665eaf5edcc7e90a866544076878"}, - {file = "mypy-1.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dde1d180cd84f0624c5dcaaa89c89775550a675aff96b5848de78fb11adabcd"}, - {file = "mypy-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8c4d8e89aa7de683e2056a581ce63c46a0c41e31bd2b6d34144e2c80f5ea53dc"}, - {file = "mypy-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:bfdca17c36ae01a21274a3c387a63aa1aafe72bff976522886869ef131b937f1"}, - {file = "mypy-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7549fbf655e5825d787bbc9ecf6028731973f78088fbca3a1f4145c39ef09462"}, - {file = "mypy-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:98324ec3ecf12296e6422939e54763faedbfcc502ea4a4c38502082711867258"}, - {file = "mypy-1.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:141dedfdbfe8a04142881ff30ce6e6653c9685b354876b12e4fe6c78598b45e2"}, - {file = "mypy-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8207b7105829eca6f3d774f64a904190bb2231de91b8b186d21ffd98005f14a7"}, - {file = "mypy-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:16f0db5b641ba159eff72cff08edc3875f2b62b2fa2bc24f68c1e7a4e8232d01"}, - {file = "mypy-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c482e1246726616088532b5e964e39765b6d1520791348e6c9dc3af25b233828"}, - {file = "mypy-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:43b592511672017f5b1a483527fd2684347fdffc041c9ef53428c8dc530f79a3"}, - {file = "mypy-1.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34a9239d5b3502c17f07fd7c0b2ae6b7dd7d7f6af35fbb5072c6208e76295816"}, - {file = "mypy-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5703097c4936bbb9e9bce41478c8d08edd2865e177dc4c52be759f81ee4dd26c"}, - {file = "mypy-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e02d700ec8d9b1859790c0475df4e4092c7bf3272a4fd2c9f33d87fac4427b8f"}, - {file = "mypy-1.4.1-py3-none-any.whl", hash = "sha256:45d32cec14e7b97af848bddd97d85ea4f0db4d5a149ed9676caa4eb2f7402bb4"}, - {file = "mypy-1.4.1.tar.gz", hash = "sha256:9bbcd9ab8ea1f2e1c8031c21445b511442cc45c89951e49bbf852cbb70755b1b"}, + {file = "mypy-1.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e36f229acfe250dc660790840916eb49726c928e8ce10fbdf90715090fe4ae02"}, + {file = "mypy-1.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:51a46974340baaa4145363b9e051812a2446cf583dfaeba124af966fa44593f7"}, + {file = "mypy-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:901c89c2d67bba57aaaca91ccdb659aa3a312de67f23b9dfb059727cce2e2e0a"}, + {file = "mypy-1.10.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0cd62192a4a32b77ceb31272d9e74d23cd88c8060c34d1d3622db3267679a5d9"}, + {file = "mypy-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:a2cbc68cb9e943ac0814c13e2452d2046c2f2b23ff0278e26599224cf164e78d"}, + {file = "mypy-1.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bd6f629b67bb43dc0d9211ee98b96d8dabc97b1ad38b9b25f5e4c4d7569a0c6a"}, + {file = "mypy-1.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a1bbb3a6f5ff319d2b9d40b4080d46cd639abe3516d5a62c070cf0114a457d84"}, + {file = "mypy-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8edd4e9bbbc9d7b79502eb9592cab808585516ae1bcc1446eb9122656c6066f"}, + {file = "mypy-1.10.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6166a88b15f1759f94a46fa474c7b1b05d134b1b61fca627dd7335454cc9aa6b"}, + {file = "mypy-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:5bb9cd11c01c8606a9d0b83ffa91d0b236a0e91bc4126d9ba9ce62906ada868e"}, + {file = "mypy-1.10.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d8681909f7b44d0b7b86e653ca152d6dff0eb5eb41694e163c6092124f8246d7"}, + {file = "mypy-1.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:378c03f53f10bbdd55ca94e46ec3ba255279706a6aacaecac52ad248f98205d3"}, + {file = "mypy-1.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bacf8f3a3d7d849f40ca6caea5c055122efe70e81480c8328ad29c55c69e93e"}, + {file = "mypy-1.10.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:701b5f71413f1e9855566a34d6e9d12624e9e0a8818a5704d74d6b0402e66c04"}, + {file = "mypy-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:3c4c2992f6ea46ff7fce0072642cfb62af7a2484efe69017ed8b095f7b39ef31"}, + {file = "mypy-1.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fe85ed6836165d52ae8b88f99527d3d1b2362e0cb90b005409b8bed90e9059b3"}, + {file = "mypy-1.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c2ae450d60d7d020d67ab440c6e3fae375809988119817214440033f26ddf7bf"}, + {file = "mypy-1.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6be84c06e6abd72f960ba9a71561c14137a583093ffcf9bbfaf5e613d63fa531"}, + {file = "mypy-1.10.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2189ff1e39db399f08205e22a797383613ce1cb0cb3b13d8bcf0170e45b96cc3"}, + {file = "mypy-1.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:97a131ee36ac37ce9581f4220311247ab6cba896b4395b9c87af0675a13a755f"}, + {file = "mypy-1.10.1-py3-none-any.whl", hash = "sha256:71d8ac0b906354ebda8ef1673e5fde785936ac1f29ff6987c7483cfbd5a4235a"}, + {file = "mypy-1.10.1.tar.gz", hash = "sha256:1f8f492d7db9e3593ef42d4f115f04e556130f2819ad33ab84551403e97dd4c0"}, ] [[package]] @@ -1234,12 +1228,12 @@ files = [ [[package]] name = "myst-parser" -version = "2.0.0" +version = "3.0.1" requires_python = ">=3.8" summary = "An extended [CommonMark](https://spec.commonmark.org/) compliant parser," groups = ["docs"] dependencies = [ - "docutils<0.21,>=0.16", + "docutils<0.22,>=0.18", "jinja2", "markdown-it-py~=3.0", "mdit-py-plugins~=0.4", @@ -1247,8 +1241,8 @@ dependencies = [ "sphinx<8,>=6", ] files = [ - {file = "myst_parser-2.0.0-py3-none-any.whl", hash = "sha256:7c36344ae39c8e740dad7fdabf5aa6fc4897a813083c6cc9990044eb93656b14"}, - {file = "myst_parser-2.0.0.tar.gz", hash = "sha256:ea929a67a6a0b1683cdbe19b8d2e724cd7643f8aa3e7bb18dd65beac3483bead"}, + {file = "myst_parser-3.0.1-py3-none-any.whl", hash = "sha256:6457aaa33a5d474aca678b8ead9b3dc298e89c68e67012e73146ea6fd54babf1"}, + {file = "myst_parser-3.0.1.tar.gz", hash = "sha256:88f0cb406cb363b077d176b51c476f62d60604d68a8dcdf4832e080441301a87"}, ] [[package]] @@ -1316,21 +1310,21 @@ files = [ [[package]] name = "nbsphinx" -version = "0.9.3" +version = "0.9.4" requires_python = ">=3.6" summary = "Jupyter Notebook Tools for Sphinx" groups = ["docs"] dependencies = [ - "docutils", + "docutils>=0.18.1", "jinja2", - "nbconvert!=5.4", + "nbconvert!=5.4,>=5.3", "nbformat", "sphinx>=1.8", "traitlets>=5", ] files = [ - {file = "nbsphinx-0.9.3-py3-none-any.whl", hash = "sha256:6e805e9627f4a358bd5720d5cbf8bf48853989c79af557afd91a5f22e163029f"}, - {file = "nbsphinx-0.9.3.tar.gz", hash = "sha256:ec339c8691b688f8676104a367a4b8cf3ea01fd089dc28d24dec22d563b11562"}, + {file = "nbsphinx-0.9.4-py3-none-any.whl", hash = "sha256:22cb1d974a8300e8118ca71aea1f649553743c0c5830a54129dcd446e6a8ba17"}, + {file = "nbsphinx-0.9.4.tar.gz", hash = "sha256:042a60806fc23d519bc5bef59d95570713913fe442fda759d53e3aaf62104794"}, ] [[package]] @@ -1368,106 +1362,15 @@ files = [ {file = "nh3-0.2.17.tar.gz", hash = "sha256:40d0741a19c3d645e54efba71cb0d8c475b59135c1e3c580f879ad5514cbf028"}, ] -[[package]] -name = "numpy" -version = "1.26.4" -requires_python = ">=3.9" -summary = "Fundamental package for array computing in Python" -groups = ["benchmarks"] -files = [ - {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, - {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, - {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, - {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, - {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, - {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, - {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, - {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, - {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, - {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, - {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, -] - [[package]] name = "packaging" -version = "24.0" -requires_python = ">=3.7" +version = "24.1" +requires_python = ">=3.8" summary = "Core utilities for Python packages" groups = ["docs", "release", "tests"] files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, -] - -[[package]] -name = "pandas" -version = "2.2.1" -requires_python = ">=3.9" -summary = "Powerful data structures for data analysis, time series, and statistics" -groups = ["benchmarks"] -dependencies = [ - "numpy<2,>=1.22.4; python_version < \"3.11\"", - "numpy<2,>=1.23.2; python_version == \"3.11\"", - "numpy<2,>=1.26.0; python_version >= \"3.12\"", - "python-dateutil>=2.8.2", - "pytz>=2020.1", - "tzdata>=2022.7", -] -files = [ - {file = "pandas-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8df8612be9cd1c7797c93e1c5df861b2ddda0b48b08f2c3eaa0702cf88fb5f88"}, - {file = "pandas-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0f573ab277252ed9aaf38240f3b54cfc90fff8e5cab70411ee1d03f5d51f3944"}, - {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f02a3a6c83df4026e55b63c1f06476c9aa3ed6af3d89b4f04ea656ccdaaaa359"}, - {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c38ce92cb22a4bea4e3929429aa1067a454dcc9c335799af93ba9be21b6beb51"}, - {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c2ce852e1cf2509a69e98358e8458775f89599566ac3775e70419b98615f4b06"}, - {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:53680dc9b2519cbf609c62db3ed7c0b499077c7fefda564e330286e619ff0dd9"}, - {file = "pandas-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:94e714a1cca63e4f5939cdce5f29ba8d415d85166be3441165edd427dc9f6bc0"}, - {file = "pandas-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f821213d48f4ab353d20ebc24e4faf94ba40d76680642fb7ce2ea31a3ad94f9b"}, - {file = "pandas-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c70e00c2d894cb230e5c15e4b1e1e6b2b478e09cf27cc593a11ef955b9ecc81a"}, - {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e97fbb5387c69209f134893abc788a6486dbf2f9e511070ca05eed4b930b1b02"}, - {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101d0eb9c5361aa0146f500773395a03839a5e6ecde4d4b6ced88b7e5a1a6403"}, - {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7d2ed41c319c9fb4fd454fe25372028dfa417aacb9790f68171b2e3f06eae8cd"}, - {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5d3c00557d657c8773ef9ee702c61dd13b9d7426794c9dfeb1dc4a0bf0ebc7"}, - {file = "pandas-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:06cf591dbaefb6da9de8472535b185cba556d0ce2e6ed28e21d919704fef1a9e"}, - {file = "pandas-2.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:88ecb5c01bb9ca927ebc4098136038519aa5d66b44671861ffab754cae75102c"}, - {file = "pandas-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:04f6ec3baec203c13e3f8b139fb0f9f86cd8c0b94603ae3ae8ce9a422e9f5bee"}, - {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a935a90a76c44fe170d01e90a3594beef9e9a6220021acfb26053d01426f7dc2"}, - {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c391f594aae2fd9f679d419e9a4d5ba4bce5bb13f6a989195656e7dc4b95c8f0"}, - {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9d1265545f579edf3f8f0cb6f89f234f5e44ba725a34d86535b1a1d38decbccc"}, - {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:11940e9e3056576ac3244baef2fedade891977bcc1cb7e5cc8f8cc7d603edc89"}, - {file = "pandas-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:4acf681325ee1c7f950d058b05a820441075b0dd9a2adf5c4835b9bc056bf4fb"}, - {file = "pandas-2.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9bd8a40f47080825af4317d0340c656744f2bfdb6819f818e6ba3cd24c0e1397"}, - {file = "pandas-2.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:df0c37ebd19e11d089ceba66eba59a168242fc6b7155cba4ffffa6eccdfb8f16"}, - {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:739cc70eaf17d57608639e74d63387b0d8594ce02f69e7a0b046f117974b3019"}, - {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d3558d263073ed95e46f4650becff0c5e1ffe0fc3a015de3c79283dfbdb3df"}, - {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4aa1d8707812a658debf03824016bf5ea0d516afdea29b7dc14cf687bc4d4ec6"}, - {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:76f27a809cda87e07f192f001d11adc2b930e93a2b0c4a236fde5429527423be"}, - {file = "pandas-2.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:1ba21b1d5c0e43416218db63037dbe1a01fc101dc6e6024bcad08123e48004ab"}, - {file = "pandas-2.2.1.tar.gz", hash = "sha256:0ab90f87093c13f3e8fa45b48ba9f39181046e8f3317d3aadb2fffbb1b978572"}, + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] [[package]] @@ -1530,39 +1433,24 @@ files = [ [[package]] name = "platformdirs" -version = "4.2.0" +version = "4.2.2" requires_python = ">=3.8" -summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." groups = ["docs", "release", "tests"] files = [ - {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, - {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, + {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, + {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, ] [[package]] name = "pluggy" -version = "1.4.0" +version = "1.5.0" requires_python = ">=3.8" summary = "plugin and hook calling mechanisms for python" groups = ["tests"] files = [ - {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, - {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, -] - -[[package]] -name = "polars" -version = "0.20.18" -requires_python = ">=3.8" -summary = "Blazingly fast DataFrame library" -groups = ["benchmarks"] -files = [ - {file = "polars-0.20.18-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:e305f5e6c0b8dc37fe0ff3bb1143a8bf0341134e0b23dec7c50a148f426acceb"}, - {file = "polars-0.20.18-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:26716f074301f583da9af93108d57da631622d6496cbcbb8c08476180953f408"}, - {file = "polars-0.20.18-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b3843f69228df68cb82e39647c212fde58671c064c25a0c4d544f9446160a7e"}, - {file = "polars-0.20.18-cp38-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:4b775e9677d0050775243400def1f5de4dd02b5ee220873406abc4028228525e"}, - {file = "polars-0.20.18-cp38-abi3-win_amd64.whl", hash = "sha256:73b81b9582c48f0ca4ae08c0adc56917b0c55682044bedf0eccd3f94e4e39169"}, - {file = "polars-0.20.18.tar.gz", hash = "sha256:8a321cbdbb459e3c0cc1af2ce6ac930d0d3b5ccbeb2dd3e4237ad07d487fd290"}, + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [[package]] @@ -1570,7 +1458,7 @@ name = "prompt-toolkit" version = "3.0.43" requires_python = ">=3.7.0" summary = "Library for building powerful interactive command lines in Python" -groups = ["benchmarks", "docs", "release"] +groups = ["docs", "release"] dependencies = [ "wcwidth", ] @@ -1661,63 +1549,149 @@ files = [ [[package]] name = "pydantic" -version = "1.10.15" -requires_python = ">=3.7" -summary = "Data validation and settings management using python type hints" +version = "2.8.2" +requires_python = ">=3.8" +summary = "Data validation using Python type hints" +groups = ["release"] +dependencies = [ + "annotated-types>=0.4.0", + "pydantic-core==2.20.1", + "typing-extensions>=4.12.2; python_version >= \"3.13\"", + "typing-extensions>=4.6.1; python_version < \"3.13\"", +] +files = [ + {file = "pydantic-2.8.2-py3-none-any.whl", hash = "sha256:73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8"}, + {file = "pydantic-2.8.2.tar.gz", hash = "sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a"}, +] + +[[package]] +name = "pydantic-core" +version = "2.20.1" +requires_python = ">=3.8" +summary = "Core functionality for Pydantic validation and serialization" groups = ["release"] dependencies = [ - "typing-extensions>=4.2.0", -] -files = [ - {file = "pydantic-1.10.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:22ed12ee588b1df028a2aa5d66f07bf8f8b4c8579c2e96d5a9c1f96b77f3bb55"}, - {file = "pydantic-1.10.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:75279d3cac98186b6ebc2597b06bcbc7244744f6b0b44a23e4ef01e5683cc0d2"}, - {file = "pydantic-1.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50f1666a9940d3d68683c9d96e39640f709d7a72ff8702987dab1761036206bb"}, - {file = "pydantic-1.10.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82790d4753ee5d00739d6cb5cf56bceb186d9d6ce134aca3ba7befb1eedbc2c8"}, - {file = "pydantic-1.10.15-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:d207d5b87f6cbefbdb1198154292faee8017d7495a54ae58db06762004500d00"}, - {file = "pydantic-1.10.15-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e49db944fad339b2ccb80128ffd3f8af076f9f287197a480bf1e4ca053a866f0"}, - {file = "pydantic-1.10.15-cp310-cp310-win_amd64.whl", hash = "sha256:d3b5c4cbd0c9cb61bbbb19ce335e1f8ab87a811f6d589ed52b0254cf585d709c"}, - {file = "pydantic-1.10.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c3d5731a120752248844676bf92f25a12f6e45425e63ce22e0849297a093b5b0"}, - {file = "pydantic-1.10.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c365ad9c394f9eeffcb30a82f4246c0006417f03a7c0f8315d6211f25f7cb654"}, - {file = "pydantic-1.10.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3287e1614393119c67bd4404f46e33ae3be3ed4cd10360b48d0a4459f420c6a3"}, - {file = "pydantic-1.10.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be51dd2c8596b25fe43c0a4a59c2bee4f18d88efb8031188f9e7ddc6b469cf44"}, - {file = "pydantic-1.10.15-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6a51a1dd4aa7b3f1317f65493a182d3cff708385327c1c82c81e4a9d6d65b2e4"}, - {file = "pydantic-1.10.15-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4e316e54b5775d1eb59187f9290aeb38acf620e10f7fd2f776d97bb788199e53"}, - {file = "pydantic-1.10.15-cp311-cp311-win_amd64.whl", hash = "sha256:0d142fa1b8f2f0ae11ddd5e3e317dcac060b951d605fda26ca9b234b92214986"}, - {file = "pydantic-1.10.15-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:51d405b42f1b86703555797270e4970a9f9bd7953f3990142e69d1037f9d9e51"}, - {file = "pydantic-1.10.15-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a980a77c52723b0dc56640ced396b73a024d4b74f02bcb2d21dbbac1debbe9d0"}, - {file = "pydantic-1.10.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67f1a1fb467d3f49e1708a3f632b11c69fccb4e748a325d5a491ddc7b5d22383"}, - {file = "pydantic-1.10.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:676ed48f2c5bbad835f1a8ed8a6d44c1cd5a21121116d2ac40bd1cd3619746ed"}, - {file = "pydantic-1.10.15-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:92229f73400b80c13afcd050687f4d7e88de9234d74b27e6728aa689abcf58cc"}, - {file = "pydantic-1.10.15-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2746189100c646682eff0bce95efa7d2e203420d8e1c613dc0c6b4c1d9c1fde4"}, - {file = "pydantic-1.10.15-cp39-cp39-win_amd64.whl", hash = "sha256:394f08750bd8eaad714718812e7fab615f873b3cdd0b9d84e76e51ef3b50b6b7"}, - {file = "pydantic-1.10.15-py3-none-any.whl", hash = "sha256:28e552a060ba2740d0d2aabe35162652c1459a0b9069fe0db7f4ee0e18e74d58"}, - {file = "pydantic-1.10.15.tar.gz", hash = "sha256:ca832e124eda231a60a041da4f013e3ff24949d94a01154b137fc2f2a43c3ffb"}, + "typing-extensions!=4.7.0,>=4.6.0", +] +files = [ + {file = "pydantic_core-2.20.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3acae97ffd19bf091c72df4d726d552c473f3576409b2a7ca36b2f535ffff4a3"}, + {file = "pydantic_core-2.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41f4c96227a67a013e7de5ff8f20fb496ce573893b7f4f2707d065907bffdbd6"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f239eb799a2081495ea659d8d4a43a8f42cd1fe9ff2e7e436295c38a10c286a"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53e431da3fc53360db73eedf6f7124d1076e1b4ee4276b36fb25514544ceb4a3"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1f62b2413c3a0e846c3b838b2ecd6c7a19ec6793b2a522745b0869e37ab5bc1"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d41e6daee2813ecceea8eda38062d69e280b39df793f5a942fa515b8ed67953"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d482efec8b7dc6bfaedc0f166b2ce349df0011f5d2f1f25537ced4cfc34fd98"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e93e1a4b4b33daed65d781a57a522ff153dcf748dee70b40c7258c5861e1768a"}, + {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7c4ea22b6739b162c9ecaaa41d718dfad48a244909fe7ef4b54c0b530effc5a"}, + {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4f2790949cf385d985a31984907fecb3896999329103df4e4983a4a41e13e840"}, + {file = "pydantic_core-2.20.1-cp310-none-win32.whl", hash = "sha256:5e999ba8dd90e93d57410c5e67ebb67ffcaadcea0ad973240fdfd3a135506250"}, + {file = "pydantic_core-2.20.1-cp310-none-win_amd64.whl", hash = "sha256:512ecfbefef6dac7bc5eaaf46177b2de58cdf7acac8793fe033b24ece0b9566c"}, + {file = "pydantic_core-2.20.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d2a8fa9d6d6f891f3deec72f5cc668e6f66b188ab14bb1ab52422fe8e644f312"}, + {file = "pydantic_core-2.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:175873691124f3d0da55aeea1d90660a6ea7a3cfea137c38afa0a5ffabe37b88"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37eee5b638f0e0dcd18d21f59b679686bbd18917b87db0193ae36f9c23c355fc"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25e9185e2d06c16ee438ed39bf62935ec436474a6ac4f9358524220f1b236e43"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:150906b40ff188a3260cbee25380e7494ee85048584998c1e66df0c7a11c17a6"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ad4aeb3e9a97286573c03df758fc7627aecdd02f1da04516a86dc159bf70121"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3f3ed29cd9f978c604708511a1f9c2fdcb6c38b9aae36a51905b8811ee5cbf1"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0dae11d8f5ded51699c74d9548dcc5938e0804cc8298ec0aa0da95c21fff57b"}, + {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:faa6b09ee09433b87992fb5a2859efd1c264ddc37280d2dd5db502126d0e7f27"}, + {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9dc1b507c12eb0481d071f3c1808f0529ad41dc415d0ca11f7ebfc666e66a18b"}, + {file = "pydantic_core-2.20.1-cp311-none-win32.whl", hash = "sha256:fa2fddcb7107e0d1808086ca306dcade7df60a13a6c347a7acf1ec139aa6789a"}, + {file = "pydantic_core-2.20.1-cp311-none-win_amd64.whl", hash = "sha256:40a783fb7ee353c50bd3853e626f15677ea527ae556429453685ae32280c19c2"}, + {file = "pydantic_core-2.20.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:595ba5be69b35777474fa07f80fc260ea71255656191adb22a8c53aba4479231"}, + {file = "pydantic_core-2.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a4f55095ad087474999ee28d3398bae183a66be4823f753cd7d67dd0153427c9"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9aa05d09ecf4c75157197f27cdc9cfaeb7c5f15021c6373932bf3e124af029f"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e97fdf088d4b31ff4ba35db26d9cc472ac7ef4a2ff2badeabf8d727b3377fc52"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc633a9fe1eb87e250b5c57d389cf28998e4292336926b0b6cdaee353f89a237"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d573faf8eb7e6b1cbbcb4f5b247c60ca8be39fe2c674495df0eb4318303137fe"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26dc97754b57d2fd00ac2b24dfa341abffc380b823211994c4efac7f13b9e90e"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:33499e85e739a4b60c9dac710c20a08dc73cb3240c9a0e22325e671b27b70d24"}, + {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bebb4d6715c814597f85297c332297c6ce81e29436125ca59d1159b07f423eb1"}, + {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:516d9227919612425c8ef1c9b869bbbee249bc91912c8aaffb66116c0b447ebd"}, + {file = "pydantic_core-2.20.1-cp312-none-win32.whl", hash = "sha256:469f29f9093c9d834432034d33f5fe45699e664f12a13bf38c04967ce233d688"}, + {file = "pydantic_core-2.20.1-cp312-none-win_amd64.whl", hash = "sha256:035ede2e16da7281041f0e626459bcae33ed998cca6a0a007a5ebb73414ac72d"}, + {file = "pydantic_core-2.20.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:0827505a5c87e8aa285dc31e9ec7f4a17c81a813d45f70b1d9164e03a813a686"}, + {file = "pydantic_core-2.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:19c0fa39fa154e7e0b7f82f88ef85faa2a4c23cc65aae2f5aea625e3c13c735a"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa223cd1e36b642092c326d694d8bf59b71ddddc94cdb752bbbb1c5c91d833b"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c336a6d235522a62fef872c6295a42ecb0c4e1d0f1a3e500fe949415761b8a19"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7eb6a0587eded33aeefea9f916899d42b1799b7b14b8f8ff2753c0ac1741edac"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70c8daf4faca8da5a6d655f9af86faf6ec2e1768f4b8b9d0226c02f3d6209703"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9fa4c9bf273ca41f940bceb86922a7667cd5bf90e95dbb157cbb8441008482c"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:11b71d67b4725e7e2a9f6e9c0ac1239bbc0c48cce3dc59f98635efc57d6dac83"}, + {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:270755f15174fb983890c49881e93f8f1b80f0b5e3a3cc1394a255706cabd203"}, + {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c81131869240e3e568916ef4c307f8b99583efaa60a8112ef27a366eefba8ef0"}, + {file = "pydantic_core-2.20.1-cp313-none-win32.whl", hash = "sha256:b91ced227c41aa29c672814f50dbb05ec93536abf8f43cd14ec9521ea09afe4e"}, + {file = "pydantic_core-2.20.1-cp313-none-win_amd64.whl", hash = "sha256:65db0f2eefcaad1a3950f498aabb4875c8890438bc80b19362cf633b87a8ab20"}, + {file = "pydantic_core-2.20.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b03f7941783b4c4a26051846dea594628b38f6940a2fdc0df00b221aed39314c"}, + {file = "pydantic_core-2.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1eedfeb6089ed3fad42e81a67755846ad4dcc14d73698c120a82e4ccf0f1f9f6"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:635fee4e041ab9c479e31edda27fcf966ea9614fff1317e280d99eb3e5ab6fe2"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:77bf3ac639c1ff567ae3b47f8d4cc3dc20f9966a2a6dd2311dcc055d3d04fb8a"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ed1b0132f24beeec5a78b67d9388656d03e6a7c837394f99257e2d55b461611"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6514f963b023aeee506678a1cf821fe31159b925c4b76fe2afa94cc70b3222b"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d4204d8ca33146e761c79f83cc861df20e7ae9f6487ca290a97702daf56006"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2d036c7187b9422ae5b262badb87a20a49eb6c5238b2004e96d4da1231badef1"}, + {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9ebfef07dbe1d93efb94b4700f2d278494e9162565a54f124c404a5656d7ff09"}, + {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6b9d9bb600328a1ce523ab4f454859e9d439150abb0906c5a1983c146580ebab"}, + {file = "pydantic_core-2.20.1-cp39-none-win32.whl", hash = "sha256:784c1214cb6dd1e3b15dd8b91b9a53852aed16671cc3fbe4786f4f1db07089e2"}, + {file = "pydantic_core-2.20.1-cp39-none-win_amd64.whl", hash = "sha256:d2fe69c5434391727efa54b47a1e7986bb0186e72a41b203df8f5b0a19a4f669"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a45f84b09ac9c3d35dfcf6a27fd0634d30d183205230a0ebe8373a0e8cfa0906"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d02a72df14dfdbaf228424573a07af10637bd490f0901cee872c4f434a735b94"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2b27e6af28f07e2f195552b37d7d66b150adbaa39a6d327766ffd695799780f"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084659fac3c83fd674596612aeff6041a18402f1e1bc19ca39e417d554468482"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:242b8feb3c493ab78be289c034a1f659e8826e2233786e36f2893a950a719bb6"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:38cf1c40a921d05c5edc61a785c0ddb4bed67827069f535d794ce6bcded919fc"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e0bbdd76ce9aa5d4209d65f2b27fc6e5ef1312ae6c5333c26db3f5ade53a1e99"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:254ec27fdb5b1ee60684f91683be95e5133c994cc54e86a0b0963afa25c8f8a6"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:407653af5617f0757261ae249d3fba09504d7a71ab36ac057c938572d1bc9331"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:c693e916709c2465b02ca0ad7b387c4f8423d1db7b4649c551f27a529181c5ad"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b5ff4911aea936a47d9376fd3ab17e970cc543d1b68921886e7f64bd28308d1"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177f55a886d74f1808763976ac4efd29b7ed15c69f4d838bbd74d9d09cf6fa86"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:964faa8a861d2664f0c7ab0c181af0bea66098b1919439815ca8803ef136fc4e"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4dd484681c15e6b9a977c785a345d3e378d72678fd5f1f3c0509608da24f2ac0"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f6d6cff3538391e8486a431569b77921adfcdef14eb18fbf19b7c0a5294d4e6a"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a6d511cc297ff0883bc3708b465ff82d7560193169a8b93260f74ecb0a5e08a7"}, + {file = "pydantic_core-2.20.1.tar.gz", hash = "sha256:26ca695eeee5f9f1aeeb211ffc12f10bcb6f71e2989988fda61dabd65db878d4"}, +] + +[[package]] +name = "pydantic-settings" +version = "2.3.4" +requires_python = ">=3.8" +summary = "Settings management using Pydantic" +groups = ["release"] +dependencies = [ + "pydantic>=2.7.0", + "python-dotenv>=0.21.0", +] +files = [ + {file = "pydantic_settings-2.3.4-py3-none-any.whl", hash = "sha256:11ad8bacb68a045f00e4f862c7a718c8a9ec766aa8fd4c32e39a0594b207b53a"}, + {file = "pydantic_settings-2.3.4.tar.gz", hash = "sha256:c5802e3d62b78e82522319bbc9b8f8ffb28ad1c988a99311d04f2a6051fca0a7"}, ] [[package]] name = "pygments" -version = "2.17.2" -requires_python = ">=3.7" +version = "2.18.0" +requires_python = ">=3.8" summary = "Pygments is a syntax highlighting package written in Python." -groups = ["benchmarks", "docs", "release"] +groups = ["docs", "release"] files = [ - {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, - {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, ] [[package]] name = "pyproject-api" -version = "1.6.1" +version = "1.7.1" requires_python = ">=3.8" summary = "API to interact with the python pyproject.toml based projects" groups = ["tests"] dependencies = [ - "packaging>=23.1", + "packaging>=24.1", "tomli>=2.0.1; python_version < \"3.11\"", ] files = [ - {file = "pyproject_api-1.6.1-py3-none-any.whl", hash = "sha256:4c0116d60476b0786c88692cf4e325a9814965e2469c5998b830bba16b183675"}, - {file = "pyproject_api-1.6.1.tar.gz", hash = "sha256:1817dc018adc0d1ff9ca1ed8c60e1623d5aaca40814b953af14a9cf9a5cae538"}, + {file = "pyproject_api-1.7.1-py3-none-any.whl", hash = "sha256:2dc1654062c2b27733d8fd4cdda672b22fe8741ef1dde8e3a998a9547b071eeb"}, + {file = "pyproject_api-1.7.1.tar.gz", hash = "sha256:7ebc6cd10710f89f4cf2a2731710a98abce37ebff19427116ff2174c9236a827"}, ] [[package]] @@ -1736,8 +1710,8 @@ files = [ [[package]] name = "pytest" -version = "7.4.4" -requires_python = ">=3.7" +version = "8.2.2" +requires_python = ">=3.8" summary = "pytest: simple powerful testing with Python" groups = ["tests"] dependencies = [ @@ -1745,18 +1719,18 @@ dependencies = [ "exceptiongroup>=1.0.0rc8; python_version < \"3.11\"", "iniconfig", "packaging", - "pluggy<2.0,>=0.12", - "tomli>=1.0.0; python_version < \"3.11\"", + "pluggy<2.0,>=1.5", + "tomli>=1; python_version < \"3.11\"", ] files = [ - {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, - {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, + {file = "pytest-8.2.2-py3-none-any.whl", hash = "sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343"}, + {file = "pytest-8.2.2.tar.gz", hash = "sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977"}, ] [[package]] name = "pytest-cov" -version = "4.1.0" -requires_python = ">=3.7" +version = "5.0.0" +requires_python = ">=3.8" summary = "Pytest plugin for measuring coverage." groups = ["tests"] dependencies = [ @@ -1764,8 +1738,8 @@ dependencies = [ "pytest>=4.6", ] files = [ - {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, - {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, + {file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"}, + {file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"}, ] [[package]] @@ -1773,7 +1747,7 @@ name = "python-dateutil" version = "2.9.0.post0" requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" summary = "Extensions to the standard Python datetime module" -groups = ["benchmarks", "docs"] +groups = ["docs"] dependencies = [ "six>=1.5", ] @@ -1783,13 +1757,14 @@ files = [ ] [[package]] -name = "pytz" -version = "2024.1" -summary = "World timezone definitions, modern and historical" -groups = ["benchmarks"] +name = "python-dotenv" +version = "1.0.1" +requires_python = ">=3.8" +summary = "Read key-value pairs from a .env file and set them as environment variables" +groups = ["release"] files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, ] [[package]] @@ -1942,18 +1917,17 @@ files = [ ] [[package]] -name = "rbo" -version = "0.1.3" -requires_python = ">=3.7,<4.0" -summary = "Simple library to calculate Rank-biased Overlap between two lists" -groups = ["benchmarks"] +name = "questionary" +version = "1.10.0" +requires_python = ">=3.6,<4.0" +summary = "Python library to build pretty command line user prompts ⭐️" +groups = ["release"] dependencies = [ - "numpy<2.0,>=1.18", - "tqdm<5.0.0,>=4.59.0", + "prompt-toolkit<4.0,>=2.0", ] files = [ - {file = "rbo-0.1.3-py3-none-any.whl", hash = "sha256:9f5b90bdca6c91e05126112d5ff3625b27835981f7da68e5143bf01120175a1f"}, - {file = "rbo-0.1.3.tar.gz", hash = "sha256:14410a38d1d5b26c6e2841098f81d3771f324d27d9cb3dc1ae53f467d845d30f"}, + {file = "questionary-1.10.0-py3-none-any.whl", hash = "sha256:fecfcc8cca110fda9d561cb83f1e97ecbb93c613ff857f655818839dac74ce90"}, + {file = "questionary-1.10.0.tar.gz", hash = "sha256:600d3aefecce26d48d97eee936fdb66e4bc27f934c3ab6dd1e292c4f43946d90"}, ] [[package]] @@ -2034,7 +2008,7 @@ name = "rich" version = "13.5.3" requires_python = ">=3.7.0" summary = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" -groups = ["benchmarks", "release"] +groups = ["release"] dependencies = [ "markdown-it-py>=2.2.0", "pygments<3.0.0,>=2.13.0", @@ -2155,79 +2129,6 @@ files = [ {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"}, ] -[[package]] -name = "scikit-learn" -version = "1.4.1.post1" -requires_python = ">=3.9" -summary = "A set of python modules for machine learning and data mining" -groups = ["benchmarks"] -dependencies = [ - "joblib>=1.2.0", - "numpy<2.0,>=1.19.5", - "scipy>=1.6.0", - "threadpoolctl>=2.0.0", -] -files = [ - {file = "scikit-learn-1.4.1.post1.tar.gz", hash = "sha256:93d3d496ff1965470f9977d05e5ec3376fb1e63b10e4fda5e39d23c2d8969a30"}, - {file = "scikit_learn-1.4.1.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c540aaf44729ab5cd4bd5e394f2b375e65ceaea9cdd8c195788e70433d91bbc5"}, - {file = "scikit_learn-1.4.1.post1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:4310bff71aa98b45b46cd26fa641309deb73a5d1c0461d181587ad4f30ea3c36"}, - {file = "scikit_learn-1.4.1.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f43dd527dabff5521af2786a2f8de5ba381e182ec7292663508901cf6ceaf6e"}, - {file = "scikit_learn-1.4.1.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c02e27d65b0c7dc32f2c5eb601aaf5530b7a02bfbe92438188624524878336f2"}, - {file = "scikit_learn-1.4.1.post1-cp310-cp310-win_amd64.whl", hash = "sha256:629e09f772ad42f657ca60a1a52342eef786218dd20cf1369a3b8d085e55ef8f"}, - {file = "scikit_learn-1.4.1.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6145dfd9605b0b50ae72cdf72b61a2acd87501369a763b0d73d004710ebb76b5"}, - {file = "scikit_learn-1.4.1.post1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1afed6951bc9d2053c6ee9a518a466cbc9b07c6a3f9d43bfe734192b6125d508"}, - {file = "scikit_learn-1.4.1.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce03506ccf5f96b7e9030fea7eb148999b254c44c10182ac55857bc9b5d4815f"}, - {file = "scikit_learn-1.4.1.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ba516fcdc73d60e7f48cbb0bccb9acbdb21807de3651531208aac73c758e3ab"}, - {file = "scikit_learn-1.4.1.post1-cp311-cp311-win_amd64.whl", hash = "sha256:78cd27b4669513b50db4f683ef41ea35b5dddc797bd2bbd990d49897fd1c8a46"}, - {file = "scikit_learn-1.4.1.post1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a1e289f33f613cefe6707dead50db31930530dc386b6ccff176c786335a7b01c"}, - {file = "scikit_learn-1.4.1.post1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:0df87de9ce1c0140f2818beef310fb2e2afdc1e66fc9ad587965577f17733649"}, - {file = "scikit_learn-1.4.1.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:712c1c69c45b58ef21635360b3d0a680ff7d83ac95b6f9b82cf9294070cda710"}, - {file = "scikit_learn-1.4.1.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1754b0c2409d6ed5a3380512d0adcf182a01363c669033a2b55cca429ed86a81"}, - {file = "scikit_learn-1.4.1.post1-cp312-cp312-win_amd64.whl", hash = "sha256:1d491ef66e37f4e812db7e6c8286520c2c3fc61b34bf5e59b67b4ce528de93af"}, - {file = "scikit_learn-1.4.1.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:aa0029b78ef59af22cfbd833e8ace8526e4df90212db7ceccbea582ebb5d6794"}, - {file = "scikit_learn-1.4.1.post1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:14e4c88436ac96bf69eb6d746ac76a574c314a23c6961b7d344b38877f20fee1"}, - {file = "scikit_learn-1.4.1.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7cd3a77c32879311f2aa93466d3c288c955ef71d191503cf0677c3340ae8ae0"}, - {file = "scikit_learn-1.4.1.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a3ee19211ded1a52ee37b0a7b373a8bfc66f95353af058a210b692bd4cda0dd"}, - {file = "scikit_learn-1.4.1.post1-cp39-cp39-win_amd64.whl", hash = "sha256:234b6bda70fdcae9e4abbbe028582ce99c280458665a155eed0b820599377d25"}, -] - -[[package]] -name = "scipy" -version = "1.13.0" -requires_python = ">=3.9" -summary = "Fundamental algorithms for scientific computing in Python" -groups = ["benchmarks"] -dependencies = [ - "numpy<2.3,>=1.22.4", -] -files = [ - {file = "scipy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba419578ab343a4e0a77c0ef82f088238a93eef141b2b8017e46149776dfad4d"}, - {file = "scipy-1.13.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:22789b56a999265431c417d462e5b7f2b487e831ca7bef5edeb56efe4c93f86e"}, - {file = "scipy-1.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05f1432ba070e90d42d7fd836462c50bf98bd08bed0aa616c359eed8a04e3922"}, - {file = "scipy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8434f6f3fa49f631fae84afee424e2483289dfc30a47755b4b4e6b07b2633a4"}, - {file = "scipy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:dcbb9ea49b0167de4167c40eeee6e167caeef11effb0670b554d10b1e693a8b9"}, - {file = "scipy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:1d2f7bb14c178f8b13ebae93f67e42b0a6b0fc50eba1cd8021c9b6e08e8fb1cd"}, - {file = "scipy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fbcf8abaf5aa2dc8d6400566c1a727aed338b5fe880cde64907596a89d576fa"}, - {file = "scipy-1.13.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5e4a756355522eb60fcd61f8372ac2549073c8788f6114449b37e9e8104f15a5"}, - {file = "scipy-1.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5acd8e1dbd8dbe38d0004b1497019b2dbbc3d70691e65d69615f8a7292865d7"}, - {file = "scipy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ff7dad5d24a8045d836671e082a490848e8639cabb3dbdacb29f943a678683d"}, - {file = "scipy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4dca18c3ffee287ddd3bc8f1dabaf45f5305c5afc9f8ab9cbfab855e70b2df5c"}, - {file = "scipy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:a2f471de4d01200718b2b8927f7d76b5d9bde18047ea0fa8bd15c5ba3f26a1d6"}, - {file = "scipy-1.13.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d0de696f589681c2802f9090fff730c218f7c51ff49bf252b6a97ec4a5d19e8b"}, - {file = "scipy-1.13.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:b2a3ff461ec4756b7e8e42e1c681077349a038f0686132d623fa404c0bee2551"}, - {file = "scipy-1.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf9fe63e7a4bf01d3645b13ff2aa6dea023d38993f42aaac81a18b1bda7a82a"}, - {file = "scipy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e7626dfd91cdea5714f343ce1176b6c4745155d234f1033584154f60ef1ff42"}, - {file = "scipy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:109d391d720fcebf2fbe008621952b08e52907cf4c8c7efc7376822151820820"}, - {file = "scipy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:8930ae3ea371d6b91c203b1032b9600d69c568e537b7988a3073dfe4d4774f21"}, - {file = "scipy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5407708195cb38d70fd2d6bb04b1b9dd5c92297d86e9f9daae1576bd9e06f602"}, - {file = "scipy-1.13.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:ac38c4c92951ac0f729c4c48c9e13eb3675d9986cc0c83943784d7390d540c78"}, - {file = "scipy-1.13.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c74543c4fbeb67af6ce457f6a6a28e5d3739a87f62412e4a16e46f164f0ae5"}, - {file = "scipy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28e286bf9ac422d6beb559bc61312c348ca9b0f0dae0d7c5afde7f722d6ea13d"}, - {file = "scipy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:33fde20efc380bd23a78a4d26d59fc8704e9b5fd9b08841693eb46716ba13d86"}, - {file = "scipy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:45c08bec71d3546d606989ba6e7daa6f0992918171e2a6f7fbedfa7361c2de1e"}, - {file = "scipy-1.13.0.tar.gz", hash = "sha256:58569af537ea29d3f78e5abd18398459f195546bb3be23d16677fb26616cc11e"}, -] - [[package]] name = "secretstorage" version = "3.3.3" @@ -2257,7 +2158,7 @@ files = [ [[package]] name = "shibuya" -version = "2024.4.4" +version = "2024.7.13" requires_python = ">=3.7" summary = "A clean, responsive, and customizable Sphinx documentation theme with light/dark mode." groups = ["docs"] @@ -2265,8 +2166,8 @@ dependencies = [ "Sphinx", ] files = [ - {file = "shibuya-2024.4.4-py3-none-any.whl", hash = "sha256:bf635e8a5eafccb0f1e8801f9a57f86187909d547c9db31b539d7f1bfe43e45b"}, - {file = "shibuya-2024.4.4.tar.gz", hash = "sha256:768d0bbfe6eed2f10ef6685fcadbecd0d4f0635ff6e1e5624bcb84bb0d1a40f2"}, + {file = "shibuya-2024.7.13-py3-none-any.whl", hash = "sha256:810dde8580d46ce31f3de356fca715d5a2389ecfbfcba653f03086028bb1e5f4"}, + {file = "shibuya-2024.7.13.tar.gz", hash = "sha256:8fbe547d371e907a55d185b9471dc57c4823cfb344ed7ff7eed1a13c881abd11"}, ] [[package]] @@ -2274,7 +2175,7 @@ name = "six" version = "1.16.0" requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" summary = "Python 2 and 3 compatibility utilities" -groups = ["benchmarks", "docs", "release"] +groups = ["docs", "release"] files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -2303,65 +2204,65 @@ files = [ [[package]] name = "sphinx" -version = "7.2.6" +version = "7.4.3" requires_python = ">=3.9" summary = "Python documentation generator" groups = ["docs"] dependencies = [ - "Jinja2>=3.0", - "Pygments>=2.14", - "alabaster<0.8,>=0.7", - "babel>=2.9", - "colorama>=0.4.5; sys_platform == \"win32\"", - "docutils<0.21,>=0.18.1", + "Jinja2>=3.1", + "Pygments>=2.17", + "alabaster~=0.7.14", + "babel>=2.13", + "colorama>=0.4.6; sys_platform == \"win32\"", + "docutils<0.22,>=0.20", "imagesize>=1.3", - "importlib-metadata>=4.8; python_version < \"3.10\"", - "packaging>=21.0", - "requests>=2.25.0", - "snowballstemmer>=2.0", + "importlib-metadata>=6.0; python_version < \"3.10\"", + "packaging>=23.0", + "requests>=2.30.0", + "snowballstemmer>=2.2", "sphinxcontrib-applehelp", "sphinxcontrib-devhelp", "sphinxcontrib-htmlhelp>=2.0.0", "sphinxcontrib-jsmath", "sphinxcontrib-qthelp", "sphinxcontrib-serializinghtml>=1.1.9", + "tomli>=2; python_version < \"3.11\"", ] files = [ - {file = "sphinx-7.2.6-py3-none-any.whl", hash = "sha256:1e09160a40b956dc623c910118fa636da93bd3ca0b9876a7b3df90f07d691560"}, - {file = "sphinx-7.2.6.tar.gz", hash = "sha256:9a5160e1ea90688d5963ba09a2dcd8bdd526620edbb65c328728f1b2228d5ab5"}, + {file = "sphinx-7.4.3-py3-none-any.whl", hash = "sha256:a3c295d0e8be6277e0a5ba5c6909a308bd208876b0f4f68c7cc591f566129412"}, + {file = "sphinx-7.4.3.tar.gz", hash = "sha256:bd846bcb09fd2b6e94ce3e1ad50f4618bccf03cc7c17d0f3fa87393c0bd9178b"}, ] [[package]] name = "sphinx-autoapi" -version = "3.0.0" +version = "3.1.2" requires_python = ">=3.8" summary = "Sphinx API documentation generator" groups = ["docs"] dependencies = [ "Jinja2", "PyYAML", - "anyascii", "astroid>=2.7; python_version < \"3.12\"", "astroid>=3.0.0a1; python_version >= \"3.12\"", "sphinx>=6.1.0", ] files = [ - {file = "sphinx-autoapi-3.0.0.tar.gz", hash = "sha256:09ebd674a32b44467222b0fb8a917b97c89523f20dbf05b52cb8a3f0e15714de"}, - {file = "sphinx_autoapi-3.0.0-py2.py3-none-any.whl", hash = "sha256:ea207793cba1feff7b2ded0e29364f2995a4d157303a98603cee0ce94cea2688"}, + {file = "sphinx_autoapi-3.1.2-py2.py3-none-any.whl", hash = "sha256:8d672bd2baa8365ac844d3f52c0d3360aa492299131d3dea156a20a26f048d23"}, + {file = "sphinx_autoapi-3.1.2.tar.gz", hash = "sha256:fa5eb188f67ae39e19b2e7d2527c75d064e0f0b9ac7f77a3558ec26ccb731c26"}, ] [[package]] name = "sphinx-autodoc-typehints" -version = "2.0.0" -requires_python = ">=3.8" +version = "2.2.2" +requires_python = ">=3.9" summary = "Type hints (PEP 484) support for the Sphinx autodoc extension" groups = ["docs"] dependencies = [ - "sphinx>=7.1.2", + "sphinx>=7.3.5", ] files = [ - {file = "sphinx_autodoc_typehints-2.0.0-py3-none-any.whl", hash = "sha256:12c0e161f6fe191c2cdfd8fa3caea271f5387d9fbc67ebcd6f4f1f24ce880993"}, - {file = "sphinx_autodoc_typehints-2.0.0.tar.gz", hash = "sha256:7f2cdac2e70fd9787926b6e9e541cd4ded1e838d2b46fda2a1bb0a75ec5b7f3a"}, + {file = "sphinx_autodoc_typehints-2.2.2-py3-none-any.whl", hash = "sha256:b98337a8530c95b73ba0c65465847a8ab0a13403bdc81294d5ef396bbd1f783e"}, + {file = "sphinx_autodoc_typehints-2.2.2.tar.gz", hash = "sha256:128e600eeef63b722f3d8dac6403594592c8cade3ba66fd11dcb997465ee259d"}, ] [[package]] @@ -2394,7 +2295,7 @@ files = [ [[package]] name = "sphinx-intl" -version = "2.1.0" +version = "2.2.0" requires_python = ">=3.7" summary = "Sphinx utility that make it easy to translate and to apply translation." groups = ["docs"] @@ -2405,8 +2306,8 @@ dependencies = [ "sphinx", ] files = [ - {file = "sphinx-intl-2.1.0.tar.gz", hash = "sha256:9d9849ae42515b39786824e99f1e30db0404c377b01bb022690fc932b0221c02"}, - {file = "sphinx_intl-2.1.0-py3-none-any.whl", hash = "sha256:9798946b995989de691387651d70c3fc191275b587e2e519655541edfd7bbd68"}, + {file = "sphinx_intl-2.2.0-py3-none-any.whl", hash = "sha256:56ad5f360fae4aa1cb963448c802f141b55c87223bb32a7b29e936620bd1a381"}, + {file = "sphinx_intl-2.2.0.tar.gz", hash = "sha256:66976a85d31624dfcb564059a6918f90b31669269bfe3f30b2d72e81f225ab20"}, ] [[package]] @@ -2522,17 +2423,6 @@ files = [ {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, ] -[[package]] -name = "threadpoolctl" -version = "3.4.0" -requires_python = ">=3.8" -summary = "threadpoolctl" -groups = ["benchmarks"] -files = [ - {file = "threadpoolctl-3.4.0-py3-none-any.whl", hash = "sha256:8f4c689a65b23e5ed825c8436a92b818aac005e0f3715f6a1664d7c7ee29d262"}, - {file = "threadpoolctl-3.4.0.tar.gz", hash = "sha256:f11b491a03661d6dd7ef692dd422ab34185d982466c49c8f98c8f716b5c93196"}, -] - [[package]] name = "tinycss2" version = "1.2.1" @@ -2563,7 +2453,7 @@ name = "tomli" version = "2.0.1" requires_python = ">=3.7" summary = "A lil' TOML parser" -groups = ["release", "tests"] +groups = ["docs", "release", "tests"] marker = "python_version < \"3.11\"" files = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, @@ -2621,39 +2511,25 @@ files = [ [[package]] name = "tox" -version = "4.14.2" +version = "4.16.0" requires_python = ">=3.8" summary = "tox is a generic virtualenv management and test command line tool" groups = ["tests"] dependencies = [ - "cachetools>=5.3.2", + "cachetools>=5.3.3", "chardet>=5.2", "colorama>=0.4.6", - "filelock>=3.13.1", - "packaging>=23.2", - "platformdirs>=4.1", - "pluggy>=1.3", - "pyproject-api>=1.6.1", + "filelock>=3.15.4", + "packaging>=24.1", + "platformdirs>=4.2.2", + "pluggy>=1.5", + "pyproject-api>=1.7.1", "tomli>=2.0.1; python_version < \"3.11\"", - "virtualenv>=20.25", + "virtualenv>=20.26.3", ] files = [ - {file = "tox-4.14.2-py3-none-any.whl", hash = "sha256:2900c4eb7b716af4a928a7fdc2ed248ad6575294ed7cfae2ea41203937422847"}, - {file = "tox-4.14.2.tar.gz", hash = "sha256:0defb44f6dafd911b61788325741cc6b2e12ea71f987ac025ad4d649f1f1a104"}, -] - -[[package]] -name = "tqdm" -version = "4.66.2" -requires_python = ">=3.7" -summary = "Fast, Extensible Progress Meter" -groups = ["benchmarks"] -dependencies = [ - "colorama; platform_system == \"Windows\"", -] -files = [ - {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, - {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, + {file = "tox-4.16.0-py3-none-any.whl", hash = "sha256:61e101061b977b46cf00093d4319438055290ad0009f84497a07bf2d2d7a06d0"}, + {file = "tox-4.16.0.tar.gz", hash = "sha256:43499656f9949edb681c0f907f86fbfee98677af9919d8b11ae5ad77cb800748"}, ] [[package]] @@ -2667,28 +2543,16 @@ files = [ {file = "traitlets-5.14.2.tar.gz", hash = "sha256:8cdd83c040dab7d1dee822678e5f5d100b514f7b72b01615b26fc5718916fdf9"}, ] -[[package]] -name = "trueskill" -version = "0.4.5" -requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -summary = "The video game rating system" -groups = ["benchmarks"] -dependencies = [ - "six", -] -files = [ - {file = "trueskill-0.4.5.tar.gz", hash = "sha256:9d62b48d2428369d712bd9becff9f9a2caa325e1a2ab5f9392d34bff757867bb"}, -] - [[package]] name = "twine" -version = "5.0.0" +version = "5.1.1" requires_python = ">=3.8" summary = "Collection of utilities for publishing packages on PyPI" groups = ["release"] dependencies = [ "importlib-metadata>=3.6", "keyring>=15.1", + "pkginfo<1.11", "pkginfo>=1.8.1", "readme-renderer>=35.0", "requests-toolbelt!=0.9.0,>=0.8.0", @@ -2698,30 +2562,19 @@ dependencies = [ "urllib3>=1.26.0", ] files = [ - {file = "twine-5.0.0-py3-none-any.whl", hash = "sha256:a262933de0b484c53408f9edae2e7821c1c45a3314ff2df9bdd343aa7ab8edc0"}, - {file = "twine-5.0.0.tar.gz", hash = "sha256:89b0cc7d370a4b66421cc6102f269aa910fe0f1861c124f573cf2ddedbc10cf4"}, + {file = "twine-5.1.1-py3-none-any.whl", hash = "sha256:215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997"}, + {file = "twine-5.1.1.tar.gz", hash = "sha256:9aa0825139c02b3434d913545c7b847a21c835e11597f5255842d457da2322db"}, ] [[package]] name = "typing-extensions" -version = "4.11.0" +version = "4.12.2" requires_python = ">=3.8" summary = "Backported and Experimental Type Hints for Python 3.8+" groups = ["docs", "release", "tests"] files = [ - {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, - {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, -] - -[[package]] -name = "tzdata" -version = "2024.1" -requires_python = ">=2" -summary = "Provider of IANA time zone data" -groups = ["benchmarks"] -files = [ - {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, - {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] @@ -2737,7 +2590,7 @@ files = [ [[package]] name = "virtualenv" -version = "20.25.1" +version = "20.26.3" requires_python = ">=3.7" summary = "Virtual Python Environment builder" groups = ["tests"] @@ -2747,15 +2600,29 @@ dependencies = [ "platformdirs<5,>=3.9.1", ] files = [ - {file = "virtualenv-20.25.1-py3-none-any.whl", hash = "sha256:961c026ac520bac5f69acb8ea063e8a4f071bcc9457b9c1f28f6b085c511583a"}, - {file = "virtualenv-20.25.1.tar.gz", hash = "sha256:e08e13ecdca7a0bd53798f356d5831434afa5b07b93f0abdf0797b7a06ffe197"}, + {file = "virtualenv-20.26.3-py3-none-any.whl", hash = "sha256:8cc4a31139e796e9a7de2cd5cf2489de1217193116a8fd42328f1bd65f434589"}, + {file = "virtualenv-20.26.3.tar.gz", hash = "sha256:4c43a2a236279d9ea36a0d76f98d84bd6ca94ac4e0f4a3b9d46d05e10fea542a"}, +] + +[[package]] +name = "wcmatch" +version = "8.5.2" +requires_python = ">=3.8" +summary = "Wildcard/glob file name matcher." +groups = ["release"] +dependencies = [ + "bracex>=2.1.1", +] +files = [ + {file = "wcmatch-8.5.2-py3-none-any.whl", hash = "sha256:17d3ad3758f9d0b5b4dedc770b65420d4dac62e680229c287bf24c9db856a478"}, + {file = "wcmatch-8.5.2.tar.gz", hash = "sha256:a70222b86dea82fb382dd87b73278c10756c138bd6f8f714e2183128887b9eb2"}, ] [[package]] name = "wcwidth" version = "0.2.13" summary = "Measures the displayed width of unicode strings in a terminal" -groups = ["benchmarks", "docs", "release"] +groups = ["docs", "release"] files = [ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, diff --git a/pyproject.toml b/pyproject.toml index 7c2f625..01a424d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ package = "openskill" package_dir = "openskill" directory = "changes" filename = "CHANGELOG.rst" -issue_format = "`#{issue} `_" +issue_format = "`#{issue} `_" type = [ { name = "Breaking Changes", directory = "breaking", showcontent = true }, { name = "Deprecation", directory = "deprecation", showcontent = true }, @@ -37,21 +37,21 @@ doctest_optionflags = "NUMBER" profile = "black" [tool.mypy] -python_version = "3.8" +python_version = "3.9" strict = true [project] name = "openskill" version = "5.1.1" authors = [ - {name = "Vivek Joshy", email = "vivek@opendebates.net"}, + {name = "Vivek Joshy", email = "vivekjoshy97@gmail.com"}, ] maintainers = [ - {name = "Vivek Joshy", email = "vivek@opendebates.net"} + {name = "Vivek Joshy", email = "vivekjoshy97@gmail.com"} ] description = "Multiplayer Rating System. No Friction." readme = "README.md" -requires-python = "~=3.8" +requires-python = "~=3.9" keywords = ["ranking", "trueskill", "statistics", "rating", "math", "rank"] license = {text = "MIT"} classifiers = [ @@ -60,63 +60,53 @@ classifiers = [ "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ] [project.urls] -Source = "https://github.com/OpenDebates/openskill.py" +Source = "https://github.com/vivekjoshy/openskill.py" Documentation = "https://openskill.me/en/stable" -Changelog = "https://github.com/OpenDebates/openskill.py/blob/main/CHANGELOG.rst" -Funding = "https://github.com/sponsors/OpenDebates" -Tracker = "https://github.com/OpenDebates/openskill.py/issues" +Changelog = "https://github.com/vivekjoshy/openskill.py/blob/main/CHANGELOG.rst" +Funding = "https://opencollective.com/openskill" +Tracker = "https://github.com/vivekjoshy/openskill.py/issues" [tool.pdm.dev-dependencies] docs = [ - "sphinx~=7.2", + "sphinx~=7.4", "nbsphinx~=0.9", - "pygments~=2.15", - "shibuya~=2024.4", - "ipykernel~=6.25", - "myst-parser~=2.0", - "sphinx-intl~=2.1", + "pygments~=2.18", + "shibuya~=2024.7", + "ipykernel~=6.29", + "myst-parser~=3.0", + "sphinx-intl~=2.2", "sphinx-favicon~=1.0", "sphinx-copybutton~=0.5", - "sphinx-autoapi~=3.0", - "sphinxext-opengraph~=0.8", + "sphinx-autoapi~=3.1", + "sphinxext-opengraph~=0.9", "sphinxcontrib-bibtex~=2.6", - "sphinx-autodoc-typehints~=2.0", + "sphinx-autodoc-typehints~=2.2", ] tests = [ - "tox~=4.6", - "mypy~=1.4.1", - "pytest~=7.3", - "coverage~=7.2", - "pytest-cov~=4.0" + "tox~=4.16", + "mypy~=1.10", + "pytest~=8.2", + "coverage~=7.6", + "pytest-cov~=5.0" ] release = [ - "twine~=5.0", + "twine~=5.1", "build~=1.2", "isort~=5.13", - "black[jupyter]~=24.3", + "black[jupyter]~=24.4", "codecov~=2.1", - "towncrier~=23.6", - "bump-my-version~=0.9.2", -] -benchmarks = [ - "rbo~=0.1", - "rich~=13.5.2", - "pandas~=2.2", - "polars~=0.20", - "trueskill~=0.4", - "jsonlines~=3.1", - "scikit-learn~=1.4", - "prompt-toolkit~=3.0", + "towncrier~=23.11", + "bump-my-version~=0.24.2", ] [tool.pdm.build] diff --git a/tests/models/data/bradleyterryfull.json b/tests/models/data/bradleyterryfull.json index bb78288..92e8654 100644 --- a/tests/models/data/bradleyterryfull.json +++ b/tests/models/data/bradleyterryfull.json @@ -1,123 +1,211 @@ { "model": { - "mu": 19.19146824402752, - "sigma": 4.841562282244662 + "mu": 7.9905440171422555, + "sigma": 12.263093130195076 }, "normal": { "team_1": [ { - "mu": 21.17414494871607, - "sigma": 4.812703566316669 + "mu": 12.0134534062347, + "sigma": 12.005182897278756 } ], "team_2": [ { - "mu": 17.208791539338968, - "sigma": 4.8003994845583104 + "mu": 3.9676346280498125, + "sigma": 11.896594555422114 }, { - "mu": 17.208791539338968, - "sigma": 4.8003994845583104 + "mu": 3.9676346280498125, + "sigma": 11.896594555422114 } ] }, "ranks": { "team_1": [ { - "mu": 18.886597146623906, - "sigma": 4.812703566316669 + "mu": 13.319039268626968, + "sigma": 11.250550586723186 } ], "team_2": [ { - "mu": 19.49633934143113, - "sigma": 4.8003994845583104 + "mu": 16.57093404734076, + "sigma": 11.24978660987621 }, { - "mu": 19.49633934143113, - "sigma": 4.8003994845583104 + "mu": 16.57093404734076, + "sigma": 11.24978660987621 + } + ], + "team_3": [ + { + "mu": -1.7140991076005925, + "sigma": 11.250550586723186 + } + ], + "team_4": [ + { + "mu": 3.7863018602018865, + "sigma": 11.24978660987621 + }, + { + "mu": 3.7863018602018865, + "sigma": 11.24978660987621 } ] }, "scores": { "team_1": [ { - "mu": 18.886597146623906, - "sigma": 4.812703566316669 + "mu": 5.190858263025396, + "sigma": 12.005182897278756 } ], "team_2": [ { - "mu": 19.49633934143113, - "sigma": 4.8003994845583104 + "mu": 10.790229771259115, + "sigma": 11.896594555422114 }, { - "mu": 19.49633934143113, - "sigma": 4.8003994845583104 + "mu": 10.790229771259115, + "sigma": 11.896594555422114 } ] }, "limit_sigma": { "team_1": [ { - "mu": 20.887237170997047, - "sigma": 4.8066873894819535 + "mu": 9.08582118010778, + "sigma": 11.841039124419458 } ], "team_2": [ { - "mu": 21.067284664657013, - "sigma": 4.770202946586814 + "mu": 13.850534801700741, + "sigma": 11.712110761772953 }, { - "mu": 21.067284664657013, - "sigma": 4.770202946586814 + "mu": 13.850534801700741, + "sigma": 11.712110761772953 } ], "team_3": [ { - "mu": 15.619882896428496, - "sigma": 4.795151977899489 + "mu": 1.035276069618245, + "sigma": 11.759103126677601 }, { - "mu": 15.619882896428496, - "sigma": 4.795151977899489 + "mu": 1.035276069618245, + "sigma": 11.759103126677601 }, { - "mu": 15.619882896428496, - "sigma": 4.795151977899489 + "mu": 1.035276069618245, + "sigma": 11.759103126677601 } ] }, "ties": { "team_1": [ { - "mu": 22.140604509774274, - "sigma": 4.8066873894819535 + "mu": 12.9273978013523, + "sigma": 11.841039124419458 + } + ], + "team_2": [ + { + "mu": 1.6659910020255735, + "sigma": 11.712110761772953 + }, + { + "mu": 1.6659910020255735, + "sigma": 11.712110761772953 + } + ], + "team_3": [ + { + "mu": 9.378243248048895, + "sigma": 11.759103126677601 + }, + { + "mu": 9.378243248048895, + "sigma": 11.759103126677601 + }, + { + "mu": 9.378243248048895, + "sigma": 11.759103126677601 + } + ] + }, + "weights": { + "team_1": [ + { + "mu": 11.386091971577908, + "sigma": 10.985417138257514 + }, + { + "mu": 9.688317994360082, + "sigma": 11.641945440213247 + }, + { + "mu": 9.688317994360082, + "sigma": 11.641945440213247 } ], "team_2": [ { - "mu": 16.87763298638101, - "sigma": 4.770202946586814 + "mu": 17.092172599990292, + "sigma": 11.643441193392686 }, { - "mu": 16.87763298638101, - "sigma": 4.770202946586814 + "mu": 26.193801182838328, + "sigma": 10.988587174141419 } ], "team_3": [ { - "mu": 18.556167235927273, - "sigma": 4.795151977899489 + "mu": -0.5865014253762091, + "sigma": 11.641945440213247 }, { - "mu": 18.556167235927273, - "sigma": 4.795151977899489 + "mu": -0.5865014253762091, + "sigma": 11.641945440213247 + }, + { + "mu": 3.702021295883023, + "sigma": 11.956698775104776 + } + ], + "team_4": [ + { + "mu": 5.768186899594857, + "sigma": 11.643441193392686 + }, + { + "mu": 6.879365458368556, + "sigma": 11.957426988869216 + } + ] + }, + "balance": { + "team_1": [ + { + "mu": 10.97156253910704, + "sigma": 12.011684722141027 + }, + { + "mu": 10.97156253910704, + "sigma": 12.011684722141027 + } + ], + "team_2": [ + { + "mu": 5.009525495177471, + "sigma": 12.011684722141027 }, { - "mu": 18.556167235927273, - "sigma": 4.795151977899489 + "mu": 5.009525495177471, + "sigma": 12.011684722141027 } ] } diff --git a/tests/models/data/bradleyterrypart.json b/tests/models/data/bradleyterrypart.json index 4389923..bdef4fe 100644 --- a/tests/models/data/bradleyterrypart.json +++ b/tests/models/data/bradleyterrypart.json @@ -1,123 +1,211 @@ { "model": { - "mu": 29.591877305050446, - "sigma": 13.098844036904906 + "mu": 20.72428720353852, + "sigma": 8.860694536844717 }, "normal": { "team_1": [ { - "mu": 35.297308439190104, - "sigma": 12.90113301779029 + "mu": 20.72428720353852, + "sigma": 8.861086396131924 } ], "team_2": [ { - "mu": 23.886446170910784, - "sigma": 12.818233080830527 + "mu": 17.003142789893726, + "sigma": 8.690610515751006 }, { - "mu": 23.886446170910784, - "sigma": 12.818233080830527 + "mu": 17.003142789893726, + "sigma": 8.690610515751006 } ] }, "ranks": { "team_1": [ { - "mu": 27.977382198138226, - "sigma": 12.90113301779029 + "mu": 19.669391477298745, + "sigma": 8.740886050064063 } ], "team_2": [ { - "mu": 31.206372411962665, - "sigma": 12.818233080830527 + "mu": 20.72428720353852, + "sigma": 8.861086396131924 }, { - "mu": 31.206372411962665, - "sigma": 12.818233080830527 + "mu": 20.72428720353852, + "sigma": 8.861086396131924 + } + ], + "team_3": [ + { + "mu": 19.669391477298745, + "sigma": 8.740886050064063 + } + ], + "team_4": [ + { + "mu": 18.0580385161335, + "sigma": 8.516722970324308 + }, + { + "mu": 18.0580385161335, + "sigma": 8.516722970324308 } ] }, "scores": { "team_1": [ { - "mu": 27.977382198138226, - "sigma": 12.90113301779029 + "mu": 19.669391477298745, + "sigma": 8.740886050064063 } ], "team_2": [ { - "mu": 31.206372411962665, - "sigma": 12.818233080830527 + "mu": 20.72428720353852, + "sigma": 8.861086396131924 }, { - "mu": 31.206372411962665, - "sigma": 12.818233080830527 + "mu": 20.72428720353852, + "sigma": 8.861086396131924 } ] }, "limit_sigma": { "team_1": [ { - "mu": 33.732199955492696, - "sigma": 12.831848569054838 + "mu": 19.669391477298745, + "sigma": 8.740886050064063 } ], "team_2": [ { - "mu": 31.206372411962665, - "sigma": 12.818233080830527 + "mu": 20.72428720353852, + "sigma": 8.860694536844717 }, { - "mu": 31.206372411962665, - "sigma": 12.818233080830527 + "mu": 20.72428720353852, + "sigma": 8.860694536844717 } ], "team_3": [ { - "mu": 23.83705954769598, - "sigma": 12.980700830647303 + "mu": 16.93218155968495, + "sigma": 8.788317335281997 }, { - "mu": 23.83705954769598, - "sigma": 12.980700830647303 + "mu": 16.93218155968495, + "sigma": 8.788317335281997 }, { - "mu": 23.83705954769598, - "sigma": 12.980700830647303 + "mu": 16.93218155968495, + "sigma": 8.788317335281997 } ] }, "ties": { "team_1": [ { - "mu": 32.15173706261079, - "sigma": 13.030877334394624 + "mu": 20.72428720353852, + "sigma": 8.860694536844717 + } + ], + "team_2": [ + { + "mu": 19.704644885746394, + "sigma": 8.763632023504769 + }, + { + "mu": 19.704644885746394, + "sigma": 8.763632023504769 + } + ], + "team_3": [ + { + "mu": 19.034300005853755, + "sigma": 8.788317335281997 + }, + { + "mu": 19.034300005853755, + "sigma": 8.788317335281997 + }, + { + "mu": 19.034300005853755, + "sigma": 8.788317335281997 + } + ] + }, + "weights": { + "team_1": [ + { + "mu": 19.33491526262446, + "sigma": 8.801536094663774 + }, + { + "mu": 17.945543321710396, + "sigma": 8.741580127850126 + }, + { + "mu": 17.945543321710396, + "sigma": 8.741580127850126 } ], "team_2": [ { - "mu": 28.03652464170706, - "sigma": 12.94404044274685 + "mu": 20.72428720353852, + "sigma": 8.860694536844717 }, { - "mu": 28.03652464170706, - "sigma": 12.94404044274685 + "mu": 20.72428720353852, + "sigma": 8.860694536844717 } ], "team_3": [ { - "mu": 28.587370210833484, - "sigma": 12.788764232505226 + "mu": 17.945543321710396, + "sigma": 8.741580127850126 }, { - "mu": 28.587370210833484, - "sigma": 12.788764232505226 + "mu": 17.945543321710396, + "sigma": 8.741580127850126 + }, + { + "mu": 19.33491526262446, + "sigma": 8.801536094663774 + } + ], + "team_4": [ + { + "mu": 22.483388767574514, + "sigma": 8.665081671114377 + }, + { + "mu": 24.24249033161051, + "sigma": 8.464539480352748 + } + ] + }, + "balance": { + "team_1": [ + { + "mu": 20.72428720353852, + "sigma": 8.861086396131924 + }, + { + "mu": 20.72428720353852, + "sigma": 8.861086396131924 + } + ], + "team_2": [ + { + "mu": 18.622168757369714, + "sigma": 8.692169973111199 }, { - "mu": 28.587370210833484, - "sigma": 12.788764232505226 + "mu": 18.622168757369714, + "sigma": 8.692169973111199 } ] } diff --git a/tests/models/data/plackettluce.json b/tests/models/data/plackettluce.json index 97b988e..ca773b7 100644 --- a/tests/models/data/plackettluce.json +++ b/tests/models/data/plackettluce.json @@ -1,123 +1,211 @@ { "model": { - "mu": 22.350299400541857, - "sigma": 4.177118726502424 + "mu": 11.438363030321211, + "sigma": 3.9391687644511357 }, "normal": { "team_1": [ { - "mu": 24.064467826765515, - "sigma": 4.163571386191661 + "mu": 12.782213284519441, + "sigma": 3.911785409390482 } ], "team_2": [ { - "mu": 20.6361309743182, - "sigma": 4.15760104967308 + "mu": 10.094512776122981, + "sigma": 3.9000177833490963 }, { - "mu": 20.6361309743182, - "sigma": 4.15760104967308 + "mu": 10.094512776122981, + "sigma": 3.9000177833490963 } ] }, "ranks": { "team_1": [ { - "mu": 22.19401288690994, - "sigma": 4.163571386191661 + "mu": 12.206066883694325, + "sigma": 3.922691016908135 } ], "team_2": [ { - "mu": 22.506585914173776, - "sigma": 4.15760104967308 + "mu": 12.223422590554508, + "sigma": 3.921179712206524 }, { - "mu": 22.506585914173776, - "sigma": 4.15760104967308 + "mu": 12.223422590554508, + "sigma": 3.921179712206524 + } + ], + "team_3": [ + { + "mu": 10.635947763227731, + "sigma": 3.910660673548487 + } + ], + "team_4": [ + { + "mu": 10.68801488380828, + "sigma": 3.883570349094847 + }, + { + "mu": 10.68801488380828, + "sigma": 3.883570349094847 } ] }, "scores": { "team_1": [ { - "mu": 22.19401288690994, - "sigma": 4.163571386191661 + "mu": 11.060449002749687, + "sigma": 3.911785409390482 } ], "team_2": [ { - "mu": 22.506585914173776, - "sigma": 4.15760104967308 + "mu": 11.816277057892735, + "sigma": 3.9000177833490963 }, { - "mu": 22.506585914173776, - "sigma": 4.15760104967308 + "mu": 11.816277057892735, + "sigma": 3.9000177833490963 } ] }, "limit_sigma": { "team_1": [ { - "mu": 23.673188433055675, - "sigma": 4.174097005234212 + "mu": 12.433126050334232, + "sigma": 3.926166086613272 } ], "team_2": [ { - "mu": 23.54860097168954, - "sigma": 4.164693649388653 + "mu": 12.402120196709886, + "sigma": 3.9216608047908728 }, { - "mu": 23.54860097168954, - "sigma": 4.164693649388653 + "mu": 12.402120196709886, + "sigma": 3.9216608047908728 } ], "team_3": [ { - "mu": 19.829108796880355, - "sigma": 4.155899775058227 + "mu": 9.479842843919515, + "sigma": 3.8992189282061274 }, { - "mu": 19.829108796880355, - "sigma": 4.155899775058227 + "mu": 9.479842843919515, + "sigma": 3.8992189282061274 }, { - "mu": 19.829108796880355, - "sigma": 4.155899775058227 + "mu": 9.479842843919515, + "sigma": 3.8992189282061274 } ] }, "ties": { "team_1": [ { - "mu": 23.01442322005181, - "sigma": 4.176165477042022 + "mu": 11.956880999886444, + "sigma": 3.933988038285247 + } + ], + "team_2": [ + { + "mu": 11.113931875268776, + "sigma": 3.9216608047908728 + }, + { + "mu": 11.113931875268776, + "sigma": 3.9216608047908728 + } + ], + "team_3": [ + { + "mu": 11.244276215808414, + "sigma": 3.9128503366944716 + }, + { + "mu": 11.244276215808414, + "sigma": 3.9128503366944716 + }, + { + "mu": 11.244276215808414, + "sigma": 3.9128503366944716 + } + ] + }, + "weights": { + "team_1": [ + { + "mu": 11.963461306212208, + "sigma": 3.8818914773270023 + }, + { + "mu": 11.70091216826671, + "sigma": 3.9110789074765515 + }, + { + "mu": 11.70091216826671, + "sigma": 3.9110789074765515 } ], "team_2": [ { - "mu": 22.154697318038096, - "sigma": 4.164693649388653 + "mu": 12.309365636907438, + "sigma": 3.9332788342849776 }, { - "mu": 22.154697318038096, - "sigma": 4.164693649388653 + "mu": 13.180368243493666, + "sigma": 3.9264958649152364 } ], "team_3": [ { - "mu": 21.88177766353566, - "sigma": 4.159497495039252 + "mu": 9.958906955094255, + "sigma": 3.8975166983289413 }, { - "mu": 21.88177766353566, - "sigma": 4.159497495039252 + "mu": 9.958906955094255, + "sigma": 3.8975166983289413 + }, + { + "mu": 10.698634992707733, + "sigma": 3.918841117793937 + } + ], + "team_4": [ + { + "mu": 11.784267361016441, + "sigma": 3.914471657354773 + }, + { + "mu": 12.13017169171167, + "sigma": 3.8887249469711436 + } + ] + }, + "balance": { + "team_1": [ + { + "mu": 12.22721405035698, + "sigma": 3.8950739697983936 + }, + { + "mu": 12.22721405035698, + "sigma": 3.8950739697983936 + } + ], + "team_2": [ + { + "mu": 10.649512010285441, + "sigma": 3.8950739697983936 }, { - "mu": 21.88177766353566, - "sigma": 4.159497495039252 + "mu": 10.649512010285441, + "sigma": 3.8950739697983936 } ] } diff --git a/tests/models/data/thurstonemostellerfull.json b/tests/models/data/thurstonemostellerfull.json index ac283f2..3ce3488 100644 --- a/tests/models/data/thurstonemostellerfull.json +++ b/tests/models/data/thurstonemostellerfull.json @@ -1,123 +1,211 @@ { "model": { - "mu": 22.919853696612385, - "sigma": 7.315441649030257 + "mu": 19.04230123119031, + "sigma": 7.574813660171548 }, "normal": { "team_1": [ { - "mu": 30.80436898362276, - "sigma": 6.848823647647472 + "mu": 26.185003979139815, + "sigma": 7.098267308440279 } ], "team_2": [ { - "mu": 15.03533840960201, - "sigma": 6.645738987776496 + "mu": 11.899598483240808, + "sigma": 6.891021263805443 }, { - "mu": 15.03533840960201, - "sigma": 6.645738987776496 + "mu": 11.899598483240808, + "sigma": 6.891021263805443 } ] }, "ranks": { "team_1": [ { - "mu": 22.50057782249884, - "sigma": 7.214694670332423 + "mu": 29.199485435869974, + "sigma": 6.27568253835531 } ], "team_2": [ { - "mu": 23.33912957072593, - "sigma": 7.172348917871497 + "mu": 23.319554876277387, + "sigma": 6.753926106557419 }, { - "mu": 23.33912957072593, - "sigma": 7.172348917871497 + "mu": 23.319554876277387, + "sigma": 6.753926106557419 + } + ], + "team_3": [ + { + "mu": 13.836807954607847, + "sigma": 6.638589595258563 + } + ], + "team_4": [ + { + "mu": 9.81335665800604, + "sigma": 6.244001180209749 + }, + { + "mu": 9.81335665800604, + "sigma": 6.244001180209749 } ] }, "scores": { "team_1": [ { - "mu": 22.50057782249884, - "sigma": 7.214694670332423 + "mu": 18.311963957906208, + "sigma": 7.421056479648265 } ], "team_2": [ { - "mu": 23.33912957072593, - "sigma": 7.172348917871497 + "mu": 19.772638504474415, + "sigma": 7.356231451809809 }, { - "mu": 23.33912957072593, - "sigma": 7.172348917871497 + "mu": 19.772638504474415, + "sigma": 7.356231451809809 } ] }, "limit_sigma": { "team_1": [ { - "mu": 33.344834614087276, - "sigma": 6.863302477210084 + "mu": 27.772731138951926, + "sigma": 7.05854496127076 } ], "team_2": [ { - "mu": 28.835105097450004, - "sigma": 6.836555705575856 + "mu": 24.811605126925393, + "sigma": 7.012337679832765 }, { - "mu": 28.835105097450004, - "sigma": 6.836555705575856 + "mu": 24.811605126925393, + "sigma": 7.012337679832765 } ], "team_3": [ { - "mu": 6.579621378299876, - "sigma": 6.260434126595865 + "mu": 4.542567427693614, + "sigma": 6.499337543762816 }, { - "mu": 6.579621378299876, - "sigma": 6.260434126595865 + "mu": 4.542567427693614, + "sigma": 6.499337543762816 }, { - "mu": 6.579621378299876, - "sigma": 6.260434126595865 + "mu": 4.542567427693614, + "sigma": 6.499337543762816 } ] }, "ties": { "team_1": [ { - "mu": 40.66502294415612, - "sigma": 6.447221320370018 + "mu": 34.4551149566015, + "sigma": 6.676729013938987 + } + ], + "team_2": [ + { + "mu": 11.050748056195548, + "sigma": 6.732988518318887 + }, + { + "mu": 11.050748056195548, + "sigma": 6.732988518318887 + } + ], + "team_3": [ + { + "mu": 11.62104068077389, + "sigma": 6.685083597544458 + }, + { + "mu": 11.62104068077389, + "sigma": 6.685083597544458 + }, + { + "mu": 11.62104068077389, + "sigma": 6.685083597544458 + } + ] + }, + "weights": { + "team_1": [ + { + "mu": 18.12314510469279, + "sigma": 7.153784116858028 + }, + { + "mu": 17.20398897819527, + "sigma": 6.70585624290101 + }, + { + "mu": 17.20398897819527, + "sigma": 6.70585624290101 } ], "team_2": [ { - "mu": 14.466950192459182, - "sigma": 6.526969667932684 + "mu": 31.93681357461114, + "sigma": 6.501861694621855 }, { - "mu": 14.466950192459182, - "sigma": 6.526969667932684 + "mu": 44.831325918031965, + "sigma": 5.211877258840237 } ], "team_3": [ { - "mu": 13.627587953221855, - "sigma": 6.508289333802922 + "mu": 6.612564043877676, + "sigma": 6.446211883114952 }, { - "mu": 13.627587953221855, - "sigma": 6.508289333802922 + "mu": 6.612564043877676, + "sigma": 6.446211883114952 + }, + { + "mu": 12.827432637533994, + "sigma": 7.033434227771607 + } + ], + "team_4": [ + { + "mu": 20.41583832807716, + "sigma": 6.712855373250618 + }, + { + "mu": 21.789375424964014, + "sigma": 5.72189724598349 + } + ] + }, + "balance": { + "team_1": [ + { + "mu": 21.85888032970918, + "sigma": 7.221961531964705 + }, + { + "mu": 21.85888032970918, + "sigma": 7.221961531964705 + } + ], + "team_2": [ + { + "mu": 16.225722132671443, + "sigma": 7.221961531964705 }, { - "mu": 13.627587953221855, - "sigma": 6.508289333802922 + "mu": 16.225722132671443, + "sigma": 7.221961531964705 } ] } diff --git a/tests/models/data/thurstonemostellerpart.json b/tests/models/data/thurstonemostellerpart.json index 5bfb896..1090437 100644 --- a/tests/models/data/thurstonemostellerpart.json +++ b/tests/models/data/thurstonemostellerpart.json @@ -1,123 +1,211 @@ { "model": { - "mu": 25.774171727105287, - "sigma": 10.937097079436924 + "mu": 10.559059837609759, + "sigma": 8.069200040033726 }, "normal": { "team_1": [ { - "mu": 29.54956863014898, - "sigma": 10.850626750760513 + "mu": 10.559059837609759, + "sigma": 8.069630334192809 } ], "team_2": [ { - "mu": 21.998774824061595, - "sigma": 10.814474074695855 + "mu": 8.344105240856337, + "sigma": 7.993491291173512 }, { - "mu": 21.998774824061595, - "sigma": 10.814474074695855 + "mu": 8.344105240856337, + "sigma": 7.993491291173512 } ] }, "ranks": { "team_1": [ { - "mu": 24.461531790977897, - "sigma": 10.883175054800788 + "mu": 9.291945529100623, + "sigma": 8.02745446224841 } ], "team_2": [ { - "mu": 27.086811663232677, - "sigma": 10.860628983082014 + "mu": 10.559059837609759, + "sigma": 8.069630334192809 }, { - "mu": 27.086811663232677, - "sigma": 10.860628983082014 + "mu": 10.559059837609759, + "sigma": 8.069630334192809 + } + ], + "team_3": [ + { + "mu": 9.291945529100623, + "sigma": 8.02745446224841 + } + ], + "team_4": [ + { + "mu": 9.611219549365472, + "sigma": 7.933207503314477 + }, + { + "mu": 9.611219549365472, + "sigma": 7.933207503314477 } ] }, "scores": { "team_1": [ { - "mu": 24.461531790977897, - "sigma": 10.883175054800788 + "mu": 9.291945529100623, + "sigma": 8.02745446224841 } ], "team_2": [ { - "mu": 27.086811663232677, - "sigma": 10.860628983082014 + "mu": 10.559059837609759, + "sigma": 8.069630334192809 }, { - "mu": 27.086811663232677, - "sigma": 10.860628983082014 + "mu": 10.559059837609759, + "sigma": 8.069630334192809 } ] }, "limit_sigma": { "team_1": [ { - "mu": 28.78227662788733, - "sigma": 10.819885770543111 + "mu": 9.291945529100623, + "sigma": 8.02745446224841 } ], "team_2": [ { - "mu": 27.086811663232677, - "sigma": 10.860628983082014 + "mu": 10.559059837609759, + "sigma": 8.069200040033726 }, { - "mu": 27.086811663232677, - "sigma": 10.860628983082014 + "mu": 10.559059837609759, + "sigma": 8.069200040033726 } ], "team_3": [ { - "mu": 21.45342689019585, - "sigma": 10.828108878644974 + "mu": 8.235863631750943, + "sigma": 8.001508804076579 }, { - "mu": 21.45342689019585, - "sigma": 10.828108878644974 + "mu": 8.235863631750943, + "sigma": 8.001508804076579 }, { - "mu": 21.45342689019585, - "sigma": 10.828108878644974 + "mu": 8.235863631750943, + "sigma": 8.001508804076579 } ] }, "ties": { "team_1": [ { - "mu": 28.777970793110164, - "sigma": 10.860217023487014 + "mu": 10.559059837609759, + "sigma": 8.069200040033726 + } + ], + "team_2": [ + { + "mu": 9.47901391000136, + "sigma": 8.038245361611517 + }, + { + "mu": 9.47901391000136, + "sigma": 8.038245361611517 + } + ], + "team_3": [ + { + "mu": 9.394432093354897, + "sigma": 7.978609700315315 + }, + { + "mu": 9.394432093354897, + "sigma": 7.978609700315315 + }, + { + "mu": 9.394432093354897, + "sigma": 7.978609700315315 + } + ] + }, + "weights": { + "team_1": [ + { + "mu": 9.716022655499692, + "sigma": 8.046346418884688 + }, + { + "mu": 8.872985473389626, + "sigma": 8.022994930502708 + }, + { + "mu": 8.872985473389626, + "sigma": 8.022994930502708 } ], "team_2": [ { - "mu": 24.578513895645422, - "sigma": 10.89678034000162 + "mu": 10.559059837609759, + "sigma": 8.069200040033726 }, { - "mu": 24.578513895645422, - "sigma": 10.89678034000162 + "mu": 10.559059837609759, + "sigma": 8.069200040033726 } ], "team_3": [ { - "mu": 23.96603049256028, - "sigma": 10.752946697757432 + "mu": 8.872985473389626, + "sigma": 8.022994930502708 }, { - "mu": 23.96603049256028, - "sigma": 10.752946697757432 + "mu": 8.872985473389626, + "sigma": 8.022994930502708 + }, + { + "mu": 9.716022655499692, + "sigma": 8.046346418884688 + } + ], + "team_4": [ + { + "mu": 11.165088274221493, + "sigma": 8.000038698572958 + }, + { + "mu": 11.771116710833228, + "sigma": 7.9298363556132125 + } + ] + }, + "balance": { + "team_1": [ + { + "mu": 10.559059837609759, + "sigma": 8.069630334192809 + }, + { + "mu": 10.559059837609759, + "sigma": 8.069630334192809 + } + ], + "team_2": [ + { + "mu": 9.047025405344794, + "sigma": 8.022446672134143 }, { - "mu": 23.96603049256028, - "sigma": 10.752946697757432 + "mu": 9.047025405344794, + "sigma": 8.022446672134143 } ] } diff --git a/tests/models/generate.py b/tests/models/generate.py index 539c806..b19f85b 100644 --- a/tests/models/generate.py +++ b/tests/models/generate.py @@ -62,8 +62,12 @@ def generate_expected_test_data() -> None: team_1 = [r()] team_2 = [r(), r()] + team_3 = [r()] + team_4 = [r(), r()] - game_result = model.rate(teams=[team_1, team_2], ranks=[2, 1]) + game_result = model.rate( + teams=[team_1, team_2, team_3, team_4], ranks=[2, 1, 4, 3] + ) rank_data = generate_model_data(game_result) team_1 = [r()] @@ -94,6 +98,25 @@ def generate_expected_test_data() -> None: game_result = model.rate(teams=[team_1, team_2, team_3], ranks=[1, 2, 1]) ties_data = generate_model_data(game_result) + team_1 = [r(), r(), r()] + team_2 = [r(), r()] + team_3 = [r(), r(), r()] + team_4 = [r(), r()] + + game_result = model.rate( + teams=[team_1, team_2, team_3, team_4], + ranks=[2, 1, 4, 3], + weights=[[2, 0, 0], [1, 2], [0, 0, 1], [0, 1]], + ) + weights_data = generate_model_data(game_result) + + team_1 = [r(), r()] + team_2 = [r(), r()] + + model = current_model(mu=mu, sigma=sigma, balance=True) + game_result = model.rate(teams=[team_1, team_2], ranks=[1, 2]) + balance_data = generate_model_data(game_result) + # Write Expected Data with open(f"data/{current_model.__name__.lower()}.json", "w") as model_json: data = { @@ -106,6 +129,8 @@ def generate_expected_test_data() -> None: "scores": score_data, "limit_sigma": limit_sigma_data, "ties": ties_data, + "weights": weights_data, + "balance": balance_data, } json.dump(data, model_json, indent=4) diff --git a/tests/models/test_common.py b/tests/models/test_common.py index 8fdb4eb..74cfd7e 100644 --- a/tests/models/test_common.py +++ b/tests/models/test_common.py @@ -3,12 +3,7 @@ """ from openskill.models import MODELS -from openskill.models.common import ( - _arg_sort, - _matrix_transpose, - _rank_data, - _unary_minus, -) +from openskill.models.common import _matrix_transpose, _normalize, _unary_minus def test_model_rating() -> None: @@ -40,31 +35,6 @@ def test_unary_minus() -> None: assert _unary_minus(0.0) == 0.0 -def test_arg_sort() -> None: - """ - Tests the :code:`_arg_sort` function. - """ - assert _arg_sort([1, 2, 3]) == [0, 1, 2] - assert _arg_sort([3, 2, 1]) == [2, 1, 0] - assert _arg_sort([1, 3, 2]) == [0, 2, 1] - assert _arg_sort([1, 1, 1]) == [0, 1, 2] - assert _arg_sort([1, 1, 2]) == [0, 1, 2] - assert _arg_sort([1, 2, 1]) == [0, 2, 1] - - -def test_rank_data() -> None: - """ - Tests the :code:`_rank_data` function. - """ - assert _rank_data([1, 2, 3]) == [1, 2, 3] - assert _rank_data([3, 2, 1]) == [3, 2, 1] - assert _rank_data([1, 3, 2]) == [1, 3, 2] - assert _rank_data([1, 1, 1]) == [1, 1, 1] - assert _rank_data([1, 1, 3]) == [1, 1, 3] - assert _rank_data([1, 2, 3, 3, 3, 4]) == [1, 2, 3, 3, 3, 6] - assert _rank_data([1, 2, 2, 3, 3, 4]) == [1, 2, 2, 4, 4, 6] - - def test_matrix_transpose() -> None: """ Tests the :code:`_matrix_transpose` function. @@ -79,3 +49,14 @@ def test_matrix_transpose() -> None: [3, 6, 9], ] assert _matrix_transpose([[1, 2], [3, 4]]) == [[1, 3], [2, 4]] + + +def test_normalize() -> None: + """ + Tests the :code:`_normalize` function. + """ + assert _normalize([1, 2, 3], 0, 1) == [0.0, 0.5, 1.0] + assert _normalize([1, 2, 3], 0, 100) == [0.0, 50.0, 100.0] + assert _normalize([1, 2, 3], 0, 10) == [0.0, 5.0, 10.0] + assert _normalize([1, 2, 3], 1, 0) == [1.0, 0.5, 0.0] + assert _normalize([1, 1, 1], 0, 1) == [0.0, 0.0, 0.0] diff --git a/tests/models/weng_lin/test_bradley_terry_full.py b/tests/models/weng_lin/test_bradley_terry_full.py index e289612..f09182a 100644 --- a/tests/models/weng_lin/test_bradley_terry_full.py +++ b/tests/models/weng_lin/test_bradley_terry_full.py @@ -27,6 +27,9 @@ def test_model_defaults() -> None: assert model.sigma == 25.0 / 3.0 assert model.beta == 25.0 / 6.0 assert model.kappa == 0.0001 + assert model.tau == 25.0 / 300.0 + assert model.limit_sigma is False + assert model.balance is False assert model.__repr__() == f"BradleyTerryFull(mu=25.0, sigma={25.0 / 3.0})" assert model.__str__() == ( f"Bradley-Terry Full Pairing Model Parameters: \n\n" @@ -325,8 +328,12 @@ def test_rate() -> None: team_1 = [r()] team_2 = [r(), r()] + team_3 = [r()] + team_4 = [r(), r()] - results_ranks = model.rate(teams=[team_1, team_2], ranks=[2, 1]) + results_ranks = model.rate( + teams=[team_1, team_2, team_3, team_4], ranks=[2, 1, 4, 3] + ) check_expected(data, "ranks", results_ranks) team_1 = [r()] @@ -352,6 +359,27 @@ def test_rate() -> None: results_ties = model.rate(teams=[team_1, team_2, team_3], ranks=[1, 2, 1]) check_expected(data, "ties", results_ties) + # Test Weights + team_1 = [r(), r(), r()] + team_2 = [r(), r()] + team_3 = [r(), r(), r()] + team_4 = [r(), r()] + + results_weights = model.rate( + teams=[team_1, team_2, team_3, team_4], + ranks=[2, 1, 4, 3], + weights=[[2, 0, 0], [1, 2], [0, 0, 1], [0, 1]], + ) + check_expected(data, "weights", results_weights) + + # Test Balance + team_1 = [r(), r()] + team_2 = [r(), r()] + + model = BradleyTerryFull(mu, sigma, balance=True) + results_balance = model.rate(teams=[team_1, team_2], ranks=[1, 2]) + check_expected(data, "balance", results_balance) + def test_rate_errors() -> None: """ @@ -387,6 +415,31 @@ def test_rate_errors() -> None: with pytest.raises(TypeError): model.rate(teams=[team_1, team_2, team_3], scores=[21, "abc", 23]) + with pytest.raises(ValueError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[[10, 5], [10, 5]]) + + with pytest.raises(ValueError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[10, 5, 5]) # type: ignore + + with pytest.raises(TypeError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[[10], [10, "5"]]) + + with pytest.raises(TypeError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=21) # type: ignore + + with pytest.raises(TypeError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[[10], "5"]) + + with pytest.raises(ValueError): + model.rate( + teams=[team_1, team_2], ranks=[2, 1], weights=[[10], [10, 5], [1, 2, 50]] + ) + + # Make sure this doesn't result in an error + [[_], [_, _]] = model.rate( + teams=[team_1, team_2], ranks=[2, 1], weights=[[5], [5, 10]] + ) + # Prevents sigma from rising a = r(mu=40, sigma=3) b = r(mu=-20, sigma=3) @@ -478,13 +531,13 @@ def test_predict_draw(): team_2 = [b1, b2] probability = model.predict_draw(teams=[team_1, team_2]) - assert probability == pytest.approx(0.3839934, 0.0001) + assert probability == pytest.approx(0.1694772, 0.0001) probability = model.predict_draw(teams=[team_1, team_2, [a1], [a2], [b1]]) - assert probability == pytest.approx(0.0535105, 0.0001) + assert probability == pytest.approx(0.0518253, 0.0001) probability = model.predict_draw(teams=[[b1], [b1]]) - assert probability == pytest.approx(1) + assert probability == pytest.approx(0.5) with pytest.raises(ValueError): model.predict_draw(teams=[team_1]) @@ -509,15 +562,15 @@ def test_predict_rank(): team_2 = [a2, b2] team_3 = [a3, b3] + # Test predict_rank ranks = model.predict_rank(teams=[team_1, team_2, team_3]) total_rank_probability = sum([y for x, y in ranks]) - draw_probability = model.predict_draw(teams=[team_1, team_2, team_3]) - assert total_rank_probability + draw_probability == pytest.approx(1) + assert total_rank_probability == pytest.approx(1) - ranks = model.predict_rank(teams=[team_1, team_1, team_1]) - total_rank_probability = sum([y for x, y in ranks]) - draw_probability = model.predict_draw(teams=[team_1, team_1, team_1]) - assert total_rank_probability + draw_probability == pytest.approx(1) + # Test with identical teams + identical_ranks = model.predict_rank(teams=[team_1, team_1, team_1]) + identical_total_rank_probability = sum([y for x, y in identical_ranks]) + assert identical_total_rank_probability == pytest.approx(1) with pytest.raises(ValueError): model.predict_rank(teams=[team_1]) diff --git a/tests/models/weng_lin/test_bradley_terry_part.py b/tests/models/weng_lin/test_bradley_terry_part.py index f3b5d4f..3b1a532 100644 --- a/tests/models/weng_lin/test_bradley_terry_part.py +++ b/tests/models/weng_lin/test_bradley_terry_part.py @@ -26,6 +26,9 @@ def test_model_defaults() -> None: assert model.sigma == 25.0 / 3.0 assert model.beta == 25.0 / 6.0 assert model.kappa == 0.0001 + assert model.tau == 25.0 / 300.0 + assert model.limit_sigma is False + assert model.balance is False assert model.__repr__() == f"BradleyTerryPart(mu=25.0, sigma={25.0 / 3.0})" assert model.__str__() == ( f"Bradley-Terry Partial Pairing Model Parameters: \n\n" @@ -328,8 +331,12 @@ def test_rate() -> None: team_1 = [r()] team_2 = [r(), r()] + team_3 = [r()] + team_4 = [r(), r()] - results_ranks = model.rate(teams=[team_1, team_2], ranks=[2, 1]) + results_ranks = model.rate( + teams=[team_1, team_2, team_3, team_4], ranks=[2, 1, 4, 3] + ) check_expected(data, "ranks", results_ranks) team_1 = [r()] @@ -355,6 +362,27 @@ def test_rate() -> None: results_ties = model.rate(teams=[team_1, team_2, team_3], ranks=[1, 2, 1]) check_expected(data, "ties", results_ties) + # Test Weights + team_1 = [r(), r(), r()] + team_2 = [r(), r()] + team_3 = [r(), r(), r()] + team_4 = [r(), r()] + + results_weights = model.rate( + teams=[team_1, team_2, team_3, team_4], + ranks=[2, 1, 4, 3], + weights=[[2, 0, 0], [1, 2], [0, 0, 1], [0, 1]], + ) + check_expected(data, "weights", results_weights) + + # Test Balance + team_1 = [r(), r()] + team_2 = [r(), r()] + + model = BradleyTerryPart(mu, sigma, balance=True) + results_balance = model.rate(teams=[team_1, team_2], ranks=[1, 2]) + check_expected(data, "balance", results_balance) + def test_rate_errors() -> None: """ @@ -390,6 +418,31 @@ def test_rate_errors() -> None: with pytest.raises(TypeError): model.rate(teams=[team_1, team_2, team_3], scores=[21, "abc", 23]) + with pytest.raises(ValueError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[[10, 5], [10, 5]]) + + with pytest.raises(ValueError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[10, 5, 5]) # type: ignore + + with pytest.raises(TypeError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[[10], [10, "5"]]) + + with pytest.raises(TypeError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=21) # type: ignore + + with pytest.raises(TypeError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[[10], "5"]) + + with pytest.raises(ValueError): + model.rate( + teams=[team_1, team_2], ranks=[2, 1], weights=[[10], [10, 5], [1, 2, 50]] + ) + + # Make sure this doesn't result in an error + [[_], [_, _]] = model.rate( + teams=[team_1, team_2], ranks=[2, 1], weights=[[5], [5, 10]] + ) + # Prevents sigma from rising a = r(mu=40, sigma=3) b = r(mu=-20, sigma=3) @@ -481,13 +534,13 @@ def test_predict_draw(): team_2 = [b1, b2] probability = model.predict_draw(teams=[team_1, team_2]) - assert probability == pytest.approx(0.3839934, 0.0001) + assert probability == pytest.approx(0.1694772, 0.0001) probability = model.predict_draw(teams=[team_1, team_2, [a1], [a2], [b1]]) - assert probability == pytest.approx(0.0535105, 0.0001) + assert probability == pytest.approx(0.0518253, 0.0001) probability = model.predict_draw(teams=[[b1], [b1]]) - assert probability == pytest.approx(1) + assert probability == pytest.approx(0.5) with pytest.raises(ValueError): model.predict_draw(teams=[team_1]) @@ -512,15 +565,15 @@ def test_predict_rank(): team_2 = [a2, b2] team_3 = [a3, b3] + # Test predict_rank ranks = model.predict_rank(teams=[team_1, team_2, team_3]) total_rank_probability = sum([y for x, y in ranks]) - draw_probability = model.predict_draw(teams=[team_1, team_2, team_3]) - assert total_rank_probability + draw_probability == pytest.approx(1) + assert total_rank_probability == pytest.approx(1) - ranks = model.predict_rank(teams=[team_1, team_1, team_1]) - total_rank_probability = sum([y for x, y in ranks]) - draw_probability = model.predict_draw(teams=[team_1, team_1, team_1]) - assert total_rank_probability + draw_probability == pytest.approx(1) + # Test with identical teams + identical_ranks = model.predict_rank(teams=[team_1, team_1, team_1]) + identical_total_rank_probability = sum([y for x, y in identical_ranks]) + assert identical_total_rank_probability == pytest.approx(1) with pytest.raises(ValueError): model.predict_rank(teams=[team_1]) diff --git a/tests/models/weng_lin/test_plackett_luce.py b/tests/models/weng_lin/test_plackett_luce.py index 2079add..8122460 100644 --- a/tests/models/weng_lin/test_plackett_luce.py +++ b/tests/models/weng_lin/test_plackett_luce.py @@ -27,6 +27,9 @@ def test_model_defaults() -> None: assert model.sigma == 25.0 / 3.0 assert model.beta == 25.0 / 6.0 assert model.kappa == 0.0001 + assert model.tau == 25.0 / 300.0 + assert model.limit_sigma is False + assert model.balance is False assert model.__repr__() == f"PlackettLuce(mu=25.0, sigma={25.0 / 3.0})" assert model.__str__() == ( f"Plackett-Luce Model Parameters: \n\n" f"mu: 25.0\n" f"sigma: {25.0 / 3.0}\n" @@ -43,12 +46,12 @@ def test_rating_defaults() -> None: rating = model.rating() assert rating.mu == 30.0 assert rating.sigma == 30.0 / 3.0 - assert rating.__repr__() == f"PlackettLuceRating(mu=30.0, sigma={30.0/3.0})" + assert rating.__repr__() == f"PlackettLuceRating(mu=30.0, sigma={30.0 / 3.0})" assert rating.__str__() == ( f"Plackett-Luce Player Data: \n\n" f"id: {rating.id}\n" f"mu: 30.0\n" - f"sigma: {30.0/3.0}\n" + f"sigma: {30.0 / 3.0}\n" ) # Test Hash @@ -71,13 +74,13 @@ def test_rating_overrides() -> None: assert rating_2.mu == 30 assert rating_2.sigma == 40 / 3 assert rating_2.name == "Vivek Joshy" - assert rating_2.__repr__() == f"PlackettLuceRating(mu=30.0, sigma={40.0/3.0})" + assert rating_2.__repr__() == f"PlackettLuceRating(mu=30.0, sigma={40.0 / 3.0})" assert rating_2.__str__() == ( f"Plackett-Luce Player Data: \n\n" f"id: {rating_2.id}\n" f"name: Vivek Joshy\n" f"mu: 30.0\n" - f"sigma: {40.0/3.0}\n" + f"sigma: {40.0 / 3.0}\n" ) @@ -322,8 +325,12 @@ def test_rate() -> None: team_1 = [r()] team_2 = [r(), r()] + team_3 = [r()] + team_4 = [r(), r()] - results_ranks = model.rate(teams=[team_1, team_2], ranks=[2, 1]) + results_ranks = model.rate( + teams=[team_1, team_2, team_3, team_4], ranks=[2, 1, 4, 3] + ) check_expected(data, "ranks", results_ranks) team_1 = [r()] @@ -349,6 +356,27 @@ def test_rate() -> None: results_ties = model.rate(teams=[team_1, team_2, team_3], ranks=[1, 2, 1]) check_expected(data, "ties", results_ties) + # Test Weights + team_1 = [r(), r(), r()] + team_2 = [r(), r()] + team_3 = [r(), r(), r()] + team_4 = [r(), r()] + + results_weights = model.rate( + teams=[team_1, team_2, team_3, team_4], + ranks=[2, 1, 4, 3], + weights=[[2, 0, 0], [1, 2], [0, 0, 1], [0, 1]], + ) + check_expected(data, "weights", results_weights) + + # Test Balance + team_1 = [r(), r()] + team_2 = [r(), r()] + + model = PlackettLuce(mu, sigma, balance=True) + results_balance = model.rate(teams=[team_1, team_2], ranks=[1, 2]) + check_expected(data, "balance", results_balance) + def test_rate_errors() -> None: """ @@ -385,6 +413,31 @@ def test_rate_errors() -> None: with pytest.raises(TypeError): model.rate(teams=[team_1, team_2, team_3], scores=[21, "abc", 23]) + with pytest.raises(ValueError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[[10, 5], [10, 5]]) + + with pytest.raises(ValueError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[10, 5, 5]) # type: ignore + + with pytest.raises(TypeError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[[10], [10, "5"]]) + + with pytest.raises(TypeError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=21) # type: ignore + + with pytest.raises(TypeError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[[10], "5"]) + + with pytest.raises(ValueError): + model.rate( + teams=[team_1, team_2], ranks=[2, 1], weights=[[10], [10, 5], [1, 2, 50]] + ) + + # Make sure this doesn't result in an error + [[_], [_, _]] = model.rate( + teams=[team_1, team_2], ranks=[2, 1], weights=[[5], [5, 10]] + ) + # Prevents sigma from rising a = r(mu=40, sigma=3) b = r(mu=-20, sigma=3) @@ -476,13 +529,13 @@ def test_predict_draw(): team_2 = [b1, b2] probability = model.predict_draw(teams=[team_1, team_2]) - assert probability == pytest.approx(0.3839934, 0.0001) + assert probability == pytest.approx(0.1694772, 0.0001) probability = model.predict_draw(teams=[team_1, team_2, [a1], [a2], [b1]]) - assert probability == pytest.approx(0.0535105, 0.0001) + assert probability == pytest.approx(0.0518253, 0.0001) probability = model.predict_draw(teams=[[b1], [b1]]) - assert probability == pytest.approx(1) + assert probability == pytest.approx(0.5) with pytest.raises(ValueError): model.predict_draw(teams=[team_1]) @@ -507,15 +560,15 @@ def test_predict_rank(): team_2 = [a2, b2] team_3 = [a3, b3] + # Test predict_rank ranks = model.predict_rank(teams=[team_1, team_2, team_3]) total_rank_probability = sum([y for x, y in ranks]) - draw_probability = model.predict_draw(teams=[team_1, team_2, team_3]) - assert total_rank_probability + draw_probability == pytest.approx(1) + assert total_rank_probability == pytest.approx(1) - ranks = model.predict_rank(teams=[team_1, team_1, team_1]) - total_rank_probability = sum([y for x, y in ranks]) - draw_probability = model.predict_draw(teams=[team_1, team_1, team_1]) - assert total_rank_probability + draw_probability == pytest.approx(1) + # Test with identical teams + identical_ranks = model.predict_rank(teams=[team_1, team_1, team_1]) + identical_total_rank_probability = sum([y for x, y in identical_ranks]) + assert identical_total_rank_probability == pytest.approx(1) with pytest.raises(ValueError): model.predict_rank(teams=[team_1]) diff --git a/tests/models/weng_lin/test_thurstone_mosteller_full.py b/tests/models/weng_lin/test_thurstone_mosteller_full.py index 2435846..61f8d2e 100644 --- a/tests/models/weng_lin/test_thurstone_mosteller_full.py +++ b/tests/models/weng_lin/test_thurstone_mosteller_full.py @@ -27,6 +27,9 @@ def test_model_defaults() -> None: assert model.sigma == 25.0 / 3.0 assert model.beta == 25.0 / 6.0 assert model.kappa == 0.0001 + assert model.tau == 25.0 / 300.0 + assert model.limit_sigma is False + assert model.balance is False assert model.__repr__() == f"ThurstoneMostellerFull(mu=25.0, sigma={25.0 / 3.0})" assert model.__str__() == ( f"Thurstone-Mosteller Full Pairing Model Parameters: \n\n" @@ -332,8 +335,12 @@ def test_rate() -> None: team_1 = [r()] team_2 = [r(), r()] + team_3 = [r()] + team_4 = [r(), r()] - results_ranks = model.rate(teams=[team_1, team_2], ranks=[2, 1]) + results_ranks = model.rate( + teams=[team_1, team_2, team_3, team_4], ranks=[2, 1, 4, 3] + ) check_expected(data, "ranks", results_ranks) team_1 = [r()] @@ -359,6 +366,27 @@ def test_rate() -> None: results_ties = model.rate(teams=[team_1, team_2, team_3], ranks=[1, 2, 1]) check_expected(data, "ties", results_ties) + # Test Weights + team_1 = [r(), r(), r()] + team_2 = [r(), r()] + team_3 = [r(), r(), r()] + team_4 = [r(), r()] + + results_weights = model.rate( + teams=[team_1, team_2, team_3, team_4], + ranks=[2, 1, 4, 3], + weights=[[2, 0, 0], [1, 2], [0, 0, 1], [0, 1]], + ) + check_expected(data, "weights", results_weights) + + # Test Balance + team_1 = [r(), r()] + team_2 = [r(), r()] + + model = ThurstoneMostellerFull(mu, sigma, balance=True) + results_balance = model.rate(teams=[team_1, team_2], ranks=[1, 2]) + check_expected(data, "balance", results_balance) + def test_rate_errors() -> None: """ @@ -394,6 +422,31 @@ def test_rate_errors() -> None: with pytest.raises(TypeError): model.rate(teams=[team_1, team_2, team_3], scores=[21, "abc", 23]) + with pytest.raises(ValueError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[[10, 5], [10, 5]]) + + with pytest.raises(ValueError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[10, 5, 5]) # type: ignore + + with pytest.raises(TypeError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[[10], [10, "5"]]) + + with pytest.raises(TypeError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=21) # type: ignore + + with pytest.raises(TypeError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[[10], "5"]) + + with pytest.raises(ValueError): + model.rate( + teams=[team_1, team_2], ranks=[2, 1], weights=[[10], [10, 5], [1, 2, 50]] + ) + + # Make sure this doesn't result in an error + [[_], [_, _]] = model.rate( + teams=[team_1, team_2], ranks=[2, 1], weights=[[5], [5, 10]] + ) + # Prevents sigma from rising a = r(mu=40, sigma=3) b = r(mu=-20, sigma=3) @@ -485,13 +538,13 @@ def test_predict_draw(): team_2 = [b1, b2] probability = model.predict_draw(teams=[team_1, team_2]) - assert probability == pytest.approx(0.3839934, 0.0001) + assert probability == pytest.approx(0.1694772, 0.0001) probability = model.predict_draw(teams=[team_1, team_2, [a1], [a2], [b1]]) - assert probability == pytest.approx(0.0535105, 0.0001) + assert probability == pytest.approx(0.0518253, 0.0001) probability = model.predict_draw(teams=[[b1], [b1]]) - assert probability == pytest.approx(1) + assert probability == pytest.approx(0.5) with pytest.raises(ValueError): model.predict_draw(teams=[team_1]) @@ -516,15 +569,15 @@ def test_predict_rank(): team_2 = [a2, b2] team_3 = [a3, b3] + # Test predict_rank ranks = model.predict_rank(teams=[team_1, team_2, team_3]) total_rank_probability = sum([y for x, y in ranks]) - draw_probability = model.predict_draw(teams=[team_1, team_2, team_3]) - assert total_rank_probability + draw_probability == pytest.approx(1) + assert total_rank_probability == pytest.approx(1) - ranks = model.predict_rank(teams=[team_1, team_1, team_1]) - total_rank_probability = sum([y for x, y in ranks]) - draw_probability = model.predict_draw(teams=[team_1, team_1, team_1]) - assert total_rank_probability + draw_probability == pytest.approx(1) + # Test with identical teams + identical_ranks = model.predict_rank(teams=[team_1, team_1, team_1]) + identical_total_rank_probability = sum([y for x, y in identical_ranks]) + assert identical_total_rank_probability == pytest.approx(1) with pytest.raises(ValueError): model.predict_rank(teams=[team_1]) diff --git a/tests/models/weng_lin/test_thurstone_mosteller_part.py b/tests/models/weng_lin/test_thurstone_mosteller_part.py index dd01d86..218ae9f 100644 --- a/tests/models/weng_lin/test_thurstone_mosteller_part.py +++ b/tests/models/weng_lin/test_thurstone_mosteller_part.py @@ -27,6 +27,9 @@ def test_model_defaults() -> None: assert model.sigma == 25.0 / 3.0 assert model.beta == 25.0 / 6.0 assert model.kappa == 0.0001 + assert model.tau == 25.0 / 300.0 + assert model.limit_sigma is False + assert model.balance is False assert model.__repr__() == f"ThurstoneMostellerPart(mu=25.0, sigma={25.0 / 3.0})" assert model.__str__() == ( f"Thurstone-Mosteller Partial Pairing Model Parameters: \n\n" @@ -336,8 +339,12 @@ def test_rate() -> None: team_1 = [r()] team_2 = [r(), r()] + team_3 = [r()] + team_4 = [r(), r()] - results_ranks = model.rate(teams=[team_1, team_2], ranks=[2, 1]) + results_ranks = model.rate( + teams=[team_1, team_2, team_3, team_4], ranks=[2, 1, 4, 3] + ) check_expected(data, "ranks", results_ranks) team_1 = [r()] @@ -363,6 +370,27 @@ def test_rate() -> None: results_ties = model.rate(teams=[team_1, team_2, team_3], ranks=[1, 2, 1]) check_expected(data, "ties", results_ties) + # Test Weights + team_1 = [r(), r(), r()] + team_2 = [r(), r()] + team_3 = [r(), r(), r()] + team_4 = [r(), r()] + + results_weights = model.rate( + teams=[team_1, team_2, team_3, team_4], + ranks=[2, 1, 4, 3], + weights=[[2, 0, 0], [1, 2], [0, 0, 1], [0, 1]], + ) + check_expected(data, "weights", results_weights) + + # Test Balance + team_1 = [r(), r()] + team_2 = [r(), r()] + + model = ThurstoneMostellerPart(mu, sigma, balance=True) + results_balance = model.rate(teams=[team_1, team_2], ranks=[1, 2]) + check_expected(data, "balance", results_balance) + def test_rate_errors() -> None: """ @@ -398,6 +426,31 @@ def test_rate_errors() -> None: with pytest.raises(TypeError): model.rate(teams=[team_1, team_2, team_3], scores=[21, "abc", 23]) + with pytest.raises(ValueError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[[10, 5], [10, 5]]) + + with pytest.raises(ValueError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[10, 5, 5]) # type: ignore + + with pytest.raises(TypeError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[[10], [10, "5"]]) + + with pytest.raises(TypeError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=21) # type: ignore + + with pytest.raises(TypeError): + model.rate(teams=[team_1, team_2], ranks=[2, 1], weights=[[10], "5"]) + + with pytest.raises(ValueError): + model.rate( + teams=[team_1, team_2], ranks=[2, 1], weights=[[10], [10, 5], [1, 2, 50]] + ) + + # Make sure this doesn't result in an error + [[_], [_, _]] = model.rate( + teams=[team_1, team_2], ranks=[2, 1], weights=[[5], [5, 10]] + ) + # Prevents sigma from rising a = r(mu=40, sigma=3) b = r(mu=-20, sigma=3) @@ -489,13 +542,13 @@ def test_predict_draw(): team_2 = [b1, b2] probability = model.predict_draw(teams=[team_1, team_2]) - assert probability == pytest.approx(0.3839934, 0.0001) + assert probability == pytest.approx(0.1694772, 0.0001) probability = model.predict_draw(teams=[team_1, team_2, [a1], [a2], [b1]]) - assert probability == pytest.approx(0.0535105, 0.0001) + assert probability == pytest.approx(0.0518253, 0.0001) probability = model.predict_draw(teams=[[b1], [b1]]) - assert probability == pytest.approx(1) + assert probability == pytest.approx(0.5) with pytest.raises(ValueError): model.predict_draw(teams=[team_1]) @@ -520,15 +573,15 @@ def test_predict_rank(): team_2 = [a2, b2] team_3 = [a3, b3] + # Test predict_rank ranks = model.predict_rank(teams=[team_1, team_2, team_3]) total_rank_probability = sum([y for x, y in ranks]) - draw_probability = model.predict_draw(teams=[team_1, team_2, team_3]) - assert total_rank_probability + draw_probability == pytest.approx(1) + assert total_rank_probability == pytest.approx(1) - ranks = model.predict_rank(teams=[team_1, team_1, team_1]) - total_rank_probability = sum([y for x, y in ranks]) - draw_probability = model.predict_draw(teams=[team_1, team_1, team_1]) - assert total_rank_probability + draw_probability == pytest.approx(1) + # Test with identical teams + identical_ranks = model.predict_rank(teams=[team_1, team_1, team_1]) + identical_total_rank_probability = sum([y for x, y in identical_ranks]) + assert identical_total_rank_probability == pytest.approx(1) with pytest.raises(ValueError): model.predict_rank(teams=[team_1]) diff --git a/tox.ini b/tox.ini index 9815d2b..813dca5 100644 --- a/tox.ini +++ b/tox.ini @@ -1,14 +1,13 @@ [gh-actions] python = 3.13-dev: python3.13 + 3.13: py3.13 3.12: py3.12, lint, build, type 3.11: py3.11 3.10: py3.10 3.9: py3.9 - 3.8: py3.8 pypy-3.10: pypy3.10 pypy-3.9: pypy3.9 - pypy-3.8: pypy3.8 [tox] requires = @@ -17,18 +16,18 @@ env_list = lint build type - py{3.8,3.9,3.10,3.11,3.12} - py{3.8,3.9,3.10,3.11,3.12}-win32 + py{3.9,3.10,3.11,3.12,3.13} + py{3.9,3.10,3.11,3.12,3.13}-win32 python3.13 - pypy3.{8,9,10} + pypy3.{9,10} coverage [testenv] description = Run Unit Tests deps = - pytest>=7.3.1 - pytest-cov>=4.0.0 - coverage>=7.2.7 + pytest>=8.2 + pytest-cov>=5.0 + coverage>=7.6 wheel>=0.43 commands = pip install -e . @@ -39,7 +38,7 @@ commands = [testenv:lint] description = Run Linters deps = - black>=24.3 + black>=24.4 isort>=5.13 commands = isort . --check-only @@ -48,7 +47,7 @@ commands = [testenv:type] description = Run Type Checks deps = - mypy>=1.9 + mypy>=1.10 commands = mypy openskill --config-file pyproject.toml @@ -56,7 +55,7 @@ commands = description = Run Build Checks deps = build>=1.2 - twine>=5.0 + twine>=5.1 commands = python -m build twine check dist/*