././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/LICENSE0000644000000000000000000000204600000000000011103 0ustar00Copyright (c) 2018 Sébastien Eustace Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/README.md0000644000000000000000000000365200000000000011361 0ustar00[github_release]: https://img.shields.io/github/release/sdispater/tomlkit.svg?logo=github&logoColor=white [pypi_version]: https://img.shields.io/pypi/v/tomlkit.svg?logo=python&logoColor=white [python_versions]: https://img.shields.io/pypi/pyversions/tomlkit.svg?logo=python&logoColor=white [github_license]: https://img.shields.io/github/license/sdispater/tomlkit.svg?logo=github&logoColor=white [github_action]: https://github.com/sdispater/tomlkit/actions/workflows/tests.yml/badge.svg [![GitHub Release][github_release]](https://github.com/sdispater/tomlkit/releases/) [![PyPI Version][pypi_version]](https://pypi.org/project/tomlkit/) [![Python Versions][python_versions]](https://pypi.org/project/tomlkit/) [![License][github_license]](https://github.com/sdispater/tomlkit/blob/master/LICENSE)
[![Tests][github_action]](https://github.com/sdispater/tomlkit/actions/workflows/tests.yml) # TOML Kit - Style-preserving TOML library for Python TOML Kit is a **1.0.0-compliant** [TOML](https://toml.io/) library. It includes a parser that preserves all comments, indentations, whitespace and internal element ordering, and makes them accessible and editable via an intuitive API. You can also create new TOML documents from scratch using the provided helpers. Part of the implementation as been adapted, improved and fixed from [Molten](https://github.com/LeopoldArkham/Molten). ## Usage See the [documentation](docs/quickstart.rst) for more information. ## Installation If you are using [Poetry](https://poetry.eustace.io), add `tomlkit` to your `pyproject.toml` file by using: ```bash poetry add tomlkit ``` If not, you can use `pip`: ```bash pip install tomlkit ``` ## Running tests Please clone the repo with submodules with the following command `git clone --recurse-submodules https://github.com/sdispater/tomlkit.git`. We need the submodule - `toml-test` for running the tests. You can run the tests with `poetry run pytest -q tests` ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/pyproject.toml0000644000000000000000000000206600000000000013014 0ustar00[tool.poetry] name = "tomlkit" version = "0.9.2" description = "Style preserving TOML library" authors = ["Sébastien Eustace "] license = "MIT" readme = "README.md" homepage = "https://github.com/sdispater/tomlkit" repository = "https://github.com/sdispater/tomlkit" include = [ { path = "tomlkit/py.typed" }, { path = "tests", format = "sdist" } ] [tool.poetry.dependencies] python = "^3.6" [tool.poetry.dev-dependencies] pytest = "^6.2.5" pytest-cov = "^3.0.0" PyYAML = "^6.0" pre-commit = {version = "^2.1.0", python = "^3.6.1"} mypy = "^0.920" Sphinx = "^4.3.2" furo = "^2021.11.23" [tool.black] line-length = 88 include = '\.pyi?$' exclude = ''' /( \.git | \.hg | \.mypy_cache | \.tox | \.venv | _build | build | dist | tests/toml-test )/ ''' [tool.isort] profile = "black" force_single_line = true atomic = true lines_after_imports = 2 lines_between_types = 1 known_first_party = ["tomlkit"] known_third_party = ["pytest"] [build-system] requires = ["poetry-core>=1.0.0a9"] build-backend = "poetry.core.masonry.api" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/__init__.py0000644000000000000000000000000000000000000013335 0ustar00././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/conftest.py0000644000000000000000000000561500000000000013444 0ustar00import os import pytest @pytest.fixture def example(): def _example(name): with open( os.path.join(os.path.dirname(__file__), "examples", name + ".toml"), encoding="utf-8", ) as f: return f.read() return _example @pytest.fixture def json_example(): def _example(name): with open( os.path.join(os.path.dirname(__file__), "examples", "json", name + ".json"), encoding="utf-8", ) as f: return f.read() return _example @pytest.fixture def invalid_example(): def _example(name): with open( os.path.join( os.path.dirname(__file__), "examples", "invalid", name + ".toml" ), encoding="utf-8", ) as f: return f.read() return _example TEST_DIR = os.path.join(os.path.dirname(__file__), "toml-test", "tests") IGNORED_TESTS = { "valid": [ "float/inf-and-nan", # Can't compare nan ] } def get_tomltest_cases(): dirs = sorted( f for f in os.listdir(TEST_DIR) if os.path.isdir(os.path.join(TEST_DIR, f)) ) assert dirs == ["invalid", "valid"] rv = {"invalid_encode": {}} for d in dirs: rv[d] = {} ignored = IGNORED_TESTS.get(d, []) for root, _, files in os.walk(os.path.join(TEST_DIR, d)): relpath = os.path.relpath(root, os.path.join(TEST_DIR, d)) if relpath == ".": relpath = "" for f in files: try: bn, ext = f.rsplit(".", 1) except ValueError: bn, ext = f.rsplit("-", 1) key = f"{relpath}/{bn}" if ext == "multi": continue if key in ignored: continue if d == "invalid" and relpath == "encoding": rv["invalid_encode"][bn] = os.path.join(root, f) continue if key not in rv[d]: rv[d][key] = {} with open(os.path.join(root, f), encoding="utf-8") as inp: rv[d][key][ext] = inp.read() return rv def pytest_generate_tests(metafunc): test_list = get_tomltest_cases() if "valid_case" in metafunc.fixturenames: metafunc.parametrize( "valid_case", test_list["valid"].values(), ids=list(test_list["valid"].keys()), ) elif "invalid_decode_case" in metafunc.fixturenames: metafunc.parametrize( "invalid_decode_case", test_list["invalid"].values(), ids=list(test_list["invalid"].keys()), ) elif "invalid_encode_case" in metafunc.fixturenames: metafunc.parametrize( "invalid_encode_case", test_list["invalid_encode"].values(), ids=list(test_list["invalid_encode"].keys()), ) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/0.5.0.toml0000644000000000000000000000130200000000000014405 0ustar00date = 1979-05-27 time = 07:32:00 plus-infinity = +inf # infinity sf1 = inf # positive infinity sf2 = +inf # positive infinity sf3 = -inf # negative infinity # not a number sf4 = nan # actual sNaN/qNaN encoding is implementation specific sf5 = +nan # same as `nan` sf6 = -nan # valid, actual encoding is implementation specific # hexadecimal with prefix `0x` hex1 = 0xDEADBEEF hex2 = 0xdeadbeef hex3 = 0xdead_beef # octal with prefix `0o` oct1 = 0o01234567 oct2 = 0o755 # useful for Unix file permissions # binary with prefix `0b` bin1 = 0b11010110 # Dotted keys physical.color = "orange" physical.shape = "round" site."google.com" = true a.b.c = 1 a.b.d = 2 [table] a.b.c = 1 a.b.d = 2 a.c = 3 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/example.toml0000644000000000000000000000154600000000000015412 0ustar00# This is a TOML document. Boom. title = "TOML Example" [owner] name = "Tom Preston-Werner" organization = "GitHub" bio = "GitHub Cofounder & CEO\nLikes tater tots and beer." dob = 1979-05-27T07:32:00Z # First class dates? Why not? [database] server = "192.168.1.1" ports = [8001, 8001, 8002] connection_max = 5000 enabled = true [servers] # You can indent as you please. Tabs or spaces. TOML don't care. [servers.alpha] ip = "10.0.0.1" dc = "eqdc10" [servers.beta] ip = "10.0.0.2" dc = "eqdc10" country = "中国" # This should be parsed as UTF-8 [clients] data = [["gamma", "delta"], [1, 2]] # just an update to make sure parsers support it # Line breaks are OK when inside arrays hosts = [ "alpha", "omega" ] # Products [[products]] name = "Hammer" sku = 738594937 [[products]] name = "Nail" sku = 284758393 color = "gray" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/fruit.toml0000644000000000000000000000030200000000000015075 0ustar00[[fruit.blah]] name = "apple" [fruit.blah.physical] color = "red" shape = "round" [[fruit.blah]] name = "banana" [fruit.blah.physical] color = "yellow" shape = "bent" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/hard.toml0000644000000000000000000000257500000000000014700 0ustar00# Test file for TOML # Only this one tries to emulate a TOML file written by a user of the kind of parser writers probably hate # This part you'll really hate [the] test_string = "You'll hate me after this - #" # " Annoying, isn't it? [the.hard] test_array = [ "] ", " # "] # ] There you go, parse this! test_array2 = [ "Test #11 ]proved that", "Experiment #9 was a success" ] # You didn't think it'd as easy as chucking out the last #, did you? another_test_string = " Same thing, but with a string #" harder_test_string = " And when \"'s are in the string, along with # \"" # "and comments are there too" # Things will get harder [the.hard."bit#"] "what?" = "You don't think some user won't do that?" multi_line_array = [ "]", # ] Oh yes I did ] # Each of the following keygroups/key value pairs should produce an error. Uncomment to them to test #[error] if you didn't catch this, your parser is broken #string = "Anything other than tabs, spaces and newline after a keygroup or key value pair has ended should produce an error unless it is a comment" like this #array = [ # "This might most likely happen in multiline arrays", # Like here, # "or here, # and here" # ] End of array comment, forgot the # #number = 3.14 pi <--again forgot the # ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/invalid/array_duplicate_comma.toml0000644000000000000000000000002400000000000021717 0ustar00simple = [ 1 ,, 2 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/invalid/array_leading_comma.toml0000644000000000000000000000002100000000000021345 0ustar00simple = [ , 1 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/invalid/array_no_comma.toml0000644000000000000000000000002100000000000020356 0ustar00simple = [ 1 2 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/invalid/array_with_invalid_chars.toml0000644000000000000000000000021500000000000022434 0ustar00array = [ "This might most likely happen in multiline arrays", Like here, "or here, and here" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/invalid/inline_table_duplicate_comma.toml0000644000000000000000000000003300000000000023226 0ustar00simple = { a = 1 ,, b = 2} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/invalid/inline_table_leading_comma.toml0000644000000000000000000000002500000000000022660 0ustar00simple = { , a = 1 } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/invalid/inline_table_no_comma.toml0000644000000000000000000000003000000000000021665 0ustar00simple = { a = 1 b = 2} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/invalid/inline_table_trailing_comma.toml0000644000000000000000000000002500000000000023066 0ustar00simple = { a = 1 , } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/invalid/invalid_date.toml0000644000000000000000000000002200000000000020014 0ustar00date = 2018-13-33 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/invalid/invalid_datetime.toml0000644000000000000000000000003700000000000020701 0ustar00datetime = 2018-13-33T23:12:34 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/invalid/invalid_number.toml0000644000000000000000000000001700000000000020373 0ustar00number = 34"5" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/invalid/invalid_time.toml0000644000000000000000000000002400000000000020037 0ustar00datetime = 26:61:61 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/invalid/key_value_with_trailing_chars.toml0000644000000000000000000000024000000000000023463 0ustar00string = "Anything other than tabs, spaces and newline after a keygroup or key value pair has ended should produce an error unless it is a comment" like this ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/invalid/newline_in_singleline_string.toml0000644000000000000000000000003000000000000023316 0ustar00this = "this that more" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/invalid/section_with_trailing_characters.toml0000644000000000000000000000007200000000000024165 0ustar00[error] if you didn't catch this, your parser is broken ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/invalid/string_slash_whitespace_char.toml0000644000000000000000000000004600000000000023310 0ustar00invalid_escape = """this \ more""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/invalid/trailing_comma.toml0000644000000000000000000000003500000000000020362 0ustar00hello = "world" , # this ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/json/0.5.0.json0000644000000000000000000000124400000000000015361 0ustar00{ "date": "1979-05-27", "time": "07:32:00", "plus-infinity": Infinity, "sf1": Infinity, "sf2": Infinity, "sf3": -Infinity, "sf4": NaN, "sf5": NaN, "sf6": NaN, "hex1": 3735928559, "hex2": 3735928559, "hex3": 3735928559, "oct1": 342391, "oct2": 493, "bin1": 214, "physical": { "color": "orange", "shape": "round" }, "site": { "google.com": true }, "a": { "b": { "c": 1, "d": 2 } }, "table": { "a": { "b": { "c": 1, "d": 2 }, "c": 3 } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/json/pyproject.json0000644000000000000000000000641400000000000016744 0ustar00{ "tool": { "poetry": { "name": "poetry", "version": "0.11.2", "description": "Python dependency management and packaging made easy.", "authors": [ "S\u00e9bastien Eustace " ], "license": "MIT", "readme": "README.md", "homepage": "https://poetry.eustace.io/", "repository": "https://github.com/sdispater/poet", "documentation": "https://poetry.eustace.io/docs", "keywords": [ "packaging", "dependency", "poetry" ], "classifiers": [ "Topic :: Software Development :: Build Tools", "Topic :: Software Development :: Libraries :: Python Modules" ], "dependencies": { "python": "~2.7 || ^3.4", "cleo": "^0.6.7", "pytoml": "^0.1.16", "requests": "^2.18", "cachy": "^0.2", "requests-toolbelt": "^0.8.0", "jsonschema": "^2.6", "pyrsistent": "^0.14.2", "pyparsing": "^2.2", "cachecontrol": { "version": "^0.12.4", "extras": [ "filecache" ] }, "pkginfo": "^1.4", "html5lib": "^1.0", "shellingham": "^1.1", "typing": { "version": "^3.6", "python": "~2.7 || ~3.4" }, "pathlib2": { "version": "^2.3", "python": "~2.7 || ~3.4" }, "virtualenv": { "version": "^16.0", "python": "~2.7" } }, "dev-dependencies": { "pytest": "^3.4", "pytest-cov": "^2.5", "mkdocs": "^0.17.3", "pymdown-extensions": "^4.9", "pygments": "^2.2", "pytest-mock": "^1.9", "pygments-github-lexers": "^0.0.5", "black": { "version": "^18.3-alpha.0", "python": "^3.6" }, "pre-commit": "^1.10", "tox": "^3.0" }, "scripts": { "poetry": "poetry.console:main" } }, "black": { "line-length": 88, "py36": true, "include": "\\.pyi?$", "exclude": "/(\n \\.git\n | \\.hg\n | \\.mypy_cache\n | \\.tox\n | \\.venv\n | _build\n | build\n | dist\n | tests/toml-test\n)/\n" }, "foo": [ { "name": "first" }, { "name": "second" }, { "name": "third" }, { "name": "fourth" } ], "bar": [ { "foo": "bar" } ] }, "build-system": { "requires": [ "poetry-core>=1.0.0a3" ], "build-backend": "poetry.core.masonry.api" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/json/table_names.json0000644000000000000000000000045300000000000017174 0ustar00{ "Special \"table\"": { "foo": "bar" }, "BJ's Restaurant": { "account": "dining" }, "]": { "foo": 1 }, "[bracket]": { "bar": 2 }, "a": { "b.c": { "d": { "baz": 3 } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/newline_in_strings.toml0000644000000000000000000000006500000000000017652 0ustar00this = "this\\nthat\\nmore" foo = """bar baz qux """ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/preserve_quotes_in_string.toml0000644000000000000000000000003200000000000021253 0ustar00this = """this "" more""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/pyproject.toml0000644000000000000000000000371200000000000015773 0ustar00[tool.poetry] name = "poetry" version = "0.11.2" description = "Python dependency management and packaging made easy." authors = [ "Sébastien Eustace " ] license = "MIT" readme = "README.md" homepage = "https://poetry.eustace.io/" repository = "https://github.com/sdispater/poet" documentation = "https://poetry.eustace.io/docs" keywords = ["packaging", "dependency", "poetry"] classifiers = [ "Topic :: Software Development :: Build Tools", "Topic :: Software Development :: Libraries :: Python Modules" ] # Requirements [tool.poetry.dependencies] python = "~2.7 || ^3.4" cleo = "^0.6.7" pytoml = "^0.1.16" requests = "^2.18" cachy = "^0.2" requests-toolbelt = "^0.8.0" jsonschema = "^2.6" pyrsistent = "^0.14.2" pyparsing = "^2.2" cachecontrol = { version = "^0.12.4", extras = ["filecache"] } pkginfo = "^1.4" html5lib = "^1.0" shellingham = "^1.1" # The typing module is not in the stdlib in Python 2.7 and 3.4 typing = { version = "^3.6", python = "~2.7 || ~3.4" } # Use pathlib2 for Python 2.7 and 3.4 pathlib2 = { version = "^2.3", python = "~2.7 || ~3.4" } # Use virtualenv for Python 2.7 since venv does not exist virtualenv = { version = "^16.0", python = "~2.7" } [tool.poetry.dev-dependencies] pytest = "^3.4" pytest-cov = "^2.5" mkdocs = "^0.17.3" pymdown-extensions = "^4.9" pygments = "^2.2" pytest-mock = "^1.9" pygments-github-lexers = "^0.0.5" black = { version = "^18.3-alpha.0", python = "^3.6" } pre-commit = "^1.10" tox = "^3.0" [tool.poetry.scripts] poetry = "poetry.console:main" [build-system] requires = ["poetry-core>=1.0.0a3"] build-backend = "poetry.core.masonry.api" [tool.black] line-length = 88 py36 = true include = '\.pyi?$' exclude = ''' /( \.git | \.hg | \.mypy_cache | \.tox | \.venv | _build | build | dist | tests/toml-test )/ ''' [[tool.foo]] name = 'first' [[tool.foo]] name = 'second' # CS [[tool.foo]] name = 'third' [[tool.foo]] name = 'fourth' [[tool.bar]] foo = "bar" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/sections_with_same_start.toml0000644000000000000000000000014400000000000021054 0ustar00[section] key = "value" [section2] "key2" = 12.34 [section2.sub-section] "key3" = "something" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/string_slash_whitespace_newline.toml0000644000000000000000000000012200000000000022401 0ustar00no_whitespace = """hello \ world""" has_whitespace = """hello \ world""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/table_names.toml0000644000000000000000000000021700000000000016223 0ustar00['Special "table"'] foo = "bar" ["BJ's Restaurant"] account = "dining" ["]"] foo = 1 [ "[bracket]" ] bar = 2 [ a . "b.c" . d ] baz = 3 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/examples/test.toml0000644000000000000000000000305300000000000014731 0ustar00# This is a TOML document. title = "TOML Example" [owner] name = "Tom Preston-Werner" dob = 1979-05-27T07:32:00-08:00 # First class dates [database] server = "192.168.1.1" ports = [ 8001, 8001, 8002 ] connection_max = 5000 enabled = true [servers] # Indentation (tabs and/or spaces) is allowed but not required [servers.alpha] ip = "10.0.0.1" dc = "eqdc10" [servers.beta] ip = "10.0.0.2" dc = "eqdc10" [clients] data = [ ["gamma", "delta"], [1, 2] ] # Line breaks are OK when inside arrays hosts = [ "alpha", "omega" ] str_multiline = """ Roses are red Violets are blue""" str_quoted = "I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF." str2 = """ The quick brown \ fox jumps over \ the lazy dog.""" key3 = """\ The quick brown \ fox jumps over \ the lazy dog.\ """ # What you see is what you get. winpath = 'C:\Users\nodejs\templates' winpath2 = '\\ServerX\admin$\system32\' quoted = 'Tom "Dubs" Preston-Werner' regex = '<\i\c*\s*>' regex2 = '''I [dw]on't need \d{2} apples''' lines = ''' The first newline is trimmed in raw strings. All other whitespace is preserved. ''' [[fruit]] name = "apple" [fruit.physical] color = "red" shape = "round" [[fruit.variety]] name = "red delicious" [[fruit.variety]] name = "granny smith" [[fruit]] name = "banana" [[fruit.variety]] name = "plantain" points = [ { x = 1, y = 2, z = 3 }, # This value is so special to me { x = 7, y = 8, z = 9 }, { x = 2, y = 4, z = 8 } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/test_api.py0000644000000000000000000002242700000000000013427 0ustar00import io import json import os from datetime import date from datetime import datetime from datetime import time from types import MappingProxyType import pytest import tomlkit from tomlkit import dump from tomlkit import dumps from tomlkit import load from tomlkit import loads from tomlkit import parse from tomlkit.exceptions import InvalidCharInStringError from tomlkit.exceptions import InvalidControlChar from tomlkit.exceptions import InvalidDateError from tomlkit.exceptions import InvalidDateTimeError from tomlkit.exceptions import InvalidNumberError from tomlkit.exceptions import InvalidTimeError from tomlkit.exceptions import UnexpectedCharError from tomlkit.items import AoT from tomlkit.items import Array from tomlkit.items import Bool from tomlkit.items import Date from tomlkit.items import DateTime from tomlkit.items import Float from tomlkit.items import InlineTable from tomlkit.items import Integer from tomlkit.items import Key from tomlkit.items import Table from tomlkit.items import Time from tomlkit.toml_document import TOMLDocument def json_serial(obj): """JSON serializer for objects not serializable by default json code""" if isinstance(obj, (datetime, date, time)): return obj.isoformat() raise TypeError(f"Type {type(obj)} not serializable") @pytest.mark.parametrize( "example_name", [ "example", "fruit", "hard", "sections_with_same_start", "pyproject", "0.5.0", "test", "newline_in_strings", "preserve_quotes_in_string", "string_slash_whitespace_newline", "table_names", ], ) def test_parse_can_parse_valid_toml_files(example, example_name): assert isinstance(parse(example(example_name)), TOMLDocument) assert isinstance(loads(example(example_name)), TOMLDocument) @pytest.mark.parametrize( "example_name", [ "example", "fruit", "hard", "sections_with_same_start", "pyproject", "0.5.0", "test", "newline_in_strings", "preserve_quotes_in_string", "string_slash_whitespace_newline", "table_names", ], ) def test_load_from_file_object(example_name): with open( os.path.join(os.path.dirname(__file__), "examples", example_name + ".toml"), encoding="utf-8", ) as fp: assert isinstance(load(fp), TOMLDocument) @pytest.mark.parametrize("example_name", ["0.5.0", "pyproject", "table_names"]) def test_parsed_document_are_properly_json_representable( example, json_example, example_name ): doc = json.loads(json.dumps(parse(example(example_name)), default=json_serial)) json_doc = json.loads(json_example(example_name)) assert doc == json_doc @pytest.mark.parametrize( "example_name,error", [ ("section_with_trailing_characters", UnexpectedCharError), ("key_value_with_trailing_chars", UnexpectedCharError), ("array_with_invalid_chars", UnexpectedCharError), ("invalid_number", InvalidNumberError), ("invalid_date", InvalidDateError), ("invalid_time", InvalidTimeError), ("invalid_datetime", InvalidDateTimeError), ("trailing_comma", UnexpectedCharError), ("newline_in_singleline_string", InvalidControlChar), ("string_slash_whitespace_char", InvalidCharInStringError), ("array_no_comma", UnexpectedCharError), ("array_duplicate_comma", UnexpectedCharError), ("array_leading_comma", UnexpectedCharError), ("inline_table_no_comma", UnexpectedCharError), ("inline_table_duplicate_comma", UnexpectedCharError), ("inline_table_leading_comma", UnexpectedCharError), ("inline_table_trailing_comma", UnexpectedCharError), ], ) def test_parse_raises_errors_for_invalid_toml_files( invalid_example, error, example_name ): with pytest.raises(error): parse(invalid_example(example_name)) @pytest.mark.parametrize( "example_name", [ "example", "fruit", "hard", "sections_with_same_start", "pyproject", "0.5.0", "test", "table_names", ], ) def test_original_string_and_dumped_string_are_equal(example, example_name): content = example(example_name) parsed = parse(content) assert content == dumps(parsed) def test_a_raw_dict_can_be_dumped(): s = dumps({"foo": "bar"}) assert s == 'foo = "bar"\n' def test_mapping_types_can_be_dumped(): x = MappingProxyType({"foo": "bar"}) assert dumps(x) == 'foo = "bar"\n' def test_dumps_weird_object(): with pytest.raises(TypeError): dumps(object()) def test_dump_tuple_value_as_array(): x = {"foo": (1, 2)} assert dumps(x) == "foo = [1, 2]\n" x = {"foo": ({"a": 1}, {"a": 2})} assert dumps(x) == "[[foo]]\na = 1\n\n[[foo]]\na = 2\n" def test_dump_to_file_object(): doc = {"foo": "bar"} fp = io.StringIO() dump(doc, fp) assert fp.getvalue() == 'foo = "bar"\n' def test_integer(): i = tomlkit.integer("34") assert isinstance(i, Integer) def test_float(): i = tomlkit.float_("34.56") assert isinstance(i, Float) def test_boolean(): i = tomlkit.boolean("true") assert isinstance(i, Bool) def test_date(): dt = tomlkit.date("1979-05-13") assert isinstance(dt, Date) with pytest.raises(ValueError): tomlkit.date("12:34:56") def test_time(): dt = tomlkit.time("12:34:56") assert isinstance(dt, Time) with pytest.raises(ValueError): tomlkit.time("1979-05-13") def test_datetime(): dt = tomlkit.datetime("1979-05-13T12:34:56") assert isinstance(dt, DateTime) with pytest.raises(ValueError): tomlkit.time("1979-05-13") def test_array(): a = tomlkit.array() assert isinstance(a, Array) a = tomlkit.array("[1,2, 3]") assert isinstance(a, Array) def test_table(): t = tomlkit.table() assert isinstance(t, Table) def test_inline_table(): t = tomlkit.inline_table() assert isinstance(t, InlineTable) def test_aot(): t = tomlkit.aot() assert isinstance(t, AoT) def test_key(): k = tomlkit.key("foo") assert isinstance(k, Key) def test_key_value(): k, i = tomlkit.key_value("foo = 12") assert isinstance(k, Key) assert isinstance(i, Integer) def test_string(): s = tomlkit.string('foo "') assert s.value == 'foo "' assert s.as_string() == '"foo \\""' def test_item_dict_to_table(): t = tomlkit.item({"foo": {"bar": "baz"}}) assert t.value == {"foo": {"bar": "baz"}} assert ( t.as_string() == """[foo] bar = "baz" """ ) def test_item_mixed_aray(): example = [{"a": 3}, "b", 42] expected = '[{a = 3}, "b", 42]' t = tomlkit.item(example) assert t.as_string().strip() == expected assert dumps({"x": {"y": example}}).strip() == "[x]\ny = " + expected def test_build_super_table(): doc = tomlkit.document() table = tomlkit.table(True) table.add("bar", {"x": 1}) doc.add("foo", table) assert doc.as_string() == "[foo.bar]\nx = 1\n" def test_add_dotted_key(): doc = tomlkit.document() doc.add(tomlkit.key(["foo", "bar"]), 1) assert doc.as_string() == "foo.bar = 1\n" table = tomlkit.table() table.add(tomlkit.key(["foo", "bar"]), 1) assert table.as_string() == "foo.bar = 1\n" @pytest.mark.parametrize( ("raw", "expected"), [ ("true", True), ("false", False), ], ) def test_value_parses_boolean(raw, expected): parsed = tomlkit.value(raw) assert parsed == expected @pytest.mark.parametrize( "raw", ["t", "f", "tru", "fals", "test", "friend", "truthy", "falsify"] ) def test_value_rejects_values_looking_like_bool_at_start(raw): """Reproduces https://github.com/sdispater/tomlkit/issues/165""" with pytest.raises(tomlkit.exceptions.ParseError): tomlkit.value(raw) @pytest.mark.parametrize( "raw", [ "truee", "truely", "true-thoughts", "true_hip_hop", ], ) def test_value_rejects_values_having_true_prefix(raw): """Values that have ``true`` or ``false`` as prefix but then have additional chars are rejected.""" with pytest.raises(tomlkit.exceptions.ParseError): tomlkit.value(raw) @pytest.mark.parametrize( "raw", [ "falsee", "falsely", "false-ideas", "false_prophet", ], ) def test_value_rejects_values_having_false_prefix(raw): """Values that have ``true`` or ``false`` as prefix but then have additional chars are rejected.""" with pytest.raises(tomlkit.exceptions.ParseError): tomlkit.value(raw) @pytest.mark.parametrize( "raw", [ '"foo"1.2', "truefalse", "1.0false", "100true", "truetrue", "falsefalse", "1.2.3.4", "[][]", "{a=[][]}[]", "true[]", "false{a=1}", ], ) def test_value_rejects_values_with_appendage(raw): """Values that appear valid at the beginning but leave chars unparsed are rejected.""" with pytest.raises(tomlkit.exceptions.ParseError): tomlkit.value(raw) def test_create_super_table_with_table(): data = {"foo": {"bar": {"a": 1}}} assert dumps(data) == "[foo.bar]\na = 1\n" def test_create_super_table_with_aot(): data = {"foo": {"bar": [{"a": 1}]}} assert dumps(data) == "[[foo.bar]]\na = 1\n" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/test_build.py0000644000000000000000000000602100000000000013745 0ustar00import datetime from tomlkit import aot from tomlkit import array from tomlkit import comment from tomlkit import document from tomlkit import item from tomlkit import nl from tomlkit import parse from tomlkit import table from tomlkit._utils import _utc def test_build_example(example): content = example("example") doc = document() doc.add(comment("This is a TOML document. Boom.")) doc.add(nl()) doc.add("title", "TOML Example") owner = table() owner.add("name", "Tom Preston-Werner") owner.add("organization", "GitHub") owner.add("bio", "GitHub Cofounder & CEO\nLikes tater tots and beer.") owner.add("dob", datetime.datetime(1979, 5, 27, 7, 32, tzinfo=_utc)) owner["dob"].comment("First class dates? Why not?") doc.add("owner", owner) database = table() database["server"] = "192.168.1.1" database["ports"] = [8001, 8001, 8002] database["connection_max"] = 5000 database["enabled"] = True doc["database"] = database servers = table() servers.add(nl()) c = comment( "You can indent as you please. Tabs or spaces. TOML don't care." ).indent(2) c.trivia.trail = "" servers.add(c) alpha = table() servers.append("alpha", alpha) alpha.indent(2) alpha.add("ip", "10.0.0.1") alpha.add("dc", "eqdc10") beta = table() servers.append("beta", beta) beta.add("ip", "10.0.0.2") beta.add("dc", "eqdc10") beta.add("country", "中国") beta["country"].comment("This should be parsed as UTF-8") beta.indent(2) doc["servers"] = servers clients = table() doc.add("clients", clients) clients["data"] = item([["gamma", "delta"], [1, 2]]).comment( "just an update to make sure parsers support it" ) clients.add(nl()) clients.add(comment("Line breaks are OK when inside arrays")) clients["hosts"] = array( """[ "alpha", "omega" ]""" ) doc.add(nl()) doc.add(comment("Products")) products = aot() doc["products"] = products hammer = table().indent(2) hammer["name"] = "Hammer" hammer["sku"] = 738594937 nail = table().indent(2) nail["name"] = "Nail" nail["sku"] = 284758393 nail["color"] = "gray" products.append(hammer) products.append(nail) assert content == doc.as_string() def test_add_remove(): content = "" doc = parse(content) doc.append("foo", "bar") assert ( doc.as_string() == """foo = "bar" """ ) doc.remove("foo") assert doc.as_string() == "" def test_append_table_after_multiple_indices(): content = """ [packages] foo = "*" [settings] enable = false [packages.bar] version = "*" """ doc = parse(content) doc.append("foobar", {"name": "John"}) def test_top_level_keys_are_put_at_the_root_of_the_document(): doc = document() doc.add(comment("Comment")) doc["foo"] = {"name": "test"} doc["bar"] = 1 expected = """\ # Comment bar = 1 [foo] name = "test" """ assert doc.as_string() == expected ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/test_items.py0000644000000000000000000003216000000000000013772 0ustar00import math import pickle from datetime import date from datetime import datetime from datetime import time from datetime import timedelta import pytest from tomlkit import inline_table from tomlkit import parse from tomlkit.api import array from tomlkit.api import ws from tomlkit.exceptions import NonExistentKey from tomlkit.items import Bool from tomlkit.items import Comment from tomlkit.items import InlineTable from tomlkit.items import Integer from tomlkit.items import KeyType from tomlkit.items import SingleKey as Key from tomlkit.items import String from tomlkit.items import StringType from tomlkit.items import Table from tomlkit.items import Trivia from tomlkit.items import item from tomlkit.parser import Parser def test_key_comparison(): k = Key("foo") assert k == Key("foo") assert k == "foo" assert k != "bar" assert k != 5 def test_items_can_be_appended_to_and_removed_from_a_table(): string = """[table] """ parser = Parser(string) _, table = parser._parse_table() assert isinstance(table, Table) assert "" == table.as_string() table.append(Key("foo"), String(StringType.SLB, "bar", "bar", Trivia(trail="\n"))) assert 'foo = "bar"\n' == table.as_string() table.append( Key("baz"), Integer(34, Trivia(comment_ws=" ", comment="# Integer", trail=""), "34"), ) assert 'foo = "bar"\nbaz = 34 # Integer' == table.as_string() table.remove(Key("baz")) assert 'foo = "bar"\n' == table.as_string() table.remove(Key("foo")) assert "" == table.as_string() with pytest.raises(NonExistentKey): table.remove(Key("foo")) def test_items_can_be_appended_to_and_removed_from_an_inline_table(): string = """table = {} """ parser = Parser(string) _, table = parser._parse_item() assert isinstance(table, InlineTable) assert "{}" == table.as_string() table.append(Key("foo"), String(StringType.SLB, "bar", "bar", Trivia(trail=""))) assert '{foo = "bar"}' == table.as_string() table.append(Key("baz"), Integer(34, Trivia(trail=""), "34")) assert '{foo = "bar", baz = 34}' == table.as_string() table.remove(Key("baz")) assert '{foo = "bar"}' == table.as_string() table.remove(Key("foo")) assert "{}" == table.as_string() with pytest.raises(NonExistentKey): table.remove(Key("foo")) def test_inf_and_nan_are_supported(example): content = example("0.5.0") doc = parse(content) assert doc["sf1"] == float("inf") assert doc["sf2"] == float("inf") assert doc["sf3"] == float("-inf") assert math.isnan(doc["sf4"]) assert math.isnan(doc["sf5"]) assert math.isnan(doc["sf6"]) def test_hex_octal_and_bin_integers_are_supported(example): content = example("0.5.0") doc = parse(content) assert doc["hex1"] == 3735928559 assert doc["hex2"] == 3735928559 assert doc["hex3"] == 3735928559 assert doc["oct1"] == 342391 assert doc["oct2"] == 493 assert doc["bin1"] == 214 def test_key_automatically_sets_proper_string_type_if_not_bare(): key = Key("foo.bar") assert key.t == KeyType.Basic key = Key("") assert key.t == KeyType.Basic def test_array_behaves_like_a_list(): a = item([1, 2]) assert a == [1, 2] assert a.as_string() == "[1, 2]" a += [3, 4] assert a == [1, 2, 3, 4] assert a.as_string() == "[1, 2, 3, 4]" del a[2] assert a == [1, 2, 4] assert a.as_string() == "[1, 2, 4]" assert a.pop() == 4 assert a == [1, 2] assert a.as_string() == "[1, 2]" a[0] = 4 assert a == [4, 2] a[-2] = 0 assert a == [0, 2] del a[-2] assert a == [2] assert a.as_string() == "[2]" a.clear() assert a == [] assert a.as_string() == "[]" content = """a = [1, 2,] # Comment """ doc = parse(content) assert doc["a"] == [1, 2] doc["a"] += [3, 4] assert doc["a"] == [1, 2, 3, 4] assert ( doc.as_string() == """a = [1, 2, 3, 4] # Comment """ ) def test_array_multiline(): t = item([1, 2, 3, 4, 5, 6, 7, 8]) t.multiline(True) expected = """\ [ 1, 2, 3, 4, 5, 6, 7, 8, ]""" assert expected == t.as_string() t = item([]) t.multiline(True) assert "[]" == t.as_string() def test_array_multiline_modify(): doc = parse( """\ a = [ "abc" ]""" ) doc["a"].append("def") expected = """\ a = [ "abc", "def" ]""" assert expected == doc.as_string() doc["a"].insert(1, "ghi") expected = """\ a = [ "abc", "ghi", "def" ]""" assert expected == doc.as_string() def test_append_to_empty_array(): doc = parse("x = [ ]") doc["x"].append("a") assert doc.as_string() == 'x = [ "a" ]' doc = parse("x = [\n]") doc["x"].append("a") assert doc.as_string() == 'x = [\n "a"\n]' def test_modify_array_with_comment(): doc = parse("x = [ # comment\n]") doc["x"].append("a") assert doc.as_string() == 'x = [ # comment\n "a"\n]' doc = parse( """\ x = [ "a", # comment "b" ]""" ) doc["x"].insert(1, "c") expected = """\ x = [ "a", # comment "c", "b" ]""" assert doc.as_string() == expected doc = parse( """\ x = [ 1 # comment ]""" ) doc["x"].append(2) assert ( doc.as_string() == """\ x = [ 1, # comment 2 ]""" ) def test_append_dict_to_array(): doc = parse("x = [ ]") doc["x"].append({"name": "John Doe", "email": "john@doe.com"}) expected = 'x = [ {name = "John Doe",email = "john@doe.com"} ]' assert doc.as_string() == expected # Make sure the produced string is valid assert parse(doc.as_string()) == doc def test_dicts_are_converted_to_tables(): t = item({"foo": {"bar": "baz"}}) assert ( t.as_string() == """[foo] bar = "baz" """ ) def test_array_add_line(): t = array() t.add_line(1, 2, 3, comment="Line 1") t.add_line(4, 5, 6, comment="Line 2") t.add_line(7, ws(","), ws(" "), 8, add_comma=False) t.add_line(indent="") assert len(t) == 8 assert list(t) == [1, 2, 3, 4, 5, 6, 7, 8] assert ( t.as_string() == """[ 1, 2, 3, # Line 1 4, 5, 6, # Line 2 7, 8 ]""" ) def test_array_add_line_invalid_value(): t = array() with pytest.raises(ValueError, match="is not allowed"): t.add_line(1, ws(" ")) with pytest.raises(ValueError, match="is not allowed"): t.add_line(Comment(Trivia(" ", comment="test"))) assert len(t) == 0 def test_dicts_are_converted_to_tables_and_keep_order(): t = item( { "foo": { "bar": "baz", "abc": 123, "baz": [{"c": 3, "b": 2, "a": 1}], }, } ) assert ( t.as_string() == """[foo] bar = "baz" abc = 123 [[foo.baz]] c = 3 b = 2 a = 1 """ ) def test_dicts_are_converted_to_tables_and_are_sorted_if_requested(): t = item( { "foo": { "bar": "baz", "abc": 123, "baz": [{"c": 3, "b": 2, "a": 1}], }, }, _sort_keys=True, ) assert ( t.as_string() == """[foo] abc = 123 bar = "baz" [[foo.baz]] a = 1 b = 2 c = 3 """ ) def test_dicts_with_sub_dicts_are_properly_converted(): t = item( {"foo": {"bar": {"string": "baz"}, "int": 34, "float": 3.14}}, _sort_keys=True ) assert ( t.as_string() == """[foo] float = 3.14 int = 34 [foo.bar] string = "baz" """ ) def test_item_array_of_dicts_converted_to_aot(): a = item({"foo": [{"bar": "baz"}]}) assert ( a.as_string() == """[[foo]] bar = "baz" """ ) def test_integers_behave_like_ints(): i = item(34) assert i == 34 assert i.as_string() == "34" i += 1 assert i == 35 assert i.as_string() == "35" i -= 2 assert i == 33 assert i.as_string() == "33" doc = parse("int = +34") doc["int"] += 1 assert doc.as_string() == "int = +35" def test_floats_behave_like_floats(): i = item(34.12) assert i == 34.12 assert i.as_string() == "34.12" i += 1 assert i == 35.12 assert i.as_string() == "35.12" i -= 2 assert i == 33.12 assert i.as_string() == "33.12" doc = parse("float = +34.12") doc["float"] += 1 assert doc.as_string() == "float = +35.12" def test_datetimes_behave_like_datetimes(): i = item(datetime(2018, 7, 22, 12, 34, 56)) assert i == datetime(2018, 7, 22, 12, 34, 56) assert i.as_string() == "2018-07-22T12:34:56" i += timedelta(days=1) assert i == datetime(2018, 7, 23, 12, 34, 56) assert i.as_string() == "2018-07-23T12:34:56" i -= timedelta(days=2) assert i == datetime(2018, 7, 21, 12, 34, 56) assert i.as_string() == "2018-07-21T12:34:56" doc = parse("dt = 2018-07-22T12:34:56-05:00") doc["dt"] += timedelta(days=1) assert doc.as_string() == "dt = 2018-07-23T12:34:56-05:00" def test_dates_behave_like_dates(): i = item(date(2018, 7, 22)) assert i == date(2018, 7, 22) assert i.as_string() == "2018-07-22" i += timedelta(days=1) assert i == datetime(2018, 7, 23) assert i.as_string() == "2018-07-23" i -= timedelta(days=2) assert i == date(2018, 7, 21) assert i.as_string() == "2018-07-21" doc = parse("dt = 2018-07-22 # Comment") doc["dt"] += timedelta(days=1) assert doc.as_string() == "dt = 2018-07-23 # Comment" def test_times_behave_like_times(): i = item(time(12, 34, 56)) assert i == time(12, 34, 56) assert i.as_string() == "12:34:56" def test_strings_behave_like_strs(): i = item("foo") assert i == "foo" assert i.as_string() == '"foo"' i += " bar" assert i == "foo bar" assert i.as_string() == '"foo bar"' i += " é" assert i == "foo bar é" assert i.as_string() == '"foo bar é"' doc = parse('str = "foo" # Comment') doc["str"] += " bar" assert doc.as_string() == 'str = "foo bar" # Comment' def test_tables_behave_like_dicts(): t = item({"foo": "bar"}) assert ( t.as_string() == """foo = "bar" """ ) t.update({"bar": "baz"}) assert ( t.as_string() == """foo = "bar" bar = "baz" """ ) t.update({"bar": "boom"}) assert ( t.as_string() == """foo = "bar" bar = "boom" """ ) assert t.get("bar") == "boom" assert t.setdefault("foobar", "fuzz") == "fuzz" assert ( t.as_string() == """foo = "bar" bar = "boom" foobar = "fuzz" """ ) def test_items_are_pickable(): n = item(12) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "12" n = item(12.34) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "12.34" n = item(True) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "true" n = item(datetime(2018, 10, 11, 12, 34, 56, 123456)) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "2018-10-11T12:34:56.123456" n = item(date(2018, 10, 11)) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "2018-10-11" n = item(time(12, 34, 56, 123456)) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "12:34:56.123456" n = item([1, 2, 3]) s = pickle.dumps(n) assert pickle.loads(s).as_string() == "[1, 2, 3]" n = item({"foo": "bar"}) s = pickle.dumps(n) assert pickle.loads(s).as_string() == 'foo = "bar"\n' n = inline_table() n["foo"] = "bar" s = pickle.dumps(n) assert pickle.loads(s).as_string() == '{foo = "bar"}' n = item("foo") s = pickle.dumps(n) assert pickle.loads(s).as_string() == '"foo"' n = item([{"foo": "bar"}]) s = pickle.dumps(n) assert pickle.loads(s).as_string() == 'foo = "bar"\n' def test_trim_comments_when_building_inline_table(): table = inline_table() row = parse('foo = "bar" # Comment') table.update(row) assert table.as_string() == '{foo = "bar"}' value = item("foobaz") value.comment("Another comment") table.append("baz", value) assert "# Another comment" not in table.as_string() assert '{foo = "bar", baz = "foobaz"}' == table.as_string() def test_deleting_inline_table_elemeent_does_not_leave_trailing_separator(): table = inline_table() table["foo"] = "bar" table["baz"] = "boom" assert '{foo = "bar", baz = "boom"}' == table.as_string() del table["baz"] assert '{foo = "bar"}' == table.as_string() table = inline_table() table["foo"] = "bar" del table["foo"] table["baz"] = "boom" assert '{baz = "boom"}' == table.as_string() def test_booleans_comparison(): boolean = Bool(True, Trivia()) assert boolean boolean = Bool(False, Trivia()) assert not boolean s = """[foo] value = false """ content = parse(s) assert {"foo": {"value": False}} == content assert {"value": False} == content["foo"] def test_table_copy(): table = item({"foo": "bar"}) table_copy = table.copy() assert isinstance(table_copy, Table) table["foo"] = "baz" assert table_copy["foo"] == "bar" assert table_copy.as_string() == 'foo = "bar"\n' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/test_parser.py0000644000000000000000000000170200000000000014143 0ustar00import pytest from tomlkit.exceptions import EmptyTableNameError from tomlkit.exceptions import InternalParserError from tomlkit.exceptions import UnexpectedCharError from tomlkit.items import StringType from tomlkit.parser import Parser def test_parser_should_raise_an_internal_error_if_parsing_wrong_type_of_string(): parser = Parser('"foo"') with pytest.raises(InternalParserError) as e: parser._parse_string(StringType.SLL) assert e.value.line == 1 assert e.value.col == 0 def test_parser_should_raise_an_error_for_empty_tables(): content = """ [one] [] """ parser = Parser(content) with pytest.raises(EmptyTableNameError) as e: parser.parse() assert e.value.line == 3 assert e.value.col == 1 def test_parser_should_raise_an_error_if_equal_not_found(): content = """[foo] a {c = 1, d = 2} """ parser = Parser(content) with pytest.raises(UnexpectedCharError): parser.parse() ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/test_toml_document.py0000644000000000000000000004036600000000000015531 0ustar00import copy import json import pickle from datetime import datetime from textwrap import dedent import pytest import tomlkit from tomlkit import parse from tomlkit import ws from tomlkit._utils import _utc from tomlkit.exceptions import NonExistentKey def test_document_is_a_dict(example): content = example("example") doc = parse(content) assert isinstance(doc, dict) assert "owner" in doc # owner owner = doc["owner"] assert doc.get("owner") == owner assert isinstance(owner, dict) assert "name" in owner assert owner["name"] == "Tom Preston-Werner" assert owner["organization"] == "GitHub" assert owner["bio"] == "GitHub Cofounder & CEO\nLikes tater tots and beer." assert owner["dob"] == datetime(1979, 5, 27, 7, 32, tzinfo=_utc) # database database = doc["database"] assert isinstance(database, dict) assert database["server"] == "192.168.1.1" assert database["ports"] == [8001, 8001, 8002] assert database["connection_max"] == 5000 assert database["enabled"] is True # servers servers = doc["servers"] assert isinstance(servers, dict) alpha = servers["alpha"] assert servers.get("alpha") == alpha assert isinstance(alpha, dict) assert alpha["ip"] == "10.0.0.1" assert alpha["dc"] == "eqdc10" beta = servers["beta"] assert isinstance(beta, dict) assert beta["ip"] == "10.0.0.2" assert beta["dc"] == "eqdc10" assert beta["country"] == "中国" # clients clients = doc["clients"] assert isinstance(clients, dict) data = clients["data"] assert isinstance(data, list) assert data[0] == ["gamma", "delta"] assert data[1] == [1, 2] assert clients["hosts"] == ["alpha", "omega"] # Products products = doc["products"] assert isinstance(products, list) hammer = products[0] assert hammer == {"name": "Hammer", "sku": 738594937} nail = products[1] assert nail["name"] == "Nail" assert nail["sku"] == 284758393 assert nail["color"] == "gray" nail["color"] = "black" assert nail["color"] == "black" assert doc["products"][1]["color"] == "black" assert nail.get("color") == "black" content = """foo = "bar" """ doc = parse(content) doc.update({"bar": "baz"}) assert ( doc.as_string() == """foo = "bar" bar = "baz" """ ) doc.update({"bar": "boom"}) assert ( doc.as_string() == """foo = "bar" bar = "boom" """ ) assert doc.setdefault("bar", "waldo") == "boom" assert ( doc.as_string() == """foo = "bar" bar = "boom" """ ) assert doc.setdefault("thud", "waldo") == "waldo" assert ( doc.as_string() == """foo = "bar" bar = "boom" thud = "waldo" """ ) def test_toml_document_without_super_tables(): content = """[tool.poetry] name = "foo" """ doc = parse(content) assert "tool" in doc assert "poetry" in doc["tool"] assert doc["tool"]["poetry"]["name"] == "foo" doc["tool"]["poetry"]["name"] = "bar" assert ( doc.as_string() == """[tool.poetry] name = "bar" """ ) d = {} d.update(doc) assert "tool" in d def test_toml_document_with_dotted_keys(example): content = example("0.5.0") doc = parse(content) assert "physical" in doc assert "color" in doc["physical"] assert "shape" in doc["physical"] assert doc["physical"]["color"] == "orange" assert doc["physical"]["shape"] == "round" assert "site" in doc assert "google.com" in doc["site"] assert doc["site"]["google.com"] assert doc["a"]["b"]["c"] == 1 assert doc["a"]["b"]["d"] == 2 def test_toml_document_super_table_with_different_sub_sections(example): content = example("pyproject") doc = parse(content) tool = doc["tool"] assert "poetry" in tool assert "black" in tool def test_adding_an_element_to_existing_table_with_ws_remove_ws(): content = """[foo] [foo.bar] """ doc = parse(content) doc["foo"]["int"] = 34 expected = """[foo] int = 34 [foo.bar] """ assert expected == doc.as_string() def test_document_with_aot_after_sub_tables(): content = """[foo.bar] name = "Bar" [foo.bar.baz] name = "Baz" [[foo.bar.tests]] name = "Test 1" """ doc = parse(content) assert doc["foo"]["bar"]["tests"][0]["name"] == "Test 1" def test_document_with_new_sub_table_after_other_table(): content = """[foo] name = "Bar" [bar] name = "Baz" [foo.baz] name = "Test 1" """ doc = parse(content) assert doc["foo"]["name"] == "Bar" assert doc["bar"]["name"] == "Baz" assert doc["foo"]["baz"]["name"] == "Test 1" assert doc.as_string() == content def test_document_with_new_sub_table_after_other_table_delete(): content = """[foo] name = "Bar" [bar] name = "Baz" [foo.baz] name = "Test 1" """ doc = parse(content) del doc["foo"] assert ( doc.as_string() == """[bar] name = "Baz" """ ) def test_document_with_new_sub_table_after_other_table_replace(): content = """[foo] name = "Bar" [bar] name = "Baz" [foo.baz] name = "Test 1" """ doc = parse(content) doc["foo"] = {"a": "b"} assert ( doc.as_string() == """[foo] a = "b" [bar] name = "Baz" """ ) def test_inserting_after_element_with_no_new_line_adds_a_new_line(): doc = parse("foo = 10") doc["bar"] = 11 expected = """foo = 10 bar = 11 """ assert expected == doc.as_string() doc = parse("# Comment") doc["bar"] = 11 expected = """# Comment bar = 11 """ assert expected == doc.as_string() def test_inserting_after_deletion(): doc = parse("foo = 10\n") del doc["foo"] doc["bar"] = 11 expected = """bar = 11 """ assert expected == doc.as_string() def test_toml_document_with_dotted_keys_inside_table(example): content = example("0.5.0") doc = parse(content) t = doc["table"] assert "a" in t assert t["a"]["b"]["c"] == 1 assert t["a"]["b"]["d"] == 2 assert t["a"]["c"] == 3 def test_toml_document_with_super_aot_after_super_table(example): content = example("pyproject") doc = parse(content) aot = doc["tool"]["foo"] assert isinstance(aot, list) first = aot[0] assert first["name"] == "first" second = aot[1] assert second["name"] == "second" def test_toml_document_has_always_a_new_line_after_table_header(): content = """[section.sub]""" doc = parse(content) assert doc.as_string() == """[section.sub]""" doc["section"]["sub"]["foo"] = "bar" assert ( doc.as_string() == """[section.sub] foo = "bar" """ ) del doc["section"]["sub"]["foo"] assert doc.as_string() == """[section.sub]""" def test_toml_document_is_pickable(example): content = example("example") doc = parse(content) assert pickle.loads(pickle.dumps(doc)).as_string() == content def test_toml_document_set_super_table_element(): content = """[site.user] name = "John" """ doc = parse(content) doc["site"]["user"] = "Tom" assert ( doc.as_string() == """[site] user = "Tom" """ ) def test_toml_document_can_be_copied(): content = "[foo]\nbar=1" doc = parse(content) doc = copy.copy(doc) assert ( doc.as_string() == """[foo] bar=1""" ) assert doc == {"foo": {"bar": 1}} assert doc["foo"]["bar"] == 1 assert json.loads(json.dumps(doc)) == {"foo": {"bar": 1}} doc = parse(content) doc = doc.copy() assert ( doc.as_string() == """[foo] bar=1""" ) assert doc == {"foo": {"bar": 1}} assert doc["foo"]["bar"] == 1 assert json.loads(json.dumps(doc)) == {"foo": {"bar": 1}} def test_getting_inline_table_is_still_an_inline_table(): content = """\ [tool.poetry] name = "foo" [tool.poetry.dependencies] [tool.poetry.dev-dependencies] """ doc = parse(content) poetry_section = doc["tool"]["poetry"] dependencies = poetry_section["dependencies"] dependencies["foo"] = tomlkit.inline_table() dependencies["foo"]["version"] = "^2.0" dependencies["foo"]["source"] = "local" dependencies["bar"] = tomlkit.inline_table() dependencies["bar"]["version"] = "^3.0" dependencies["bar"]["source"] = "remote" dev_dependencies = poetry_section["dev-dependencies"] dev_dependencies["baz"] = tomlkit.inline_table() dev_dependencies["baz"]["version"] = "^4.0" dev_dependencies["baz"]["source"] = "other" assert ( """\ [tool.poetry] name = "foo" [tool.poetry.dependencies] foo = {version = "^2.0", source = "local"} bar = {version = "^3.0", source = "remote"} [tool.poetry.dev-dependencies] baz = {version = "^4.0", source = "other"} """ == doc.as_string() ) def test_declare_sub_table_with_intermediate_table(): content = """ [students] tommy = 87 mary = 66 [subjects] maths = "maths" english = "english" [students.bob] score = 91 """ doc = parse(content) assert {"tommy": 87, "mary": 66, "bob": {"score": 91}} == doc["students"] assert {"tommy": 87, "mary": 66, "bob": {"score": 91}} == doc.get("students") def test_values_can_still_be_set_for_out_of_order_tables(): content = """ [a.a] key = "value" [a.b] [a.a.c] """ doc = parse(content) doc["a"]["a"]["key"] = "new_value" assert "new_value" == doc["a"]["a"]["key"] expected = """ [a.a] key = "new_value" [a.b] [a.a.c] """ assert expected == doc.as_string() doc["a"]["a"]["bar"] = "baz" expected = """ [a.a] key = "new_value" bar = "baz" [a.b] [a.a.c] """ assert expected == doc.as_string() del doc["a"]["a"]["key"] expected = """ [a.a] bar = "baz" [a.b] [a.a.c] """ assert expected == doc.as_string() with pytest.raises(NonExistentKey): doc["a"]["a"]["key"] with pytest.raises(NonExistentKey): del doc["a"]["a"]["key"] def test_out_of_order_table_can_add_multiple_tables(): content = """\ [a.a.b] x = 1 [foo] bar = 1 [a.a.c] y = 1 [a.a.d] z = 1 """ doc = parse(content) assert doc.as_string() == content assert doc["a"]["a"] == {"b": {"x": 1}, "c": {"y": 1}, "d": {"z": 1}} def test_out_of_order_tables_are_still_dicts(): content = """ [a.a] key = "value" [a.b] [a.a.c] """ doc = parse(content) assert isinstance(doc["a"], dict) assert isinstance(doc["a"]["a"], dict) table = doc["a"]["a"] assert "key" in table assert "c" in table assert "value" == table.get("key") assert {} == table.get("c") assert table.get("d") is None assert "foo" == table.get("d", "foo") assert "bar" == table.setdefault("d", "bar") assert "bar" == table["d"] assert "value" == table.pop("key") assert "key" not in table assert "baz" == table.pop("missing", default="baz") with pytest.raises(KeyError): table.pop("missing") def test_string_output_order_is_preserved_for_out_of_order_tables(): content = """ [tool.poetry] name = "foo" [tool.poetry.dependencies] python = "^3.6" bar = "^1.0" [build-system] requires = ["poetry-core"] backend = "poetry.core.masonry.api" [tool.other] a = "b" """ doc = parse(content) constraint = tomlkit.inline_table() constraint["version"] = "^1.0" doc["tool"]["poetry"]["dependencies"]["bar"] = constraint assert "^1.0" == doc["tool"]["poetry"]["dependencies"]["bar"]["version"] expected = """ [tool.poetry] name = "foo" [tool.poetry.dependencies] python = "^3.6" bar = {version = "^1.0"} [build-system] requires = ["poetry-core"] backend = "poetry.core.masonry.api" [tool.other] a = "b" """ assert expected == doc.as_string() def test_updating_nested_value_keeps_correct_indent(): content = """ [Key1] [key1.Key2] Value1 = 10 Value2 = 30 """ doc = parse(content) doc["key1"]["Key2"]["Value1"] = 20 expected = """ [Key1] [key1.Key2] Value1 = 20 Value2 = 30 """ assert doc.as_string() == expected def test_repr(): content = """ namespace.key1 = "value1" namespace.key2 = "value2" [tool.poetry.foo] option = "test" [tool.poetry.bar] option = "test" inline = {"foo" = "bar", "bar" = "baz"} """ doc = parse(content) assert ( repr(doc) == "{'namespace': {'key1': 'value1', 'key2': 'value2'}, 'tool': {'poetry': {'foo': {'option': 'test'}, 'bar': {'option': 'test', 'inline': {'foo': 'bar', 'bar': 'baz'}}}}}" ) assert ( repr(doc["tool"]) == "{'poetry': {'foo': {'option': 'test'}, 'bar': {'option': 'test', 'inline': {'foo': 'bar', 'bar': 'baz'}}}}" ) assert repr(doc["namespace"]) == "{'key1': 'value1', 'key2': 'value2'}" def test_deepcopy(): content = """ [tool] name = "foo" [tool.project.section] option = "test" """ doc = parse(content) copied = copy.deepcopy(doc) assert copied == doc assert copied.as_string() == content def test_move_table(): content = """a = 1 [x] a = 1 [y] b = 1 """ doc = parse(content) doc["a"] = doc.pop("x") doc["z"] = doc.pop("y") assert ( doc.as_string() == """[a] a = 1 [z] b = 1 """ ) def test_replace_with_table(): content = """a = 1 b = 2 c = 3 """ doc = parse(content) doc["b"] = {"foo": "bar"} assert ( doc.as_string() == """a = 1 c = 3 [b] foo = "bar" """ ) def test_replace_table_with_value(): content = """[foo] a = 1 [bar] b = 2 """ doc = parse(content) doc["bar"] = 42 assert ( doc.as_string() == """bar = 42 [foo] a = 1 """ ) def test_replace_preserve_sep(): content = """a = 1 [foo] b = "what" """ doc = parse(content) doc["a"] = 2 doc["foo"]["b"] = "how" assert ( doc.as_string() == """a = 2 [foo] b = "how" """ ) def test_replace_with_table_of_nested(): example = """\ [a] x = 1 [a.b] y = 2 """ doc = parse(dedent(example)) doc["c"] = doc.pop("a") expected = """\ [c] x = 1 [c.b] y = 2 """ assert doc.as_string().strip() == dedent(expected).strip() def test_replace_with_aot_of_nested(): example = """\ [a] x = 1 [[a.b]] y = 2 [[a.b]] [a.b.c] z = 2 [[a.b.c.d]] w = 2 """ doc = parse(dedent(example)) doc["f"] = doc.pop("a") expected = """\ [f] x = 1 [[f.b]] y = 2 [[f.b]] [f.b.c] z = 2 [[f.b.c.d]] w = 2 """ assert doc.as_string().strip() == dedent(expected).strip() def test_replace_with_comment(): content = 'a = "1"' doc = parse(content) a = tomlkit.item(int(doc["a"])) a.comment("`a` should be an int") doc["a"] = a expected = "a = 1 # `a` should be an int" assert doc.as_string() == expected content = 'a = "1, 2, 3"' doc = parse(content) a = tomlkit.array() a.comment("`a` should be an array") for x in doc["a"].split(","): a.append(int(x.strip())) doc["a"] = a expected = "a = [1, 2, 3] # `a` should be an array" assert doc.as_string() == expected doc = parse(content) a = tomlkit.inline_table() a.comment("`a` should be an inline-table") for x in doc["a"].split(","): i = int(x.strip()) a.append(chr(ord("a") + i - 1), i) doc["a"] = a expected = "a = {a = 1, b = 2, c = 3} # `a` should be an inline-table" assert doc.as_string() == expected def test_no_spurious_whitespaces(): content = """\ [x] a = 1 [y] b = 2 """ doc = parse(dedent(content)) doc["z"] = doc.pop("y") expected = """\ [x] a = 1 [z] b = 2 """ assert doc.as_string() == dedent(expected) doc["w"] = {"c": 3} expected = """\ [x] a = 1 [z] b = 2 [w] c = 3 """ assert doc.as_string() == dedent(expected) doc = parse(dedent(content)) del doc["x"] doc["z"] = {"c": 3} expected = """\ [y] b = 2 [z] c = 3 """ assert doc.as_string() == dedent(expected) def test_pop_add_whitespace_and_insert_table_work_togheter(): content = """\ a = 1 b = 2 c = 3 d = 4 """ doc = parse(dedent(content)) doc.pop("a") doc.pop("b") doc.add(ws("\n")) doc["e"] = {"foo": "bar"} expected = """\ c = 3 d = 4 [e] foo = "bar" """ text = doc.as_string() out = parse(text) assert out["d"] == 4 assert "d" not in out["e"] assert text == dedent(expected) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/test_toml_file.py0000644000000000000000000000314600000000000014625 0ustar00import os from tomlkit.toml_document import TOMLDocument from tomlkit.toml_file import TOMLFile def test_toml_file(example): original_content = example("example") toml_file = os.path.join(os.path.dirname(__file__), "examples", "example.toml") toml = TOMLFile(toml_file) content = toml.read() assert isinstance(content, TOMLDocument) assert content["owner"]["organization"] == "GitHub" toml.write(content) try: with open(toml_file, encoding="utf-8") as f: assert original_content == f.read() finally: with open(toml_file, "w", encoding="utf-8", newline="") as f: assert f.write(original_content) def test_keep_old_eol(tmpdir): toml_path = str(tmpdir / "pyproject.toml") with open(toml_path, "wb+") as f: f.write(b"a = 1\r\nb = 2\r\n") f = TOMLFile(toml_path) content = f.read() content["b"] = 3 f.write(content) with open(toml_path, "rb") as f: assert f.read() == b"a = 1\r\nb = 3\r\n" def test_keep_old_eol_2(tmpdir): toml_path = str(tmpdir / "pyproject.toml") with open(toml_path, "wb+") as f: f.write(b"a = 1\nb = 2\n") f = TOMLFile(toml_path) content = f.read() content["b"] = 3 f.write(content) with open(toml_path, "rb") as f: assert f.read() == b"a = 1\nb = 3\n" def test_mixed_eol(tmpdir): toml_path = str(tmpdir / "pyproject.toml") with open(toml_path, "wb+") as f: f.write(b"a = 1\r\nrb = 2\n") f = TOMLFile(toml_path) f.write(f.read()) with open(toml_path, "rb") as f: assert f.read() == b"a = 1\r\nrb = 2\n" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/test_toml_spec_tests.py0000644000000000000000000000663200000000000016065 0ustar00import json import os import re import pytest import yaml from tomlkit import parse from tomlkit._compat import decode from tomlkit._utils import parse_rfc3339 from tomlkit.exceptions import TOMLKitError IGNORED_TESTS = [] # The following tests trigger a RecursionError IGNORED_TESTS += ["qa-array-inline-nested-1000", "qa-table-inline-nested-1000"] # The following tests don't work due to time microseconds precision of the tests IGNORED_TESTS += ["spec-date-time-6", "spec-date-time-local-2", "spec-time-2"] # The following tests don't work due to nan always comparing to False IGNORED_TESTS += ["spec-float-13", "spec-float-14", "spec-float-15"] # The following tests don't work due to issues with th epyyaml library IGNORED_TESTS += ["spec-key-value-pair-9"] SPEC_TEST_DIR = os.path.join(os.path.dirname(__file__), "toml-spec-tests") VALID_TESTS = sorted( os.path.basename(f).rsplit(".", 1)[0] for f in os.listdir(os.path.join(SPEC_TEST_DIR, "values")) if os.path.basename(f).rsplit(".", 1)[0] not in IGNORED_TESTS ) ERROR_TESTS = sorted( os.path.basename(f).rsplit(".", 1)[0] for f in os.listdir(os.path.join(SPEC_TEST_DIR, "errors")) if os.path.basename(f).rsplit(".", 1)[0] not in IGNORED_TESTS ) def to_bool(s): assert s in ["true", "false"] return s == "true" stypes = { "string": str, "bool": to_bool, "integer": int, "float": float, "datetime": parse_rfc3339, "datetime-local": parse_rfc3339, "date": parse_rfc3339, "time": parse_rfc3339, } loader = yaml.SafeLoader loader.add_implicit_resolver( "tag:yaml.org,2002:float", re.compile( """^(?: [-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+]?[0-9]+)? |[-+]?(?:[0-9][0-9_]*)(?:[eE][-+]?[0-9]+) |\\.[0-9_]+(?:[eE][-+][0-9]+)? |[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]* |[-+]?\\.(?:inf|Inf|INF) |\\.(?:nan|NaN|NAN))$""", re.X, ), list("-+0123456789."), ) def untag(value): if isinstance(value, list): return [untag(i) for i in value] elif "type" in value and "value" in value and len(value) == 2: if value["type"] in stypes: val = decode(value["value"]) return stypes[value["type"]](val) elif value["type"] == "array": return [untag(i) for i in value["value"]] else: raise Exception("Unsupported type {}".format(value["type"])) else: return {k: untag(v) for k, v in value.items()} @pytest.mark.parametrize("test", VALID_TESTS) def test_valid_decode(test): toml_file = os.path.join(SPEC_TEST_DIR, "values", test + ".toml") yaml_file = os.path.join(SPEC_TEST_DIR, "values", test + ".yaml") with open(toml_file, encoding="utf-8") as f: toml_content = f.read() toml_val = parse(toml_content) if os.path.exists(yaml_file): with open(yaml_file, encoding="utf-8") as f: yaml_val = yaml.load(f.read(), Loader=loader) else: with open( os.path.join(SPEC_TEST_DIR, "values", test + ".json"), encoding="utf-8" ) as f: yaml_val = untag(json.loads(f.read())) assert toml_val == yaml_val assert toml_val.as_string() == toml_content @pytest.mark.parametrize("test", ERROR_TESTS) def test_invalid_decode(test): toml_file = os.path.join(SPEC_TEST_DIR, "errors", test + ".toml") with pytest.raises(TOMLKitError): with open(toml_file, encoding="utf-8") as f: parse(f.read()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/test_toml_tests.py0000644000000000000000000000304300000000000015044 0ustar00import json import pytest from tomlkit import load from tomlkit import parse from tomlkit._compat import decode from tomlkit._utils import parse_rfc3339 from tomlkit.exceptions import TOMLKitError def to_bool(s): assert s in ["true", "false"] return s == "true" stypes = { "string": str, "bool": to_bool, "integer": int, "float": float, "datetime": parse_rfc3339, "datetime-local": parse_rfc3339, "date-local": parse_rfc3339, "time-local": parse_rfc3339, } def untag(value): if isinstance(value, list): return [untag(i) for i in value] elif "type" in value and "value" in value and len(value) == 2: if value["type"] in stypes: val = decode(value["value"]) return stypes[value["type"]](val) elif value["type"] == "array": return [untag(i) for i in value["value"]] else: raise Exception("Unsupported type {}".format(value["type"])) else: return {k: untag(v) for k, v in value.items()} def test_valid_decode(valid_case): json_val = untag(json.loads(valid_case["json"])) toml_val = parse(valid_case["toml"]) assert toml_val == json_val assert toml_val.as_string() == valid_case["toml"] def test_invalid_decode(invalid_decode_case): with pytest.raises(TOMLKitError): parse(invalid_decode_case["toml"]) def test_invalid_encode(invalid_encode_case): with pytest.raises((TOMLKitError, UnicodeDecodeError)): with open(invalid_encode_case, encoding="utf-8") as f: load(f) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/test_utils.py0000644000000000000000000000257200000000000014015 0ustar00from datetime import date from datetime import datetime as dt from datetime import time from datetime import timedelta as td from datetime import timezone as tz import pytest from tomlkit._utils import _utc from tomlkit._utils import parse_rfc3339 @pytest.mark.parametrize( "string, expected", [ ("1979-05-27T07:32:00", dt(1979, 5, 27, 7, 32, 0)), ("1979-05-27T07:32:00Z", dt(1979, 5, 27, 7, 32, 0, tzinfo=_utc)), ( "1979-05-27T07:32:00-07:00", dt(1979, 5, 27, 7, 32, 0, tzinfo=tz(td(seconds=-7 * 3600), "-07:00")), ), ( "1979-05-27T00:32:00.999999-07:00", dt( 1979, 5, 27, 0, 32, 0, 999999, tzinfo=tz(td(seconds=-7 * 3600), "-07:00"), ), ), ], ) def test_parse_rfc3339_datetime(string, expected): assert parse_rfc3339(string) == expected @pytest.mark.parametrize("string, expected", [("1979-05-27", date(1979, 5, 27))]) def test_parse_rfc3339_date(string, expected): assert parse_rfc3339(string) == expected @pytest.mark.parametrize( "string, expected", [("12:34:56", time(12, 34, 56)), ("12:34:56.123456", time(12, 34, 56, 123456))], ) def test_parse_rfc3339_time(string, expected): assert parse_rfc3339(string) == expected ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/test_write.py0000644000000000000000000000066500000000000014010 0ustar00from tomlkit import dumps from tomlkit import loads def test_write_backslash(): d = {"foo": "\\e\u25E6\r"} expected = """foo = "\\\\e\u25E6\\r" """ assert expected == dumps(d) assert loads(dumps(d))["foo"] == "\\e\u25E6\r" def test_escape_special_characters_in_key(): d = {"foo\nbar": "baz"} expected = '"foo\\nbar" = "baz"\n' assert expected == dumps(d) assert loads(dumps(d))["foo\nbar"] == "baz" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/.gitattributes0000644000000000000000000000010400000000000017167 0ustar00*.toml text=auto *.yaml text=auto values/spec-newline-*.toml binary ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/LICENSE0000644000000000000000000000134600000000000015312 0ustar00Copyright Rebecca Turner Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/README.md0000644000000000000000000000117600000000000015565 0ustar00These are the spec tests for TOML used by @iarna/toml. The errors folder contains TOML files that should cause a parser to report an error. The values folder contains TOML files and paired YAML or JSON files. The YAML files should parse to a structure that's deeply equal to the TOML structure. The JSON files match the patterns found in [BurntSushi 0.4 TOML tests](https://github.com/BurntSushi/toml-test#json-encoding). We introduce the following new types to match TOML 0.5.0: * _datetime-local_ - A datetime without a timezone. Floating. * _date_ - A date without any time component * _time_ - A time without any date component ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/array-of-tables-1.toml0000644000000000000000000000006700000000000021643 0ustar00# INVALID TOML DOC fruit = [] [[fruit]] # Not allowed ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/array-of-tables-2.toml0000644000000000000000000000027400000000000021644 0ustar00# INVALID TOML DOC [[fruit]] name = "apple" [[fruit.variety]] name = "red delicious" # This table conflicts with the previous table [fruit.variety] name = "granny smith" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/bare-key-1.toml0000644000000000000000000000001700000000000020345 0ustar00bare!key = 123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/bare-key-2.toml0000644000000000000000000000002100000000000020341 0ustar00barekey = 123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/bare-key-3.toml0000644000000000000000000000001100000000000020341 0ustar00barekey =././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/comment-control-1.toml0000644000000000000000000000001700000000000021766 0ustar00a = "null" # ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/comment-control-2.toml0000644000000000000000000000002100000000000021762 0ustar00a = "ctrl-P" #  ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/comment-control-3.toml0000644000000000000000000000002100000000000021763 0ustar00a = "ctrl-_" #  ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/comment-control-4.toml0000644000000000000000000000001700000000000021771 0ustar00a = "0x7f" #  ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/inline-table-imutable-1.toml0000644000000000000000000000010200000000000023004 0ustar00[product] type = { name = "Nail" } type.edible = false # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/inline-table-imutable-2.toml0000644000000000000000000000010200000000000023005 0ustar00[product] type.name = "Nail" type = { edible = false } # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/inline-table-trailing-comma.toml0000644000000000000000000000002500000000000023753 0ustar00abc = { abc = 123, } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/int-0-padded.toml0000644000000000000000000000001300000000000020652 0ustar00int = 0123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/int-signed-bin.toml0000644000000000000000000000001400000000000021314 0ustar00bin = +0b10 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/int-signed-hex.toml0000644000000000000000000000001400000000000021330 0ustar00hex = +0xab ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/int-signed-oct.toml0000644000000000000000000000001400000000000021331 0ustar00oct = +0o23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/key-value-pair-1.toml0000644000000000000000000000002000000000000021473 0ustar00key = # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/key-value-pair-2.toml0000644000000000000000000000006000000000000021500 0ustar00first = "Tom" last = "Preston-Werner" # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/multiple-dot-key.toml0000644000000000000000000000034100000000000021715 0ustar00# THE FOLLOWING IS INVALID # This defines the value of fruit.apple to be an integer. fruit.apple = 1 # But then this treats fruit.apple like it's a table. # You can't turn an integer into a table. fruit.apple.smooth = true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/multiple-key.toml0000644000000000000000000000005700000000000021135 0ustar00# DO NOT DO THIS name = "Tom" name = "Pradyun" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/no-key-name.toml0000644000000000000000000000003300000000000020626 0ustar00= "no key name" # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-basic-control-1.toml0000644000000000000000000000001400000000000022706 0ustar00a = "null" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-basic-control-2.toml0000644000000000000000000000001600000000000022711 0ustar00a = "ctrl-P" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-basic-control-3.toml0000644000000000000000000000001600000000000022712 0ustar00a = "ctrl-_" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-basic-control-4.toml0000644000000000000000000000001400000000000022711 0ustar00a = "0x7f" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-basic-multiline-control-1.toml0000644000000000000000000000002000000000000024703 0ustar00a = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-basic-multiline-control-2.toml0000644000000000000000000000002000000000000024704 0ustar00a = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-basic-multiline-control-3.toml0000644000000000000000000000002000000000000024705 0ustar00a = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-basic-multiline-control-4.toml0000644000000000000000000000002000000000000024706 0ustar00a = """null""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-basic-multiline-invalid-backslash.toml0000644000000000000000000000003400000000000026451 0ustar00a = """ foo \ \n bar""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-basic-multiline-out-of-range-unicode-escape-1.toml0000644000000000000000000000002500000000000030415 0ustar00a = """\UFFFFFFFF""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-basic-multiline-out-of-range-unicode-escape-2.toml0000644000000000000000000000002500000000000030416 0ustar00a = """\U00D80000""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-basic-multiline-quotes.toml0000644000000000000000000000006200000000000024413 0ustar00str5 = """Here are three quotation marks: """.""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-basic-multiline-unknown-escape.toml0000644000000000000000000000001500000000000026026 0ustar00a = """\@""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-basic-out-of-range-unicode-escape-1.toml0000644000000000000000000000002100000000000026411 0ustar00a = "\UFFFFFFFF" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-basic-out-of-range-unicode-escape-2.toml0000644000000000000000000000002100000000000026412 0ustar00a = "\U00D80000" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-basic-unknown-escape.toml0000644000000000000000000000001100000000000024022 0ustar00a = "\@" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-literal-control-1.toml0000644000000000000000000000001400000000000023261 0ustar00a = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-literal-control-2.toml0000644000000000000000000000001400000000000023262 0ustar00a = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-literal-control-3.toml0000644000000000000000000000001400000000000023263 0ustar00a = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-literal-control-4.toml0000644000000000000000000000001400000000000023264 0ustar00a = 'null' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-literal-multiline-control-1.toml0000644000000000000000000000002000000000000025256 0ustar00a = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-literal-multiline-control-2.toml0000644000000000000000000000002000000000000025257 0ustar00a = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-literal-multiline-control-3.toml0000644000000000000000000000002000000000000025260 0ustar00a = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-literal-multiline-control-4.toml0000644000000000000000000000002000000000000025261 0ustar00a = '''null''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/string-literal-multiline-quotes.toml0000644000000000000000000000011000000000000024760 0ustar00apos15 = '''Here are fifteen apostrophes: '''''''''''''''''' # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/table-1.toml0000644000000000000000000000010300000000000017731 0ustar00# DO NOT DO THIS [fruit] apple = "red" [fruit] orange = "orange" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/table-2.toml0000644000000000000000000000012100000000000017732 0ustar00# DO NOT DO THIS EITHER [fruit] apple = "red" [fruit.apple] texture = "smooth" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/table-3.toml0000644000000000000000000000011700000000000017740 0ustar00[fruit] apple.color = "red" apple.taste.sweet = true [fruit.apple] # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/table-4.toml0000644000000000000000000000012500000000000017740 0ustar00[fruit] apple.color = "red" apple.taste.sweet = true [fruit.apple.taste] # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/table-invalid-1.toml0000644000000000000000000000036200000000000021364 0ustar00[fruit.physical] # subtable, but to which parent element should it belong? color = "red" shape = "round" [[fruit]] # parser must throw an error upon discovering that "fruit" is # an array rather than a table name = "apple"././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/table-invalid-2.toml0000644000000000000000000000006700000000000021367 0ustar00# INVALID TOML DOC fruit = [] [[fruit]] # Not allowed ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/table-invalid-3.toml0000644000000000000000000000041100000000000021361 0ustar00# INVALID TOML DOC [[fruit]] name = "apple" [[fruit.variety]] name = "red delicious" # INVALID: This table conflicts with the previous array of tables [fruit.variety] name = "granny smith" [fruit.physical] color = "red" shape = "round" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/errors/table-invalid-4.toml0000644000000000000000000000040600000000000021366 0ustar00# INVALID TOML DOC [[fruit]] name = "apple" [[fruit.variety]] name = "red delicious" [fruit.physical] color = "red" shape = "round" # INVALID: This array of tables conflicts with the previous table [[fruit.physical]] color = "green" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-array-inline-1000.toml0000644000000000000000000003133200000000000022046 0ustar00key = [ "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "abcdefg", "end"] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3815331 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-array-inline-1000.yaml0000644000000000000000000002735600000000000022050 0ustar00key: - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - abcdefg - end ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3855333 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-array-inline-nested-1000.toml0000644000000000000000000000373200000000000023331 0ustar00key = [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3855333 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-array-inline-nested-1000.yaml0000644000000000000000000000373300000000000023321 0ustar00key: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3855333 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-key-literal-40kb.toml0000644000000000000000000011611700000000000022063 0ustar00'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.' = 'long' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3855333 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-key-literal-40kb.yaml0000644000000000000000000011612000000000000022044 0ustar00? 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.' : long ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3855333 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-key-string-40kb.toml0000644000000000000000000011611700000000000021735 0ustar00"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in." = "long" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3855333 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-key-string-40kb.yaml0000644000000000000000000011612000000000000021716 0ustar00? 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.' : long ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3855333 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-scalar-literal-40kb.toml0000644000000000000000000011611500000000000022536 0ustar00long = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3855333 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-scalar-literal-40kb.yaml0000644000000000000000000012016200000000000022522 0ustar00long: >- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3855333 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-scalar-literal-multiline-40kb.toml0000644000000000000000000011612100000000000024533 0ustar00long = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3855333 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-scalar-literal-multiline-40kb.yaml0000644000000000000000000012030300000000000024517 0ustar00long: >- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3855333 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-scalar-string-40kb.toml0000644000000000000000000011611500000000000022410 0ustar00long = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3855333 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-scalar-string-40kb.yaml0000644000000000000000000012016200000000000022374 0ustar00long: >- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3855333 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-scalar-string-multiline-40kb.toml0000644000000000000000000011612100000000000024405 0ustar00long = '''Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in.''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3855333 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-scalar-string-multiline-40kb.yaml0000644000000000000000000012030300000000000024371 0ustar00long: >- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut. Nulla facilisi etiam dignissim diam quis enim lobortis. Curabitur vitae nunc sed velit dignissim sodales ut eu. Fames ac turpis egestas sed tempus urna et. Facilisi cras fermentum odio eu feugiat pretium. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Est lorem ipsum dolor sit amet consectetur adipiscing elit. Vel quam elementum pulvinar etiam non quam lacus. Pharetra et ultrices neque ornare aenean euismod. Nisl nisi scelerisque eu ultrices. Eget dolor morbi non arcu risus. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Faucibus nisl tincidunt eget nullam. Nisl pretium fusce id velit ut tortor pretium viverra suspendisse. Mauris ultrices eros in cursus. Donec ac odio tempor orci dapibus ultrices in iaculis. Tellus cras adipiscing enim eu turpis egestas pretium aenean pharetra. Eros in cursus turpis massa. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada nunc. Velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Aenean euismod elementum nisi quis eleifend quam. Magnis dis parturient montes nascetur ridiculus mus. Eu tincidunt tortor aliquam nulla facilisi cras. Tristique senectus et netus et malesuada fames. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Vitae ultricies leo integer malesuada nunc vel risus commodo viverra. Ac turpis egestas sed tempus urna et. Amet mauris commodo quis imperdiet massa tincidunt. Urna nunc id cursus metus aliquam eleifend mi. In nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Neque aliquam vestibulum morbi blandit cursus. Pulvinar mattis nunc sed blandit libero volutpat sed. Sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Blandit cursus risus at ultrices mi tempus. Turpis massa sed elementum tempus egestas sed sed. Dictum varius duis at consectetur lorem. Commodo ullamcorper a lacus vestibulum sed arcu non. Dolor magna eget est lorem. Tincidunt arcu non sodales neque sodales ut etiam sit amet. Sit amet risus nullam eget felis eget nunc lobortis. Risus in hendrerit gravida rutrum quisque non tellus orci. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Morbi tristique senectus et netus et malesuada. In aliquam sem fringilla ut morbi tincidunt. Ornare aenean euismod elementum nisi quis eleifend quam. Sed id semper risus in hendrerit gravida rutrum quisque. Lorem ipsum dolor sit amet consectetur adipiscing elit. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Faucibus purus in massa tempor nec feugiat nisl. Vehicula ipsum a arcu cursus vitae congue. Facilisi cras fermentum odio eu feugiat pretium nibh. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Ultrices dui sapien eget mi proin sed libero enim. Nisi est sit amet facilisis magna etiam tempor. Posuere ac ut consequat semper viverra nam. Dis parturient montes nascetur ridiculus mus mauris vitae. Nec sagittis aliquam malesuada bibendum. Mattis pellentesque id nibh tortor id aliquet lectus. Vitae congue eu consequat ac felis donec et. Cras sed felis eget velit aliquet sagittis id consectetur purus. Pellentesque elit ullamcorper dignissim cras tincidunt. Pellentesque dignissim enim sit amet venenatis urna. A cras semper auctor neque vitae tempus. Amet massa vitae tortor condimentum lacinia quis vel eros donec. Tempor commodo ullamcorper a lacus. Nibh tellus molestie nunc non blandit massa enim nec dui. Viverra orci sagittis eu volutpat odio facilisis mauris sit. Sed augue lacus viverra vitae. Vulputate eu scelerisque felis imperdiet proin fermentum leo vel orci. Tellus rutrum tellus pellentesque eu tincidunt tortor. Cras semper auctor neque vitae tempus quam pellentesque nec. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Tristique magna sit amet purus gravida quis blandit turpis. Viverra ipsum nunc aliquet bibendum. Arcu bibendum at varius vel. Amet mattis vulputate enim nulla. Vulputate enim nulla aliquet porttitor. Volutpat blandit aliquam etiam erat velit scelerisque in dictum. Morbi tristique senectus et netus et malesuada fames ac. Faucibus et molestie ac feugiat sed. Tellus elementum sagittis vitae et leo duis. Id aliquet lectus proin nibh. Ornare arcu dui vivamus arcu. Morbi tincidunt augue interdum velit euismod in pellentesque massa placerat. Quis eleifend quam adipiscing vitae. Tristique senectus et netus et malesuada fames ac turpis. Pharetra convallis posuere morbi leo. Ornare arcu odio ut sem nulla pharetra diam sit. Morbi tristique senectus et netus et. Dictum non consectetur a erat nam at lectus urna. Varius vel pharetra vel turpis. Mi ipsum faucibus vitae aliquet. Tellus in metus vulputate eu scelerisque felis imperdiet proin. In est ante in nibh mauris cursus mattis. Massa ultricies mi quis hendrerit dolor magna eget. Fermentum leo vel orci porta. Elit ut aliquam purus sit amet luctus venenatis lectus. Eget aliquet nibh praesent tristique magna sit amet. Arcu non odio euismod lacinia at quis. Montes nascetur ridiculus mus mauris vitae ultricies. Tempus quam pellentesque nec nam aliquam sem et tortor. Morbi leo urna molestie at elementum eu facilisis sed. In fermentum posuere urna nec tincidunt. Neque aliquam vestibulum morbi blandit cursus risus. Vulputate dignissim suspendisse in est ante in nibh mauris cursus. Lorem ipsum dolor sit amet consectetur adipiscing. Orci eu lobortis elementum nibh tellus molestie nunc non. Enim diam vulputate ut pharetra sit amet aliquam. Convallis convallis tellus id interdum velit laoreet id donec ultrices. Sit amet mattis vulputate enim nulla aliquet porttitor lacus luctus. A lacus vestibulum sed arcu non odio. Ut tortor pretium viverra suspendisse potenti nullam ac tortor. Diam vel quam elementum pulvinar etiam non quam. Viverra justo nec ultrices dui. Eu volutpat odio facilisis mauris sit amet massa. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus. Ac felis donec et odio pellentesque. Nisl vel pretium lectus quam id leo in. Ultricies lacus sed turpis tincidunt id. At urna condimentum mattis pellentesque id nibh tortor id. Sem nulla pharetra diam sit amet nisl suscipit. Neque viverra justo nec ultrices. Arcu cursus euismod quis viverra nibh cras pulvinar. Dolor sit amet consectetur adipiscing elit ut aliquam purus. Id diam vel quam elementum pulvinar etiam non. Elementum pulvinar etiam non quam lacus suspendisse faucibus. Id aliquet lectus proin nibh nisl condimentum id venenatis. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh. Sed faucibus turpis in eu mi bibendum neque egestas congue. Consectetur libero id faucibus nisl tincidunt eget nullam. At volutpat diam ut venenatis tellus in metus vulputate eu. Condimentum lacinia quis vel eros donec ac odio. Sit amet porttitor eget dolor morbi non arcu risus quis. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Metus dictum at tempor commodo ullamcorper. At ultrices mi tempus imperdiet nulla. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Lobortis elementum nibh tellus molestie nunc non. Placerat in egestas erat imperdiet sed. Placerat in egestas erat imperdiet sed euismod. Lobortis feugiat vivamus at augue eget arcu dictum varius. Ut sem nulla pharetra diam sit amet. Et tortor at risus viverra adipiscing at in. Tempor nec feugiat nisl pretium. Cursus euismod quis viverra nibh. Eget mi proin sed libero enim sed. Aliquam id diam maecenas ultricies. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Gravida quis blandit turpis cursus in hac habitasse platea dictumst. Sed tempus urna et pharetra pharetra massa massa. Dolor purus non enim praesent elementum facilisis leo vel. Pharetra vel turpis nunc eget. Quam pellentesque nec nam aliquam sem et tortor consequat id. Orci eu lobortis elementum nibh tellus molestie nunc non. Porttitor leo a diam sollicitudin tempor id. Tincidunt ornare massa eget egestas purus viverra accumsan in nisl. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor sit. Elit ut aliquam purus sit amet luctus venenatis lectus. Velit egestas dui id ornare arcu odio ut sem nulla. Lacus viverra vitae congue eu consequat ac felis donec. Nulla aliquet porttitor lacus luctus accumsan tortor posuere ac ut. Lorem dolor sed viverra ipsum. Blandit libero volutpat sed cras ornare arcu. Egestas erat imperdiet sed euismod nisi porta lorem mollis. Viverra maecenas accumsan lacus vel. Enim neque volutpat ac tincidunt. Porttitor massa id neque aliquam vestibulum morbi blandit cursus risus. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Et malesuada fames ac turpis egestas integer. Egestas egestas fringilla phasellus faucibus scelerisque eleifend donec pretium. Est placerat in egestas erat imperdiet sed. Non arcu risus quis varius quam quisque. Lorem mollis aliquam ut porttitor leo a. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus. Fermentum iaculis eu non diam. Erat imperdiet sed euismod nisi porta lorem mollis aliquam. Varius vel pharetra vel turpis nunc eget lorem dolor. Rhoncus mattis rhoncus urna neque viverra. Hac habitasse platea dictumst quisque sagittis purus sit. At quis risus sed vulputate odio ut enim. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros. Rutrum quisque non tellus orci ac auctor. Iaculis eu non diam phasellus vestibulum lorem sed. Ut sem nulla pharetra diam sit amet nisl suscipit. Risus at ultrices mi tempus. Vitae tortor condimentum lacinia quis vel eros donec. Sed tempus urna et pharetra. Posuere sollicitudin aliquam ultrices sagittis orci. Congue quisque egestas diam in arcu. Hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Pellentesque habitant morbi tristique senectus et netus et. Id interdum velit laoreet id. Fusce ut placerat orci nulla pellentesque dignissim. Pretium nibh ipsum consequat nisl vel pretium. Etiam erat velit scelerisque in dictum non consectetur a. Turpis in eu mi bibendum neque egestas congue quisque egestas. Pulvinar sapien et ligula ullamcorper malesuada. Ultricies tristique nulla aliquet enim tortor at. Suspendisse interdum consectetur libero id faucibus. Lorem sed risus ultricies tristique nulla aliquet. Tristique senectus et netus et malesuada fames. Eu augue ut lectus arcu bibendum at varius vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies. Aliquet eget sit amet tellus cras adipiscing. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Ornare massa eget egestas purus viverra accumsan in nisl. Justo laoreet sit amet cursus sit amet. In metus vulputate eu scelerisque felis imperdiet proin. At erat pellentesque adipiscing commodo elit at. Ipsum suspendisse ultrices gravida dictum fusce. Lectus sit amet est placerat in egestas erat. Aliquam ultrices sagittis orci a. Sagittis id consectetur purus ut faucibus pulvinar elementum. Ornare arcu odio ut sem nulla pharetra diam. Sit amet purus gravida quis blandit turpis cursus. Duis ultricies lacus sed turpis tincidunt. Malesuada fames ac turpis egestas sed tempus urna et. Viverra ipsum nunc aliquet bibendum enim facilisis. Et pharetra pharetra massa massa ultricies mi quis. Eget duis at tellus at urna condimentum mattis. Euismod in pellentesque massa placerat. Enim nunc faucibus a pellentesque sit amet porttitor. Dolor sed viverra ipsum nunc aliquet. Donec enim diam vulputate ut pharetra sit amet. Feugiat sed lectus vestibulum mattis ullamcorper velit sed. Erat pellentesque adipiscing commodo elit at imperdiet. Nisl purus in mollis nunc sed id semper risus. Tincidunt augue interdum velit euismod in pellentesque massa. Facilisis magna etiam tempor orci. Mauris in aliquam sem fringilla ut. Gravida dictum fusce ut placerat orci. Sed risus ultricies tristique nulla. Odio morbi quis commodo odio. Feugiat in ante metus dictum at tempor commodo ullamcorper. Porta non pulvinar neque laoreet suspendisse interdum. Etiam tempor orci eu lobortis elementum. Fusce ut placerat orci nulla pellentesque dignissim. Ornare lectus sit amet est placerat in egestas erat. Quis vel eros donec ac. Elementum pulvinar etiam non quam lacus. Sit amet tellus cras adipiscing enim eu turpis. Amet tellus cras adipiscing enim eu. Sed faucibus turpis in eu mi bibendum. Lectus proin nibh nisl condimentum id. Sollicitudin nibh sit amet commodo nulla. Sed tempus urna et pharetra pharetra massa massa. Magna eget est lorem ipsum. Elit ullamcorper dignissim cras tincidunt lobortis feugiat vivamus at. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Dignissim convallis aenean et tortor. Ut faucibus pulvinar elementum integer enim neque. Nibh cras pulvinar mattis nunc sed. Pellentesque sit amet porttitor eget dolor morbi. Mi eget mauris pharetra et ultrices neque ornare aenean euismod. Quis risus sed vulputate odio ut enim blandit volutpat. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. In vitae turpis massa sed elementum tempus egestas sed sed. Urna id volutpat lacus laoreet non. Egestas pretium aenean pharetra magna ac placerat. Amet commodo nulla facilisi nullam vehicula ipsum a arcu cursus. Donec et odio pellentesque diam volutpat commodo sed. Etiam non quam lacus suspendisse. Augue neque gravida in fermentum et sollicitudin ac orci. Eu feugiat pretium nibh ipsum. Nam at lectus urna duis convallis convallis tellus id. Egestas integer eget aliquet nibh. Viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Urna condimentum mattis pellentesque id nibh tortor id. In egestas erat imperdiet sed euismod. Ut sem viverra aliquet eget sit amet tellus. Feugiat pretium nibh ipsum consequat nisl vel pretium. Volutpat odio facilisis mauris sit amet. Mi sit amet mauris commodo quis imperdiet massa tincidunt. Neque volutpat ac tincidunt vitae semper quis lectus nulla at. Nec feugiat in fermentum posuere urna nec. Ut venenatis tellus in metus vulputate eu. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim. Eu scelerisque felis imperdiet proin. Vitae et leo duis ut diam quam nulla. Ut venenatis tellus in metus vulputate eu scelerisque. Tincidunt dui ut ornare lectus sit amet. Adipiscing diam donec adipiscing tristique risus. Turpis nunc eget lorem dolor sed viverra ipsum nunc aliquet. Non sodales neque sodales ut. Massa placerat duis ultricies lacus sed turpis tincidunt. Viverra orci sagittis eu volutpat odio facilisis mauris sit amet. Adipiscing vitae proin sagittis nisl. Vitae aliquet nec ullamcorper sit. Potenti nullam ac tortor vitae purus. Ultricies lacus sed turpis tincidunt id. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Semper eget duis at tellus at urna condimentum mattis pellentesque. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin. Dictum fusce ut placerat orci nulla pellentesque dignissim. Amet luctus venenatis lectus magna fringilla urna. Quam quisque id diam vel quam elementum pulvinar. At tempor commodo ullamcorper a. Magna etiam tempor orci eu lobortis. Suspendisse ultrices gravida dictum fusce. Massa ultricies mi quis hendrerit dolor magna. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Aliquet enim tortor at auctor urna nunc id. Semper feugiat nibh sed pulvinar proin gravida. Porttitor rhoncus dolor purus non enim. Metus aliquam eleifend mi in nulla. Lectus arcu bibendum at varius vel pharetra. Sed vulputate odio ut enim blandit volutpat. Et ligula ullamcorper malesuada proin libero nunc consequat interdum varius. Donec et odio pellentesque diam volutpat commodo. Id ornare arcu odio ut sem nulla pharetra diam sit. Est ullamcorper eget nulla facilisi etiam dignissim diam quis enim. Sagittis vitae et leo duis ut diam quam nulla. Elementum nisi quis eleifend quam. Congue mauris rhoncus aenean vel elit. Adipiscing elit duis tristique sollicitudin nibh sit. Egestas egestas fringilla phasellus faucibus scelerisque. Morbi tincidunt augue interdum velit euismod. Massa sed elementum tempus egestas sed sed. Id leo in vitae turpis massa sed elementum tempus egestas. In pellentesque massa placerat duis ultricies lacus sed turpis. Vitae proin sagittis nisl rhoncus mattis rhoncus. Enim tortor at auctor urna nunc id. In fermentum posuere urna nec tincidunt praesent semper feugiat nibh. Aliquam ut porttitor leo a diam sollicitudin tempor id. Pellentesque elit eget gravida cum sociis natoque. Molestie at elementum eu facilisis sed odio morbi quis. Tristique senectus et netus et malesuada fames ac turpis. Proin libero nunc consequat interdum varius sit amet mattis. Pellentesque id nibh tortor id. Risus sed vulputate odio ut enim blandit. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt eget. Morbi tincidunt augue interdum velit euismod in pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit. Nunc aliquet bibendum enim facilisis gravida neque. Feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Risus quis varius quam quisque id diam vel. Et ultrices neque ornare aenean. Aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. Nibh ipsum consequat nisl vel. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque pulvinar. Ornare quam viverra orci sagittis eu volutpat odio facilisis. Euismod nisi porta lorem mollis aliquam. Enim ut tellus elementum sagittis. Rhoncus mattis rhoncus urna neque. Malesuada fames ac turpis egestas. Cursus in hac habitasse platea dictumst quisque sagittis. Sit amet aliquam id diam maecenas ultricies mi eget mauris. Enim sit amet venenatis urna cursus eget nunc. Fermentum odio eu feugiat pretium nibh ipsum consequat. Eu scelerisque felis imperdiet proin. Nullam non nisi est sit amet facilisis magna etiam tempor. In mollis nunc sed id semper risus in hendrerit. Sollicitudin nibh sit amet commodo nulla facilisi nullam. Sit amet nisl purus in mollis nunc sed id. Nam libero justo laoreet sit amet cursus sit amet dictum. Condimentum id venenatis a condimentum vitae sapien pellentesque. Porta nibh venenatis cras sed felis. Lectus nulla at volutpat diam ut venenatis tellus in. Aliquam etiam erat velit scelerisque in dictum non consectetur a. Leo vel fringilla est ullamcorper eget. Sodales ut etiam sit amet nisl purus in mollis nunc. Euismod nisi porta lorem mollis aliquam. Ornare arcu odio ut sem nulla. Sed felis eget velit aliquet sagittis id consectetur. Pellentesque nec nam aliquam sem et tortor consequat id. Enim nec dui nunc mattis enim ut tellus elementum. Nullam non nisi est sit amet facilisis magna. Rutrum quisque non tellus orci ac auctor augue. Nunc vel risus commodo viverra maecenas accumsan lacus. Viverra vitae congue eu consequat. Sollicitudin nibh sit amet commodo nulla. Amet volutpat consequat mauris nunc congue nisi. Maecenas pharetra convallis posuere morbi leo urna molestie at. Mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan tortor. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc consequat. Adipiscing diam donec adipiscing tristique risus. Elementum curabitur vitae nunc sed velit dignissim sodales ut. Eleifend donec pretium vulputate sapien nec. Commodo quis imperdiet massa tincidunt nunc pulvinar. Proin libero nunc consequat interdum varius sit amet mattis. Facilisis gravida neque convallis a cras semper auctor neque vitae. Quisque egestas diam in arcu cursus. Nunc eget lorem dolor sed viverra ipsum. Mauris sit amet massa vitae tortor condimentum lacinia quis vel. Aliquam sem et tortor consequat id porta nibh venenatis cras. Nunc sed id semper risus in. Enim sed faucibus turpis in eu mi bibendum neque. Molestie nunc non blandit massa enim. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Semper risus in hendrerit gravida rutrum quisque non tellus orci. Ac turpis egestas maecenas pharetra. In nulla posuere sollicitudin aliquam. Justo nec ultrices dui sapien eget mi proin sed libero. In ornare quam viverra orci sagittis eu. Proin nibh nisl condimentum id venenatis. Morbi enim nunc faucibus a pellentesque sit amet porttitor eget. Quis risus sed vulputate odio ut enim blandit. Risus feugiat in ante metus dictum at tempor commodo. Sodales neque sodales ut etiam. Nunc id cursus metus aliquam. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim. Augue ut lectus arcu bibendum at. Quis varius quam quisque id diam vel quam. Egestas congue quisque egestas diam in arcu. Condimentum mattis pellentesque id nibh tortor id aliquet lectus. Enim lobortis scelerisque fermentum dui faucibus in. In tellus integer feugiat scelerisque varius morbi enim nunc. Mattis molestie a iaculis at erat pellentesque. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam. Nisl rhoncus mattis rhoncus urna neque. Ac auctor augue mauris augue neque gravida in fermentum et. Sodales ut eu sem integer vitae justo eget. Sed egestas egestas fringilla phasellus. Viverra adipiscing at in tellus integer feugiat scelerisque varius. Purus gravida quis blandit turpis. Id porta nibh venenatis cras sed. Mattis vulputate enim nulla aliquet porttitor lacus. Augue eget arcu dictum varius duis at consectetur lorem donec. Nulla at volutpat diam ut venenatis tellus in metus. Aliquam etiam erat velit scelerisque in dictum non consectetur. Turpis cursus in hac habitasse platea dictumst. Consequat mauris nunc congue nisi vitae suscipit tellus. Volutpat maecenas volutpat blandit aliquam etiam. Massa massa ultricies mi quis hendrerit dolor magna eget est. Velit egestas dui id ornare arcu. Non consectetur a erat nam at. Orci sagittis eu volutpat odio facilisis mauris sit amet. Dui id ornare arcu odio. Sed arcu non odio euismod lacinia. Feugiat in ante metus dictum. Gravida arcu ac tortor dignissim convallis. Egestas sed tempus urna et pharetra pharetra massa massa. Nulla facilisi nullam vehicula ipsum a arcu. Ipsum a arcu cursus vitae congue mauris. Porttitor rhoncus dolor purus non. Magna sit amet purus gravida quis blandit. Sapien eget mi proin sed libero enim sed faucibus turpis. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper sit. Pellentesque dignissim enim sit amet venenatis urna cursus eget. Pharetra massa massa ultricies mi quis hendrerit. Sapien nec sagittis aliquam malesuada bibendum. Nunc scelerisque viverra mauris in aliquam sem fringilla ut. Dolor magna eget est lorem ipsum dolor. Amet commodo nulla facilisi nullam. Pellentesque elit ullamcorper dignissim cras. Id porta nibh venenatis cras sed felis eget. Nam at lectus urna duis. Laoreet non curabitur gravida arcu ac tortor dignissim convallis. Nunc lobortis mattis aliquam faucibus purus in massa tempor. Sit amet luctus venenatis lectus magna fringilla. Duis ultricies lacus sed turpis tincidunt id. Sed velit dignissim sodales ut eu. Ut tortor pretium viverra suspendisse potenti nullam. Iaculis at erat pellentesque adipiscing. Ipsum nunc aliquet bibendum enim facilisis gravida neque. Nulla aliquet enim tortor at auctor urna nunc id cursus. Amet cursus sit amet dictum sit amet justo donec enim. Enim nunc faucibus a pellentesque sit amet porttitor eget dolor. Pharetra magna ac placerat vestibulum lectus mauris ultrices eros in. Nulla facilisi etiam dignissim diam quis enim. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam erat. Imperdiet proin fermentum leo vel orci porta non pulvinar neque. Vel fringilla est ullamcorper eget nulla. Bibendum neque egestas congue quisque egestas diam in arcu cursus. Ipsum nunc aliquet bibendum enim facilisis gravida neque convallis a. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Augue eget arcu dictum varius duis. Tristique et egestas quis ipsum. Quis varius quam quisque id. Varius sit amet mattis vulputate. Mattis molestie a iaculis at erat pellentesque. Libero justo laoreet sit amet cursus. Aliquam id diam maecenas ultricies mi eget mauris pharetra. Ut eu sem integer vitae justo eget. Fames ac turpis egestas sed. Suspendisse in est ante in nibh mauris cursus mattis. Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae. Neque vitae tempus quam pellentesque nec nam aliquam. Lobortis elementum nibh tellus molestie nunc non. Lacus vel facilisis volutpat est velit egestas dui. Justo laoreet sit amet cursus sit amet dictum sit amet. Adipiscing enim eu turpis egestas pretium aenean pharetra magna. Cursus metus aliquam eleifend mi in nulla posuere. Nibh mauris cursus mattis molestie a. Dignissim diam quis enim lobortis scelerisque fermentum. A scelerisque purus semper eget duis at tellus. Lacus sed turpis tincidunt id aliquet risus feugiat in. Non tellus orci ac auctor. Ultrices in iaculis nunc sed augue lacus. Tincidunt tortor aliquam nulla facilisi cras. Nulla facilisi nullam vehicula ipsum a arcu cursus vitae congue. Eget magna fermentum iaculis eu non diam phasellus. Pharetra massa massa ultricies mi quis. Eget mauris pharetra et ultrices neque ornare. Aliquam faucibus purus in massa. Facilisi morbi tempus iaculis urna id volutpat lacus. Accumsan lacus vel facilisis volutpat. Curabitur gravida arcu ac tortor. Quam lacus suspendisse faucibus interdum. Elementum nibh tellus molestie nunc non blandit massa enim. Libero id faucibus nisl tincidunt. Bibendum ut tristique et egestas. Ut diam quam nulla porttitor massa id neque aliquam vestibulum. Augue interdum velit euismod in pellentesque. Adipiscing diam donec adipiscing tristique risus nec feugiat. Fringilla ut morbi tincidunt augue interdum velit. Vitae et leo duis ut diam quam nulla porttitor massa. Egestas integer eget aliquet nibh praesent tristique. Posuere sollicitudin aliquam ultrices sagittis orci a. Nisi est sit amet facilisis. Risus quis varius quam quisque id diam. Faucibus turpis in eu mi. Et molestie ac feugiat sed lectus vestibulum. Porttitor lacus luctus accumsan tortor posuere ac. Platea dictumst vestibulum rhoncus est pellentesque. Tortor pretium viverra suspendisse potenti nullam ac tortor. Enim praesent elementum facilisis leo vel fringilla est. Proin libero nunc consequat interdum varius sit amet mattis vulputate. Turpis egestas pretium aenean pharetra magna ac placerat vestibulum lectus. Nulla pharetra diam sit amet nisl suscipit. Mauris nunc congue nisi vitae suscipit tellus mauris a diam. Faucibus in ornare quam viverra orci sagittis eu volutpat. Volutpat consequat mauris nunc congue nisi vitae. Dui nunc mattis enim ut tellus. Adipiscing elit ut aliquam purus sit amet luctus. Tempus egestas sed sed risus. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Massa ultricies mi quis hendrerit dolor magna eget. Pulvinar mattis nunc sed blandit libero volutpat sed cras ornare. Ut eu sem integer vitae justo eget magna fermentum. Ornare quam viverra orci sagittis. Eget dolor morbi non arcu risus quis varius quam. Tincidunt praesent semper feugiat nibh sed pulvinar. Sit amet justo donec enim diam vulputate. Dui faucibus in ornare quam viverra. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu. Turpis egestas sed tempus urna et. Pretium quam vulputate dignissim suspendisse in est ante in. Morbi quis commodo odio aenean sed adipiscing diam donec. Nunc mattis enim ut tellus elementum sagittis vitae et. Diam vel quam elementum pulvinar etiam non quam. Convallis posuere morbi leo urna molestie at elementum eu. Adipiscing at in tellus integer feugiat scelerisque varius morbi. Quis varius quam quisque id diam vel quam elementum. Dui accumsan sit amet nulla. Adipiscing elit duis tristique sollicitudin nibh sit amet commodo. Viverra ipsum nunc aliquet bibendum enim facilisis. Porta lorem mollis aliquam ut. Velit ut tortor pretium viverra suspendisse potenti. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Pharetra magna ac placerat vestibulum. Mauris ultrices eros in cursus turpis massa. Lacus vestibulum sed arcu non odio euismod lacinia at. Dapibus ultrices in iaculis nunc sed. Cras adipiscing enim eu turpis egestas. Eget arcu dictum varius duis at consectetur. Consequat id porta nibh venenatis cras sed felis eget velit. Integer enim neque volutpat ac tincidunt vitae. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Ut morbi tincidunt augue interdum velit euismod. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Eget felis eget nunc lobortis mattis aliquam faucibus purus in. Luctus venenatis lectus magna fringilla urna porttitor rhoncus dolor. Nisl nunc mi ipsum faucibus vitae. Proin fermentum leo vel orci porta. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl. Et leo duis ut diam quam. Eros in cursus turpis massa tincidunt. Volutpat est velit egestas dui id. Commodo odio aenean sed adipiscing diam. Quis blandit turpis cursus in hac habitasse platea dictumst quisque. Magna fringilla urna porttitor rhoncus dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vitae justo eget magna fermentum iaculis eu non diam. Hendrerit dolor magna eget est. Ac placerat vestibulum lectus mauris ultrices eros in cursus turpis. Egestas diam in arcu cursus. At varius vel pharetra vel turpis nunc. Lacus vel facilisis volutpat est velit. Ut ornare lectus sit amet est placerat in egestas. Quam adipiscing vitae proin sagittis nisl rhoncus. Dolor purus non enim praesent. Urna condimentum mattis pellentesque id. Magnis dis parturient montes nascetur ridiculus. Feugiat nisl pretium fusce id. Sed cras ornare arcu dui vivamus. Vitae turpis massa sed elementum tempus egestas sed sed. Ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Ac ut consequat semper viverra nam libero. Consectetur lorem donec massa sapien faucibus. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Eu turpis egestas pretium aenean pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo nec ultrices. Pellentesque sit amet porttitor eget dolor morbi non arcu. Vitae justo eget magna fermentum iaculis. Quis auctor elit sed vulputate mi sit. Purus viverra accumsan in nisl nisi scelerisque eu ultrices. Semper auctor neque vitae tempus quam pellentesque nec nam. Rhoncus dolor purus non enim. Sed turpis tincidunt id aliquet risus feugiat. Sit amet justo donec enim diam vulputate ut pharetra sit. Risus pretium quam vulputate dignissim suspendisse in est ante in. Massa sapien faucibus et molestie ac feugiat. Id aliquet risus feugiat in ante metus. Risus ultricies tristique nulla aliquet enim tortor at auctor urna. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi. Lacus sed turpis tincidunt id aliquet risus feugiat in. Risus ultricies tristique nulla aliquet enim tortor. In ornare quam viverra orci sagittis eu volutpat. Netus et malesuada fames ac turpis egestas sed tempus urna. Fames ac turpis egestas maecenas pharetra convallis posuere morbi. Etiam erat velit scelerisque in dictum non. Cursus turpis massa tincidunt dui ut ornare lectus. Tristique sollicitudin nibh sit amet commodo nulla facilisi. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et. Aliquet eget sit amet tellus cras. Nullam ac tortor vitae purus faucibus ornare. Lacus viverra vitae congue eu consequat. Vulputate ut pharetra sit amet. Est ante in nibh mauris cursus mattis molestie a. Ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Et tortor at risus viverra. Sed libero enim sed faucibus turpis in eu. Id cursus metus aliquam eleifend mi in nulla posuere sollicitudin. Risus viverra adipiscing at in. Imperdiet massa tincidunt nunc pulvinar sapien et. Nec feugiat in fermentum posuere urna nec tincidunt. Ultricies mi eget mauris pharetra et. Morbi tristique senectus et netus et malesuada fames ac. At quis risus sed vulputate. Interdum velit laoreet id donec. Sapien pellentesque habitant morbi tristique. Pharetra vel turpis nunc eget lorem dolor sed viverra. In massa tempor nec feugiat nisl. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Mauris augue neque gravida in. Faucibus vitae aliquet nec ullamcorper sit amet risus. Id velit ut tortor pretium viverra suspendisse potenti. Leo integer malesuada nunc vel risus commodo viverra maecenas. Risus quis varius quam quisque id. Aliquam malesuada bibendum arcu vitae elementum curabitur vitae. Vestibulum lectus mauris ultrices eros in cursus turpis. Fermentum posuere urna nec tincidunt. Magna etiam tempor orci eu lobortis elementum nibh tellus molestie. Id ornare arcu odio ut. Facilisi nullam vehicula ipsum a arcu cursus vitae congue. Nulla pellentesque dignissim enim sit amet venenatis urna cursus eget. Viverra mauris in aliquam sem fringilla ut morbi tincidunt. Quis ipsum suspendisse ultrices gravida dictum fusce ut placerat orci. Sed cras ornare arcu dui vivamus arcu felis. Egestas diam in arcu cursus euismod quis. Tincidunt dui ut ornare lectus. Morbi tristique senectus et netus et. Ornare arcu dui vivamus arcu felis bibendum ut tristique. Habitant morbi tristique senectus et netus et malesuada fames ac. Ut tristique et egestas quis. Mollis aliquam ut porttitor leo. Venenatis tellus in metus vulputate eu scelerisque felis imperdiet proin. Sagittis eu volutpat odio facilisis mauris sit amet massa. Eu facilisis sed odio morbi. Nunc consequat interdum varius sit amet mattis. Velit dignissim sodales ut eu. Pellentesque eu tincidunt tortor aliquam. Porta lorem mollis aliquam ut porttitor. Rhoncus urna neque viverra justo nec ultrices. Viverra suspendisse potenti nullam ac tortor vitae purus. Fermentum posuere urna nec tincidunt praesent semper feugiat nibh sed. Purus sit amet luctus venenatis lectus magna fringilla urna porttitor. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nulla posuere sollicitudin aliquam ultrices sagittis orci a scelerisque. Nisl nisi scelerisque eu ultrices vitae auctor. In vitae turpis massa sed elementum tempus egestas. Cursus sit amet dictum sit amet justo donec enim. Vitae congue eu consequat ac felis donec et. Augue interdum velit euismod in pellentesque massa placerat. Enim ut sem viverra aliquet eget sit amet. Velit scelerisque in dictum non consectetur a erat. Sed lectus vestibulum mattis ullamcorper velit sed ullamcorper. Nunc faucibus a pellentesque sit amet porttitor eget. Tellus integer feugiat scelerisque varius morbi. Lorem sed risus ultricies tristique nulla aliquet enim tortor at. Eget nulla facilisi etiam dignissim diam quis enim lobortis scelerisque. Adipiscing elit duis tristique sollicitudin. Adipiscing elit pellentesque habitant morbi tristique. Ac tincidunt vitae semper quis lectus nulla at. Maecenas sed enim ut sem viverra. Erat pellentesque adipiscing commodo elit at imperdiet. Dolor morbi non arcu risus quis varius quam quisque. Fringilla urna porttitor rhoncus dolor purus non enim praesent. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus a. Felis eget nunc lobortis mattis aliquam faucibus purus in. Fringilla phasellus faucibus scelerisque eleifend. Pulvinar etiam non quam lacus suspendisse faucibus interdum posuere. Risus ultricies tristique nulla aliquet. Lectus sit amet est placerat. Ac ut consequat semper viverra nam libero justo. Dapibus ultrices in iaculis nunc sed augue. Mattis ullamcorper velit sed ullamcorper. Eget nullam non nisi est. Vitae elementum curabitur vitae nunc sed velit. Sit amet commodo nulla facilisi nullam vehicula ipsum a arcu. Tempor nec feugiat nisl pretium fusce id velit ut. Nulla pellentesque dignissim enim sit amet venenatis. Sed tempus urna et pharetra pharetra. Congue quisque egestas diam in. Convallis posuere morbi leo urna. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Sagittis nisl rhoncus mattis rhoncus urna neque viverra justo. Scelerisque felis imperdiet proin fermentum leo vel. Ut placerat orci nulla pellentesque dignissim enim sit amet. In cursus turpis massa tincidunt dui. Rutrum quisque non tellus orci ac auctor augue mauris augue. Cursus vitae congue mauris rhoncus aenean vel elit scelerisque mauris. Scelerisque fermentum dui faucibus in ornare quam viverra orci. Habitant morbi tristique senectus et netus et. Ridiculus mus mauris vitae ultricies leo. Vitae semper quis lectus nulla at volutpat diam. Purus faucibus ornare suspendisse sed nisi. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Mi tempus imperdiet nulla malesuada pellentesque elit eget. Varius duis at consectetur lorem donec. Pulvinar pellentesque habitant morbi tristique senectus et netus et. A iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Mi ipsum faucibus vitae aliquet nec. Libero volutpat sed cras ornare arcu dui vivamus arcu. Natoque penatibus et magnis dis parturient montes nascetur ridiculus. Maecenas volutpat blandit aliquam etiam erat velit scelerisque. Cras adipiscing enim eu turpis. Nec tincidunt praesent semper feugiat nibh sed pulvinar. Justo laoreet sit amet cursus sit amet dictum sit. Velit scelerisque in dictum non consectetur a erat nam. Turpis tincidunt id aliquet risus feugiat in ante. Aliquet risus feugiat in ante metus dictum. Hac habitasse platea dictumst quisque sagittis purus sit. Et pharetra pharetra massa massa ultricies. Sit amet nisl suscipit adipiscing bibendum est ultricies integer. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Integer quis auctor elit sed. In est ante in nibh mauris cursus mattis molestie. Scelerisque in dictum non consectetur a erat nam at. Lectus sit amet est placerat in. Sit amet cursus sit amet. Nibh nisl condimentum id venenatis a condimentum. Purus ut faucibus pulvinar elementum integer enim. Pharetra sit amet aliquam id diam maecenas. Id cursus metus aliquam eleifend mi in nulla posuere. Lobortis mattis aliquam faucibus purus in massa tempor nec. Urna neque viverra justo nec ultrices dui sapien eget. Enim ut sem viverra aliquet eget sit amet. In eu mi bibendum neque egestas congue quisque egestas. Enim neque volutpat ac tincidunt. Orci ac auctor augue mauris augue neque gravida in fermentum. Velit aliquet sagittis id consectetur. Enim ut sem viverra aliquet eget sit amet tellus. Semper auctor neque vitae tempus quam pellentesque nec. Non blandit massa enim nec dui nunc. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Arcu non odio euismod lacinia at quis risus. Dictum varius duis at consectetur lorem donec massa. Blandit massa enim nec dui. Nibh ipsum consequat nisl vel. Turpis in eu mi bibendum neque. Ut tristique et egestas quis. Ac odio tempor orci dapibus. Gravida dictum fusce ut placerat orci nulla pellentesque dignissim. Integer feugiat scelerisque varius morbi enim. Libero volutpat sed cras ornare arcu dui. Odio aenean sed adipiscing diam. Et egestas quis ipsum suspendisse ultrices. Aliquet lectus proin nibh nisl condimentum. Sit amet consectetur adipiscing elit duis tristique sollicitudin nibh sit. Blandit massa enim nec dui. Tellus molestie nunc non blandit massa enim nec. Tortor vitae purus faucibus ornare suspendisse sed nisi. Nascetur ridiculus mus mauris vitae ultricies leo. Elementum facilisis leo vel fringilla est ullamcorper eget nulla. Diam maecenas ultricies mi eget. Duis tristique sollicitudin nibh sit amet commodo nulla. Tempus iaculis urna id volutpat lacus laoreet non curabitur gravida. Dictumst quisque sagittis purus sit amet. Viverra mauris in aliquam sem. Quis risus sed vulputate odio ut enim blandit volutpat maecenas. Condimentum mattis pellentesque id nibh tortor id. Non sodales neque sodales ut etiam sit amet. Ipsum consequat nisl vel pretium. Cursus in hac habitasse platea dictumst quisque sagittis purus sit. Fringilla est ullamcorper eget nulla facilisi etiam. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl vel pretium lectus quam id leo in. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3855333 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-table-inline-1000.toml0000644000000000000000000004671100000000000022026 0ustar00key = { key1 = "abcdefg", key2 = "abcdefg", key3 = "abcdefg", key4 = "abcdefg", key5 = "abcdefg", key6 = "abcdefg", key7 = "abcdefg", key8 = "abcdefg", key9 = "abcdefg", key10 = "abcdefg", key11 = "abcdefg", key12 = "abcdefg", key13 = "abcdefg", key14 = "abcdefg", key15 = "abcdefg", key16 = "abcdefg", key17 = "abcdefg", key18 = "abcdefg", key19 = "abcdefg", key20 = "abcdefg", key21 = "abcdefg", key22 = "abcdefg", key23 = "abcdefg", key24 = "abcdefg", key25 = "abcdefg", key26 = "abcdefg", key27 = "abcdefg", key28 = "abcdefg", key29 = "abcdefg", key30 = "abcdefg", key31 = "abcdefg", key32 = "abcdefg", key33 = "abcdefg", key34 = "abcdefg", key35 = "abcdefg", key36 = "abcdefg", key37 = "abcdefg", key38 = "abcdefg", key39 = "abcdefg", key40 = "abcdefg", key41 = "abcdefg", key42 = "abcdefg", key43 = "abcdefg", key44 = "abcdefg", key45 = "abcdefg", key46 = "abcdefg", key47 = "abcdefg", key48 = "abcdefg", key49 = "abcdefg", key50 = "abcdefg", key51 = "abcdefg", key52 = "abcdefg", key53 = "abcdefg", key54 = "abcdefg", key55 = "abcdefg", key56 = "abcdefg", key57 = "abcdefg", key58 = "abcdefg", key59 = "abcdefg", key60 = "abcdefg", key61 = "abcdefg", key62 = "abcdefg", key63 = "abcdefg", key64 = "abcdefg", key65 = "abcdefg", key66 = "abcdefg", key67 = "abcdefg", key68 = "abcdefg", key69 = "abcdefg", key70 = "abcdefg", key71 = "abcdefg", key72 = "abcdefg", key73 = "abcdefg", key74 = "abcdefg", key75 = "abcdefg", key76 = "abcdefg", key77 = "abcdefg", key78 = "abcdefg", key79 = "abcdefg", key80 = "abcdefg", key81 = "abcdefg", key82 = "abcdefg", key83 = "abcdefg", key84 = "abcdefg", key85 = "abcdefg", key86 = "abcdefg", key87 = "abcdefg", key88 = "abcdefg", key89 = "abcdefg", key90 = "abcdefg", key91 = "abcdefg", key92 = "abcdefg", key93 = "abcdefg", key94 = "abcdefg", key95 = "abcdefg", key96 = "abcdefg", key97 = "abcdefg", key98 = "abcdefg", key99 = "abcdefg", key100 = "abcdefg", key101 = "abcdefg", key102 = "abcdefg", key103 = "abcdefg", key104 = "abcdefg", key105 = "abcdefg", key106 = "abcdefg", key107 = "abcdefg", key108 = "abcdefg", key109 = "abcdefg", key110 = "abcdefg", key111 = "abcdefg", key112 = "abcdefg", key113 = "abcdefg", key114 = "abcdefg", key115 = "abcdefg", key116 = "abcdefg", key117 = "abcdefg", key118 = "abcdefg", key119 = "abcdefg", key120 = "abcdefg", key121 = "abcdefg", key122 = "abcdefg", key123 = "abcdefg", key124 = "abcdefg", key125 = "abcdefg", key126 = "abcdefg", key127 = "abcdefg", key128 = "abcdefg", key129 = "abcdefg", key130 = "abcdefg", key131 = "abcdefg", key132 = "abcdefg", key133 = "abcdefg", key134 = "abcdefg", key135 = "abcdefg", key136 = "abcdefg", key137 = "abcdefg", key138 = "abcdefg", key139 = "abcdefg", key140 = "abcdefg", key141 = "abcdefg", key142 = "abcdefg", key143 = "abcdefg", key144 = "abcdefg", key145 = "abcdefg", key146 = "abcdefg", key147 = "abcdefg", key148 = "abcdefg", key149 = "abcdefg", key150 = "abcdefg", key151 = "abcdefg", key152 = "abcdefg", key153 = "abcdefg", key154 = "abcdefg", key155 = "abcdefg", key156 = "abcdefg", key157 = "abcdefg", key158 = "abcdefg", key159 = "abcdefg", key160 = "abcdefg", key161 = "abcdefg", key162 = "abcdefg", key163 = "abcdefg", key164 = "abcdefg", key165 = "abcdefg", key166 = "abcdefg", key167 = "abcdefg", key168 = "abcdefg", key169 = "abcdefg", key170 = "abcdefg", key171 = "abcdefg", key172 = "abcdefg", key173 = "abcdefg", key174 = "abcdefg", key175 = "abcdefg", key176 = "abcdefg", key177 = "abcdefg", key178 = "abcdefg", key179 = "abcdefg", key180 = "abcdefg", key181 = "abcdefg", key182 = "abcdefg", key183 = "abcdefg", key184 = "abcdefg", key185 = "abcdefg", key186 = "abcdefg", key187 = "abcdefg", key188 = "abcdefg", key189 = "abcdefg", key190 = "abcdefg", key191 = "abcdefg", key192 = "abcdefg", key193 = "abcdefg", key194 = "abcdefg", key195 = "abcdefg", key196 = "abcdefg", key197 = "abcdefg", key198 = "abcdefg", key199 = "abcdefg", key200 = "abcdefg", key201 = "abcdefg", key202 = "abcdefg", key203 = "abcdefg", key204 = "abcdefg", key205 = "abcdefg", key206 = "abcdefg", key207 = "abcdefg", key208 = "abcdefg", key209 = "abcdefg", key210 = "abcdefg", key211 = "abcdefg", key212 = "abcdefg", key213 = "abcdefg", key214 = "abcdefg", key215 = "abcdefg", key216 = "abcdefg", key217 = "abcdefg", key218 = "abcdefg", key219 = "abcdefg", key220 = "abcdefg", key221 = "abcdefg", key222 = "abcdefg", key223 = "abcdefg", key224 = "abcdefg", key225 = "abcdefg", key226 = "abcdefg", key227 = "abcdefg", key228 = "abcdefg", key229 = "abcdefg", key230 = "abcdefg", key231 = "abcdefg", key232 = "abcdefg", key233 = "abcdefg", key234 = "abcdefg", key235 = "abcdefg", key236 = "abcdefg", key237 = "abcdefg", key238 = "abcdefg", key239 = "abcdefg", key240 = "abcdefg", key241 = "abcdefg", key242 = "abcdefg", key243 = "abcdefg", key244 = "abcdefg", key245 = "abcdefg", key246 = "abcdefg", key247 = "abcdefg", key248 = "abcdefg", key249 = "abcdefg", key250 = "abcdefg", key251 = "abcdefg", key252 = "abcdefg", key253 = "abcdefg", key254 = "abcdefg", key255 = "abcdefg", key256 = "abcdefg", key257 = "abcdefg", key258 = "abcdefg", key259 = "abcdefg", key260 = "abcdefg", key261 = "abcdefg", key262 = "abcdefg", key263 = "abcdefg", key264 = "abcdefg", key265 = "abcdefg", key266 = "abcdefg", key267 = "abcdefg", key268 = "abcdefg", key269 = "abcdefg", key270 = "abcdefg", key271 = "abcdefg", key272 = "abcdefg", key273 = "abcdefg", key274 = "abcdefg", key275 = "abcdefg", key276 = "abcdefg", key277 = "abcdefg", key278 = "abcdefg", key279 = "abcdefg", key280 = "abcdefg", key281 = "abcdefg", key282 = "abcdefg", key283 = "abcdefg", key284 = "abcdefg", key285 = "abcdefg", key286 = "abcdefg", key287 = "abcdefg", key288 = "abcdefg", key289 = "abcdefg", key290 = "abcdefg", key291 = "abcdefg", key292 = "abcdefg", key293 = "abcdefg", key294 = "abcdefg", key295 = "abcdefg", key296 = "abcdefg", key297 = "abcdefg", key298 = "abcdefg", key299 = "abcdefg", key300 = "abcdefg", key301 = "abcdefg", key302 = "abcdefg", key303 = "abcdefg", key304 = "abcdefg", key305 = "abcdefg", key306 = "abcdefg", key307 = "abcdefg", key308 = "abcdefg", key309 = "abcdefg", key310 = "abcdefg", key311 = "abcdefg", key312 = "abcdefg", key313 = "abcdefg", key314 = "abcdefg", key315 = "abcdefg", key316 = "abcdefg", key317 = "abcdefg", key318 = "abcdefg", key319 = "abcdefg", key320 = "abcdefg", key321 = "abcdefg", key322 = "abcdefg", key323 = "abcdefg", key324 = "abcdefg", key325 = "abcdefg", key326 = "abcdefg", key327 = "abcdefg", key328 = "abcdefg", key329 = "abcdefg", key330 = "abcdefg", key331 = "abcdefg", key332 = "abcdefg", key333 = "abcdefg", key334 = "abcdefg", key335 = "abcdefg", key336 = "abcdefg", key337 = "abcdefg", key338 = "abcdefg", key339 = "abcdefg", key340 = "abcdefg", key341 = "abcdefg", key342 = "abcdefg", key343 = "abcdefg", key344 = "abcdefg", key345 = "abcdefg", key346 = "abcdefg", key347 = "abcdefg", key348 = "abcdefg", key349 = "abcdefg", key350 = "abcdefg", key351 = "abcdefg", key352 = "abcdefg", key353 = "abcdefg", key354 = "abcdefg", key355 = "abcdefg", key356 = "abcdefg", key357 = "abcdefg", key358 = "abcdefg", key359 = "abcdefg", key360 = "abcdefg", key361 = "abcdefg", key362 = "abcdefg", key363 = "abcdefg", key364 = "abcdefg", key365 = "abcdefg", key366 = "abcdefg", key367 = "abcdefg", key368 = "abcdefg", key369 = "abcdefg", key370 = "abcdefg", key371 = "abcdefg", key372 = "abcdefg", key373 = "abcdefg", key374 = "abcdefg", key375 = "abcdefg", key376 = "abcdefg", key377 = "abcdefg", key378 = "abcdefg", key379 = "abcdefg", key380 = "abcdefg", key381 = "abcdefg", key382 = "abcdefg", key383 = "abcdefg", key384 = "abcdefg", key385 = "abcdefg", key386 = "abcdefg", key387 = "abcdefg", key388 = "abcdefg", key389 = "abcdefg", key390 = "abcdefg", key391 = "abcdefg", key392 = "abcdefg", key393 = "abcdefg", key394 = "abcdefg", key395 = "abcdefg", key396 = "abcdefg", key397 = "abcdefg", key398 = "abcdefg", key399 = "abcdefg", key400 = "abcdefg", key401 = "abcdefg", key402 = "abcdefg", key403 = "abcdefg", key404 = "abcdefg", key405 = "abcdefg", key406 = "abcdefg", key407 = "abcdefg", key408 = "abcdefg", key409 = "abcdefg", key410 = "abcdefg", key411 = "abcdefg", key412 = "abcdefg", key413 = "abcdefg", key414 = "abcdefg", key415 = "abcdefg", key416 = "abcdefg", key417 = "abcdefg", key418 = "abcdefg", key419 = "abcdefg", key420 = "abcdefg", key421 = "abcdefg", key422 = "abcdefg", key423 = "abcdefg", key424 = "abcdefg", key425 = "abcdefg", key426 = "abcdefg", key427 = "abcdefg", key428 = "abcdefg", key429 = "abcdefg", key430 = "abcdefg", key431 = "abcdefg", key432 = "abcdefg", key433 = "abcdefg", key434 = "abcdefg", key435 = "abcdefg", key436 = "abcdefg", key437 = "abcdefg", key438 = "abcdefg", key439 = "abcdefg", key440 = "abcdefg", key441 = "abcdefg", key442 = "abcdefg", key443 = "abcdefg", key444 = "abcdefg", key445 = "abcdefg", key446 = "abcdefg", key447 = "abcdefg", key448 = "abcdefg", key449 = "abcdefg", key450 = "abcdefg", key451 = "abcdefg", key452 = "abcdefg", key453 = "abcdefg", key454 = "abcdefg", key455 = "abcdefg", key456 = "abcdefg", key457 = "abcdefg", key458 = "abcdefg", key459 = "abcdefg", key460 = "abcdefg", key461 = "abcdefg", key462 = "abcdefg", key463 = "abcdefg", key464 = "abcdefg", key465 = "abcdefg", key466 = "abcdefg", key467 = "abcdefg", key468 = "abcdefg", key469 = "abcdefg", key470 = "abcdefg", key471 = "abcdefg", key472 = "abcdefg", key473 = "abcdefg", key474 = "abcdefg", key475 = "abcdefg", key476 = "abcdefg", key477 = "abcdefg", key478 = "abcdefg", key479 = "abcdefg", key480 = "abcdefg", key481 = "abcdefg", key482 = "abcdefg", key483 = "abcdefg", key484 = "abcdefg", key485 = "abcdefg", key486 = "abcdefg", key487 = "abcdefg", key488 = "abcdefg", key489 = "abcdefg", key490 = "abcdefg", key491 = "abcdefg", key492 = "abcdefg", key493 = "abcdefg", key494 = "abcdefg", key495 = "abcdefg", key496 = "abcdefg", key497 = "abcdefg", key498 = "abcdefg", key499 = "abcdefg", key500 = "abcdefg", key501 = "abcdefg", key502 = "abcdefg", key503 = "abcdefg", key504 = "abcdefg", key505 = "abcdefg", key506 = "abcdefg", key507 = "abcdefg", key508 = "abcdefg", key509 = "abcdefg", key510 = "abcdefg", key511 = "abcdefg", key512 = "abcdefg", key513 = "abcdefg", key514 = "abcdefg", key515 = "abcdefg", key516 = "abcdefg", key517 = "abcdefg", key518 = "abcdefg", key519 = "abcdefg", key520 = "abcdefg", key521 = "abcdefg", key522 = "abcdefg", key523 = "abcdefg", key524 = "abcdefg", key525 = "abcdefg", key526 = "abcdefg", key527 = "abcdefg", key528 = "abcdefg", key529 = "abcdefg", key530 = "abcdefg", key531 = "abcdefg", key532 = "abcdefg", key533 = "abcdefg", key534 = "abcdefg", key535 = "abcdefg", key536 = "abcdefg", key537 = "abcdefg", key538 = "abcdefg", key539 = "abcdefg", key540 = "abcdefg", key541 = "abcdefg", key542 = "abcdefg", key543 = "abcdefg", key544 = "abcdefg", key545 = "abcdefg", key546 = "abcdefg", key547 = "abcdefg", key548 = "abcdefg", key549 = "abcdefg", key550 = "abcdefg", key551 = "abcdefg", key552 = "abcdefg", key553 = "abcdefg", key554 = "abcdefg", key555 = "abcdefg", key556 = "abcdefg", key557 = "abcdefg", key558 = "abcdefg", key559 = "abcdefg", key560 = "abcdefg", key561 = "abcdefg", key562 = "abcdefg", key563 = "abcdefg", key564 = "abcdefg", key565 = "abcdefg", key566 = "abcdefg", key567 = "abcdefg", key568 = "abcdefg", key569 = "abcdefg", key570 = "abcdefg", key571 = "abcdefg", key572 = "abcdefg", key573 = "abcdefg", key574 = "abcdefg", key575 = "abcdefg", key576 = "abcdefg", key577 = "abcdefg", key578 = "abcdefg", key579 = "abcdefg", key580 = "abcdefg", key581 = "abcdefg", key582 = "abcdefg", key583 = "abcdefg", key584 = "abcdefg", key585 = "abcdefg", key586 = "abcdefg", key587 = "abcdefg", key588 = "abcdefg", key589 = "abcdefg", key590 = "abcdefg", key591 = "abcdefg", key592 = "abcdefg", key593 = "abcdefg", key594 = "abcdefg", key595 = "abcdefg", key596 = "abcdefg", key597 = "abcdefg", key598 = "abcdefg", key599 = "abcdefg", key600 = "abcdefg", key601 = "abcdefg", key602 = "abcdefg", key603 = "abcdefg", key604 = "abcdefg", key605 = "abcdefg", key606 = "abcdefg", key607 = "abcdefg", key608 = "abcdefg", key609 = "abcdefg", key610 = "abcdefg", key611 = "abcdefg", key612 = "abcdefg", key613 = "abcdefg", key614 = "abcdefg", key615 = "abcdefg", key616 = "abcdefg", key617 = "abcdefg", key618 = "abcdefg", key619 = "abcdefg", key620 = "abcdefg", key621 = "abcdefg", key622 = "abcdefg", key623 = "abcdefg", key624 = "abcdefg", key625 = "abcdefg", key626 = "abcdefg", key627 = "abcdefg", key628 = "abcdefg", key629 = "abcdefg", key630 = "abcdefg", key631 = "abcdefg", key632 = "abcdefg", key633 = "abcdefg", key634 = "abcdefg", key635 = "abcdefg", key636 = "abcdefg", key637 = "abcdefg", key638 = "abcdefg", key639 = "abcdefg", key640 = "abcdefg", key641 = "abcdefg", key642 = "abcdefg", key643 = "abcdefg", key644 = "abcdefg", key645 = "abcdefg", key646 = "abcdefg", key647 = "abcdefg", key648 = "abcdefg", key649 = "abcdefg", key650 = "abcdefg", key651 = "abcdefg", key652 = "abcdefg", key653 = "abcdefg", key654 = "abcdefg", key655 = "abcdefg", key656 = "abcdefg", key657 = "abcdefg", key658 = "abcdefg", key659 = "abcdefg", key660 = "abcdefg", key661 = "abcdefg", key662 = "abcdefg", key663 = "abcdefg", key664 = "abcdefg", key665 = "abcdefg", key666 = "abcdefg", key667 = "abcdefg", key668 = "abcdefg", key669 = "abcdefg", key670 = "abcdefg", key671 = "abcdefg", key672 = "abcdefg", key673 = "abcdefg", key674 = "abcdefg", key675 = "abcdefg", key676 = "abcdefg", key677 = "abcdefg", key678 = "abcdefg", key679 = "abcdefg", key680 = "abcdefg", key681 = "abcdefg", key682 = "abcdefg", key683 = "abcdefg", key684 = "abcdefg", key685 = "abcdefg", key686 = "abcdefg", key687 = "abcdefg", key688 = "abcdefg", key689 = "abcdefg", key690 = "abcdefg", key691 = "abcdefg", key692 = "abcdefg", key693 = "abcdefg", key694 = "abcdefg", key695 = "abcdefg", key696 = "abcdefg", key697 = "abcdefg", key698 = "abcdefg", key699 = "abcdefg", key700 = "abcdefg", key701 = "abcdefg", key702 = "abcdefg", key703 = "abcdefg", key704 = "abcdefg", key705 = "abcdefg", key706 = "abcdefg", key707 = "abcdefg", key708 = "abcdefg", key709 = "abcdefg", key710 = "abcdefg", key711 = "abcdefg", key712 = "abcdefg", key713 = "abcdefg", key714 = "abcdefg", key715 = "abcdefg", key716 = "abcdefg", key717 = "abcdefg", key718 = "abcdefg", key719 = "abcdefg", key720 = "abcdefg", key721 = "abcdefg", key722 = "abcdefg", key723 = "abcdefg", key724 = "abcdefg", key725 = "abcdefg", key726 = "abcdefg", key727 = "abcdefg", key728 = "abcdefg", key729 = "abcdefg", key730 = "abcdefg", key731 = "abcdefg", key732 = "abcdefg", key733 = "abcdefg", key734 = "abcdefg", key735 = "abcdefg", key736 = "abcdefg", key737 = "abcdefg", key738 = "abcdefg", key739 = "abcdefg", key740 = "abcdefg", key741 = "abcdefg", key742 = "abcdefg", key743 = "abcdefg", key744 = "abcdefg", key745 = "abcdefg", key746 = "abcdefg", key747 = "abcdefg", key748 = "abcdefg", key749 = "abcdefg", key750 = "abcdefg", key751 = "abcdefg", key752 = "abcdefg", key753 = "abcdefg", key754 = "abcdefg", key755 = "abcdefg", key756 = "abcdefg", key757 = "abcdefg", key758 = "abcdefg", key759 = "abcdefg", key760 = "abcdefg", key761 = "abcdefg", key762 = "abcdefg", key763 = "abcdefg", key764 = "abcdefg", key765 = "abcdefg", key766 = "abcdefg", key767 = "abcdefg", key768 = "abcdefg", key769 = "abcdefg", key770 = "abcdefg", key771 = "abcdefg", key772 = "abcdefg", key773 = "abcdefg", key774 = "abcdefg", key775 = "abcdefg", key776 = "abcdefg", key777 = "abcdefg", key778 = "abcdefg", key779 = "abcdefg", key780 = "abcdefg", key781 = "abcdefg", key782 = "abcdefg", key783 = "abcdefg", key784 = "abcdefg", key785 = "abcdefg", key786 = "abcdefg", key787 = "abcdefg", key788 = "abcdefg", key789 = "abcdefg", key790 = "abcdefg", key791 = "abcdefg", key792 = "abcdefg", key793 = "abcdefg", key794 = "abcdefg", key795 = "abcdefg", key796 = "abcdefg", key797 = "abcdefg", key798 = "abcdefg", key799 = "abcdefg", key800 = "abcdefg", key801 = "abcdefg", key802 = "abcdefg", key803 = "abcdefg", key804 = "abcdefg", key805 = "abcdefg", key806 = "abcdefg", key807 = "abcdefg", key808 = "abcdefg", key809 = "abcdefg", key810 = "abcdefg", key811 = "abcdefg", key812 = "abcdefg", key813 = "abcdefg", key814 = "abcdefg", key815 = "abcdefg", key816 = "abcdefg", key817 = "abcdefg", key818 = "abcdefg", key819 = "abcdefg", key820 = "abcdefg", key821 = "abcdefg", key822 = "abcdefg", key823 = "abcdefg", key824 = "abcdefg", key825 = "abcdefg", key826 = "abcdefg", key827 = "abcdefg", key828 = "abcdefg", key829 = "abcdefg", key830 = "abcdefg", key831 = "abcdefg", key832 = "abcdefg", key833 = "abcdefg", key834 = "abcdefg", key835 = "abcdefg", key836 = "abcdefg", key837 = "abcdefg", key838 = "abcdefg", key839 = "abcdefg", key840 = "abcdefg", key841 = "abcdefg", key842 = "abcdefg", key843 = "abcdefg", key844 = "abcdefg", key845 = "abcdefg", key846 = "abcdefg", key847 = "abcdefg", key848 = "abcdefg", key849 = "abcdefg", key850 = "abcdefg", key851 = "abcdefg", key852 = "abcdefg", key853 = "abcdefg", key854 = "abcdefg", key855 = "abcdefg", key856 = "abcdefg", key857 = "abcdefg", key858 = "abcdefg", key859 = "abcdefg", key860 = "abcdefg", key861 = "abcdefg", key862 = "abcdefg", key863 = "abcdefg", key864 = "abcdefg", key865 = "abcdefg", key866 = "abcdefg", key867 = "abcdefg", key868 = "abcdefg", key869 = "abcdefg", key870 = "abcdefg", key871 = "abcdefg", key872 = "abcdefg", key873 = "abcdefg", key874 = "abcdefg", key875 = "abcdefg", key876 = "abcdefg", key877 = "abcdefg", key878 = "abcdefg", key879 = "abcdefg", key880 = "abcdefg", key881 = "abcdefg", key882 = "abcdefg", key883 = "abcdefg", key884 = "abcdefg", key885 = "abcdefg", key886 = "abcdefg", key887 = "abcdefg", key888 = "abcdefg", key889 = "abcdefg", key890 = "abcdefg", key891 = "abcdefg", key892 = "abcdefg", key893 = "abcdefg", key894 = "abcdefg", key895 = "abcdefg", key896 = "abcdefg", key897 = "abcdefg", key898 = "abcdefg", key899 = "abcdefg", key900 = "abcdefg", key901 = "abcdefg", key902 = "abcdefg", key903 = "abcdefg", key904 = "abcdefg", key905 = "abcdefg", key906 = "abcdefg", key907 = "abcdefg", key908 = "abcdefg", key909 = "abcdefg", key910 = "abcdefg", key911 = "abcdefg", key912 = "abcdefg", key913 = "abcdefg", key914 = "abcdefg", key915 = "abcdefg", key916 = "abcdefg", key917 = "abcdefg", key918 = "abcdefg", key919 = "abcdefg", key920 = "abcdefg", key921 = "abcdefg", key922 = "abcdefg", key923 = "abcdefg", key924 = "abcdefg", key925 = "abcdefg", key926 = "abcdefg", key927 = "abcdefg", key928 = "abcdefg", key929 = "abcdefg", key930 = "abcdefg", key931 = "abcdefg", key932 = "abcdefg", key933 = "abcdefg", key934 = "abcdefg", key935 = "abcdefg", key936 = "abcdefg", key937 = "abcdefg", key938 = "abcdefg", key939 = "abcdefg", key940 = "abcdefg", key941 = "abcdefg", key942 = "abcdefg", key943 = "abcdefg", key944 = "abcdefg", key945 = "abcdefg", key946 = "abcdefg", key947 = "abcdefg", key948 = "abcdefg", key949 = "abcdefg", key950 = "abcdefg", key951 = "abcdefg", key952 = "abcdefg", key953 = "abcdefg", key954 = "abcdefg", key955 = "abcdefg", key956 = "abcdefg", key957 = "abcdefg", key958 = "abcdefg", key959 = "abcdefg", key960 = "abcdefg", key961 = "abcdefg", key962 = "abcdefg", key963 = "abcdefg", key964 = "abcdefg", key965 = "abcdefg", key966 = "abcdefg", key967 = "abcdefg", key968 = "abcdefg", key969 = "abcdefg", key970 = "abcdefg", key971 = "abcdefg", key972 = "abcdefg", key973 = "abcdefg", key974 = "abcdefg", key975 = "abcdefg", key976 = "abcdefg", key977 = "abcdefg", key978 = "abcdefg", key979 = "abcdefg", key980 = "abcdefg", key981 = "abcdefg", key982 = "abcdefg", key983 = "abcdefg", key984 = "abcdefg", key985 = "abcdefg", key986 = "abcdefg", key987 = "abcdefg", key988 = "abcdefg", key989 = "abcdefg", key990 = "abcdefg", key991 = "abcdefg", key992 = "abcdefg", key993 = "abcdefg", key994 = "abcdefg", key995 = "abcdefg", key996 = "abcdefg", key997 = "abcdefg", key998 = "abcdefg", key999 = "abcdefg", key1000 = "abcdefg", end = true} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3855333 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-table-inline-1000.yaml0000644000000000000000000004276700000000000022024 0ustar00key: key1: abcdefg key2: abcdefg key3: abcdefg key4: abcdefg key5: abcdefg key6: abcdefg key7: abcdefg key8: abcdefg key9: abcdefg key10: abcdefg key11: abcdefg key12: abcdefg key13: abcdefg key14: abcdefg key15: abcdefg key16: abcdefg key17: abcdefg key18: abcdefg key19: abcdefg key20: abcdefg key21: abcdefg key22: abcdefg key23: abcdefg key24: abcdefg key25: abcdefg key26: abcdefg key27: abcdefg key28: abcdefg key29: abcdefg key30: abcdefg key31: abcdefg key32: abcdefg key33: abcdefg key34: abcdefg key35: abcdefg key36: abcdefg key37: abcdefg key38: abcdefg key39: abcdefg key40: abcdefg key41: abcdefg key42: abcdefg key43: abcdefg key44: abcdefg key45: abcdefg key46: abcdefg key47: abcdefg key48: abcdefg key49: abcdefg key50: abcdefg key51: abcdefg key52: abcdefg key53: abcdefg key54: abcdefg key55: abcdefg key56: abcdefg key57: abcdefg key58: abcdefg key59: abcdefg key60: abcdefg key61: abcdefg key62: abcdefg key63: abcdefg key64: abcdefg key65: abcdefg key66: abcdefg key67: abcdefg key68: abcdefg key69: abcdefg key70: abcdefg key71: abcdefg key72: abcdefg key73: abcdefg key74: abcdefg key75: abcdefg key76: abcdefg key77: abcdefg key78: abcdefg key79: abcdefg key80: abcdefg key81: abcdefg key82: abcdefg key83: abcdefg key84: abcdefg key85: abcdefg key86: abcdefg key87: abcdefg key88: abcdefg key89: abcdefg key90: abcdefg key91: abcdefg key92: abcdefg key93: abcdefg key94: abcdefg key95: abcdefg key96: abcdefg key97: abcdefg key98: abcdefg key99: abcdefg key100: abcdefg key101: abcdefg key102: abcdefg key103: abcdefg key104: abcdefg key105: abcdefg key106: abcdefg key107: abcdefg key108: abcdefg key109: abcdefg key110: abcdefg key111: abcdefg key112: abcdefg key113: abcdefg key114: abcdefg key115: abcdefg key116: abcdefg key117: abcdefg key118: abcdefg key119: abcdefg key120: abcdefg key121: abcdefg key122: abcdefg key123: abcdefg key124: abcdefg key125: abcdefg key126: abcdefg key127: abcdefg key128: abcdefg key129: abcdefg key130: abcdefg key131: abcdefg key132: abcdefg key133: abcdefg key134: abcdefg key135: abcdefg key136: abcdefg key137: abcdefg key138: abcdefg key139: abcdefg key140: abcdefg key141: abcdefg key142: abcdefg key143: abcdefg key144: abcdefg key145: abcdefg key146: abcdefg key147: abcdefg key148: abcdefg key149: abcdefg key150: abcdefg key151: abcdefg key152: abcdefg key153: abcdefg key154: abcdefg key155: abcdefg key156: abcdefg key157: abcdefg key158: abcdefg key159: abcdefg key160: abcdefg key161: abcdefg key162: abcdefg key163: abcdefg key164: abcdefg key165: abcdefg key166: abcdefg key167: abcdefg key168: abcdefg key169: abcdefg key170: abcdefg key171: abcdefg key172: abcdefg key173: abcdefg key174: abcdefg key175: abcdefg key176: abcdefg key177: abcdefg key178: abcdefg key179: abcdefg key180: abcdefg key181: abcdefg key182: abcdefg key183: abcdefg key184: abcdefg key185: abcdefg key186: abcdefg key187: abcdefg key188: abcdefg key189: abcdefg key190: abcdefg key191: abcdefg key192: abcdefg key193: abcdefg key194: abcdefg key195: abcdefg key196: abcdefg key197: abcdefg key198: abcdefg key199: abcdefg key200: abcdefg key201: abcdefg key202: abcdefg key203: abcdefg key204: abcdefg key205: abcdefg key206: abcdefg key207: abcdefg key208: abcdefg key209: abcdefg key210: abcdefg key211: abcdefg key212: abcdefg key213: abcdefg key214: abcdefg key215: abcdefg key216: abcdefg key217: abcdefg key218: abcdefg key219: abcdefg key220: abcdefg key221: abcdefg key222: abcdefg key223: abcdefg key224: abcdefg key225: abcdefg key226: abcdefg key227: abcdefg key228: abcdefg key229: abcdefg key230: abcdefg key231: abcdefg key232: abcdefg key233: abcdefg key234: abcdefg key235: abcdefg key236: abcdefg key237: abcdefg key238: abcdefg key239: abcdefg key240: abcdefg key241: abcdefg key242: abcdefg key243: abcdefg key244: abcdefg key245: abcdefg key246: abcdefg key247: abcdefg key248: abcdefg key249: abcdefg key250: abcdefg key251: abcdefg key252: abcdefg key253: abcdefg key254: abcdefg key255: abcdefg key256: abcdefg key257: abcdefg key258: abcdefg key259: abcdefg key260: abcdefg key261: abcdefg key262: abcdefg key263: abcdefg key264: abcdefg key265: abcdefg key266: abcdefg key267: abcdefg key268: abcdefg key269: abcdefg key270: abcdefg key271: abcdefg key272: abcdefg key273: abcdefg key274: abcdefg key275: abcdefg key276: abcdefg key277: abcdefg key278: abcdefg key279: abcdefg key280: abcdefg key281: abcdefg key282: abcdefg key283: abcdefg key284: abcdefg key285: abcdefg key286: abcdefg key287: abcdefg key288: abcdefg key289: abcdefg key290: abcdefg key291: abcdefg key292: abcdefg key293: abcdefg key294: abcdefg key295: abcdefg key296: abcdefg key297: abcdefg key298: abcdefg key299: abcdefg key300: abcdefg key301: abcdefg key302: abcdefg key303: abcdefg key304: abcdefg key305: abcdefg key306: abcdefg key307: abcdefg key308: abcdefg key309: abcdefg key310: abcdefg key311: abcdefg key312: abcdefg key313: abcdefg key314: abcdefg key315: abcdefg key316: abcdefg key317: abcdefg key318: abcdefg key319: abcdefg key320: abcdefg key321: abcdefg key322: abcdefg key323: abcdefg key324: abcdefg key325: abcdefg key326: abcdefg key327: abcdefg key328: abcdefg key329: abcdefg key330: abcdefg key331: abcdefg key332: abcdefg key333: abcdefg key334: abcdefg key335: abcdefg key336: abcdefg key337: abcdefg key338: abcdefg key339: abcdefg key340: abcdefg key341: abcdefg key342: abcdefg key343: abcdefg key344: abcdefg key345: abcdefg key346: abcdefg key347: abcdefg key348: abcdefg key349: abcdefg key350: abcdefg key351: abcdefg key352: abcdefg key353: abcdefg key354: abcdefg key355: abcdefg key356: abcdefg key357: abcdefg key358: abcdefg key359: abcdefg key360: abcdefg key361: abcdefg key362: abcdefg key363: abcdefg key364: abcdefg key365: abcdefg key366: abcdefg key367: abcdefg key368: abcdefg key369: abcdefg key370: abcdefg key371: abcdefg key372: abcdefg key373: abcdefg key374: abcdefg key375: abcdefg key376: abcdefg key377: abcdefg key378: abcdefg key379: abcdefg key380: abcdefg key381: abcdefg key382: abcdefg key383: abcdefg key384: abcdefg key385: abcdefg key386: abcdefg key387: abcdefg key388: abcdefg key389: abcdefg key390: abcdefg key391: abcdefg key392: abcdefg key393: abcdefg key394: abcdefg key395: abcdefg key396: abcdefg key397: abcdefg key398: abcdefg key399: abcdefg key400: abcdefg key401: abcdefg key402: abcdefg key403: abcdefg key404: abcdefg key405: abcdefg key406: abcdefg key407: abcdefg key408: abcdefg key409: abcdefg key410: abcdefg key411: abcdefg key412: abcdefg key413: abcdefg key414: abcdefg key415: abcdefg key416: abcdefg key417: abcdefg key418: abcdefg key419: abcdefg key420: abcdefg key421: abcdefg key422: abcdefg key423: abcdefg key424: abcdefg key425: abcdefg key426: abcdefg key427: abcdefg key428: abcdefg key429: abcdefg key430: abcdefg key431: abcdefg key432: abcdefg key433: abcdefg key434: abcdefg key435: abcdefg key436: abcdefg key437: abcdefg key438: abcdefg key439: abcdefg key440: abcdefg key441: abcdefg key442: abcdefg key443: abcdefg key444: abcdefg key445: abcdefg key446: abcdefg key447: abcdefg key448: abcdefg key449: abcdefg key450: abcdefg key451: abcdefg key452: abcdefg key453: abcdefg key454: abcdefg key455: abcdefg key456: abcdefg key457: abcdefg key458: abcdefg key459: abcdefg key460: abcdefg key461: abcdefg key462: abcdefg key463: abcdefg key464: abcdefg key465: abcdefg key466: abcdefg key467: abcdefg key468: abcdefg key469: abcdefg key470: abcdefg key471: abcdefg key472: abcdefg key473: abcdefg key474: abcdefg key475: abcdefg key476: abcdefg key477: abcdefg key478: abcdefg key479: abcdefg key480: abcdefg key481: abcdefg key482: abcdefg key483: abcdefg key484: abcdefg key485: abcdefg key486: abcdefg key487: abcdefg key488: abcdefg key489: abcdefg key490: abcdefg key491: abcdefg key492: abcdefg key493: abcdefg key494: abcdefg key495: abcdefg key496: abcdefg key497: abcdefg key498: abcdefg key499: abcdefg key500: abcdefg key501: abcdefg key502: abcdefg key503: abcdefg key504: abcdefg key505: abcdefg key506: abcdefg key507: abcdefg key508: abcdefg key509: abcdefg key510: abcdefg key511: abcdefg key512: abcdefg key513: abcdefg key514: abcdefg key515: abcdefg key516: abcdefg key517: abcdefg key518: abcdefg key519: abcdefg key520: abcdefg key521: abcdefg key522: abcdefg key523: abcdefg key524: abcdefg key525: abcdefg key526: abcdefg key527: abcdefg key528: abcdefg key529: abcdefg key530: abcdefg key531: abcdefg key532: abcdefg key533: abcdefg key534: abcdefg key535: abcdefg key536: abcdefg key537: abcdefg key538: abcdefg key539: abcdefg key540: abcdefg key541: abcdefg key542: abcdefg key543: abcdefg key544: abcdefg key545: abcdefg key546: abcdefg key547: abcdefg key548: abcdefg key549: abcdefg key550: abcdefg key551: abcdefg key552: abcdefg key553: abcdefg key554: abcdefg key555: abcdefg key556: abcdefg key557: abcdefg key558: abcdefg key559: abcdefg key560: abcdefg key561: abcdefg key562: abcdefg key563: abcdefg key564: abcdefg key565: abcdefg key566: abcdefg key567: abcdefg key568: abcdefg key569: abcdefg key570: abcdefg key571: abcdefg key572: abcdefg key573: abcdefg key574: abcdefg key575: abcdefg key576: abcdefg key577: abcdefg key578: abcdefg key579: abcdefg key580: abcdefg key581: abcdefg key582: abcdefg key583: abcdefg key584: abcdefg key585: abcdefg key586: abcdefg key587: abcdefg key588: abcdefg key589: abcdefg key590: abcdefg key591: abcdefg key592: abcdefg key593: abcdefg key594: abcdefg key595: abcdefg key596: abcdefg key597: abcdefg key598: abcdefg key599: abcdefg key600: abcdefg key601: abcdefg key602: abcdefg key603: abcdefg key604: abcdefg key605: abcdefg key606: abcdefg key607: abcdefg key608: abcdefg key609: abcdefg key610: abcdefg key611: abcdefg key612: abcdefg key613: abcdefg key614: abcdefg key615: abcdefg key616: abcdefg key617: abcdefg key618: abcdefg key619: abcdefg key620: abcdefg key621: abcdefg key622: abcdefg key623: abcdefg key624: abcdefg key625: abcdefg key626: abcdefg key627: abcdefg key628: abcdefg key629: abcdefg key630: abcdefg key631: abcdefg key632: abcdefg key633: abcdefg key634: abcdefg key635: abcdefg key636: abcdefg key637: abcdefg key638: abcdefg key639: abcdefg key640: abcdefg key641: abcdefg key642: abcdefg key643: abcdefg key644: abcdefg key645: abcdefg key646: abcdefg key647: abcdefg key648: abcdefg key649: abcdefg key650: abcdefg key651: abcdefg key652: abcdefg key653: abcdefg key654: abcdefg key655: abcdefg key656: abcdefg key657: abcdefg key658: abcdefg key659: abcdefg key660: abcdefg key661: abcdefg key662: abcdefg key663: abcdefg key664: abcdefg key665: abcdefg key666: abcdefg key667: abcdefg key668: abcdefg key669: abcdefg key670: abcdefg key671: abcdefg key672: abcdefg key673: abcdefg key674: abcdefg key675: abcdefg key676: abcdefg key677: abcdefg key678: abcdefg key679: abcdefg key680: abcdefg key681: abcdefg key682: abcdefg key683: abcdefg key684: abcdefg key685: abcdefg key686: abcdefg key687: abcdefg key688: abcdefg key689: abcdefg key690: abcdefg key691: abcdefg key692: abcdefg key693: abcdefg key694: abcdefg key695: abcdefg key696: abcdefg key697: abcdefg key698: abcdefg key699: abcdefg key700: abcdefg key701: abcdefg key702: abcdefg key703: abcdefg key704: abcdefg key705: abcdefg key706: abcdefg key707: abcdefg key708: abcdefg key709: abcdefg key710: abcdefg key711: abcdefg key712: abcdefg key713: abcdefg key714: abcdefg key715: abcdefg key716: abcdefg key717: abcdefg key718: abcdefg key719: abcdefg key720: abcdefg key721: abcdefg key722: abcdefg key723: abcdefg key724: abcdefg key725: abcdefg key726: abcdefg key727: abcdefg key728: abcdefg key729: abcdefg key730: abcdefg key731: abcdefg key732: abcdefg key733: abcdefg key734: abcdefg key735: abcdefg key736: abcdefg key737: abcdefg key738: abcdefg key739: abcdefg key740: abcdefg key741: abcdefg key742: abcdefg key743: abcdefg key744: abcdefg key745: abcdefg key746: abcdefg key747: abcdefg key748: abcdefg key749: abcdefg key750: abcdefg key751: abcdefg key752: abcdefg key753: abcdefg key754: abcdefg key755: abcdefg key756: abcdefg key757: abcdefg key758: abcdefg key759: abcdefg key760: abcdefg key761: abcdefg key762: abcdefg key763: abcdefg key764: abcdefg key765: abcdefg key766: abcdefg key767: abcdefg key768: abcdefg key769: abcdefg key770: abcdefg key771: abcdefg key772: abcdefg key773: abcdefg key774: abcdefg key775: abcdefg key776: abcdefg key777: abcdefg key778: abcdefg key779: abcdefg key780: abcdefg key781: abcdefg key782: abcdefg key783: abcdefg key784: abcdefg key785: abcdefg key786: abcdefg key787: abcdefg key788: abcdefg key789: abcdefg key790: abcdefg key791: abcdefg key792: abcdefg key793: abcdefg key794: abcdefg key795: abcdefg key796: abcdefg key797: abcdefg key798: abcdefg key799: abcdefg key800: abcdefg key801: abcdefg key802: abcdefg key803: abcdefg key804: abcdefg key805: abcdefg key806: abcdefg key807: abcdefg key808: abcdefg key809: abcdefg key810: abcdefg key811: abcdefg key812: abcdefg key813: abcdefg key814: abcdefg key815: abcdefg key816: abcdefg key817: abcdefg key818: abcdefg key819: abcdefg key820: abcdefg key821: abcdefg key822: abcdefg key823: abcdefg key824: abcdefg key825: abcdefg key826: abcdefg key827: abcdefg key828: abcdefg key829: abcdefg key830: abcdefg key831: abcdefg key832: abcdefg key833: abcdefg key834: abcdefg key835: abcdefg key836: abcdefg key837: abcdefg key838: abcdefg key839: abcdefg key840: abcdefg key841: abcdefg key842: abcdefg key843: abcdefg key844: abcdefg key845: abcdefg key846: abcdefg key847: abcdefg key848: abcdefg key849: abcdefg key850: abcdefg key851: abcdefg key852: abcdefg key853: abcdefg key854: abcdefg key855: abcdefg key856: abcdefg key857: abcdefg key858: abcdefg key859: abcdefg key860: abcdefg key861: abcdefg key862: abcdefg key863: abcdefg key864: abcdefg key865: abcdefg key866: abcdefg key867: abcdefg key868: abcdefg key869: abcdefg key870: abcdefg key871: abcdefg key872: abcdefg key873: abcdefg key874: abcdefg key875: abcdefg key876: abcdefg key877: abcdefg key878: abcdefg key879: abcdefg key880: abcdefg key881: abcdefg key882: abcdefg key883: abcdefg key884: abcdefg key885: abcdefg key886: abcdefg key887: abcdefg key888: abcdefg key889: abcdefg key890: abcdefg key891: abcdefg key892: abcdefg key893: abcdefg key894: abcdefg key895: abcdefg key896: abcdefg key897: abcdefg key898: abcdefg key899: abcdefg key900: abcdefg key901: abcdefg key902: abcdefg key903: abcdefg key904: abcdefg key905: abcdefg key906: abcdefg key907: abcdefg key908: abcdefg key909: abcdefg key910: abcdefg key911: abcdefg key912: abcdefg key913: abcdefg key914: abcdefg key915: abcdefg key916: abcdefg key917: abcdefg key918: abcdefg key919: abcdefg key920: abcdefg key921: abcdefg key922: abcdefg key923: abcdefg key924: abcdefg key925: abcdefg key926: abcdefg key927: abcdefg key928: abcdefg key929: abcdefg key930: abcdefg key931: abcdefg key932: abcdefg key933: abcdefg key934: abcdefg key935: abcdefg key936: abcdefg key937: abcdefg key938: abcdefg key939: abcdefg key940: abcdefg key941: abcdefg key942: abcdefg key943: abcdefg key944: abcdefg key945: abcdefg key946: abcdefg key947: abcdefg key948: abcdefg key949: abcdefg key950: abcdefg key951: abcdefg key952: abcdefg key953: abcdefg key954: abcdefg key955: abcdefg key956: abcdefg key957: abcdefg key958: abcdefg key959: abcdefg key960: abcdefg key961: abcdefg key962: abcdefg key963: abcdefg key964: abcdefg key965: abcdefg key966: abcdefg key967: abcdefg key968: abcdefg key969: abcdefg key970: abcdefg key971: abcdefg key972: abcdefg key973: abcdefg key974: abcdefg key975: abcdefg key976: abcdefg key977: abcdefg key978: abcdefg key979: abcdefg key980: abcdefg key981: abcdefg key982: abcdefg key983: abcdefg key984: abcdefg key985: abcdefg key986: abcdefg key987: abcdefg key988: abcdefg key989: abcdefg key990: abcdefg key991: abcdefg key992: abcdefg key993: abcdefg key994: abcdefg key995: abcdefg key996: abcdefg key997: abcdefg key998: abcdefg key999: abcdefg key1000: abcdefg end: true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3855333 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-table-inline-nested-1000.toml0000644000000000000000000001751200000000000023303 0ustar00key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {key = {}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3855333 tomlkit-0.9.2/tests/toml-spec-tests/values/qa-table-inline-nested-1000.yaml0000644000000000000000000365467100000000000023312 0ustar00key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: key: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-1.toml0000644000000000000000000000002700000000000020700 0ustar00integers = [ 1, 2, 3 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-1.yaml0000644000000000000000000000002600000000000020666 0ustar00integers: [ 1, 2, 3 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-2.toml0000644000000000000000000000004600000000000020702 0ustar00colors = [ "red", "yellow", "green" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-2.yaml0000644000000000000000000000004500000000000020670 0ustar00colors: [ "red", "yellow", "green" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-3.toml0000644000000000000000000000005600000000000020704 0ustar00nested_array_of_int = [ [ 1, 2 ], [3, 4, 5] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-3.yaml0000644000000000000000000000005500000000000020672 0ustar00nested_array_of_int: [ [ 1, 2 ], [3, 4, 5] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-4.toml0000644000000000000000000000010300000000000020676 0ustar00string_array = [ "all", 'strings', """are the same""", '''type'''] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-4.yaml0000644000000000000000000000007300000000000020673 0ustar00string_array: [ "all", "strings", "are the same", "type" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-5.toml0000644000000000000000000000006300000000000020704 0ustar00nested_mixed_array = [ [ 1, 2 ], ["a", "b", "c"] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-5.yaml0000644000000000000000000000006200000000000020672 0ustar00nested_mixed_array: [ [ 1, 2 ], ["a", "b", "c"] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-7.toml0000644000000000000000000000003200000000000020702 0ustar00integers2 = [ 1, 2, 3 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-7.yaml0000644000000000000000000000003100000000000020670 0ustar00integers2: [ 1, 2, 3 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-8.toml0000644000000000000000000000004700000000000020711 0ustar00integers3 = [ 1, 2, # this is ok ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-8.yaml0000644000000000000000000000004600000000000020677 0ustar00integers3: [ 1, 2, # this is ok ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-mixed-number-types.toml0000644000000000000000000000004500000000000024276 0ustar00numbers = [ 0.1, 0.2, 0.5, 1, 2, 5 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-mixed-number-types.yaml0000644000000000000000000000004400000000000024264 0ustar00numbers: [ 0.1, 0.2, 0.5, 1, 2, 5 ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-more-mixed-types.toml0000644000000000000000000000021200000000000023744 0ustar00contributors = [ "Foo Bar ", { name = "Baz Qux", email = "bazqux@example.com", url = "https://example.com/bazqux" } ]././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-more-mixed-types.yaml0000644000000000000000000000020700000000000023737 0ustar00contributors: [ "Foo Bar ", { name: "Baz Qux", email: "bazqux@example.com", url: "https://example.com/bazqux" } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-of-tables-1.toml0000644000000000000000000000016600000000000022556 0ustar00[[products]] name = "Hammer" sku = 738594937 [[products]] [[products]] name = "Nail" sku = 284758393 color = "gray" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-of-tables-1.yaml0000644000000000000000000000015100000000000022537 0ustar00products: [ {name: "Hammer", sku: 738594937}, {}, {name: "Nail", sku: 284758393, color: "gray" } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-of-tables-2.toml0000644000000000000000000000037400000000000022560 0ustar00[[fruit]] name = "apple" [fruit.physical] color = "red" shape = "round" [[fruit.variety]] name = "red delicious" [[fruit.variety]] name = "granny smith" [[fruit]] name = "banana" [[fruit.variety]] name = "plantain" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-of-tables-2.yaml0000644000000000000000000000041000000000000022536 0ustar00fruit: [ { name: "apple", physical: { color: "red", shape: "round" }, variety: [ { name: "red delicious" }, { name: "granny smith" } ] }, { name: "banana", variety: [ { name: "plantain" } ] } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-of-tables-3.toml0000644000000000000000000000015500000000000022556 0ustar00points = [ { x = 1, y = 2, z = 3 }, { x = 7, y = 8, z = 9 }, { x = 2, y = 4, z = 8 } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-array-of-tables-3.yaml0000644000000000000000000000014100000000000022540 0ustar00points: [ { x: 1, y: 2, z: 3 }, { x: 7, y: 8, z: 9 }, { x: 2, y: 4, z: 8 } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-boolean-1.toml0000644000000000000000000000001500000000000021176 0ustar00bool1 = true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-boolean-1.yaml0000644000000000000000000000001400000000000021164 0ustar00bool1: true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-boolean-2.toml0000644000000000000000000000001600000000000021200 0ustar00bool1 = false ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-boolean-2.yaml0000644000000000000000000000001500000000000021166 0ustar00bool1: false ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-case-sensitive.toml0000644000000000000000000000005600000000000022350 0ustar00# TOML is case sensitive. abc = 123 ABC = 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-case-sensitive.yaml0000644000000000000000000000002200000000000022330 0ustar00abc: 123 ABC: 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-comment-mid-array.toml0000644000000000000000000000017000000000000022750 0ustar00# eol commetns can go anywhere abc = [ # this is valid 123,#as is this 456 #so is this ]# and this # here too ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-comment-mid-array.yaml0000644000000000000000000000016700000000000022745 0ustar00# eol commetns can go anywhere abc: [ # this is valid 123,#as is this 456 #so is this ]# and this # here too ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-comment-mid-string.toml0000644000000000000000000000004400000000000023140 0ustar00another = "# This is not a comment" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-comment-mid-string.yaml0000644000000000000000000000004300000000000023126 0ustar00another: "# This is not a comment" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-comment-tab.toml0000644000000000000000000000020600000000000021631 0ustar00# This is a full-line comment with a tab in the middle key = "value" # This is a commen with a tab in the middle at the end of a line ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-comment-tab.yaml0000644000000000000000000000001500000000000021616 0ustar00key: "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-comment.toml0000644000000000000000000000012500000000000021065 0ustar00# This is a full-line comment key = "value" # This is a comment at the end of a line ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-comment.yaml0000644000000000000000000000012400000000000021053 0ustar00# This is a full-line comment key: "value" # This is a comment at the end of a line ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-date-local-1.json0000644000000000000000000000010100000000000021556 0ustar00{ "ld1": { "type": "date", "value": "1979-05-27" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-date-local-1.toml0000644000000000000000000000002100000000000021561 0ustar00ld1 = 1979-05-27 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-date-time-1.toml0000644000000000000000000000003400000000000021431 0ustar00odt1 = 1979-05-27T07:32:00Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-date-time-1.yaml0000644000000000000000000000003300000000000021417 0ustar00odt1: 1979-05-27T07:32:00Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-date-time-2.toml0000644000000000000000000000004100000000000021430 0ustar00odt2 = 1979-05-27T00:32:00-07:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-date-time-2.yaml0000644000000000000000000000004000000000000021416 0ustar00odt2: 1979-05-27T00:32:00-07:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-date-time-3.toml0000644000000000000000000000005000000000000021431 0ustar00odt3 = 1979-05-27T00:32:00.999999-07:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-date-time-3.yaml0000644000000000000000000000004700000000000021426 0ustar00odt3: 1979-05-27T00:32:00.999999-07:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-date-time-4.toml0000644000000000000000000000003400000000000021434 0ustar00odt4 = 1979-05-27 07:32:00Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-date-time-4.yaml0000644000000000000000000000003300000000000021422 0ustar00odt4: 1979-05-27 07:32:00Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-date-time-5.toml0000644000000000000000000000004000000000000021432 0ustar00odt5 = 1979-05-27T07:32:00.123Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-date-time-5.yaml0000644000000000000000000000003700000000000021427 0ustar00odt5: 1979-05-27T07:32:00.123Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-date-time-6.toml0000644000000000000000000000004100000000000021434 0ustar00odt6 = 1979-05-27T07:32:00.1239Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-date-time-6.yaml0000644000000000000000000000003700000000000021430 0ustar00odt6: 1979-05-27T07:32:00.123Z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-date-time-local-1.json0000644000000000000000000000013100000000000022515 0ustar00{ "ldt1": { "type": "datetime-local", "value": "1979-05-27T07:32:00.000" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-date-time-local-1.toml0000644000000000000000000000003300000000000022520 0ustar00ldt1 = 1979-05-27T07:32:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-date-time-local-2.json0000644000000000000000000000013100000000000022516 0ustar00{ "ldt2": { "type": "datetime-local", "value": "1979-05-27T00:32:00.999" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-date-time-local-2.toml0000644000000000000000000000004200000000000022521 0ustar00ldt2 = 1979-05-27T00:32:00.999999 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-dotted-keys-1.toml0000644000000000000000000000013400000000000022015 0ustar00name = "Orange" physical.color = "orange" physical.shape = "round" site."google.com" = true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-dotted-keys-1.yaml0000644000000000000000000000012700000000000022006 0ustar00name: "Orange" physical: color: "orange" shape: "round" site: "google.com": true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-dotted-keys-2.toml0000644000000000000000000000001500000000000022014 0ustar00a . b = 23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-dotted-keys-2.yaml0000644000000000000000000000001300000000000022001 0ustar00a: b: 23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-dotted-keys-3.toml0000644000000000000000000000001600000000000022016 0ustar00a . b = 23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-dotted-keys-3.yaml0000644000000000000000000000001300000000000022002 0ustar00a: b: 23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-empty-key-name-1.toml0000644000000000000000000000005100000000000022421 0ustar00"" = "blank" # VALID but discouraged ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-empty-key-name-1.yaml0000644000000000000000000000001400000000000022407 0ustar00"": "blank" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-empty-key-name-2.toml0000644000000000000000000000005100000000000022422 0ustar00'' = "blank" # VALID but discouraged ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-empty-key-name-2.yaml0000644000000000000000000000001400000000000022410 0ustar00"": "blank" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-extend-dotted-object-1.toml0000644000000000000000000000021300000000000023573 0ustar00# This makes the key "fruit" into a table. fruit.apple.smooth = true # So then you can add to the table "fruit" like so: fruit.orange = 2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-extend-dotted-object-1.yaml0000644000000000000000000000005500000000000023566 0ustar00fruit: apple: smooth: true orange: 2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-extend-dotted-object-2.toml0000644000000000000000000000023400000000000023577 0ustar00# VALID BUT DISCOURAGED apple.type = "fruit" orange.type = "fruit" apple.skin = "thin" orange.skin = "thick" apple.color = "red" orange.color = "orange" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-extend-dotted-object-2.yaml0000644000000000000000000000016000000000000023564 0ustar00apple: type: "fruit" skin: "thin" color: "red" orange: type: "fruit" skin: "thick" color: "orange" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-extend-dotted-object-3.toml0000644000000000000000000000022100000000000023574 0ustar00# RECOMMENDED apple.type = "fruit" apple.skin = "thin" apple.color = "red" orange.type = "fruit" orange.skin = "thick" orange.color = "orange" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-extend-dotted-object-3.yaml0000644000000000000000000000016000000000000023565 0ustar00apple: type: "fruit" skin: "thin" color: "red" orange: type: "fruit" skin: "thick" color: "orange" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-1.toml0000644000000000000000000000001400000000000020663 0ustar00flt1 = +1.0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-1.yaml0000644000000000000000000000001200000000000020650 0ustar00flt1: 1.0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-10.toml0000644000000000000000000000003700000000000020750 0ustar00sf1 = inf # positive infinity ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-10.yaml0000644000000000000000000000003700000000000020737 0ustar00sf1: .inf # positive infinity ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-11.toml0000644000000000000000000000003700000000000020751 0ustar00sf2 = +inf # positive infinity ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-11.yaml0000644000000000000000000000003700000000000020740 0ustar00sf2: .inf # positive infinity ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-12.toml0000644000000000000000000000003700000000000020752 0ustar00sf2 = -inf # negative infinity ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-12.yaml0000644000000000000000000000004000000000000020733 0ustar00sf2: -.inf # negative infinity ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-13.toml0000644000000000000000000000010200000000000020744 0ustar00sf4 = nan # actual sNaN/qNaN encoding is implementation specific ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-13.yaml0000644000000000000000000000010200000000000020733 0ustar00sf4: .NAN # actual sNaN/qNaN encoding is implementation specific ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-14.toml0000644000000000000000000000003300000000000020750 0ustar00sf5 = +nan # same as `nan` ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-14.yaml0000644000000000000000000000001200000000000020734 0ustar00sf5: .nan ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-15.toml0000644000000000000000000000007700000000000020761 0ustar00sf6 = -nan # valid, actual encoding is implementation specific ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-15.yaml0000644000000000000000000000001200000000000020735 0ustar00sf6: .NAN ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-2.toml0000644000000000000000000000001600000000000020666 0ustar00flt2 = 3.1415 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-2.yaml0000644000000000000000000000001500000000000020654 0ustar00flt2: 3.1415 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-3.toml0000644000000000000000000000001500000000000020666 0ustar00flt3 = -0.01 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-3.yaml0000644000000000000000000000001400000000000020654 0ustar00flt3: -0.01 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-4.toml0000644000000000000000000000001500000000000020667 0ustar00flt4 = 5e+22 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-4.yaml0000644000000000000000000000001400000000000020655 0ustar00flt4: 5e+22 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-5.toml0000644000000000000000000000001400000000000020667 0ustar00flt5 = 1e06 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-5.yaml0000644000000000000000000000001200000000000020654 0ustar00flt5: 1e6 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-6.toml0000644000000000000000000000001500000000000020671 0ustar00flt6 = -2E-2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-6.yaml0000644000000000000000000000001400000000000020657 0ustar00flt6: -2E-2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-7.toml0000644000000000000000000000002100000000000020667 0ustar00flt7 = 6.626e-34 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-7.yaml0000644000000000000000000000002000000000000020655 0ustar00flt7: 6.626e-34 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-8.toml0000644000000000000000000000003300000000000020673 0ustar00flt8 = 224_617.445_991_228 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-8.yaml0000644000000000000000000000003100000000000020660 0ustar00flt8: 224_617.445_991_228././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-9.toml0000644000000000000000000000001400000000000020673 0ustar00flt9 = -0e0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-float-9.yaml0000644000000000000000000000001300000000000020661 0ustar00flt9: -0e0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-1.toml0000644000000000000000000000001300000000000020347 0ustar00int1 = +99 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-1.yaml0000644000000000000000000000001100000000000020334 0ustar00int1: 99 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-2.toml0000644000000000000000000000001200000000000020347 0ustar00int2 = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-2.yaml0000644000000000000000000000001100000000000020335 0ustar00int2: 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-3.toml0000644000000000000000000000001100000000000020347 0ustar00int3 = 0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-3.yaml0000644000000000000000000000001000000000000020335 0ustar00int3: 0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-3a.toml0000644000000000000000000000001200000000000020511 0ustar00int3 = +0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-3a.yaml0000644000000000000000000000001000000000000020476 0ustar00int3: 0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-3b.toml0000644000000000000000000000001200000000000020512 0ustar00int3 = -0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-3b.yaml0000644000000000000000000000001000000000000020477 0ustar00int3: 0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-4.toml0000644000000000000000000000001300000000000020352 0ustar00int4 = -17 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-4.yaml0000644000000000000000000000001200000000000020340 0ustar00int4: -17 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-5.toml0000644000000000000000000000001500000000000020355 0ustar00int5 = 1_000 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-5.yaml0000644000000000000000000000001400000000000020343 0ustar00int5: 1_000 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-6.toml0000644000000000000000000000002100000000000020353 0ustar00int6 = 5_349_221 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-6.yaml0000644000000000000000000000002000000000000020341 0ustar00int6: 5_349_221 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-7.toml0000644000000000000000000000005500000000000020363 0ustar00int7 = 1_2_3_4_5 # VALID but discouraged ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-7.yaml0000644000000000000000000000005400000000000020351 0ustar00int7: 1_2_3_4_5 # VALID but discouraged ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-bin1.toml0000644000000000000000000000002200000000000021040 0ustar00bin1 = 0b11010110 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-bin1.yaml0000644000000000000000000000001200000000000021026 0ustar00bin1: 214 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-hex1.toml0000644000000000000000000000002200000000000021054 0ustar00hex1 = 0xDEADBEEF ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-hex1.yaml0000644000000000000000000000002100000000000021042 0ustar00hex1: 3735928559 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-hex2.toml0000644000000000000000000000002200000000000021055 0ustar00hex2 = 0xdeadbeef ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-hex2.yaml0000644000000000000000000000002100000000000021043 0ustar00hex2: 3735928559 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-hex3.toml0000644000000000000000000000002300000000000021057 0ustar00hex3 = 0xdead_beef ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-hex3.yaml0000644000000000000000000000002100000000000021044 0ustar00hex3: 3735928559 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-max.json0000644000000000000000000000010300000000000020772 0ustar00{ "max": {"type": "integer", "value": "9223372036854775807"} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-max.toml0000644000000000000000000000003600000000000021001 0ustar00max=9_223_372_036_854_775_807 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-min.json0000644000000000000000000000010400000000000020771 0ustar00{ "min": {"type": "integer", "value": "-9223372036854775808"} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-min.toml0000644000000000000000000000003700000000000021000 0ustar00min=-9_223_372_036_854_775_808 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-oct1.toml0000644000000000000000000000002200000000000021055 0ustar00oct1 = 0o01234567 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-oct1.yaml0000644000000000000000000000001500000000000021046 0ustar00oct1: 342391 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-oct2.toml0000644000000000000000000000006000000000000021060 0ustar00oct2 = 0o755 # useful for Unix file permissions ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-int-oct2.yaml0000644000000000000000000000001200000000000021044 0ustar00oct2: 493 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-key-value-pair-1.toml0000644000000000000000000000001600000000000022413 0ustar00key = "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-key-value-pair-1.yaml0000644000000000000000000000001500000000000022401 0ustar00key: "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-key-value-pair-2.toml0000644000000000000000000000002300000000000022412 0ustar00bare_key = "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-key-value-pair-2.yaml0000644000000000000000000000002200000000000022400 0ustar00bare_key: "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-key-value-pair-3.toml0000644000000000000000000000002300000000000022413 0ustar00bare-key = "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-key-value-pair-3.yaml0000644000000000000000000000002200000000000022401 0ustar00bare-key: "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-key-value-pair-4.toml0000644000000000000000000000001700000000000022417 0ustar001234 = "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-key-value-pair-4.yaml0000644000000000000000000000002000000000000022400 0ustar00"1234": "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-key-value-pair-5.toml0000644000000000000000000000001500000000000022416 0ustar001234="value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-key-value-pair-5.yaml0000644000000000000000000000002000000000000022401 0ustar00"1234": "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-key-value-pair-6.toml0000644000000000000000000000000400000000000022415 0ustar00-=1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-key-value-pair-6.yaml0000644000000000000000000000000600000000000022406 0ustar00"-": 1././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-key-value-pair-7.toml0000644000000000000000000000000400000000000022416 0ustar00_=1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-key-value-pair-7.yaml0000644000000000000000000000000600000000000022407 0ustar00"_": 1././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-key-value-pair-8.toml0000644000000000000000000000001400000000000022420 0ustar00-_-_-_-_-=1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-key-value-pair-8.yaml0000644000000000000000000000001600000000000022411 0ustar00"-_-_-_-_-": 1././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-key-value-pair-9.toml0000644000000000000000000000001700000000000022424 0ustar003.14159 = "pi" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-key-value-pair-9.yaml0000644000000000000000000000002100000000000022406 0ustar003: 14159: "pi" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-newline-1.toml0000644000000000000000000000002400000000000021220 0ustar00abc = 123 def = 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-newline-1.yaml0000644000000000000000000000002200000000000021205 0ustar00abc: 123 def: 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-newline-2.toml0000644000000000000000000000002600000000000021223 0ustar00abc = 123 def = 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-newline-2.yaml0000644000000000000000000000002200000000000021206 0ustar00abc: 123 def: 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-newline-3.toml0000644000000000000000000000003600000000000021225 0ustar00abc = 123 def = 456 ghi = 789././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-newline-3.yaml0000644000000000000000000000003300000000000021211 0ustar00abc: 123 def: 456 ghi: 789 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-quoted-basic-keys-1.toml0000644000000000000000000000002300000000000023107 0ustar00"ʎǝʞ" = "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-quoted-basic-keys-1.yaml0000644000000000000000000000002200000000000023075 0ustar00"ʎǝʞ": "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-quoted-literal-keys-1.toml0000644000000000000000000000003300000000000023463 0ustar00'quoted "value"' = "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-quoted-literal-keys-1.yaml0000644000000000000000000000003200000000000023451 0ustar00'quoted "value"': "value" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-readme-example.toml0000644000000000000000000000104100000000000022307 0ustar00# This is a TOML document. title = "TOML Example" [owner] name = "Tom Preston-Werner" dob = 1979-05-27T07:32:00-08:00 # First class dates [database] server = "192.168.1.1" ports = [ 8001, 8001, 8002 ] connection_max = 5000 enabled = true [servers] # Indentation (tabs and/or spaces) is allowed but not required [servers.alpha] ip = "10.0.0.1" dc = "eqdc10" [servers.beta] ip = "10.0.0.2" dc = "eqdc10" [clients] data = [ ["gamma", "delta"], [1, 2] ] # Line breaks are OK when inside arrays hosts = [ "alpha", "omega" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-readme-example.yaml0000644000000000000000000000066000000000000022304 0ustar00# This is a TOML document. title: "TOML Example" owner: name: "Tom Preston-Werner" dob: 1979-05-27T07:32:00-08:00 # First class dates database: server: "192.168.1.1" ports: [ 8001, 8001, 8002 ] connection_max: 5000 enabled: true servers: alpha: ip: "10.0.0.1" dc: "eqdc10" beta: ip: "10.0.0.2" dc: "eqdc10" clients: data: [ ["gamma", "delta"], [1, 2] ] hosts: [ "alpha", "omega" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-multiline-1.toml0000644000000000000000000000005500000000000024150 0ustar00str1 = """ Roses are red Violets are blue""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-multiline-1.yaml0000644000000000000000000000005000000000000024132 0ustar00str1: "Roses are red\nViolets are blue" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-multiline-2.toml0000644000000000000000000000010600000000000024146 0ustar00str = """ The quick brown \ fox jumps over \ the lazy dog.""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3895335 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-multiline-2.yaml0000644000000000000000000000006400000000000024140 0ustar00str: "The quick brown fox jumps over the lazy dog." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-multiline-3.toml0000644000000000000000000000013100000000000024145 0ustar00str = """\ The quick brown \ fox jumps over \ the lazy dog.\ """ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-multiline-3.yaml0000644000000000000000000000006400000000000024141 0ustar00str: "The quick brown fox jumps over the lazy dog." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-multiline-4.toml0000644000000000000000000000002600000000000024151 0ustar00a = """abc\ def""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-multiline-4.yaml0000644000000000000000000000001400000000000024135 0ustar00a: "abcdef" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-multiline-5.toml0000644000000000000000000000007100000000000024152 0ustar00ml-escaped-nl = """ foo \ bar \\ baz \\\ quux""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-multiline-5.yaml0000644000000000000000000000005400000000000024142 0ustar00ml-escaped-nl: " foo bar \\\n baz \\quux" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-multiline-6.toml0000644000000000000000000000007600000000000024160 0ustar00str4 = """Here are two quotation marks: "". Simple enough.""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-multiline-6.yaml0000644000000000000000000000007100000000000024142 0ustar00str4: 'Here are two quotation marks: "". Simple enough.' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-multiline-7.toml0000644000000000000000000000006300000000000024155 0ustar00str5 = """Here are three quotation marks: ""\".""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-multiline-7.yaml0000644000000000000000000000005500000000000024145 0ustar00str5: 'Here are three quotation marks: """.' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-multiline-8.toml0000644000000000000000000000010500000000000024153 0ustar00str6 = """Here are fifteen quotation marks: ""\"""\"""\"""\"""\".""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-multiline-8.yaml0000644000000000000000000000007300000000000024146 0ustar00str6: 'Here are fifteen quotation marks: """"""""""""""".' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-multiline-9.toml0000644000000000000000000000010000000000000024147 0ustar00str7 = """"This," she said, "is just a pointless statement."""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-multiline-9.yaml0000644000000000000000000000007300000000000024147 0ustar00str7: '"This," she said, "is just a pointless statement."' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-tab-multiline.toml0000644000000000000000000000003200000000000024551 0ustar00str = """This is a tab""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-tab-multiline.yaml0000644000000000000000000000002600000000000024543 0ustar00str: "This is a\ttab" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-tab.toml0000644000000000000000000000002600000000000022554 0ustar00str = "This is a tab" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic-tab.yaml0000644000000000000000000000002600000000000022543 0ustar00str: "This is a\ttab" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic.toml0000644000000000000000000000011300000000000022005 0ustar00str = "I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-basic.yaml0000644000000000000000000000011200000000000021773 0ustar00str: "I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-escape-1.toml0000644000000000000000000000001100000000000022317 0ustar00a = "\b" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-escape-1.yaml0000644000000000000000000000001000000000000022305 0ustar00a: "\b" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-escape-2.toml0000644000000000000000000000001100000000000022320 0ustar00a = "\t" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-escape-2.yaml0000644000000000000000000000001000000000000022306 0ustar00a: "\t" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-escape-3.toml0000644000000000000000000000001100000000000022321 0ustar00a = "\n" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-escape-3.yaml0000644000000000000000000000001000000000000022307 0ustar00a: "\n" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-escape-4.toml0000644000000000000000000000001100000000000022322 0ustar00a = "\f" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-escape-4.yaml0000644000000000000000000000001000000000000022310 0ustar00a: "\f" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-escape-5.toml0000644000000000000000000000001100000000000022323 0ustar00a = "\r" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-escape-5.yaml0000644000000000000000000000001000000000000022311 0ustar00a: "\r" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-escape-6.toml0000644000000000000000000000001100000000000022324 0ustar00a = "\"" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-escape-6.yaml0000644000000000000000000000001000000000000022312 0ustar00a: "\"" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-escape-7.toml0000644000000000000000000000001100000000000022325 0ustar00a = "\\" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-escape-7.yaml0000644000000000000000000000001000000000000022313 0ustar00a: "\\" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-escape-8.toml0000644000000000000000000000001500000000000022332 0ustar00a = "\u0000" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-escape-8.yaml0000644000000000000000000000001200000000000022316 0ustar00a: "\x00" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-escape-9.toml0000644000000000000000000000002100000000000022330 0ustar00a = "\U00000000" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-escape-9.yaml0000644000000000000000000000001200000000000022317 0ustar00a: "\x00" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-literal-1.toml0000644000000000000000000000004700000000000022524 0ustar00winpath = 'C:\Users\nodejs\templates' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-literal-1.yaml0000644000000000000000000000004500000000000022511 0ustar00winpath: 'C:\Users\nodejs\templates' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-literal-2.toml0000644000000000000000000000005000000000000022517 0ustar00winpath2 = '\\ServerX\admin$\system32\' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-literal-2.yaml0000644000000000000000000000004700000000000022514 0ustar00winpath2: '\\ServerX\admin$\system32\' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-literal-3.toml0000644000000000000000000000004700000000000022526 0ustar00quoted = 'Tom "Dubs" Preston-Werner' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-literal-3.yaml0000644000000000000000000000004400000000000022512 0ustar00quoted: 'Tom "Dubs" Preston-Werner' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-literal-4.toml0000644000000000000000000000003000000000000022517 0ustar00regex = '<\i\c*\s*>' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-literal-4.yaml0000644000000000000000000000002400000000000022511 0ustar00regex: '<\i\c*\s*>' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-literal-multiline-1.toml0000644000000000000000000000005400000000000024522 0ustar00regex2 = '''I [dw]on't need \d{2} apples''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-literal-multiline-1.yaml0000644000000000000000000000005000000000000024505 0ustar00regex2: "I [dw]on't need \\d{2} apples" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-literal-multiline-2.toml0000644000000000000000000000014700000000000024526 0ustar00lines = ''' The first newline is trimmed in raw strings. All other whitespace is preserved. ''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-literal-multiline-2.yaml0000644000000000000000000000014400000000000024512 0ustar00lines: "The first newline is\ntrimmed in raw strings.\n All other whitespace\n is preserved.\n" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-literal-multiline-3.toml0000644000000000000000000000010100000000000024515 0ustar00quot15 = '''Here are fifteen quotation marks: """""""""""""""''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-literal-multiline-3.yaml0000644000000000000000000000007400000000000024515 0ustar00quot15: 'Here are fifteen quotation marks: """""""""""""""' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-literal-multiline-4.toml0000644000000000000000000000006400000000000024526 0ustar00str = ''''That,' she said, 'is still pointless.'''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-string-literal-multiline-4.yaml0000644000000000000000000000005700000000000024517 0ustar00str: "'That,' she said, 'is still pointless.'" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-1.toml0000644000000000000000000000013000000000000020644 0ustar00[table-1] key1 = "some string" key2 = 123 [table-2] key1 = "another string" key2 = 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-1.yaml0000644000000000000000000000013100000000000020634 0ustar00table-1: key1: "some string" key2: 123 table-2: key1: "another string" key2: 456 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-2.toml0000644000000000000000000000004400000000000020651 0ustar00[dog."tater.man"] type.name = "pug" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-2.yaml0000644000000000000000000000006000000000000020636 0ustar00dog: "tater.man": type: name: "pug" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-3.toml0000644000000000000000000000001000000000000020643 0ustar00[a.b.c] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-3.yaml0000644000000000000000000000002200000000000020635 0ustar00a: b: c: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-4.toml0000644000000000000000000000004500000000000020654 0ustar00[ d.e.f ] # same as [d.e.f] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-4.yaml0000644000000000000000000000002200000000000020636 0ustar00d: e: f: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-5.toml0000644000000000000000000000004500000000000020655 0ustar00[ g . h . i ] # same as [g.h.i] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-5.yaml0000644000000000000000000000002200000000000020637 0ustar00g: h: i: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-6.toml0000644000000000000000000000005300000000000020655 0ustar00[ j . "ʞ" . 'l' ] # same as [j."ʞ".'l'] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-6.yaml0000644000000000000000000000002500000000000020643 0ustar00j: "ʞ": l: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-7.toml0000644000000000000000000000017000000000000020656 0ustar00# [x] you # [x.y] don't # [x.y.z] need these [x.y.z.w] # for this to work [x] # defining a super-table afterwards is ok ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-7.yaml0000644000000000000000000000003300000000000020643 0ustar00x: y: z: w: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-8.toml0000644000000000000000000000016400000000000020662 0ustar00[fruit] apple.color = "red" apple.taste.sweet = true [fruit.apple.texture] # you can add sub-tables smooth = true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-8.yaml0000644000000000000000000000013600000000000020650 0ustar00fruit: apple: color: "red" taste: sweet: true texture: smooth: true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-inline-1.toml0000644000000000000000000000006200000000000022124 0ustar00name = { first = "Tom", last = "Preston-Werner" } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-inline-1.yaml0000644000000000000000000000005700000000000022117 0ustar00name: { first: "Tom", last: "Preston-Werner" } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-inline-2.toml0000644000000000000000000000003100000000000022121 0ustar00point = { x = 1, y = 2 } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-inline-2.yaml0000644000000000000000000000003100000000000022110 0ustar00point: { x: 1, y: 2 } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-inline-3.toml0000644000000000000000000000004000000000000022122 0ustar00animal = { type.name = "pug" } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table-inline-3.yaml0000644000000000000000000000004500000000000022116 0ustar00animal: { type: { name: "pug" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table.toml0000644000000000000000000000001000000000000020503 0ustar00[table] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-table.yaml0000644000000000000000000000001200000000000020474 0ustar00table: {} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-time-1.json0000644000000000000000000000010300000000000020511 0ustar00{ "lt1": { "type": "time", "value": "07:32:00.000" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-time-1.toml0000644000000000000000000000001700000000000020517 0ustar00lt1 = 07:32:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-time-2.json0000644000000000000000000000010300000000000020512 0ustar00{ "lt2": { "type": "time", "value": "00:32:00.999" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tests/toml-spec-tests/values/spec-time-2.toml0000644000000000000000000000002600000000000020520 0ustar00lt2 = 00:32:00.999999 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.6935482 tomlkit-0.9.2/tests/toml-test/.git0000644000000000000000000000005300000000000013750 0ustar00gitdir: ../../.git/modules/tests/toml-test ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/.github/workflows/test.yml0000644000000000000000000000137200000000000020270 0ustar00{ "name": "go test", "on": ["push", "pull_request"], "jobs": { "test": { "strategy": { "matrix": { "go-version": ["1.16.x"], "os": ["ubuntu-latest", "macos-latest", "windows-latest"] } }, "runs-on": "${{ matrix.os }}", "steps": [ { "name": "Install Go", "uses": "actions/setup-go@v2", "with": {"go-version": "${{ matrix.go-version }}"} }, { "name": "Checkout code", "uses": "actions/checkout@v2" }, { "name": "Test", "run": "go test -v ./..." }, { "name": "Install", "run": "go install -v ./cmd/toml-test" } ] } } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/.gitignore0000644000000000000000000000002100000000000015147 0ustar00/dist /toml-test ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/.gogo-release0000644000000000000000000000005300000000000015536 0ustar00build_flags="$build_flags ./cmd/toml-test" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/COPYING0000644000000000000000000000206700000000000014226 0ustar00The MIT License (MIT) Copyright (c) 2018 TOML authors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/README.md0000644000000000000000000002170100000000000014446 0ustar00`toml-test` is a language-agnostic test suite to verify the correctness of [TOML][t] parsers and writers. Tests are divided into two groups: "invalid" and "valid". Decoders or encoders that reject "invalid" tests pass the tests, and decoders that accept "valid" tests and output precisely what is expected pass the tests. The output format is JSON, described below. Both encoders and decoders share valid tests, except an encoder accepts JSON and outputs TOML rather than the reverse. The TOML representations are read with a blessed decoder and is compared. Encoders have their own set of invalid tests in the invalid-encoder directory. The JSON given to a TOML encoder is in the same format as the JSON that a TOML decoder should output. Compatible with TOML version [v1.0.0][v1]. [t]: https://toml.io [v1]: https://toml.io/en/v1.0.0 Installation ------------ There are binaries on the [release page][r]; these are statically compiled and should run in most environments. It's recommended you use a binary, or a tagged release if you build from source especially in CI environments. This prevents your tests from breaking on changes to tests in this tool. To compile from source you will need Go 1.16 or newer (older versions will *not* work): $ git clone https://github.com/BurntSushi/toml-test.git $ cd toml-test $ go build ./cmd/toml-test This will build a `./toml-test` binary. [r]: https://github.com/BurntSushi/toml-test/releases Usage ----- `toml-test` accepts an encoder or decoder as the first positional argument, for example: $ toml-test my-toml-decoder $ toml-test my-toml-encoder -encoder The `-encoder` flag is used to signal that this is an encoder rather than a decoder. For example, to run the tests against the Go TOML library: # Install my parser $ go install github.com/BurntSushi/toml/cmd/toml-test-decoder@master $ go install github.com/BurntSushi/toml/cmd/toml-test-encoder@master $ toml-test toml-test-decoder toml-test [toml-test-decoder]: using embeded tests: 278 passed $ toml-test -encoder toml-test-encoder toml-test [toml-test-encoder]: using embeded tests: 94 passed, 0 failed The default is to use the tests compiled in the binary; you can use `-testdir` to load tests from the filesystem. You can use `-run [name]` or `-skip [name]` to run or skip specific tests. Both flags can be given more than once and accept glob patterns: `-run 'valid/string/*'`. See `toml-test -help` for detailed usage. ### Implementing a decoder For your decoder to be compatible with `toml-test` it **must** satisfy the expected interface: - Your decoder **must** accept TOML data on `stdin` until EOF. - If the TOML data is invalid, your decoder **must** return with a non-zero exit, code indicating an error. - If the TOML data is valid, your decoder **must** output a JSON encoding of that data on `stdout` and return with a zero exit code indicating success. An example in pseudocode: toml_data = read_stdin() parsed_toml = decode_toml(toml_data) if error_parsing_toml(): print_error_to_stderr() exit(1) print_as_tagged_json(parsed_toml) exit(0) Details on the tagged JSON is explained below in "JSON encoding". ### Implementing an encoder For your encoder to be compatible with `toml-test`, it **must** satisfy the expected interface: - Your encoder **must** accept JSON data on `stdin` until EOF. - If the JSON data cannot be converted to a valid TOML representation, your encoder **must** return with a non-zero exit code indicating an error. - If the JSON data can be converted to a valid TOML representation, your encoder **must** output a TOML encoding of that data on `stdout` and return with a zero exit code indicating success. An example in pseudocode: json_data = read_stdin() parsed_json_with_tags = decode_json(json_data) if error_parsing_json(): print_error_to_stderr() exit(1) print_as_toml(parsed_json_with_tags) exit(0) JSON encoding ------------- The following JSON encoding applies equally to both encoders and decoders: - TOML tables correspond to JSON objects. - TOML table arrays correspond to JSON arrays. - TOML values correspond to a special JSON object of the form: `{"type": "{TTYPE}", "value": {TVALUE}}` In the above, `TTYPE` may be one of: - string - integer - float - bool - datetime - datetime-local - date-local - time-local `TVALUE` is always a JSON string. Empty hashes correspond to empty JSON objects (`{}`) and empty arrays correspond to empty JSON arrays (`[]`). Offset datetimes should be encoded in RFC 3339; Local datetimes should be encoded following RFC 3339 without the offset part. Local dates should be encoded as the date part of RFC 3339 and Local times as the time part. Examples: TOML JSON a = 42 {"type": "integer": "value": "42} --- [tbl] {"tbl": { a = 42 "a": {"type": "integer": "value": "42} }} --- a = ["a", 2] {"a": [ {"type": "string", "value": "1"}, {"type: "integer": "value": "2"} ]} Or a more complex example: ```toml best-day-ever = 1987-07-05T17:45:00Z [numtheory] boring = false perfection = [6, 28, 496] ``` And the JSON encoding expected by `toml-test` is: ```json { "best-day-ever": {"type": "datetime", "value": "1987-07-05T17:45:00Z"}, "numtheory": { "boring": {"type": "bool", "value": "false"}, "perfection": [ {"type": "integer", "value": "6"}, {"type": "integer", "value": "28"}, {"type": "integer", "value": "496"} ] } } ``` Note that the only JSON values ever used are objects, arrays and strings. An example implementation can be found in the BurnSushi/toml: - [Add tags](https://github.com/BurntSushi/toml/blob/master/internal/tag/add.go) - [Remove tags](https://github.com/BurntSushi/toml/blob/master/internal/tag/rm.go) Assumptions of Truth -------------------- The following are taken as ground truths by `toml-test`: - All tests classified as `invalid` **are** invalid. - All tests classified as `valid` **are** valid. - All expected outputs in `valid/test-name.json` are exactly correct. - The Go standard library package `encoding/json` decodes JSON correctly. - When testing encoders, the TOML decoder at [BurntSushi/toml](https://github.com/BurntSushi/toml) is assumed to be correct. (Note that this assumption is not made when testing decoders!) Of particular note is that **no TOML decoder** is taken as ground truth when testing decoders. This means that most changes to the spec will only require an update of the tests in `toml-test`. (Bigger changes may require an adjustment of how two things are considered equal. Particularly if a new type of data is added.) Obviously, this advantage does not apply to testing TOML encoders since there must exist a TOML decoder that conforms to the specification in order to read the output of a TOML encoder. Adding tests ------------ `toml-test` was designed so that tests can be easily added and removed. As mentioned above, tests are split into two groups: invalid and valid tests. Invalid tests **only check if a decoder rejects invalid TOML data**. Or, in the case of testing encoders, invalid tests **only check if an encoder rejects an invalid representation of TOML** (e.g., a hetergeneous array). Therefore, all invalid tests should try to **test one thing and one thing only**. Invalid tests should be named after the fault it is trying to expose. Invalid tests for decoders are in the `tests/invalid` directory while invalid tests for encoders are in the `tests/invalid-encoder` directory. Valid tests check that a decoder accepts valid TOML data **and** that the parser has the correct representation of the TOML data. Therefore, valid tests need a JSON encoding in addition to the TOML data. The tests should be small enough that writing the JSON encoding by hand will not give you brain damage. The exact reverse is true when testing encoders. A valid test without either a `.json` or `.toml` file will automatically fail. If you have tests that you'd like to add, please submit a pull request. Why JSON? --------- In order for a language agnostic test suite to work, we need some kind of data exchange format. TOML cannot be used, as it would imply that a particular parser has a blessing of correctness. My decision to use JSON was not a careful one. It was based on expediency. The Go standard library has an excellent `encoding/json` package built in, which made it easy to compare JSON data. The problem with JSON is that the types in TOML are not in one-to-one correspondence with JSON. This is why every TOML value represented in JSON is tagged with a type annotation, as described above. YAML may be closer in correspondence with TOML, but I don't believe we should rely on that correspondence. Making things explicit with JSON means that writing tests is a little more cumbersome, but it also reduces the number of assumptions we need to make. ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/cmd/toml-test/main.go0000644000000000000000000001075600000000000017145 0ustar00package main import ( "fmt" "io/fs" "os" "path/filepath" "strings" tomltest "github.com/BurntSushi/toml-test" "zgo.at/zli" ) var hlErr = zli.ColorHex("#f6d6d6").Bg() | zli.Black | zli.Bold var version = "git" func parseFlags() (tomltest.Runner, []string, int, string) { f := zli.NewFlags(os.Args) var ( help = f.Bool(false, "help", "h") versionFlag = f.Bool(false, "version", "V") encoder = f.Bool(false, "encoder") testDir = f.String("", "testdir") showAll = f.IntCounter(0, "v") color = f.String("always", "color") skip = f.StringList(nil, "skip") run = f.StringList(nil, "run") ) zli.F(f.Parse()) if help.Bool() { fmt.Printf(usage, filepath.Base(os.Args[0])) zli.Exit(0) } if versionFlag.Bool() { fmt.Println(version) zli.Exit(0) } r := tomltest.Runner{ Encoder: encoder.Bool(), RunTests: run.StringsSplit(","), SkipTests: skip.StringsSplit(","), } if len(f.Args) == 0 { zli.Fatalf("no parser command") } for _, r := range r.RunTests { _, err := filepath.Match(r, "") if err != nil { zli.Fatalf("invalid glob pattern %q in -run: %s", r, err) } } for _, r := range r.SkipTests { _, err := filepath.Match(r, "") if err != nil { zli.Fatalf("invalid glob pattern %q in -skip: %s", r, err) } } r.Files = tomltest.EmbeddedTests() if testDir.Set() { r.Files = os.DirFS(testDir.String()) // So I used the path to toml-dir a few times, be forgiving by looking // for a "tests" directory and sub-ing to that. ls, err := fs.ReadDir(r.Files, ".") zli.F(err) var f, t int for _, l := range ls { if l.IsDir() && (l.Name() == "valid" || l.Name() == "invalid") { f++ } if l.IsDir() && l.Name() == "tests" { t++ } } if f < 2 { if t == 0 { zli.Fatalf("%q does not seem to contain any tests (no valid and/or invalid directory)", testDir) } r.Files, err = fs.Sub(r.Files, "tests") zli.F(err) } } r.Parser = tomltest.NewCommandParser(r.Files, f.Args) switch color.String() { case "always", "yes": zli.WantColor = true case "never", "no": zli.WantColor = false case "bold", "monochrome": zli.WantColor = true hlErr = zli.Bold default: zli.Fatalf("invalid value for -color: %q", color) } return r, f.Args, showAll.Int(), testDir.String() } func main() { runner, cmd, showAll, testDir := parseFlags() tests, err := runner.Run() zli.F(err) for _, t := range tests.Tests { if t.Failed() || showAll > 1 { fmt.Print(detailed(runner, t)) } else if showAll == 1 { fmt.Print(short(runner, t)) } } fmt.Printf("toml-test %s: ", cmd) if testDir == "" { fmt.Print("using embeded tests: ") } else { fmt.Printf("tests from %q: ", testDir) } fmt.Printf("%3d passed, %2d failed", tests.Passed, tests.Failed) if tests.Skipped > 0 { fmt.Printf(", %2d skipped", tests.Skipped) } fmt.Println() if tests.Failed > 0 { zli.Exit(1) } zli.Exit(0) } func short(r tomltest.Runner, t tomltest.Test) string { b := new(strings.Builder) switch { case t.Failure != "": b.WriteString(zli.Colorf("FAIL", hlErr)) b.WriteByte(' ') b.WriteString(zli.Bold.String()) b.WriteString(t.Path) b.WriteString(zli.Reset.String()) case t.Skipped: b.WriteString(hlErr.String()) b.WriteString("SKIP") b.WriteString(zli.Reset.String()) b.WriteByte(' ') b.WriteString(t.Path) default: b.WriteString("PASS ") b.WriteString(t.Path) } b.WriteByte('\n') return b.String() } func detailed(r tomltest.Runner, t tomltest.Test) string { b := new(strings.Builder) b.WriteString(short(r, t)) if t.Failed() { b.WriteString(indentWith( indent(t.Failure, 4), zli.Colorf(" ", hlErr))) b.WriteByte('\n') } showStream(b, "input sent to parser-cmd", t.Input) if t.OutputFromStderr { showStream(b, "output from parser-cmd (stderr)", t.Output) } else { showStream(b, "output from parser-cmd (stdout)", t.Output) } if t.Type() == tomltest.TypeValid { showStream(b, "want", t.Want) } else { showStream(b, "want", "Exit code 1") } b.WriteByte('\n') return b.String() } func showStream(b *strings.Builder, name, s string) { b.WriteByte('\n') fmt.Fprintln(b, zli.Colorf(" "+name+":", zli.Bold)) if s == "" { fmt.Fprintln(b, " ") return } fmt.Fprintln(b, indent(s, 7)) } func indentWith(s, with string) string { return with + strings.ReplaceAll(strings.TrimRight(s, "\n"), "\n", "\n"+with) } func indent(s string, n int) string { sp := strings.Repeat(" ", n) return sp + strings.ReplaceAll(strings.TrimRight(s, "\n"), "\n", "\n"+sp) } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/cmd/toml-test/usage.go0000644000000000000000000000660200000000000017320 0ustar00package main const usage = `Usage: %[1]s parser-cmd [ parser-cmd-flags ] toml-test is a tool to verify the correctness of TOML parsers and writers. https://github.com/BurntSushi/toml-test The parser-cmd positional argument should be a program that accepts TOML data on stdin until EOF, and is expected to write the corresponding JSON encoding on stdout. Please see 'README.md' for details on how to satisfy the interface expected by 'toml-test' with your own parser. Any positional arguments are use as the parser-cmd; to pass flags, remember to stop toml-test's flag parsing with -- $ %[1]s -- my-parser -x -y There are two tests: decoder This is the default. encoder When -encoder is given. Tests are split in to two groups: valid Valid TOML files invalid Invalid TOML files that should be rejected with an error. invalid-encoder Invalid input for the encoder All tests are referred to relative to to the tests/ directory: valid/dir/name or invalid/dir/name. Flags: -help Show this help and exit. -version Show version and exit. -encoder The given parser-cmd will be tested as a TOML encoder. The parser-cmd will be sent JSON on stdin and is expected to write TOML to stdout. The JSON will be in the same format as specified in the toml-test README. Note that this depends on the correctness of my TOML parser! -v List all tests, even passing ones. Add twice to show detailed output for passing tests. -run Specify a list of tests to run; the default is to run all tests. Test names include the directory, i.e. "valid/test-name" or "invalid/test-name". You can use globbing patterns , for example to run all string tests: $ toml-test toml-test-decoder -run 'valid/string*' You can specify this argument more than once, and/or specify multiple tests by separating them with a comma: $ toml-test toml-test-decoder \ -run valid/string-empty \ -run valid/string-nl,valid/string-simple This will run three tests (string-empty, string-nl, string-simple). Globbing patterns: https://pkg.go.dev/path/filepath#Match -skip Tests to skip, this uses the same syntax as the -run flag. -color Output color; possible values: always Show test failures in bold and red (default). bold Show test failures in bold only. never Never output any escape codes. -testdir Location of the tests; the default is to use the tests compiled in the binary; this is only useful if you want to add or modify tests. A test in the invalid directory is a toml file that is known to be invalid and should be rejected by the parser. A test in the valid directory is a toml and json file with the same name, where the json file is the JSON representation of the TOML file according to the syntax described in the README. For encoders, the same directory scheme above is used, except the invalid-encoder directory is used instead of the invalid directory. ` ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/gen-multi.py0000755000000000000000000000060600000000000015446 0ustar00#!/usr/bin/env python3 import glob import os.path for f in glob.glob('tests/invalid/*/*.multi'): base = os.path.dirname(f[:-6]) for l in open(f, 'rb').readlines(): name = l.split(b'=')[0].strip().decode() if name == '' or name[0] == '#': continue path = base + "/" + name + '.toml' with open(path, 'wb+') as fp: fp.write(l) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/go.mod0000644000000000000000000000031400000000000014272 0ustar00module github.com/BurntSushi/toml-test go 1.16 require ( github.com/BurntSushi/toml v0.4.0 // no_term branch, which doesn't depend on x/term and x/sys zgo.at/zli v0.0.0-20210619044753-e7020a328e59 ) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/go.sum0000644000000000000000000000247200000000000014326 0ustar00github.com/BurntSushi/toml v0.3.2-0.20210614224209-34d990aa228d/go.mod h1:2QZjSXA5e+XyFeCAxxtL8Z4StYUsTquL8ODGPR3C3MA= github.com/BurntSushi/toml v0.3.2-0.20210621044154-20a94d639b8e/go.mod h1:t4zg8TkHfP16Vb3x4WKIw7zVYMit5QFtPEO8lOWxzTg= github.com/BurntSushi/toml v0.3.2-0.20210624061728-01bfc69d1057/go.mod h1:NMj2lD5LfMqcE0w8tnqOsH6944oaqpI1974lrIwerfE= github.com/BurntSushi/toml v0.3.2-0.20210704081116-ccff24ee4463/go.mod h1:EkRrMiQQmfxK6kIldz3QbPlhmVkrjW1RDJUnbDqGYvc= github.com/BurntSushi/toml v0.4.0 h1:qD/r9AL67srjW6O3fcSKZDsXqzBNX6ieSRywr2hRrdE= github.com/BurntSushi/toml v0.4.0/go.mod h1:wtejDu7Q0FhCWAo2aXkywSJyYFg01EDTKozLNCz2JBA= github.com/BurntSushi/toml-test v0.1.1-0.20210620192437-de01089bbf76/go.mod h1:P/PrhmZ37t5llHfDuiouWXtFgqOoQ12SAh9j6EjrBR4= github.com/BurntSushi/toml-test v0.1.1-0.20210624055653-1f6389604dc6/go.mod h1:UAIt+Eo8itMZAAgImXkPGDMYsT1SsJkVdB5TuONl86A= github.com/BurntSushi/toml-test v0.1.1-0.20210704062846-269931e74e3f/go.mod h1:fnFWrIwqgHsEjVsW3RYCJmDo86oq9eiJ9u6bnqhtm2g= github.com/BurntSushi/toml-test v0.1.1-0.20210723065233-facb9eccd4da/go.mod h1:ve9Q/RRu2vHi42LocPLNvagxuUJh993/95b18bw/Nws= zgo.at/zli v0.0.0-20210619044753-e7020a328e59 h1:NId7flXh2TTB7XD/0/WBTuZ8L5mpNMCdYyqJ/VQIlFM= zgo.at/zli v0.0.0-20210619044753-e7020a328e59/go.mod h1:HLAc12TjNGT+VRXr76JnsNE3pbooQtwKWhX+RlDjQ2Y= ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/json.go0000644000000000000000000001505100000000000014470 0ustar00package tomltest import ( "strconv" "strings" "time" ) // cmpJSON consumes the recursive structure of both want and have // simultaneously. If anything is unequal, the result has failed and comparison // stops. // // reflect.DeepEqual could work here, but it won't tell us how the two // structures are different. func (r Test) cmpJSON(want, have interface{}) Test { switch w := want.(type) { case map[string]interface{}: return r.cmpJSONMaps(w, have) case []interface{}: return r.cmpJSONArrays(w, have) default: return r.fail( "Key '%s' in expected output should be a map or a list of maps, but it's a %T", r.Key, want) } } func (r Test) cmpJSONMaps(want map[string]interface{}, have interface{}) Test { haveMap, ok := have.(map[string]interface{}) if !ok { return r.mismatch("table", want, haveMap) } // Check to make sure both or neither are values. if isValue(want) && !isValue(haveMap) { return r.fail( "Key '%s' is supposed to be a value, but the parser reports it as a table", r.Key) } if !isValue(want) && isValue(haveMap) { return r.fail( "Key '%s' is supposed to be a table, but the parser reports it as a value", r.Key) } if isValue(want) && isValue(haveMap) { return r.cmpJSONValues(want, haveMap) } // Check that the keys of each map are equivalent. for k := range want { if _, ok := haveMap[k]; !ok { bunk := r.kjoin(k) return bunk.fail("Could not find key '%s' in parser output.", bunk.Key) } } for k := range haveMap { if _, ok := want[k]; !ok { bunk := r.kjoin(k) return bunk.fail("Could not find key '%s' in expected output.", bunk.Key) } } // Okay, now make sure that each value is equivalent. for k := range want { if sub := r.kjoin(k).cmpJSON(want[k], haveMap[k]); sub.Failed() { return sub } } return r } func (r Test) cmpJSONArrays(want, have interface{}) Test { wantSlice, ok := want.([]interface{}) if !ok { return r.bug("'value' should be a JSON array when 'type=array', but it is a %T", want) } haveSlice, ok := have.([]interface{}) if !ok { return r.fail( "Malformed output from your encoder: 'value' is not a JSON array: %T", have) } if len(wantSlice) != len(haveSlice) { return r.fail("Array lengths differ for key '%s':\n"+ " Expected: %d\n"+ " Your encoder: %d", r.Key, len(wantSlice), len(haveSlice)) } for i := 0; i < len(wantSlice); i++ { if sub := r.cmpJSON(wantSlice[i], haveSlice[i]); sub.Failed() { return sub } } return r } func (r Test) cmpJSONValues(want, have map[string]interface{}) Test { wantType, ok := want["type"].(string) if !ok { return r.bug("'type' should be a string, but it is a %T", want["type"]) } haveType, ok := have["type"].(string) if !ok { return r.fail("Malformed output from your encoder: 'type' is not a string: %T", have["type"]) } if wantType != haveType { return r.valMismatch(wantType, haveType, want, have) } // If this is an array, then we've got to do some work to check equality. if wantType == "array" { return r.cmpJSONArrays(want, have) } // Atomic values are always strings wantVal, ok := want["value"].(string) if !ok { return r.bug("'value' %v should be a string, but it is a %[1]T", want["value"]) } haveVal, ok := have["value"].(string) if !ok { return r.fail("Malformed output from your encoder: %T is not a string", have["value"]) } // Excepting floats and datetimes, other values can be compared as strings. switch wantType { case "float": return r.cmpFloats(wantVal, haveVal) case "datetime", "datetime-local", "date-local", "time-local": return r.cmpAsDatetimes(wantType, wantVal, haveVal) default: return r.cmpAsStrings(wantVal, haveVal) } } func (r Test) cmpAsStrings(want, have string) Test { if want != have { return r.fail("Values for key '%s' don't match:\n"+ " Expected: %s\n"+ " Your encoder: %s", r.Key, want, have) } return r } func (r Test) cmpFloats(want, have string) Test { // Special case for NaN, since NaN != NaN. if strings.HasSuffix(want, "nan") || strings.HasSuffix(have, "nan") { if want != have { return r.fail("Values for key '%s' don't match:\n"+ " Expected: %v\n"+ " Your encoder: %v", r.Key, want, have) } return r } wantF, err := strconv.ParseFloat(want, 64) if err != nil { return r.bug("Could not read '%s' as a float value for key '%s'", want, r.Key) } haveF, err := strconv.ParseFloat(have, 64) if err != nil { return r.fail("Malformed output from your encoder: key '%s' is not a float: '%s'", r.Key, have) } if wantF != haveF { return r.fail("Values for key '%s' don't match:\n"+ " Expected: %v\n"+ " Your encoder: %v", r.Key, wantF, haveF) } return r } var datetimeRepl = strings.NewReplacer( " ", "T", "t", "T", "z", "Z") var layouts = map[string]string{ "datetime": time.RFC3339Nano, "datetime-local": "2006-01-02T15:04:05.999999999", "date-local": "2006-01-02", "time-local": "15:04:05", } func (r Test) cmpAsDatetimes(kind, want, have string) Test { layout, ok := layouts[kind] if !ok { panic("should never happen") } wantT, err := time.Parse(layout, datetimeRepl.Replace(want)) if err != nil { return r.bug("Could not read '%s' as a datetime value for key '%s'", want, r.Key) } haveT, err := time.Parse(layout, datetimeRepl.Replace(want)) if err != nil { return r.fail("Malformed output from your encoder: key '%s' is not a datetime: '%s'", r.Key, have) } if !wantT.Equal(haveT) { return r.fail("Values for key '%s' don't match:\n"+ " Expected: %v\n"+ " Your encoder: %v", r.Key, wantT, haveT) } return r } func (r Test) cmpAsDatetimesLocal(want, have string) Test { if datetimeRepl.Replace(want) != datetimeRepl.Replace(have) { return r.fail("Values for key '%s' don't match:\n"+ " Expected: %v\n"+ " Your encoder: %v", r.Key, want, have) } return r } func (r Test) kjoin(key string) Test { if len(r.Key) == 0 { r.Key = key } else { r.Key += "." + key } return r } func isValue(m map[string]interface{}) bool { if len(m) != 2 { return false } if _, ok := m["type"]; !ok { return false } if _, ok := m["value"]; !ok { return false } return true } func (r Test) mismatch(wantType string, want, have interface{}) Test { return r.fail("Key '%s' is not an %s but %[4]T:\n"+ " Expected: %#[3]v\n"+ " Your encoder: %#[4]v", r.Key, wantType, want, have) } func (r Test) valMismatch(wantType, haveType string, want, have interface{}) Test { return r.fail("Key '%s' is not an %s but %s:\n"+ " Expected: %#[3]v\n"+ " Your encoder: %#[4]v", r.Key, wantType, want, have) } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/runner.go0000644000000000000000000002265600000000000015041 0ustar00//go:generate ./gen-multi.py package tomltest import ( "bytes" "embed" "encoding/json" "errors" "fmt" "io/fs" "os" "os/exec" "path/filepath" "strings" "github.com/BurntSushi/toml" ) type testType uint8 const ( TypeValid testType = iota TypeInvalid ) //go:embed tests/* var embeddedTests embed.FS // EmbeddedTests are the tests embedded in toml-test, rooted to the "test/" // directory. func EmbeddedTests() fs.FS { f, err := fs.Sub(embeddedTests, "tests") if err != nil { panic(err) } return f } // Runner runs a set of tests. // // The validity of the parameters is not checked extensively; the caller should // verify this if need be. See ./cmd/toml-test for an example. type Runner struct { Files fs.FS // Test files. Encoder bool // Are we testing an encoder? RunTests []string // Tests to run; run all if blank. SkipTests []string // Tests to skip. Parser Parser // Send data to a parser. } // A Parser instance is used to call the TOML parser we test. // // By default this is done through an external command. type Parser interface { // Encode a JSON string to TOML. // // The output is the TOML string; if outputIsError is true then it's assumed // that an encoding error occurred. // // An error return should only be used in case an unrecoverable error // occurred; failing to encode to TOML is not an error, but the encoder // unexpectedly panicking is. Encode(jsonInput string) (output string, outputIsError bool, err error) // Decode a TOML string to JSON. The same semantics as Encode apply. Decode(tomlInput string) (output string, outputIsError bool, err error) } // CommandParser calls an external command. type CommandParser struct { fsys fs.FS cmd []string } // Tests are tests to run. type Tests struct { Tests []Test // Set when test are run. Skipped, Passed, Failed int } // Result is the result of a single test. type Test struct { Path string // Path of test, e.g. "valid/string-test" // Set when a test is run. Skipped bool // Skipped this test? Failure string // Failure message. Key string // TOML key the failure occured on; may be blank. Encoder bool // Encoder test? Input string // The test case that we sent to the external program. Output string // Output from the external program. Want string // The output we want. OutputFromStderr bool // The Output came from stderr, not stdout. } // List all tests in Files. func (r Runner) List() ([]string, error) { ls := make([]string, 0, 256) if err := r.findTOML("valid", &ls); err != nil { return nil, fmt.Errorf("reading 'valid/' dir: %w", err) } d := "invalid" + map[bool]string{true: "-encoder", false: ""}[r.Encoder] if err := r.findTOML(d, &ls); err != nil { return nil, fmt.Errorf("reading %q dir: %w", d, err) } return ls, nil } // Run all tests listed in t.RunTests. // // TODO: give option to: // - Run all tests with \n replaced with \r\n // - Run all tests with '# comment' appended to every line. func (r Runner) Run() (Tests, error) { skipped, err := r.findTests() if err != nil { return Tests{}, fmt.Errorf("tomltest.Runner.Run: %w", err) } tests := Tests{Tests: make([]Test, 0, len(r.RunTests)), Skipped: skipped} for _, p := range r.RunTests { if r.hasSkip(p) { tests.Skipped++ tests.Tests = append(tests.Tests, Test{Path: p, Skipped: true, Encoder: r.Encoder}) continue } t := Test{Path: p, Encoder: r.Encoder}.Run(r.Parser, r.Files) tests.Tests = append(tests.Tests, t) if t.Failed() { tests.Failed++ } else { tests.Passed++ } } return tests, nil } // find all TOML files in 'path' relative to the test directory. func (r Runner) findTOML(path string, appendTo *[]string) error { err := fs.WalkDir(r.Files, path, func(path string, d fs.DirEntry, err error) error { if err != nil { return err } if d.IsDir() || !strings.HasSuffix(path, ".toml") { return nil } *appendTo = append(*appendTo, strings.TrimSuffix(path, ".toml")) return nil }) // It's okay if the directory doesn't exist. var pErr *os.PathError if errors.As(err, &pErr) && pErr.Op == "open" && pErr.Path == path { return nil } return err } // Expand RunTest glob patterns, or return all tests if RunTests if empty. func (r *Runner) findTests() (int, error) { ls, err := r.List() if err != nil { return 0, err } var skip int if len(r.RunTests) == 0 { r.RunTests = ls } else { run := make([]string, 0, len(r.RunTests)) for _, l := range ls { for _, r := range r.RunTests { if m, _ := filepath.Match(r, l); m { run = append(run, l) break } } } r.RunTests, skip = run, len(ls)-len(run) } // Expand invalid tests ending in ".multi.toml" expanded := make([]string, 0, len(r.RunTests)) for _, path := range r.RunTests { if !strings.HasSuffix(path, ".multi") { expanded = append(expanded, path) continue } d, err := fs.ReadFile(r.Files, path+".toml") if err != nil { return 0, err } fmt.Println(string(d)) } r.RunTests = expanded return skip, nil } func (r Runner) hasSkip(path string) bool { for _, s := range r.SkipTests { if m, _ := filepath.Match(s, path); m { return true } } return false } func (c CommandParser) Encode(input string) (output string, outputIsError bool, err error) { stdout, stderr := new(bytes.Buffer), new(bytes.Buffer) cmd := exec.Command(c.cmd[0]) cmd.Args = c.cmd cmd.Stdin, cmd.Stdout, cmd.Stderr = strings.NewReader(input), stdout, stderr err = cmd.Run() if err != nil { eErr := &exec.ExitError{} if errors.As(err, &eErr) { fmt.Fprintf(stderr, "\nExit %d\n", eErr.ProcessState.ExitCode()) err = nil } } if stderr.Len() > 0 { return strings.TrimSpace(stderr.String()) + "\n", true, err } return strings.TrimSpace(stdout.String()) + "\n", false, err } func NewCommandParser(fsys fs.FS, cmd []string) CommandParser { return CommandParser{fsys, cmd} } func (c CommandParser) Decode(input string) (string, bool, error) { return c.Encode(input) } // Run this test. func (t Test) Run(p Parser, fsys fs.FS) Test { if t.Type() == TypeInvalid { return t.runInvalid(p, fsys) } return t.runValid(p, fsys) } func (t Test) runInvalid(p Parser, fsys fs.FS) Test { var err error _, t.Input, err = t.ReadInput(fsys) if err != nil { return t.bug(err.Error()) } if t.Encoder { t.Output, t.OutputFromStderr, err = p.Encode(t.Input) } else { t.Output, t.OutputFromStderr, err = p.Decode(t.Input) } if err != nil { return t.fail(err.Error()) } if !t.OutputFromStderr { return t.fail("Expected an error, but no error was reported.") } return t } func (t Test) runValid(p Parser, fsys fs.FS) Test { var err error _, t.Input, err = t.ReadInput(fsys) if err != nil { return t.bug(err.Error()) } if t.Encoder { t.Output, t.OutputFromStderr, err = p.Encode(t.Input) } else { t.Output, t.OutputFromStderr, err = p.Decode(t.Input) } if err != nil { return t.fail(err.Error()) } if t.OutputFromStderr { return t.fail(t.Output) } if t.Output == "" { // Special case: we expect an empty output here. if t.Path != "valid/empty-file" { return t.fail("stdout is empty") } } // Compare for encoder test if t.Encoder { want, err := t.ReadWantTOML(fsys) if err != nil { return t.bug(err.Error()) } var have interface{} if _, err := toml.Decode(t.Output, &have); err != nil { //return t.fail("decode TOML from encoder %q:\n %s", cmd, err) return t.fail("decode TOML from encoder:\n %s", err) } return t.cmpTOML(want, have) } // Compare for decoder test want, err := t.ReadWantJSON(fsys) if err != nil { return t.fail(err.Error()) } var have interface{} if err := json.Unmarshal([]byte(t.Output), &have); err != nil { return t.fail("decode JSON output from parser:\n %s", err) } return t.cmpJSON(want, have) } // ReadInput reads the file sent to the encoder. func (t Test) ReadInput(fsys fs.FS) (path, data string, err error) { path = t.Path + map[bool]string{true: ".json", false: ".toml"}[t.Encoder] d, err := fs.ReadFile(fsys, path) if err != nil { return path, "", err } return path, string(d), nil } func (t Test) ReadWant(fsys fs.FS) (path, data string, err error) { if t.Type() == TypeInvalid { panic("testoml.Test.ReadWant: invalid tests do not have a 'correct' version") } path = t.Path + map[bool]string{true: ".toml", false: ".json"}[t.Encoder] d, err := fs.ReadFile(fsys, path) if err != nil { return path, "", err } return path, string(d), nil } func (t *Test) ReadWantJSON(fsys fs.FS) (v interface{}, err error) { var path string path, t.Want, err = t.ReadWant(fsys) if err != nil { return nil, err } if err := json.Unmarshal([]byte(t.Want), &v); err != nil { return nil, fmt.Errorf("decode JSON file %q:\n %s", path, err) } return v, nil } func (t *Test) ReadWantTOML(fsys fs.FS) (v interface{}, err error) { var path string path, t.Want, err = t.ReadWant(fsys) if err != nil { return nil, err } _, err = toml.Decode(t.Want, &v) if err != nil { return nil, fmt.Errorf("Could not decode TOML file %q:\n %s", path, err) } return v, nil } // Test type: "valid", "invalid" func (t Test) Type() testType { if strings.HasPrefix(t.Path, "invalid") { return TypeInvalid } return TypeValid } func (t Test) fail(format string, v ...interface{}) Test { t.Failure = fmt.Sprintf(format, v...) return t } func (t Test) bug(format string, v ...interface{}) Test { return t.fail("BUG IN TEST CASE: "+format, v...) } func (t Test) Failed() bool { return t.Failure != "" } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/.gitattributes0000644000000000000000000000001600000000000017220 0ustar00*.toml -text ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/array/missing-separator.toml0000644000000000000000000000002200000000000023432 0ustar00wrong = [ 1 2 3 ] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/array/no-close-2.toml0000644000000000000000000000001200000000000021640 0ustar00x = [42 # ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/array/no-close-table-2.toml0000644000000000000000000000002200000000000022726 0ustar00x = [{ key = 42 # ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/array/no-close-table.toml0000644000000000000000000000002000000000000022565 0ustar00x = [{ key = 42 ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/array/no-close.toml0000644000000000000000000000002700000000000021507 0ustar00long_array = [ 1, 2, 3 ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/array/tables-1.toml0000644000000000000000000000006700000000000021404 0ustar00# INVALID TOML DOC fruit = [] [[fruit]] # Not allowed ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/array/tables-2.toml0000644000000000000000000000027400000000000021405 0ustar00# INVALID TOML DOC [[fruit]] name = "apple" [[fruit.variety]] name = "red delicious" # This table conflicts with the previous table [fruit.variety] name = "granny smith" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/array/text-after-array-entries.toml0000644000000000000000000000010600000000000024634 0ustar00array = [ "Is there life after an array separator?", No "Entry" ] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/array/text-before-array-separator.toml0000644000000000000000000000010700000000000025325 0ustar00array = [ "Is there life before an array separator?" No, "Entry" ] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/array/text-in-array.toml0000644000000000000000000000007000000000000022472 0ustar00array = [ "Entry 1", I don't belong, "Entry 2", ] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/bool/mixed-case.toml0000644000000000000000000000001600000000000021622 0ustar00valid = False ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/bool/wrong-case-false.toml0000644000000000000000000000001200000000000022734 0ustar00b = FALSE ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/bool/wrong-case-true.toml0000644000000000000000000000001100000000000022620 0ustar00a = TRUE ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/comment-del.toml0000644000000000000000000000003100000000000022531 0ustar00comment-del = "0x7f" #  ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/comment-lf.toml0000644000000000000000000000003200000000000022367 0ustar00comment-lf = "ctrl-P" #  ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/comment-null.toml0000644000000000000000000000003200000000000022740 0ustar00comment-null = "null" # ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/comment-us.toml0000644000000000000000000000003200000000000022415 0ustar00comment-us = "ctrl-_" #  ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/control.multi0000644000000000000000000000107000000000000022170 0ustar00# NOTE: this file contains literal control characters. comment-null = "null" # comment-lf = "ctrl-P" #  comment-us = "ctrl-_" #  comment-del = "0x7f" #  string-null = "null" string-lf = "null" string-us = "null" string-del = "null" rawstring-null = 'null' rawstring-lf = 'null' rawstring-us = 'null' rawstring-del = 'null' multi-null = """null""" multi-lf = """null""" multi-us = """null""" multi-del = """null""" rawmulti-null = '''null''' rawmulti-lf = '''null''' rawmulti-us = '''null''' rawmulti-del = '''null''' string-bs = "backspace" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/multi-del.toml0000644000000000000000000000003000000000000022220 0ustar00multi-del = """null""" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/multi-lf.toml0000644000000000000000000000002700000000000022063 0ustar00multi-lf = """null""" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/multi-null.toml0000644000000000000000000000003100000000000022427 0ustar00multi-null = """null""" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/multi-us.toml0000644000000000000000000000002700000000000022111 0ustar00multi-us = """null""" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/rawmulti-del.toml0000644000000000000000000000003300000000000022735 0ustar00rawmulti-del = '''null''' ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/rawmulti-lf.toml0000644000000000000000000000003200000000000022571 0ustar00rawmulti-lf = '''null''' ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/rawmulti-null.toml0000644000000000000000000000003400000000000023144 0ustar00rawmulti-null = '''null''' ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/rawmulti-us.toml0000644000000000000000000000003200000000000022617 0ustar00rawmulti-us = '''null''' ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/rawstring-del.toml0000644000000000000000000000003000000000000023106 0ustar00rawstring-del = 'null' ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/rawstring-lf.toml0000644000000000000000000000002700000000000022751 0ustar00rawstring-lf = 'null' ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/rawstring-null.toml0000644000000000000000000000003100000000000023315 0ustar00rawstring-null = 'null' ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/rawstring-us.toml0000644000000000000000000000002700000000000022777 0ustar00rawstring-us = 'null' ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/string-bs.toml0000644000000000000000000000003100000000000022235 0ustar00string-bs = "backspace" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/string-del.toml0000644000000000000000000000002500000000000022400 0ustar00string-del = "null" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/string-lf.toml0000644000000000000000000000002400000000000022234 0ustar00string-lf = "null" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/string-null.toml0000644000000000000000000000002600000000000022607 0ustar00string-null = "null" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/control/string-us.toml0000644000000000000000000000002400000000000022262 0ustar00string-us = "null" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/datetime/impossible-date.toml0000644000000000000000000000003100000000000023522 0ustar00d = 2006-01-50T00:00:00Z ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/datetime/no-leads-with-milli.toml0000644000000000000000000000004400000000000024224 0ustar00with-milli = 1987-07-5T17:45:00.12Z ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/datetime/no-leads.toml0000644000000000000000000000003700000000000022151 0ustar00no-leads = 1987-7-05T17:45:00Z ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/datetime/no-secs.toml0000644000000000000000000000003400000000000022013 0ustar00no-secs = 1987-07-05T17:45Z ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/datetime/no-t.toml0000644000000000000000000000003300000000000021320 0ustar00no-t = 1987-07-0517:45:00Z ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/datetime/trailing-t.toml0000644000000000000000000000002000000000000022511 0ustar00d = 2006-01-30T ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/encoding/bad-utf8-at-end.toml0000644000000000000000000000036200000000000023222 0ustar00# There is a 0xda at after the quotes, and no EOL at the end of the file. # # This is a bit of an edge case: This indicates there should be two bytes # (0b1101_1010) but there is no byte to follow because it's the end of the file. x = """"""././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/encoding/bad-utf8-in-comment.toml0000644000000000000000000000000400000000000024111 0ustar00# ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/encoding/bad-utf8-in-string.toml0000644000000000000000000000010300000000000023755 0ustar00# The following line contains an invalid UTF-8 sequence. bad = "" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/encoding/bom-not-at-start-1.toml0000644000000000000000000000002400000000000023703 0ustar00bom-not-at-start ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/encoding/bom-not-at-start-2.toml0000644000000000000000000000002500000000000023705 0ustar00bom-not-at-start= ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/encoding/utf16-bom.toml0000644000000000000000000000004600000000000022161 0ustar00# UTF-16 with BOM ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/encoding/utf16.toml0000644000000000000000000000005200000000000021403 0ustar00# UTF-16 without BOM ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/double-point-1.toml0000644000000000000000000000002600000000000022515 0ustar00double-point-1 = 0..1 ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/double-point-2.toml0000644000000000000000000000002700000000000022517 0ustar00double-point-2 = 0.1.2 ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/exp-double-e-1.toml0000644000000000000000000000002600000000000022402 0ustar00exp-double-e-1 = 1ee2 ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/exp-double-e-2.toml0000644000000000000000000000002700000000000022404 0ustar00exp-double-e-2 = 1e2e3 ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/exp-double-us.toml0000644000000000000000000000002700000000000022450 0ustar00exp-double-us = 1e__23 ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/exp-leading-us.toml0000644000000000000000000000002700000000000022601 0ustar00exp-leading-us = 1e_23 ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/exp-point-1.toml0000644000000000000000000000002400000000000022035 0ustar00exp-point-1 = 1e2.3 ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1644319432.225574 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/exp-point-2.toml0000644000000000000000000000002300000000000022035 0ustar00exp-point-2 = 1.e2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/exp-trailing-us.toml0000644000000000000000000000003100000000000023002 0ustar00exp-trailing-us = 1e_23_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/float.multi0000644000000000000000000000127100000000000021245 0ustar00leading-zero = 03.14 leading-zero-neg = -03.14 leading-zero-plus = +03.14 leading-point = .12345 leading-point-neg = -.12345 leading-point-plus = +.12345 trailing-point = 1. trailing-point-min = -1. trailing-point-plus = +1. trailing-us = 1.2_ leading-us = _1.2 us-before-point = 1_.2 us-after-point = 1._2 double-point-1 = 0..1 double-point-2 = 0.1.2 exp-point-1 = 1e2.3 exp-point-2 = 1.e2 exp-double-e-1 = 1ee2 exp-double-e-2 = 1e2e3 exp-leading-us = 1e_23 exp-trailing-us = 1e_23_ exp-double-us = 1e__23 inf-incomplete-1 = in inf-incomplete-2 = +in inf-incomplete-3 = -in nan-incomplete-1 = na nan-incomplete-2 = +na nan-incomplete-3 = -na nan_underscore = na_n inf_underscore = in_f ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/inf-incomplete-1.toml0000644000000000000000000000002600000000000023025 0ustar00inf-incomplete-1 = in ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/inf-incomplete-2.toml0000644000000000000000000000002700000000000023027 0ustar00inf-incomplete-2 = +in ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/inf-incomplete-3.toml0000644000000000000000000000002700000000000023030 0ustar00inf-incomplete-3 = -in ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/inf_underscore.toml0000644000000000000000000000002600000000000022763 0ustar00inf_underscore = in_f ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/leading-point-neg.toml0000644000000000000000000000003400000000000023256 0ustar00leading-point-neg = -.12345 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/leading-point-plus.toml0000644000000000000000000000003500000000000023471 0ustar00leading-point-plus = +.12345 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/leading-point.toml0000644000000000000000000000002700000000000022511 0ustar00leading-point = .12345 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/leading-us.toml0000644000000000000000000000002200000000000022002 0ustar00leading-us = _1.2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/leading-zero-neg.toml0000644000000000000000000000003200000000000023102 0ustar00leading-zero-neg = -03.14 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/leading-zero-plus.toml0000644000000000000000000000003300000000000023315 0ustar00leading-zero-plus = +03.14 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/leading-zero.toml0000644000000000000000000000002500000000000022335 0ustar00leading-zero = 03.14 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/nan-incomplete-1.toml0000644000000000000000000000002600000000000023025 0ustar00nan-incomplete-1 = na ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/nan-incomplete-2.toml0000644000000000000000000000002700000000000023027 0ustar00nan-incomplete-2 = +na ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/nan-incomplete-3.toml0000644000000000000000000000002700000000000023030 0ustar00nan-incomplete-3 = -na ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/nan_underscore.toml0000644000000000000000000000002600000000000022763 0ustar00nan_underscore = na_n ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/trailing-point-min.toml0000644000000000000000000000003100000000000023473 0ustar00trailing-point-min = -1. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/trailing-point-plus.toml0000644000000000000000000000003200000000000023674 0ustar00trailing-point-plus = +1. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/trailing-point.toml0000644000000000000000000000002400000000000022714 0ustar00trailing-point = 1. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/trailing-us.toml0000644000000000000000000000002300000000000022211 0ustar00trailing-us = 1.2_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/us-after-point.toml0000644000000000000000000000002600000000000022633 0ustar00us-after-point = 1._2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/float/us-before-point.toml0000644000000000000000000000002700000000000022775 0ustar00us-before-point = 1_.2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/inline-table/double-comma.toml0000644000000000000000000000001700000000000023560 0ustar00t = {x=3,,y=4} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/inline-table/empty.toml0000644000000000000000000000001000000000000022343 0ustar00t = {,} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/inline-table/linebreak-1.toml0000644000000000000000000000015700000000000023313 0ustar00# No newlines are allowed between the curly braces unless they are valid within # a value. simple = { a = 1 } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/inline-table/linebreak-2.toml0000644000000000000000000000001700000000000023307 0ustar00t = {a=1, b=2} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/inline-table/linebreak-3.toml0000644000000000000000000000001700000000000023310 0ustar00t = {a=1 ,b=2} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/inline-table/linebreak-4.toml0000644000000000000000000000011300000000000023306 0ustar00json_like = { first = "Tom", last = "Preston-Werner" } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/inline-table/no-comma.toml0000644000000000000000000000002200000000000022716 0ustar00t = {x = 3 y = 4} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/inline-table/trailing-comma.toml0000644000000000000000000000021400000000000024116 0ustar00# A terminating comma (also called trailing comma) is not permitted after the # last key/value pair in an inline table abc = { abc = 123, } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/capital-bin.toml0000644000000000000000000000002200000000000022465 0ustar00capital-bin = 0B0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/capital-hex.toml0000644000000000000000000000002200000000000022501 0ustar00capital-hex = 0X1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/capital-oct.toml0000644000000000000000000000002200000000000022502 0ustar00capital-oct = 0O0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/double-sign-nex.toml0000644000000000000000000000002700000000000023307 0ustar00double-sign-nex = --99 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/double-sign-plus.toml0000644000000000000000000000003000000000000023472 0ustar00double-sign-plus = ++99 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/double-us.toml0000644000000000000000000000002200000000000022201 0ustar00double-us = 1__23 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/integer.multi0000644000000000000000000000121400000000000022122 0ustar00leading-zero-1 = 01 leading-zero-2 = 00 leading-zero-sign-1 = -01 leading-zero-sign-2 = +01 double-sign-plus = ++99 double-sign-nex = --99 negative-hex = -0xff negative-bin = -0b11010110 negative-oct = -0o99 positive-hex = +0xff positive-bin = +0b11010110 positive-oct = +0o99 trailing-us = 123_ leading-us = _123 double-us = 1__23 us-after-hex = 0x_1 us-after-oct = 0o_1 us-after-bin = 0b_1 trailing-us-hex = 0x1_ trailing-us-oct = 0o1_ trailing-us-bin = 0b1_ leading-us-hex = _0o1 leading-us-oct = _0o1 leading-us-bin = _0o1 invalid-hex = 0xaafz invalid-oct = 0o778 invalid-bin = 0b0012 capital-hex = 0X1 capital-oct = 0O0 capital-bin = 0B0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/invalid-bin.toml0000644000000000000000000000002500000000000022501 0ustar00invalid-bin = 0b0012 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/invalid-hex.toml0000644000000000000000000000002500000000000022515 0ustar00invalid-hex = 0xaafz ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/invalid-oct.toml0000644000000000000000000000002400000000000022515 0ustar00invalid-oct = 0o778 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/leading-us-bin.toml0000644000000000000000000000002600000000000023104 0ustar00leading-us-bin = _0o1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/leading-us-hex.toml0000644000000000000000000000002600000000000023120 0ustar00leading-us-hex = _0o1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/leading-us-oct.toml0000644000000000000000000000002600000000000023121 0ustar00leading-us-oct = _0o1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/leading-us.toml0000644000000000000000000000002200000000000022332 0ustar00leading-us = _123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/leading-zero-1.toml0000644000000000000000000000002400000000000023022 0ustar00leading-zero-1 = 01 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/leading-zero-2.toml0000644000000000000000000000002400000000000023023 0ustar00leading-zero-2 = 00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/leading-zero-sign-1.toml0000644000000000000000000000003200000000000023757 0ustar00leading-zero-sign-1 = -01 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/leading-zero-sign-2.toml0000644000000000000000000000003200000000000023760 0ustar00leading-zero-sign-2 = +01 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/negative-bin.toml0000644000000000000000000000003300000000000022654 0ustar00negative-bin = -0b11010110 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/negative-hex.toml0000644000000000000000000000002500000000000022671 0ustar00negative-hex = -0xff ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/negative-oct.toml0000644000000000000000000000002500000000000022672 0ustar00negative-oct = -0o99 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/positive-bin.toml0000644000000000000000000000003300000000000022714 0ustar00positive-bin = +0b11010110 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/positive-hex.toml0000644000000000000000000000002500000000000022731 0ustar00positive-hex = +0xff ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/positive-oct.toml0000644000000000000000000000002500000000000022732 0ustar00positive-oct = +0o99 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/text-after-integer.toml0000644000000000000000000000004100000000000024021 0ustar00answer = 42 the ultimate answer? ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/trailing-us-bin.toml0000644000000000000000000000002700000000000023313 0ustar00trailing-us-bin = 0b1_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/trailing-us-hex.toml0000644000000000000000000000002700000000000023327 0ustar00trailing-us-hex = 0x1_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/trailing-us-oct.toml0000644000000000000000000000002700000000000023330 0ustar00trailing-us-oct = 0o1_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/trailing-us.toml0000644000000000000000000000002300000000000022541 0ustar00trailing-us = 123_ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/us-after-bin.toml0000644000000000000000000000002400000000000022600 0ustar00us-after-bin = 0b_1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/us-after-hex.toml0000644000000000000000000000002400000000000022614 0ustar00us-after-hex = 0x_1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/integer/us-after-oct.toml0000644000000000000000000000002400000000000022615 0ustar00us-after-oct = 0o_1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/after-array.toml0000644000000000000000000000004000000000000021652 0ustar00[[agencies]] owner = "S Cjelli" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/after-table.toml0000644000000000000000000000004400000000000021627 0ustar00[error] this = "should not be here" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/after-value.toml0000644000000000000000000000006000000000000021652 0ustar00first = "Tom" last = "Preston-Werner" # INVALID ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/bare-invalid-character.toml0000644000000000000000000000001700000000000023730 0ustar00bare!key = 123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/dotted-redefine-table.toml0000644000000000000000000000011400000000000023566 0ustar00# Defined a.b as int a.b = 1 # Tries to access it as table: error a.b.c = 2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/duplicate-keys.toml0000644000000000000000000000003100000000000022360 0ustar00dupe = false dupe = true ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/duplicate.toml0000644000000000000000000000005700000000000021417 0ustar00# DO NOT DO THIS name = "Tom" name = "Pradyun" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/empty.toml0000644000000000000000000000000500000000000020574 0ustar00 = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/escape.toml0000644000000000000000000000005500000000000020703 0ustar00\u00c0 = "latin capital letter A with grave" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/hash.toml0000644000000000000000000000000700000000000020363 0ustar00a# = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/multiline.toml0000644000000000000000000000002300000000000021440 0ustar00"""long key""" = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/newline.toml0000644000000000000000000000002100000000000021075 0ustar00barekey = 123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/no-eol.toml0000644000000000000000000000001400000000000020627 0ustar00a = 1 b = 2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/open-bracket.toml0000644000000000000000000000001100000000000022005 0ustar00[abc = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/partial-quoted.toml0000644000000000000000000000002400000000000022372 0ustar00partial"quoted" = 5 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/single-open-bracket.toml0000644000000000000000000000000200000000000023264 0ustar00[ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/space.toml0000644000000000000000000000001000000000000020525 0ustar00a b = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/special-character.toml0000644000000000000000000000003500000000000023013 0ustar00μ = "greek small letter mu" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/start-bracket.toml0000644000000000000000000000002100000000000022202 0ustar00[a] [xyz = 5 [b] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/two-equals.toml0000644000000000000000000000001100000000000021534 0ustar00key= = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/two-equals2.toml0000644000000000000000000000000500000000000021621 0ustar00a==1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/two-equals3.toml0000644000000000000000000000000600000000000021623 0ustar00a=b=1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/without-value-1.toml0000644000000000000000000000000400000000000022410 0ustar00key ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/key/without-value-2.toml0000644000000000000000000000000700000000000022414 0ustar00key = ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/bad-byte-escape.toml0000644000000000000000000000002100000000000023077 0ustar00naughty = "\xAg" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/bad-codepoint.toml0000644000000000000000000000012100000000000022663 0ustar00invalid-codepoint = "This string contains a non scalar unicode codepoint \uD801" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/bad-concat.toml0000644000000000000000000000003500000000000022152 0ustar00no_concat = "first" "second" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/bad-escape.toml0000644000000000000000000000007600000000000022150 0ustar00invalid-escape = "This string has a bad \a escape character." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/bad-multiline.toml0000644000000000000000000000004100000000000022702 0ustar00multi = "first line second line" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/bad-slash-escape.toml0000644000000000000000000000007600000000000023260 0ustar00invalid-escape = "This string has a bad \/ escape character." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/bad-uni-esc.toml0000644000000000000000000000001700000000000022246 0ustar00str = "val\ue" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/basic-byte-escapes.toml0000644000000000000000000000002000000000000023614 0ustar00answer = "\x33" ././@PaxHeader0000000000000000000000000000021300000000000010211 xustar00111 path=tomlkit-0.9.2/tests/toml-test/tests/invalid/string/basic-multiline-out-of-range-unicode-escape-1.toml 28 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/basic-multiline-out-of-range-unicode-escape-1.tom0000644000000000000000000000002500000000000030404 0ustar00a = """\UFFFFFFFF""" ././@PaxHeader0000000000000000000000000000021300000000000010211 xustar00111 path=tomlkit-0.9.2/tests/toml-test/tests/invalid/string/basic-multiline-out-of-range-unicode-escape-2.toml 28 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/basic-multiline-out-of-range-unicode-escape-2.tom0000644000000000000000000000002500000000000030405 0ustar00a = """\U00D80000""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/basic-multiline-quotes.toml0000644000000000000000000000006200000000000024556 0ustar00str5 = """Here are three quotation marks: """.""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/basic-multiline-unknown-escape.toml0000644000000000000000000000001500000000000026171 0ustar00a = """\@""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/basic-out-of-range-unicode-escape-1.toml0000644000000000000000000000002100000000000026554 0ustar00a = "\UFFFFFFFF" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/basic-out-of-range-unicode-escape-2.toml0000644000000000000000000000002100000000000026555 0ustar00a = "\U00D80000" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/basic-unknown-escape.toml0000644000000000000000000000001100000000000024165 0ustar00a = "\@" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/literal-multiline-quotes-1.toml0000644000000000000000000000003600000000000025270 0ustar00a = '''6 apostrophes: '''''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/literal-multiline-quotes-2.toml0000644000000000000000000000005200000000000025267 0ustar00a = '''15 apostrophes: '''''''''''''''''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/missing-quotes.toml0000644000000000000000000000001500000000000023144 0ustar00name = value ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/multiline-escape-space.toml0000644000000000000000000000003400000000000024507 0ustar00a = """ foo \ \n bar""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/multiline-no-close-2.toml0000644000000000000000000000000600000000000024033 0ustar00x=""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/multiline-no-close.toml0000644000000000000000000000004100000000000023673 0ustar00invalid = """ this will fail ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/multiline-quotes-1.toml0000644000000000000000000000003000000000000023630 0ustar00a = """6 quotes: """""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/multiline-quotes-2.toml0000644000000000000000000000003000000000000023631 0ustar00a = """6 quotes: """""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/no-close.toml0000644000000000000000000000005200000000000021675 0ustar00no-ending-quote = "One time, at band camp ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/text-after-string.toml0000644000000000000000000000005400000000000023547 0ustar00string = "Is there life after strings?" No. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/string/wrong-close.toml0000644000000000000000000000004700000000000022421 0ustar00bad-ending-quote = "double and single' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/array-empty.toml0000644000000000000000000000003200000000000022207 0ustar00[[]] name = "Born to Run" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/array-implicit.toml0000644000000000000000000000115600000000000022673 0ustar00# This test is a bit tricky. It should fail because the first use of # `[[albums.songs]]` without first declaring `albums` implies that `albums` # must be a table. The alternative would be quite weird. Namely, it wouldn't # comply with the TOML spec: "Each double-bracketed sub-table will belong to # the most *recently* defined table element *above* it." # # This is in contrast to the *valid* test, table-array-implicit where # `[[albums.songs]]` works by itself, so long as `[[albums]]` isn't declared # later. (Although, `[albums]` could be.) [[albums.songs]] name = "Glory Days" [[albums]] name = "Born in the USA" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/array-missing-bracket.toml0000644000000000000000000000003700000000000024140 0ustar00[[albums] name = "Born to Run" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/duplicate-key-table.toml0000644000000000000000000000006300000000000023566 0ustar00[fruit] type = "apple" [fruit.type] apple = "yes" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/duplicate-table-array.toml0000644000000000000000000000001600000000000024112 0ustar00[tbl] [[tbl]] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/duplicate-table-array2.toml0000644000000000000000000000001600000000000024174 0ustar00[[tbl]] [tbl] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/duplicate.toml0000644000000000000000000000002500000000000021711 0ustar00[a] b = 1 [a] c = 2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/empty-implicit-table.toml0000644000000000000000000000002300000000000023770 0ustar00[naughty..naughty] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/empty.toml0000644000000000000000000000000300000000000021071 0ustar00[] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/equals-sign.toml0000644000000000000000000000001300000000000022164 0ustar00[name=bad] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/llbrace.toml0000644000000000000000000000001300000000000021340 0ustar00[ [table]] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/nested-brackets-close.toml0000644000000000000000000000001700000000000024121 0ustar00[a]b] zyx = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/nested-brackets-open.toml0000644000000000000000000000001700000000000023755 0ustar00[a[b] zyx = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/quoted-no-close.toml0000644000000000000000000000004200000000000022754 0ustar00["where will it end] name = value ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/redefine.toml0000644000000000000000000000011600000000000021521 0ustar00# Define b as int, and try to use it as a table: error [a] b = 1 [a.b] c = 2 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/rrbrace.toml0000644000000000000000000000001300000000000021354 0ustar00[[table] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/text-after-table.toml0000644000000000000000000000003700000000000023112 0ustar00[error] this shouldn't be here ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/whitespace.toml0000644000000000000000000000001600000000000022073 0ustar00[invalid key] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/invalid/table/with-pound.toml0000644000000000000000000000003000000000000022031 0ustar00[key#group] answer = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/array.json0000644000000000000000000000166400000000000020565 0ustar00{ "comments": [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" } ], "dates": [ { "type": "datetime", "value": "1987-07-05T17:45:00Z" }, { "type": "datetime", "value": "1979-05-27T07:32:00Z" }, { "type": "datetime", "value": "2006-06-01T11:00:00Z" } ], "floats": [ { "type": "float", "value": "1.1" }, { "type": "float", "value": "2.1" }, { "type": "float", "value": "3.1" } ], "ints": [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" }, { "type": "integer", "value": "3" } ], "strings": [ { "type": "string", "value": "a" }, { "type": "string", "value": "b" }, { "type": "string", "value": "c" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/array.toml0000644000000000000000000000031500000000000020557 0ustar00ints = [1, 2, 3, ] floats = [1.1, 2.1, 3.1] strings = ["a", "b", "c"] dates = [ 1987-07-05T17:45:00Z, 1979-05-27T07:32:00Z, 2006-06-01T11:00:00Z, ] comments = [ 1, 2, #this is ok ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/bool.json0000644000000000000000000000020300000000000020366 0ustar00{ "a": [ { "type": "bool", "value": "true" }, { "type": "bool", "value": "false" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/bool.toml0000644000000000000000000000002200000000000020367 0ustar00a = [true, false] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/empty.json0000644000000000000000000000012400000000000020573 0ustar00{ "thevoid": [ [ [ [ [] ] ] ] ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/empty.toml0000644000000000000000000000002500000000000020575 0ustar00thevoid = [[[[[]]]]] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/hetergeneous.json0000644000000000000000000000067400000000000022144 0ustar00{ "mixed": [ [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" } ], [ { "type": "string", "value": "a" }, { "type": "string", "value": "b" } ], [ { "type": "float", "value": "1.1" }, { "type": "float", "value": "2.1" } ] ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/hetergeneous.toml0000644000000000000000000000005100000000000022133 0ustar00mixed = [[1, 2], ["a", "b"], [1.1, 2.1]] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/mixed-int-array.json0000644000000000000000000000027200000000000022453 0ustar00{ "arrays-and-ints": [ { "type": "integer", "value": "1" }, [ { "type": "string", "value": "Arrays are not integers." } ] ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/mixed-int-array.toml0000644000000000000000000000006500000000000022455 0ustar00arrays-and-ints = [1, ["Arrays are not integers."]] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/mixed-int-float.json0000644000000000000000000000022000000000000022433 0ustar00{ "ints-and-floats": [ { "type": "integer", "value": "1" }, { "type": "float", "value": "1.1" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/mixed-int-float.toml0000644000000000000000000000003300000000000022437 0ustar00ints-and-floats = [1, 1.1] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/mixed-int-string.json0000644000000000000000000000022200000000000022636 0ustar00{ "strings-and-ints": [ { "type": "string", "value": "hi" }, { "type": "integer", "value": "42" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/mixed-int-string.toml0000644000000000000000000000003600000000000022643 0ustar00strings-and-ints = ["hi", 42] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/mixed-string-table.json0000644000000000000000000000061100000000000023135 0ustar00{ "contributors": [ { "type": "string", "value": "Foo Bar \u003cfoo@example.com\u003e" }, { "email": { "type": "string", "value": "bazqux@example.com" }, "name": { "type": "string", "value": "Baz Qux" }, "url": { "type": "string", "value": "https://example.com/bazqux" } } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/mixed-string-table.toml0000644000000000000000000000021300000000000023135 0ustar00contributors = [ "Foo Bar ", { name = "Baz Qux", email = "bazqux@example.com", url = "https://example.com/bazqux" } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/nested-double.json0000644000000000000000000000057600000000000022202 0ustar00{ "nest": [ [ [ { "type": "string", "value": "a" } ], [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" }, [ { "type": "integer", "value": "3" } ] ] ] ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/nested-double.toml0000644000000000000000000000005000000000000022167 0ustar00nest = [ [ ["a"], [1, 2, [3]] ] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/nested-inline-table.json0000644000000000000000000000005300000000000023261 0ustar00{ "a": [ { "b": {} } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/nested-inline-table.toml0000644000000000000000000000002300000000000023260 0ustar00a = [ { b = {} } ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/nested.json0000644000000000000000000000025300000000000020722 0ustar00{ "nest": [ [ { "type": "string", "value": "a" } ], [ { "type": "string", "value": "b" } ] ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/nested.toml0000644000000000000000000000002600000000000020722 0ustar00nest = [["a"], ["b"]] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/nospaces.json0000644000000000000000000000027600000000000021260 0ustar00{ "ints": [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" }, { "type": "integer", "value": "3" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/nospaces.toml0000644000000000000000000000001700000000000021253 0ustar00ints = [1,2,3] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/string-quote-comma-2.json0000644000000000000000000000012000000000000023323 0ustar00{ "title": [ { "type": "string", "value": " \", " } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/string-quote-comma-2.toml0000644000000000000000000000002400000000000023330 0ustar00title = [ " \", ",] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/string-quote-comma.json0000644000000000000000000000024700000000000023176 0ustar00{ "title": [ { "type": "string", "value": "Client: \"XXXX\", Job: XXXX" }, { "type": "string", "value": "Code: XXXX" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/string-quote-comma.toml0000644000000000000000000000007000000000000023172 0ustar00title = [ "Client: \"XXXX\", Job: XXXX", "Code: XXXX" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/string-with-comma.json0000644000000000000000000000024300000000000023010 0ustar00{ "title": [ { "type": "string", "value": "Client: XXXX, Job: XXXX" }, { "type": "string", "value": "Code: XXXX" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/string-with-comma.toml0000644000000000000000000000006400000000000023013 0ustar00title = [ "Client: XXXX, Job: XXXX", "Code: XXXX" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/strings.json0000644000000000000000000000042100000000000021126 0ustar00{ "string_array": [ { "type": "string", "value": "all" }, { "type": "string", "value": "strings" }, { "type": "string", "value": "are the same" }, { "type": "string", "value": "type" } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/strings.toml0000644000000000000000000000010300000000000021125 0ustar00string_array = [ "all", 'strings', """are the same""", '''type'''] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/table-array-string-backslash.json0000644000000000000000000000015700000000000025103 0ustar00{ "foo": [ { "bar": { "type": "string", "value": "\"{{baz}}\"" } } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/array/table-array-string-backslash.toml0000644000000000000000000000003700000000000025102 0ustar00foo = [ { bar="\"{{baz}}\""} ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/bool/bool.json0000644000000000000000000000016000000000000020205 0ustar00{ "f": { "type": "bool", "value": "false" }, "t": { "type": "bool", "value": "true" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/bool/bool.toml0000644000000000000000000000002300000000000020205 0ustar00t = true f = false ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/comment/at-eof.json0000644000000000000000000000007600000000000021142 0ustar00{ "key": { "type": "string", "value": "value" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/comment/at-eof.toml0000644000000000000000000000012500000000000021137 0ustar00# This is a full-line comment key = "value" # This is a comment at the end of a line ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/comment/at-eof2.json0000644000000000000000000000007600000000000021224 0ustar00{ "key": { "type": "string", "value": "value" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/comment/at-eof2.toml0000644000000000000000000000012500000000000021221 0ustar00# This is a full-line comment key = "value" # This is a comment at the end of a line ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/comment/everywhere.json0000644000000000000000000000050700000000000022153 0ustar00{ "group": { "answer": { "type": "integer", "value": "42" }, "d": { "type": "datetime", "value": "1979-05-27T07:32:12-07:00" }, "more": [ { "type": "integer", "value": "42" }, { "type": "integer", "value": "42" } ] } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/comment/everywhere.toml0000644000000000000000000000105400000000000022153 0ustar00# Top comment. # Top comment. # Top comment. # [no-extraneous-groups-please] [group] # Comment answer = 42 # Comment # no-extraneous-keys-please = 999 # Inbetween comment. more = [ # Comment # What about multiple # comments? # Can you handle it? # # Evil. # Evil. 42, 42, # Comments within arrays are fun. # What about multiple # comments? # Can you handle it? # # Evil. # Evil. # ] Did I fool you? ] # Hopefully not. # Make sure the space between the datetime and "#" isn't lexed. d = 1979-05-27T07:32:12-07:00 # c ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/comment/tricky.json0000644000000000000000000000277100000000000021300 0ustar00{ "hash#tag": { "#!": { "type": "string", "value": "hash bang" }, "arr3": [ { "type": "string", "value": "#" }, { "type": "string", "value": "#" }, { "type": "string", "value": "###" } ], "arr4": [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" }, { "type": "integer", "value": "3" }, { "type": "integer", "value": "4" } ], "arr5": [ [ [ [ [ { "type": "string", "value": "#" } ] ] ] ] ], "tbl1": { "#": { "type": "string", "value": "}#" } } }, "section": { "8": { "type": "string", "value": "eight" }, "eleven": { "type": "float", "value": "11.1" }, "five": { "type": "float", "value": "5.5" }, "four": { "type": "string", "value": "# no comment\n# nor this\n#also not comment" }, "one": { "type": "string", "value": "11" }, "six": { "type": "integer", "value": "6" }, "ten": { "type": "float", "value": "1000.0" }, "three": { "type": "string", "value": "#" }, "two": { "type": "string", "value": "22#" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/comment/tricky.toml0000644000000000000000000000060100000000000021270 0ustar00[section]#attached comment #[notsection] one = "11"#cmt two = "22#" three = '#' four = """# no comment # nor this #also not comment"""#is_comment five = 5.5#66 six = 6#7 8 = "eight" #nine = 99 ten = 10e2#1 eleven = 1.11e1#23 ["hash#tag"] "#!" = "hash bang" arr3 = [ "#", '#', """###""" ] arr4 = [ 1,# 9, 9, 2#,9 ,#9 3#] ,4] arr5 = [[[[#["#"], ["#"]]]]#] ] tbl1 = { "#" = '}#'}#}} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/datetime/datetime.json0000644000000000000000000000023700000000000021714 0ustar00{ "lower": { "type": "datetime", "value": "1987-07-05T17:45:00Z" }, "space": { "type": "datetime", "value": "1987-07-05T17:45:00Z" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/datetime/datetime.toml0000644000000000000000000000007200000000000021713 0ustar00space = 1987-07-05 17:45:00Z lower = 1987-07-05t17:45:00z ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/datetime/local-date.json0000644000000000000000000000011700000000000022122 0ustar00{ "bestdayever": { "type": "date-local", "value": "1987-07-05" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/datetime/local-date.toml0000644000000000000000000000003100000000000022117 0ustar00bestdayever = 1987-07-05 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/datetime/local-time.json0000644000000000000000000000023500000000000022144 0ustar00{ "besttimeever": { "type": "time-local", "value": "17:45:00" }, "milliseconds": { "type": "time-local", "value": "10:32:00.555" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/datetime/local-time.toml0000644000000000000000000000006400000000000022146 0ustar00besttimeever = 17:45:00 milliseconds = 10:32:00.555 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/datetime/local.json0000644000000000000000000000040000000000000021202 0ustar00{ "local": { "type": "datetime-local", "value": "1987-07-05T17:45:00" }, "milli": { "type": "datetime-local", "value": "1977-12-21T10:32:00.555" }, "space": { "type": "datetime-local", "value": "1987-07-05T17:45:00" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/datetime/local.toml0000644000000000000000000000013000000000000021204 0ustar00local = 1987-07-05T17:45:00 milli = 1977-12-21T10:32:00.555 space = 1987-07-05 17:45:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2295742 tomlkit-0.9.2/tests/toml-test/tests/valid/datetime/milliseconds.json0000644000000000000000000000053700000000000022610 0ustar00{ "utc1": { "type": "datetime", "value": "1987-07-05T17:45:56.123456Z" }, "utc2": { "type": "datetime", "value": "1987-07-05T17:45:56.600000Z" }, "wita1": { "type": "datetime", "value": "1987-07-05T17:45:56.123456+08:00" }, "wita2": { "type": "datetime", "value": "1987-07-05T17:45:56.600000+08:00" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/datetime/milliseconds.toml0000644000000000000000000000022000000000000022577 0ustar00utc1 = 1987-07-05T17:45:56.123456Z utc2 = 1987-07-05T17:45:56.6Z wita1 = 1987-07-05T17:45:56.123456+08:00 wita2 = 1987-07-05T17:45:56.6+08:00 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/datetime/timezone.json0000644000000000000000000000050400000000000021747 0ustar00{ "nzdt": { "type": "datetime", "value": "1987-07-05T17:45:56+13:00" }, "nzst": { "type": "datetime", "value": "1987-07-05T17:45:56+12:00" }, "pdt": { "type": "datetime", "value": "1987-07-05T17:45:56-05:00" }, "utc": { "type": "datetime", "value": "1987-07-05T17:45:56Z" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/datetime/timezone.toml0000644000000000000000000000020600000000000021750 0ustar00utc = 1987-07-05T17:45:56Z pdt = 1987-07-05T17:45:56-05:00 nzst = 1987-07-05T17:45:56+12:00 nzdt = 1987-07-05T17:45:56+13:00 # DST ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/empty-file.json0000644000000000000000000000000300000000000020366 0ustar00{} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/empty-file.toml0000644000000000000000000000000000000000000020365 0ustar00././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/example.json0000644000000000000000000000062200000000000017755 0ustar00{ "best-day-ever": { "type": "datetime", "value": "1987-07-05T17:45:00Z" }, "numtheory": { "boring": { "type": "bool", "value": "false" }, "perfection": [ { "type": "integer", "value": "6" }, { "type": "integer", "value": "28" }, { "type": "integer", "value": "496" } ] } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/example.toml0000644000000000000000000000013300000000000017754 0ustar00best-day-ever = 1987-07-05T17:45:00Z [numtheory] boring = false perfection = [6, 28, 496] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/float/exponent.json0000644000000000000000000000075100000000000021272 0ustar00{ "lower": { "type": "float", "value": "300.0" }, "minustenth": { "type": "float", "value": "-0.1" }, "neg": { "type": "float", "value": "0.03" }, "pointlower": { "type": "float", "value": "310.0" }, "pointupper": { "type": "float", "value": "310.0" }, "pos": { "type": "float", "value": "300.0" }, "upper": { "type": "float", "value": "300.0" }, "zero": { "type": "float", "value": "3.0" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/float/exponent.toml0000644000000000000000000000016200000000000021270 0ustar00lower = 3e2 upper = 3E2 neg = 3e-2 pos = 3E+2 zero = 3e0 pointlower = 3.1e2 pointupper = 3.1E2 minustenth = -1E-1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/float/float.json0000644000000000000000000000036500000000000020540 0ustar00{ "negpi": { "type": "float", "value": "-3.14" }, "pi": { "type": "float", "value": "3.14" }, "pospi": { "type": "float", "value": "3.14" }, "zero-intpart": { "type": "float", "value": "0.123" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/float/float.toml0000644000000000000000000000007300000000000020536 0ustar00pi = 3.14 pospi = +3.14 negpi = -3.14 zero-intpart = 0.123 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/float/inf-and-nan.json0000644000000000000000000000056600000000000021524 0ustar00{ "infinity": { "type": "float", "value": "inf" }, "infinity_neg": { "type": "float", "value": "-inf" }, "infinity_plus": { "type": "float", "value": "+inf" }, "nan": { "type": "float", "value": "nan" }, "nan_neg": { "type": "float", "value": "nan" }, "nan_plus": { "type": "float", "value": "nan" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/float/inf-and-nan.toml0000644000000000000000000000035000000000000021515 0ustar00# We don't encode +nan and -nan back with the signs; many languages don't # support a sign on NaN (it doesn't really make much sense). nan = nan nan_neg = -nan nan_plus = +nan infinity = inf infinity_neg = -inf infinity_plus = +inf ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/float/long.json0000644000000000000000000000023100000000000020362 0ustar00{ "longpi": { "type": "float", "value": "3.141592653589793" }, "neglongpi": { "type": "float", "value": "-3.141592653589793" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/float/long.toml0000644000000000000000000000007200000000000020367 0ustar00longpi = 3.141592653589793 neglongpi = -3.141592653589793 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/float/underscore.json0000644000000000000000000000030400000000000021575 0ustar00{ "after": { "type": "float", "value": "3141.5927" }, "before": { "type": "float", "value": "3141.5927" }, "exponent": { "type": "float", "value": "3.0e14" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/float/underscore.toml0000644000000000000000000000007000000000000021577 0ustar00before = 3_141.5927 after = 3141.592_7 exponent = 3e1_4 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/float/zero.json0000644000000000000000000000056600000000000020415 0ustar00{ "f1": { "type": "float", "value": "0" }, "f2": { "type": "float", "value": "0" }, "f3": { "type": "float", "value": "0" }, "f4": { "type": "float", "value": "0" }, "f5": { "type": "float", "value": "0" }, "f6": { "type": "float", "value": "0" }, "f7": { "type": "float", "value": "0" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/float/zero.toml0000644000000000000000000000010400000000000020403 0ustar00f1 = 0.0 f2 = +0.0 f3 = -0.0 f4 = 0e0 f5 = 0e00 f6 = +0e0 f7 = -0e0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/implicit-and-explicit-after.json0000644000000000000000000000031600000000000023612 0ustar00{ "a": { "b": { "c": { "answer": { "type": "integer", "value": "42" } } }, "better": { "type": "integer", "value": "43" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/implicit-and-explicit-after.toml0000644000000000000000000000004500000000000023613 0ustar00[a.b.c] answer = 42 [a] better = 43 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/implicit-and-explicit-before.json0000644000000000000000000000031600000000000023753 0ustar00{ "a": { "b": { "c": { "answer": { "type": "integer", "value": "42" } } }, "better": { "type": "integer", "value": "43" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/implicit-and-explicit-before.toml0000644000000000000000000000004500000000000023754 0ustar00[a] better = 43 [a.b.c] answer = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/implicit-groups.json0000644000000000000000000000021200000000000021444 0ustar00{ "a": { "b": { "c": { "answer": { "type": "integer", "value": "42" } } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/implicit-groups.toml0000644000000000000000000000002400000000000021447 0ustar00[a.b.c] answer = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/inline-table/array.json0000644000000000000000000000104700000000000022005 0ustar00{ "people": [ { "first_name": { "type": "string", "value": "Bruce" }, "last_name": { "type": "string", "value": "Springsteen" } }, { "first_name": { "type": "string", "value": "Eric" }, "last_name": { "type": "string", "value": "Clapton" } }, { "first_name": { "type": "string", "value": "Bob" }, "last_name": { "type": "string", "value": "Seger" } } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/inline-table/array.toml0000644000000000000000000000025200000000000022004 0ustar00people = [{first_name = "Bruce", last_name = "Springsteen"}, {first_name = "Eric", last_name = "Clapton"}, {first_name = "Bob", last_name = "Seger"}] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/inline-table/bool.json0000644000000000000000000000021500000000000021616 0ustar00{ "a": { "a": { "type": "bool", "value": "true" }, "b": { "type": "bool", "value": "false" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/inline-table/bool.toml0000644000000000000000000000003200000000000021615 0ustar00a = {a = true, b = false} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/inline-table/empty.json0000644000000000000000000000056300000000000022027 0ustar00{ "empty1": {}, "empty2": {}, "empty_in_array": [ { "not_empty": { "type": "integer", "value": "1" } }, {} ], "empty_in_array2": [ {}, { "not_empty": { "type": "integer", "value": "1" } } ], "many_empty": [ {}, {}, {} ], "nested_empty": { "empty": {} } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/inline-table/empty.toml0000644000000000000000000000023500000000000022025 0ustar00empty1 = {} empty2 = { } empty_in_array = [ { not_empty = 1 }, {} ] empty_in_array2 = [{},{not_empty=1}] many_empty = [{},{},{}] nested_empty = {"empty"={}} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/inline-table/end-in-bool.json0000644000000000000000000000037300000000000022773 0ustar00{ "black": { "allow_prereleases": { "type": "bool", "value": "true" }, "python": { "type": "string", "value": "\u003e3.6" }, "version": { "type": "string", "value": "\u003e=18.9b0" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/inline-table/end-in-bool.toml0000644000000000000000000000010600000000000022767 0ustar00black = { python=">3.6", version=">=18.9b0", allow_prereleases=true } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/inline-table/inline-table.json0000644000000000000000000000121400000000000023226 0ustar00{ "name": { "first": { "type": "string", "value": "Tom" }, "last": { "type": "string", "value": "Preston-Werner" } }, "point": { "x": { "type": "integer", "value": "1" }, "y": { "type": "integer", "value": "2" } }, "simple": { "a": { "type": "integer", "value": "1" } }, "str-key": { "a": { "type": "integer", "value": "1" } }, "table-array": [ { "a": { "type": "integer", "value": "1" } }, { "b": { "type": "integer", "value": "2" } } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/inline-table/inline-table.toml0000644000000000000000000000023500000000000023232 0ustar00name = { first = "Tom", last = "Preston-Werner" } point = { x = 1, y = 2 } simple = { a = 1 } str-key = { "a" = 1 } table-array = [{ "a" = 1 }, { "b" = 2 }] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/inline-table/key-dotted.json0000644000000000000000000000402700000000000022741 0ustar00{ "a": { "a": { "b": { "type": "integer", "value": "1" } } }, "arr": [ { "T": { "a": { "b": { "type": "integer", "value": "1" } } }, "t": { "a": { "b": { "type": "integer", "value": "1" } } } }, { "T": { "a": { "b": { "type": "integer", "value": "2" } } }, "t": { "a": { "b": { "type": "integer", "value": "2" } } } } ], "b": { "a": { "b": { "type": "integer", "value": "1" } } }, "c": { "a": { "b": { "type": "integer", "value": "1" } } }, "d": { "a": { "b": { "type": "integer", "value": "1" } } }, "e": { "a": { "b": { "type": "integer", "value": "1" } } }, "inline": { "a": { "b": { "type": "integer", "value": "42" } } }, "many": { "dots": { "here": { "dot": { "dot": { "dot": { "a": { "b": { "c": { "type": "integer", "value": "1" }, "d": { "type": "integer", "value": "2" } } } } } } } } }, "tbl": { "a": { "b": { "c": { "d": { "e": { "type": "integer", "value": "1" } } } } }, "x": { "a": { "b": { "c": { "d": { "e": { "type": "integer", "value": "1" } } } } } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/inline-table/key-dotted.toml0000644000000000000000000000046400000000000022744 0ustar00inline = {a.b = 42} many.dots.here.dot.dot.dot = {a.b.c = 1, a.b.d = 2} a = { a.b = 1 } b = { "a"."b" = 1 } c = { a . b = 1 } d = { 'a' . "b" = 1 } e = {a.b=1} [tbl] a.b.c = {d.e=1} [tbl.x] a.b.c = {d.e=1} [[arr]] t = {a.b=1} T = {a.b=1} [[arr]] t = {a.b=2} T = {a.b=2} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/inline-table/multiline.json0000644000000000000000000000046000000000000022667 0ustar00{ "tbl_multiline": { "a": { "type": "integer", "value": "1" }, "b": { "type": "string", "value": "multiline\n" }, "c": { "type": "string", "value": "and yet\nanother line" }, "d": { "type": "integer", "value": "4" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/inline-table/multiline.toml0000644000000000000000000000013000000000000022663 0ustar00tbl_multiline = { a = 1, b = """ multiline """, c = """and yet another line""", d = 4 } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/inline-table/nest.json0000644000000000000000000000152700000000000021643 0ustar00{ "arr_arr_tbl_empty": [ [ {} ] ], "arr_arr_tbl_val": [ [ { "one": { "type": "integer", "value": "1" } } ] ], "arr_arr_tbls": [ [ { "one": { "type": "integer", "value": "1" } }, { "two": { "type": "integer", "value": "2" } } ] ], "arr_tbl_tbl": [ { "tbl": { "one": { "type": "integer", "value": "1" } } } ], "tbl_arr_tbl": { "arr_tbl": [ { "one": { "type": "integer", "value": "1" } } ] }, "tbl_tbl_empty": { "tbl_0": {} }, "tbl_tbl_val": { "tbl_1": { "one": { "type": "integer", "value": "1" } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/inline-table/nest.toml0000644000000000000000000000056400000000000021645 0ustar00tbl_tbl_empty = { tbl_0 = {} } tbl_tbl_val = { tbl_1 = { one = 1 } } tbl_arr_tbl = { arr_tbl = [ { one = 1 } ] } arr_tbl_tbl = [ { tbl = { one = 1 } } ] # Array-of-array-of-table is interesting because it can only # be represented in inline form. arr_arr_tbl_empty = [ [ {} ] ] arr_arr_tbl_val = [ [ { one = 1 } ] ] arr_arr_tbls = [ [ { one = 1 }, { two = 2 } ] ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/integer/integer.json0000644000000000000000000000036700000000000021422 0ustar00{ "answer": { "type": "integer", "value": "42" }, "neganswer": { "type": "integer", "value": "-42" }, "posanswer": { "type": "integer", "value": "42" }, "zero": { "type": "integer", "value": "0" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/integer/integer.toml0000644000000000000000000000006500000000000021417 0ustar00answer = 42 posanswer = +42 neganswer = -42 zero = 0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/integer/literals.json0000644000000000000000000000105500000000000021577 0ustar00{ "bin1": { "type": "integer", "value": "214" }, "bin2": { "type": "integer", "value": "5" }, "hex1": { "type": "integer", "value": "3735928559" }, "hex2": { "type": "integer", "value": "3735928559" }, "hex3": { "type": "integer", "value": "3735928559" }, "hex4": { "type": "integer", "value": "2439" }, "oct1": { "type": "integer", "value": "342391" }, "oct2": { "type": "integer", "value": "493" }, "oct3": { "type": "integer", "value": "501" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/integer/literals.toml0000644000000000000000000000022700000000000021601 0ustar00bin1 = 0b11010110 bin2 = 0b1_0_1 oct1 = 0o01234567 oct2 = 0o755 oct3 = 0o7_6_5 hex1 = 0xDEADBEEF hex2 = 0xdeadbeef hex3 = 0xdead_beef hex4 = 0x00987 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/integer/long.json0000644000000000000000000000025000000000000020713 0ustar00{ "int64-max": { "type": "integer", "value": "9223372036854775807" }, "int64-max-neg": { "type": "integer", "value": "-9223372036854775808" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/integer/long.toml0000644000000000000000000000010500000000000020714 0ustar00int64-max = 9223372036854775807 int64-max-neg = -9223372036854775808 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/integer/underscore.json0000644000000000000000000000017000000000000022126 0ustar00{ "kilo": { "type": "integer", "value": "1000" }, "x": { "type": "integer", "value": "1111" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/integer/underscore.toml0000644000000000000000000000003100000000000022124 0ustar00kilo = 1_000 x = 1_1_1_1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/integer/zero.json0000644000000000000000000000122700000000000020740 0ustar00{ "a2": { "type": "integer", "value": "0" }, "a3": { "type": "integer", "value": "0" }, "b1": { "type": "integer", "value": "0" }, "b2": { "type": "integer", "value": "0" }, "b3": { "type": "integer", "value": "0" }, "d1": { "type": "integer", "value": "0" }, "d2": { "type": "integer", "value": "0" }, "d3": { "type": "integer", "value": "0" }, "h1": { "type": "integer", "value": "0" }, "h2": { "type": "integer", "value": "0" }, "h3": { "type": "integer", "value": "0" }, "o1": { "type": "integer", "value": "0" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/integer/zero.toml0000644000000000000000000000017200000000000020740 0ustar00d1 = 0 d2 = +0 d3 = -0 h1 = 0x0 h2 = 0x00 h3 = 0x00000 o1 = 0o0 a2 = 0o00 a3 = 0o00000 b1 = 0b0 b2 = 0b00 b3 = 0b00000 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/alphanum.json0000644000000000000000000000123000000000000020713 0ustar00{ "000111": { "type": "string", "value": "leading" }, "10e3": { "type": "string", "value": "false float" }, "123": { "type": "string", "value": "num" }, "2018_10": { "001": { "type": "integer", "value": "1" } }, "34-11": { "type": "integer", "value": "23" }, "a-a-a": { "_": { "type": "bool", "value": "false" } }, "alpha": { "type": "string", "value": "a" }, "one1two2": { "type": "string", "value": "mixed" }, "under_score": { "type": "string", "value": "___" }, "with-dash": { "type": "string", "value": "dashed" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/alphanum.toml0000644000000000000000000000025500000000000020723 0ustar00alpha = "a" 123 = "num" 000111 = "leading" 10e3 = "false float" one1two2 = "mixed" with-dash = "dashed" under_score = "___" 34-11 = 23 [2018_10] 001 = 1 [a-a-a] _ = false ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/case-sensitive.json0000644000000000000000000000117100000000000022034 0ustar00{ "Section": { "M": { "type": "string", "value": "latin letter M" }, "name": { "type": "string", "value": "different section!!" }, "Μ": { "type": "string", "value": "greek capital letter MU" }, "μ": { "type": "string", "value": "greek small letter mu" } }, "sectioN": { "type": "string", "value": "NN" }, "section": { "NAME": { "type": "string", "value": "upper" }, "Name": { "type": "string", "value": "capitalized" }, "name": { "type": "string", "value": "lower" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/case-sensitive.toml0000644000000000000000000000031300000000000022033 0ustar00sectioN = "NN" [section] name = "lower" NAME = "upper" Name = "capitalized" [Section] name = "different section!!" "μ" = "greek small letter mu" "Μ" = "greek capital letter MU" M = "latin letter M" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/dotted.json0000644000000000000000000000374100000000000020402 0ustar00{ "a": { "few": { "dots": { "polka": { "dance-with": { "type": "string", "value": "Dot" }, "dot": { "type": "string", "value": "again?" } } } } }, "arr": [ { "a": { "b": { "c": { "type": "integer", "value": "1" }, "d": { "type": "integer", "value": "2" } } } }, { "a": { "b": { "c": { "type": "integer", "value": "3" }, "d": { "type": "integer", "value": "4" } } } } ], "count": { "a": { "type": "integer", "value": "1" }, "b": { "type": "integer", "value": "2" }, "c": { "type": "integer", "value": "3" }, "d": { "type": "integer", "value": "4" }, "e": { "type": "integer", "value": "5" }, "f": { "type": "integer", "value": "6" }, "g": { "type": "integer", "value": "7" }, "h": { "type": "integer", "value": "8" }, "i": { "type": "integer", "value": "9" }, "j": { "type": "integer", "value": "10" }, "k": { "type": "integer", "value": "11" }, "l": { "type": "integer", "value": "12" } }, "many": { "dots": { "here": { "dot": { "dot": { "dot": { "type": "integer", "value": "42" } } } } } }, "name": { "first": { "type": "string", "value": "Arthur" }, "last": { "type": "string", "value": "Dent" } }, "tbl": { "a": { "b": { "c": { "type": "float", "value": "42.666" } } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/dotted.toml0000644000000000000000000000102700000000000020377 0ustar00# Note: this file contains literal tab characters. name.first = "Arthur" "name".'last' = "Dent" many.dots.here.dot.dot.dot = 42 # Space are ignored, and key parts can be quoted. count.a = 1 count . b = 2 "count"."c" = 3 "count" . "d" = 4 'count'.'e' = 5 'count' . 'f' = 6 "count".'g' = 7 "count" . 'h' = 8 count.'i' = 9 count . 'j' = 10 "count".k = 11 "count" . l = 12 [tbl] a.b.c = 42.666 [a.few.dots] polka.dot = "again?" polka.dance-with = "Dot" [[arr]] a.b.c=1 a.b.d=2 [[arr]] a.b.c=3 a.b.d=4 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/empty.json0000644000000000000000000000007300000000000020250 0ustar00{ "": { "type": "string", "value": "blank" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/empty.toml0000644000000000000000000000001500000000000020246 0ustar00"" = "blank" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/equals-nospace.json0000644000000000000000000000007700000000000022036 0ustar00{ "answer": { "type": "integer", "value": "42" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/equals-nospace.toml0000644000000000000000000000001200000000000022025 0ustar00answer=42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/escapes.json0000644000000000000000000000054700000000000020543 0ustar00{ "\n": { "type": "string", "value": "newline" }, "\"": { "type": "string", "value": "just a quote" }, "\"quoted\"": { "quote": { "type": "bool", "value": "true" } }, "a.b": { "À": {} }, "backsp\u0008\u0008": {}, "À": { "type": "string", "value": "latin capital letter A with grave" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/escapes.toml0000644000000000000000000000022500000000000020536 0ustar00"\n" = "newline" "\u00c0" = "latin capital letter A with grave" "\"" = "just a quote" ["backsp\b\b"] ["\"quoted\""] quote = true ["a.b"."\u00c0"] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/numeric-dotted.json0000644000000000000000000000011600000000000022033 0ustar00{ "1": { "2": { "type": "integer", "value": "3" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/numeric-dotted.toml0000644000000000000000000000001000000000000022026 0ustar001.2 = 3 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/numeric.json0000644000000000000000000000007100000000000020552 0ustar00{ "1": { "type": "integer", "value": "1" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/numeric.toml0000644000000000000000000000000600000000000020552 0ustar001 = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/quoted-dots.json0000644000000000000000000000073400000000000021366 0ustar00{ "plain": { "type": "integer", "value": "1" }, "plain_table": { "plain": { "type": "integer", "value": "3" }, "with.dot": { "type": "integer", "value": "4" } }, "table": { "withdot": { "key.with.dots": { "type": "integer", "value": "6" }, "plain": { "type": "integer", "value": "5" } } }, "with.dot": { "type": "integer", "value": "2" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/quoted-dots.toml0000644000000000000000000000016000000000000021361 0ustar00plain = 1 "with.dot" = 2 [plain_table] plain = 3 "with.dot" = 4 [table.withdot] plain = 5 "key.with.dots" = 6 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/space.json0000644000000000000000000000007300000000000020205 0ustar00{ "a b": { "type": "integer", "value": "1" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/space.toml0000644000000000000000000000001200000000000020200 0ustar00"a b" = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/special-chars.json0000644000000000000000000000015200000000000021626 0ustar00{ "~!@$^\u0026*()_+-`1234567890[]|/?\u003e\u003c.,;:'": { "type": "integer", "value": "1" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/special-chars.toml0000644000000000000000000000005200000000000021627 0ustar00"~!@$^&*()_+-`1234567890[]|/?><.,;:'" = 1 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/special-word.json0000644000000000000000000000040500000000000021502 0ustar00{ "false": { "type": "bool", "value": "false" }, "inf": { "type": "integer", "value": "100000000" }, "nan": { "type": "string", "value": "ceci n'est pas un nombre" }, "true": { "type": "integer", "value": "1" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/key/special-word.toml0000644000000000000000000000011100000000000021476 0ustar00false = false true = 1 inf = 100000000 nan = "ceci n'est pas un nombre" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/newline-crlf.json0000644000000000000000000000017100000000000020706 0ustar00{ "newline": { "type": "string", "value": "crlf" }, "os": { "type": "string", "value": "DOS" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/newline-crlf.toml0000644000000000000000000000003600000000000020710 0ustar00os = "DOS" newline = "crlf" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/newline-lf.json0000644000000000000000000000017000000000000020360 0ustar00{ "newline": { "type": "string", "value": "lf" }, "os": { "type": "string", "value": "unix" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/newline-lf.toml0000644000000000000000000000003300000000000020360 0ustar00os = "unix" newline = "lf" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/spec-example-1-compact.json0000644000000000000000000000311300000000000022465 0ustar00{ "clients": { "data": [ [ { "type": "string", "value": "gamma" }, { "type": "string", "value": "delta" } ], [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" } ] ], "hosts": [ { "type": "string", "value": "alpha" }, { "type": "string", "value": "omega" } ] }, "database": { "connection_max": { "type": "integer", "value": "5000" }, "enabled": { "type": "bool", "value": "true" }, "ports": [ { "type": "integer", "value": "8001" }, { "type": "integer", "value": "8001" }, { "type": "integer", "value": "8002" } ], "server": { "type": "string", "value": "192.168.1.1" } }, "owner": { "dob": { "type": "datetime", "value": "1979-05-27T07:32:00-08:00" }, "name": { "type": "string", "value": "Lance Uppercut" } }, "servers": { "alpha": { "dc": { "type": "string", "value": "eqdc10" }, "ip": { "type": "string", "value": "10.0.0.1" } }, "beta": { "dc": { "type": "string", "value": "eqdc10" }, "ip": { "type": "string", "value": "10.0.0.2" } } }, "title": { "type": "string", "value": "TOML Example" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/spec-example-1-compact.toml0000644000000000000000000000057000000000000022473 0ustar00#Useless spaces eliminated. title="TOML Example" [owner] name="Lance Uppercut" dob=1979-05-27T07:32:00-08:00#First class dates [database] server="192.168.1.1" ports=[8001,8001,8002] connection_max=5000 enabled=true [servers] [servers.alpha] ip="10.0.0.1" dc="eqdc10" [servers.beta] ip="10.0.0.2" dc="eqdc10" [clients] data=[["gamma","delta"],[1,2]] hosts=[ "alpha", "omega" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/spec-example-1.json0000644000000000000000000000311300000000000021041 0ustar00{ "clients": { "data": [ [ { "type": "string", "value": "gamma" }, { "type": "string", "value": "delta" } ], [ { "type": "integer", "value": "1" }, { "type": "integer", "value": "2" } ] ], "hosts": [ { "type": "string", "value": "alpha" }, { "type": "string", "value": "omega" } ] }, "database": { "connection_max": { "type": "integer", "value": "5000" }, "enabled": { "type": "bool", "value": "true" }, "ports": [ { "type": "integer", "value": "8001" }, { "type": "integer", "value": "8001" }, { "type": "integer", "value": "8002" } ], "server": { "type": "string", "value": "192.168.1.1" } }, "owner": { "dob": { "type": "datetime", "value": "1979-05-27T07:32:00-08:00" }, "name": { "type": "string", "value": "Lance Uppercut" } }, "servers": { "alpha": { "dc": { "type": "string", "value": "eqdc10" }, "ip": { "type": "string", "value": "10.0.0.1" } }, "beta": { "dc": { "type": "string", "value": "eqdc10" }, "ip": { "type": "string", "value": "10.0.0.2" } } }, "title": { "type": "string", "value": "TOML Example" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/spec-example-1.toml0000644000000000000000000000105700000000000021050 0ustar00# This is a TOML document. Boom. title = "TOML Example" [owner] name = "Lance Uppercut" dob = 1979-05-27T07:32:00-08:00 # First class dates? Why not? [database] server = "192.168.1.1" ports = [ 8001, 8001, 8002 ] connection_max = 5000 enabled = true [servers] # You can indent as you please. Tabs or spaces. TOML don't care. [servers.alpha] ip = "10.0.0.1" dc = "eqdc10" [servers.beta] ip = "10.0.0.2" dc = "eqdc10" [clients] data = [ ["gamma", "delta"], [1, 2] ] # Line breaks are OK when inside arrays hosts = [ "alpha", "omega" ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/double-quote-escape.json0000644000000000000000000000010100000000000023463 0ustar00{ "test": { "type": "string", "value": "\"one\"" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/double-quote-escape.toml0000644000000000000000000000002100000000000023466 0ustar00test = "\"one\"" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/empty.json0000644000000000000000000000007400000000000020767 0ustar00{ "answer": { "type": "string", "value": "" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/empty.toml0000644000000000000000000000001400000000000020763 0ustar00answer = "" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/escape-tricky.json0000644000000000000000000000115500000000000022375 0ustar00{ "end_esc": { "type": "string", "value": "String does not end here\" but ends here\\" }, "lit_end_esc": { "type": "string", "value": "String ends here\\" }, "lit_multiline_end": { "type": "string", "value": "There is no escape\\" }, "lit_multiline_not_unicode": { "type": "string", "value": "\\u007f" }, "multiline_end_esc": { "type": "string", "value": "When will it end? \"\"\"...\"\"\" should be here\"" }, "multiline_not_unicode": { "type": "string", "value": "\\u0041" }, "multiline_unicode": { "type": "string", "value": " " } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/escape-tricky.toml0000644000000000000000000000051000000000000022371 0ustar00end_esc = "String does not end here\" but ends here\\" lit_end_esc = 'String ends here\' multiline_unicode = """ \u00a0""" multiline_not_unicode = """ \\u0041""" multiline_end_esc = """When will it end? \"""...""\" should be here\"""" lit_multiline_not_unicode = ''' \u007f''' lit_multiline_end = '''There is no escape\''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/escaped-escape.json0000644000000000000000000000010100000000000022462 0ustar00{ "answer": { "type": "string", "value": "\\x64" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/escaped-escape.toml0000644000000000000000000000002100000000000022465 0ustar00answer = "\\x64" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/escapes.json0000644000000000000000000000251100000000000021252 0ustar00{ "backslash": { "type": "string", "value": "This string has a \\ backslash character." }, "backspace": { "type": "string", "value": "This string has a \u0008 backspace character." }, "carriage": { "type": "string", "value": "This string has a \r carriage return character." }, "delete": { "type": "string", "value": "This string has a  delete control code." }, "formfeed": { "type": "string", "value": "This string has a \u000c form feed character." }, "newline": { "type": "string", "value": "This string has a \n new line character." }, "notunicode1": { "type": "string", "value": "This string does not have a unicode \\u escape." }, "notunicode2": { "type": "string", "value": "This string does not have a unicode \\u escape." }, "notunicode3": { "type": "string", "value": "This string does not have a unicode \\u0075 escape." }, "notunicode4": { "type": "string", "value": "This string does not have a unicode \\u escape." }, "quote": { "type": "string", "value": "This string has a \" quote character." }, "tab": { "type": "string", "value": "This string has a \t tab character." }, "unitseparator": { "type": "string", "value": "This string has a \u001f unit separator control code." } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/escapes.toml0000644000000000000000000000140300000000000021253 0ustar00backspace = "This string has a \b backspace character." tab = "This string has a \t tab character." newline = "This string has a \n new line character." formfeed = "This string has a \f form feed character." carriage = "This string has a \r carriage return character." quote = "This string has a \" quote character." backslash = "This string has a \\ backslash character." notunicode1 = "This string does not have a unicode \\u escape." notunicode2 = "This string does not have a unicode \u005Cu escape." notunicode3 = "This string does not have a unicode \\u0075 escape." notunicode4 = "This string does not have a unicode \\\u0075 escape." delete = "This string has a \u007F delete control code." unitseparator = "This string has a \u001F unit separator control code." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/multiline-json0000644000000000000000000000205700000000000021635 0ustar00{ "equivalent_one": { "type": "string", "value": "The quick brown fox jumps over the lazy dog." }, "equivalent_three": { "type": "string", "value": "The quick brown fox jumps over the lazy dog." }, "equivalent_two": { "type": "string", "value": "The quick brown fox jumps over the lazy dog." }, "escape-bs-1": { "type": "string", "value": "a \\\nb" }, "escape-bs-2": { "type": "string", "value": "a \\b" }, "escape-bs-3": { "type": "string", "value": "a \\\\\n b" }, "keep-ws-before": { "type": "string", "value": "a \tb" }, "multiline_empty_four": { "type": "string", "value": "" }, "multiline_empty_one": { "type": "string", "value": "" }, "multiline_empty_three": { "type": "string", "value": "" }, "multiline_empty_two": { "type": "string", "value": "" }, "no-space": { "type": "string", "value": "ab" }, "whitespace-after-bs": { "type": "string", "value": "The quick brown fox jumps over the lazy dog." } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/multiline-quotes.json0000644000000000000000000000134000000000000023146 0ustar00{ "lit_one": { "type": "string", "value": "'one quote'" }, "lit_one_space": { "type": "string", "value": " 'one quote' " }, "lit_two": { "type": "string", "value": "''two quotes''" }, "lit_two_space": { "type": "string", "value": " ''two quotes'' " }, "mismatch1": { "type": "string", "value": "aaa'''bbb" }, "mismatch2": { "type": "string", "value": "aaa\"\"\"bbb" }, "one": { "type": "string", "value": "\"one quote\"" }, "one_space": { "type": "string", "value": " \"one quote\" " }, "two": { "type": "string", "value": "\"\"two quotes\"\"" }, "two_space": { "type": "string", "value": " \"\"two quotes\"\" " } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/multiline-quotes.toml0000644000000000000000000000070000000000000023147 0ustar00# Make sure that quotes inside multiline strings are allowed, including right # after the opening '''/""" and before the closing '''/""" lit_one = ''''one quote'''' lit_two = '''''two quotes''''' lit_one_space = ''' 'one quote' ''' lit_two_space = ''' ''two quotes'' ''' one = """"one quote"""" two = """""two quotes""""" one_space = """ "one quote" """ two_space = """ ""two quotes"" """ mismatch1 = """aaa'''bbb""" mismatch2 = '''aaa"""bbb''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/multiline-toml0000644000000000000000000000131700000000000021635 0ustar00# NOTE: this file includes some literal tab characters. multiline_empty_one = """""" multiline_empty_two = """ """ multiline_empty_three = """\ """ multiline_empty_four = """\ \ \ """ equivalent_one = "The quick brown fox jumps over the lazy dog." equivalent_two = """ The quick brown \ fox jumps over \ the lazy dog.""" equivalent_three = """\ The quick brown \ fox jumps over \ the lazy dog.\ """ whitespace-after-bs = """\ The quick brown \ fox jumps over \ the lazy dog.\ """ no-space = """a\ b""" keep-ws-before = """a \ b""" escape-bs-1 = """a \\ b""" escape-bs-2 = """a \\\ b""" escape-bs-3 = """a \\\\ b""" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/nl.json0000644000000000000000000000052100000000000020237 0ustar00{ "lit_nl_end": { "type": "string", "value": "value\\n" }, "lit_nl_mid": { "type": "string", "value": "val\\nue" }, "lit_nl_uni": { "type": "string", "value": "val\\ue" }, "nl_end": { "type": "string", "value": "value\n" }, "nl_mid": { "type": "string", "value": "val\nue" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/nl.toml0000644000000000000000000000016300000000000020243 0ustar00nl_mid = "val\nue" nl_end = """value\n""" lit_nl_end = '''value\n''' lit_nl_mid = 'val\nue' lit_nl_uni = 'val\ue' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/raw-multiline.json0000644000000000000000000000050300000000000022417 0ustar00{ "firstnl": { "type": "string", "value": "This string has a ' quote character." }, "multiline": { "type": "string", "value": "This string\nhas ' a quote character\nand more than\none newline\nin it." }, "oneline": { "type": "string", "value": "This string has a ' quote character." } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/raw-multiline.toml0000644000000000000000000000030300000000000022417 0ustar00oneline = '''This string has a ' quote character.''' firstnl = ''' This string has a ' quote character.''' multiline = ''' This string has ' a quote character and more than one newline in it.''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/raw.json0000644000000000000000000000127300000000000020424 0ustar00{ "backslash": { "type": "string", "value": "This string has a \\\\ backslash character." }, "backspace": { "type": "string", "value": "This string has a \\b backspace character." }, "carriage": { "type": "string", "value": "This string has a \\r carriage return character." }, "formfeed": { "type": "string", "value": "This string has a \\f form feed character." }, "newline": { "type": "string", "value": "This string has a \\n new line character." }, "slash": { "type": "string", "value": "This string has a \\/ slash character." }, "tab": { "type": "string", "value": "This string has a \\t tab character." } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/raw.toml0000644000000000000000000000056500000000000020431 0ustar00backspace = 'This string has a \b backspace character.' tab = 'This string has a \t tab character.' newline = 'This string has a \n new line character.' formfeed = 'This string has a \f form feed character.' carriage = 'This string has a \r carriage return character.' slash = 'This string has a \/ slash character.' backslash = 'This string has a \\ backslash character.' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/simple.json0000644000000000000000000000013700000000000021122 0ustar00{ "answer": { "type": "string", "value": "You are not drinking enough whisky." } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/simple.toml0000644000000000000000000000005700000000000021125 0ustar00answer = "You are not drinking enough whisky." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/unicode-escape.json0000644000000000000000000000017300000000000022515 0ustar00{ "answer4": { "type": "string", "value": "δ" }, "answer8": { "type": "string", "value": "δ" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/unicode-escape.toml0000644000000000000000000000005200000000000022513 0ustar00answer4 = "\u03B4" answer8 = "\U000003B4" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/unicode-literal.json0000644000000000000000000000007600000000000022713 0ustar00{ "answer": { "type": "string", "value": "δ" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/unicode-literal.toml0000644000000000000000000000001600000000000022707 0ustar00answer = "δ" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/with-pound.json0000644000000000000000000000026700000000000021733 0ustar00{ "pound": { "type": "string", "value": "We see no # comments here." }, "poundcomment": { "type": "string", "value": "But there are # some comments here." } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/string/with-pound.toml0000644000000000000000000000016100000000000021726 0ustar00pound = "We see no # comments here." poundcomment = "But there are # some comments here." # Did I # mess you up? ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/array-implicit.json0000644000000000000000000000022300000000000022334 0ustar00{ "albums": { "songs": [ { "name": { "type": "string", "value": "Glory Days" } } ] } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/array-implicit.toml0000644000000000000000000000004500000000000022340 0ustar00[[albums.songs]] name = "Glory Days" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/array-many.json0000644000000000000000000000104700000000000021473 0ustar00{ "people": [ { "first_name": { "type": "string", "value": "Bruce" }, "last_name": { "type": "string", "value": "Springsteen" } }, { "first_name": { "type": "string", "value": "Eric" }, "last_name": { "type": "string", "value": "Clapton" } }, { "first_name": { "type": "string", "value": "Bob" }, "last_name": { "type": "string", "value": "Seger" } } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/array-many.toml0000644000000000000000000000024300000000000021472 0ustar00[[people]] first_name = "Bruce" last_name = "Springsteen" [[people]] first_name = "Eric" last_name = "Clapton" [[people]] first_name = "Bob" last_name = "Seger" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/array-nest.json0000644000000000000000000000136200000000000021500 0ustar00{ "albums": [ { "name": { "type": "string", "value": "Born to Run" }, "songs": [ { "name": { "type": "string", "value": "Jungleland" } }, { "name": { "type": "string", "value": "Meeting Across the River" } } ] }, { "name": { "type": "string", "value": "Born in the USA" }, "songs": [ { "name": { "type": "string", "value": "Glory Days" } }, { "name": { "type": "string", "value": "Dancing in the Dark" } } ] } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/array-nest.toml0000644000000000000000000000040600000000000021500 0ustar00[[albums]] name = "Born to Run" [[albums.songs]] name = "Jungleland" [[albums.songs]] name = "Meeting Across the River" [[albums]] name = "Born in the USA" [[albums.songs]] name = "Glory Days" [[albums.songs]] name = "Dancing in the Dark" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/array-one.json0000644000000000000000000000031200000000000021302 0ustar00{ "people": [ { "first_name": { "type": "string", "value": "Bruce" }, "last_name": { "type": "string", "value": "Springsteen" } } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/array-one.toml0000644000000000000000000000007200000000000021307 0ustar00[[people]] first_name = "Bruce" last_name = "Springsteen" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/array-table-array.json0000644000000000000000000000052300000000000022730 0ustar00{ "a": [ { "b": [ { "c": { "d": { "type": "string", "value": "val0" } } }, { "c": { "d": { "type": "string", "value": "val1" } } } ] } ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/array-table-array.toml0000644000000000000000000000015400000000000022732 0ustar00[[a]] [[a.b]] [a.b.c] d = "val0" [[a.b]] [a.b.c] d = "val1" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/empty.json0000644000000000000000000000001600000000000020544 0ustar00{ "a": {} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/empty.toml0000644000000000000000000000000400000000000020543 0ustar00[a] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/keyword.json0000644000000000000000000000007200000000000021074 0ustar00{ "true": {}, "false": {}, "inf": {}, "nan": {} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/keyword.toml0000644000000000000000000000004000000000000021071 0ustar00[true] [false] [inf] [nan] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/names.json0000644000000000000000000000042200000000000020512 0ustar00{ "a": { " x ": {}, "b": { "c": {} }, "b.c": {}, "d.e": {} }, "d": { "e": { "f": {} } }, "g": { "h": { "i": {} } }, "j": { "ʞ": { "l": {} } }, "x": { "1": { "2": {} } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/names.toml0000644000000000000000000000013200000000000020512 0ustar00[a.b.c] [a."b.c"] [a.'d.e'] [a.' x '] [ d.e.f ] [ g . h . i ] [ j . "ʞ" . 'l' ] [x.1.2] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/no-eol.json0000644000000000000000000000002200000000000020574 0ustar00{ "table": {} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/no-eol.toml0000644000000000000000000000001000000000000020573 0ustar00[table] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/sub-empty.json0000644000000000000000000000003500000000000021334 0ustar00{ "a": { "b": {} } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/sub-empty.toml0000644000000000000000000000001200000000000021331 0ustar00[a] [a.b] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/whitespace.json0000644000000000000000000000002600000000000021543 0ustar00{ "valid key": {} } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/whitespace.toml0000644000000000000000000000001600000000000021544 0ustar00["valid key"] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/with-literal-string.json0000644000000000000000000000021600000000000023321 0ustar00{ "a": { "\"b\"": { "c": { "answer": { "type": "integer", "value": "42" } } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/with-literal-string.toml0000644000000000000000000000005100000000000023320 0ustar00['a'] [a.'"b"'] [a.'"b"'.c] answer = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/with-pound.json0000644000000000000000000000013400000000000021505 0ustar00{ "key#group": { "answer": { "type": "integer", "value": "42" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/with-pound.toml0000644000000000000000000000003200000000000021504 0ustar00["key#group"] answer = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/with-single-quotes.json0000644000000000000000000000021200000000000023154 0ustar00{ "a": { "b": { "c": { "answer": { "type": "integer", "value": "42" } } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/with-single-quotes.toml0000644000000000000000000000004500000000000023162 0ustar00['a'] [a.'b'] [a.'b'.c] answer = 42 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/without-super.json0000644000000000000000000000010700000000000022246 0ustar00{ "x": { "y": { "z": { "w": {} } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/tests/valid/table/without-super.toml0000644000000000000000000000017000000000000022250 0ustar00# [x] you # [x.y] don't # [x.y.z] need these [x.y.z.w] # for this to work [x] # defining a super-table afterwards is ok ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319432.2335744 tomlkit-0.9.2/tests/toml-test/toml.go0000644000000000000000000000613200000000000014472 0ustar00package tomltest import ( "math" "reflect" ) // cmpTOML consumes the recursive structure of both want and have // simultaneously. If anything is unequal the result has failed and comparison // stops. // // reflect.DeepEqual could work here, but it won't tell us how the two // structures are different. func (r Test) cmpTOML(want, have interface{}) Test { if isTomlValue(want) { if !isTomlValue(have) { return r.fail("Type for key '%s' differs:\n"+ " Expected: %[2]v (%[2]T)\n"+ " Your encoder: %[3]v (%[3]T)", r.Key, want, have) } if !deepEqual(want, have) { return r.fail("Values for key '%s' differ:\n"+ " Expected: %[2]v (%[2]T)\n"+ " Your encoder: %[3]v (%[3]T)", r.Key, want, have) } return r } switch w := want.(type) { case map[string]interface{}: return r.cmpTOMLMap(w, have) case []interface{}: return r.cmpTOMLArrays(w, have) default: return r.fail("Unrecognized TOML structure: %T", want) } } func (r Test) cmpTOMLMap(want map[string]interface{}, have interface{}) Test { haveMap, ok := have.(map[string]interface{}) if !ok { return r.mismatch("table", want, haveMap) } // Check that the keys of each map are equivalent. for k := range want { if _, ok := haveMap[k]; !ok { bunk := r.kjoin(k) return bunk.fail("Could not find key '%s' in encoder output", bunk.Key) } } for k := range haveMap { if _, ok := want[k]; !ok { bunk := r.kjoin(k) return bunk.fail("Could not find key '%s' in expected output", bunk.Key) } } // Okay, now make sure that each value is equivalent. for k := range want { if sub := r.kjoin(k).cmpTOML(want[k], haveMap[k]); sub.Failed() { return sub } } return r } func (r Test) cmpTOMLArrays(want []interface{}, have interface{}) Test { // Slice can be decoded to []interface{} for an array of primitives, or // []map[string]interface{} for an array of tables. // // TODO: it would be nicer if it could always decode to []interface{}? haveSlice, ok := have.([]interface{}) if !ok { tblArray, ok := have.([]map[string]interface{}) if !ok { return r.mismatch("array", want, have) } haveSlice = make([]interface{}, len(tblArray)) for i := range tblArray { haveSlice[i] = tblArray[i] } } if len(want) != len(haveSlice) { return r.fail("Array lengths differ for key '%s'"+ " Expected: %[2]v (len=%[4]d)\n"+ " Your encoder: %[3]v (len=%[5]d)", r.Key, want, haveSlice, len(want), len(haveSlice)) } for i := 0; i < len(want); i++ { if sub := r.cmpTOML(want[i], haveSlice[i]); sub.Failed() { return sub } } return r } // reflect.DeepEqual() that deals with NaN != NaN func deepEqual(want, have interface{}) bool { var wantF, haveF float64 switch f := want.(type) { case float32: wantF = float64(f) case float64: wantF = f } switch f := have.(type) { case float32: haveF = float64(f) case float64: haveF = f } if math.IsNaN(wantF) && math.IsNaN(haveF) { return true } return reflect.DeepEqual(want, have) } func isTomlValue(v interface{}) bool { switch v.(type) { case map[string]interface{}, []interface{}: return false } return true } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tomlkit/__init__.py0000644000000000000000000000167000000000000013674 0ustar00from .api import TOMLDocument from .api import aot from .api import array from .api import boolean from .api import comment from .api import date from .api import datetime from .api import document from .api import dump from .api import dumps from .api import float_ from .api import inline_table from .api import integer from .api import item from .api import key from .api import key_value from .api import load from .api import loads from .api import nl from .api import parse from .api import string from .api import table from .api import time from .api import value from .api import ws __version__ = "0.9.2" __all__ = [ "aot", "array", "boolean", "comment", "date", "datetime", "document", "dump", "dumps", "float_", "inline_table", "integer", "item", "key", "key_value", "load", "loads", "nl", "parse", "string", "table", "time", "value", "ws", ] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tomlkit/_compat.py0000644000000000000000000000101700000000000013552 0ustar00import sys from typing import Any from typing import List from typing import Optional PY38 = sys.version_info >= (3, 8) def decode(string: Any, encodings: Optional[List[str]] = None): if not isinstance(string, bytes): return string encodings = encodings or ["utf-8", "latin1", "ascii"] for encoding in encodings: try: return string.decode(encoding) except (UnicodeEncodeError, UnicodeDecodeError): pass return string.decode(encodings[0], errors="ignore") ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tomlkit/_utils.py0000644000000000000000000000671500000000000013441 0ustar00import re from collections.abc import Mapping from datetime import date from datetime import datetime from datetime import time from datetime import timedelta from datetime import timezone from typing import Union from ._compat import decode RFC_3339_LOOSE = re.compile( "^" r"(([0-9]+)-(\d{2})-(\d{2}))?" # Date "(" "([Tt ])?" # Separator r"(\d{2}):(\d{2}):(\d{2})(\.([0-9]+))?" # Time r"(([Zz])|([\+|\-]([01][0-9]|2[0-3]):([0-5][0-9])))?" # Timezone ")?" "$" ) RFC_3339_DATETIME = re.compile( "^" "([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])" # Date "[Tt ]" # Separator r"([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.([0-9]+))?" # Time r"(([Zz])|([\+|\-]([01][0-9]|2[0-3]):([0-5][0-9])))?" # Timezone "$" ) RFC_3339_DATE = re.compile("^([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$") RFC_3339_TIME = re.compile( r"^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.([0-9]+))?$" ) _utc = timezone(timedelta(), "UTC") def parse_rfc3339(string: str) -> Union[datetime, date, time]: m = RFC_3339_DATETIME.match(string) if m: year = int(m.group(1)) month = int(m.group(2)) day = int(m.group(3)) hour = int(m.group(4)) minute = int(m.group(5)) second = int(m.group(6)) microsecond = 0 if m.group(7): microsecond = int((f"{m.group(8):<06s}")[:6]) if m.group(9): # Timezone tz = m.group(9) if tz.upper() == "Z": tzinfo = _utc else: sign = m.group(11)[0] hour_offset, minute_offset = int(m.group(12)), int(m.group(13)) offset = timedelta(seconds=hour_offset * 3600 + minute_offset * 60) if sign == "-": offset = -offset tzinfo = timezone(offset, f"{sign}{m.group(12)}:{m.group(13)}") return datetime( year, month, day, hour, minute, second, microsecond, tzinfo=tzinfo ) else: return datetime(year, month, day, hour, minute, second, microsecond) m = RFC_3339_DATE.match(string) if m: year = int(m.group(1)) month = int(m.group(2)) day = int(m.group(3)) return date(year, month, day) m = RFC_3339_TIME.match(string) if m: hour = int(m.group(1)) minute = int(m.group(2)) second = int(m.group(3)) microsecond = 0 if m.group(4): microsecond = int((f"{m.group(5):<06s}")[:6]) return time(hour, minute, second, microsecond) raise ValueError("Invalid RFC 339 string") _escaped = {"b": "\b", "t": "\t", "n": "\n", "f": "\f", "r": "\r", '"': '"', "\\": "\\"} _escapes = {v: k for k, v in _escaped.items()} def escape_string(s: str) -> str: s = decode(s) res = [] start = 0 def flush(): if start != i: res.append(s[start:i]) return i + 1 i = 0 while i < len(s): c = s[i] if c in '"\\\n\r\t\b\f': start = flush() res.append("\\" + _escapes[c]) elif ord(c) < 0x20: start = flush() res.append("\\u%04x" % ord(c)) i += 1 flush() return "".join(res) def merge_dicts(d1: dict, d2: dict) -> dict: for k, v in d2.items(): if k in d1 and isinstance(d1[k], dict) and isinstance(v, Mapping): merge_dicts(d1[k], v) else: d1[k] = d2[k] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tomlkit/api.py0000644000000000000000000001377100000000000012713 0ustar00import datetime as _datetime from collections.abc import Mapping from typing import IO from typing import Iterable from typing import Tuple from typing import Union from ._utils import parse_rfc3339 from .container import Container from .exceptions import UnexpectedCharError from .items import AoT from .items import Array from .items import Bool from .items import Comment from .items import Date from .items import DateTime from .items import DottedKey from .items import Float from .items import InlineTable from .items import Integer from .items import Item as _Item from .items import Key from .items import SingleKey from .items import String from .items import Table from .items import Time from .items import Trivia from .items import Whitespace from .items import item from .parser import Parser from .toml_document import TOMLDocument def loads(string: Union[str, bytes]) -> TOMLDocument: """ Parses a string into a TOMLDocument. Alias for parse(). """ return parse(string) def dumps(data: Mapping, sort_keys: bool = False) -> str: """ Dumps a TOMLDocument into a string. """ if not isinstance(data, Container) and isinstance(data, Mapping): data = item(dict(data), _sort_keys=sort_keys) try: # data should be a `Container` (and therefore implement `as_string`) # for all type safe invocations of this function return data.as_string() # type: ignore[attr-defined] except AttributeError as ex: msg = f"Expecting Mapping or TOML Container, {type(data)} given" raise TypeError(msg) from ex def load(fp: IO) -> TOMLDocument: """ Load toml document from a file-like object. """ return parse(fp.read()) def dump(data: Mapping, fp: IO[str], *, sort_keys: bool = False) -> None: """ Dump a TOMLDocument into a writable file stream. :param data: a dict-like object to dump :param sort_keys: if true, sort the keys in alphabetic order """ fp.write(dumps(data, sort_keys=sort_keys)) def parse(string: Union[str, bytes]) -> TOMLDocument: """ Parses a string or bytes into a TOMLDocument. """ return Parser(string).parse() def document() -> TOMLDocument: """ Returns a new TOMLDocument instance. """ return TOMLDocument() # Items def integer(raw: Union[str, int]) -> Integer: """Create an integer item from a number or string.""" return item(int(raw)) def float_(raw: Union[str, float]) -> Float: """Create an float item from a number or string.""" return item(float(raw)) def boolean(raw: str) -> Bool: """Turn `true` or `false` into a boolean item.""" return item(raw == "true") def string(raw: str) -> String: """Create a string item.""" return item(raw) def date(raw: str) -> Date: """Create a TOML date.""" value = parse_rfc3339(raw) if not isinstance(value, _datetime.date): raise ValueError("date() only accepts date strings.") return item(value) def time(raw: str) -> Time: """Create a TOML time.""" value = parse_rfc3339(raw) if not isinstance(value, _datetime.time): raise ValueError("time() only accepts time strings.") return item(value) def datetime(raw: str) -> DateTime: """Create a TOML datetime.""" value = parse_rfc3339(raw) if not isinstance(value, _datetime.datetime): raise ValueError("datetime() only accepts datetime strings.") return item(value) def array(raw: str = None) -> Array: """Create an array item for its string representation. :Example: >>> array("[1, 2, 3]") # Create from a string [1, 2, 3] >>> a = array() >>> a.extend([1, 2, 3]) # Create from a list >>> a [1, 2, 3] """ if raw is None: raw = "[]" return value(raw) def table(is_super_table: bool = False) -> Table: """Create an empty table. :param is_super_table: if true, the table is a super table :Example: >>> doc = document() >>> foo = table(True) >>> bar = table() >>> bar.update({'x': 1}) >>> foo.append('bar', bar) >>> doc.append('foo', foo) >>> print(doc.as_string()) [foo.bar] x = 1 """ return Table(Container(), Trivia(), False, is_super_table) def inline_table() -> InlineTable: """Create an inline table. :Example: >>> table = inline_table() >>> table.update({'x': 1, 'y': 2}) >>> print(table.as_string()) {x = 1, y = 2} """ return InlineTable(Container(), Trivia(), new=True) def aot() -> AoT: """Create an array of table. :Example: >>> doc = document() >>> aot = aot() >>> aot.append(item({'x': 1})) >>> doc.append('foo', aot) >>> print(doc.as_string()) [[foo]] x = 1 """ return AoT([]) def key(k: Union[str, Iterable[str]]) -> Key: """Create a key from a string. When a list of string is given, it will create a dotted key. :Example: >>> doc = document() >>> doc.append(key('foo'), 1) >>> doc.append(key(['bar', 'baz']), 2) >>> print(doc.as_string()) foo = 1 bar.baz = 2 """ if isinstance(k, str): return SingleKey(k) return DottedKey([key(_k) for _k in k]) def value(raw: str) -> _Item: """Parse a simple value from a string. :Example: >>> value("1") 1 >>> value("true") True >>> value("[1, 2, 3]") [1, 2, 3] """ parser = Parser(raw) v = parser._parse_value() if not parser.end(): raise parser.parse_error(UnexpectedCharError, char=parser._current) return v def key_value(src: str) -> Tuple[Key, _Item]: """Parse a key-value pair from a string. :Example: >>> key_value("foo = 1") (Key('foo'), 1) """ return Parser(src)._parse_key_value() def ws(src: str) -> Whitespace: """Create a whitespace from a string.""" return Whitespace(src, fixed=True) def nl() -> Whitespace: """Create a newline item.""" return ws("\n") def comment(string: str) -> Comment: """Create a comment item.""" return Comment(Trivia(comment_ws=" ", comment="# " + string)) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tomlkit/container.py0000644000000000000000000006653100000000000014126 0ustar00import copy from typing import Any from typing import Dict from typing import Iterator from typing import List from typing import Optional from typing import Tuple from typing import Union from ._compat import decode from ._utils import merge_dicts from .exceptions import KeyAlreadyPresent from .exceptions import NonExistentKey from .exceptions import TOMLKitError from .items import AoT from .items import Comment from .items import Item from .items import Key from .items import Null from .items import SingleKey from .items import Table from .items import Trivia from .items import Whitespace from .items import _CustomDict from .items import item as _item _NOT_SET = object() class Container(_CustomDict): """ A container for items within a TOMLDocument. This class implements the `dict` interface with copy/deepcopy protocol. """ def __init__(self, parsed: bool = False) -> None: self._map: Dict[Key, int] = {} self._body: List[Tuple[Optional[Key], Item]] = [] self._parsed = parsed self._table_keys = [] @property def body(self) -> List[Tuple[Optional[Key], Item]]: return self._body @property def value(self) -> Dict[Any, Any]: d = {} for k, v in self._body: if k is None: continue k = k.key v = v.value if isinstance(v, Container): v = v.value if k in d: merge_dicts(d[k], v) else: d[k] = v return d def parsing(self, parsing: bool) -> None: self._parsed = parsing for _, v in self._body: if isinstance(v, Table): v.value.parsing(parsing) elif isinstance(v, AoT): for t in v.body: t.value.parsing(parsing) def add( self, key: Union[Key, Item, str], item: Optional[Item] = None ) -> "Container": """ Adds an item to the current Container. :Example: >>> # add a key-value pair >>> doc.add('key', 'value') >>> # add a comment or whitespace or newline >>> doc.add(comment('# comment')) """ if item is None: if not isinstance(key, (Comment, Whitespace)): raise ValueError( "Non comment/whitespace items must have an associated key" ) key, item = None, key return self.append(key, item) def _handle_dotted_key(self, key: Key, value: Item) -> None: names = tuple(iter(key)) name = names[0] name._dotted = True if name in self: if not isinstance(value, Table): table = Table(Container(True), Trivia(), False, is_super_table=True) _table = table for i, _name in enumerate(names[1:]): if i == len(names) - 2: _name.sep = key.sep _table.append(_name, value) else: _name._dotted = True _table.append( _name, Table( Container(True), Trivia(), False, is_super_table=i < len(names) - 2, ), ) _table = _table[_name] value = table self.append(name, value) return else: table = Table(Container(True), Trivia(), False, is_super_table=True) self.append(name, table) for i, _name in enumerate(names[1:]): if i == len(names) - 2: _name.sep = key.sep table.append(_name, value) else: _name._dotted = True if _name in table.value: table = table.value[_name] else: table.append( _name, Table( Container(True), Trivia(), False, is_super_table=i < len(names) - 2, ), ) table = table[_name] def append(self, key: Union[Key, str, None], item: Item) -> "Container": """Similar to :meth:`add` but both key and value must be given.""" if not isinstance(key, Key) and key is not None: key = SingleKey(key) if not isinstance(item, Item): item = _item(item) if key is not None and key.is_multi(): self._handle_dotted_key(key, item) return self if isinstance(item, (AoT, Table)) and item.name is None: item.name = key.key prev = self._previous_item() prev_ws = isinstance(prev, Whitespace) or ends_with_withespace(prev) if isinstance(item, Table): if item.name != key.key: item.invalidate_display_name() if self._body and not (self._parsed or item.trivia.indent or prev_ws): item.trivia.indent = "\n" if isinstance(item, AoT) and self._body and not self._parsed: item.invalidate_display_name() if item and not ("\n" in item[0].trivia.indent or prev_ws): item[0].trivia.indent = "\n" + item[0].trivia.indent if key is not None and key in self: current_idx = self._map[key] if isinstance(current_idx, tuple): current_body_element = self._body[current_idx[-1]] else: current_body_element = self._body[current_idx] current = current_body_element[1] if isinstance(item, Table): if not isinstance(current, (Table, AoT)): raise KeyAlreadyPresent(key) if item.is_aot_element(): # New AoT element found later on # Adding it to the current AoT if not isinstance(current, AoT): current = AoT([current, item], parsed=self._parsed) self._replace(key, key, current) else: current.append(item) return self elif current.is_aot(): if not item.is_aot_element(): # Tried to define a table after an AoT with the same name. raise KeyAlreadyPresent(key) current.append(item) return self elif current.is_super_table(): if item.is_super_table(): # We need to merge both super tables if ( self._table_keys[-1] != current_body_element[0] or key.is_dotted() or current_body_element[0].is_dotted() ): if not isinstance(current_idx, tuple): current_idx = (current_idx,) self._map[key] = current_idx + (len(self._body),) self._body.append((key, item)) self._table_keys.append(key) # Building a temporary proxy to check for errors OutOfOrderTableProxy(self, self._map[key]) return self # Create a new element to replace the old one current = copy.deepcopy(current) for k, v in item.value.body: current.append(k, v) self._body[ current_idx[-1] if isinstance(current_idx, tuple) else current_idx ] = (current_body_element[0], current) return self elif current_body_element[0].is_dotted(): raise TOMLKitError("Redefinition of an existing table") elif not item.is_super_table(): raise KeyAlreadyPresent(key) elif isinstance(item, AoT): if not isinstance(current, AoT): # Tried to define an AoT after a table with the same name. raise KeyAlreadyPresent(key) for table in item.body: current.append(table) return self else: raise KeyAlreadyPresent(key) is_table = isinstance(item, (Table, AoT)) if key is not None and self._body and not self._parsed: # If there is already at least one table in the current container # and the given item is not a table, we need to find the last # item that is not a table and insert after it # If no such item exists, insert at the top of the table key_after = None for i, (k, v) in enumerate(self._body): if isinstance(v, Null): continue # Null elements are inserted after deletion if isinstance(v, Whitespace) and not v.is_fixed(): continue if not is_table and isinstance(v, (Table, AoT)): break key_after = k or i # last scalar, Array or InlineTable value if key_after is not None: if isinstance(key_after, int): if key_after + 1 < len(self._body): return self._insert_at(key_after + 1, key, item) else: previous_item = self._body[-1][1] if not ( isinstance(previous_item, Whitespace) or ends_with_withespace(previous_item) or is_table or "\n" in previous_item.trivia.trail ): previous_item.trivia.trail += "\n" else: return self._insert_after(key_after, key, item) else: return self._insert_at(0, key, item) if key in self._map: current_idx = self._map[key] if isinstance(current_idx, tuple): current_idx = current_idx[-1] current = self._body[current_idx][1] if key is not None and not isinstance(current, Table): raise KeyAlreadyPresent(key) # Adding sub tables to a currently existing table if not isinstance(current_idx, tuple): current_idx = (current_idx,) self._map[key] = current_idx + (len(self._body),) else: self._map[key] = len(self._body) self._body.append((key, item)) if item.is_table(): self._table_keys.append(key) if key is not None: dict.__setitem__(self, key.key, item.value) return self def remove(self, key: Union[Key, str]) -> "Container": """Remove a key from the container.""" if not isinstance(key, Key): key = SingleKey(key) idx = self._map.pop(key, None) if idx is None: raise NonExistentKey(key) if isinstance(idx, tuple): for i in idx: self._body[i] = (None, Null()) else: self._body[idx] = (None, Null()) dict.__delitem__(self, key.key) return self def _insert_after( self, key: Union[Key, str], other_key: Union[Key, str], item: Any ) -> "Container": if key is None: raise ValueError("Key cannot be null in insert_after()") if key not in self: raise NonExistentKey(key) if not isinstance(key, Key): key = SingleKey(key) if not isinstance(other_key, Key): other_key = SingleKey(other_key) item = _item(item) idx = self._map[key] # Insert after the max index if there are many. if isinstance(idx, tuple): idx = max(idx) current_item = self._body[idx][1] if "\n" not in current_item.trivia.trail: current_item.trivia.trail += "\n" # Increment indices after the current index for k, v in self._map.items(): if isinstance(v, tuple): new_indices = [] for v_ in v: if v_ > idx: v_ = v_ + 1 new_indices.append(v_) self._map[k] = tuple(new_indices) elif v > idx: self._map[k] = v + 1 self._map[other_key] = idx + 1 self._body.insert(idx + 1, (other_key, item)) if key is not None: dict.__setitem__(self, other_key.key, item.value) return self def _insert_at(self, idx: int, key: Union[Key, str], item: Any) -> "Container": if idx > len(self._body) - 1: raise ValueError(f"Unable to insert at position {idx}") if not isinstance(key, Key): key = SingleKey(key) item = _item(item) if idx > 0: previous_item = self._body[idx - 1][1] if not ( isinstance(previous_item, Whitespace) or ends_with_withespace(previous_item) or isinstance(item, (AoT, Table)) or "\n" in previous_item.trivia.trail ): previous_item.trivia.trail += "\n" # Increment indices after the current index for k, v in self._map.items(): if isinstance(v, tuple): new_indices = [] for v_ in v: if v_ >= idx: v_ = v_ + 1 new_indices.append(v_) self._map[k] = tuple(new_indices) elif v >= idx: self._map[k] = v + 1 self._map[key] = idx self._body.insert(idx, (key, item)) if key is not None: dict.__setitem__(self, key.key, item.value) return self def item(self, key: Union[Key, str]) -> Item: """Get an item for the given key.""" if not isinstance(key, Key): key = SingleKey(key) idx = self._map.get(key, None) if idx is None: raise NonExistentKey(key) if isinstance(idx, tuple): # The item we are getting is an out of order table # so we need a proxy to retrieve the proper objects # from the parent container return OutOfOrderTableProxy(self, idx) return self._body[idx][1] def last_item(self) -> Optional[Item]: """Get the last item.""" if self._body: return self._body[-1][1] def as_string(self) -> str: """Render as TOML string.""" s = "" for k, v in self._body: if k is not None: if isinstance(v, Table): s += self._render_table(k, v) elif isinstance(v, AoT): s += self._render_aot(k, v) else: s += self._render_simple_item(k, v) else: s += self._render_simple_item(k, v) return s def _render_table( self, key: Key, table: Table, prefix: Optional[str] = None ) -> str: cur = "" if table.display_name is not None: _key = table.display_name else: _key = key.as_string() if prefix is not None: _key = prefix + "." + _key if not table.is_super_table() or ( any( not isinstance(v, (Table, AoT, Whitespace)) for _, v in table.value.body ) and not key.is_dotted() ): open_, close = "[", "]" if table.is_aot_element(): open_, close = "[[", "]]" cur += "{}{}{}{}{}{}{}{}".format( table.trivia.indent, open_, decode(_key), close, table.trivia.comment_ws, decode(table.trivia.comment), table.trivia.trail, "\n" if "\n" not in table.trivia.trail and len(table.value) > 0 else "", ) for k, v in table.value.body: if isinstance(v, Table): if v.is_super_table(): if k.is_dotted() and not key.is_dotted(): # Dotted key inside table cur += self._render_table(k, v) else: cur += self._render_table(k, v, prefix=_key) else: cur += self._render_table(k, v, prefix=_key) elif isinstance(v, AoT): cur += self._render_aot(k, v, prefix=_key) else: cur += self._render_simple_item( k, v, prefix=_key if key.is_dotted() else None ) return cur def _render_aot(self, key, aot, prefix=None): _key = key.as_string() if prefix is not None: _key = prefix + "." + _key cur = "" _key = decode(_key) for table in aot.body: cur += self._render_aot_table(table, prefix=_key) return cur def _render_aot_table(self, table: Table, prefix: Optional[str] = None) -> str: cur = "" _key = prefix or "" if not table.is_super_table(): open_, close = "[[", "]]" cur += "{}{}{}{}{}{}{}".format( table.trivia.indent, open_, decode(_key), close, table.trivia.comment_ws, decode(table.trivia.comment), table.trivia.trail, ) for k, v in table.value.body: if isinstance(v, Table): if v.is_super_table(): if k.is_dotted(): # Dotted key inside table cur += self._render_table(k, v) else: cur += self._render_table(k, v, prefix=_key) else: cur += self._render_table(k, v, prefix=_key) elif isinstance(v, AoT): cur += self._render_aot(k, v, prefix=_key) else: cur += self._render_simple_item(k, v) return cur def _render_simple_item(self, key, item, prefix=None): if key is None: return item.as_string() _key = key.as_string() if prefix is not None: _key = prefix + "." + _key return "{}{}{}{}{}{}{}".format( item.trivia.indent, decode(_key), key.sep, decode(item.as_string()), item.trivia.comment_ws, decode(item.trivia.comment), item.trivia.trail, ) def __len__(self) -> int: return dict.__len__(self) def __iter__(self) -> Iterator[str]: return iter(dict.keys(self)) # Dictionary methods def __getitem__(self, key: Union[Key, str]) -> Union[Item, "Container"]: if not isinstance(key, Key): key = SingleKey(key) idx = self._map.get(key, None) if idx is None: raise NonExistentKey(key) if isinstance(idx, tuple): # The item we are getting is an out of order table # so we need a proxy to retrieve the proper objects # from the parent container return OutOfOrderTableProxy(self, idx) item = self._body[idx][1] if item.is_boolean(): return item.value return item def __setitem__(self, key: Union[Key, str], value: Any) -> None: if key is not None and key in self: old_key = next(filter(lambda k: k == key, self._map)) self._replace(old_key, key, value) else: self.append(key, value) def __delitem__(self, key: Union[Key, str]) -> None: self.remove(key) def setdefault(self, key: Union[Key, str], default: Any) -> Any: super().setdefault(key, default=default) return self[key] def _replace( self, key: Union[Key, str], new_key: Union[Key, str], value: Item ) -> None: if not isinstance(key, Key): key = SingleKey(key) idx = self._map.get(key, None) if idx is None: raise NonExistentKey(key) self._replace_at(idx, new_key, value) def _replace_at( self, idx: Union[int, Tuple[int]], new_key: Union[Key, str], value: Item ) -> None: value = _item(value) if isinstance(idx, tuple): for i in idx[1:]: self._body[i] = (None, Null()) idx = idx[0] k, v = self._body[idx] if not isinstance(new_key, Key): if ( isinstance(value, (AoT, Table)) != isinstance(v, (AoT, Table)) or new_key != k.key ): new_key = SingleKey(new_key) else: # Inherit the sep of the old key new_key = k del self._map[k] self._map[new_key] = idx if new_key != k: dict.__delitem__(self, k) if isinstance(value, (AoT, Table)) != isinstance(v, (AoT, Table)): # new tables should appear after all non-table values self.remove(k) for i in range(idx, len(self._body)): if isinstance(self._body[i][1], (AoT, Table)): self._insert_at(i, new_key, value) idx = i break else: idx = -1 self.append(new_key, value) else: # Copying trivia if not isinstance(value, (Whitespace, AoT)): value.trivia.indent = v.trivia.indent value.trivia.comment_ws = value.trivia.comment_ws or v.trivia.comment_ws value.trivia.comment = value.trivia.comment or v.trivia.comment value.trivia.trail = v.trivia.trail self._body[idx] = (new_key, value) if hasattr(value, "invalidate_display_name"): value.invalidate_display_name() # type: ignore[attr-defined] if isinstance(value, Table): # Insert a cosmetic new line for tables if: # - it does not have it yet OR is not followed by one # - it is not the last item last, _ = self._previous_item_with_index() idx = last if idx < 0 else idx has_ws = ends_with_withespace(value) next_ws = idx < last and isinstance(self._body[idx + 1][1], Whitespace) if idx < last and not (next_ws or has_ws): value.append(None, Whitespace("\n")) dict.__setitem__(self, new_key.key, value.value) def __str__(self) -> str: return str(self.value) def __repr__(self) -> str: return repr(self.value) def __eq__(self, other: dict) -> bool: if not isinstance(other, dict): return NotImplemented return self.value == other def _getstate(self, protocol): return (self._parsed,) def __reduce__(self): return self.__reduce_ex__(2) def __reduce_ex__(self, protocol): return ( self.__class__, self._getstate(protocol), (self._map, self._body, self._parsed, self._table_keys), ) def __setstate__(self, state): self._map = state[0] self._body = state[1] self._parsed = state[2] self._table_keys = state[3] for key, item in self._body: if key is not None: dict.__setitem__(self, key.key, item.value) def copy(self) -> "Container": return copy.copy(self) def __copy__(self) -> "Container": c = self.__class__(self._parsed) for k, v in dict.items(self): dict.__setitem__(c, k, v) c._body += self.body c._map.update(self._map) return c def _previous_item_with_index( self, idx: Optional[int] = None, ignore=(Null,) ) -> Optional[Tuple[int, Item]]: """Find the immediate previous item before index ``idx``""" if idx is None or idx > len(self._body): idx = len(self._body) for i in range(idx - 1, -1, -1): v = self._body[i][-1] if not isinstance(v, ignore): return i, v return None def _previous_item( self, idx: Optional[int] = None, ignore=(Null,) ) -> Optional[Item]: """Find the immediate previous item before index ``idx``. If ``idx`` is not given, the last item is returned. """ prev = self._previous_item_with_index(idx, ignore) return prev[-1] if prev else None class OutOfOrderTableProxy(_CustomDict): def __init__(self, container: Container, indices: Tuple[int]) -> None: self._container = container self._internal_container = Container(True) self._tables = [] self._tables_map = {} for i in indices: key, item = self._container._body[i] if isinstance(item, Table): self._tables.append(item) table_idx = len(self._tables) - 1 for k, v in item.value.body: self._internal_container.append(k, v) self._tables_map[k] = table_idx if k is not None: dict.__setitem__(self, k.key, v) @property def value(self): return self._internal_container.value def __getitem__(self, key: Union[Key, str]) -> Any: if key not in self._internal_container: raise NonExistentKey(key) return self._internal_container[key] def __setitem__(self, key: Union[Key, str], item: Any) -> None: if key in self._tables_map: table = self._tables[self._tables_map[key]] table[key] = item elif self._tables: table = self._tables[0] table[key] = item else: self._container[key] = item self._internal_container[key] = item if key is not None: dict.__setitem__(self, key, item) def __delitem__(self, key: Union[Key, str]) -> None: if key in self._tables_map: table = self._tables[self._tables_map[key]] del table[key] del self._tables_map[key] else: raise NonExistentKey(key) del self._internal_container[key] if key is not None: dict.__delitem__(self, key) def __iter__(self) -> Iterator[str]: return iter(dict.keys(self)) def __len__(self) -> int: return dict.__len__(self) def __getattr__(self, attribute): return getattr(self._internal_container, attribute) def setdefault(self, key: Union[Key, str], default: Any) -> Any: super().setdefault(key, default=default) return self[key] def ends_with_withespace(it: Any) -> bool: """Returns ``True`` if the given item ``it`` is a ``Table`` or ``AoT`` object ending with a ``Whitespace``. """ return ( isinstance(it, Table) and isinstance(it.value._previous_item(), Whitespace) ) or (isinstance(it, AoT) and len(it) > 0 and isinstance(it[-1], Whitespace)) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tomlkit/exceptions.py0000644000000000000000000001171000000000000014312 0ustar00from typing import Optional class TOMLKitError(Exception): pass class ParseError(ValueError, TOMLKitError): """ This error occurs when the parser encounters a syntax error in the TOML being parsed. The error references the line and location within the line where the error was encountered. """ def __init__(self, line: int, col: int, message: Optional[str] = None) -> None: self._line = line self._col = col if message is None: message = "TOML parse error" super().__init__(f"{message} at line {self._line} col {self._col}") @property def line(self): return self._line @property def col(self): return self._col class MixedArrayTypesError(ParseError): """ An array was found that had two or more element types. """ def __init__(self, line: int, col: int) -> None: message = "Mixed types found in array" super().__init__(line, col, message=message) class InvalidNumberError(ParseError): """ A numeric field was improperly specified. """ def __init__(self, line: int, col: int) -> None: message = "Invalid number" super().__init__(line, col, message=message) class InvalidDateTimeError(ParseError): """ A datetime field was improperly specified. """ def __init__(self, line: int, col: int) -> None: message = "Invalid datetime" super().__init__(line, col, message=message) class InvalidDateError(ParseError): """ A date field was improperly specified. """ def __init__(self, line: int, col: int) -> None: message = "Invalid date" super().__init__(line, col, message=message) class InvalidTimeError(ParseError): """ A date field was improperly specified. """ def __init__(self, line: int, col: int) -> None: message = "Invalid time" super().__init__(line, col, message=message) class InvalidNumberOrDateError(ParseError): """ A numeric or date field was improperly specified. """ def __init__(self, line: int, col: int) -> None: message = "Invalid number or date format" super().__init__(line, col, message=message) class InvalidUnicodeValueError(ParseError): """ A unicode code was improperly specified. """ def __init__(self, line: int, col: int) -> None: message = "Invalid unicode value" super().__init__(line, col, message=message) class UnexpectedCharError(ParseError): """ An unexpected character was found during parsing. """ def __init__(self, line: int, col: int, char: str) -> None: message = f"Unexpected character: {repr(char)}" super().__init__(line, col, message=message) class EmptyKeyError(ParseError): """ An empty key was found during parsing. """ def __init__(self, line: int, col: int) -> None: message = "Empty key" super().__init__(line, col, message=message) class EmptyTableNameError(ParseError): """ An empty table name was found during parsing. """ def __init__(self, line: int, col: int) -> None: message = "Empty table name" super().__init__(line, col, message=message) class InvalidCharInStringError(ParseError): """ The string being parsed contains an invalid character. """ def __init__(self, line: int, col: int, char: str) -> None: message = f"Invalid character {repr(char)} in string" super().__init__(line, col, message=message) class UnexpectedEofError(ParseError): """ The TOML being parsed ended before the end of a statement. """ def __init__(self, line: int, col: int) -> None: message = "Unexpected end of file" super().__init__(line, col, message=message) class InternalParserError(ParseError): """ An error that indicates a bug in the parser. """ def __init__(self, line: int, col: int, message: Optional[str] = None) -> None: msg = "Internal parser error" if message: msg += f" ({message})" super().__init__(line, col, message=msg) class NonExistentKey(KeyError, TOMLKitError): """ A non-existent key was used. """ def __init__(self, key): message = f'Key "{key}" does not exist.' super().__init__(message) class KeyAlreadyPresent(TOMLKitError): """ An already present key was used. """ def __init__(self, key): message = f'Key "{key}" already exists.' super().__init__(message) class InvalidControlChar(ParseError): def __init__(self, line: int, col: int, char: int, type: str) -> None: display_code = "\\u00" if char < 16: display_code += "0" display_code += hex(char)[2:] message = ( "Control characters (codes less than 0x1f and 0x7f) are not allowed in {}, " "use {} instead".format(type, display_code) ) super().__init__(line, col, message=message) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tomlkit/items.py0000644000000000000000000012303400000000000013255 0ustar00import abc import copy import re import string from datetime import date from datetime import datetime from datetime import time from datetime import tzinfo from enum import Enum from functools import lru_cache from typing import TYPE_CHECKING from typing import Any from typing import Dict from typing import Iterable from typing import Iterator from typing import List from typing import Optional from typing import TypeVar from typing import Union from typing import cast from typing import overload from ._compat import PY38 from ._compat import decode from ._utils import escape_string from .toml_char import TOMLChar if TYPE_CHECKING: # pragma: no cover # Define _CustomList and _CustomDict as a workaround for: # https://github.com/python/mypy/issues/11427 # # According to this issue, the typeshed contains a "lie" # (it adds MutableSequence to the ancestry of list and MutableMapping to # the ancestry of dict) which completely messes with the type inference for # Table, InlineTable, Array and Container. # # Importing from builtins is preferred over simple assignment, see issues: # https://github.com/python/mypy/issues/8715 # https://github.com/python/mypy/issues/10068 from builtins import dict as _CustomDict from builtins import list as _CustomList # Allow type annotations but break circular imports from . import container else: from collections.abc import MutableMapping from collections.abc import MutableSequence class _CustomList(MutableSequence, list): """Adds MutableSequence mixin while pretending to be a builtin list""" class _CustomDict(MutableMapping, dict): """Adds MutableMapping mixin while pretending to be a builtin dict""" def item( value: Any, _parent: Optional["Item"] = None, _sort_keys: bool = False ) -> "Item": """Create a TOML item from a Python object. :Example: >>> item(42) 42 >>> item([1, 2, 3]) [1, 2, 3] >>> item({'a': 1, 'b': 2}) a = 1 b = 2 """ from .container import Container if isinstance(value, Item): return value if isinstance(value, bool): return Bool(value, Trivia()) elif isinstance(value, int): return Integer(value, Trivia(), str(value)) elif isinstance(value, float): return Float(value, Trivia(), str(value)) elif isinstance(value, dict): table_constructor = InlineTable if isinstance(_parent, Array) else Table val = table_constructor(Container(), Trivia(), False) for k, v in sorted( value.items(), key=lambda i: (isinstance(i[1], dict), i[0] if _sort_keys else 1), ): val[k] = item(v, _parent=val, _sort_keys=_sort_keys) only_child = len(value) == 1 and val[next(iter(value))] if ( table_constructor is Table and only_child and isinstance(only_child, (AoT, Table)) ): # The table becomes super table if the only child is a table or AoT. val._is_super_table = True return val elif isinstance(value, (list, tuple)): if value and all(isinstance(v, dict) for v in value): a = AoT([]) table_constructor = Table else: a = Array([], Trivia()) table_constructor = InlineTable for v in value: if isinstance(v, dict): table = table_constructor(Container(), Trivia(), True) for k, _v in sorted( v.items(), key=lambda i: (isinstance(i[1], dict), i[0] if _sort_keys else 1), ): i = item(_v, _parent=a, _sort_keys=_sort_keys) if isinstance(table, InlineTable): i.trivia.trail = "" table[k] = i v = table a.append(v) return a elif isinstance(value, str): escaped = escape_string(value) return String(StringType.SLB, decode(value), escaped, Trivia()) elif isinstance(value, datetime): return DateTime( value.year, value.month, value.day, value.hour, value.minute, value.second, value.microsecond, value.tzinfo, Trivia(), value.isoformat().replace("+00:00", "Z"), ) elif isinstance(value, date): return Date(value.year, value.month, value.day, Trivia(), value.isoformat()) elif isinstance(value, time): return Time( value.hour, value.minute, value.second, value.microsecond, value.tzinfo, Trivia(), value.isoformat(), ) raise ValueError(f"Invalid type {type(value)}") class StringType(Enum): # Single Line Basic SLB = '"' # Multi Line Basic MLB = '"""' # Single Line Literal SLL = "'" # Multi Line Literal MLL = "'''" @property @lru_cache(maxsize=None) def unit(self) -> str: return self.value[0] @lru_cache(maxsize=None) def is_basic(self) -> bool: return self in {StringType.SLB, StringType.MLB} @lru_cache(maxsize=None) def is_literal(self) -> bool: return self in {StringType.SLL, StringType.MLL} @lru_cache(maxsize=None) def is_singleline(self) -> bool: return self in {StringType.SLB, StringType.SLL} @lru_cache(maxsize=None) def is_multiline(self) -> bool: return self in {StringType.MLB, StringType.MLL} @lru_cache(maxsize=None) def toggle(self) -> "StringType": return { StringType.SLB: StringType.MLB, StringType.MLB: StringType.SLB, StringType.SLL: StringType.MLL, StringType.MLL: StringType.SLL, }[self] class BoolType(Enum): TRUE = "true" FALSE = "false" @lru_cache(maxsize=None) def __bool__(self): return {BoolType.TRUE: True, BoolType.FALSE: False}[self] def __iter__(self): return iter(self.value) def __len__(self): return len(self.value) class Trivia: """ Trivia information (aka metadata). """ def __init__( self, indent: str = None, comment_ws: str = None, comment: str = None, trail: str = None, ) -> None: # Whitespace before a value. self.indent = indent or "" # Whitespace after a value, but before a comment. self.comment_ws = comment_ws or "" # Comment, starting with # character, or empty string if no comment. self.comment = comment or "" # Trailing newline. if trail is None: trail = "\n" self.trail = trail def copy(self) -> "Trivia": return type(self)(self.indent, self.comment_ws, self.comment, self.trail) class KeyType(Enum): """ The type of a Key. Keys can be bare (unquoted), or quoted using basic ("), or literal (') quotes following the same escaping rules as single-line StringType. """ Bare = "" Basic = '"' Literal = "'" class Key(abc.ABC): """Base class for a key""" sep: str _original: str _keys: List["SingleKey"] _dotted: bool key: str @abc.abstractmethod def __hash__(self) -> int: pass @abc.abstractmethod def __eq__(self, __o: object) -> bool: pass def is_dotted(self) -> bool: """If the key is followed by other keys""" return self._dotted def __iter__(self) -> Iterator["SingleKey"]: return iter(self._keys) def concat(self, other: "Key") -> "DottedKey": """Concatenate keys into a dotted key""" keys = self._keys + other._keys return DottedKey(keys, sep=self.sep) def is_multi(self) -> bool: """Check if the key contains multiple keys""" return len(self._keys) > 1 def as_string(self) -> str: """The TOML representation""" return self._original def __str__(self) -> str: return self.as_string() def __repr__(self) -> str: return f"" class SingleKey(Key): """A single key""" def __init__( self, k: str, t: Optional[KeyType] = None, sep: Optional[str] = None, original: Optional[str] = None, ) -> None: if t is None: if not k or any( c not in string.ascii_letters + string.digits + "-" + "_" for c in k ): t = KeyType.Basic else: t = KeyType.Bare self.t = t if sep is None: sep = " = " self.sep = sep self.key = k if original is None: key_str = escape_string(k) if t == KeyType.Basic else k original = f"{t.value}{key_str}{t.value}" self._original = original self._keys = [self] self._dotted = False @property def delimiter(self) -> str: """The delimiter: double quote/single quote/none""" return self.t.value def is_bare(self) -> bool: """Check if the key is bare""" return self.t == KeyType.Bare def __hash__(self) -> int: return hash(self.key) def __eq__(self, other: Any) -> bool: if isinstance(other, Key): return isinstance(other, SingleKey) and self.key == other.key return self.key == other class DottedKey(Key): def __init__( self, keys: Iterable[Key], sep: Optional[str] = None, original: Optional[str] = None, ) -> None: self._keys = list(keys) if original is None: original = ".".join(k.as_string() for k in self._keys) self.sep = " = " if sep is None else sep self._original = original self._dotted = False self.key = ".".join(k.key for k in self._keys) def __hash__(self) -> int: return hash(tuple(self._keys)) def __eq__(self, __o: object) -> bool: return isinstance(__o, DottedKey) and self._keys == __o._keys class Item: """ An item within a TOML document. """ def __init__(self, trivia: Trivia) -> None: self._trivia = trivia @property def trivia(self) -> Trivia: """The trivia element associated with this item""" return self._trivia @property def discriminant(self) -> int: raise NotImplementedError() def as_string(self) -> str: """The TOML representation""" raise NotImplementedError() # Helpers def comment(self, comment: str) -> "Item": """Attach a comment to this item""" if not comment.strip().startswith("#"): comment = "# " + comment self._trivia.comment_ws = " " self._trivia.comment = comment return self def indent(self, indent: int) -> "Item": """Indent this item with given number of spaces""" if self._trivia.indent.startswith("\n"): self._trivia.indent = "\n" + " " * indent else: self._trivia.indent = " " * indent return self def is_boolean(self) -> bool: return isinstance(self, Bool) def is_table(self) -> bool: return isinstance(self, Table) def is_inline_table(self) -> bool: return isinstance(self, InlineTable) def is_aot(self) -> bool: return isinstance(self, AoT) def _getstate(self, protocol=3): return (self._trivia,) def __reduce__(self): return self.__reduce_ex__(2) def __reduce_ex__(self, protocol): return self.__class__, self._getstate(protocol) class Whitespace(Item): """ A whitespace literal. """ def __init__(self, s: str, fixed: bool = False) -> None: self._s = s self._fixed = fixed @property def s(self) -> str: return self._s @property def value(self) -> str: """The wrapped string of the whitespace""" return self._s @property def trivia(self) -> Trivia: raise RuntimeError("Called trivia on a Whitespace variant.") @property def discriminant(self) -> int: return 0 def is_fixed(self) -> bool: """If the whitespace is fixed, it can't be merged or discarded from the output.""" return self._fixed def as_string(self) -> str: return self._s def __repr__(self) -> str: return f"<{self.__class__.__name__} {repr(self._s)}>" def _getstate(self, protocol=3): return self._s, self._fixed class Comment(Item): """ A comment literal. """ @property def discriminant(self) -> int: return 1 def as_string(self) -> str: return "{}{}{}".format( self._trivia.indent, decode(self._trivia.comment), self._trivia.trail ) def __str__(self) -> str: return f"{self._trivia.indent}{decode(self._trivia.comment)}" class Integer(int, Item): """ An integer literal. """ def __new__(cls, value: int, trivia: Trivia, raw: str) -> "Integer": return super().__new__(cls, value) def __init__(self, _: int, trivia: Trivia, raw: str) -> None: super().__init__(trivia) self._raw = raw self._sign = False if re.match(r"^[+\-]\d+$", raw): self._sign = True @property def discriminant(self) -> int: return 2 @property def value(self) -> int: """The wrapped integer value""" return self def as_string(self) -> str: return self._raw def __add__(self, other): result = super().__add__(other) return self._new(result) def __radd__(self, other): result = super().__radd__(other) if isinstance(other, Integer): return self._new(result) return result def __sub__(self, other): result = super().__sub__(other) return self._new(result) def __rsub__(self, other): result = super().__rsub__(other) if isinstance(other, Integer): return self._new(result) return result def _new(self, result): raw = str(result) if self._sign: sign = "+" if result >= 0 else "-" raw = sign + raw return Integer(result, self._trivia, raw) def _getstate(self, protocol=3): return int(self), self._trivia, self._raw class Float(float, Item): """ A float literal. """ def __new__(cls, value: float, trivia: Trivia, raw: str) -> Integer: return super().__new__(cls, value) def __init__(self, _: float, trivia: Trivia, raw: str) -> None: super().__init__(trivia) self._raw = raw self._sign = False if re.match(r"^[+\-].+$", raw): self._sign = True @property def discriminant(self) -> int: return 3 @property def value(self) -> float: """The wrapped float value""" return self def as_string(self) -> str: return self._raw def __add__(self, other): result = super().__add__(other) return self._new(result) def __radd__(self, other): result = super().__radd__(other) if isinstance(other, Float): return self._new(result) return result def __sub__(self, other): result = super().__sub__(other) return self._new(result) def __rsub__(self, other): result = super().__rsub__(other) if isinstance(other, Float): return self._new(result) return result def _new(self, result): raw = str(result) if self._sign: sign = "+" if result >= 0 else "-" raw = sign + raw return Float(result, self._trivia, raw) def _getstate(self, protocol=3): return float(self), self._trivia, self._raw class Bool(Item): """ A boolean literal. """ def __init__(self, t: int, trivia: Trivia) -> None: super().__init__(trivia) self._value = bool(t) @property def discriminant(self) -> int: return 4 @property def value(self) -> bool: """The wrapped boolean value""" return self._value def as_string(self) -> str: return str(self._value).lower() def _getstate(self, protocol=3): return self._value, self._trivia def __bool__(self): return self._value __nonzero__ = __bool__ def __eq__(self, other): if not isinstance(other, bool): return NotImplemented return other == self._value def __hash__(self): return hash(self._value) def __repr__(self): return repr(self._value) class DateTime(Item, datetime): """ A datetime literal. """ def __new__( cls, year: int, month: int, day: int, hour: int, minute: int, second: int, microsecond: int, tzinfo: Optional[tzinfo], trivia: Trivia, raw: str, **kwargs: Any, ) -> datetime: return datetime.__new__( cls, year, month, day, hour, minute, second, microsecond, tzinfo=tzinfo, **kwargs, ) def __init__( self, year: int, month: int, day: int, hour: int, minute: int, second: int, microsecond: int, tzinfo: Optional[tzinfo], trivia: Trivia, raw: str, ) -> None: super().__init__(trivia) self._raw = raw @property def discriminant(self) -> int: return 5 @property def value(self) -> datetime: return self def as_string(self) -> str: return self._raw def __add__(self, other): if PY38: result = datetime( self.year, self.month, self.day, self.hour, self.minute, self.second, self.microsecond, self.tzinfo, ).__add__(other) else: result = super().__add__(other) return self._new(result) def __sub__(self, other): if PY38: result = datetime( self.year, self.month, self.day, self.hour, self.minute, self.second, self.microsecond, self.tzinfo, ).__sub__(other) else: result = super().__sub__(other) if isinstance(result, datetime): result = self._new(result) return result def _new(self, result): raw = result.isoformat() return DateTime( result.year, result.month, result.day, result.hour, result.minute, result.second, result.microsecond, result.tzinfo, self._trivia, raw, ) def _getstate(self, protocol=3): return ( self.year, self.month, self.day, self.hour, self.minute, self.second, self.microsecond, self.tzinfo, self._trivia, self._raw, ) class Date(Item, date): """ A date literal. """ def __new__(cls, year: int, month: int, day: int, *_: Any) -> date: return date.__new__(cls, year, month, day) def __init__( self, year: int, month: int, day: int, trivia: Trivia, raw: str ) -> None: super().__init__(trivia) self._raw = raw @property def discriminant(self) -> int: return 6 @property def value(self) -> date: return self def as_string(self) -> str: return self._raw def __add__(self, other): if PY38: result = date(self.year, self.month, self.day).__add__(other) else: result = super().__add__(other) return self._new(result) def __sub__(self, other): if PY38: result = date(self.year, self.month, self.day).__sub__(other) else: result = super().__sub__(other) if isinstance(result, date): result = self._new(result) return result def _new(self, result): raw = result.isoformat() return Date(result.year, result.month, result.day, self._trivia, raw) def _getstate(self, protocol=3): return (self.year, self.month, self.day, self._trivia, self._raw) class Time(Item, time): """ A time literal. """ def __new__( cls, hour: int, minute: int, second: int, microsecond: int, tzinfo: Optional[tzinfo], *_: Any, ) -> time: return time.__new__(cls, hour, minute, second, microsecond, tzinfo) def __init__( self, hour: int, minute: int, second: int, microsecond: int, tzinfo: Optional[tzinfo], trivia: Trivia, raw: str, ) -> None: super().__init__(trivia) self._raw = raw @property def discriminant(self) -> int: return 7 @property def value(self) -> time: return self def as_string(self) -> str: return self._raw def _getstate(self, protocol: int = 3) -> tuple: return ( self.hour, self.minute, self.second, self.microsecond, self.tzinfo, self._trivia, self._raw, ) class Array(Item, _CustomList): """ An array literal """ def __init__(self, value: list, trivia: Trivia, multiline: bool = False) -> None: super().__init__(trivia) self._index_map: Dict[int, int] = {} list.__init__( self, [v.value for v in value if not isinstance(v, (Whitespace, Comment))] ) self._value = value self._multiline = multiline self._reindex() @property def discriminant(self) -> int: return 8 @property def value(self) -> list: return self def multiline(self, multiline: bool) -> "Array": """Change the array to display in multiline or not. :Example: >>> a = item([1, 2, 3]) >>> print(a.as_string()) [1, 2, 3] >>> print(a.multiline(True).as_string()) [ 1, 2, 3, ] """ self._multiline = multiline return self def as_string(self) -> str: if not self._multiline or not self._value: return "[{}]".format("".join(v.as_string() for v in self._value)) s = "[\n" + self.trivia.indent + " " * 4 s += (",\n" + self.trivia.indent + " " * 4).join( v.as_string() for v in self._value if not isinstance(v, Whitespace) ) s += ",\n" s += "]" return s def _reindex(self) -> None: self._index_map.clear() index = 0 for i, v in enumerate(self._value): if isinstance(v, (Whitespace, Comment)): continue self._index_map[index] = i index += 1 def add_line( self, *items: Any, indent: str = " ", comment: Optional[str] = None, add_comma: bool = True, newline: bool = True, ) -> None: """Add multiple items in a line to control the format precisely. When add_comma is True, only accept actual values and ", " will be added between values automatically. :Example: >>> a = array() >>> a.add_line(1, 2, 3) >>> a.add_line(4, 5, 6) >>> a.add_line(indent="") >>> print(a.as_string()) [ 1, 2, 3, 4, 5, 6, ] """ values = self._value[:] new_values = [] def append_item(el: Item) -> None: if not values: return values.append(el) last_el = values[-1] if ( isinstance(el, Whitespace) and "," not in el.s and isinstance(last_el, Whitespace) and "," not in last_el.s ): values[-1] = Whitespace(last_el.s + el.s) else: values.append(el) if newline: append_item(Whitespace("\n")) if indent: append_item(Whitespace(indent)) for i, el in enumerate(items): el = item(el, _parent=self) if isinstance(el, Comment) or add_comma and isinstance(el, Whitespace): raise ValueError(f"item type {type(el)} is not allowed") if not isinstance(el, Whitespace): new_values.append(el.value) append_item(el) if add_comma: append_item(Whitespace(",")) if i != len(items) - 1: append_item(Whitespace(" ")) if comment: indent = " " if items else "" append_item( Comment(Trivia(indent=indent, comment=f"# {comment}", trail="")) ) # Atomic manipulation self._value[:] = values list.extend(self, new_values) self._reindex() def clear(self) -> None: """Clear the array.""" list.clear(self) self._value.clear() self._index_map.clear() def __len__(self) -> int: return list.__len__(self) def __getitem__(self, key: Union[int, slice]) -> Any: return list.__getitem__(self, key) def __setitem__(self, key: Union[int, slice], value: Any) -> Any: it = item(value, _parent=self) list.__setitem__(self, key, it.value) if isinstance(key, slice): raise ValueError("slice assignment is not supported") if key < 0: key += len(self) self._value[self._index_map[key]] = it def insert(self, pos: int, value: Any) -> None: it = item(value, _parent=self) length = len(self) if not isinstance(it, (Comment, Whitespace)): list.insert(self, pos, it.value) if pos < 0: pos += length if pos < 0: pos = 0 items = [it] idx = 0 if pos < length: try: idx = self._index_map[pos] except KeyError: raise IndexError("list index out of range") if not isinstance(it, (Whitespace, Comment)): items.append(Whitespace(",")) else: idx = len(self._value) if idx > 0: last_item = self._value[idx - 1] if isinstance(last_item, Whitespace) and "," not in last_item.s: # the item has an indent, copy that idx -= 1 ws = last_item.s if isinstance(it, Whitespace) and "," not in it.s: # merge the whitespace self._value[idx] = Whitespace(ws + it.s) return else: ws = "" has_newline = bool(set(ws) & set(TOMLChar.NL)) has_space = ws and ws[-1] in TOMLChar.SPACES if not has_space: # four spaces for multiline array and single space otherwise ws += " " if has_newline else " " items.insert(0, Whitespace(ws)) self._value[idx:idx] = items i = idx - 1 if pos > 0: # Check if the last item ends with a comma while i >= 0 and isinstance(self._value[i], (Whitespace, Comment)): if isinstance(self._value[i], Whitespace) and "," in self._value[i].s: break i -= 1 else: self._value.insert(i + 1, Whitespace(",")) self._reindex() def __delitem__(self, key: Union[int, slice]): length = len(self) list.__delitem__(self, key) def get_indice_to_remove(idx: int) -> Iterable[int]: try: real_idx = self._index_map[idx] except KeyError: raise IndexError("list index out of range") yield real_idx for i in range(real_idx + 1, len(self._value)): if isinstance(self._value[i], Whitespace): yield i else: break indexes = set() if isinstance(key, slice): for idx in range(key.start or 0, key.stop or length, key.step or 1): indexes.update(get_indice_to_remove(idx)) else: indexes.update(get_indice_to_remove(length + key if key < 0 else key)) for i in sorted(indexes, reverse=True): del self._value[i] while self._value and isinstance(self._value[-1], Whitespace): self._value.pop() self._reindex() def __str__(self): return str( [v.value for v in self._value if not isinstance(v, (Whitespace, Comment))] ) def _getstate(self, protocol=3): return self._value, self._trivia AT = TypeVar("AT", bound="AbstractTable") class AbstractTable(Item, _CustomDict): """Common behaviour of both :class:`Table` and :class:`InlineTable`""" def __init__(self, value: "container.Container", trivia: Trivia): Item.__init__(self, trivia) self._value = value for k, v in self._value.body: if k is not None: dict.__setitem__(self, k.key, v) @property def value(self) -> "container.Container": return self._value @overload def append(self: AT, key: None, value: Union[Comment, Whitespace]) -> AT: ... @overload def append(self: AT, key: Union[Key, str], value: Any) -> AT: ... def append(self, key, value): raise NotImplementedError @overload def add(self: AT, value: Union[Comment, Whitespace]) -> AT: ... @overload def add(self: AT, key: Union[Key, str], value: Any) -> AT: ... def add(self, key, value=None): if value is None: if not isinstance(key, (Comment, Whitespace)): msg = "Non comment/whitespace items must have an associated key" raise ValueError(msg) key, value = None, key return self.append(key, value) def remove(self: AT, key: Union[Key, str]) -> AT: self._value.remove(key) if isinstance(key, Key): key = key.key if key is not None: dict.__delitem__(self, key) return self def setdefault(self, key: Union[Key, str], default: Any) -> Any: super().setdefault(key, default) return self[key] def __str__(self): return str(self.value) def copy(self: AT) -> AT: return copy.copy(self) def __repr__(self) -> str: return repr(self.value) def __iter__(self) -> Iterator[str]: return iter(self._value) def __len__(self) -> int: return len(self._value) def __delitem__(self, key: Union[Key, str]) -> None: self.remove(key) def __getitem__(self, key: Union[Key, str]) -> Item: return cast(Item, self._value[key]) def __setitem__(self, key: Union[Key, str], value: Any) -> None: if not isinstance(value, Item): value = item(value) is_replace = key in self self._value[key] = value if key is not None: dict.__setitem__(self, key, value) if is_replace: return m = re.match("(?s)^[^ ]*([ ]+).*$", self._trivia.indent) if not m: return indent = m.group(1) if not isinstance(value, Whitespace): m = re.match("(?s)^([^ ]*)(.*)$", value.trivia.indent) if not m: value.trivia.indent = indent else: value.trivia.indent = m.group(1) + indent + m.group(2) class Table(AbstractTable): """ A table literal. """ def __init__( self, value: "container.Container", trivia: Trivia, is_aot_element: bool, is_super_table: bool = False, name: Optional[str] = None, display_name: Optional[str] = None, ) -> None: super().__init__(value, trivia) self.name = name self.display_name = display_name self._is_aot_element = is_aot_element self._is_super_table = is_super_table @property def discriminant(self) -> int: return 9 def __copy__(self) -> "Table": return type(self)( self._value.copy(), self._trivia.copy(), self._is_aot_element, self._is_super_table, self.name, self.display_name, ) def append(self, key, _item): """ Appends a (key, item) to the table. """ if not isinstance(_item, Item): _item = item(_item) self._value.append(key, _item) if isinstance(key, Key): key = next(iter(key)).key _item = self._value[key] if key is not None: dict.__setitem__(self, key, _item) m = re.match(r"(?s)^[^ ]*([ ]+).*$", self._trivia.indent) if not m: return self indent = m.group(1) if not isinstance(_item, Whitespace): m = re.match("(?s)^([^ ]*)(.*)$", _item.trivia.indent) if not m: _item.trivia.indent = indent else: _item.trivia.indent = m.group(1) + indent + m.group(2) return self def raw_append(self, key: Union[Key, str], _item: Any) -> "Table": """Similar to :meth:`append` but does not copy indentation.""" if not isinstance(_item, Item): _item = item(_item) self._value.append(key, _item) if isinstance(key, Key): key = next(iter(key)).key _item = self._value[key] if key is not None: dict.__setitem__(self, key, _item) return self def is_aot_element(self) -> bool: """True if the table is the direct child of an AOT element.""" return self._is_aot_element def is_super_table(self) -> bool: """A super table is the intermediate parent of a nested table as in [a.b.c]. If true, it won't appear in the TOML representation.""" return self._is_super_table def as_string(self) -> str: return self._value.as_string() # Helpers def indent(self, indent: int) -> "Table": """Indent the table with given number of spaces.""" super().indent(indent) m = re.match("(?s)^[^ ]*([ ]+).*$", self._trivia.indent) if not m: indent_str = "" else: indent_str = m.group(1) for _, item in self._value.body: if not isinstance(item, Whitespace): item.trivia.indent = indent_str + item.trivia.indent return self def invalidate_display_name(self): self.display_name = None for child in self.values(): if hasattr(child, "invalidate_display_name"): child.invalidate_display_name() def _getstate(self, protocol: int = 3) -> tuple: return ( self._value, self._trivia, self._is_aot_element, self._is_super_table, self.name, self.display_name, ) class InlineTable(AbstractTable): """ An inline table literal. """ def __init__( self, value: "container.Container", trivia: Trivia, new: bool = False ) -> None: super().__init__(value, trivia) self._new = new @property def discriminant(self) -> int: return 10 def append(self, key, _item): """ Appends a (key, item) to the table. """ if not isinstance(_item, Item): _item = item(_item) if not isinstance(_item, (Whitespace, Comment)): if not _item.trivia.indent and len(self._value) > 0 and not self._new: _item.trivia.indent = " " if _item.trivia.comment: _item.trivia.comment = "" self._value.append(key, _item) if isinstance(key, Key): key = key.key if key is not None: dict.__setitem__(self, key, _item) return self def as_string(self) -> str: buf = "{" for i, (k, v) in enumerate(self._value.body): if k is None: if i == len(self._value.body) - 1: if self._new: buf = buf.rstrip(", ") else: buf = buf.rstrip(",") buf += v.as_string() continue buf += "{}{}{}{}{}{}".format( v.trivia.indent, k.as_string() + ("." if k.is_dotted() else ""), k.sep, v.as_string(), v.trivia.comment, v.trivia.trail.replace("\n", ""), ) if i != len(self._value.body) - 1: buf += "," if self._new: buf += " " buf += "}" return buf def __setitem__(self, key: Union[Key, str], value: Any) -> None: if hasattr(value, "trivia") and value.trivia.comment: value.trivia.comment = "" super().__setitem__(key, value) def __copy__(self) -> "InlineTable": return type(self)(self._value.copy(), self._trivia.copy(), self._new) def _getstate(self, protocol: int = 3) -> tuple: return (self._value, self._trivia) class String(str, Item): """ A string literal. """ def __new__(cls, t, value, original, trivia): return super().__new__(cls, value) def __init__(self, t: StringType, _: str, original: str, trivia: Trivia) -> None: super().__init__(trivia) self._t = t self._original = original @property def discriminant(self) -> int: return 11 @property def value(self) -> str: return self def as_string(self) -> str: return f"{self._t.value}{decode(self._original)}{self._t.value}" def __add__(self, other): result = super().__add__(other) return self._new(result) def __sub__(self, other): result = super().__sub__(other) return self._new(result) def _new(self, result): return String(self._t, result, result, self._trivia) def _getstate(self, protocol=3): return self._t, str(self), self._original, self._trivia class AoT(Item, _CustomList): """ An array of table literal """ def __init__( self, body: List[Table], name: Optional[str] = None, parsed: bool = False ) -> None: self.name = name self._body: List[Table] = [] self._parsed = parsed super().__init__(Trivia(trail="")) for table in body: self.append(table) @property def body(self) -> List[Table]: return self._body @property def discriminant(self) -> int: return 12 @property def value(self) -> List[Dict[Any, Any]]: return [v.value for v in self._body] def __len__(self) -> int: return len(self._body) @overload def __getitem__(self, key: slice) -> List[Table]: ... @overload def __getitem__(self, key: int) -> Table: ... def __getitem__(self, key): return self._body[key] def __setitem__(self, key: Union[slice, int], value: Any) -> None: raise NotImplementedError def __delitem__(self, key: Union[slice, int]) -> None: del self._body[key] list.__delitem__(self, key) def insert(self, index: int, value: dict) -> None: value = item(value, _parent=self) if not isinstance(value, Table): raise ValueError(f"Unsupported insert value type: {type(value)}") length = len(self) if index < 0: index += length if index < 0: index = 0 elif index >= length: index = length m = re.match("(?s)^[^ ]*([ ]+).*$", self._trivia.indent) if m: indent = m.group(1) m = re.match("(?s)^([^ ]*)(.*)$", value.trivia.indent) if not m: value.trivia.indent = indent else: value.trivia.indent = m.group(1) + indent + m.group(2) prev_table = self._body[index - 1] if 0 < index and length else None next_table = self._body[index + 1] if index < length - 1 else None if not self._parsed: if prev_table and "\n" not in value.trivia.indent: value.trivia.indent = "\n" + value.trivia.indent if next_table and "\n" not in next_table.trivia.indent: next_table.trivia.indent = "\n" + next_table.trivia.indent self._body.insert(index, value) list.insert(self, index, value) def invalidate_display_name(self): """Call ``invalidate_display_name`` on the contained tables""" for child in self: if hasattr(child, "invalidate_display_name"): child.invalidate_display_name() def as_string(self) -> str: b = "" for table in self._body: b += table.as_string() return b def __repr__(self) -> str: return f"" def _getstate(self, protocol=3): return self._body, self.name, self._parsed class Null(Item): """ A null item. """ def __init__(self) -> None: pass @property def discriminant(self) -> int: return -1 @property def value(self) -> None: return None def as_string(self) -> str: return "" def _getstate(self, protocol=3): return tuple() ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tomlkit/parser.py0000644000000000000000000011011200000000000013421 0ustar00import re import string from typing import List from typing import Optional from typing import Tuple from typing import Type from typing import Union from ._compat import decode from ._utils import RFC_3339_LOOSE from ._utils import _escaped from ._utils import parse_rfc3339 from .container import Container from .exceptions import EmptyKeyError from .exceptions import EmptyTableNameError from .exceptions import InternalParserError from .exceptions import InvalidCharInStringError from .exceptions import InvalidControlChar from .exceptions import InvalidDateError from .exceptions import InvalidDateTimeError from .exceptions import InvalidNumberError from .exceptions import InvalidTimeError from .exceptions import InvalidUnicodeValueError from .exceptions import ParseError from .exceptions import UnexpectedCharError from .exceptions import UnexpectedEofError from .items import AoT from .items import Array from .items import Bool from .items import BoolType from .items import Comment from .items import Date from .items import DateTime from .items import Float from .items import InlineTable from .items import Integer from .items import Item from .items import Key from .items import KeyType from .items import Null from .items import SingleKey from .items import String from .items import StringType from .items import Table from .items import Time from .items import Trivia from .items import Whitespace from .source import Source from .toml_char import TOMLChar from .toml_document import TOMLDocument CTRL_I = 0x09 # Tab CTRL_J = 0x0A # Line feed CTRL_M = 0x0D # Carriage return CTRL_CHAR_LIMIT = 0x1F CHR_DEL = 0x7F class Parser: """ Parser for TOML documents. """ def __init__(self, string: str) -> None: # Input to parse self._src = Source(decode(string)) self._aot_stack: List[Key] = [] @property def _state(self): return self._src.state @property def _idx(self): return self._src.idx @property def _current(self): return self._src.current @property def _marker(self): return self._src.marker def extract(self) -> str: """ Extracts the value between marker and index """ return self._src.extract() def inc(self, exception: Optional[Type[ParseError]] = None) -> bool: """ Increments the parser if the end of the input has not been reached. Returns whether or not it was able to advance. """ return self._src.inc(exception=exception) def inc_n(self, n: int, exception: Optional[Type[ParseError]] = None) -> bool: """ Increments the parser by n characters if the end of the input has not been reached. """ return self._src.inc_n(n=n, exception=exception) def consume(self, chars, min=0, max=-1): """ Consume chars until min/max is satisfied is valid. """ return self._src.consume(chars=chars, min=min, max=max) def end(self) -> bool: """ Returns True if the parser has reached the end of the input. """ return self._src.end() def mark(self) -> None: """ Sets the marker to the index's current position """ self._src.mark() def parse_error(self, exception=ParseError, *args, **kwargs): """ Creates a generic "parse error" at the current position. """ return self._src.parse_error(exception, *args, **kwargs) def parse(self) -> TOMLDocument: body = TOMLDocument(True) # Take all keyvals outside of tables/AoT's. while not self.end(): # Break out if a table is found if self._current == "[": break # Otherwise, take and append one KV item = self._parse_item() if not item: break key, value = item if (key is not None and key.is_multi()) or not self._merge_ws(value, body): # We actually have a table body.append(key, value) self.mark() while not self.end(): key, value = self._parse_table() if isinstance(value, Table) and value.is_aot_element(): # This is just the first table in an AoT. Parse the rest of the array # along with it. value = self._parse_aot(value, key) body.append(key, value) body.parsing(False) return body def _merge_ws(self, item: Item, container: Container) -> bool: """ Merges the given Item with the last one currently in the given Container if both are whitespace items. Returns True if the items were merged. """ last = container.last_item() if not last: return False if not isinstance(item, Whitespace) or not isinstance(last, Whitespace): return False start = self._idx - (len(last.s) + len(item.s)) container.body[-1] = ( container.body[-1][0], Whitespace(self._src[start : self._idx]), ) return True def _is_child(self, parent: Key, child: Key) -> bool: """ Returns whether a key is strictly a child of another key. AoT siblings are not considered children of one another. """ parent_parts = tuple(parent) child_parts = tuple(child) if parent_parts == child_parts: return False return parent_parts == child_parts[: len(parent_parts)] def _parse_item(self) -> Optional[Tuple[Optional[Key], Item]]: """ Attempts to parse the next item and returns it, along with its key if the item is value-like. """ self.mark() with self._state as state: while True: c = self._current if c == "\n": # Found a newline; Return all whitespace found up to this point. self.inc() return None, Whitespace(self.extract()) elif c in " \t\r": # Skip whitespace. if not self.inc(): return None, Whitespace(self.extract()) elif c == "#": # Found a comment, parse it indent = self.extract() cws, comment, trail = self._parse_comment_trail() return None, Comment(Trivia(indent, cws, comment, trail)) elif c == "[": # Found a table, delegate to the calling function. return else: # Begining of a KV pair. # Return to beginning of whitespace so it gets included # as indentation for the KV about to be parsed. state.restore = True break return self._parse_key_value(True) def _parse_comment_trail(self, parse_trail: bool = True) -> Tuple[str, str, str]: """ Returns (comment_ws, comment, trail) If there is no comment, comment_ws and comment will simply be empty. """ if self.end(): return "", "", "" comment = "" comment_ws = "" self.mark() while True: c = self._current if c == "\n": break elif c == "#": comment_ws = self.extract() self.mark() self.inc() # Skip # # The comment itself while not self.end() and not self._current.is_nl(): code = ord(self._current) if code == CHR_DEL or code <= CTRL_CHAR_LIMIT and code != CTRL_I: raise self.parse_error(InvalidControlChar, code, "comments") if not self.inc(): break comment = self.extract() self.mark() break elif c in " \t\r": self.inc() else: raise self.parse_error(UnexpectedCharError, c) if self.end(): break trail = "" if parse_trail: while self._current.is_spaces() and self.inc(): pass if self._current == "\r": self.inc() if self._current == "\n": self.inc() if self._idx != self._marker or self._current.is_ws(): trail = self.extract() return comment_ws, comment, trail def _parse_key_value(self, parse_comment: bool = False) -> Tuple[Key, Item]: # Leading indent self.mark() while self._current.is_spaces() and self.inc(): pass indent = self.extract() # Key key = self._parse_key() self.mark() found_equals = self._current == "=" while self._current.is_kv_sep() and self.inc(): if self._current == "=": if found_equals: raise self.parse_error(UnexpectedCharError, "=") else: found_equals = True if not found_equals: raise self.parse_error(UnexpectedCharError, self._current) if not key.sep: key.sep = self.extract() else: key.sep += self.extract() # Value val = self._parse_value() # Comment if parse_comment: cws, comment, trail = self._parse_comment_trail() meta = val.trivia if not meta.comment_ws: meta.comment_ws = cws meta.comment = comment meta.trail = trail else: val.trivia.trail = "" val.trivia.indent = indent return key, val def _parse_key(self) -> Key: """ Parses a Key at the current position; WS before the key must be exhausted first at the callsite. """ self.mark() while self._current.is_spaces() and self.inc(): # Skip any leading whitespace pass if self._current in "\"'": return self._parse_quoted_key() else: return self._parse_bare_key() def _parse_quoted_key(self) -> Key: """ Parses a key enclosed in either single or double quotes. """ # Extract the leading whitespace original = self.extract() quote_style = self._current key_type = next((t for t in KeyType if t.value == quote_style), None) if key_type is None: raise RuntimeError("Should not have entered _parse_quoted_key()") key_str = self._parse_string( StringType.SLB if key_type == KeyType.Basic else StringType.SLL ) if key_str._t.is_multiline(): raise self.parse_error(UnexpectedCharError, key_str._t.value) original += key_str.as_string() self.mark() while self._current.is_spaces() and self.inc(): pass original += self.extract() key = SingleKey(str(key_str), t=key_type, sep="", original=original) if self._current == ".": self.inc() key = key.concat(self._parse_key()) return key def _parse_bare_key(self) -> Key: """ Parses a bare key. """ while ( self._current.is_bare_key_char() or self._current.is_spaces() ) and self.inc(): pass original = self.extract() key = original.strip() if not key: # Empty key raise self.parse_error(EmptyKeyError) if " " in key: # Bare key with spaces in it raise self.parse_error(ParseError, f'Invalid key "{key}"') key = SingleKey(key, KeyType.Bare, "", original) if self._current == ".": self.inc() key = key.concat(self._parse_key()) return key def _parse_value(self) -> Item: """ Attempts to parse a value at the current position. """ self.mark() c = self._current trivia = Trivia() if c == StringType.SLB.value: return self._parse_basic_string() elif c == StringType.SLL.value: return self._parse_literal_string() elif c == BoolType.TRUE.value[0]: return self._parse_true() elif c == BoolType.FALSE.value[0]: return self._parse_false() elif c == "[": return self._parse_array() elif c == "{": return self._parse_inline_table() elif c in "+-" or self._peek(4) in { "+inf", "-inf", "inf", "+nan", "-nan", "nan", }: # Number while self._current not in " \t\n\r#,]}" and self.inc(): pass raw = self.extract() item = self._parse_number(raw, trivia) if item is not None: return item raise self.parse_error(InvalidNumberError) elif c in string.digits: # Integer, Float, Date, Time or DateTime while self._current not in " \t\n\r#,]}" and self.inc(): pass raw = self.extract() m = RFC_3339_LOOSE.match(raw) if m: if m.group(1) and m.group(5): # datetime try: dt = parse_rfc3339(raw) return DateTime( dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond, dt.tzinfo, trivia, raw, ) except ValueError: raise self.parse_error(InvalidDateTimeError) if m.group(1): try: dt = parse_rfc3339(raw) date = Date(dt.year, dt.month, dt.day, trivia, raw) self.mark() while self._current not in "\t\n\r#,]}" and self.inc(): pass time_raw = self.extract() if not time_raw.strip(): trivia.comment_ws = time_raw return date dt = parse_rfc3339(raw + time_raw) return DateTime( dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond, dt.tzinfo, trivia, raw + time_raw, ) except ValueError: raise self.parse_error(InvalidDateError) if m.group(5): try: t = parse_rfc3339(raw) return Time( t.hour, t.minute, t.second, t.microsecond, t.tzinfo, trivia, raw, ) except ValueError: raise self.parse_error(InvalidTimeError) item = self._parse_number(raw, trivia) if item is not None: return item raise self.parse_error(InvalidNumberError) else: raise self.parse_error(UnexpectedCharError, c) def _parse_true(self): return self._parse_bool(BoolType.TRUE) def _parse_false(self): return self._parse_bool(BoolType.FALSE) def _parse_bool(self, style: BoolType) -> Bool: with self._state: style = BoolType(style) # only keep parsing for bool if the characters match the style # try consuming rest of chars in style for c in style: self.consume(c, min=1, max=1) return Bool(style, Trivia()) def _parse_array(self) -> Array: # Consume opening bracket, EOF here is an issue (middle of array) self.inc(exception=UnexpectedEofError) elems: List[Item] = [] prev_value = None while True: # consume whitespace mark = self._idx self.consume(TOMLChar.SPACES + TOMLChar.NL) indent = self._src[mark : self._idx] newline = set(TOMLChar.NL) & set(indent) if newline: elems.append(Whitespace(indent)) continue # consume comment if self._current == "#": cws, comment, trail = self._parse_comment_trail(parse_trail=False) elems.append(Comment(Trivia(indent, cws, comment, trail))) continue # consume indent if indent: elems.append(Whitespace(indent)) continue # consume value if not prev_value: try: elems.append(self._parse_value()) prev_value = True continue except UnexpectedCharError: pass # consume comma if prev_value and self._current == ",": self.inc(exception=UnexpectedEofError) elems.append(Whitespace(",")) prev_value = False continue # consume closing bracket if self._current == "]": # consume closing bracket, EOF here doesn't matter self.inc() break raise self.parse_error(UnexpectedCharError, self._current) try: res = Array(elems, Trivia()) except ValueError: pass else: return res def _parse_inline_table(self) -> InlineTable: # consume opening bracket, EOF here is an issue (middle of array) self.inc(exception=UnexpectedEofError) elems = Container(True) trailing_comma = None while True: # consume leading whitespace mark = self._idx self.consume(TOMLChar.SPACES) raw = self._src[mark : self._idx] if raw: elems.add(Whitespace(raw)) if not trailing_comma: # None: empty inline table # False: previous key-value pair was not followed by a comma if self._current == "}": # consume closing bracket, EOF here doesn't matter self.inc() break if ( trailing_comma is False or trailing_comma is None and self._current == "," ): # Either the previous key-value pair was not followed by a comma # or the table has an unexpected leading comma. raise self.parse_error(UnexpectedCharError, self._current) else: # True: previous key-value pair was followed by a comma if self._current == "}" or self._current == ",": raise self.parse_error(UnexpectedCharError, self._current) key, val = self._parse_key_value(False) elems.add(key, val) # consume trailing whitespace mark = self._idx self.consume(TOMLChar.SPACES) raw = self._src[mark : self._idx] if raw: elems.add(Whitespace(raw)) # consume trailing comma trailing_comma = self._current == "," if trailing_comma: # consume closing bracket, EOF here is an issue (middle of inline table) self.inc(exception=UnexpectedEofError) return InlineTable(elems, Trivia()) def _parse_number(self, raw: str, trivia: Trivia) -> Optional[Item]: # Leading zeros are not allowed sign = "" if raw.startswith(("+", "-")): sign = raw[0] raw = raw[1:] if len(raw) > 1 and ( raw.startswith("0") and not raw.startswith(("0.", "0o", "0x", "0b", "0e")) or sign and raw.startswith(".") ): return if raw.startswith(("0o", "0x", "0b")) and sign: return digits = "[0-9]" base = 10 if raw.startswith("0b"): digits = "[01]" base = 2 elif raw.startswith("0o"): digits = "[0-7]" base = 8 elif raw.startswith("0x"): digits = "[0-9a-f]" base = 16 # Underscores should be surrounded by digits clean = re.sub(f"(?i)(?<={digits})_(?={digits})", "", raw).lower() if "_" in clean: return if ( clean.endswith(".") or not clean.startswith("0x") and clean.split("e", 1)[0].endswith(".") ): return try: return Integer(int(sign + clean, base), trivia, sign + raw) except ValueError: try: return Float(float(sign + clean), trivia, sign + raw) except ValueError: return def _parse_literal_string(self) -> String: with self._state: return self._parse_string(StringType.SLL) def _parse_basic_string(self) -> String: with self._state: return self._parse_string(StringType.SLB) def _parse_escaped_char(self, multiline): if multiline and self._current.is_ws(): # When the last non-whitespace character on a line is # a \, it will be trimmed along with all whitespace # (including newlines) up to the next non-whitespace # character or closing delimiter. # """\ # hello \ # world""" tmp = "" while self._current.is_ws(): tmp += self._current # consume the whitespace, EOF here is an issue # (middle of string) self.inc(exception=UnexpectedEofError) continue # the escape followed by whitespace must have a newline # before any other chars if "\n" not in tmp: raise self.parse_error(InvalidCharInStringError, self._current) return "" if self._current in _escaped: c = _escaped[self._current] # consume this char, EOF here is an issue (middle of string) self.inc(exception=UnexpectedEofError) return c if self._current in {"u", "U"}: # this needs to be a unicode u, ue = self._peek_unicode(self._current == "U") if u is not None: # consume the U char and the unicode value self.inc_n(len(ue) + 1) return u raise self.parse_error(InvalidUnicodeValueError) raise self.parse_error(InvalidCharInStringError, self._current) def _parse_string(self, delim: StringType) -> String: # only keep parsing for string if the current character matches the delim if self._current != delim.unit: raise self.parse_error( InternalParserError, f"Invalid character for string type {delim}", ) # consume the opening/first delim, EOF here is an issue # (middle of string or middle of delim) self.inc(exception=UnexpectedEofError) if self._current == delim.unit: # consume the closing/second delim, we do not care if EOF occurs as # that would simply imply an empty single line string if not self.inc() or self._current != delim.unit: # Empty string return String(delim, "", "", Trivia()) # consume the third delim, EOF here is an issue (middle of string) self.inc(exception=UnexpectedEofError) delim = delim.toggle() # convert delim to multi delim self.mark() # to extract the original string with whitespace and all value = "" # A newline immediately following the opening delimiter will be trimmed. if delim.is_multiline() and self._current == "\n": # consume the newline, EOF here is an issue (middle of string) self.inc(exception=UnexpectedEofError) escaped = False # whether the previous key was ESCAPE while True: code = ord(self._current) if ( delim.is_singleline() and not escaped and (code == CHR_DEL or code <= CTRL_CHAR_LIMIT and code != CTRL_I) ): raise self.parse_error(InvalidControlChar, code, "strings") elif ( delim.is_multiline() and not escaped and ( code == CHR_DEL or code <= CTRL_CHAR_LIMIT and code not in [CTRL_I, CTRL_J, CTRL_M] ) ): raise self.parse_error(InvalidControlChar, code, "strings") elif not escaped and self._current == delim.unit: # try to process current as a closing delim original = self.extract() close = "" if delim.is_multiline(): # Consume the delimiters to see if we are at the end of the string close = "" while self._current == delim.unit: close += self._current self.inc() if len(close) < 3: # Not a triple quote, leave in result as-is. # Adding back the characters we already consumed value += close continue if len(close) == 3: # We are at the end of the string return String(delim, value, original, Trivia()) if len(close) >= 6: raise self.parse_error(InvalidCharInStringError, self._current) value += close[:-3] original += close[:-3] return String(delim, value, original, Trivia()) else: # consume the closing delim, we do not care if EOF occurs as # that would simply imply the end of self._src self.inc() return String(delim, value, original, Trivia()) elif delim.is_basic() and escaped: # attempt to parse the current char as an escaped value, an exception # is raised if this fails value += self._parse_escaped_char(delim.is_multiline()) # no longer escaped escaped = False elif delim.is_basic() and self._current == "\\": # the next char is being escaped escaped = True # consume this char, EOF here is an issue (middle of string) self.inc(exception=UnexpectedEofError) else: # this is either a literal string where we keep everything as is, # or this is not a special escaped char in a basic string value += self._current # consume this char, EOF here is an issue (middle of string) self.inc(exception=UnexpectedEofError) def _parse_table( self, parent_name: Optional[Key] = None, parent: Optional[Table] = None ) -> Tuple[Key, Union[Table, AoT]]: """ Parses a table element. """ if self._current != "[": raise self.parse_error( InternalParserError, "_parse_table() called on non-bracket character." ) indent = self.extract() self.inc() # Skip opening bracket if self.end(): raise self.parse_error(UnexpectedEofError) is_aot = False if self._current == "[": if not self.inc(): raise self.parse_error(UnexpectedEofError) is_aot = True try: key = self._parse_key() except EmptyKeyError: raise self.parse_error(EmptyTableNameError) from None if self.end(): raise self.parse_error(UnexpectedEofError) elif self._current != "]": raise self.parse_error(UnexpectedCharError, self._current) elif not key.key.strip(): raise self.parse_error(EmptyTableNameError) key.sep = "" full_key = key name_parts = tuple(key) if any(" " in part.key.strip() and part.is_bare() for part in name_parts): raise self.parse_error( ParseError, f'Invalid table name "{full_key.as_string()}"' ) missing_table = False if parent_name: parent_name_parts = tuple(parent_name) else: parent_name_parts = tuple() if len(name_parts) > len(parent_name_parts) + 1: missing_table = True name_parts = name_parts[len(parent_name_parts) :] values = Container(True) self.inc() # Skip closing bracket if is_aot: # TODO: Verify close bracket self.inc() cws, comment, trail = self._parse_comment_trail() result = Null() table = Table( values, Trivia(indent, cws, comment, trail), is_aot, name=name_parts[0].key if name_parts else key.key, display_name=full_key.as_string(), ) if len(name_parts) > 1: if missing_table: # Missing super table # i.e. a table initialized like this: [foo.bar] # without initializing [foo] # # So we have to create the parent tables table = Table( Container(True), Trivia(indent, cws, comment, trail), is_aot and name_parts[0] in self._aot_stack, is_super_table=True, name=name_parts[0].key, ) result = table key = name_parts[0] for i, _name in enumerate(name_parts[1:]): if _name in table: child = table[_name] else: child = Table( Container(True), Trivia(indent, cws, comment, trail), is_aot and i == len(name_parts) - 2, is_super_table=i < len(name_parts) - 2, name=_name.key, display_name=full_key.as_string() if i == len(name_parts) - 2 else None, ) if is_aot and i == len(name_parts) - 2: table.raw_append(_name, AoT([child], name=table.name, parsed=True)) else: table.raw_append(_name, child) table = child values = table.value else: if name_parts: key = name_parts[0] while not self.end(): item = self._parse_item() if item: _key, item = item if not self._merge_ws(item, values): table.raw_append(_key, item) else: if self._current == "[": _, key_next = self._peek_table() if self._is_child(full_key, key_next): key_next, table_next = self._parse_table(full_key, table) table.raw_append(key_next, table_next) # Picking up any sibling while not self.end(): _, key_next = self._peek_table() if not self._is_child(full_key, key_next): break key_next, table_next = self._parse_table(full_key, table) table.raw_append(key_next, table_next) break else: raise self.parse_error( InternalParserError, "_parse_item() returned None on a non-bracket character.", ) if isinstance(result, Null): result = table if is_aot and (not self._aot_stack or full_key != self._aot_stack[-1]): result = self._parse_aot(result, full_key) return key, result def _peek_table(self) -> Tuple[bool, Key]: """ Peeks ahead non-intrusively by cloning then restoring the initial state of the parser. Returns the name of the table about to be parsed, as well as whether it is part of an AoT. """ # we always want to restore after exiting this scope with self._state(save_marker=True, restore=True): if self._current != "[": raise self.parse_error( InternalParserError, "_peek_table() entered on non-bracket character", ) # AoT self.inc() is_aot = False if self._current == "[": self.inc() is_aot = True try: return is_aot, self._parse_key() except EmptyKeyError: raise self.parse_error(EmptyTableNameError) from None def _parse_aot(self, first: Table, name_first: Key) -> AoT: """ Parses all siblings of the provided table first and bundles them into an AoT. """ payload = [first] self._aot_stack.append(name_first) while not self.end(): is_aot_next, name_next = self._peek_table() if is_aot_next and name_next == name_first: _, table = self._parse_table(name_first) payload.append(table) else: break self._aot_stack.pop() return AoT(payload, parsed=True) def _peek(self, n: int) -> str: """ Peeks ahead n characters. n is the max number of characters that will be peeked. """ # we always want to restore after exiting this scope with self._state(restore=True): buf = "" for _ in range(n): if self._current not in " \t\n\r#,]}" + self._src.EOF: buf += self._current self.inc() continue break return buf def _peek_unicode(self, is_long: bool) -> Tuple[Optional[str], Optional[str]]: """ Peeks ahead non-intrusively by cloning then restoring the initial state of the parser. Returns the unicode value is it's a valid one else None. """ # we always want to restore after exiting this scope with self._state(save_marker=True, restore=True): if self._current not in {"u", "U"}: raise self.parse_error( InternalParserError, "_peek_unicode() entered on non-unicode value" ) self.inc() # Dropping prefix self.mark() if is_long: chars = 8 else: chars = 4 if not self.inc_n(chars): value, extracted = None, None else: extracted = self.extract() if extracted[0].lower() == "d" and extracted[1].strip("01234567"): return None, None try: value = chr(int(extracted, 16)) except (ValueError, OverflowError): value = None return value, extracted ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tomlkit/py.typed0000644000000000000000000000000000000000000013244 0ustar00././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tomlkit/source.py0000644000000000000000000001147000000000000013434 0ustar00from copy import copy from typing import Any from typing import Optional from typing import Tuple from typing import Type from .exceptions import ParseError from .exceptions import UnexpectedCharError from .toml_char import TOMLChar class _State: def __init__( self, source: "Source", save_marker: Optional[bool] = False, restore: Optional[bool] = False, ) -> None: self._source = source self._save_marker = save_marker self.restore = restore def __enter__(self) -> "_State": # Entering this context manager - save the state self._chars = copy(self._source._chars) self._idx = self._source._idx self._current = self._source._current self._marker = self._source._marker return self def __exit__(self, exception_type, exception_val, trace): # Exiting this context manager - restore the prior state if self.restore or exception_type: self._source._chars = self._chars self._source._idx = self._idx self._source._current = self._current if self._save_marker: self._source._marker = self._marker class _StateHandler: """ State preserver for the Parser. """ def __init__(self, source: "Source") -> None: self._source = source self._states = [] def __call__(self, *args, **kwargs): return _State(self._source, *args, **kwargs) def __enter__(self) -> None: state = self() self._states.append(state) return state.__enter__() def __exit__(self, exception_type, exception_val, trace): state = self._states.pop() return state.__exit__(exception_type, exception_val, trace) class Source(str): EOF = TOMLChar("\0") def __init__(self, _: str) -> None: super().__init__() # Collection of TOMLChars self._chars = iter([(i, TOMLChar(c)) for i, c in enumerate(self)]) self._idx = 0 self._marker = 0 self._current = TOMLChar("") self._state = _StateHandler(self) self.inc() def reset(self): # initialize both idx and current self.inc() # reset marker self.mark() @property def state(self) -> _StateHandler: return self._state @property def idx(self) -> int: return self._idx @property def current(self) -> TOMLChar: return self._current @property def marker(self) -> int: return self._marker def extract(self) -> str: """ Extracts the value between marker and index """ return self[self._marker : self._idx] def inc(self, exception: Optional[Type[ParseError]] = None) -> bool: """ Increments the parser if the end of the input has not been reached. Returns whether or not it was able to advance. """ try: self._idx, self._current = next(self._chars) return True except StopIteration: self._idx = len(self) self._current = self.EOF if exception: raise self.parse_error(exception) return False def inc_n(self, n: int, exception: Optional[Type[ParseError]] = None) -> bool: """ Increments the parser by n characters if the end of the input has not been reached. """ for _ in range(n): if not self.inc(exception=exception): return False return True def consume(self, chars, min=0, max=-1): """ Consume chars until min/max is satisfied is valid. """ while self.current in chars and max != 0: min -= 1 max -= 1 if not self.inc(): break # failed to consume minimum number of characters if min > 0: raise self.parse_error(UnexpectedCharError, self.current) def end(self) -> bool: """ Returns True if the parser has reached the end of the input. """ return self._current is self.EOF def mark(self) -> None: """ Sets the marker to the index's current position """ self._marker = self._idx def parse_error( self, exception: Type[ParseError] = ParseError, *args: Any, **kwargs: Any, ) -> ParseError: """ Creates a generic "parse error" at the current position. """ line, col = self._to_linecol() return exception(line, col, *args, **kwargs) def _to_linecol(self) -> Tuple[int, int]: cur = 0 for i, line in enumerate(self.splitlines()): if cur + len(line) + 1 > self.idx: return (i + 1, self.idx - cur) cur += len(line) + 1 return len(self.splitlines()), 0 ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tomlkit/toml_char.py0000644000000000000000000000273200000000000014105 0ustar00import string from functools import lru_cache class TOMLChar(str): def __init__(self, c): super().__init__() if len(self) > 1: raise ValueError("A TOML character must be of length 1") BARE = string.ascii_letters + string.digits + "-_" KV = "= \t" NUMBER = string.digits + "+-_.e" SPACES = " \t" NL = "\n\r" WS = SPACES + NL @lru_cache(maxsize=None) def is_bare_key_char(self) -> bool: """ Whether the character is a valid bare key name or not. """ return self in self.BARE @lru_cache(maxsize=None) def is_kv_sep(self) -> bool: """ Whether the character is a valid key/value separator ot not. """ return self in self.KV @lru_cache(maxsize=None) def is_int_float_char(self) -> bool: """ Whether the character if a valid integer or float value character or not. """ return self in self.NUMBER @lru_cache(maxsize=None) def is_ws(self) -> bool: """ Whether the character is a whitespace character or not. """ return self in self.WS @lru_cache(maxsize=None) def is_nl(self) -> bool: """ Whether the character is a new line character or not. """ return self in self.NL @lru_cache(maxsize=None) def is_spaces(self) -> bool: """ Whether the character is a space or not """ return self in self.SPACES ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tomlkit/toml_document.py0000644000000000000000000000014700000000000015004 0ustar00from .container import Container class TOMLDocument(Container): """ A TOML document. """ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319431.3935337 tomlkit-0.9.2/tomlkit/toml_file.py0000644000000000000000000000123400000000000014103 0ustar00from .api import loads from .toml_document import TOMLDocument class TOMLFile: """ Represents a TOML file. :param path: path to the TOML file """ def __init__(self, path: str) -> None: self._path = path def read(self) -> TOMLDocument: """Read the file content as a :class:`tomlkit.toml_document.TOMLDocument`.""" with open(self._path, encoding="utf-8", newline="") as f: return loads(f.read()) def write(self, data: TOMLDocument) -> None: """Write the TOMLDocument to the file.""" with open(self._path, "w", encoding="utf-8", newline="") as f: f.write(data.as_string()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319446.7987695 tomlkit-0.9.2/setup.py0000644000000000000000000000501600000000000011610 0ustar00# -*- coding: utf-8 -*- from setuptools import setup packages = \ ['tomlkit'] package_data = \ {'': ['*']} setup_kwargs = { 'name': 'tomlkit', 'version': '0.9.2', 'description': 'Style preserving TOML library', 'long_description': '[github_release]: https://img.shields.io/github/release/sdispater/tomlkit.svg?logo=github&logoColor=white\n[pypi_version]: https://img.shields.io/pypi/v/tomlkit.svg?logo=python&logoColor=white\n[python_versions]: https://img.shields.io/pypi/pyversions/tomlkit.svg?logo=python&logoColor=white\n[github_license]: https://img.shields.io/github/license/sdispater/tomlkit.svg?logo=github&logoColor=white\n[github_action]: https://github.com/sdispater/tomlkit/actions/workflows/tests.yml/badge.svg\n\n[![GitHub Release][github_release]](https://github.com/sdispater/tomlkit/releases/)\n[![PyPI Version][pypi_version]](https://pypi.org/project/tomlkit/)\n[![Python Versions][python_versions]](https://pypi.org/project/tomlkit/)\n[![License][github_license]](https://github.com/sdispater/tomlkit/blob/master/LICENSE)\n
\n[![Tests][github_action]](https://github.com/sdispater/tomlkit/actions/workflows/tests.yml)\n\n# TOML Kit - Style-preserving TOML library for Python\n\nTOML Kit is a **1.0.0-compliant** [TOML](https://toml.io/) library.\n\nIt includes a parser that preserves all comments, indentations, whitespace and internal element ordering,\nand makes them accessible and editable via an intuitive API.\n\nYou can also create new TOML documents from scratch using the provided helpers.\n\nPart of the implementation as been adapted, improved and fixed from [Molten](https://github.com/LeopoldArkham/Molten).\n\n## Usage\n\nSee the [documentation](docs/quickstart.rst) for more information.\n\n## Installation\n\nIf you are using [Poetry](https://poetry.eustace.io),\nadd `tomlkit` to your `pyproject.toml` file by using:\n\n```bash\npoetry add tomlkit\n```\n\nIf not, you can use `pip`:\n\n```bash\npip install tomlkit\n```\n\n## Running tests\n\nPlease clone the repo with submodules with the following command\n`git clone --recurse-submodules https://github.com/sdispater/tomlkit.git`.\nWe need the submodule - `toml-test` for running the tests.\n\nYou can run the tests with `poetry run pytest -q tests`\n', 'author': 'Sébastien Eustace', 'author_email': 'sebastien@eustace.io', 'maintainer': None, 'maintainer_email': None, 'url': 'https://github.com/sdispater/tomlkit', 'packages': packages, 'package_data': package_data, 'python_requires': '>=3.6,<4.0', } setup(**setup_kwargs) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1644319446.7995117 tomlkit-0.9.2/PKG-INFO0000644000000000000000000000514100000000000011172 0ustar00Metadata-Version: 2.1 Name: tomlkit Version: 0.9.2 Summary: Style preserving TOML library Home-page: https://github.com/sdispater/tomlkit License: MIT Author: Sébastien Eustace Author-email: sebastien@eustace.io Requires-Python: >=3.6,<4.0 Classifier: License :: OSI Approved :: MIT License Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Project-URL: Repository, https://github.com/sdispater/tomlkit Description-Content-Type: text/markdown [github_release]: https://img.shields.io/github/release/sdispater/tomlkit.svg?logo=github&logoColor=white [pypi_version]: https://img.shields.io/pypi/v/tomlkit.svg?logo=python&logoColor=white [python_versions]: https://img.shields.io/pypi/pyversions/tomlkit.svg?logo=python&logoColor=white [github_license]: https://img.shields.io/github/license/sdispater/tomlkit.svg?logo=github&logoColor=white [github_action]: https://github.com/sdispater/tomlkit/actions/workflows/tests.yml/badge.svg [![GitHub Release][github_release]](https://github.com/sdispater/tomlkit/releases/) [![PyPI Version][pypi_version]](https://pypi.org/project/tomlkit/) [![Python Versions][python_versions]](https://pypi.org/project/tomlkit/) [![License][github_license]](https://github.com/sdispater/tomlkit/blob/master/LICENSE)
[![Tests][github_action]](https://github.com/sdispater/tomlkit/actions/workflows/tests.yml) # TOML Kit - Style-preserving TOML library for Python TOML Kit is a **1.0.0-compliant** [TOML](https://toml.io/) library. It includes a parser that preserves all comments, indentations, whitespace and internal element ordering, and makes them accessible and editable via an intuitive API. You can also create new TOML documents from scratch using the provided helpers. Part of the implementation as been adapted, improved and fixed from [Molten](https://github.com/LeopoldArkham/Molten). ## Usage See the [documentation](docs/quickstart.rst) for more information. ## Installation If you are using [Poetry](https://poetry.eustace.io), add `tomlkit` to your `pyproject.toml` file by using: ```bash poetry add tomlkit ``` If not, you can use `pip`: ```bash pip install tomlkit ``` ## Running tests Please clone the repo with submodules with the following command `git clone --recurse-submodules https://github.com/sdispater/tomlkit.git`. We need the submodule - `toml-test` for running the tests. You can run the tests with `poetry run pytest -q tests`