From c480368a87ad0a22a68745d490baec0032e3e092 Mon Sep 17 00:00:00 2001 From: "Deployment Bot (from Travis CI)" Date: Sat, 19 Oct 2019 21:43:26 +0000 Subject: [PATCH] Deploy jrnl-org/jrnl to github.com/jrnl-org/jrnl.git:gh-pages --- .github/stale.yml | 17 + .gitignore | 54 +++ .travis.yml | 29 ++ CHANGELOG.md | 171 +++++++ CODE_OF_CONDUCT.md | 66 +++ CONTRIBUTING.md | 35 ++ LICENSE | 21 + Makefile | 29 ++ README.md | 41 ++ docs/CNAME | 2 + docs/advanced.md | 145 ++++++ docs/assets/highlight.css | 79 ++++ docs/assets/theme.css | 196 ++++++++ docs/encryption.md | 93 ++++ docs/export.md | 76 ++++ docs/installation.md | 55 +++ docs/overview.md | 31 ++ docs/recipes.md | 197 ++++++++ docs/theme/img/banner_og.png | Bin 0 -> 229935 bytes docs/theme/img/banner_twitter.png | Bin 0 -> 179094 bytes docs/theme/img/favicon.ico | Bin 0 -> 16958 bytes docs/theme/img/favicon.svg | 15 + docs/theme/img/jrnl_white.svg | 10 + docs/theme/img/logo.svg | 16 + docs/theme/img/logo_white.svg | 9 + docs/theme/img/sprites.svg | 18 + docs/theme/index.css | 307 +++++++++++++ docs/theme/index.html | 126 +++++ docs/theme/index.js | 1 + docs/usage.md | 182 ++++++++ features/core.feature | 60 +++ features/data/configs/basic.yaml | 12 + features/data/configs/brackets.yaml | 12 + features/data/configs/bug153.yaml | 13 + features/data/configs/bug343.yaml | 13 + features/data/configs/dayone.yaml | 13 + features/data/configs/empty_folder.yaml | 13 + features/data/configs/encrypted.yaml | 13 + features/data/configs/encrypted_old.json | 13 + features/data/configs/encrypted_old.yaml | 11 + .../data/configs/markdown-headings-335.yaml | 13 + .../data/configs/mostlyreadabledates.yaml | 12 + features/data/configs/multiple.yaml | 19 + features/data/configs/tags-216.yaml | 13 + features/data/configs/tags-237.yaml | 13 + features/data/configs/tags.yaml | 13 + features/data/configs/unreadabledates.yaml | 12 + features/data/configs/upgrade_from_195.json | 11 + features/data/journals/brackets.journal | 2 + .../B40EE704E15846DE8D45C44118A4D511.doentry | 56 +++ .../B40EE704E15846DE8D45C44118A4D512.doentry | 52 +++ .../044F3747A38546168B572C2E3F217FA2.doentry | 34 ++ .../0BDDD6CDA43C4A9AA2681517CC35AD9D.doentry | 46 ++ .../422BC895507944A291E6FC44FC6B8BFC.doentry | 31 ++ .../4BB1F46946AD439996C9B59DE7C4DDC1.doentry | 29 ++ features/data/journals/empty_folder/empty.txt | 1 + features/data/journals/encrypted.journal | 1 + .../journals/encrypted_jrnl-1-9-5.journal | Bin 0 -> 128 bytes .../journals/markdown-headings-335.journal | 42 ++ .../data/journals/mostlyreadabledates.journal | 8 + features/data/journals/simple.journal | 5 + .../data/journals/simple_jrnl-1-9-5.journal | 13 + features/data/journals/tags-216.journal | 2 + features/data/journals/tags-237.journal | 3 + features/data/journals/tags.journal | 8 + .../data/journals/unreadabledates.journal | 5 + features/data/journals/work.journal | 0 features/data/templates/sample.template | 19 + features/encryption.feature | 31 ++ features/environment.py | 42 ++ features/exporting.feature | 85 ++++ features/multiple_journals.feature | 46 ++ features/regression.feature | 64 +++ features/starring.feature | 20 + features/steps/core.py | 260 +++++++++++ features/tagging.feature | 84 ++++ features/upgrade.feature | 23 + jrnl/DayOneJournal.py | 146 ++++++ jrnl/EncryptedJournal.py | 127 ++++++ jrnl/Entry.py | 124 +++++ jrnl/Journal.py | 364 +++++++++++++++ jrnl/__init__.py | 9 + jrnl/__main__.py | 8 + jrnl/cli.py | 296 ++++++++++++ jrnl/export.py | 66 +++ jrnl/install.py | 150 ++++++ jrnl/plugins/__init__.py | 35 ++ jrnl/plugins/jrnl_importer.py | 31 ++ jrnl/plugins/json_exporter.py | 41 ++ jrnl/plugins/markdown_exporter.py | 80 ++++ jrnl/plugins/tag_exporter.py | 30 ++ jrnl/plugins/template.py | 124 +++++ jrnl/plugins/template_exporter.py | 49 ++ jrnl/plugins/text_exporter.py | 62 +++ jrnl/plugins/util.py | 27 ++ jrnl/plugins/xml_exporter.py | 60 +++ jrnl/plugins/yaml_exporter.py | 84 ++++ jrnl/templates/sample.template | 18 + jrnl/time.py | 65 +++ jrnl/upgrade.py | 120 +++++ jrnl/util.py | 219 +++++++++ mkdocs.yml | 23 + poetry.lock | 429 ++++++++++++++++++ pyproject.toml | 41 ++ 104 files changed, 6140 insertions(+) create mode 100644 .github/stale.yml create mode 100644 .gitignore create mode 100644 .travis.yml create mode 100644 CHANGELOG.md create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 README.md create mode 100644 docs/CNAME create mode 100644 docs/advanced.md create mode 100644 docs/assets/highlight.css create mode 100644 docs/assets/theme.css create mode 100644 docs/encryption.md create mode 100644 docs/export.md create mode 100644 docs/installation.md create mode 100644 docs/overview.md create mode 100644 docs/recipes.md create mode 100644 docs/theme/img/banner_og.png create mode 100644 docs/theme/img/banner_twitter.png create mode 100644 docs/theme/img/favicon.ico create mode 100644 docs/theme/img/favicon.svg create mode 100644 docs/theme/img/jrnl_white.svg create mode 100644 docs/theme/img/logo.svg create mode 100644 docs/theme/img/logo_white.svg create mode 100644 docs/theme/img/sprites.svg create mode 100644 docs/theme/index.css create mode 100755 docs/theme/index.html create mode 100644 docs/theme/index.js create mode 100644 docs/usage.md create mode 100644 features/core.feature create mode 100644 features/data/configs/basic.yaml create mode 100644 features/data/configs/brackets.yaml create mode 100644 features/data/configs/bug153.yaml create mode 100644 features/data/configs/bug343.yaml create mode 100644 features/data/configs/dayone.yaml create mode 100644 features/data/configs/empty_folder.yaml create mode 100644 features/data/configs/encrypted.yaml create mode 100644 features/data/configs/encrypted_old.json create mode 100644 features/data/configs/encrypted_old.yaml create mode 100644 features/data/configs/markdown-headings-335.yaml create mode 100644 features/data/configs/mostlyreadabledates.yaml create mode 100644 features/data/configs/multiple.yaml create mode 100644 features/data/configs/tags-216.yaml create mode 100644 features/data/configs/tags-237.yaml create mode 100644 features/data/configs/tags.yaml create mode 100644 features/data/configs/unreadabledates.yaml create mode 100644 features/data/configs/upgrade_from_195.json create mode 100644 features/data/journals/brackets.journal create mode 100644 features/data/journals/bug153.dayone/entries/B40EE704E15846DE8D45C44118A4D511.doentry create mode 100644 features/data/journals/bug153.dayone/entries/B40EE704E15846DE8D45C44118A4D512.doentry create mode 100644 features/data/journals/dayone.dayone/entries/044F3747A38546168B572C2E3F217FA2.doentry create mode 100644 features/data/journals/dayone.dayone/entries/0BDDD6CDA43C4A9AA2681517CC35AD9D.doentry create mode 100644 features/data/journals/dayone.dayone/entries/422BC895507944A291E6FC44FC6B8BFC.doentry create mode 100644 features/data/journals/dayone.dayone/entries/4BB1F46946AD439996C9B59DE7C4DDC1.doentry create mode 100644 features/data/journals/empty_folder/empty.txt create mode 100644 features/data/journals/encrypted.journal create mode 100644 features/data/journals/encrypted_jrnl-1-9-5.journal create mode 100644 features/data/journals/markdown-headings-335.journal create mode 100644 features/data/journals/mostlyreadabledates.journal create mode 100644 features/data/journals/simple.journal create mode 100644 features/data/journals/simple_jrnl-1-9-5.journal create mode 100644 features/data/journals/tags-216.journal create mode 100644 features/data/journals/tags-237.journal create mode 100644 features/data/journals/tags.journal create mode 100644 features/data/journals/unreadabledates.journal create mode 100644 features/data/journals/work.journal create mode 100644 features/data/templates/sample.template create mode 100644 features/encryption.feature create mode 100644 features/environment.py create mode 100644 features/exporting.feature create mode 100644 features/multiple_journals.feature create mode 100644 features/regression.feature create mode 100644 features/starring.feature create mode 100644 features/steps/core.py create mode 100644 features/tagging.feature create mode 100644 features/upgrade.feature create mode 100644 jrnl/DayOneJournal.py create mode 100644 jrnl/EncryptedJournal.py create mode 100755 jrnl/Entry.py create mode 100644 jrnl/Journal.py create mode 100644 jrnl/__init__.py create mode 100644 jrnl/__main__.py create mode 100644 jrnl/cli.py create mode 100644 jrnl/export.py create mode 100644 jrnl/install.py create mode 100644 jrnl/plugins/__init__.py create mode 100644 jrnl/plugins/jrnl_importer.py create mode 100644 jrnl/plugins/json_exporter.py create mode 100644 jrnl/plugins/markdown_exporter.py create mode 100644 jrnl/plugins/tag_exporter.py create mode 100644 jrnl/plugins/template.py create mode 100644 jrnl/plugins/template_exporter.py create mode 100644 jrnl/plugins/text_exporter.py create mode 100644 jrnl/plugins/util.py create mode 100644 jrnl/plugins/xml_exporter.py create mode 100644 jrnl/plugins/yaml_exporter.py create mode 100644 jrnl/templates/sample.template create mode 100644 jrnl/time.py create mode 100644 jrnl/upgrade.py create mode 100644 jrnl/util.py create mode 100644 mkdocs.yml create mode 100644 poetry.lock create mode 100644 pyproject.toml diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 00000000..323b3928 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,17 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 60 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 7 +# Issues with these labels will never be considered stale +exemptLabels: + - ':star:' + - security +# Label to use when marking an issue as stale +staleLabel: stale +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: false diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..2382cabe --- /dev/null +++ b/.gitignore @@ -0,0 +1,54 @@ +*.py[cod] + +# C extensions +*.so +.python-version + +# Packages +*.egg +*.egg-info +dist +build +eggs +parts +bin +var +sdist +develop-eggs +.installed.cfg +lib +lib64 +.python-version + +# Installer logs +pip-log.txt +.DS_Store +.travis-solo +Icon + +# Documentation +_build +_sources +_static +objects.inv +searchindex.js + +# MS Visual Studio (PyTools) +obj +*.pyproj +*.sln +*.suo + +# virtaulenv +env/ +env*/ + +# PyCharm Project files +.idea/ + +# export testing director +exp/ + +_extras/ +*.sublime-* +site/ diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..786e88c6 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,29 @@ +dist: xenial # required for Python >= 3.7 +language: python +python: "3.7" +before_install: + - pip install poetry +install: + # we run `poetry version` here to appease poetry about '0.0.0-source' + - poetry version + - poetry install +script: + - poetry run python --version + - poetry run behave +before_deploy: + - pip install poetry + - poetry config http-basic.pypi $PYPI_USER $PYPI_PASS + - poetry version $TRAVIS_TAG + - poetry build +deploy: + - provider: script + script: poetry publish + skip_cleanup: true + on: + branch: master + tags: true + - provider: pages + skip_cleanup: true + github_token: $GITHUB_TOKEN + on: + branch: master diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..2c400b8c --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,171 @@ +Changelog +========= + +## 2.0 + +* Cryptographical backend changed from PyCrypto to cryptography.io +* Config now respects XDG conventions and may move accordingly +* Config now saved as YAML +* Config name changed from `journals.jrnl_name.journal` to `journals.jrnl_name.path` + +### 1.9 (July 21, 2014) + +* __1.9.5__ Multi-word tags for DayOne Journals +* __1.9.4__ Fixed: Order of journal entries in file correct after --edit'ing +* __1.9.3__ Fixed: Tags at the beginning of lines +* __1.9.2__ Fixed: Tag search ignores email-addresses (thanks to @mjhoffman65) +* __1.9.1__ Fixed: Dates in the future can be parsed as well. +* __1.9.0__ Improved: Greatly improved date parsing. Also added an `-on` option for filtering + +### 1.8 (May 22, 2014) + +* __1.8.7__ Fixed: -from and -to filters are inclusive (thanks to @grplyler) +* __1.8.6__ Improved: Tags like @C++ and @OS/2 work, too (thanks to @chaitan94) +* __1.8.5__ Fixed: file names when exporting to individual files contain full year (thanks to @jdevera) +* __1.8.4__ Improved: using external editors (thanks to @chrissexton) +* __1.8.3__ Fixed: export to text files and improves help (thanks to @igniteflow and @mpe) +* __1.8.2__ Better integration with environment variables (thanks to @ajaam and @matze) +* __1.8.1__ Minor bug fixes +* __1.8.0__ Official support for python 3.4 + +### 1.7 (December 22, 2013) + +* __1.7.22__ Fixed an issue with writing files when exporting entries containing non-ascii characters. +* __1.7.21__ jrnl now uses PKCS#7 padding. +* __1.7.20__ Minor fixes when parsing DayOne journals +* __1.7.19__ Creates full path to journal during installation if it doesn't exist yet +* __1.7.18__ Small update to parsing regex +* __1.7.17__ Fixes writing new lines between entries +* __1.7.16__ Even more unicode fixes! +* __1.7.15__ More unicode fixes +* __1.7.14__ Fix for trailing whitespaces (eg. when writing markdown code block) +* __1.7.13__ Fix for UTF-8 in DayOne journals +* __1.7.12__ Fixes a bug where filtering by tags didn't work for DayOne journals +* __1.7.11__ `-ls` will list all available journals (Thanks @jtan189) +* __1.7.10__ Supports `-3` as a shortcut for `-n 3` and updates to tzlocal 1.1 +* __1.7.9__ Fix a logic bug so that jrnl -h and jrnl -v are possible even if jrnl not configured yet. +* __1.7.8__ Upgrade to parsedatetime 1.2 +* __1.7.7__ Cleaned up imports, better unicode support +* __1.7.6__ Python 3 port for slugify +* __1.7.5__ Colorama is only needed on Windows. Smaller fixes +* __1.7.3__ Touches temporary files before opening them to allow more external editors. +* __1.7.2__ Dateutil added to requirements. +* __1.7.1__ Fixes issues with parsing time information in entries. +* __1.7.0__ Edit encrypted or DayOne journals with `jrnl --edit`. + + +### 1.6 (November 5, 2013) + +* __1.6.6__ -v prints the current version, also better strings for windows users. Furthermore, jrnl/jrnl.py moved to jrnl/cli.py +* __1.6.5__ Allows composing multi-line entries on the command line or importing files +* __1.6.4__ Fixed a bug that caused creating encrypted journals to fail +* __1.6.3__ New, pretty, _useful_ documentation! +* __1.6.2__ Starring entries now works for plain-text journals too! +* __1.6.1__ Attempts to fix broken config files automatically +* __1.6.0__ Passwords are now saved in the key-chain. The `password` field in `.jrnl_config` is soft-deprecated. + +### 1.5 (August 6, 2013) + +* __1.5.7__ The `~` in journal config paths will now expand properly to e.g. `/Users/maebert` +* __1.5.6__ Fixed: Fixed a bug where on OS X, the timezone could only be accessed on administrator accounts. +* __1.5.5__ Fixed: Detects DayOne journals stored in `~/Library/Mobile Data` as well. +* __1.5.4__ DayOne journals can now handle tags +* __1.5.3__ Fixed: DayOne integration with older DayOne Journals +* __1.5.2__ Soft-deprecated `-to` for filtering by time and introduces `-until` instead. +* __1.5.1__ Fixed: Fixed a bug introduced in 1.5.0 that caused the entire journal to be printed after composing an entry +* __1.5.0__ Exporting, encrypting and displaying tags now takes your filter options into account. So you could export everything before May 2012: `jrnl -to 'may 2012' --export json`. Or encrypt all entries tagged with `@work` into a new journal: `jrnl @work --encrypt work_journal.txt`. Or display all tags of posts where Bob is also tagged: `jrnl @bob --tags` + +### 1.4 (July 22, 2013) + +* __1.4.2__ Fixed: Tagging works again +* __1.4.0__ Unifies encryption between Python 2 and 3. If you have problems reading encrypted journals afterwards, first decrypt your journal with the __old__ jrnl version (install with `pip install jrnl==1.3.1`, then `jrnl --decrypt`), upgrade jrnl (`pip install jrnl --upgrade`) and encrypt it again (`jrnl --encrypt`). + +### 1.3 (July 17, 2013) + +* __1.3.2__ Everything that is not direct output of jrnl will be written stderr to improve integration +* __1.3.0__ Export to multiple files +* __1.3.0__ Feature to export to given output file + +### 1.2 (July 15, 2013) + +* __1.2.0__ Fixed: Timezone support for DayOne + + +### 1.1 (June 9, 2013) + +* __1.1.1__ Fixed: Unicode and Python3 issues resolved. +* __1.1.0__ + * JSON export exports tags as well. + * Nicer error message when there is a syntactical error in your config file. + * Unicode support + +### 1.0 (March 4, 2013) + +* __1.0.5__ Backwards compatibility with `parsedatetime` 0.8.7 +* __1.0.4__ + * Python 2.6 compatibility + * Better utf-8 support + * Python 3 compatibility + * Respects the `XDG_CONFIG_HOME` environment variable for storing your configuration file (Thanks [evaryont](https://github.com/evaryont)) + +* __1.0.3__ + * Removed clint in favour of colorama + * Fixed: Fixed a bug where showing tags failed when no tags are defined. + * Fixed: Improvements to config parsing (Thanks [alapolloni](https://github.com/alapolloni)) + * Fixed: Fixes readline support on Windows + * Fixed: Smaller fixes and typos +* __1.0.1__ (March 12, 2013) Fixed: Requires parsedatetime 1.1.2 or newer +* __1.0.0__ + * Integrates seamlessly with DayOne + * Each journal can have individual settings + * Fixed: A bug where jrnl would not go into compose mode + * Fixed: A bug where jrnl would not add entries without timestamp + * Fixed: Support for parsedatetime 1.x + +### 0.3 (May 24, 2012) + +* __0.3.2__ Converts `\n` to new lines (if using directly on a command line, make sure to wrap your entry with quotes). +* __0.3.1__ + * Supports deleting of last entry. + * Fixed: Fixes a bug where --encrypt or --decrypt without a target file would not work. + * Supports a config option for setting word wrap. + * Supports multiple journal files. +* __0.3.0__ + * Fixed: Dates such as "May 3" will now be interpreted as being in the past if the current day is at least 28 days in the future + * Fixed: Bug where composed entry is lost when the journal file fails to load + * Changed directory structure and install scripts (removing the necessity to make an alias from `jrnl` to `jrnl.py`) + +### 0.2 (April 16, 2012) + +* __0.2.4__ + * Fixed: Parsing of new lines in journal files and entries + * Adds support for encrypting and decrypting into new files +* __0.2.3__ + * Adds a `-short` option that will only display the titles of entries (or, when filtering by tags, the context of the tag) + * Adds tag export + * Adds coloured highlight of tags (by default, highlights all tags - when filtering by tags, only highlights search tags) + * `.jrnl_config` will get automatically updated when updating jrnl to a new version +* __0.2.2__ + * Adds --encrypt and --decrypt to encrypt / decrypt existing journal files + * Adds markdown export (kudos to dedan) +* __0.2.1__ Submitted to [PyPi](http://pypi.python.org/pypi/jrnl/0.2.1). +* __0.2.0__ + * Encrypts using CBC + * Fixed: `key` has been renamed to `password` in config to avoid confusion. (The key use to encrypt and decrypt a journal is the SHA256-hash of the password.) + +### 0.1 (April 13, 2012) + + +* __0.1.1__ + * Fixed: Removed unnecessary print commands + * Created the documentation +* __0.1.0__ + * Supports encrypted journals using AES encryption + * Support external editors for composing entries +* __0.0.2__ + * Filtering by tags and dates + * Fixed: Now using dedicated classes for Journals and entries + +### 0.0 (March 29, 2012) + +* __0.0.1__ Composing entries works. That's pretty much it. diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..dc9e89f1 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,66 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers +pledge to making participation in our project and our community a harassment-free experience for +everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity +and expression, level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism Focusing on what is best for the community Showing +* empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks Public or private +* harassment Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are +expected to take appropriate and fair corrective action in response to any instances of unacceptable +behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, +code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or +to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies within all project spaces, and it also applies when an individual is +representing the project or its community in public spaces. Examples of representing a project or +community include using an official project e-mail address, posting via an official social media +account, or acting as an appointed representative at an online or offline event. Representation of a +project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting +the project team. All complaints will be reviewed and investigated and will result in a response +that is deemed necessary and appropriate to the circumstances. The project team is obligated to +maintain confidentiality with regard to the reporter of an incident. Further details of specific +enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face +temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at +https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..989ccf7e --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,35 @@ +Contributing +============ + +If you use jrnl, you can totally make our day by just saying "thanks for the code." It's your chance to make a programmer happy today! If you have a moment, let us know what you use jrnl for and how; it'll help us to make it even better! + + +Docs & Typos +------------ + +If you find a typo or a mistake in the docs, please fix it right away and send a pull request. The Right Way™ to fix the docs is to edit the `docs/*.md` files on the **master** branch. You can see the result if you run `make html` inside the project's root directory, which will open a browser that hot-reloads as you change the docs. This requires [mkdocs](https://www.mkdocs.org) to be installed. The `gh-pages` branch is automatically maintained and updates from `master`; you should never have to edit that. + +Bugs +---- + +Unfortunately, bugs happen. If you found one, please [open a new issue](https://github.com/jrnl-org/jrnl/issues/new) and describe it as well as possible. If you're a programmer with some time, go ahead and send us a pull request! We'll review as quickly as we can. + + +Feature requests and ideas +-------------------------- + +So, you have an idea for a great feature? Awesome! We'd love to hear from you! Please [open a new issue](https://github.com/jrnl-org/jrnl/issues) and describe the goal of the feature, and any relvant use cases. We'll discuss the issue with you, and decide if it's a good fit for the project. + +When discussing new features, please keep in mind our design goals. jrnl strives to do one thing well. To us, that means: + +* be _slim_ +* have a simple interface +* avoid dupicating functionality + + +A short note for new programmers and programmers new to python +-------------------------------------------------------------- + +Although jrnl has grown quite a bit since its inception. The overall complexity (for an end-user program) is fairly low, and we hope you'll find the code easy enough to understand. + +If you have a question, please don't hesitate to ask! Python is known for its welcoming community and openness to novice programmers, so feel free to fork the code and play around with it! If you create something you want to share with us, please create a pull request. We never expect pull requests to be perfect, idiomatic, instantly mergeable code. We can work through it together! diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..dc4571c0 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Manuel Ebert + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..79803508 --- /dev/null +++ b/Makefile @@ -0,0 +1,29 @@ +# A Makefile for commands I run frequently: + +clean: + rm -rf dist + rm -rf _static + rm -rf jrnl.egg-info + rm -rf _build + rm -rf _sources + rm -rf _static + rm -rf site/ + rm -f *.html + +html: + poetry run mkdocs serve + +format: ## check style with flake8 + poetry run black features jrnl + +lint: ## check style with flake8 + poetry run flake8 jrnl features --ignore E501 + +test: ## Run behave tests + poetry run behave + +build: + poetry build + +install: clean ## install the package to the active Python's site-packages + poetry install diff --git a/README.md b/README.md new file mode 100644 index 00000000..0f444ab2 --- /dev/null +++ b/README.md @@ -0,0 +1,41 @@ +jrnl [![Build Status](https://travis-ci.com/jrnl-org/jrnl.svg?branch=master)](https://travis-ci.com/jrnl-org/jrnl) [![Downloads](https://pepy.tech/badge/jrnl)](https://pepy.tech/project/jrnl) [![Version](http://img.shields.io/pypi/v/jrnl.svg?style=flat)](https://pypi.python.org/pypi/jrnl/) +==== + +_To get help, [submit an issue](https://github.com/jrnl-org/jrnl/issues/new) on Github._ + +*jrnl* is a simple journal application for your command line. Journals are stored as human readable plain text files - you can put them into a Dropbox folder for instant syncing and you can be assured that your journal will still be readable in 2050, when all your fancy iPad journal applications will long be forgotten. + +Optionally, your journal can be encrypted using the [256-bit AES](http://en.wikipedia.org/wiki/Advanced_Encryption_Standard). + +### Why keep a journal? + +Journals aren't just for people who have too much time on their summer vacation. A journal helps you to keep track of the things you get done and how you did them. Your imagination may be limitless, but your memory isn't. For personal use, make it a good habit to write at least 20 words a day. Just to reflect what made this day special, why you haven't wasted it. For professional use, consider a text-based journal to be the perfect complement to your GTD todo list - a documentation of what and how you've done it. + +In a Nutshell +------------- + +to make a new entry, just type + + jrnl yesterday: Called in sick. Used the time to clean the house and spent 4h on writing my book. + +and hit return. `yesterday:` will be interpreted as a timestamp. Everything until the first sentence mark (`.?!`) will be interpreted as the title, the rest as the body. In your journal file, the result will look like this: + + 2012-03-29 09:00 Called in sick. + Used the time to clean the house and spent 4h on writing my book. + +If you just call `jrnl`, you will be prompted to compose your entry - but you can also configure _jrnl_ to use your external editor. + +Known Issues +------------ +jrnl used to support integration with Day One, but no longer supports it since Day One 2 was released with a different backend. [See the GitHub issue for more information](https://github.com/jrnl-org/jrnl/issues/409). + +Authors +------- +Current maintainers: + + * Jonathan Wren ([wren](https://github.com/wren)) + * Micah Ellison ([micahellison](https://github.com/micahellison)) + +Original maintainer: + + * Manuel Ebert ([maebert](https://github.com/maebert)) diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 00000000..027bab94 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1,2 @@ +jrnl.sh + diff --git a/docs/advanced.md b/docs/advanced.md new file mode 100644 index 00000000..2a6fd6b4 --- /dev/null +++ b/docs/advanced.md @@ -0,0 +1,145 @@ +# Advanced Usage + +## Configuration File + +You can configure the way jrnl behaves in a configuration file. By +default, this is `~/.jrnl_config`. If you have the `XDG_CONFIG_HOME` +variable set, the configuration file will be saved as +`$XDG_CONFIG_HOME/jrnl/.jrnl_config`. + +!!! note + On Windows, The configuration file is typically found at `C:\Users\[Your Username]\.jrnl_config`. + +The configuration file is a simple JSON file with the following options +and can be edited with any plain text editor. + + - `journals` + paths to your journal files + - `editor` + if set, executes this command to launch an external editor for + writing your entries, e.g. `vim`. Some editors require special + options to work properly, see `FAQ ` for details. + - `encrypt` + if `true`, encrypts your journal using AES. + - `tagsymbols` + Symbols to be interpreted as tags. (See note below) + - `default_hour` and `default_minute` + if you supply a date, such as `last thursday`, but no specific + time, the entry will be created at this time + - `timeformat` + how to format the timestamps in your journal, see the [python docs](http://docs.python.org/library/time.html#time.strftime) for reference + - `highlight` + if `true`, tags will be highlighted in cyan. + - `linewrap` + controls the width of the output. Set to `false` if you don't + want to wrap long lines. + +!!! note + Although it seems intuitive to use the `#` + character for tags, there's a drawback: on most shells, this is + interpreted as a meta-character starting a comment. This means that if + you type + + > `jrnl Implemented endless scrolling on the #frontend of our website.` + + your bash will chop off everything after the `#` before passing it to + `jrnl`. To avoid this, wrap your input into quotation marks like + this: + + > `jrnl "Implemented endless scrolling on the #frontend of our website."` + + Or use the built-in prompt or an external editor to compose your + entries. + +## DayOne Integration + +Using your DayOne journal instead of a flat text file is dead simple -- +instead of pointing to a text file, change your `.jrnl_config` to point +to your DayOne journal. This is a folder named something like +`Journal_dayone` or `Journal.dayone`, and it's located at + + - `~/Library/Application Support/Day One/` by default + - `~/Dropbox/Apps/Day One/` if you're syncing with Dropbox and + - `~/Library/Mobile + Documents/5U8NS4GX82~com~dayoneapp~dayone/Documents/` if you're + syncing with iCloud. + +Instead of all entries being in a single file, each entry will live in a +separate `plist` file. So your `.jrnl_config` should look like this: + +``` javascript +{ + ... + "journals": { + "default": "~/journal.txt", + "dayone": "~/Library/Mobile Documents/5U8NS4GX82~com~dayoneapp~dayone/Documents/Journal_dayone" + } +} +``` + +## Multiple journal files + +You can configure `jrnl`to use with multiple journals (eg. +`private` and `work`) by defining more journals in your `.jrnl_config`, +for example: + +``` javascript +{ +... + "journals": { + "default": "~/journal.txt", + "work": "~/work.txt" + } +} +``` + +The `default` journal gets created the first time you start `jrnl` +Now you can access the `work` journal by using `jrnl work` instead of +`jrnl`, eg. + +``` sh +jrnl work at 10am: Meeting with @Steve +jrnl work -n 3 +``` + +will both use `~/work.txt`, while `jrnl -n 3` will display the last +three entries from `~/journal.txt` (and so does `jrnl default -n 3`). + +You can also override the default options for each individual journal. +If you `.jrnl_config` looks like this: + +``` javascript +{ + ... + "encrypt": false + "journals": { + "default": "~/journal.txt", + "work": { + "journal": "~/work.txt", + "encrypt": true + }, + "food": "~/my_recipes.txt", +} +``` + +Your `default` and your `food` journals won't be encrypted, however your +`work` journal will! You can override all options that are present at +the top level of `.jrnl_config`, just make sure that at the very least +you specify a `"journal": ...` key that points to the journal file of +that journal. + +!!! note + Changing `encrypt` to a different value will not encrypt or decrypt your + journal file, it merely says whether or not your journal + is encrypted. Hence manually changing + this option will most likely result in your journal file being + impossible to load. + +## Known Issues + +### Unicode on Windows + +The Windows shell prior to Windows 7 has issues with unicode encoding. +To use non-ascii characters, first tweak Python to recognize the encoding by adding `'cp65001': 'utf_8'`, to `Lib/encoding/aliases.py`. Then, change the codepage with `chcp 1252` before using `jrnl`. + +(Related issue: [#486](https://github.com/jrnl-org/jrnl/issues/486)) diff --git a/docs/assets/highlight.css b/docs/assets/highlight.css new file mode 100644 index 00000000..46eeb25c --- /dev/null +++ b/docs/assets/highlight.css @@ -0,0 +1,79 @@ +/* + +Atom One Dark With support for ReasonML by Gidi Morris, based off work by Daniel Gamage + +Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax + +*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + line-height: 1.3em; + color: #e2e8f2; + background: #383e49; + border-radius: 5px; + font-size: 0.9rem; + line-height: 1.3rem; +} +.hljs-keyword, .hljs-operator { + color: #F92672; +} +.hljs-pattern-match { + color: #F92672; +} +.hljs-pattern-match .hljs-constructor { + color: #61aeee; +} +.hljs-function { + color: #61aeee; +} +.hljs-function .hljs-params { + color: #A6E22E; +} +.hljs-function .hljs-params .hljs-typing { + color: #FD971F; +} +.hljs-module-access .hljs-module { + color: #7e57c2; +} +.hljs-constructor { + color: #e2b93d; +} +.hljs-constructor .hljs-string { + color: #9CCC65; +} +.hljs-comment, .hljs-quote { + color: #b18eb1; + font-style: italic; +} +.hljs-doctag, .hljs-formula { + color: #c678dd; +} +.hljs-section, .hljs-name, .hljs-selector-tag, .hljs-deletion, .hljs-subst { + color: #e06c75; +} +.hljs-literal { + color: #56b6c2; +} +.hljs-string, .hljs-regexp, .hljs-addition, .hljs-attribute, .hljs-meta-string { + color: #98c379; +} +.hljs-built_in, .hljs-class .hljs-title { + color: #e6c07b; +} +.hljs-attr, .hljs-variable, .hljs-template-variable, .hljs-type, .hljs-selector-class, .hljs-selector-attr, .hljs-selector-pseudo, .hljs-number { + color: #d19a66; +} +.hljs-symbol, .hljs-bullet, .hljs-link, .hljs-meta, .hljs-selector-id, .hljs-title { + color: #61aeee; +} +.hljs-emphasis { + font-style: italic; +} +.hljs-strong { + font-weight: bold; +} +.hljs-link { + text-decoration: underline; +} diff --git a/docs/assets/theme.css b/docs/assets/theme.css new file mode 100644 index 00000000..a3de87a9 --- /dev/null +++ b/docs/assets/theme.css @@ -0,0 +1,196 @@ + +/* ------------------------------------------------------------ */ +/* Overrides for jrnl theme */ +/* ------------------------------------------------------------ */ + +:root { + --sidebar: #604385; + --sidebar-dark: #604385; + --off-white: rgba(255,255,255,.7); +} + +body.wy-body-for-nav, section.wy-nav-content-wrap { + background-color: rgb(252,252,252); +} + +pre { + background-color: transparent; + border: none; + margin: 1em -1em; +} + +pre code { + padding: 1em 1.5em !important; +} + +code { + background-color: transparent; +} + +h1,h2 ,h3, h4, h5, h6 { + font-family: "Open Sans", "Helvetica Neue", Helvetica, sans-serif; + font-weight: 600; + margin-top: 2rem; + margin-bottom: 0.5rem; +} +p, td, tr, div, li { + font-family: "Open Sans", "Helvetica Neue", Helvetica, sans-serif; + font-weight: 00; +} + +p { + margin: 1em 0em; +} + +/* No-one likes lines that are 400 characters long. */ +div.rst-content {max-width: 54em;} + +.wy-side-nav-search, .wy-nav-top, .wy-menu-vertical li.current { + background-color: transparent; +} +.wy-side-nav-search a.icon-home { + width: 100%; + max-width: 250px; + background-size: 100%; +} + +a.icon-home:before { + display: block; + width: 84px; + height: 70px; + content: ""; + background: url(../img/logo_white.svg) center center no-repeat; + margin: 10px auto; +} + +.wy-menu-vertical a, .wy-menu-vertical li ul li a {color: var(--off-white) !important; } + +.wy-menu-vertical a:hover, .wy-menu-vertical li.current a:hover { background-color: transparent !important; color: white !important;} +.wy-menu-vertical li.on a, .wy-menu-vertical li.current>a { + background: transparent; !important; + color: white !important; + border: none; + position: relative; + font-weight: 700 !important; + border-right: none !important; +} + +.wy-menu-vertical li.on a, .wy-menu-vertical li.current a { + border-right: none; +} + +.wy-menu-vertical li.on a, .wy-menu-vertical li.current>a:after { + display: block; + position: absolute; + right: 0em; + top: 0; + z-index: 999 !important; + content: ""; + width: 0; + height: 0; + border-top: 1em solid transparent; + border-bottom: 1em solid transparent; + border-right: 1em solid white; +} + +.rst-versions, .rst-versions .rst-current-version { display: none; } +.wy-menu-vertical span { + color: white !important; + font-size: 1.2em; + font-weight: 300 !important; +} +.wy-menu-vertical li a {color: var(--off-white) !important; font-weight: 300 !important;} + + +.wy-nav-side { + background-image: linear-gradient(211deg, #95699C 0%, #604385 100%); + font-weight: 300 !important; + height: 100%; +} + + +footer {display: none;} + +.wy-side-nav-search input[type=text], form .search-query { + background-color: rgba(0,0,0,.1) !important; + border: 1px solid rgba(255,255,255,.3); + box-shadow: none; + margin-bottom: 1em; + color: white !important; + font-weight: 500; +} + +.wy-side-nav-search input[type=text]::placeholder, form .search-query::placeholder { + color: var(--off-white) !important; +} + +.toctree-l2 a:first-child {display: none;} + +/* ------------------------------------------------------------ */ +/* Logo: ; */ +/* ------------------------------------------------------------ */ + +.logo { + width: 128px; + height: 128px; + vertical-align: middle; + margin-right: 1em; +} + +/* ------------------------------------------------------------ */ +/* Code blocks in callouts */ +/* ------------------------------------------------------------ */ + +div.admonition { + border-radius: 5px; + margin: 1em -1em; +} +div.admonition p.admonition-title { + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} +div.admonition > p { + padding: 0em .5em; +} + + +div.admonition div.highlight { + background: none !important; +} +div.admonition div.highlight pre { + background-color: rgba(255,255,255,.5) !important; +} + +/* ------------------------------------------------------------ */ +/* Fancy ordered lists. */ +/* ------------------------------------------------------------ */ + +ol { + counter-reset:li; + margin-left: 0px; + padding: 0; +} + +ol li { + list-style: none !important; + margin-bottom: 1.5em; + margin-left: 3em !important; +} + +ol > li:before { + content:counter(li); + counter-increment:li; + background-color: var(--sidebar); + border-radius: 50%; + display: block; + float: left; + margin-left: -3em; + margin-top: -.3em; + width: 2em; + height: 2em; + color: var(--sidebar-dark); + text-align: center; + line-height: 2em; + font-weight: 600; +} + diff --git a/docs/encryption.md b/docs/encryption.md new file mode 100644 index 00000000..19bb178b --- /dev/null +++ b/docs/encryption.md @@ -0,0 +1,93 @@ +# Encryption + +## Encrypting and decrypting + +If you don't choose to encrypt your file when you run +`jrnl` for the first time, you can encrypt +your existing journal file or change its password using + +``` sh +jrnl --encrypt +``` + +If it is already encrypted, you will first be asked for the current +password. You can then enter a new password and your plain journal will +replaced by the encrypted file. Conversely, + +``` sh +jrnl --decrypt +``` + +will replace your encrypted journal file by a Journal in plain text. You +can also specify a filename, ie. `jrnl --decrypt plain_text_copy.txt`, +to leave your original file untouched. + +## Storing passwords in your keychain + +Whenever you encrypt your journal, you are asked whether you want to +store the encryption password in your keychain. If you do this, you +won't have to enter your password every time you want to write or read +your journal. + +If you don't initially store the password in the keychain but decide to +do so at a later point -- or maybe want to store it on one computer but +not on another -- you can simply run `jrnl --encrypt` on an encrypted +journal and use the same password again. + +## A note on security + +While jrnl follows best practises, true security is an illusion. +Specifically, jrnl will leave traces in your memory and your shell +history -- it's meant to keep journals secure in transit, for example +when storing it on an +[untrusted](http://techcrunch.com/2014/04/09/condoleezza-rice-joins-dropboxs-board/) +services such as Dropbox. If you're concerned about security, disable +history logging for journal in your `.bashrc` + +``` sh +HISTIGNORE="$HISTIGNORE:jrnl *" +``` + +If you are using zsh instead of bash, you can get the same behaviour +adding this to your `zshrc` + +``` sh +setopt HIST_IGNORE_SPACE +alias jrnl=" jrnl" +``` + +## Manual decryption + +Should you ever want to decrypt your journal manually, you can do so +with any program that supports the AES algorithm in CBC. The key used +for encryption is the SHA-256-hash of your password, the IV +(initialisation vector) is stored in the first 16 bytes of the encrypted +file. The plain text is encoded in UTF-8 and padded according to PKCS\#7 +before being encrypted. Here's a Python script that you can use to +decrypt your journal + +``` python +#!/usr/bin/env python3 + +import argparse +from Crypto.Cipher import AES +import getpass +import hashlib +import sys + +parser = argparse.ArgumentParser() +parser.add_argument("filepath", help="journal file to decrypt") +args = parser.parse_args() + +pwd = getpass.getpass() +key = hashlib.sha256(pwd.encode('utf-8')).digest() + +with open(args.filepath, 'rb') as f: + ciphertext = f.read() + +crypto = AES.new(key, AES.MODE_CBC, ciphertext[:16]) +plain = crypto.decrypt(ciphertext[16:]) +plain = plain.strip(plain[-1:]) +plain = plain.decode("utf-8") +print(plain) +``` diff --git a/docs/export.md b/docs/export.md new file mode 100644 index 00000000..f786a318 --- /dev/null +++ b/docs/export.md @@ -0,0 +1,76 @@ +# Import and Export + +## Tag export + +With + +``` sh +jrnl --tags +``` + +you'll get a list of all tags you used in your journal, sorted by most +frequent. Tags occurring several times in the same entry are only +counted as one. + +## List of all entries + +``` sh +jrnl --short +``` + +Will only display the date and title of each entry. + +## JSON export + +Can do + +``` sh +jrnl --export json +``` + +Why not create a [beautiful timeline](http://timeline.verite.co/) of +your journal? + +## Markdown export + +Use + +``` sh +jrnl --export markdown +``` + +Markdown is a simple markup language that is human readable and can be +used to be rendered to other formats (html, pdf). This README for +example is formatted in markdown and github makes it look nice. + +## Text export + +``` sh +jrnl --export text +``` + +Pretty-prints your entire journal. + +## Export to files + +You can specify the output file of your exported journal using the +`-o` argument + +``` sh +jrnl --export md -o journal.md +``` + +The above command will generate a file named `journal.md`. If the`-o` argument is a directory, jrnl will export each entry into an individual file + +``` sh +jrnl --export json -o my_entries/ +``` + +The contents of `my\_entries/` will then look like this: + +``` output +my_entries/ +|- 2013_06_03_a-beautiful-day.json +|- 2013_06_07_dinner-with-gabriel.json +|- ... +``` diff --git a/docs/installation.md b/docs/installation.md new file mode 100644 index 00000000..36b694ce --- /dev/null +++ b/docs/installation.md @@ -0,0 +1,55 @@ +# Getting started + +## Installation + +On OS X, the easiest way to install *jrnl* is using +[Homebrew](http://brew.sh/) + +``` sh +brew install jrnl +``` + +On other platforms, install *jrnl* using pip + +``` sh +pip install jrnl +``` + +Or, if you want the option to encrypt your journal, + +``` sh +pip install jrnl[encrypted] +``` + +to install the dependencies for encrypting journals as well. + + +!!! note + Installing the encryption library, `pycrypto`, requires a `gcc` compiler. For this reason, jrnl will + not install `pycrypto` unless explicitly told so like this. You can [install PyCrypto manually](https://www.dlitz.net/software/pycrypto/) + first or install it with `pip install pycrypto` if you have a `gcc` compiler. + Also note that when using zsh, the correct syntax is `pip install "jrnl[encrypted]"` (note the quotes). + +The first time you run `jrnl` you will be asked where your journal file +should be created and whether you wish to encrypt it. + +## Quickstart + +to make a new entry, just type + +``` sh +jrnl yesterday: Called in sick. Used the time to clean the house and spent 4h on writing my book. +``` + +and hit return. `yesterday:` will be interpreted as a time stamp. +Everything until the first sentence mark (`.?!:`) will be interpreted as +the title, the rest as the body. In your journal file, the result will +look like this: + +``` output +2012-03-29 09:00 Called in sick. +Used the time to clean the house and spent 4h on writing my book. +``` + +If you just call `jrnl`, you will be prompted to compose your entry - +but you can also configure *jrnl* to use your external editor. diff --git a/docs/overview.md b/docs/overview.md new file mode 100644 index 00000000..8a0ec10f --- /dev/null +++ b/docs/overview.md @@ -0,0 +1,31 @@ +# Overview + +## What is jrnl? + +`jrnl` is a simple journal application for +your command line. Journals are stored as human readable plain text +files - you can put them into a Dropbox folder for instant syncing and +you can be assured that your journal will still be readable in 2050, +when all your fancy iPad journal applications will long be forgotten. + +`jrnl` also plays nice with the fabulous +[DayOne](http://dayoneapp.com) and can read and write directly from and +to DayOne Journals. + +Optionally, your journal can be encrypted using the [256-bit +AES](http://en.wikipedia.org/wiki/Advanced_Encryption_Standard). + +## Why keep a journal? + +Journals aren't just for people who have too much +time on their summer vacation. A journal helps you to keep track of the +things you get done and how you did them. Your imagination may be +limitless, but your memory isn't. + +For personal use, make it a good habit to write at least 20 words a day. +Just to reflect what made this day special, why you haven't wasted it. + +For professional use, consider a text-based journal to be the perfect +complement to your GTD todo list - a documentation of what and how +you've done it. Or use it as a quick way to keep a change log. Or use it +to keep a lab book. diff --git a/docs/recipes.md b/docs/recipes.md new file mode 100644 index 00000000..7af5b246 --- /dev/null +++ b/docs/recipes.md @@ -0,0 +1,197 @@ +# FAQ + +## Recipes + +### Co-occurrence of tags + +If I want to find out how often I mentioned my flatmates Alberto and +Melo in the same entry, I run + +``` sh +jrnl @alberto --tags | grep @melo +``` + +And will get something like `@melo: 9`, meaning there are 9 entries +where both `@alberto` and `@melo` are tagged. How does this work? First, +`jrnl @alberto` will filter the journal to only entries containing the +tag `@alberto`, and then the `--tags` option will print out how often +each tag occurred in this filtered journal. Finally, we pipe this to +`grep` which will only display the line containing `@melo`. + +### Combining filters + +You can do things like + +``` sh +jrnl @fixed -starred -n 10 -until "jan 2013" --short +``` + +To get a short summary of the 10 most recent, favourited entries before +January 1, 2013 that are tagged with `@fixed`. + +### Statistics + +How much did I write last year? + +``` sh +jrnl -from "jan 1 2013" -until "dec 31 2013" | wc -w +``` + +Will give you the number of words you wrote in 2013. How long is my +average entry? + +``` sh +expr $(jrnl --export text | wc -w) / $(jrnl --short | wc -l) +``` + +This will first get the total number of words in the journal and divide +it by the number of entries (this works because `jrnl --short` will +print exactly one line per entry). + +### Importing older files + +If you want to import a file as an entry to jrnl, you can just do `jrnl +< entry.ext`. But what if you want the modification date of the file to +be the date of the entry in jrnl? Try this + +``` sh +echo `stat -f %Sm -t '%d %b %Y at %H:%M: ' entry.txt` `cat entry.txt` | jrnl +``` + +The first part will format the modification date of `entry.txt`, and +then combine it with the contents of the file before piping it to jrnl. +If you do that often, consider creating a function in your `.bashrc` or +`.bash_profile` + +``` sh +jrnlimport () { + echo `stat -f %Sm -t '%d %b %Y at %H:%M: ' $1` `cat $1` | jrnl +} +``` + +### Using templates + +Say you always want to use the same template for creating new entries. +If you have an [external editor](../advanced) set up, you can use this: + +```sh +jrnl < my_template.txt +jrnl -1 --edit +``` + +Another nice solution that allows you to define individual prompts comes +from [Jacobo de +Vera](https://github.com/maebert/jrnl/issues/194#issuecomment-47402869): + +``` sh +function log_question() +{ + echo $1 + read + jrnl today: ${1}. $REPLY +} +log_question 'What did I achieve today?' +log_question 'What did I make progress with?' +``` + +## External editors + +To use external editors for writing and editing journal entries, set +them up in your `.jrnl_config` (see `advanced usage ` for +details). Generally, after writing an entry, you will have to save and +close the file to save the changes to jrnl. + +### Sublime Text + +To use Sublime Text, install the command line tools for Sublime Text and +configure your `.jrnl_config` like this: + +``` json +{ + "editor": "subl -w" +} +``` + +Note the `-w` flag to make sure jrnl waits for Sublime Text to close the +file before writing into the journal. + +### MacVim + +Similar to Sublime Text, MacVim must be started with a flag that tells +the the process to wait until the file is closed before passing control +back to journal. In the case of MacVim, this is `-f`: + +``` json +{ + "editor": "mvim -f" +} +``` + +### iA Writer + +On OS X, you can use the fabulous [iA +Writer](http://www.iawriter.com/mac) to write entries. Configure your +`.jrnl_config` like this: + +``` json +{ + "editor": "open -b pro.writer.mac -Wn" +} +``` + +What does this do? `open -b ...` opens a file using the application +identified by the bundle identifier (a unique string for every app out +there). `-Wn` tells the application to wait until it's closed before +passing back control, and to use a new instance of the application. + +If the `pro.writer.mac` bundle identifier is not found on your system, +you can find the right string to use by inspecting iA Writer's +`Info.plist` file in your shell: + +``` sh +grep -A 1 CFBundleIdentifier /Applications/iA\ Writer.app/Contents/Info.plist +``` + +### Notepad++ on Windows + +To set [Notepad++](http://notepad-plus-plus.org/) as your editor, edit +the jrnl config file (`.jrnl_config`) like this: + +``` json +{ + "editor": "C:\\Program Files (x86)\\Notepad++\\notepad++.exe -multiInst -nosession", +} +``` + +The double backslashes are needed so jrnl can read the file path +correctly. The `-multiInst -nosession` options will cause jrnl to open +its own Notepad++ window. + +### Visual Studio Code + +To set [Visual Studo Code](https://code.visualstudio.com) as your editor on Linux, edit `.jrnl_config` like this: + +```json +{ + "editor": "/usr/bin/code --wait", +} +``` + +The `--wait` argument tells VS Code to wait for files to be written out before handing back control to jrnl. + +On MacOS you will need to add VS Code to your PATH. You can do that by adding: + +```sh +export PATH="\$PATH:/Applications/Visual Studio Code.app/Contents/Resources/app/bin" +``` +to your `.bash_profile`, or by running the **Install 'code' command in PATH** command from the command pallet in VS Code. + +Then you can add: + +```javascript +{ + "editor": "code --wait", +} +``` + +to ``.jrnl_config``. See also the [Visual Studio Code documentation](https://code.visualstudio.com/docs/setup/mac) diff --git a/docs/theme/img/banner_og.png b/docs/theme/img/banner_og.png new file mode 100644 index 0000000000000000000000000000000000000000..9c0ec3d423ff6aeecf0aa09724c110005e625a76 GIT binary patch literal 229935 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∈%`*DjrC{Eqk(Lt7ijj;LI-of?>?hayw{ZZa!qff zbEt7IsP#T<9ClWlv1%;bx{X8dL5$79u*#BO?V)7HJSnzV7!@v&c|GU(Ej#;1Y8t>i z|1+E2zSnleRby>nqViyxO8!&q#`2VzNBiH{=Dmbp`w#AZwC0L^rq^Cq#`uRB=(WqS zd-WN%S6yfV+HcU0XP~b?_WLu8rv-;7d0?3(-a~;ZC#p0h2{hw#3F)i;JB}c|eSq_% zDq8?n(YcdlrDj~H?uZVb8n7Vhq`DraOj)@(j@5^XX?Loyhe9i)FFVv@yFq1>`9#?D z38Tq|cKH!t9o$sRcm3>P4(5|}tcDIG+qZk;+D#WfaLOOJ<@)=U9@*g8cJw?ZuO;T& z;x*vh;8mUldxG`VExQ2ew$a%@i`ABW^0sOc!H0a=Dg_q3GQham%EMez3Zou~fgs5I z2=XirsK>BpJ%M1%&Mca}0cUM(vMCtStQ<=fxzY@$r6Z*Q=F*^JOHe4T_7IziW75Nr zEHoR#1Wjl_bYT_=|Sd&Ww#>FArbgyINcseZ^qHMk)96!z~8YPfdv$jRt~J7{Aehk9lE;(u%Uodd&3PN z@77Ppfz3;7PzApaoBkJ%EX10^=375^7eo`FGEMhuzbzU!0BYgrig5rtof@|O)Z8;D z_t5%zp7R$!ecD%Qb;jyUaFoN<>FQDaxtkNZ)$4As44YbYb-)b^iPNpU29t=1(}$+# z@a9RxjXroA<2f&E#qst`@EG;(kqXhkGn$;^mc5&4jHl^l)P~ds*Z}px(*a*3-Y8wg zz3PWAZgo zc&%v1=#VP)vm9d!Z6pP!(TtC*#cf!_L=oqK4#r0=AuUR(PT;eyV;+ZfBt6U+ z1N@rtC)c5ig{`wEHh*5dg0ZwqQgQgvnLi;ma1g!Wt5oP?>;99lOAV`p6~<_sRf6W8 zb3JqFe*1QsEgkCAP{AjAT*`x^w0hj^bja_Q)w!Ez@yLhMzXMJmJN+y8k6mT8)Um+U zcMriSZ!F02xO?UR2PsAfas&SrCXFcOS{Lh1qV!1J>h}FBIUnv2cFuKZp`|^dgxaOx2KdqaKf9@7lJ#&8LvycBO4C9oH z7}g+~|D+H+LzRAh%9T`ki_ni|ZVJo}yTymUL7ETFC|yx>JLMs!-Z>0488EdKPF z_x#5voua;_H^}X~QJBSpOC0!r-guddGgQ_a%>}Px(sbnt^8AEf(exe)fA6b(K`Gc7 zpx-AAxO{Bj+Ro3-jecS~Rl*ozqUqR+pBJnwPQ}J#=;Kc{FB$iv z%09@@^Ur>LM9GQfd6p=3C&?)3kqBXx2vspXa0`_g>MRN#@fMtm0GAl-UX_G%2p|R@ zYfDwUGhuNxungG?aV{K2Qd{reyj2P=cB&rdaC5x=Fu+=^OEa~Poo;s5)hJ3Z@p$|p zH!I3Z<8N(CTUE&EQr9LWNWDUuYioGu&|+_NqGu=t=5XBXM#I_O1Z~cKG+ds2;st>$ z7g8>F?hnSgIpPJyiqJ&1zaAn(s1D_akBV>FjthINPYPT3K7FScNtA9*eOzv=+0FyN z07{;qIC~{eBh~fVs^OA-*K<2y+a{HDu4%{0CW6NP8A9IOnXGcx_R))X#T1krN%cC#;2JtTm4z2|-b#mVyri`pogjS!^wPh=LIT7S51= zPM;af76EFiL;~hfMWbOMZE1P;#{1)62MuJq zbj#)u(93Ovj4e}mbZg@0TW*glt#LD z5u`_6a~n^6W>>c(5<)zg!%CzB)QyM>Z9vHu`na41;Bu3dWe84jGnNX_hf(E1Ty& zJ|-o!(F9F%6E%F->De$O@*%Aag@nt#66WoVrzSn$9ws--w_^#N$a(y`qc~;+B$O`k z8K~1om@liXyXS>&GJ9g0esCB^sQq#LknTr^*$90nW5yjt@`*O$6+|ZucK^5_(kClQ ziS1E*44Qe~_?{|zp4QDSoDiNGpZum9 z6{@Og1g({wbR7(y{qBp3edfAV3BjnCZzqt2jK!mXuO*}go2CME!;j5gpNaP3&k^EN zOs@wt7{*20giK?2FyGz@72}}tv;auyjZDTMj8$oS!;jg`9<$ojUJH)wvBr{o0s+1fV;Y*$`{+W6y z)DzeW3@z;Z46NR>wRlgyp9~DKld6>1+6zSV60!$L(M$*2*^odyDE=rQz@Gyx2i;lF zwP9do=Mq=1X`;57yxX zl=&;Qd0Ya;t9pe!7@ZTUuMry3e6C(AxrA4GV+hQ(Xk*|YZzw`0LYy?10B}M-*1Uu(i z-OXOoDd$FF(jjuw2_z-E#FJ`Kf1bXeUa%bm=9v8TOiJ>-Ir!-q3eNHP?#>#aJBAbG zNMDq0KALys$PL8CQi@)*W4NlOVkt~C0$B8W_nKp8l@3z}luPi?!D%{!3W)Ib z$-WxBd!>)o5c|k3Cr8G7*>Jk?yk69tci$t@t_N(QH8}M06j3ch9D~*h8^|!vn|lV& z*I{?Q1=hUFo5Fx~-zEVUiD_N&F4IQ|A1eie)H?Xv5Qjx#_<9`0O17w5FUDCm}m zp)c|Q%G#Wm4o6})dTffhsMAH@5zSL#i@-T(-x`jm z3Zh!=Pv$SO_`o|2+4AZc)D8 z@Evi5bApLKfsN4?gq^1U+J5o z&tvY$IPFBaX>w5DWr3m~jz{(px?PDAGGE?a**alZr={-ya}4UhcvA1>URIYskyvyN zehki%!yS$3_?5qv$lJ#2Y2m+(tCzd-43TA%==mb54dXf?&5-@pzTtNa-xw#wUOaT! zT$7|6^d*A*vVpckI$+WqyIUH}X?r<|^GZ%2A!CwfSglIqiYn4BNuF@I?7eq;&zJVY zuzqS(y%ayMfzwISnD%h!Q|_V!&gi`Nrmi*{H-LVZ#F0+vGj?2!qT5IRR(L-wB;))H zN1(ll@ouq}Z*2Y$eqr5r?1!x_s<>}Q&Xd2mL0KKwY}q4Be4WHF-Lb|HkHpYJl+Ey% zB6Ea4S#hND_4DVz70*B1+Xm1=0#cn#^xAO!ieubi`!KOJT1an5P#Yt@R0LFmt`br7 z$HhGzr{g2(NyBQxv2xW9<%-gDBs|?`Ah!c)0b%(SYdm@nc5mBH&fF0dlzY<`#`>^~ z1#?Nm+-|Ztff?7iI&OdUTN6C-o*8)$|6pl1rDEyG*%NAaa-U{&UR9C^WqG|Vsq>-) zO`f2%LK&||X=|LT9OH6EA=FN*00|k@z}M0ZB}O!WminUkT9ceo#kuIURse>iRR(yz z61d@$$D(xn#dA(&P$*LK-g0-+k*Z3Y~AN!W*fhm4hdVhiXEEthnS6Tc>Qv2_r*3 zS{ldNC3npxV>v%ru|A47c5hcyCXnRQqO5l&ygoTXDooSqA8V5p%MU2tYtp8RF&g4I zWczA3>@q159u)Krq?R7zb@jSV$2~29(l*QzG98EmF=Xemn8iY2j#nDp7Z3MPp3Q%E zcV~skJ^GMIU~tGKLBLtTN086uEdbM5dqYz_W96SO#cMW?2dWm@lL`;=+GXZtzk9%SbSv`{s>0|^J+#9o zMTpf;n6X=(CulamdzrZK8F^t8xkBL&?Vffw(0XqEfkv`v5VnX_&B+&Y$83z?_dQuC_$_3_^|5_K~3I*sQyU8e`P zA0dVKV#@sELBr>DB~%ylawSEcsz`ss^#7x-$4$|Oh{34g#!*P~uvNxLvWZ5R+LSbE zm09hVh1AJw3cIWcGm}|mrco7@8Dh294rhGRXwVP)frp+6Qvppj1s%GEw`D-KHOkBCWBW)Gs zFQJBcZK!pcsjv|KQ2(KO{KwG?5b$_P81 zT@2A$>=Qrc31(we7M4BzBchY ziR^=pi9Hr=CbmoJrG{s;WPaM?H@3b&>H4D=Fzn@ScZ{>U=9&)c;aFU@5VcfYJ{p zB3|(2ar{Vl+l9}bOu^iWZP6dcOCCpmT4aR09u9oh>FRDPA;*KNWm`j?rX-r+MNKCA z7U!)tR=`Ud!-&zaS1uQWhg2^?)B4siF6^e-B z?T?R%smbHU({9LGe(z5)As$1EpShl|C~=7|Oui;?>S(zBl8Ky|wCZ*1+h*`~lYg$P z+-6k-&sWcuv#ozw4Smbs=l0Y;7g{QBq?`2d6=0^}W1XaIbFXZ<(iqN(V?l0&q|0Fj z?0~&^{m&Op?kgFXZnizLs56HDJ#NeRMkxPc;&JXo+91DXTl&q*?1oLRK7{N=?}H>{ zd$(${C)78tp(5R%$Ero2qJ0Vf9t_1Qa-toq9`{vp+E5Pcr)*?E6iw!VQU2T>ga zoTK(iHp%r$rk{8d!-l^k>-HPS7e!&i(*+;LudaS`O6vNoa(?mD;P3Mnf~z{kH?Erq zs;UdbOFKTvT-%v}^rbBxe<*x@7tNSCCn%^!-EMQ5xUqg|rn59U+wX<99AX@~$RX=q zAFS~Ww5sI3z8X5Nthtj{`rRqUOI+hr2FjhwzdTR4JMa=K^ETn#9bA0;hc6#kWcw71 zkV%{Q?oGr(fZPn#%1e;+kX-X9`S%zA-2cZyY`a;^BtHe{_$U2#Zg{=JzF!Q?hw;cpgRnAp#84p~<)=US2+eonPr#Do}fV zUjRYf_XlVbd!H-b>XqX5j9(&?6!(2?vU0Qje1%8UefgH+jkgDVY9ovZYH@kK9=6wM zvO3+NH`5O2c_#!u=72`Vu^wWd33*XDwSQ60d5#VBC+ru!V&VMQ#AEtYnUpyDUeQ>s z$;R+Ai!ETy-gBw_@6CJt)vo*=*^${S|1cY|zQG?YGf|sa6>mR)z{J)EaNaq_5mka8 zOl{g5Oq%RG6?APWD>zu3gX`kVDCKu~@9FU3`1pzV-4jhkxN!daVo;ZoKh2}@v-e|= zl{lB#`{@AKwX?T0djMxuU`2&(`nfY9N)sj#%6|X9qrm2)MeUjP%u5`Ki5H|~zTaBw z(yiLBKGj;_p3ym|uBv#>k3ZL1OGrQPTU`p!4{>LY(BXKDjHs14@NKSpx#ZIHrOW)< z7lExt=*#%|MFWMtLA$!)W0Eq3(hN5W)jdO>JV8=B}P>b53NZ$xmia|>h%q?y<-1k2Ky}J3aK*W5iw%|u( zJr>A=*plHpy%C?yk1xBE+#YvGd`d<08Papel9{21zj9>xr zwvd43iPrUGL?3U6$s5Csc&DrnA@KK|A4OqQzAhoR_myS$B8!FWhL#`vrC`mo?UClN z0cTBxqpf&ebwIv$o&EZ_k1Xt*+*>Wl^(74- z-HW?;5p~tQ0BiM6j{~kY^%bX0Px|Qu6ljDsL`>Yl#>1tq&>h(%Vabfh+OKq1g?5~3 zq&#(0ZtqRkuc4)`M{fWlXAFUZ8u!E;!T!Dt~TJl=u zYHn(~d~S`Iv8x)PJ7)C7oxf>x%>Tgn?w>(hEuwoy)o^hUo>W1+clvRi0Qd?FI6U6| zdUsX<3`LZ=&$`C!#Uo(;ew?F_0N3COP(Y1Jy+oANiuZWzWu)aG)D>PvlA+@^Mv;`Ek?ZM&wZ5`Au$q0)Ex z&V>EDiTS9d2p6@{AMQaFsUKpyiM=&*kyqWHA&$AtujFtv1w=HIU|ta4)QdG$W@)M@SI`2+z4NGw$e@atHeS#T%BULu zn`q@FtlqO@fadW9gL$=!2W|Cv2Hry6Up=U%9#K6uSbA{RCGB)#+At5LMJ{8Q6aH3i z9lBe#B*z^D31LpZ?z;puSF6i^U6Z4P2p3*UUGpiS?^h}r0`GknrK%X2MV_Zse|i07 zUwy0rlD>=1!KMN-LN#`hPl?nm_J>MoeEXZq{M49cnO82SD%Mq2$AQKIp8?&@2VK%9 z6%0noy;9YMRZHX+eNxqXJR*Lzf^YBJ3;86!KkDi2*|=Z*F#>vTg1~mh+CT9xV4ZOw z2YaL2P^M4FsEmDc^CLX4JP%UfNI!T+1DA@FGtFATxJLV4hxY7E3vIB6*-Jgk@FyMZ z5PogYdv_@UD+P zHqeAfZf|00jLBfZ;pfK5WHHt!d;XGgni6&}R-nw_W+>JGR?fO_0&E{RBXLnyFi?bX z;IW(dZu3W-cDcVF&uDx(H?gRD(k3EGrJ|X52bQf5Escp5+vZz7XJFUy;d+k7n)HYN zgQl;JYWn;C7g0e`5J6Fi5eg_V>1H4(DkY*cObO}k+5|+J(IB0I(jg6#9Npb9I!BC+ z)pzgD@BGf$Upue6v)Ai&?|nY+^AXQLp9f>e3^lZ-jE#Yw-{s5HT+CU}FuDdh7rFDL zS3kl4U$k8Xy&T9hz{8f$6VO}N6hYl@Ef`VO6FUl0n+yU(o0R3-)!!s>{?n-J9bMCo zM{dG(fgZjs$x)6;Rf(i@3=_pq^7PL!A!+0P9=9dq%-rbYc# zz_^#B0741M5%686X#_T`-hrm~ihmB|x!*hZJ?7T$ zfDP9t<^P-CsU(#{Ecm|)_J2_dG))0HdU}%HmzNo6%0NRtPz1S}l>V+x` z<;?8z+e+8&Sl){_%{cC7C#+-V1OhbX{oavSKl^uXVF`v7o+;Zcz`O~5oc ztiL2@@u^w3SW?=Q1Feh+S@QjoHl4TOUp>Q560@#cc|#{{H?%oIW>YB|1QET`&>5Jn z>~Pu8=QrUEj3hsSbJ(7IWf{q%Bo82Y6o!)_{RPW@`?6%piNhL_LlMn0v(B zHGw5(rRvuWPa6&y1nM4RwWpzJjw$g&Oeuz!VdUym`5tK6pYwm8+_GW8!n23pX2Xmk zf)h3$??!(+hdyVy!ZWI+?3$u3o95qs&GNVBH>`~SZXC-P>NE8WCMn91&S&aIA?my` zCH>SqNSrad@b8DcsHAiWx-SZpBKuZ${c}csUz!}oC*9eMDoKHd@(L>YQF2f z`E>@3_)fnBxq`$V4X3vpw|bEg*wVog+kNF5iR_{XCEB1HHu9>>^zCoAJWjf3N3KUH zU=A^z)+E;-UTdx-G*Hit|4Bg=ap#VW zEfA;qT<}dP_z{*Pr-K*=1|O;$a=~ebq-Rm$z6RI|RN_lm7vwYot7fmW6{eiKU2wwn zT;TcLPdvLC6Yu6@U^8o$fZRP9wkPWv{OgYA9kcMwu&u|>3uZoeX8TR(C=TA4&SQdC zxgB#!_!q_Vf~7{+j`l+U4?Q{U)p_w@;(xwWONfbU?vtgIh4}LScWAa7a33H@lkD~L z0OrHx-kD{4;InU@;UlSr^oo1GRh8K;!px+IO104&?|Z(|lF_9yk`T|2!Q|Jpy&ADg za|4atw9n0!7;OLBw5CCZg{xF$xXwo6mMzCDh(oO_Ot0}JtF_6<$g4u?aj7NoZsC06>t(Txp9dzwkzM9z&hu#+9c-ijglq0_Z?Ld_1QB7D&ES=Z^^0q{{{aAHI#QRM;ja~>9%6h&qPmu zZ^8!^F>SIx>EHfBT!zXXGOQ{cX>0P3rm$I4Vj$gBLjj}yZzm|Jee28WQ5BEo0YM0W zK~vjg5bDf{rv?9U6)~;bgnx~?3?SbV9GiY3I(Lkc+Hn^d?pQlojdduVZ4 zDcL&RJ8oBw1(tn>UGL^26{=1M2;Jo#lf0YFK7z{5Zj$D|_pCMu5X%WlY24N;>@D&a zZ5C%k9Q!|0vQSkrr;2bBelNTiU~CcO=MuU<&90i5@NP^C5|QO^hEuME9^$2HJ~%fu zZxvaH*L!?IM2^HY28y@(qS<7o~K|@&lpv$pDyH$=b1#Fi4nsto=LL>v@>2$<^J9ESFqMVzPtHa{@wA7Sx>p+gd%o zH~m5r(ddJZ|H<82gn&1*3GuiE3VDWpE=Isx5%8UzmF}Cm{Kres<6>K#tm2@kz9{Fm z>E4B1g-zNgjxZv%c$uHe)%OzFNgousuT~}uLppPzKS8ftS>iLUt70=)S)gxew~r38 zg!YPF9~}U@o4)c=mev?Lef6fG!LOWm?HHaM%{3VE#50u}$Ddljq7wFy*e^a~l$X9Z z4zq=IFt4}^K7wdAcitN6ya2{|+W8jb^bJUf%vDmUMCy7g-oo$FI7?2xyIN3&oL+ds zCFH)X6vGty0Xa;Z%i2_Yw*0zx-bJ>E9WWG^J9`-rP>`@Z8!*5snGO9*UhHHT5=PRa zdS5SI@U+Otv7$VZzW=<-;IwwT+_tr5ihO$fSkI&L^`aoiEK<`O?~=Y~{wT}zUn4n$ zlSls-O3B#U>Xi>L5{H_uM7{{S*VChIdl!Q)26j;z)?ust%-j0!O|LWQqJ!dFnx}5Y zezY=9u%z;vR$)H%VwvwBo_hzU;JISM=QcK?G9pwnCLZ5OoVw1xAU2L5>bq{_2J_8> z86n+cGD36UlcU+cx}$H_HAgT80>+&)%jxN|nHi5QM6+eTF;abI1&dqb>-AiWcCRXrc73#}o!67< ztPvBa4{jEwaPy;&>jpmHjaE`71zC`4cE$&q>ldqSHNm(-z|-mH#E+&c z2AOw6f8UEoAbUpreHGahbVq_S41P*y_ehG^O475A2ENP3^PRZs;Vur7B4B0gwUIJf zX%=do&~juPun(|4Bs4lyf3#RVTun7N$V&s6NVjq7%pf03>Wy-@`LY@9ykk1#@dxW& zdRMfYMj|70`q*f2SGC@GKhuHut%^8&uk;S=b`IT!R!o7m!3Pr1X-tz}*?;9A!_$hs zN^%(_`i?u<+di0O5sy+G{pP!XuD+A*NvR2YY!vH6_k-wf4XKbT=CqJ3Z zo>jxUfcFXej>ookbQc&2{#sGCrzHOi=WK)wspVay%;;Rb%7EPC#?I?gRaEhHgXKfT zWH}jEYZ%c6bGIy`b8q?Sw8`D1Ojj34=N;5)A-F|E)?-V1R3~3)fQpH9gEY-adQuBm zt#0gBbKcAF7 zd}Q-b>~&=jQpCOLabilr$b$pkNkLNEaBJ@m%7-MHaw#5u8ON}p;VkII((yk5*q>6B zaKiD0If&G>EwJ_L;SzQc*G>sad?;KOqxs^)EqXG%wI9>VMw;@W81H^aidgo5NQ$x5 zLDA0ZcJk4QMVupiXSI=8ZDV$H#d+`0q6vtiAU`i>j-qV z3{>ru+@V((v%Y%UN|Ps794yUq8(DR1W3UXTR(v->XX<|MHHFWs4|DkYpEt7QDjjW- zhy3Y|Dfc_tg5(2kpAPe-w`GKnbNB28NA|yF@erD2RsEo(&qfRdA ztgiSSuL4A+b2^E0*GZZf)l6hnM1!5qrM{54Dejr-i8l+S+^@~jbxeMR5=DCVFN8W% zd(ECD&!&=4eny<71$sapUwr>5Rw#=Umgb~&_FelyN>fGDR={gC39?Rhl?4vNyq1)d zKc-Z#09ED4WqWwp7ojh2_L^T+F`jzMp1?Cnq2O^Bskw{!Fi8@MU+cM^-TP2un)fxv z*c2;e_uJKK*LN;?uO`X~eyx3Dpw7m3OLR$;IxKW#I2t*{I_c1?Q(aT7Arm998^5b& zP~|%|131@ls_lNkt=nc%`Vw$AIKYF!9}v!-8|BQSfyVgyu2RmtGdBd|dPUiaD4lCU z)ixPF^YUhy41O3E6i6f|x5}>?l$Q%fl+zx1ng)?;hZ!X4i(HsMGHup54D}i>Miui! z5TNLb>!ky|K!ncepe;=qehvs}{+)}Owh=tdYF2olqRo{1hwEhkzxo{d1JRah^+|jW z8m%Pg^$Z{^S4t?#qkW@DZ+PS7H$NXSRk@}j$&;)4Eb7LgcWI=1Oz3)s^v?d#QP`MLi79kOwUqBf>qxfiBCH3HW|4w)1x8H+2m}_;*3DJLK zmPa!+aArJ&J(bn+AqE!OH7{SR>lh-d_Lfa_)MMy0w8Xpvp*2&FgeJHvtQ|#aT;i}l z8Vt7Jn^Oa`BJEW)N#EBW4AHr64b!?tXR;n=Ht2fn)5>hKa6^|7EXGr@kAfN{jq}<-vPC!3UsqgnG~&K=q2X=l!z3iSBusm z6uh)oG5ibf24J1pPe6Ujsl7F04c8lEVP+|$=fyF}=1u9E?(K%B(9ZR&Q!Z1zX}A{z zz!S*^{Jz=n+FO3vTh>`#04t{3z|B<`EWc0od@R!&^CRC0jh}1%JTxCcP7$lYA6m$0 ziqwU91}RFy_q4wN@+jby8alL;vgm~q{WTfu><5BBoS9C}*4`ydOJ8{ln#zHyX3=^} zf6TEQV~(05BV2AT#2W0QbbB(K(Av(XIpu6okJ0g!%!X(g@$TTzUvbbX#PZML+5*{d z2rDC5!&Xvr@f2TTF@RkL7Yk=*raANEmI6R$n%aZva4v6R2hSGRJqe%;tV`})Z6!{F(dw1JR(bHvwEhBF7CdBpbzRF=ng}LHPjmFfUgDRbz2~06F zEex-#EiF-s)!Bk$dpAg0B84Hrs+uF%N>?18@ZW=6(T8tc31i-{R)?0y7R0(W=ewIA z`}ZBT_(^g+7Ll-WSb+@)<@Dpt4=V_tk#LiLkIR8~Ur-14{Nt&4z0vkdwB9YW()B^u z0_IgnXqN)~S|^-6=4;bAVk%kwM42mbluN;w;;p;zwF7SMrqh@m^DB>|CLxZA7q6f= zSKtZ#CqQ!cPmvFl58ltI%Z{LZ({ggU1vjs`UzF7~8Ywk}?NgprzD3`zSiS)84GM+D zsK|xkETL18E}>>o&?J_vtH$adxrCE1D#gTr)D_WkMLf=={o%g%w3Ri0*23sN9p5k_ zI?7ojK0y<7=7^eZ`qZ(Uvh ziO0I<(cWIiWcTo53Z@ECChkvoS7G79&c`GlyprIVESvhjbEtIdHRqhJz+Z0%Zp~J| z8q%>-b)ymHc9vOXKGi4A{dlFjThf%l(iJ3l>H3`BpLLsm@Y-jZC0@Y{JLjvpA%)g7 zl)0?TS92?h{+U+;&{ZQ2oV$kT_(%4UG8xa^?QzCbv0tmgv>;ro0^*Td<`M9^ByUaS zd3KyX36=ARr604Ixzi!lgQB&-{|?Hr;=TpgIR%KUHG;{UW`3X?u>aS&VTTA^IW5p} zmfoYeMr41kfo~vPPGlfeM%$#uCmnAv^6U%orb?lM*Z%SS2CksJN2YQg@P;>^h!++)w>jtJG7_toJ|e? z?Y+^%9sWV2cJ0BYT3@u_(N z6mv0g4hdMg*$yPB2yLlqcTIbU-{Ci~{WoR3Rx@FaTjZU+ika%SVx{FCTZG@<=b9+T zs#E;NOak4a)OU1JM&&HsvxXEo@f$Wdbnfiadixg*DotT5ba}3~qy1O*3nd0ggDt2! zKy51QXRv88J`X_$!KXctxIm9XxWf&ePM!FE+Xv92x18Eny1%oUlgJHA8&a}-#Ypy$ z2Zwg)B#wg#%Q#0P&_CEq{v8&Uc#t4g^QqLs;6H3C|L~xJ{j6xp5={=n3N4-;uC{Zk zmE+WpR{ts$%Y|1=;?6(GC+Db{+>iM%{m|>UhvucWeAnHa$Q|3une9K>;e`UqlK`{! z=$_c!4^i=gb`0~xqMEA*-0jR?X+~WO>x+R^gT~FpWRN3(5AGw$J);e;EK)Dm_n4t_u6%oC+SlKO@7$r{&rV-Z z@c4vtFE{S!ikGws5MK`$R7 zi|0vpq9`HW_X$8Wm9~_y4j|c;`*5*&#~m2#c)!E>&(Bz;Q5N98`n|4O-a}frZ$X37 zR90J27jiFr)k$3LMEFJgw78&2ssBmCaS*&oYGtU{sQ$(m^iS8Y=rzx!4M;7|UFp$bNLbE9>##+=@Nf1H*?oIyF zyB3^fq+gHfj;ZZTt>?)5dPoqVVuMUFkSEcjzShi(NgWQrDmOtJcYk^-4;4rT+`1!m z6!tvW*xm9QBy~@Wh|3~Hrm1xAE0jPXEG2~x>~d?TFfu&qQ~1K00|nBgL9RCrm-#A0 zmFZanIsNtFw`zvA_>gFjaUrV>UW%>}UkBd;VP&npL7&<)1D)%7X+AYF%q5%|zK##A zRg34$y;CUiGsLYNH50Gbb0qoi#8+JM)O13%)p$Nb{?Li4h3C9I z2`(=Q zT7vXd!s<<7bE#<-$&HjD&yZZSyB%$z>X4~>JP^FK1bu4I(1Y7mG0pY1w~ks&^|Ak| zSD9TnY?haF3&Kx$o2I>xzUq)DCz@AJ%@@L~B{@|+$DLJBU1RC$-e80-17d?1|GUWWZ}NadMr$@C+i8?@?Z}IJ;rJd zC8aCQ1~q6D1)wgf{K~w&pVFayH}bZwt4k?^rzZ{8L6XEs?H$`gOE6tD$l?yOW;BI4 zpzqi||2GZ&`A_aw%JWv}YM#m%&JFEV-IA>OmZ8T$r;to_wJVnYZjtI6Vz>E5~;KRN~)EE+L^s z^d#?YxBbh}PzHS)dCtRWagU?PdF0f;P5Ct^=56)j1x3`$Gtpf=%}DMys=_MBVtwgo z08LfCUfv$N>{$>x!0s$!{Wo<^z&jbns^9TP^Tk0-SLgmWs-|3G2eswar$uO7Wp1WG$W7Q( zK%ElcKF501Bhwnez6c>H>)EhXb-3FjzK&{G84Z}^xSSlJiwmdSR|{COw8wEL5PGFG zy)s$^YQ|3kzY?C*EEi`E>{fxqUI(&Ps$M$PW_hpJ7ij*E#nA%nCG$q?4@!6Vi5t>0 zXYL8pyX?}D9e9bwoUFRu`FFm4tlqP)^D}06?wr-2d|XSq9SM4sOP<+_oj(qpW$$x{ zRwx;1^PEvIR2B!7pEf(oeqtcg_zuxYQo^m1inRc~K3n&@nKvy#_EcOE69 ztwI5-&GZKlFzQuyft{IG1yB|B|<9f+Ep_ z*L*7YGAK;AQ5qvX+)p(5RoFCdxEUI!Lp2NG?};1R{qL=xXkSQXhTm-rsaN^}H~!Zy z^3abq$m+qaxOItruD>R+XUN2+0^8~LwC?-p&1a|;7Cs{I9hrl?6VS4)nD{iUzMtvd z)x-xHrb(;3b93Wttn9Et{D)7=*aq#ti=K%}&Ny;Cxp z|1`raWOWLja*=Y4I^M4vMB;e(^v-8dmjV%Rf|R`#^v~Tip8d;d>tW0cU7EE7>PPooA0$=IfW1Ty zyS=Qu%;Vd+oarBXXE(4fbpA@O-!gmC*j7aOM*Z#sF~-o_RTb2LggP_q>S^2Zm?M?jh!(m<)Tw5fpkL6@!&37(HmDS zMY+9f4s0lyC^Y3z+pF%X#qxlA#Hi>^^&)NUO7D6#?O3&7rT@DLP5OhXa&>We?tVt= z>bI1SsbYTN`Ky&$=V$`B%cGptz9n&I{dB%^uvMWjr=IX<3^JT~fJVpaaHxAM+Rj+q%q~>`+Zql_AM& z%UIZJz|bkc6P)3^`n&fL2zP0`TA&Urbf^AaO_JSMWH{=z$nS z-NpQq*TE-Qbok3IvN*Vv_DdLY;paeu+0(7B$aKT=ak4Bu_sf3{l zf4nNpc&K6E@lsN2b99tuGdS<7I-ST@w)^PAB_tf|ot>wH@2kxbj|OeG7UJ{WGFD$x$H;ymtygmYo09UMT%5^V7FYRtF=`<% zbgbAa3M|X&9s;r}ft)V8rQG|ak@n{_?o!VENJNOIimjpvOw4jRsr*9W@^atD`&7I) zY%5XxXM)HK1ljqhid(<{Vw%FWH=3SjS)4A{bYTATs+v~`nNy@qK$_x@a^q1n=)5!?>lt4Bm8$Uqo(M z&w+DMYH9Lf{6;=6CBO6rI_jt} z{5+V227O?UGo7X#qGAT^NzFi_5;p@^FJBeXIy*3gJdPo4T!xrUc{|E#pNbB5JrZWR=xnI}w7GUF%rsrU z{?I>A=x2!Xe+KO7+%2y-MhGxyWCJ=>svlLP$|#vj=;0gZKm(+R6G2wernck- zJPGmI_}2}F1izqr&ut||!H>1esrV+w@J=JqVkh~@Xy-`5t7pF=uGh>0sPxv&0}bO8 zTceWC^U7Md6{I*Vm_M|BNyhhn1=(38eU*KOlPkY?y8dBq8EGkdyR=kl2?>LCtVJ`B zbuMI~%u(f-F$(1#10JIL9XltRMeBiY8Jq}w<1hCTyc_CM?dUR0BI~Q@)kdpuiE^v0 zX@J$TZW;Szf_ zwwG;xdA<47$@WPP9P?!H3``L@!Ya{D{pg(S}{r*vdeE5mw@*TdT<)tyl5j=c9gDE(ESn}=05^g=DBZ}k{F>;1-LIb5-wJ`tS zK23f9f~OHj2ET3Do)3V3^s!e7=>FP%i^4&-q+3QT?Y;M04;x`%RtQn9x1pS4i=C!b zSo1uUBw{(tm{F#Am9)0(FKCw>k#vBu@c*Ya`_B~!rZ4kb-uu*T<|%)_6}#-Xzn!%X z4acmuOJwmeooY-1Tda@euR-+BLb7nyT*TSNeTja5YE!!^f(c$sX|rFK#CNixpNR1C zl1gqqXeQrwi=yB^vh-7aW34U|fbL5^01(!P+bQd0rB6`90Fq_`@U->@>-1xK?6(Lx z%iYJ{{pvMOS10|;->LmDBstS}Zgqk=dCnrN(e*G;0`Jzalspev!{(>z(jLCiM#c}9 zoKM?jpt#g-I(KCXIf}jg?n&Tw@ajC=U$alkjrVk!rU6sB6k>+`S;85iTgl(vNqTNYmhpMklmIp{?LL zMpUigjbD}LaO?3paN#*z8UJP(lZ;M8XK^seES-bkVkR%_qg%-=wy1Ej7?l=;>jpk{ zpUF|PebE&1cNvE}pEiE+6`X(t^+1-RBSOd~@q50Rr^xf}A#aD+b-H%haKe&z#}KT% zXAWOeHkdRVL(x(?vyd+C?^A!~BUR^p@k%LuzJzX>$UkIX`*$-0Mul`Gq(LSUzBMyD z2xb=i`65WfMAZGhT@u8*dGw2z#D~H>rM(|vZp)flEp)+mko+JKl!Ph1k{DE}&UPR% zP}wcXD-W&V+_e`E0LYp~RqEopN;er!ldw{_`Et@OcowO1S~q3r^&MGhO8= zStBme0VI?k-Qvk|V6x<;3cUzl1s)i!YlTF-fD?QHlfX5)#Y-<6X1n2p7fOf6mm^25 zBI!Ouy>};{W3Ki!rTcLmUKuBcUS-?C21HvnvwM5bTG|i{Le!ESOJ4LSB7Ic~8QalMA@4fn) zCx#`o-WHhwCnQyTJj}wMwNouRRGH7WhNAJLoVM`FKnn z=WMy2ChwVn)st1W0RC2+#=yJvx*d`sILY z8OjF6MKs}{LtIjEeV=g*dokY&3hf8MgGZq1&7oTWqC{T$JU=aI{D@SQK93ib^_yo{ zD=rCzQQ5c?;#vNi9fq5x@<0o^1;uF4R4Ske<=zh8SlZ59DTm}Q=#e*#prP!Dn24v;BXJ|V}0eHk?JRrtXYlk7e9dbyT7K*Dj55qVA8~#+U2HUTp)`70MNN?4?o|HgBBfJNGtY}mD4)_ zvRG08Uh^O35T&QbQHuafLdxTh`u!f+;^$A&n0Vj$%7V5JQHWtk^{iXFmqlx&G~^Mf zt59GH+0LB{Qjfsp}#V<7@nDQSPQTM$Q< zUeL=Ek3jh_nkt0riPyq^#w$~D4T?u!za3x#J;N9L-8OuIqrecai6c4EiT%m+j{aq` z{~0SIiR|z49h?ZC!vQ0_@LRDmnF-GO^j+$EwYyyI^_0k&V8o9Nmz?bdzTw-Nix+kY z%Qacjl+M$m5iYv%nd3QE5yth&JUOvT#{;K=H(Cfs>vYbci)r%aAhvG^KA04wj98FF zNm~UVA~IC?y#^+>UOs{v?Ry>ZEKl`GVQ8c-7XGBWVrVcQl3nZHZ@SW&d2|69m5$0j z%z<}9T8r`sZ-4Zh`bSZ@cOTim26Pfv=h>LjGU*JFv04lIVTk9JLqDG~z4-bjdhlk% zhERtkKtFkt;&S!cOgHL=*JGoGgms(No;=X+vw>tL>4Ud~?_^L^hahxQw(PupZt!wO zK#({DT1~0=JnGlGfn9C49eV5Ox}p`&kSs_Iy}*G-Wj5H0&m0?wt1n&PVpbUo1@+pk zq8Yp}!_`VPqbKsGapND=4TI$GwGt#iaZSDZ(QNi_;tS+j|5}!PfD02NuU8biAwVKZ z@>7o&+})R$4>Yd#w3(%7f+`FElXL9EVAw_9deAuX<#je1=}nBc&*&{MXOm#NcJd)= z)}Zq}o9}$BMTp5imD@tgsGacDWfC~_%h0R2Wwb6^aiXu)^Ha?~pNlsrwuTv7v=%}&Y}c=O=jDn}3lGu@=KX_) z((AkH^pLSj+y1AYW-5CuG8&sRdu37*i?KJ-G$pb1#|rHs*Up}J z?NSlX=g+T-AQ0;T7^T7S6ROB$WD4Ant+&H04#6*J000_sxZd_OZ)>$4r|&dMCGH!L zssw+fVJYtQVKskCLRLpz@h-xGdWUn*TJL6T(;#=QV$V*37w>3Tw~&7|o-oCne!3r{ z%e~@d!UpYgWs965&v(oOb!gMn>cwjczAfs<-(QvYn6230po+xQDcX8CZm%^XL%yf-M*oRxTD`+GQxWK*YWs8aBSX!6Kdmdvwi_E#BkB!>@!UBR1nRrgA5V zp8wE*%T{i-_w25vMrUnXhs=Q6UTU<^o852kY5ZEc=-q2y#)kmEXUv1OKHZorH`2Sh zpEWmaNr>1dyKktQr>V>k4xy;2?k+yr$DZR%kSR&*T;0Vdf2#XS5~xnO;&v+N1?y$k zm8vCv7)4o}XEfOcpgR1JiB!BH#0N#~KJr!>zT=X7cgZ_Au+=7yeJQz0afvA){#*tb zE6Hfjw?F-(-utr6awC_v^%y&+=8G+26(eylA4zujw!J?tOQ&-1Ry*tFwC{@jFdBKx z=zZ&JtkHK1eL|664&#GAhP$4#O@ek?3*a|HVYIwRO{t4Ks`Chv3}i2rbBp+PxvkAP z%pNy8Mw5odtV7Y?j^>d-7zx>#e1zN3`aGuuIGn9EUS_@j%kJi|e66^zh;#|k@(_dZ zO1@Y0^2Zq>HBds|9hcb8O7$uytA5^~v2*y( z)76%&dO<(*vY~vnaNRPVfc97O7u`It)k^dlUD_;UZ)YS9=}PbY^oyA*=oRbmByckj9@s0U zQ1@dJxJT&l5Fq!&EEQhFaF;3N`0(X|MfgR9KXSR*a4FUj*0d&hTqOJ9^08p;O<;@C zqD*J7?*?j>s^YcV@%o}}idn_MVH#Upgy3|6jGy!96((nAR58CXdY#^GfwecV$pMZ{ z27Ltk5arTp`>!Y2Q^3a8M-`i^cLd;m1tt|{%Xa!TPLW%nga{R`rYY4KI`HSiyp@-I zz8mR5o-*T1p;X~@Dtw(yMP|ecnJo&?G?Wb*L#O9BhsXlXpe(-;eg)a1dc*}^V83Zs zZx1Hy4KNiAu>>;862l_A`H!jC1iEAu0!lGvH-~JGz26CTLKLRxjLwwX8tyE4)@d!_ ztP6fqY_8oup^{57Y<=#k#b)@mw>6y;TMaCkYQPx%TTetwdUiDD%N#tLhW^zwGv^x7 zIY~wb(YUwtWn=1aVh5IZ0=`gis;<{@uXW;FpJW|`rpnUrvKvV9A*`>Mkbc@w(ATM& zi>1>?C1t<)eAmtIp)9*RH5@^oV zvR8DsZ|v!^U9EdI5+Uh-3g1>}3H=omncetVq;jp?Rk4OM6{u!B^I`9qOrOR82Naa1Ca&fl4S?+=~H zJCADp-KPC5y>Q`cTXL};49s}vYxWV|R~iS(Ps@zxb&Q&2-CK6D9LR2B&9W{WJYET^ z-`~tMdUs46!$=p?Z2`Ipzp43%zGuDQVlbQWrNiPEVqS_5cV9o5nBNJ%yzTn#J@c-_H0pf&kC&$&qKo zc@SrjNN{ec5Sk1EOMm|Sru&x+(aJ*0`1^e;z?d_?J%ag4HLkF(Nj?=DSG z7G&+L4v~t?l`+)0JHRpL`dUIO{47{!Th%?U-kjvj!^-8kXO!Zzy4JQ#A|{{rKb@B2 zyqv@QcrJQ=ZIl(ts?9i}Ck0vP3am}1dj4{+=*652g&=t8{ZT} z*-BfpTC^>`#NiRfJ?JjU?FiKQ+I_EMt*4x~?&ud$o~$J%msiF>zKX1Ch&n&#>Z1bu zU9Y{U=HBmFXyB*`t%|<{yB$*nek1Y70Ws zN9lz%;E)Fm9(e0A3CXRTMdhL}=TIA}kFa152C{znKUNgSdk?2%ZEuIuJSfIGm5Pjp zwuqNHX3ZO6Ts^O2Tt?whXzZ&OFqXmNx0-UIl;bR2!X?n!{6_@d)qN58uU`b6RL*j|U1 zl^3uWMg0$=Jo%`p!F%CABEv2sM=SL8JewVm=72l5W&Z1Oyvw(f(Z$d!`zmT4Tbs^x zfR3EbFASyMr+M} zbSKHUClMA7<9(q5Sq*&!J*P5iz<%5KpP`Vk*FUo$ucI*H^+CpjQi4*6BE_Q%cb7Cd z;^kmqgd`1;>Eg!xFk2v*vh0?!AB~oAIHz3KI6HW!3TioKWIkrv2QOg0MbYoQV0p(P zK8o2RS66N2Xfzm65w^zYaXPOyX*LPPHlPIIRQK>b&nO*t@k1?73x@mKRm+#N4{8JN zlQG6jSWRC%>v=)+eSelmruRdp4P;-p2VPXJ9yUTyg@o<(WoRN`D@XJ*8*0#Es23M^ zHhn8N_%hINXC@w99uNPQEQM$Sytoxnm*vh@EpAdhK+&W%Ks2HY_h9%dcqnRih`Z0V zTW0s|N=WbFLWvMne?TM%ncOu|J}b#1=8G;0`e|CN%aj*B6~9x4D-Q(FQyLLF>Xb8y}dJz$iGlp$9#8V;wI@?m#P z0kGHps)x-!7B~lHMi0~a&_z_?6J(Y*TkFGLZnKV41*@NK?>3s&n|H0X?ty<(PI4Of z3gsU5-Jp&c=DaX_?4he?BfpJZPA3t_U|i*@(EA6Qeq?s??MO63)4Jmxh)wF;_4bin zC)ZyKln|Bwpo$<9fQI9`XXzp@bYL~T%HULNBLNM64vSqI)dBmVM|H9bMc{x}R*O%i z1wVG}ejiga4!~reoxT#CG~dzVW+IS}6(tfLLqR%x1%!w6?mk0Yuq#z7=~R1BWKlQL zmh<3Oj+Vs!2^XvMLGn*bHztTPrq?y?7oHa;tjyi#&=9jITc`ia(+KgECakj0>;UUv zvk?3m7qCf)++HIa^Dy$Ps074Xg^^cCr@5!YVI=7EN?c#=N&W{5MUVWbv78dx^UAo; zMH5sxdaGW9ZUqQ%)yx~b)k2d1JA8fZGia?Xob=J$<=x%FYxg+&_ut&pq%2OFcc?einh&P3s;VZOaaAT0wDJRba)xTs$jhy!cl`x=ouKHY zC3I_PJouttL1p*t8G5|6U<(P}_t7DmF834Tld?wo8vIYnnEu{5JV2o?LD^E4z>!x& z#<dY@bxtj z)F!Nymr|(*OT=21Yu5>PaI++&fARik4=*w@LQ~zta~5{dpFoboo=PpDCYE#Re&k$7 zVk*0i*vCwTcATM3R?fQen}?jwOhSO{myGz4-m|{?wKa<<&)x-eDY&QUhm-C{G|!vU z%C0aEhEHV`73_yKWY@xv`sR!i{$F@<0ptk!wRlzg)oo4qdp1X1c{}zIOsGvAb9v3O zIo%MHM9lR*F?HMBbpHhUcSeE6wHg!rS*;vNFD?TS^CS#VhnsF7xv8SY_&k5Vo!Dvb z@{!z?0D(XZY|cbKp@5nTG4K1ne`Xfe3>qOR3>drkjiXH2^uWx_J{MJ>JJh)q%Vbv- z0}R0DiTF!xu^H`t#`9F%oMgW$iUmoFfm5`r!ksK zd?L-6bIif?FZ_{fglbtHAnc3_^}cJFh~)RNQGA)*d2RX{{o|sVC(K&$)Xi@^9*ikq zG5PNwPa^3JqF_ZeHT3aD2+e!j*0Ylzik6Ea_z5|8U&J093Fp6u+M$^!UmSK0UBP5i z%k8Wk*?%2U$zSZ$AQNdT$Ci?{lFCm+L!^&q?-ihmc2`Q11ub>h`BRK-nF@S`CbV`kYNJ}cspnx<(iqathB8`N^&?(&^ zHFU>N!_1sJzyE#ioBQ&-IcJ||@3r^ZYkguyu3Evhy*bpD1iwL_OB{cJ!n$w6%ud$P z)|>C$Wq8Hc#+%fS6Mb>rjr2~E)rN$Xsbe^^KEfa?$Zhimxqj~7XxlX4rPwr36Pyphm5^j-Cv#>k!A@SB-oq;1LE5orgLUrauHmAQ+z+5WN|5y zF|$_G(JXUtB2=9Tb?xprg+$=3xCHZ8@|*7;&vqRkbIt2;v|9elQm#im0!;f=lh1=U znVjiKT6hpfpFw%Azez$WNJJlESJRxzl^WzkYp{O#L3UKh&19a0T=ATPV0ogUvoV#3`IJu5Qv^#ZtZj4#XG(}hl%1HX&Y&EIs- zUyZ8sM_}V*t8D~GVnzLqIVpu*S%tt=k)SEY3B^03dY7`q8btC`ubwQ2=vwTr3LSOY zN}E`>93k=GM-9Rc1OY|iM=_AYzKGbqW4wUu3Ar%3VI5?TrtH3EPb}WBf`_~qTYjr6 zfPBidqOp^IP&{m{u(vTe8d4>OlVW%lw6@)vqFeKOxxcy3DCgZU&2p;QztFQRGWa4g zOPx~2cm9}L?-9oWo{v8{gcI9JBs4#w2Tmj}JLPyRo(w(C4vB{lrwN3l!1`3T2G zB^sxGJZsl|&JxXULf^6QFhxdfs@gL9tUwG^s5qe*q!-1;sXg`KUCS?4?11KX=DZ1x zuotZGheQ#3$upX+B`(ZRd)4_I6NMAMYAjAl?%G`oxZ7VnRXS)0bbsO8ZWoj|AIK}i^8?NBtr}Nhuo}tJU5OW z*a3Ca8EX?(!$d$>UUoS?Mcd&0_|DJA!4qcqzq>E*;Ck!;v6dO?OcAdHAM#4PQN6h? z7^u-(1{p96B9R=9eM7G{efXJn~;@UhyL%zg?l4F zQUkm1=+(Gr3hh^famZeDgq&fPz6JgYYWjlDN>Bzj;z|rwVH@wFu+<1}DlY}6-65su z<&aCxgHn*Ve zAU%XCI2LD-Gqew~+fl9GxKVqomMW2~s9XF_RDqSI*Usk2b=m|Rw|KP!-X0IJt;v*m z&W1mco~R@yk@5=#NByK-;KNJ);un>HwfT8C4Q>J{O_e5-tT;iH#7y}Flm;4~bWWMN zmHxr#GEVaepS`Kb=`4@;pGEyT4)BdXN$3d~{CsbaorgF(pX+1J4{M4-9KXQerB4lw za=XCX35hUQK5GQI=tMb^W~(3tuXcc~-q)H9z(?Xr!(_>Dxcp-GQWOee2qxv>vp9 z*cyo94`{r+EnbC%R|`}8W1y>@{*hn7oQ!ijlTN7Re+7r}_4ZIU1-+=9w8E+6Tx=*psTI+TR~_D`GWRA-6;In z3GDOV!jPW4s(yiKf~Z!=!40yA^bdx> z!Z^p_ZyiY4X^s1>u=>rZ{Gpi|N9(<@hgtZcj3t9^u?ou}cpa<%n~<8Q#AfeItU1e{ z;pE)ind+)85e?$2Vnu4r)JTzp^ef})9ZK_3uA8W-e6sZf?n>C7lF6=+gwhw^m}BEh z)Y%u7+YgyBcdk#>dD||e2A=0LCy-ev5j#oh|7>vm3teSP2|1T?S^n!I3;Em*ZJ4BB z;18Iq?CPKE{`_tyQaRXdwBG7{TPtX|O)==HRMH1Z1#ZT*>nOryt?$0I)w(ot(^gNr z!A#uEl((l77bYY6JU(Q@%74^lLu^XLw&xHa<+n7qhLVtwpZ|SAr;=M3S2&E+d3(k* z&*)Q|Db*$(P3yGTRO4InA%mOOVPo^a8BbsfJqPNDwgcaL8{s=!Be_c6F@TcWvFsGw z`%89N#1fAa(J$p%(8Nav8du_dd5eLVA6b6&uEW;w{&BSi)^U9+aA|(41u-@p*qzVz zMRQ>OEbkw&8>NLEbNuEP`2vdMK7-t>A8OnW5jmuXU5f;FAgo^$Q$^d|`4n6VAtlTH zFXox*7fkgE>d_=oNS$5BK;K>je;T{nwXq6=WlM&rG5;u8dxRslFcyBJuEz0`Bm02Sy8L-=MQ1=>v8-R@ zSwz1h3#@9HD?;UITKB_{mwT&K=UHTjRVjEq(a{GB+OBb`ZC*j8x!y0~-b|Ofkvi7M zB~oA9`5=!mu3NXVq&fBM0ti9X+x6ZOyR z5G%zCkll5NytdIDW)h`0;~R-AJVg7^3af1u-wR)2>;nf~{Js?!Cz3kz^$BdMOTSXz z&3kXHq~35{Y6f}(s!Bzt{%hA_t-ry2=S)Cgng7G*?*_(k$4!P7g%cNi``L3-cWxr5 zLLOPVp$4V@eZwX`}TlDGAi?tqweVM|5g&!==bWi%LhZJUm{Z=cYB^%H3V`+2tT z{paFDIWFcqwlmu7aUuX2sJFf}B;D}FbCO=r4^(R3nCVpjI4j$oGqlSn&33b|wUkJ( z22k|6*R?5cE?<4OD}5?bU(jxGD5Rg0M*P&y&wSyck@tPf&SQ8)5tg6+OcQTYd8cr~ zx`Pi*UDvnauzD)$n(8eKrDJXOE}CeSz*R2nGS)a|(nEYha2zzRGQ2fFr8@<7R;IWH zFX|TN(aDE@8PoXUx~FZKD#j!i93HZuR7 zML+QTWedw4|ET}?ZgCYPM()dv(`SS&){tjt{5(y(t8z*TK&xEw4Sl1Pria|Vig^0d zb%lKr_bIM75&bOua{l8J)Bs23U)OW5h+f%%lZ0HYH~-YW@wtFQxR7^mrYCOQ{huwJ zBgx+X+lhhMwHPS$u~QEM{gLX0;DDi~|8o@)5wW~;YL7PvSc~{=@!0pbqwFCMT8CRZ zJIaxlC8_!?>-F^x(xnJ7uDh3zEIW^)E|>aYZE5mt;zgWW{Ocai6xL|o`;NRcigu|RP3K+MG6M><`7q*>fg&%G!LCJ>A#_GC02@K z6W&+BE-jnpHtufqe;su@=`%29_>^5EdX(4XcMJ#B*h#%VLkBX=AJMgJ*t8z&%Ge^V zU3>=%D2g!3In)*J4+!`Y-kll_DD*4*7ZJ=`GoIqsrpw5({}X$Y1^p*Wy^XkZB_uW? z4evN1OmyU+{Yl{1w9W@BbLU(%Ne7$N??Y1~LS+Jwf z-cAq`@$BB(AsF$uWdp~r(;TgR%kB_`%$>Awi#VK8Ox>-?Me=2ue#Kimp(?O<;k2NeCxC&eJ(ljEPA5K&zLLav*{?qU7i`u1sV0C$g{P=^F zPJIAi0@eVBW9`rjsfzP4Qjh9N%MO+$iX*N@d{jBJtGfN*7%(sAoljnWQpBaJ!Tn(` z4atAY?R93|D&-~5yE&KSI#jd&D*3lrb4mPtjimcm!MsYJxXAA_ReKR$kNE1q{y7A^ z#aq6`21W;dbXv{z{&9P-?K6t;cGyBl$Z;T|0(v6BR9c(C2970Zlq&%r8dnEvH-yKh z*S>(3AD9fmRZ{~dLYzSH#a1lHVyKr_x*r+m&QLu*XXF z7Oav5?@QDC*Qs+h>XbD#K~lJP%CG*+I=lgfcxvwW?MPKt#~=utGn4 z@bd`bZWPmFO>+Nn17*DcIWL`uJAWa;+~IE{XE9(QP9gSS5?4q3r?^-vtM%T66ByaF zlz8r!ooe=l-_lquhdP?ZJnGwl**p#Aeg=BM+=(uh7(|*2Og+E|is{5%IFuFUC};I3 z%hZND|Mv%zE9USa!iFs5J$TPxu>jIF10A@Og5L793$ z;asPmT@mA)=N{FSBOxaoYO;l|WBiKQIrK{6<-X%=cP~wn`YCl=B}cey#QYv<5FE*G z{$YV*J`LcCB4U?Z*HvgV0aLFHA%9iBT6=jTdNp*sY<&(ARA)w5vikpSzJJnIolYx& z)_&r1lF3Na5xE6kFo!QrRFD&9N%b_iJC!s&DL}1gNYo`(W*?-mY{^W+_(JQ#pHWxk ziyViuo%+Q`cyZpzyNet?&+8Rn`4y`QNd-hFD5lSH< z;UJ7d=Vn$YEfp=16P6Hh#c1)eEmE7(*m+VF2#Es&8|?2jp*;>`is_Ph8_0)LF{J0F z@)`=dM^6^+mtR(|`hBY7?)+i@%L%K6$@;q!^_O#VMIg?v2k313W%{%?RAgLuAEgl3 z(g~LJ%U#_*zBQ0~K9hqtS}_SQVuEk2nO>dvqsQN`?ICXb{oY=9a|iysn88TSgKkZ% zJk=U8&(n?GaKLrtTTEEX7i^BN=@;hDLKIsZLvBRKiksmAFIjM=jzig<3I{Tt@!o%9 zUsnvt5}ZC~S-5+XrZ8_)@xV3_rMYuCuZt8MRvT4dcc`FX??uj4J{yduZI2eSl=)qm zZ?cORg`90#_>UliUC(lZ`JemTUZ{=wJ93dn5i`Vx&@*(^YqgOR@*FPx7$YIx5m+ts zBHTYmK>UO&f?chyI~d;xE3j^Jy!jJ8ZmK+;f2aMixs4%vMKVBoB%c8!ZevYvYzb}~ zp&wBXXv?2|4Wa+kjUPhYGK^9^?m68E#Q>s$bT`J_UyE@{j3P$D@+1AH)b0_Yr!X_n z+n}iC=nIL$2QUX1df~?KA8Y~1xRh% zCk`3Tk`@z$dV2Vs<^L}IvLm^cgN8$8P;S+jm_?JD{eyN4P04l-*#@*!gOSI4_a8xg zsGTs3!kwKY6HamtZKBk4RJa1+6s{TXhgFtR8Rw2Lj3L2QZEKsYxY?4a$QNULhyfUH zR@;5sek3Y4JJ1|x08lv|-{k&;eVEzTnWi+;#;vLzyTWg-p!u~?rWV6|uoU2co(Qc; zp2K~Vo|Js>A`zpT^^-epfTZb%$7>v*A*uJ>4M8X3)+CR z@M8AJe8XMZIF3g?wLL^U1FUeLPhp!8yy23;C%-kwX0Bb@g2I;RwvJKxhj%wK5Baup zX_s$CD_;b~+&e*NJ_)446}L&<%h_Qaa~8PX1!5Nu;b1On{^Q7Q&oP`4Azh2t4TRV65+p_4S0#WaSvXpJ)5YL@OM8q(8R74}Ppj3oWY$7J8&We$K`YB+#*SUkj2fDvk z&uIQE!{SZuzFH7imwbtH;HYnmrvz!Mg}0BBf80N`rhD9a@zJ2v{yDjdKj(L5<$eKt zah`Zjo&0`WH$P;pp6uK8Ht&Cw*|dTiB;9?tPg$^$x~^T5qCHjN zyra+$i_?9h^&Z~D_GvidUVdyn;X2e58+gkj16bFu7bqUa>UlbN$FtgyU64=+lz=2`v6&F--h@u*&_D>^V z!*!S{qqQATb3Er$x!Px&z1#P|@M5{b;m55&+XuybqZ;-*MAG&ydz@6kq*F8-M@m>^ zu-G+G^k?6R6aANF5j4S4xW7S!ln4$orc;`DTB#ju;PP0*0qs=Q0C9n3^>hEW>cJl_j+~4`4qgimFKnUR*Na;1ab7;&994vXWbjv{ml|Ga4313an>ZwNxwyxA8k%cX+deyfbQ zbr0Y=NzzOcAaaz&nm7Dd6MkBp2($(>6dxdZO(enN0u}?TakO#il zT2BYA7uUSKOlPuZ#sBs+^fY~aMl*s~;AK)~)5cA{orBh!4#V{C$p%wXfneB4_s(U& zlozsp z7t6p1hDmF|yp=i^=$2CISDA%5&8Tc6QsDuoBF}`Z;I{^<}5n{1CA3y&v#61Q6m?-Qui{RY44FE8 zfivDUcl-=@{oy@REgV`tf85%y6JTR(-M&Ry?l@5B(Vs*{g6*JYB44>3a_OAeZir=} zx`Eec8osxxW6^`uXwbeGAM25NxO@O{?LgFsY!?BIh2xb?H;fefxJ(kBZ!#tDDUHgn zdBIOrJ?CR-CGs-$H2yc7)lGEz8?`$=8%2<+F7#iH#EIViF9bVdRvhALY_ONb5Kfj<#nA1clz-C=Kl(dX*33MGWNn5kNK83MCGB0u}kR`C}0MC@v zwzyCh|MqsQibg`Qxg&TQ)Hoon_ z_Y3Sf;N}?z`L2@=byXjMuSgPbm)MjR!ISRZ67zZMlfRO0E<8(&{`I^%l|r$4qv|(lJYa9BR>`9Pa$eu)jo$+}{O>Hxc0GO-MtXzj znZ9#$=a*z}{X9(f7|V0C4-;oCk9X@SRhK}3qwmm3+&~lih282fc1vE*kN$R;U3;z` z3JsCQkJoP_{+J8|lH&zMS)?77DHhXy(3z7uO8FGNQaD*I0|O1mKh$+j-~CE4VJZ8d zELK7;pP+zw&N;<0&+OUhRX}(=YjJg_Ej3f2(Cuo4i{}F!Ymsg;pp#O7BB2F#&V{8% zkXAOXWc?r?IicHq+WTWIz)YABMqInQ>}2{hSK@8+-}(c@EBAU12HdqFWc$?X$>MD; zo^U;4CsHkyiksbvG@TBu&3QuaPjCdh{@gq?AEXnE_i}F+a^T69OVy7E!%8;4>@?4g zT`3*u@jLqIjkimv`dQ*RD)?7i6?g^jRbd(iqsAfVyE~oVx6kzDxxV z&##E2&l1Wfw4QGkHMm|=@-F|I-h}KDW}?0^ zOl~YvXu$)*pjDO&}A9vec*GkB+t1{^9~o5MD2Gl^Nj=ZPIKFT3YvYCW8!_qnLo^kd(iInU*DBAIZWwZTcZ*7lb4S6W4=SL>c&VkQ}BKptbKm1k8-z* zv+x97YH6T!c8EjaFXqZOV>m~Wx5s7*Q)|1^aFZJRV$98HT7V{dvm} za9$}TR;nWZtK%^ju&}p+D5E}RdUGIjdt>=@*VJi`N>1}n5RKD=KWNy=Oy7MhM)kaN zfAgQ$SlG;uN)9cGc6d2qus$gquRgE%s?IplVR0EX@G1K_8(we zeEky9Fz`>c0qX58N`KrfdOU2p8Wpcvu?TFQzB3^2{x?=N+@d=A8W3X5tDV_|l#A{K zwCaOx?68L46wwPCfZcUOfwrhrq6wpsU^6EEU z@cKqF`VPvzje#xqst88qtVSu+BK)yeC};CX;0hxOLDxIZE8jdQ6C37~=4q#Pr#w^v zdoYoZJZ3+63%I8--aD_pWBEn~7!)(6-n<`>-Oh9la(l`u&F6#oS%07x2u;o4BATip z{}>iYd;RpLa!mbS5pdlUQ18t>YIoMg=9nn}ae+5$jGe3pVbVZ!1qkl%!c$AJr|DI{ zwniQdhn-g@F%pJTrc2B+zfZ-vo2TodbrIKZf|Fz&`B6f+vasLr&QZ%5R$G-fAfb3m z31zF$%a60a!p1RVoPHD^pKBFaZ)E#87fs2H29j&&miTbQJ=KgPoqdL`p>a$NKNv`? z>!o(yBdUYnKr17?jRL;dKkoQ$P)I<4A{2Hu4?D>b@Tj{+?9MxD|9#9PhIVA>HbpAt z{uO0vD8Dd!StSI>`|TH=zGE$foKF~b>hrR)iqC5ju#ONT8+Lfy_B>|xuw?Hr8yc2L z9qW*9H&?$Suh_qcoJbH!R#Nmqfl>J;c9KonCIZ#glLx@U8C+!HyH8ES{J%5@@D3>n zlWok~>fiE6l)PHXIl)~_q3}72k@ck%wpjF|HJQgT;O6ym3vRipvn<&Ptjn~{6$Uvo zx^aecoPXud#5gds6=TRWc8KfX!?1UJvn7feg3b&)(~n396!n&d50XZ2X)Je1>dPe) z-~88@&ZcFr~FKej_68e>Zj*l*g5Hh(VwtSKhwk2oXp+s$j61PO_w)} zKdU+ux}Qh-rRk*%k}@T<%<0o}Qi;&(hY^ODurUmjoWIz z6`?X|k(+%!_Sm|xlWEk7T*bRbPUc70N(0-<40g2koC+ijBWb}S3~1vLlJOoxIhSVt zTyl8waQibaU2$4B#=FerCXTOkPtt->nTh8)9tG#4e|W=}&z>(5WGb9I!d_Vdul*FQ zKM&XMX*-0^ww=q(XZr!CAzzr5NNQ`LFmp3OxUh0cE?{{@E?(ih8s{;-II0alTGjgd zex*@*!91QYh!~Uy-0b>$sS}}hAZ)mNx_|(=UNz}(YYDW;5H#zQnpwi~Ygo=eKd|+F z)D(B-SFz#Jkxb&u>AKdpNZx{JH${EB+Cm@-x4x!*s4mfFMVCG=dO3D_9MV)90~cC7 zqQh{oZ{!NX$^T|?7ZXf)T&3+zwH}C}uk+nXnxH|qCPm$(;thH(6-SVB_ihII{=nfy zQ}G$*_a#Cju;ATV*5)vUw%=#sygy$Qf{QYH+Hm%w5A_!&M8n>`IufJcs(&~p(f)&` zah&EW_qanp$Fd*|@*;pv18D~23pJeP0B&0eZ+M=`6tB=QpaLMfkvQa|Z)pKmN zX*{#OYjt+spRZsv;+^on5QML>(@rt@N^{?h-SZqlC+(GNv59d}LGI zq7ENk4s&35zX_5n0{on07dzCMY2OZ@Nptbt7L2INz5BeCO0{7kd9A1hO_%#3q|wH^ z-=7H?`!f^&6*1wfz@0uPf&hD9dJ${wP^h;cR+8@rVViQ{6@-E|Twzjcy7bOLY3Bs2 zw`1}3nffWhd~{wRX$?b0Eg!1APh~y(8uu02jt@rM5OVb5G^_885%z})1d?FwAHIOJ zBdDBK`*O(qX93{s8R|=j#ao66b4(|9W^U}V#2%QP zE1zcU`&%JxhK$2rq^Ad;gBGroQ8d0%1AUE;dB?EGWwnJ>n`59X7bYLLNff!^IpM;A zBzltlu!^4@-`18&5Qy4ALbyG--}WSF5!Fo@CfR4)=Z)=tqu%<{qLD&1`PB}OiY4mJ zG<}i2Y<`SLg3~T6PM?$o=g=8GZ<|27K*&mGi=(Hbi?6+3#oMcJsYEJDo4@`r<`tpg zUq#EDINe*eW~DZJGSLIOn)uP32#XuGqAu80wqDOy(q5%M28CAP+Lz*&+!TQcFG~Qb zt+8W@0T_F(KW}$cuc&fwS{2_H`aQ_G&XW)K@J_CD67#0JvG3sum@X}6|8asgC|Y-f z#uU@bjV@xrQ$ngZDDO>Z0ycjx^S54I5xM_Ck5q{)=Zi`Nnq0RZTNZ&I_huBMUVmQ+ zPXxE5_ecCTK057iL0k&7Hh=y=_vP{?R%_^FKY~NcnxQ!-ye;Z&PleN(zowd?9RH)Z^1wl_;F3knF?suvFhJfbvghpMrLpU~Q((NA z70w#&arP6r!T8`X*g8(YM%84asz189rm}IbJ>g*7y^|0Z*1hte#J5(1CCjUWVxYdc z5~dies@=}BplY_@J2~xZr&H)Z8i9!XU#+ni%U51j#$5DpV!M zqXR>4K~0=}X9W$p^b8=!_YTRCmO$alP^I&gq>rMDMW+dc-GqfJ;rI=a83ju8$WvcS3I9Hw!Hg^LMa=}Gb&2~>XcXaljZsanEnKiFDv`~$RPT^dRA zLOyRM@)Ti014U>Y^A~|aV`3GQuUm1Y+G!bn+P|Vzz-|2ULHG>ybcsO_UtU_-OB_p5!%A)J;jk2tJQp*c#w;=Anub#>>^X>P2tCZz#xq>2uFf*VQ zN#+j+>~F-M)ID~XQ?ej0OO0N>tu+3QO6+W5dKr@Ll?B-2K=ix{;~$&neix2#;uWS?nve*rs5_Q z&Ysg88f8BWJ(~J??T67Vh?2TVrH-OGin~1S4A|zaOjK`&r_h|KoMa&bcRadY<{bg0q=4xDnaIYkFj!&$?v(D9o)D zuh(+)F3c(n(}!_DV#b26E9>oFASjf!vFAVeuVvUE_pg4U>N?YZu$}*IZRig<22+eIs)*Sn&P*k3;F7fy1k17M)~Y`#hezUPYN=?)6JbCo>+=mS(jG6iKkk z)@AO171b$dOLUviWB5%t(`E&Cy%^Z)(FvoTQ16$UVn02>1Y_QtN7O4aXg0eLy`osIm9Y0PMlf`nx+#Kr85jicLtOx@7JRO5UEC&i9Bve+?s(#7U{_e_M*RRM z;Qtr+H!GhgT(TZ9yWO%@hq`97_QAwq&}`oFFLA!J&hNg>Fdy9;llmSJtrqz-@W{;X z3K68$y0s+h@fe$sEg1sdCPTc8HkZ;6zWYO>9r$(`I23I}mkxvOKPHP-d$%4o_LG+` zfY}aB7%|vgVj%U^<^L)drIg@_zRHCBwW664#umdtnR_KWPudK?%RmfPdqz>|zx#)k zn~BaBKRp2WQkd4_8PT+Ye>k zZX7(psV}YXh(9GAOTERP_|O_BT4jAA-vRKXME3bA_VwdPQs5%1c=wufTaFJ{H_QZR zp8XoWegN%N4^|bl!+FkfkHpX68_UnnbXsLMsSWCV-f?b6l@H&*rud{9qz8sB(v!Blx;x zd@@<|3g*bXRoactAg_4Hv1}@g%%59B?KxTU6U02jjeqcM<8@P21ojHI5Q$VHi0En| zJ4GoKocyiIDhtloi#pf}7ns@Ndg3II@9=OMcE{qHUGztBT_wN#5w}G$L0?k7HcI>eU$F(3Ez%-^IsG5_Ve=ePq@Lwr? zpX(#tGJSWXbX2zg=CYg^&JV$*pD^=)e`hx+;%dNdS4aPB+FBYM`y_lDG~+0AqS`JP zA=IXWjMiCIiqyh-_%;z{`op1Jfx2~gtK|`qlxq(=n&V*ptc|z6Z^N{{O$bw8?~p6> zQEhV@AL#!o;j9L;ytqlS&O=DEq}10q9hd) z0#HI|#2iNM6(cU+h!aUbPnpsOt>m`%ht5trF;u$lcP%zazF$u~bMIir+D6bT%V|cZ ze_iqJ3LA`-VSWaPj?NEE?J4A8u577u|!K_y>i;g!0&Q^GowTSJ#=O8=$YM4L{pdhfPs|matq|nAM zFSME27&}g4Rs0@_qmPm)bt+%984ic})9k_0=T2kY|8YP|pfnn5+MpIGd4(wT>R)&i z%Fb}(C`9eoRtT54@2j6pSB}H-VDT$gGlBP!3)UfVQ(03iK`y_fjp;A`yU|sk9L^w{ zA;tXU5WZ75oYE9ZX=_egLhLVnbiUtElF(#8_LZ2DVU&gpO5=!%xP1V)29;#Yv5B)YKHVD0Wzu6T7f-U? z^3L^~0ph*#Z{NK#JRxQg0N1I%nzo)7jA7hr(v4z_fe8B2idHVFE zulxdMRL}M?lhP4Bz`L?`pRVRGoj21oV_cYktz6(qkkL`zCfIO2;Gn9f^LPsxq7J|P;i!PB1;CC_Dd z1=wZ8M$n_U%w`_Ajx9}N5JCG${sioiW;q{29Tjc)s=Lf~H4-knopjF6?2EddtXqCj z{sy)qkk4;CJ+~_VZ4+~SXZEfCzm5bqsV@z`hL_WK_OAf75w{JRZ+^v`899qVX7~qq zj9g_0mXkPxMWctQXw4fgZo$n!EGkp4 zum8o)qsJ!`th(!c{4#P$tJV)Zl@kN3!6|kJlfkavjjzjx(8$pA-P7(Dge*6{1@H4u zZ`;`y7flm%Q3}I6Mod}v(V8Vl?e4bG)AT37#DbZibF}84I}^y zrw1YXH8`nN`v5r+14VUQDN|Lcl7v%6@3^`#-O3*)_3LH;6CZlTY=)tEd=_66BnkEZJhV`|?NrysK736B_vqw_PbJBpZlUawX{xz|ZHLZcUta&e+U3+$>ESTj}^fJ_nld()9 zBDPWnym{BNuZKJ6Y{jt5{Iqe9j+fb_HH-}nl!2D$zPz9wX}fovbC;hHZ0PQCau`KV zJq?Cwc1hV5f9hlDjvq!w&-ETB$0js#5?&Alj$41pRDNq&uKG=R7P# z$D;Me<*3;Y{$;NBW+o9fja<52Td`uwNd@=1-)J{EGHl;J>g{xZGi}!|AZH0Wux8x7 z5he~UbRnFm7Hb~0LI8or;Q@fo7f~v;HL*sVfP(YA8%QD;#mDoos4~1w_w+45cUy_wz3RHf4KHpUsV+TY z-ss$1dX`&f_m%1_jK)F;Qe;yD{qV72V*5jj>z*RW`-MU06H0H_$y$rfMTJY!)~6Bg zvUHh+eGzM7M{57HKPWj4!zxRk-q)#(O%(0lx)9&x0_C5jyvmys!+Ga?zUW;V0IHE({JYXD|-JH5R+PC2B7;m1pF1#=cv1hRvcZlWbBnyw>qja@*W z*fK>rLkwL8jq#zS$KVYeW8J{#FgDy{pyWezLk{)e6dsCBkS(RH=2gkA+Jox{I z>TNY}c6)R``wLNLn%WZjuRuZ+rxwAfR?o|j!@o=uHI~kpDHeLYNyhiZib1< z@F$gTX)M3!{w!98UM@YI(8&PABMPEL(y9$$5m`Rr54ot#o`D78kK6#QK+3?DVUNh) zOXj-E4oR)WH&^RwJ*`J3f$AuPZP>Qz(pXUL#rJafrrr(Xw;c7Jq0hnmjbq!vCIOEe zawiyX%I7WO3>n$X9dOMDbdOR?i70~?wk5vzAbDm(u%?6vu5ij%e(oek1rO`jDm||s z`DXoEt1SC-^r@+e5u3R&-UbfYatW9n`*!w(4A(g`b@Gr1CxfH+XWnwU@hU1$?3*Jl zU_VAt+)55LH+akrF|ELomNso+t=0gl_YKG?J`v(?VOdx5jzfgz`PIjj2AHb!6Vq7rr>KL5DE>wVBeU4>)6))cK> z3yFRT>rc2}mBvU>=Jto!Clc>04R$dLtwGU-@@-B~` zJs|=2@)-`1`i`wBFJ_SC&d3@0s0XLD1*Oi)q0Oj&2w%$@ad3lzHcuRxMV+eD!-OeD(p?2BOXOfV+q-geB%dXps zU&`)LSBiM(OYnZzJ0rYno&jli=3==M=J7P4jtYg+xP5#Er^K!R`?*vNCe@c*zCSI( z*N>hp>3`~Lpo>+a^8F9uabCE#1zIj;ggP-D;=LD(AdME6qaj!BUEk7wO{tS#V3ot- zqU{zp$@ovSTpL~d)92Kgp5Al+YRKvEwwf1j;}I79#YjA4WAL{=2Bw+tFBiaqBgCu& z4WvwuUiAEntNLBGW~HmU1k_>jH#M3X|M1MRJ$xmruQSZbUV05J1qDzjF;Gr;eIJJn zK5@PJlLGy2pHa_GT-y&ghiRIcAN8@M zabw~rHuOQlODlXZ%Rj5-4nx^KeFII}p6OZlx8orV^F^?)v39CKz2c0US=2B#WkU;Y zhANiwF9_w_`%P5A;zy*o3P1IKRyVU!%I-G0+CbD<#+mN7y|?+JP4BvD?Ej7_G3!|z z!$!W{`Oa|6ekP6t(AT-uZN1!V548UdylzJs+KU%uQ~%egUIdxA2KS?uq$&`)rofkpu*_nfoONb$&|CAlxy zzHFtwUviql34&wl{2uzmP)lfPZo*0vRyFt~)iIB`0CdWCP-sQFeA1d?U*9Y8zRy}U z6()^=cgI5F-Lxz*rgBd)q_~9;hpbHY`$fTL9ekXky`>x$B)A=P?`|J_`f7o(T?ebf z&q^b0#9G~rRP;-|2mO)*MHqvIx{&nvw@iYQ5{l^ECSfHl`y`Az41zhujJYR_A#y)2 zF`wORY87P0vU2|@pTm+iFl?RDO(DP0cMn>ktK-l-L!MD2y+m-FH2sVKBbt$ zaH4;m7TA2fnp;jZ97OB4OS1G)vQaw_;mWrwT3Y{s~kZA%3H=Fu^GC(gdl&sx;E5ECmF=3Jm{Jpp-%r6E7VUwssh zIY=m2=W!D-Z2jwB(d_Hc{-e5vyyFG8q%&ETm>46-X=LE&q4D+h+3DyY2O&dQJG8ys$+Y_Jk@c7#`K5MiH{WaAhi z$Wx*ERZy2q6sYUPkh_g=aCQQ&>%nlklrKsnk|uZr`TQv>PNQnrD2vQReC8VWeD4i2&i4h_wF-lNsN=rz0j2>NM!1BEN z{onWfvYijxInQ&>dCs}->%Q*mV)DG-MMTWZEkpGwkh}s_w!bDH&j?hS`TWN*gO1|0 zr5k5eUxRc{-rQbC^<>CA%odESnHS+891tOAotFbkN2BY%I;-AQtf&)uDU5)&hbz7@Ua2{E}4di*DZ`k@3#So-CdBEd5zeG&KdS)l1Lnzdsa|1v`5i8yE5;UCU`*)m=( z-cjgq<}tg6R*N2V^t;1YSNV_QCqmY5caI@%_o<@g*T5sOT4f3$j|ko^MO;UV#GxZ2 zweZLquB9Oc?>}cUamDh(U0k=D-`)}eZt=DY-09eb&3HrvTAd;77l(IH&vCUdW~rd7 z$8WL%MqXR!^RiUdXND>{DMvH)L4}f!*PaZ?9q(TcaluD&eD>m1k07s6D@FH$9Y5rr zoC{wFGZ}i7!*n&1oZ|nKRLV@T?QWU+$jIsW^5E4u^Dig%WiWqwXXzG<&5^jtBd~w+ zhhgSVX<(G942SsQX6g`yk9h)Z-0UKV9aTM?6>wqC-%Y_|RtpOEemm+?2|EA%Z=?tX zcGj``Cq!vd&F*Kndb^&CyyZ4XpK`(q?}zK`DZthWQb%<%bMd-(58S*1I>2ac+&*jF zaI^u=Gbl9H=@s36h`G*?NOq92=eJj@wS6h!HR<6j?ex`w9Fr~G3J`S2Jroz=ZEmAk{<74lueQ}L&B;twYNKXNG57F#3}S6!iyxL>{lw*46zIe)$TE9c3p z7#}(kp%&Oih2;W^&~jf;49S@sjQquPN}juQ|V=5%Ci$@bifafp9+OOQdKcj>O+Ph`dQMK5bY7M*VFHVAUF|i{LW^I{%$^>?h z2!OPOr`<4JXVp|NzqXfu*X!vgR$8IQOH{NXVundhkxiar1W(#}5m6yOt%j_EOxiDX zADQnV;EHzFQh&E?LcRZW6%9g-b{sTY00CRy?^Hxvtzx+q^g}MDcH8}=8412#aBZDK+dLMT~T=!eChq*72!J+IW5^e z%6Yj3w1%xjmOS2euPfaE)Sdyc+6TZA1IL&+a4uIZq4pNZ6&Hlu0J%T*sX;)c9!^{@ zKmehoD!;?{MdHo%)=;CD@m~Gzmpy$`5e4NFuh%L zITEcJNx~Uj{baRBvKD<}5&f=c1DSbnbPr4-9t;7518{LDFveh^@Q zt9M0`t!(c4#vfIj zwp^m%ut6Z6!$O?e?)~vGIpFY*!X*E)*wF`G>z~Ik#tdRh^~5{Y1SNVw*pDZhgz(H` z$R4pHTBEX_xvj39>V*6fd7CL<5!eozN28b?CQ|cLwNTnI z|8tZ0e!$V$?4c-n7uAOcZ-41HVSd(=@0VuybY}k}gxE4YR71fzjA4$4ZG{+WqJhLX;(NJJ=rLZOk?ziahj)V9Aa_~i{d+A6=C z{UhJM!;j!E(13MRXjnX)Pu^6N61Lkq=k>akLL029XUrP^Qn=w}_D9EKeeeR&$Xz=! zjK!rfs!Ak1bR&+%OOChtn~79mCRNbR&~a1GUoE#_1)%=oaL)&FM)k=MW_4xU7xh~i zQPF+(ISgjAc2S$;r3qp%SjnFPSG;t{rz=-W?dvchBJeKQXM6Ymra1>MzB#$;$G(m{ z|NLqav+Pqf>lpeHbfzkap_HU+_DDls4v&XBc)5}THgb2$-cHBhX<9Y-lFrFZS@%SD~59}w0_i9_|?vpB~an!SIg6Ub^GQ}T*<|D8m&M(hx zJwJpAFe7!Ee8=Q*H@o=oMVN(VzrTn+sZq$U4r$$$%(IY={xsyVC~6D@e+liHR0G&J zMBch=z<&uv=0)eUcE*5o83`Aoau+F9iJ_!9eDAN9KCe6wKyG;?iHIWXz^#AxF^I8i z#R?t&yl%GWcl}vLp6{Ak%GjL?93oNmQ7qK_=)Zn*^Z^;^jvH-~{rx8a_e6viHcXid zEpxlxF|f=I7+BHO33N1(&Un)drgxEOu_Jekcn%92@8X>TP0Ewe?6We}<|(|1o*}rJ zhsT$t7S%Btl04H@PMm((g}zLo{7BYsYfH}RP3M9e-fWg;1MW?4fOAQndzWK0M{j1IF?>he>Av)y&@<;&Ks?MrOV2M(`mCUr60ULg|%H2CWp$!L*>b z*3;Lz&IYCxvoA*-AR@7GiNNUb*V*EHlro~u^)Ltr*Z2E$W8cJ zLS5wl##Wt@0h$Lb|iNra4t`6Tku)A4y!>a8bB~2QKHbQi?7;xBjXs<+ZROi>pyr3vDy!;=5dyZWmX4kA8udLExP;1r#<`) zPwZU4*TDo$?WI`!w-}aM6*U|=c&83A6FrX>w>laHo@??H@N1p~g&dRMOT=JksH6ov zY#z5AT4mjGeD62IgWc7z$N*6e%cfXuB~89N3dMNHF(+aClHx-OCqgdc>EZ<-y)mJ! zNR=D%W3>O9sWyo zg}B-x8fgzJ{gJ$*4+gBJpoX)tM~&9rPwt8fXUSeiI=Awzb2VwRAmtaeAy2eXk5}ecc453*0=-+GjCM8 zINnt_cjwD7KV31gE!u-YwFTTVYxwVxD||KSjsp68b5zEoWp41AfRC+O!_BUow3})F zco~VBVy*yL7sv(Pmi5q?Kv{fjQ;cK(PW1v3m-HQqARO=&z#*N}KcJh%6UfGO53 zMts2Pr3xqG)yTuZ*Y|`a{U$UF$<@a#ySG}N3u<<%jgHan`V5>*+0KeyD`*%|3gyS% z)9C3Y(IqlqGU*hc>p3o1Gzrp8L1FJ)Zb>`7Gc@K_u^K%2@vf*UJT9 zTTHAk{}!&mp}2}J!6tnQ0cDd+fcms?_1i7o#o4h5ARa*`p}zG`P;Sz`h6}{iRu$#O z8HY#Jwa24RXBySclb`EE7LS01y{%4lEq1@Rw2>XGS>s4xX&>#4CNL9=)xqaCh= zHoUVRGU8kbod22B2m8RD#GowTeo&{T-f_QEZ}K(wA7(~#n}&0qxKdQ)fU;exLfg>cTZg)+Rv@EX4X`w~l=b7?g+ZU+ zNYt87Fy(pQ=hJ`s{n~_T@g^EvG>U*W%vwZwUTWywq#5s9X)@~dg%68izPl4|-Jf!( z8hNb$WcX?Gi*Y}q!nf&9Q?k?fTZh7KCtoXvklJ%aomVa1`8=eg@*8>8;)`w42KW9> z%*$wvyK`W1y4Ltr&~|u_s%CkXOB9Y9BV1ACGH5mggs!KkA)fyhU_}L9rOYVj1gF+f z*ZKX<_-18w%Nga$K#jH`(l2McBnfc@0-xq`XbQ}-NK_CG>hbXjLrD-)X3#lU9YQwOJ0drf^tZRQL74Xrr+xXmHnIC z?zLaN$>odo(o>qrMyG*z9OP`+d!sHrRO(yKvDKdIMwS##0n!58=&_hE-#H59KV!Wq zT68~s2emt-b`Xs9;KzrYQ&cd@jk_s?t$c>qxGqN}1h7G+s?iV%Tb@Cy0S`E0le$WW zz^mc0EFKBWE{Q4BlOSOCDxcS|h29dKL@Mi_(budET=HFWx}3EYRNQR`VZc#JockI1 z3^zr0f<*!YfQ&V1MY-W8OTC6=Rrm0#Ex zw@Y2QnQGI%(m-jU1%P1S(j}9ZB?SQ6;)?g0y-Qq_U z8cO^4YLpoQ8$@FsypxgX%K!AO`wP(N4&F&sfIHcIml_JEgkH~S%b2<^vQ#2~Ffw{V zs7DBK%fiT5^yosxCE=W(RuEWyg{1-sKXrX5jD(h9)_zDqJ8V5F7OiVYM=%);B7PMN z3;Y!(d24!VT~d?JKXm%Q7GY6buW0F|Nq1H8 z$!Ku(TzC5&*lw1bdCBg0Pk?GxMB(o>8qR^0a8f9hfvvUR7+scr`m)5!%rHtysz!;v z)#x-8=wx(qhsP8cCyD-76O{^?OzsN4lV36nU4pyd%;76KqI@AdgfC@}&T=Dd6lXp;xd&aj9x)azAp5OD{CLW5`v z+sG!glk>|he(_V3dm+sc@&GuPLWYrc{`)||VNg7qKR@}TznqsAceCy^ibGe|>i&t- zj9k7`>WAA8EWe%9>Dmuz8-H?+V* z3Qudfz*`QZymK|* z4|~9OE!R%)8GQM5qES??moN=-DbX~F!(mgPa=$l>6=~mi3s&nq^a>5Z{u$VW4kFu^ zs*V<+nLZi>qQO-~(e35U9f*C$1H`%zCdub2;lBhETA{WZuBlQv<^H75cGTLZ2Q+Rv zcLZ6t`w0P9TV>B=UvF;0pufIG#~PWEO4@=HU5^^@r`YKsXaXff@>SYC8gaQuu%7)n zKcTd8R1X1I?j&T!knkW^CvHBVyQnh5_*;n7=S=~o*sts~slWZ)tUZ%m8#(n_qQLPt zxQ&?wjoe98lkkG@WO>n>_2Ry-zND2BWo{J|ReW24HdwzkUA@<7Q4FMf6Teyl*tTWL znNa}BgpeM^dOT|Fr@!oqt$c{C>Bz8M^WYKoIIi(fS4N9^R%6rcnP7EgKXi7n;K!|@ zk*j%7Y3OadQBJPMLjz#qP28LKMwWX_OM?Hr(pT5nVbv9&5|EviYGg^PqRiF+*v)0w zs?QV%0tm#$al~ZIIO~pyLEjYT5eGS%jdxmGHPW&56pI=H!blyF_0HoDzzH+Y|B0?2 zOab+6=@fy~^V1!OY!Z->yp7`t^u4$l->$9L z6LmBqZJ^RC?)HlcQDy0+?%5h@p8h(w@g#$m#_{@%6qWvXzVSQ`Sre@r!@c&;W0Nlj zKZWp$GW-27v;&-l1W30Yf|<+d=g*z8)QZT^y} z60jJiq%Y?1kiIkz_y;z;;Zv-cYN0vZpCa`jx$y2X8v_r;c6%O3gC>7z@(8p|a-Ybc3vN=fPodJ9YxQ^F z&ingO#Ey20*Yx`dJE$4Mo%9k>+@Rua0@-IURto*)KooaC@{iMDt)AxVt7;>=RZf0R zInNdC>2-Lbs`<~CiD@bXo9UexBF3M_s^?tmj>#%*rV}C1@YR#c-##FJ--TAMO2b;+ zdKf0}?TuM)>tC!l5N3+Kb^5VKsRE{mc|vD7tN!^)BDsW{4S$43cryflYd%92RV`~U zIk08*Q$!~m4&|?_cW!xJdHDU&N%igbePfvwD-TmyOVSt%Lky z)?Y3=b25XsNgTh^--}I?K%JD;jbz2JU!Rp7zP1+q7(zxDH!MC`$AixpOQRxSD#nbu zr<7O#Q`R)`D1~w7o?uNe9AM*#i{i7oBqYT)A4aNEieJ`qG_6pZuupBZcuqgLIr5%E z(1E#ZVHENLktUF$t7Cby`QG9bk|v32Tx=sr=aIZj%Z)fb60va@i$S@(ZbCrOEl2g9 zdMY~hj|v8sO(o9~JCjYeQ6MPopu)pX`04>FSig;qeTU0r1i)kA z+72a8XIx5pFB|iu(EYtaaeTlbq`ls}chN`?P?tTSUJsD(VyDZe|D9p!Y-}iC@r}m1 zvsfkmW~5Ahz9RL<#H0;hT(Nf^&gR5)5V+Sv z<+rfQ0sVOC0k3GCi1gprjo(GQ{JsXK$OGuEZVw!sf`cw=8dZGQ^o=Iu12PAa)AR#i zseOJZe#EZheh!80S0Gan8A>vrO8A=v{0h3{KGZw(j{8#lE_gmxW=i-UdnGt6rBenU_4n@1the8@zl?Bhro0~QK5-dZkXc=B zT`Ce@%mAuFKG^Kg8C!CO_7Sf2A=^3^gx*_NbuzXW^NL_U{xKbLQ!xt+or)IF%5GLz zph|o+`|$dWy;EID(~{SA3ZdghF_PBeh_3x{3^I{tMXnd%Cdr;5pAVSLl2Hi-jh!Ak58fm$*ld`vXf|M=u{5dU0 zC}DpaF*}_rlU)qDYQU7}bHbw#wF4Y&kh-DWuU*#QlU!?QqpkXVV7VuZ0B-KL{dJd2 zwGO=%$<3mrgoVN#_TJZ-QirzSK=!vjF1hxv6p!!lbAkJjA6$!sWO-?|h6_#A9`Oj`=+bF;K3;(z zb5&`6f$-SPS6-N9Dg)gxH1<4H3Zd}nA+6a#shyV?-DPQG8~v|v zKsdb4_%V!K2U%JH)TdImzB};o92QYMWmVJIM9 zrk+#f!`>#rGFd2gdD_WLlS_3ZOZ;ZzH-}q0pYACo@xRuq8 zXJa6TFIj1;`mV>a^}-b6TW#tu3z5|z2UhMXs}oC8%PrSce^>HD+>oN|Ou56|nm^Fb z*6*u%DhI<7<5Xfh-_&j+WfX>K!E_U)(^K{bz2uye)_w3`*`L3s&`-z6JzWT6zxM98 zzK6+M)CW$+kKS~4;BFz=7BE?ciF5=JD*VAFxD##MboPa85|r9T?szV%K5Ixvkl`p? zCYX~tLL2DM;2&r;8p)0MXTL&{LWs1|+yd(?-7N=0xW?Q$m8?Tzxq6(k;IXlMCRF(= z{d@ko3+vRjnq7`D!P%4GX3hLHwYU(e?AKtHIf4i=4y-}s{4fA4lZx_ z$q8lY=_^kVr7_x|3;i3;TSEfeiH5#FD``MRusfDL2>+EUJXwuWQ<#;eiF5>=x)Pu9 z3IgbO1@+4LDi9Y=2x z7cK@G&xcW?0?i(zi{n)F0OvMiTy{t5m2Q|IZ z_&19qsN|c6B|37O9sfM^$<0okAL>8SiMygSs?Ni@DqHLq_gs%k*NiUL51SrTSHFhU zrQ9pJy>OEUh1-wQZQ;IsmIRNPQ4CSn+)T`wpKTX!)vXuaU%FDg_P4v zek!x67a_Bv4`*?LT+>rYQszI*yqtFO=zhBnE~?E8Zc1Nsl2g4#o8(a-%!rQ@4b?0N zH4!+H-4FN;;Wi$X7^LG_=ls6|{BK2rWZT{+%eKMKZ7YCDOxvg}{z^_9`zMa-Z|UUB zli(4kT;prlNiB>#Y`)7bDstzg=?)3eU6(jj{t?J-*+#@gQSBE`4ZQ;0wKXuP7Ki^( z>(wlNyfQmeExr}{p027vr%dtTD#A}oe)QsPsfx(IIq0JHuot$ob6=Hmrn;`{z6uF-y=tlgEM|V*(|R}T(N0nWJ{{b2eH?Yig{+td2Uo#ngv)_F{Q z;(T9-<^{s%NUyixe&`tQ0_oUYxll*an*4&6g3*{N_N)Cj%v$=fT!&qm=znzAIp0T? z>~@FtYEqy4^pk(9!gwf%hCUGG7IB?2CM&;|)0IEW4r5oU^{YRjP1|){S>X~;)54=f zzJK!&1HM@m;JF1!x88n&>_kY)_K8&GG3I<~I|EO>@6^O_77jUTiSRV5z*c(i3_-Jn zX$eGO^>Yt^WxVw{pjK>+v@_~ILT+V!z^KU{-aUvstRt2oOuK+K@|`y%;t*Eirt()L z!%Yommm`JZHAQavFIip*%^Xd43(jS}rmCODi3U~M*?;6aX@_sF@4e0vxqqHf_d)GQ zGdf;o!M5#K2Y0h|+ZV6DgRL2oebzXxMTax(gL+iKY$$*pG~Jr(5L83!p-ai21yH3J zgk25AYo6Gl0|!syZTp~=kt}Mnok3e@puCCPT8~*jL;(w&9r|c~3Vp6syn-UN_qBNf zYm5QOMazKo?ev z1hNV&qvQk2s6#qa)s`pK(mzf2=D&S!=p^>a0~AyzZ~QEn0t{7uq{OQ($Y0q+(L0nB zufA;*7%22UJ0iaExT(h7{4Ea(XP-_E{HcI}#KE6gJV3t7mD`FFUK|1xfv1Ty+2L4^ zDTC(rP-MvThKkEWa$!17LmC$KNPuUJMlMP|A8T}j)cp{bA4$RU{z0!~2z=(yx9BtK zA)+lQCg8b3FDHbHwskW@0_H_4Ds{V#%mV8?7qB^`2f+ExdFwsh@{x>}hQEohv4suj z0R76MJm3@m9S0gBz8Nf0d9(a2p*H|y6sDfXzFSa5=iFa_7nN|#R$;$uMuPs>fF3|q zknP&m&Xj(70v54)`BL69?xya+05tII8}uNpimP_{b87dBW!fp<=sHv=sRw1*s;}(= z=hxO;3IySt`U|iKKcbiJ7YYQ1fy>2wUTLD#AJqAv*Z%=)=5!^m+*C8zxqtK(WEWVm zP19(xRpxZ@&x}pHxYi_JXqtPn`36K6+vDZXXO(l;L`S&wZ*i#n)EC%xm+=#&)Y}bO z;`HhSMq1%EKrbs^2(ZWyRoo#WeW4V;)*SYQrB4l;m@zMxTE<*ZG0~0{)FO*;=Ud z|Ev+{F$11(y+&4EXvib?0IE4aD^Lsqer^<2#7aD*ox1qmuo4b*{DbDem0pM*ollto zYB3{4X+DX2UgU2VutjphmUL!R_!8;cpea1<=`)y#@wMr7XeQKV^&PAl0c@E8Hn=@* zicC_>U!;nrm>jGx?e$f^5n94J&9HRMJ%>@w&#{sw@^TI0_}OJSOX&uuZP2U7robS>+`T7}n{KD5v7YnBbC0wJ z$6Wdm172eupZkUwk0+g#G~TERC}wE;)d$SMMJ|IY+Mhmer>Uyf*M{M7-~iRJm)^!ukzZJtHh$dETrLvxiKXAif;NC(H9}Is`118R8GQyqKj~-(X!VOf{ z9b)r8*{&Nd9SzmbPVT%8J?Via#CHkmltX~0Go71{&xuA?XiWHIHdenur471bf4>V8 z8EVNmpgNV?Sr4Pq5D!W}Le6ar~;7Q2b0 zSCW?*>BFx&2YrwVP)?Zfh>xO5eD#!SGeTguK>H8t=R1UIV55G{4|kx)Dx72!8M~;K z0X=a0!C{~KwHa8{=qiR(Vh?WEFD?+P)=?=w`<8>#;Zm`q%jlLKzUHE|ks)Ze(MIkU zyV@x*oObN`4$Vtra>7x|KP7@-`-3Gf1ZMyoN+Z!t<)q{;sATB&2?l)@r_x_459Ayp zLc3$F=k(3|z6?Q=FLfA9Paz*_w%;e>hkCoRylWm`d^JB&ycbTJH{q+V{1l$VgIJnh z==leID}`UZ@1>L&enNrU8)rr+ZwXFWChNOGorxnaA`GpQPfyOx%bcd8gi1ZFcR*;B zPIhynBBwvU<`7Wsgfu8)XfkZWh9GGc{27`H$dufwncs)v8vS2(#n+D+3@DTvC#WJ6 zW~tg#sMgoUjf)CK3RzS;SuJF!Nsz@$`#0TimP6Cg&976-IA9PMov# z8W*$9$oJFnO=0xABUDIjB}}^+$SzK4I|Q2wC+o#@O+If1w;8w5M-dVSK^Vcl`!JFA=xzSO-AsymLo3ms9}vm#8_*^Si= zNh~&yv%Tl|CEEBrH`x~KHZJs^c2XNrdL)lrV@_^d^Q9!mxOlDhno^DZm1@te_G+gs zVs-GDgdHIx&u;Fk+j31X{3>jr_15k@`9tqC1`E2EthRpW*%#OorIoB?d~%1b4*hQu z@+KsV;v$>Xx$`~;#Ax-fvC5~(Y|#FW`52zqV`K(z*;Z8izW2w=%L5f68hDpPgAlEjRvcylH%enm}Jme@_Mlt{hjNhig9~R-8B4h8h1sKqX!! z|6^A!qz{sh8d03K-jJDohAdJ81r2CCouZARX13wZc%(Xz`NQe$KS|s`##up2 z1;(X(4WtH+5B%X)IxFKs{-(Tc`$du!{&9#RAS@zjU8|0v4~7ICtsmBgG`yYVm#>91rZpod#o0i%!%Z4UX>qvCiNia=f zU1kImI*J?_90xyPT{0`ot^D=&EUn#IgG_!Z_6WRJyi+y={TZt$_G9IKdv2hQ$XAJX z$-H7duLRM(?Dur@1Ef?WJO?9OJNC`}5|YyBgBfWb9}nwdqg3UB(l3;6{aPMrxvRDD zr$z!c4x)K*-b?+CFRD_xp|9x<_J>=4a`@`h>KT|X|KpH^Mwou8>j%q+R>dJy)ox#V zyYPuW#wXEHwQ8^^x8t2(R_{V>+4nQCfjOO@<;uw4O44Tbfa%@rdkx!CqFliSwU^0ib@*Rp8c9Y?|3l-HNt>SI`Y}=3w31g7N^WiZ z)8)1O_^Uy^@!%? z@cND}kNmqd@-MIHmWsHan&*zg?V%Ot^sx+RcRmI>IsG_~Q}^$$9yZ*%y^Sm9P%73h zY&D3WY3(sK5Ra248DVeJ+1IrAhVqP^sVuip?aZy#wyAobu`frtWyL(VvRqxQ0A8>m zua`b*?YFkR{iD`t=3;t+PYc?UH-)z%ecB`J$>esCMhSmrbQz#QcCC1-UPfcPZjCud z6V&4{YP^J(21*A$r)ej>gsiobVF#wtU6uZgeKBd!-0KZ}^!t}( z9&iG3{i~0zqU(VNJ}#>Y-of5Hu{g^QICRD?eCe?7+sy}h^=eIMK5`DP-H?Av(!F&l zT8qiIAV%?CxQ+16S@j9?_>j+Qm#>O)w|*@N?VE5y3mYrO{)yK1HKy?+Dw6=|f@WN4W`q z$OskS{4fJ%{Z)k-g$p=820?Ybs&3lspk8EFUCnGoYp(yoG!e!q+>M6;9l;Rx|3LKp zurovzeWQ&JbIcVzz~_ty)_kv(wCK?rB(DX{}m+dUO1|6fl(e%X?N^bStX&y^prkv;2V5crj%f-UK9$ z6MRK^?IQi`XhcS&!Q!vm|HC+0(&!l05~uPddobqhZufe^j!Ssj6OZ{+ipg_9U#;=+3fTMTXNyajx~UAAj$;7#rgu#>%tzo=fSR*H zR3KV!XRq;9tIZwG;Z*BN!UhicW+!JrD~`0un2`;XMfiuTBn6pNrPWzW9iE@|+89N; zBEwP-o{Fm^*Qpr>5s0*^$@FW&6y{E#T<%UJSO57TI#h7ixy4JRrgtRBBVlHI11wc< z>$(0yIFILTRYma3n*$_l+%w=Gc(W!(hi-;&dWPEik8^AP^yBRn$=L5&&kKG%{P;NU zolMtbSwWGEL0C%WO-P@_p4|~wXW7i$zk>wkjAyE1>*@H!9F?02I%idYTElC{3I0Sv zKyc83#OfB|dwoNX-i4w)H$YSk*vNEiZRF5K-B%?c@KZKGep@qH)wfC9%;S>flIPl{RS!k3#mfeQ12y@K^<9NPwj@Bc_wn7z`iyb>I$= z^&J@lsMpbf!~5XM8;nm8XCnq;Mns}T9PBTolXCM-#W<`GerD00j_(wqN6Fsq2Llm7p7(%`cv>72)ZRqU50%4)dqSdir zo^9MJa1`oIg_-r7!k!uU*R>AFt;VL#7HeTIa!5@t**gV}T=mxqT|%`9&l8KA+b6s= zbWLqKdGcVrnHILc+ifD8>fc!aUPo8`Lkj-nPn=b-N>1J0Gr!1JGcAus9sAuYuNJ_ZMBlGhmYshz=TBf^y%ZQRac^s0-|HSRnVMtf*x4%}CMj?~hgvYwUZI9{_lq-c5YZmzYTe0b@~L#h5jl{PXh&V$!FXTVmvYf5RY0N3_- zM`l>2w0`K_<5w-MFk59$@a1OooqV1}Y4l~?PB2>_zQK3sALHAF;-Op0AXD+49SMo) z;|{Kf2*uSwi|jO)lkKCgQkt_%g&-a|prmzyI1zA=K%O(0U!}S0pMA@~Y2V@Q$5-+z zj}-}wPuX<;^r#tU@%G)#mz+B-w|aE14EiUH9YQepYRm=`?HJdVN=-kjn75-PJYpzk z+ddujJD#d6d6>we@E~{}IrTiQOC3n+SE(yOEI<*0ghvFo_K4R9=a8cpgRwvE4g+sp zRe?na{LZQj@&+v?Cp16xXP2UGj{yy1AR~8XkGQDTEdSmgNVNq1tS0SApl&mR#rf0Nxl)CS zg@-9jPd{ml16Og!upZhO{xRtu`Q*y2rLsUxaV)+xDx2S5#LeZWwwftdgP$CK@RwIR z<@+x{{CPpdHqrIT;J|A-?j5Lxz?`seJ*&L5QV=#Ki#Ewz4Bm7MqINX(cK!hd2R@IV zzu|bVtkjLX>h;k-?D#lbd2ZUXXHZo^MFh5~%99`VDo-W9R+aZQ)C;W1FaD?UG~^l! zOe=)QjN)v=p}|*~QSY05ydP&Fc*jPycF}4tvz1rZM87138-@m|^y@(SlE^o$l)L#%X(gBL)SQ9p-VMc zKVYhy@_&n617xp{W7dl3`ICNMx)#FPWfT6>DY}_I|5MOU0_RUU<1=7c`FYG#>&`_n zX4?MZ{D8Fy{+@?Mjljo%-EV%&47{#u`?Z;CMJZ^lTSj-7_y$J|N(^+PiE4(1B1xG+zg@>NBi0C3Dt@1< z&xP$^seC@UHO^PY1|BD>Jc@Xbq+D@W!s_2NkU77)!e^hHKs6yP{=jb$3NzJ>t{)S? zzYdJkHy zyvJpAC*$|A-mGnI$=3WFeGat>VF!L*y7seofvvnQfdk(`Admqag*sm-f9KBaG2FAe zpW*v1Zw+_jmtGW>7cze&#=oJ+|3cYj-!EvhVS?KRe>H67eu@0&$v3?}u(%sG@T0N^ z{Dxg!b=!Di*b6vR#GhF8PfbfB0pPOlu>J*X=>BJ2^;ft+*)hMR0JH9xErH=2oKW^1 zVj&pC^)OK!9SfoU*JrM;jC9j_ggyiHbb*u(xy1Pct)+U{D;$3QPG~NmNJ}68K1_xo zWkU9lfB+@6ffM>z6fA@X|0Us_g!tcg=gKRiKMQJ?wHE$1(KE9v`uWlRqgE zsGqG+Pg1aZzYjBO+twiy5z(jko^oDK-5)^2%2#wgv%k$*c!d`%<_=He)~a{FGqxRW zerc7!iJEQEw=n|fTm2;9s9!8_S(8>71OW39}mWyc|>wtn&Y&5=)HFNDP7 z^l7rxFN$1XyFkSf*PAWi{m%;doqRTaGSGU~8~_SG3!gg(HJw7@r7Z#9WP=J{_7B6TZ*T@;yy>6AnWGI#R5A1 z^vPtgB0t{+RHD>f;!u$ilpCzF7 zlA&0Wus2sA*KjMORiMMF35C;zj@Oi0Bu2M6o}z{YT)f@R>+p7yL{Y^jDarhtUGV8@ zTHV|{S&oLq%jPeb<2_({4zdrUu_>u?X8QIUXEFQ!q){H)1alN_^d^}rAF#A(3OHTnn7a)L*9P{3`VsF#ngc)Sx(NmvbpT#L5lmH^dChfmFDcKS91 z1kL<1_XiPa4^A$Lf3YZNI>|klLo#nH}RFI}-ap{>-}R&RYg_;a-+Gw-x9 zq`%Gj5vnoEFbO)Lr4c^G*#&V62wDAruyuJcvpDC2yu*TeH&H1Sl%Hn~K9caL@*g`~ zKh~S`-@HQ51nIX$MDvlHc6X1yrBdb)B2GRz$aN>kEU*pc2t&@pUIu?YI=>y9%R2RW z*V?n--puWLuh%$M%!%crS%{Tfy{L4)6;tMAg~*GIoye28x==g4l6%+tinNy&U-}=} zjFUR0k-qkAO?@KNQ9HR_WS`_UX|G)2QeZ@(Np!d6qtUx$&-}!Htii++ZUSo*sbq*F6H)Ov)6ajKdOf9SQ}CUd3k+Tp`xm7E4pz&15#OZ9ENOK( z^cfDS#l4UzmBU~L<-zc?u7q0~XoXDN%*HzqZT;Q3v8+umQ_gQ-^Iis5J@0&!9f7+B zv{DWwu48M6qvPoJh|pte=wn$9m*~A0yTtrKMl^ZQKXlm$Rta)W;2i)-h71wN#bE`U zvkyYsRJRf5=qB2|o=oMpU?k2jKXv!nPAo0Mf+R=&s$bh2XUE6iPr~j7{056&SCx#F zeK_~R`YYP%%L~sOWz_7O2MH)Snn@iC0)H_oc4l1oJx@qsDo9gL2HEO(7g_T=5-xO! ztgaLHZ!i{^Q#<+mXXQE^p)v}b3wv>99{N=FfY2*b;L!X%>IUdpH*@|rEG#2AH}W}F z!@v8!S~fv1>A{__JceOAArC0`&i!tvyQ$^FW{SJ8j^m3w;iN$Kt_b<)VCY=SnM57w z&cYr}nrMpQ_tyeD5*R-HCS~18UPaGf7L();7G4Y(sU4k~@Xjvv#J+OSW7-j(g6W*- z39a?qG^v{Xm>-3_tu-(@y9zo^SdpGDYQ>gloq6hrsBH^3IWuq7*&13N>x324$(Pe0B5kkL1A z{NYwJ1ldCH05-jQ{&; zApM{u5;FPzc3)6rYyDl?>tQC+*zV^~uXC?D-d5-4|BNd;v#<&s9>;KlfnTQR-b}uy zJjW$O257)n)OEQ-?UVxZeHCH{6e|u<{E`Lv;Q+h4D;#&4TTv?FVnBaIoL;e;#{oF_ zwfcW(dhf8NwkKTpSP%sP6$F(M6_HK^6r|=TAWf=NDG`w(Eg&WI$e~G%H0eY@q)YE5 z^bP@}hu&L&5C{ng$<6P(-~DqxPuAW$duGkddgq;)#RE8OuWXeuG3hw|GCpoE;5HLi zos|uoH7^)mf%A+ZOopid`C8eAA5h~9H`6djLC?R_0sDW_l@5j)2x5DBI6~(!gkGwb zw`I#NhX2XM^>L{O>x4sFsOp!kv^&t>7f5O^f|#@Rm^5Mg?;e3As?gn?kttA-(rQyC zGw^Z_AuKrIBlk@ zFs{!JkR!L9v$(eU2KDyUep0qfV!|2f?7OvI#p&40GYw{a))3Kf8!6W#Rjz?$+lHPJ za*4#HIkHofs!Q4prQk!X4hrRF_p1aEfqd}rjl$?1%LiSc$$(BCw+->>49c=JwF4j9 z)YbZ->PY{SO4Qa^H(VUBB}or9o%haxKF~bi*z|D=YOsF7 zvLDxtLw@wzCcge^r4%7t8C)PP(h-<}Y7WX&WnZ~>_Iwod3xF9N!UI8gKy2u7NOwG1bYP>=bz zNxq7BwdQT5dKGta!xgGEbrrZf==RH6IrMHC@$vTW`z%a~y|7=UzOM=GmjGEeTxJHU z8$X_Yy-BVvv99sGa9o2UdlCE>c3tI=M!}1FnJ*5poj*!C#iXY(=x4aOe@e3(+7Dw& ze+xbD88rA;*!%M>z-iQxUsD8biA_5{1Vnn>aiS5qxDrMXygfeD@4LIK)brBVqyXo2 ztF&J5`!($7x5fg}DlI2vvc7Y_4Z>(5Lr3Ph_DnH?KMd(46_@g$I8jn+Pu+UM? zB8&6R6`|DEeEbey#M}P6rXxJ}<9X%ufZ@~BOLvXzH>1AKz0Ry_Rdz%cQiEIu>oK7W z;WU9Gx646g!UkV*p2j7(M)_LQN;9I?`JdU%mgv;0AUw$^WitH-%{Ph_` zgR#=GVJ>syz0U&?h}o`|C+ssRi2L*p&T_;a4>^>7#}g`onTYPIT7FqmUlDW-H5LC={;+*Yob03KXQd?J3&Q(Jzb% zRl~vy86}ee8J}I~qsaf55pIy12{u!$&>D_uJDCEHsMsUTH`Na9x2QC20DaoI1iTsC zQ5fwSl@>ksl3Q$;&8P`CS)BF0fzas9tZ$_2Rxx6MgUmARR z*&gaD6*RKhkLy&%r-k`Dt&4K&UKX^bk@`UQg#GS01PG07e zoE%0jD`h*u&W~Gkez~hn8t*KLbAnjmj0Pn0*v_}aY{ttd5wenL;z%!&ooJ~F`4t`N zqCuz<|&A~!!%k8d5fNAX|zjyJNG#xZ(-sh}ZLvai! z)$?}U!GocK=}PpVuC?x+^6RiWo?bu5??UX$5ofo+=%Jzw;Ekt3 zwyPBk|DT=HPuqTv1^ZAuJ8`?ef`twQ$*LJ1-wv(v{&+iusl2&)(d*gq$t4m>9N_rwfQD=j<3Sc z2|h42a@2iGM?n9rFFF8Nk%Pj_dua};YgZ?Og(=yw`Hh1kds}7)zNgRIa-;3V8FC(v z8SqIxgHpbUGTLgW&XJ|6>G%|QEZI8W>}zcK#{qOg%&LQVtJNjB%i~kMzsMcVY8uEl ze09?$;heHZRIw$F!Qzyf7#c1)IB=#|A~ooh|CdmFJtdT})mA{HUWJc;_qel@@ivuR z3XRUmSn#!l^%ybe+zFj#@B{*!NteF*e@>axXX_qQy&9?ZPU*ZG)&N(zYoa^8oURnROjx z%prA(75_6s9_j^9s|#yb{Bmyk5jy*G($9#f1x2S1B_4zu{({k52K6fKEeL1brVH(P z({bX$!)EN;ozXQXt3k9|xjscLr>BxgnA&j3HTy#hg5Vl zY$_^F2BV3f(Jh8)b{J1k{eE+?BQDe1!cXG5pE{j3bagNGkJKF&JRJi$4+Qz(|M^)c z0vK<1krZGh9KmP?(`w#OGCo|ApVm}NuEF1i3k(t_#|zdXaBZh1me1FW7#nih+(^rJ z0q15kH6B+5S(W+T6uOvUKbD0?wLJCexYfzmPW(!(YdExlN^`t`b$4R5Sfex)m5fzGH5Q7A3+Kz9W;} zn_RG!WCLti@au5FOOmiBV||m4yFQT~ljSda`pA}fEjs7FGCQn1xq{%}t`CmxO$afY zz;ww!NPIH&8EozlYUXhdM)Sk<2|PQ-Fx?`Km9vK?*6YiBphDp37Og!@t=_d$P`cbT z+@woI-6LP6vm-L7LypEiJtK@u+pMdkBaALoxXtx;ME;R?68= zx4jvdxW@3xuneh2TtMc)Vz3zeX(!jQ61m#dFZZ*@md)7d4g5@sM;F;YV)CQeKhd=~ zEQm-*STKbJ1ny+xLg{%l*<8l9RSCu3&#vE{&k5o$PjX0Zd8(k;d=}*Ad%yA#2ta*N z>*K49KKumj^C4@YZTSiriZQ6bjczoSkMJ-G$e7wes8JkRLZhuLc{*7T79ooDw zg`Tjt2GMqM$(1Zs_9QZW<26_;a$V@Ii(aw)sp{K;ZQ9@nM~A(WXoGd#2v@V|ZHDgETr}G$$kD>1(zV5CzlqwMzUgaZ*N8x;+e~Jj z6cm7}kY%Y_Yta)nLc~J-G=piYW4?i2J&NdH=NVXHybU@m^Fq3s+^BX83pL2`I!2x6*KdyH@3VPYRH6lV zdo~zjY87n#zYqRWeU5(Wr__1~yB$~)tlgG+;^r(l_V5h6!B8c*in=8ML|4Hxr5}x{ zhZkn+b*p>0_ac7M$*q*fL{QbJRnI7rAwz>dY-nFY_#nqI0+hZd#O=2FiV;QiHI8_( zIz2~LV})Sedr(N+>Uo{QBgiQkVo>yvpNh=P(A|X4t12z^R1tyIlx5$k|3D}o1)x^q z$ySmRt4h%+D09j1KqGfix=H8hfQJB#KL4Vt{%Ziag5Q1$4SBtYc%XX&9DfdxjslGa zW@ko#V>0pXfpE~k^H^nJ7nW}~uSZ6sSLJRhi!_8FC)xpw|dc8wZe ze&olPI<8$i(`NbN$the!K5;lTDYjD1j(tV?lArZoF-n-w95(dA7aeVMKF=)7k>nz9 zD=zqUDK@`S{ShGa_=?O(3uabWxEo7nPg_0)|9zHk`oj~s2A2vSD9Wy1+ zupN(`T}S%s+Gm~ND;$Fb$;YBJ50d|&`hr)})ETJoru5m--3QKoL%1X30PhPZ&r}(7(pG?b`7IbsL2s@H+&N{9-`XX(CGjVfYvzvG#UDr zg)>LE+n*D3FJzU+vFmkwPUrd2rGTD$@0M~pajv}$2r95r`jzm44T3 zU^6m8IHz)o;fxIsrgPw9d}}-C$l6@zE8o(;df=lYK`MNDk2*HPzI@c}zMpM7Fh{B5D zSJumUdzAMR@&cY5oVP2~jvXxI5={yAa!Cd(h8iW2=UBq?O={6EiIclHh-PQ(3IRqQ z^A3G6+;Bycpp@y+jV{d*iG?nW1b)PtPOj};z$fI%P;~B9-{yqCs*)b0{mDx(xbG(E z5X-^D6ZRV*F1)j0OId)=0MkhR@3(=5PM^`9# zA_?3Y^`VDa5b)}g1gWmrXKPz=h9el0d${m=xK4$(&y+cH?^{a0ZfUtV2f?uv0HV>ZSIQP@~iy0F% zo1ze>9X$`(uk_N0@Sny19G-f&*pc@Bi2)L!3^2>1(dIEn3~4LMT$>-cVF|aqd*O8w&TG6;=f9S5uM}a^9WWBQr1RU(W^d7r=E<#TGi6Zb`HV zMsqr>ef5@?5OYqpj~6-IOG1j|21KZFR8LQP($8gmcHctxI<>a!{Ast)YiK!Aj=OUv?~_JVeyHIJq^8%t{!D_w4XWj;t`GTjy2`8)-9p#)MkmGMO{ zhPU`HAzh|o)@ZPWRl0|d-4$|o2I`r*bl1EBA&%B;dUCL-gE^=BSRkfD!?Jl>p8N=e&z}pUSWzRJ z>RYER)SM~7_TYb{~$&H)Um{s z){3o25lib927v2T0Es}c&T6ZG;5k|1&_Zsj@I$YIHvo zYeGLcc&#Ka%>Qyd{8f%}${Vcl_qT5f2b%muk|%8}nW8tPZJjX)T#%WyQBGsJlFva~ zTBO1$jRNkJEVg}1+UL$)1qw|7xFby-8NTXLI#^#*b;T=m{W~F%K1Q@WxiOgCr^j?g zO^tw4Z<_6{CKfg6v)H*5M5jO~O`gwA z1s_{?w@iHDn!eT{`u@eQR!38t5V?Z?DWVS{j%BDyk@`zqxc4PZZO~clG%i`3$}l4n zjJR1SFqpdXNo(`L*OlefCucK9qu1)0`f_}$eg27@Gs<$+zlM2-Lfh2Pb7?q`j8l!z zUo}dB$nY7UoZNmF`t@Usecf*5rAJo+89=Cp!)i0+=tJVs#yt?^{#-xMNr~!(hB%|j zL8}RRv2o|&wOEG>WC0JiDO4C zHu?>sTIVdj4(-5BVk9;fXuX- z2q~QMGaX_rGUn`Gm$J0uKMmXO_xJmJgOn{vt`&MQ8_S2lPN#J~D9AoU}V^TG5)m-L#?=15#jCjz#9wKw=oaUb^& z`TbG&TW@XoY76CM-{;f02<23Lym8_w7DW>5UiDheYNRA7+LvW!^fW%!DjkTH^dkJ| z5*U=qQ7Nq9XprYIuksAy`pkgzcx4t~0&td$TvqjZ5G#10gbuB_U)Ozo=m}T%d=79w z>&4QdJq~k4YDuWo3{q9I6gR>XhVgHjX?=E8IMl2<#s1e>_Xmn*{-cK>W(H}{x6otV zAAs(RaL^n|#%Squ8sIF?v4T1#{M7lt?xKggEp8V*gOpM)>IV4s99Pp0Z#-KBIrJYz z!9i(@(eT}6giF!%G!sRI(rv9o_ExtUTsJY@ z5yhIaeXv^KIs!Q$Z*H($#hWev3EHP0Q6YYp7TiF0uEcTJ&P9ax{AUbH-<(3vVs-+@ zu;dt|Tp3p-@HwT2)tB(vTK7v%!GQl1s9#e1{-RB@uUU7wlt~~NVhxu4^0@XdVYO2V z&N?UVb=+{^UXWBQf`7W}_rZylK?ci(`-L41B2Ya<*n*8TDXd6j*KKU%%^v3Wa^jwt z@S=Gi_k*mPAo#<|3O+bTrRsnp{&$Dj1(VA$`rU$9)8VI6ApWu?N5EQAoh%R>HH8Cf zG4kP`tUqV&v&)k2SJDrg|4VDSZWGgcAB!p#uGKGaKeR$WljfKD-8#)f?@IjYXcETZ zU3IiZ&vV5v?FGdUSR}_?6_c7g|Mva9M}GQuCq%vyVN6g)??jFMbZ|LYF(yKO?-}#4 z$#WauPutMZ4N3P{O*3;uGPbb6X zOBOc)(Zrf4rYKCC%QsFp;bgSGK5Z}V+VgM3y7E>xSp56tx$DKd0@nLm)xE8?_Rvml z%d0LiR~RPB?8R``qL{VF7I3mIni)HIRx_6}hn&lq9)I5hQ|pP#T4&V=xvP;D3UXL8 zaqbW8St^!O)@(rV)-5<|l>XcGlpE1|K-|qt=rm$f2wS?ZYXRU4*f2X!KBV}w>UtF6kD;Qkw z(LDZRcP+3`e`z3!d2ZEM6W0Ud`S@)Rn6tR(ywhl{lPSJ57iCW)^dfN)QX1Pbn@Qo& zL*iszk^S49m)+pYY^RFDKi=FdGIzUH+2UXLV&NU3!Du)FbwN6a#Ky)7lB-6jCB1GY z?R~L9x(T0;{LIc|2K56j+XlTCtl8D9hTP7u7S|#Kg_!qn=o3B%l4&uq)He-j#IVf8 z0f@-DMCllOK=u^*bkyM1Sq#+s`V!#E4Ygd(6@D@j}7sAiOZ{1W~Z-b zeXIOj&izMVrim^!oQI;0@LW5Od|_lL`};9ADW)T*yXQ?tvo0l0ITM&`^&_BDyN7$A z)}buI`+g37OHtHg06C)`-|{DX{%T<0M&D;ubbj}{0s*J8!`n?!PxHB)+JwbUb=RV?YY5#_3|JPi!eOwjnfD%mA};QFqcn$vQw zC3K1KJ%)}3ZJDRMkP_gnSiUQ0eL$4OM^0QhQ#4p>mFWf(vQvTO(I+Y4{@Bj8rbV#(on%VArY+Zf6^a*x|J}wg7QDR3m5RcS@ro(sEeTq zgFOV+=a=45Y?P7|&I}UEV@V_0i@%`cK8^h|m^OS|wjX*9+Kih+m9wDuSa}+$+4F{V zXv?OFT9tI`FmMQfu-#%oqa&nN4g@ACn#a$-AvSG28ccWtw>CJn+gyl0x>9>@sPK z)SiedNJ?vYQpcG^4Yh6h-X9RhZ zUA1|GCYs_L@es$dz0@GsbW0l1$4UFt4gynl)+1M_dqvoCXWPuLJfTduj?p>=zCd?E z3BS&(5)B)i{v*7PNYdMujRv#9UUX}(u*b;$wWGpLcqKQ{s)PQ;*vOY_QkA=kdKCxzVm6RKR%fAHq%9B0CPt%d`r2 z`sSlj47nXROE=ssEc_rCaiClKD%6av$=ojc-MN{c1OE8M?Fm3neQSB7sra2l&^}vc<@9cIK$5ZC+#EoCf*AkmFi|m~AO9`92rw2@x?Q{8 z{y&&CkN4eNy<%>l-rHB|*hrr$_iL0Uf7B)QeB<$^<|IaFwkJ#K_$O$S>uGBg;8VE3 z$JOkSI*M0z&S+oHGE{U%`#;&(Spq-iQgNM9zw+aQUs}&7F4GUNIDBaandx6zjQvxB z*IQ(m<@qROI^j@vyaUVSso&PEINL5hmqfzR3 z29hCsJiH}a33odH?gJ~9Ot6({F^iX!JjPvHR~m(nmBNo(Q+eLOg5TQG%^u0^anilR z;@MgjuO|Mmk`}jB_3EE zWVE3;TIdgUfL~|rGZL{Z=Qs@xZ1BdImTuj4pf>wFfNam9@l7B9e#}EssIBt~ zAK(gBP3U(8xOap}U4yl+%{8Z2MSWe$o48^2oNWp9IGR;rcFhVtvr6oxPa2_C4%7WF z1QQ-0@UeJeYnCCLR{SvuEtP(EU@kPyNb_mEoe)GMz) zrbq;KTNubn@f~Vpy_TGy{l9++lH=}u`z+Ie$3FUVeA2wI%;#=(2RwlP_;N>dUC=J!$eT|B_ zG?=Vjg*9+aP;Y@$eAH!$#JM{ZMl;uR^UC! zN3Ln<_x9`mt3bZ`)|i((ngcn!g1?8V+mO_)9p2Zey*sy>pSg-qSuii=ErjzYcBJv$F-zZxcZJRu(k@82qQ?)spL26!eWKW72?(!(4Q3q6ur z%SByPn&0GgF4-^zd&I29 zVLKCO4lVUX5195UESZ(5eTJLHSw3mPU|0U=smZmk z(t@vo0d(?74NmU%SF~#e%%7uEh;MWd&P>1G*!0+PrykzDDf1$L{bZYnLdrsQ~Yly zo9FVhb-=#omnRT0Vcg=6+U%V;pj;Q{V&LD*Q%sPL*g9iZ>9k5T;TU;#sY39Db*8H9 zI)ul#Sq}Ktj#F|eW!5eqyJeh+`@sWZnaU|MOx`@7vlALjkp$b=JtMr@Y7vNfTK7v; zbPwoP>8Ee(`0O>FcKBM1KXYnF1vfn0iKG=tw!8Qxs{kj?5!^zd+0DAvp|gX7Rz+`5 zKR8?SlErvwi4)ECZv*Vol@monm5$?aiA9BD@?x|`%=Ic30p{SZG&M_@8ekAMAX8NF zoL%m9w;-22o2EZC-TY&5FJYiEwrh*dK`OSaKkfM5jwWVAEsB=WS)uUuaPT8KTYh&hA#j0i=)UP_7IZ1AGdU=jd!lPb9U$w;_yD-B+-aYpBMU@ zU^jmU(NQMR|0#`j!-2OmW_wTXb0&K&wEbYxa0~z3ueI|o^}$fi!4)|J25Z5X8&<m+Gjt}66t*;=wIS?MeBw5`2H9$ zImo}dU}-thP3fSYCTV;XOlEzOP@sJvyFAPcOt;Z-kn6WimjDSmg`Oy-O@f2&rD%<~ zMg0L%%+lxt4^EDraPk_%>n2p91ilbyxYN_|0f7HWU^*Mku6f)_kMzCt_k-obmf6*_ z89vt+wfAAGdnQ88Ma?}%k`yzar7HM&$fN()3m{@8c0^+uN~YzzIk~AJpazG&kv4EB zgYvU2U<3aVU)?sWU!8s${A_RWB`XeGD!I{{bm7tFyZ>3fmJN3c3RYkx0P5>t@~K+e zj_)tSV*H%V?-5f=HqUR6ovSkFX)1Py>IiJ9h~&mac9NM>-#_c_W4B+`@u5v&NdwzK znvZ|<=`5q5`TMz{AA5qR*&I9!?+DAj9P1al+ra%OARGR?CJgmb#RoN1!-0Qr}z z(66#W3hfnfwX%7g`(k|H>v{iPv@z~ISUarnx*I^=V-YqA{Cfu3!@Q>EBs$0K8>H?s z*z(-ojADss65QkY8kVjaRwKQkg7*d@Ujn0%lFIO_@od^ zCg)URLTR4EE~kUa;Aa&ak3!YD5qwvZ4^r9o9lMu=;!uJdMg;^T#f?xvQGJw=Up)D> zQSCP|hYu+@cy=z)>lImbH&kZLcvdZCg^hctyR80gHQ?^ufNAq_ur$}_X}b!G0X5%y z?x(zSktCT9;ToM@ApR%9C5~NXwtF$K4+*lVIUNkc%^Nsf84*$kx`2XFmDW%qoT zcH5aclP6K9Hxh2UD9q1%|I;R)(8lOcao{CxI<^;;QMEq0ZPrS8dHP;sKcs%xrtvPM z{}ae#(^uDeP(O%YXsunriID5&a9cWxv&b~1{Xf3U5B=e5- zveAKlUu}}cGs&=foEl;f>-Kj&=7a#2S@(yiluu5+0|B2D9j0A7)Lqm5(7|S`dVLo= z&1^fexNt+$i~L6Kz{+s}0^e??C;M`V4VV~d01NdKF0 z>qS>VoKBy*%yZnMhNJ5Teh1sqp&KJIF*hLQujQc>otFO{L{u1T4+stOi|iV!r5dy> zRlU&hKsCXqm50xg4d!W7BZ9hKSKw&EPd4`7nmeeibd&Sd@y6&aTvAPx6MxS9`>j!l zBt?XOesst#Ri?RoQ^jJqYSBrQU}G)u2r5|B{MIBp6~*+MK;y=2QSlLQL zBvZ@o=&(|ut^VpQwd>e3;|qHkD9yS~GjqN%VWfuV<_@NNsX^#7D$3^(RE_Sq!D87~)p(maNDF*11 z1~i~}XzBAe19o01p}qb+2x7&rB!l^*AL_N4kTnZZvjhT3v z{OBrkY^T{?L)c(Fx6#YNtS1PicTv+fsI+Y(>0a46hkKGhGye>Z_I~@N9+xOiuQ!WZ zJv)~6gt;=cyiEA`Q~$S^K=*YC-xj|m(n{B`s@2xw#B?R=_qf5DRbxxE;vMkbJI=$j zKsCv8cMGFZyjrKRA0y<6KDrH4Ui1;p*q&_QdwA;HK>+xjU=My5?{jP=GJ{rrK2QR( zKhK4u(Xaj>o9ESa=N^KDDLN?>BT8P`CnX0TK~M9U35%GfS zEg*hX5xB#_#ouy};?l%jhheT_npdB;@JcvDuT!vh5-rX#qj+} zjEx`Vd%e=0dK4ojqG44m^6kr|hL!9LxaCY2qOw^{|FHROEmP8|j8%|q8R6`);(JYAh9)auFX+7Xg@&;J9ux0mJOnVw>~{rk^+j|;T#A7ywJY{PAXQa z3;rT}i*~RuLKmT&jwEu4;-whq96KggS^CNLB)-^dQFE&rnl<5UM;VjVaJ2+WtXC#;>uapE(~E(5uJ1@860sRXR<^iQ5I{Fkvc~WYfwb$!+~EiL{Wi!r)oE ztWip02r>qCr_gE41ozDH4WOHY)?{$2_lV2KbRKgR&v#^<>%@_Fm>-2ukU;4GgMjKDPK6f_u05>a(_B6*9+D$(EKZdMBtfvBt0lZSbS-B zxGAw_;d4nbXtFrKWzD8TD2*=0*iQg{h>lK>u2jl<_Twf9Q3xjDAS#QozzR_S zv)mM3>bcx|GHw-o_ver39roeobls4syK$^8_M4?rFp7&E0$FXw08+T+c*w;-v!R?^ zG>pH-?xB2~8%FX7UdA-u9RBA9nT;dr%H@xFH+Q|BI_%fCUnZM|<7~sX-yhZCH&X0) z8btPLzx0Wt{BQR;FIQ+iM_YDgD_q&FQ!_BV&x0)cg z9j-Ok(Xz@lm>c!UxA$LMHNW_lQ#<{~(zmg24LNVQllfN<-&46uUwlhyWmtHrTFFwv z6izV8YEs>ODe$`CLO}6pu0&V25;3>5V9&H0wA!9BUC)tuwDi6Q$pfm|%rY@(pFTKL z&Xwv3@!mfB&M!tbZ5@BSZvE%zR?n|hO&&}2=G`%RFh(%orPm6(Xyvv(sb*Q#^4zRQ zcH7{x@Mj*%_it08t&C1?N;@IbTnpTgEf(ZaoLD8Dz}!eD0>Ha2uH337V9~e0tvLj9 zpicsHZOIaffxBnTE27`_`3=`B|3`wUcEoN;c=L7BFq~u^ECj8y0{UM;@WJ`3eU?6J zN5Hx2;lWI=N{XZkxRzRT=%WJF@Ri>vhPi2<^#x;px0}*D zxIiMgoe{Y!=<3%dGN1EQIbBN1uR?XW>WBzU4k$ES{UcxZmqEGE5gUL-1}JHfD`r{d za_Hf950kOEou~JVXnaDw0{n7o>Hb|+nXM_uC3l7r{@JG&qDk{2vWH|OCDP1E2QedO z6P{Uj)}3Mey8>4VG~agEV3k<40pZ&Q#XdRc&#RQ?ID>7hvNlgq|EebR6UrL5&ku%l zW9i%hlBYNf{mjt-GkYs`PSy%zt>)zQkCyy$rvbf7t+bJP=%x80d065H+qHuFcR z*Q;PJiE~&ul0U;vyE};vIwLnGh!tmLWRWzR$n7UscjS!GR?siA7&gF0cEekF8a`!@ zieqt&JqlCkws^jyPbwsq#Rlgrsd0llM2lqY(@pBPM2nwT#vd_Kdr5Na_S63%=j@zU zl9o{y>5TL^94e3Kqeliyry)=no*Lq;IPe~|@=_x^SuEMV3_rMPELY(Fi28xvzm~q? zm4;L`hJOw5AUFBRg{WaBqZU`&uEd+rrX`Re4kPR^7#CoaD-j~0!-Gle|MQA`+dh6y zDYGsmYRaw5ZM51Dkox#_R+mM18mb?;WxO=U?To(lol8#f7E4}7y#4yQb**7u!_BPP zoIm*|K>#v5?C8hw)?w5>ZrW3{4ItXm0O;ESF__)w5D71&l?fJP+PlyrDvHFChttl? zm#$Kbwj>B(|D&u0G>F`IkclK*TLS%1{8U%qG~{7Qz7O8alT2>^TUUS<=cjDjqjj>V zpUI4z9=j}=@j;Nkn_pp!GI=kunsM%{it=FvKDwyQjx|2t5x07Rsid*xZ=fCX-NLET)31ave#z-FfNtli#&rg=8qTT=QxGHwbBb+AUM%Dk*z9?jtO=7R< zW&iYEE=hH(&5}W+(9+q4b3-WM?QaK0K3ePypZmjWxEmT*LsrWuK0PzxiPMf$=Qdk|0&cqc9%lGa0psPZZopiL!&_ z{G}2^A_!|$uss+IaZ%*k*B2PFogB~_csvc8-~f5}DZ<}c93`22Wn26)fUi>Y3&cQJ z{LGVq`#?cR8rO{3uaLph4Y{yLg(8UHFmk#pj8Ss&vJg3^F9!yR8dhgdpYl4Ul?5=t zi-H$D%|sX;yRACH@z}2c6E$8!unoFtFODpq`&#ncAEF+>(EjenX0gR?$;>;q^D=-# z`|Z2|0zt-?_kzz9<}2!RPIdt>ALyl4dHTY90+l{ ztf}>+kW)W=Jw5;mTJ9b)4%AL0M!qH*C!&-`ZcNHZZvFHU&9s3Sy(q6UxXyb1$HX;O z&B#|-kB)LhMpe6}N%3!u?vAY%wl}P>%g56zZQ5J@Y>QF{g=T=s&;FHjx;^Z5d~ZwL z3wrnShq4VH(rO9O=SOR)b6_B~i(Jyw)z*3)$@z|XhGuOWEXf9$bFb}Yg~4j@0{`su z5~b!(+3~D~sh_T;Xp#--Rrqhnp61hhNSXundrVX@Jr2{axOCjty3eM<->knWNUL|R z)RM1GGPImfz9tSJ{5SBl5dQY|qr-kS*ufccs-osfM8MMG8K`xbeP?Oj*$%=ng6ZPD z!4hNCllZGypnEl&T!;|~h!5W65I!OfS`%rfOs#oVUw3^_&P0twY4fLvr+=d_De`Zq z6tc3=%5XFF|1f?3Os!-d_Oq1QB5#$()5fp|w(;OVQ;7eT-+u?Z3o&C;aMriz$?)0d zU79PDKVMGjDyHrKg#YdTcPHPC2gFe{cc~Ij`B5|y`jk0p4(JToQA!yFa?=tGnxC~( z@1!`NRa<2XWt$56cs}KGzA%U~;WcKg9@5_Cjdo1Uw7rgdtqrHDu>9k`{$ zkAy<@XsskW-C;z*XL(yH(Ttd%&D*TC_c}A*&)@B$%ZZozmYlIIB42eh91rVYe~gk_ zi$7pGgwsj0zlLorQQr1$PRbv5VD_8#E8g{XUxLc*yB}FvdX1%e8PC2GDL7+~NWkC< zKB>eF`==Xc795$oQEC?QVOu8$+yI{zp!N#%z^Tn^F~qZKK?c{Rz~V)gs9VbROTX~* zGDBMeHRR`TJ4*@+z*~6OQLV3TJ?p9K9?!V1I>(KN3Lfykk#?m^oQ4b!~o(Vj{T>M-GSDS-SM}l=Y1- zt@hJ!Bfv>cmDpKto5_AB0!c1|%>g7E$E0*y$MI^Bj0N+TnRGm9boFVnIO~Dpla;MH z>bzsq^lYX+lx^wX2>Ql4$))n`o{t=m`Q~As+s$3<-ASM1e6R=#FdvE}pkS3~=Q0cP zXjB2fXL`^-E(QGO5J_r3&@+3!Ic#I*Qe{(D>U`3&mnAn{=cge}(RC8!%-tC*K$7Q+ z1Ky66o&P3hAc=o!Vy1Eufe9g{&XQ&Rsou4|k}i{4E7VOp;1NJ@@gu3L8lFEryr1`T zG~Fq>{Aa#6+F-h*JYp)cYh4zb!Mc?ClAnFpn3$oK>XNySe4bU?m*OOG$E}i^TgYl+ zDlxkHI;tEBS*0J?T1j4PRdF59uWd0md)#l->CyUs*n9JEsK5VzSSgYs2}w+)$exI- zQ(7d-TDF*klqE@wZH!WsZ4yG3A+luOvy90u+t|0kVC>tN8O)4XUiZA;pWo-c?)&%G zeck`u_aEQuT$k&0ne#fYv!CaAJ|5?B#sqgg(g&YN*{iyxt%+(l+8U|z?iK0c7Aau)~#KyG( z-O)E}95mlkkQUT1t_z2FARKCt=$@ht)6Qkj_ItJ@kFUoT=QE4ki{tESqxRwpjIPGB zkEE&I5AVqLCwTaJ{IMJEej=9VIdSljEAmEWD$I%I<$vFPGeZht08 z_GozGo%ClKO@@;PAARFX+31|9)(u!i@D3w(b`?V9p1Ye-YcqOyt&Fn6LGb=r%ad~) zzyy-k_w;~VcMU6Z+FFt(0_{kB;|EQi=IQV9+#)6-pAS4xW}P9A%S!}Qw!Hva?6pHk z$0L6_+0a_td#(t-xv-}(@a<6AS0IP^Ow93pR^P739*u2646~Mynm(l*KCDEvCH@Ou z*-Ou-bE#wUH~l7JF9w4S=A&@LvvsG+KlQzCFiG5nt&>H@6BE-mx(yj$`<^#4BCg31 zBNtiv8=GQO75*=(gk`nvKA?ziVr75x3sYL6>qkd#H3-YL7d&=}mlRablDk?e3=)`aR8u{E=IjX*lDzIc@2I{8AH~2Z_?z6_=)QQP8_`z(`x} z5+IHA`$6xz z28bQ<@?y}MW|iPjJVszoA>qNAj`_&$9-nf}E?caqhX896xn$4Wid%1J*Apf#5q=WI z^tamm+na*J2}5?CfjawE)q_Dy45KGFnPB%Om=)2BdE&xRSydwrx_X~z7FGU7!-M#Za$pTtv zpuV>T>`YdGK95WCtm@Y&fZ4`~mp84OHT@BJocwD|JHGpclAX!KeGQqhftdL2PIH!y zSmMS33LZ|6uJ+N>j_5%s(kH4^;oTRn6pm4Ffnz%~ES*Qo79@`^kx3nt{=VD9KQxa4 zFQL$ro&E@r?}T^aaC=;N_-4nb8c`Bb4LfR#4Qp7qT@jN9LIUeT@ZA#KzmefzbGG## zoE7<7vss)NgXH=zyyntk#pLK3)PaybOPyM1Qe! zr0czYSEQR4y8P^`jwI>u&jp{KraeAb&-5?w7URZW^$e}CaptV?h zVL{zA!R1%ohEl?L%9A-4#|O{i1(l`0MZ~U^ChBXS=F~WkvHI(00ltJe?F31Z2cFC& zrZpeE^j9r!@Ki~8HEQxx^}db&Hh5=Na@u+Cbk2-!r!Md0ktz=Y*N=wNA&sD!AQxzs zg7!+JZlvXIk>6D(E|1MvD^tRRO#0O=);_!EjHrJF1`rL!@PxYfi(MkIylCH-&^VpR zd$#+RWLUA0j*4;aRX2??U!l9ozg{CjCqJ$bfOg2+lB%*^$y-`m(YBEwdU|X8GGmE92Tam?Yq`SU!*#)^K#eupthpAp?z5x>1SLA&qPm} zRtP!8R7H*W)JgK~-aAKm#rxW3bR;m>QIGd1sU6x7XihHC^E_2H+gh^TI-5`WHe>Dg zJtrnb{rDScS)~`}VC)GAYbWjC*=}qnX1pJZ7?FN+xzA$}USd0cZrT-Gf&O8x_NjUk zTU<;2;twIE=`_}S6zvlcG~2`^?Q=QG!FL?6mWpGNMqhvE*|qykfb@nsoH0C0auRKi z6Km;HoVykKmT7N~n7>jw7XLZ1v07)j6S{d;!{@K}hx)gy_BWJ6h*;RlHn;k^bO@)tCrThcTBfXMWzppb8pom#ymcyPeGgJTsv_ z6k>LsK7w5Ern76zLu+#R>cVjNn#J98@9WZuRaaNP6t;4aewvVPj8;6hukKxA>wapj zXGfu{Vc%+dm#~Q9mY@RNCpA&Zn%j4_s4q!t`WCLkm;8xA!VESk?*r`H*%4Ipp7`R! z&HRpxpSR*SC5qXkYx-1Oeto-c{V6R6Vq=lu<18^(=|&-lxiex)8r0wp<>TxQ$h;-Lv8hrye+ zwA~mmOg`@Jo|R*Q0iyJ)h?1=JiiO_8tHY6rjEZ;g7SCX6R#}&_vxEHk6z8^!HJ#L} z7eo#unI(4%SAj+<&N;$5@JDlAS_j^hP!pH!4*QHV+6D#nu&TjL#+|OY8JW?y3f}@ol~$6>I48tln9*Y4dyO|oR@s7k(7t7*v%igt3z^4lqExb| z-#>MI5$3-nKyi^}0XvT9GimX7G{Y7xj<A!VHlRn*^SC_M#^SK9E|mx;zYMIH=`~A!)Vm-; z^RxhtwZjKHud*!3ICIwZF$wzS7UI)u$}wIg=wz0cwnT^6LxYqqHfa8ZYtL%#o&JU! zB6o8u@Gh}HHd2H#iRT!z56IGK-ZN3{>R=z=uGv??kUkwi@RsNG*xlCF-0$b)r{@$x zv3Oxbj=ll+-gj{~aX<^pQf1gQBp~+V^$a+b^ z75ob#$x7a<+Y-SS*I_0_i7d5SuDybHOtc1xj>n>K^QOZ9~ z$;-HQ?)xsAue>aPL-CEb1fLk62_7FG-FoBK3MwFZulZ`_N^J$KBGmEQPXt;^8rsyz8=%K?#RnBn(ynC`)*RbLyL@B(l)@dX2`WJH9Ae7b42#x#J&l{r z#^V&9GUbFzzgNn1fXqcH;b$u#6cwNw!Ef)`lWw>ns8WubETz)U$GMPgFa2fj5a_pz zST45y^aQ+l4m!))Vh?#cYQ(v9?<*%*5k&^cq>V zbC5RpH5OgwBiX_HJ21}(n(Jey-eX)qEurjUgjxBRmGag@myhCDw8NnZx0o2dgk}@V z%MDBl=dgdAaP+q${pZZEU@kvv<|F@D4{ zhnN5rY@9@jy{dzmh`u$6>W+kXt1q+1&uER8II+oc14@jhu{!!@qQFmCPxKY1o_X{( zw+r7wZPqLdzP!njJI{vGv#NaOsh#0_{{j6nP8{jh;rt)iVz6tzn z9uZn=coY%#)bv^QgO!)Su*fj*5Byf;ugE4gA}KaTpQ2AHvzkHa)?O}*1{PCiPj;ul zZ;>RtF0ADr4BP*FH(j}7+OJvRe)xbT8{e}1F{e@3>J_^Zn%(HoP4ztFnSHiDUmOv>^w#w+R+wE?`AT`fM5ftkw~A&^@E?)6^?!3r|Be5BuL$4? zNldu$PZHj4dS&&~dEM4`KCRKjUDR~h)KIj1`=1&&y({#;XCnemJplPoQvb>@ z&~2I(jvkl2F#WoAdSX3Y5`n)^#iICSW*=(46b(ftK7(q(&a;d4|0KOoP4>+R$1%x; zfhW$egmRsNtaPJ59cIw|c z?#wxFQ-mb($4wqC#jt;KQUCXMs`G6DQsYsd8QD9xN-y6mx#VekIf$OynDH;)tFTv= zHOCz!(8#ye;BQ!o(29vv>G7`P5eHsR_C+4_m2-bS_>7^{ zspNB-@vXO1z**@dYzg+pH~K305%t~%^q_9R+s2S0iJPFl*Qj@564r?|p)V9HewsR% z0}4N*o%CW)VXnRoW?rRQ`%#BIv36>U*GhLfxgx^ZLH<}sRh~e+F8Y;~D?5m)%<506OptdKa+X^ShI_tA@??0 z$2hs`j(`AU&63(Hz*v4#1rAbND=TeS`9Ob6tnnh;a=pfa$zK^8^Dj*Xrj4Vn9lw~g zgz5O6a5I@8ms$_eOVn{E1=^{%|lHOADW6PyGa=v-PY#G8q zM&f=o6?rgXZyUB7q;cFj*LBs{7N}^xA8EDs8h7>g;Icf^mE9K??x2pF>TwUV8jAa8 zyCaZ?kv!dTdFnng=0wIH_{g0xs0(9t;$6kri7Do-YOpYU)bBpk|5ksE$IwLT6BYi2DV_L->0iC`7h z=gn~Wc7OI^GXLP3cn?_k2yTp&wvI+B^l@CV5w_M2@oQ)It=g81(zgR$RBOEUEP0-O>frvCNi# z;9|RIIJx!t6=38X-$TaN0V_xvP(TJF4j)I{_L+$+?gOp^H9&%Od z)cLX{-qK&(k$Q@f)-PgDUNZdhBsV%OT&O^3044`KdZ;m90JaH+hSEr>O>wdVmRE?x}IMN8g%2H=JrjaAIPgdpwZp0Jlr4gO zl-=_E^7UAAQIJ;S={Q-j6;r9zBhHWK?%(=@HLuLX;&dT1`xPbC9lbRxe%Qw-#T$bi z!2^p8s4H`MuzDzSUaWo$wS208FKvpa$Nn=v*6`Q`(?<4k)IjA2!s{atS53taeokz7 zRzy3DE|4$C4;nPpO1N5=0n5A;W}mai24-^-gfp{?Coj+&nq*mRUN>EzEG`&DB3cF< z{o8CErA_od9oznS8BNMdDHT8XCYuA^%29dbo>Uf?1Ie` z)pNgYU7;RF6XyU%yy6wEa`WWp99_HYBMW$YBPJV?(3q!kzlOrW8Nj-2o+EbqJla!5m)}je3M%2L1-t!932( z<<@T~SR++ww#6u&h)B;GH6|D^#%XUb=q_cZC&RFMsgX^F3&BfO`U9Z(*z2mHUx`B z>B#5GdU~#QeI{q>%2Q(HW?A^nLQ3-C2I zO@ci&23I_q5+R8Q`v*FEe>Ug@lKv8Owy%0hGX{~c3bu^ANL#@}?y3jR9r5*fu%Wb4 z&7X=2epS3yd%k@GhyUhWWz~$kMsCH|NZ?SboVk2z?%adDmOuu*71&K~T92^q4?;0d zvVK8RUzB8Ts{8TNutuy3#S$WdHHN0d$0#WjX+v(XHrVUvj?y|@v*)ELJ-P@3YeI+g z0m605?77ohB0QUnENlnI4+o#0u;_!=aB_;IfjSo|Bj6x!MtKArEd5<;DH^^9*4`Hi zUmU2EO0O^Oqook`cmGK8PfSl}D4aoyvG1{Y4~YhXd+>-6Dxu>8KVpP}9HF4CoQOj$ zx-Tqo@Xgfz!{LwJEOCISgc@`l8Kh_5z_>NhP?^VUAFY9b`N2SS(9mbX{&MpwIx2Z6 zLpRp?!|hlB{!6sK9zk{v)kl^D?Smk=jwzu9eiL&I!ogpAmiy-jdsZe>5+LnY+7VBf z*I5&~(N_ohT{xaV+HE$Ktkk&~2py6ibig_hT0dEmN%PWkcOhgsKGbNa->n1rQf6o& z^rJMxM*pAPTaB1kY!!q=aAE!KKKrLBFJz+5bLje$pi!Y|U2ej}@rBLJ@NjYHQ|Ly% z{-jbR|68_msaRE4ZJLVi6Lx>2Ngi5mv+BbK3Vs3%jWvGI|3Uy$if3@(xoSAjydI>y zCZOg}(@F(zcf#2IawNP5L>&ITdtd7}0}Z%Sjv!z*Kho>>zJS*j!~JLEy54ng0dzQ{ zK}Yu_)Rjg{V^(Majy+UqQ5J$9(1a&}u1VJ#_Cj|J6Dph=708zLAy)^(36^9?lzEO9 zLkcMc!Fvz(BfnGbI5Gs!^>MQ9;trx6eu-jItCuJA1_;c zY`f1dX6uQ1lo}YL#y9m5)}a8U@ym#$`dd?0fj4)dyO-48vbWeD5D_Dc4sDCCOR{;) zu_t_&jxQH{CbkAueg_90>4#OG8VuiIzX!dQr6&m_+c zBtlS3W1fzwF@v_rQrv|KF5(7`iBOTcLf=Z$TRduO7h#ni<%9>!5C zZ)XIZ?%U_^QJ{s`_kOJn5>~R_9j}Cp19!VHR}B|=>4_OH91#&NgUd(2(3u8WXzm0{ z=(M&G+mmAsO`lfqX`_wpPd{cWYu%yjAp;*kNhvX6N54%~;Z$ft4_I1bqdXg%V8A90 z>}$r#Dezopvm9_6#psQt;6nHJM97f1l|r+NGK+fx|K4*y-@KlgqP5_3Qmhm{$B&j! zo+|yQU?o0?YTg>uTu5SGx|)Gw4PKfS(GAW)3q=@^FDa?eYR-;{lLk4t-Z=Sr53`M? zdip5aMK-DvNk!pv&>xrGB*Ch|skV6~9_86AP0LsB@t_xS46;(j16<2t;G?xSWU3$*y;>oAH)yVk%Kemp^-PDKP09F`gGV^cLL)|4GuXB4`0eC6z$~? zWz*3o>>!H@x1&RawDNKtsLz@TqfFPvR9L_U1+K6!-vOt^;$DR>XQcP2=&&Y?7k-v# z{?KCS+h6@1sVLU0G>>GWN+zW?#(e8Ht0HmM>>h!r(jxfwJxeGdRX?r8&S<4D1g5oV z;hV3DjhTC^#OkJBmy%r0!0Tt(gVE#NqUagmwnbfL`gi`M%NvLSD!)iW0OruxeuX%C z^APz-AKYqca=qn-_iNrh65IPRUxJzaJg0odxPS;wMO!Wd+nmp@0smQxQ%_p5CA1^W*NNBp3w(Aaye`GPBumS~AwvHEbjG9O zCM?B^R$#=c4t&7+^pOOe34lV2rel3lbejE^J)ltN#1d%((UkSlSi32U%bCmbVTM|I z5nx+yL#x)ULDq2=BzTf*b$s@>?W9=RF=f5gwm#Tb=xEPxefT78l7FW%{kTN0J6#Hn z)cNt(5m}GT*`R|Ojcc-)Cv}w``D5eLYVIq1MN>EA>e*Z>G1hoz{LJnjCGi!u%}xg2 zz!K$gH*?M8a9x#~B7c=$pf;g0@#b>K^;zs*j$E+S z7IPy6tfzbgGP3s8?E#jhFZYDKRY4``#`-(4;@>~%U69lvI~UKmvq9&QpK9tvdBRO4 zTwO68kAqE_CStkEuirzmJx8e}yiv!~ofokz_0gH#(HeR7^BDI3v!~pjh{J_co5^6N z4dY{(9dRIWniSfzB9hEnSAv8ZvKPc9<<+-?wgAuXK!ue`Olzwi#=+)z-XO6Sjm4Gr5hOgemi*WrseZhnl4KuO^H3l zi5yd>&^(3U3i|70zv~@E?SLy|{m0kX^AcxX`stK0cK^QFOdNys6grLL))?#_!gR3` zznEa%3ooDV19bdOQVLSTe2DR0(P8sv)jff~nM zJ;kySM`9%W=84jbUNiQN?t4tfVbE_%Q-H0{Y_LNVFv1Wa2WlZ}$eUyzmTenc2)WmAv;* z?m;14G3k8p^MkWC>xVnana5jpn_JO~YPJ(uAL(!D66KaP^u~Ih!0~h=`PUwffvO($ z)1w7#MZvFM37?I$Kxi|pD0!R8?Oa>Xah4-=>J5~wT3Z7hgLt`7`~uvDT^SS=t|q&G zsty9~GD2?PRdN8MthVx952XSOdM3Pm;^?nNr&$@c5}VjE!E1el%C_x(^Zq7-v+YIyme;ly&J>5Xke%0} zR=aaBd9>Xk)(8X1{8`I)|C!>Htgc0iSKYBwKIeh{=zaTS-7hkjhJ|!RajwEmB}EJT zEhC*BkrFA7oMVI&>)m?xowt8F`)?Ea?wAY0bE?y~bF$ ztv~G*YRwzh8ZdCU&m@@kBrPME=25!Oj7xKP!LNh`NfM4$>1OE zC^N0ba3VZgJ%q)^158cikEGo!>;GS zV3}8Z<1qL4R(+5;8L9Bp;L2}WM|J4qfN_W6yURsR3yWt5s$p1&EqGXyE3Zv)qBONJ z)Ax-B{qeId-QDS~`;Z(DdNsN_IM4edm@xv+E1EA+7LatVC90maJCl1R6hGUY3-Eu<3z9=Bh$yuMTw?{oyQERbMaTQC-MI7D=;Q5K38{nX#x)zKJg_y)s@)dW zM;{?z21zpTbJc+Jp$v;XaQBVcT!es8LzunSNe|}Oeti+)T9eEu+k&8*>+%>YEMqdE z(=EOx$J(o4b`s=dPi*Hy)78f*iyK0tj~M@aagMggn7He94X9$d=?up})~FsH3)bjK-)9Api$3;enn67Z%;tu}7ohtaqPF zOv@7jbbR=h=PHrXOYzY%*eT*QU zn^_WF84o4imh7+sDc&VP5YDnon@rTq7?w^C=vxScgZP+RGM+Pp^&wNsNNg(Vt&dlJ(yrpn-y59=Ax;k)?G8(9+FFrJ8OV10xnit1C zEr$YTm{W4Nu^a9Nfp9i@v&U*oSE0?|I&J|~Rnv0lnwbiXwWP+GNqwF8n`zoB_Nz?F z*0MdVk?Wb^Bs~ySQbVEarv9a{bS3sniZ<O7_DuPmO{DqjECT=(z1Fg^=vbOt z!&Ez^B6#h*P8@hWT%ryBL&ID7wPU_E_MT->0ucXiIKgf5p9gfEF5nktcrX|P4juzj ze_y|{eK`8u6>Lyy$KlE*-%P6ZweCV(1 zrL&vHBpQ>O-?oM+S=6wHq+XxVgpXT|CvPCHcLI`I0^y&WO9gNL_+&o&{A`pBEX=*N zq02b=TKeHVhsY*JdFLw;K|Li@kt7c8c9E0CNEg(t}X$epI!26NOArpT@%WL_Lj#Fp=cs`DqLYr=nvbsi_s7~j8JN$!D@^2tO zB@S`5icG^#f8snb4IJbi*O%+rtpj@Km^ixe^QYN?R^}!d`nu*YfTQa`&eb?IJTGiO zSUYw2untZCB%;oC>sje8#c5@NVgK?afk18o;OguF|10EG@iYHBiL*|k>l}VcL z41qmiwa|cgRjGpilxL26`*<7tslas(#Oyk6nU5@RK=hB}9U6oJ8rNGGuApYpA+0B; z;Vt%W0SL}zhb2h6O@Py44*sA(azyG8MXVnbxcZ6u=%1*D12X^_@f%M%EwULfC(*u@ zxX}=T|N58y{Ft0^eQ*M=#^OEZ`?Um)%LnCcvLrx>+b7*z^W~N)k&4*+4tP`9i` zch0i+qy9RioW%hpqe=AnrHo7IT$%h>3I zhYxVz=x5H2(Av+ec#rkLDX#x&0i1jM>B-JrTUet284wI|KGeUE{JL7~eTWD6uo^ga z@FYw3nP4M}XXP;{rzPlsihu6tTg}FFKI#)zfB500bd;9=CO8Cd8X9omihE_)rhoD| zC!Nw896@H1rg=SeMj)RIgf>RKuX`a=lCGaJV%$N`BXutF!!+R?k69qK)g=$L^8i0G zv!EML3A@ZXe@}8-^BmUC1NQn-8}RnrQwNBE{f{DxhvdX%x!JU}v-Hlm7aHP76~6iX zD_3l^x3Uz*vZ*3gmsz>6KRYi}UOc;W;46SHJ^{7THzI%q)=vRL?`Bo@eo{exRPXmU zaR=^9w8y;=qur-rHa`7MrXjUhB{3W5uom;I>?pgGEEi`v8sUE5YOP@BNOI zzIzpwAEJHyRQVnvq}D|%DfNVn6hd+M$ss#Cq(Xf7r&mYz=axA7gaY4w{&CF56`@fD zgjg+uJ=)6d1-_~O82vN4Zc`M)v9Whs?Bh{VIh=dg@gsvR8a>XNk*r)ox}tUWGIuF9 zZXP+0o;akW+67-yN^hOEJr>h|TL6T-*aS+ z5{TotzRL0%*8=}$yOHV5H@nWMzK29%WHj` z+bzRpOr2f@ug_RvI0G#X%^2#`zI4EfQTyQ7P19Ld_ej~4v@QVOa-nEe)ou#`>yA7wD2^1D*Oeg4p?R7(o1H59ai@T(U+l^ zP3AG3hAh$U`o=BbK=REj3Mk~t?CUULvNi#3Y_bG$|Nd);KjhgAZHJftl#}4&gSwUr zA{+%#9J68W2VeHPkZEC8bVYvqoPH?GyMh+P?t0s0H*B~8Ucur@jnpqoGRDtJ@kVc1 zJfAlpEX)@tsZ44jF4HB%gaIuuVMX#bTQ{;NG7bW?C2NxVoW)3iiW7XAR_v+;LKEf4L&Uj4^vi;EKJhZZMgAU+o9%+uzE z3HjQKZYj}2EJEpWAn})#AQ13)_I#+`QH>Z!_I1|}BUtw1+&2Dw5bU`NbhJ+Tbfjh5 zcPb%GWb#~Ob45+1M}?^-oQ6)BQlK&H1M{oz(o?>jIqPI{52pM$ z_urWGSyJA=FEtoBPYpctkf4x}ch67<&HNAEt<65h$7Xq) zeJMCyGXHgs+x3+8(R}jEGYjYgua_~u;=C=69*_6Zm77G*nU$U!^go2>IR9R){}gDr{uzfc=vo?j1H5t0y;R_N#G@9mNe!1BlVbR<(QA>5;;!+kL5ohHo#vv_^9t| zzvQfTvN$hjF9LH{qJkaN-bGN7dcW}1XNqftD9<>8@Di&ZXh~U${V1iV>?pFeKW7J8 z8h7GmbMPPUxIaVKQd_ytgp8^plFTygz*>ZE_01_>pC8S&5sVkStLw&V7d8jQm{zGg zFM)Tb%C0vfe}8>8EP?dUc1wf*;Vt}RP+ds%*ci$lSL1r(;3u4I7hl&-dv;UmBAq|` zQ`?`8?_u8k9_by<{~34kOO-5spY*y zd3@B*qHaK1vGtcqB#0Vd$}cjv z$zu*^n+mpppMOt$4t$6|sTH;`r&v9JIGo%scAcezpM;eNao|zkD}9eYIimVvQO1P( zQ99EnirDxq`-zB5*ca|1?GXjHygKuYn0&@*$k->1{#bTonx_8$C2mf3;Cg{aLayc} zIF_SW2dd~Y?PC6`3Gb1#gFZ%! z9n`wJ|H;Dtr27BQ8W5wo49{s=AE;6)k@C^~t^qT8aqV)Jo|(w6&?t(|MIQVFwe-xL48{&l}6RAm-vu4N6M+ zBKB2s^D&`CstG>oF8sjFj`*OSd3)aSbEPgA;wZ?@Cz|M>>{ z4a$R~um{su56h;C4g2?eTbo*@%gq^=9ny`(-($_tV7MG3IwEeE7Ov3AYLQrAZ`Y%0 z9RyT_5djWc(dgp(JPU?#pkz+xgV_TXC-*O|iI)TtEm^!K34p_c=g&*kRb&^@e?l9% zH199!J6@segDeKZGv8_FiKKETr4B7_#*RcYP~>ia)0T#|O<~~98WN3(5Sr3_Q=%lG zL$gRGY7d-2U!1av1nV3)qkb|&dFI=3qi^|&`@e!n8{vapS@yi42LunD(nOLUP3TC# zb$eOx%X9||ode{0@+s}7%g%40ac;85wp4lSZ(Q!5$dg{XpQ`)|G zZ-Hm!hAT3b*$oH*r^$1Y3qzSV?%yzDd4Gxr_~+#we4H*7@$BZRk;NPSme5ct^i)ZkTk76d0N=Qm*9BD-Fp z$-mXywyWcz*V=RIysG-PyhNVC3-d5n*K4NW=^5@p&yuvIR}O@9T!E&R3*Gu_r`rz>KRelmC6johmtmCH1i*Mvrt z^no}0Psb{k!&S04ZnHo5u(4&%Li0wdr%xs_;8drK7a^BfqNgI@rQB_Rr6N(#YEJy6uqqtB(&KL04r?{fMJ386_>?j-@E02sr7ER$Sz50uf*!9C} zo2T}eHZt1JNt5K+n|6f^->MS<((NleJyBo5S(DN$ylYJMm6&b}4JCP9|J=qJ-Gf|B z)#EFLy}elqM*}CyV{(f#`bC%mOTIgEw*Jnj@tVC7aw1dz(|7=O=RDPskO;`Jl$YvZ zmsu%s*$?~R zV@Lnl)OmvKQ)i6*#~#4v>;EK@$w*7qFnZgC5q@&6U-h|(5~GxRN25!I1G*Npx<8m) z1y4h#a1-|54m&IM6`^x89a89| zgVoaoyri>Qq(?6U&+oqlK%lkj>HpLkI{+nk2IbhhqhpWI<&$~_9n!nUo*mgzJgfTk zUiE|H!-ovu=PxW89?0k2;Z8k#xRNyBT5%ivA}IIpdhz<_i;43EF?O)?JVnLUbkOw` zMsKr&N;&YSsq_mVX)^4WMeWf3A`l-t%qi!n^I{R@O*jC*b)YDyGN6$1YWZMb8{mrQ zf;%8olT-qaYTT>MCINpO7IYTT0*H8E_VTrv%YY1UJ}l-)*S(1LOUrVAzTyQwJ`?z` zmhqxFA5{F5$xPtAWXio;R~8TibHzm)J2M)lYZkIU^!c zN!-3sB!72Hf%eX_VKTrFrAJ4+uvsTb2IR<1%Ptbmzr{S^Pd&T8va#TeY7EZ9Xx^Rc zz~&uZ-&X6)$kxrxb3Ds-$9Z@&r+BZ`aY)!#0)Oa-)CF__uN+0g zJNW~%GN+7Qy4=*+YLSRUl`9;-qPomD{gb`b)R%h`_~F5agv%@$76xiRerTRcIWz6t zOuzlcriPzQJpXr;OaTS`r-SLyZ%jB)vC9g9Y~HJaj_U!tAut(U-%;U}fP; zyQbbBI!*jn1PJiBt z+KnEI;w$I}Xp1p{ z?Qa{PBWB?C>__8t)xf7NY3~$dhE!#A$4TA12dC{{^1M&9V|8Me4zJ9FOf0C2gjBOo zms|n7YR$GP?VPB7kn*_asQG;Ue%`X_Ymk%khd*J0!9sg~Rv$ z#u6ne*!PjG8j7+9ln;B-(x-r?;ctNH)QOl`xHJcEzzZ zfZ1cn`OwVC8|p+onrEv?D`wh^Bt$+fvml2fi_-7eHLk3aQpjZo7ODRMdVGM-*F(lL z=*TT}a*IyQ3JVCU2fzcLy+YWC7+<{7TDBNXHO!Wd_jMSHOL`TOh)!N}%j0i!pDDy~ zjdf$D*FCs;{S64CW7`8PuN#{13AmpISo<5`a-*;bW9Q5aYqDlEy>3JE%!}Hm1h)aP zans*U6ck+s4)cixzN9e=Av9dH0R=n_*D1aXbf{zgsnibfA39&4$>#lcBu@RL1g210 z@kYTzC3M6VIE(|H5l+z^j7CklA+Oj@$$&cH#!sTewBl>~n7rSi-#XeI+|L&)iQG>2 zPWABPNGP$hYc$$)FC1Kw7f&GI)z_=Mo`_j|k>132tM+>FUQlh-6nw6xc@D2%6}90pI`%boA!I4$HSX090@(` z=`YqvaQ)8BPyg!;G&?(D41d0#_}(ReC1~XhjO!M9Hh%$a)g1|0gc@8Adz#g!8_YeI zFlIKha{1*{mVHw2Q)WmYnqPr;qhNXR9!z`Bq&BNP1C#TMnBQf;kq&kLTn3pT52Whio)b6s|v~ea~lzCTfQr7 z!h>#?H!inqFu6NKFir<9#sC(2oc2V1hGn65=;@ z3w7dnzsD-y=q1e%0gil?Y;xaHLb0coE}wIc_nW6*LSt-s?-=A>+gM*&-z2+_;euUgoGpvshgIEPxa>)=$D?Jm%av*S`kqmVl%~m$mu^_zCEtb(P*T+3tah8* zu_>3l?-nd20I3n^ra}T5Zje9zzFE23u~aGrhCLvbuw`i2(+hioK?^*$xvsIBsQen~ zAb;Tz%aR>(<2+zF%LR&MyZUPfqp!jq(9rnWHi9<07d(CN+DkpF?FBf_jZA229%|v`&xBdd}b?9B7CD(Uao z5U>=sJbEkwXg%~I7OkUO0y?c9q=)@K*n9JEDBu4Nln6yeQOGh$g;eq($~M*{%2p`L zh$P7tvKx|pZIv*iD9WCF9XlaI*~M6z#y)0-SMaD)4>U{S0)ep` zlwOVrCskzvp!+`gX`W(hT@FxeUjD8X;@FCtX(f_&pzKEeZ8W(B9u~4TGxsE9U

s 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 literal 0 HcmV?d00001 diff --git a/docs/theme/img/favicon.ico b/docs/theme/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..feee4906fb7ee2385399827b32763befe1152b19 GIT binary patch literal 16958 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 literal 0 HcmV?d00001 diff --git a/docs/theme/img/favicon.svg b/docs/theme/img/favicon.svg new file mode 100644 index 00000000..21beb0db --- /dev/null +++ b/docs/theme/img/favicon.svg @@ -0,0 +1,15 @@ + + + + favicon + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/docs/theme/img/jrnl_white.svg b/docs/theme/img/jrnl_white.svg new file mode 100644 index 00000000..c324ab91 --- /dev/null +++ b/docs/theme/img/jrnl_white.svg @@ -0,0 +1,10 @@ + + + + jrnl_white + Created with Sketch. + + + + + \ No newline at end of file diff --git a/docs/theme/img/logo.svg b/docs/theme/img/logo.svg new file mode 100644 index 00000000..b843bed8 --- /dev/null +++ b/docs/theme/img/logo.svg @@ -0,0 +1,16 @@ + + + + logo + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/docs/theme/img/logo_white.svg b/docs/theme/img/logo_white.svg new file mode 100644 index 00000000..e4e8e078 --- /dev/null +++ b/docs/theme/img/logo_white.svg @@ -0,0 +1,9 @@ + + + + logo_white + Created with Sketch. + + + + \ No newline at end of file diff --git a/docs/theme/img/sprites.svg b/docs/theme/img/sprites.svg new file mode 100644 index 00000000..32091555 --- /dev/null +++ b/docs/theme/img/sprites.svg @@ -0,0 +1,18 @@ + + + + sprites + Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/theme/index.css b/docs/theme/index.css new file mode 100644 index 00000000..db3fb0c5 --- /dev/null +++ b/docs/theme/index.css @@ -0,0 +1,307 @@ +article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0} + +body +{ + background-color: #FAFDFE; + background-color: #f7f8f9; + font-family: "Open Sans", "Helvetica Neue", sans-serif; + font-weight: 300; +} + +.icon { + background-image: url("img/sprites.svg"); + width: 32px; + height: 32px; + display: inline-block; + font-size: 40px; + background-size: 200px 80px; +} + +h3 { font-weight: 400; } + +.icon.secure { + background-position: 0em 0em; +} + +.icon.future { + background-position: -1em 0em; +} + +.icon.search { + background-position: -2em 0em; +} + +.icon.nli { + background-position: -3em 0em; +} + +.icon.share { + background-position: 0em -1em; +} + +.icon.sync { + background-position: 0em -1em; +} + +.icon.dayone { + background-position: -1em -1em; +} + +.icon.github { + background-position: -2em -1em; +} + +.icon.folders { + background-position: -3em -1em; +} + +.icon.twitter { + background-position: -4em -1em; +} + +header { + background-image: linear-gradient(211deg, #95699C 0%, #604385 100%); + color: white; + border: 0px solid transparent; + display: relative; + padding-top: 150px; + overflow: hidden; +} + +#terminal { + background: #1B1C2E; + max-width: 520px; + box-shadow: 0 -2px 16px 0 rgba(0,0,0,0.35); + border-radius: 6px 6px 0 0; + min-height: 100px; + margin: 0px auto; + position: relative; + /*transform: translateY(40px);*/ + color: #f7f8f9; + font-family: "Monaco", "Courier New"; + font-size: 12pt; + padding: 45px 20px 0px 20px; + line-height: 165%; +} + +#terminal b { + font-weight: normal; + color: #C2CDD9; +} + +#terminal i { + font-style: normal; + color: #BB97BA; +} + +#terminal:before { + content: ''; + position: absolute; + top: 15px; + left: 15px; + display: inline-block; + width: 15px; + height: 15px; + border-radius: 50%; + background: #3B3B4A; + box-shadow: 25px 0 0 #3B3B4A, 50px 0 0 #3B3B4A; +} + +#typed:before { + content: "$ "; + color: #A879A7; +} + +#twitter { + display: block; + position: absolute; + text-decoration: none; + top: 20px; + right: 20px; + border: 1px solid white; + padding: 5px 10px; + color: white; + border-radius: 3px; + opacity: .7; +} + +#twitter .icon { + transform: scale(.5); + vertical-align: -18%; + margin: 0; + padding: 0; +} + +#twitter:hover, +#twitter:active { + opacity: 1; + text-decoration: none; +} + +#title { + max-width: 630px; + margin: 0 auto; + padding: 0px 20px; +} + +#prompt { + max-width: 700px; + margin: 100px auto 0px auto; + padding: 0px 20px; +} + +header img { + float: left; + margin-right: 30px; +} + +h1 { + color: white; + font-weight: 300; +} + +nav { + text-align: center; +} + +nav a#twitter-nav { + display: none; +} + +a { + color: #684688; + text-decoration: underline; +} + +nav a { + font-size: 14pt; + line-height: 40pt; + margin: 0 40px; +} + +a:hover { + color: #A3629F; +} + +nav a.cta { + display: inline-block; + color: white; + background-image: linear-gradient(259deg, #A3629F 0%, #604385 100%); + box-shadow: 0 2px 8px 0 rgba(0,0,0,0.25); + border-radius: 50px; + padding: 0px 30pt; + white-space: nowrap; + transition: all .1s ease; + font-weight: 600; + text-decoration: none; +} + +nav a.cta:hover { + text-decoration: none; + background-image: linear-gradient(259deg, #AE57A8 0%, #68419C 100%); + box-shadow: 0 4px 16px 0 rgba(0,0,0,0.25); + color: #f7f8f9; +} + +main { + padding: 50px 0 0 0; +} + + +.flex { + display: flex; + margin: 0 auto; + max-width: 920px; + flex-wrap: wrap; + padding: 20px 20px; + justify-content: space-between; + +} + +.flex section { + /*margin: 20px;*/ + margin-top: 40px; + width: 32%; +} + +.flex section:first-child { + margin-left: 0px; +} +.flex section:last-child { + margin-right: 0px; +} + + +.flex section i { + float: left; + left: 0; + display: block; + margin: 0px auto 10px auto; +} + +.flex section h3 { + margin-top: 0; + font-size: 14pt; + color: #684688; + margin-bottom: .5em; + font-weight: 300; + margin-left: 40px; +} + +.flex section p { + padding-left: 40px; + color: #888; + font-size: 12pt; + margin: 0; +} + +footer { + max-width: 700px; + margin: 20px auto; + padding: 0 20px 20px 20px; + font-size: 10pt; + opacity: .5; + text-align: center; +} + +@media screen and (max-width: 680px) { + .flex { + display: block; + padding: 0; + } + .flex section { + width: 100%; + } + + main { + padding: 20px; + margin: 0; + width: calc(100% - 40px); + } + + nav a, + nav a#twitter-nav { + display: inline-block; + margin: 0px 10px; + } + + nav a.cta { + display: block; + margin: 20px; + } + + header #twitter { + display: none; + } + + header #logo { + display: block; + float: none; + margin: 0px auto; + } + + header #title br { + display: none; + } + +} diff --git a/docs/theme/index.html b/docs/theme/index.html new file mode 100755 index 00000000..0c179210 --- /dev/null +++ b/docs/theme/index.html @@ -0,0 +1,126 @@ + + + + + + jrnl - The Command Line Journal + + + + + + + + + + + + + + + + + + + + + + + + +

+ +
+ +

Collect your thoughts and notes
without leaving the command line.

+
+
+
+
+
+
+
+
+ +
+
+ +

Human friendly.

+

jrnl has a natural-language interface so you don't have to remember cryptic shortcuts when you're writing down your thoughts.

+
+
+ +

Future-proof.

+

Your journals are stored in plain-text files that will still be readable in 50 years when all your fancy iPad apps will have gone the way of the Dodo.

+
+
+ +

Secure.

+

Encrypt your journals with the industry-strength AES encryption. The NSA won't be able to read your dirty secrets.

+
+
+ +

Accessible anywhere.

+

Sync your journals with Dropbox and capture your thoughts where ever you are

+
+
+ +

DayOne compatible.

+

Read, write and search your DayOne journal from the command line.

+
+
+ +

Free & Open Source.

+

jrnl is made by a bunch of really friendly and remarkably attractive people. Maybe even you?

+
+
+ +

For work and play.

+

Effortlessly access several journals for all parts of your life.

+
+
+
+ + + + + + diff --git a/docs/theme/index.js b/docs/theme/index.js new file mode 100644 index 00000000..7ad89342 --- /dev/null +++ b/docs/theme/index.js @@ -0,0 +1 @@ +var typed2 = diff --git a/docs/usage.md b/docs/usage.md new file mode 100644 index 00000000..fa5050a0 --- /dev/null +++ b/docs/usage.md @@ -0,0 +1,182 @@ +# Basic Usage + +`jrnl` has two modes: **composing** and **viewing**. Basically, whenever +you *don't* supply any arguments that start +with a dash or double-dash, you're in composing mode, meaning you can +write your entry on the command line or an editor of your choice. + +We intentionally break a convention on command line arguments: all +arguments starting with a *single dash* +will *filter* your journal before viewing +it, and can be combined arbitrarily. Arguments with a +*double dash* will control how your journal +is displayed or exported and are mutually exclusive (ie. you can only +specify one way to display or export your journal at a time). + +## Listing Journals + +You can list the journals accessible by jrnl + +``` sh +jrnl -ls +``` + +The journals displayed correspond to those specified in the jrnl +configuration file. + +## Composing Entries + +Composing mode is entered by either starting `jrnl` without any +arguments -- which will prompt you to write an entry or launch your +editor -- or by just writing an entry on the prompt, such as + +``` sh +jrnl today at 3am: I just met Steve Buscemi in a bar! He looked funny. +``` + +!!! note + Most shell contains a certain number of reserved characters, such as `#` + and `*`. Unbalanced quotes, parenthesis, and so on will also get into + the way of your editing. + For writing longer entries, just enter `jrnl` + and hit `return`. Only then enter the text of your journal entry. + Alternatively, `use an external editor `). + +You can also import an entry directly from a file + +``` sh +jrnl < my_entry.txt +``` + +### Smart timestamps + +Timestamps that work: + + - at 6am + - yesterday + - last monday + - sunday at noon + - 2 march 2012 + - 7 apr + - 5/20/1998 at 23:42 + +### Starring entries + +To mark an entry as a favourite, simply "star" it + +``` sh +jrnl last sunday *: Best day of my life. +``` + +If you don't want to add a date (ie. your entry will be dated as now), +The following options are equivalent: + + - `jrnl *: Best day of my life.` + - `jrnl *Best day of my life.` + - `jrnl Best day of my life.*` + +!!! note + Just make sure that the asterisk sign is **not** surrounded by + whitespaces, e.g. `jrnl Best day of my life! *` will **not** work (the + reason being that the `*` sign has a special meaning on most shells). + +## Viewing + +``` sh +jrnl -n 10 +``` + +will list you the ten latest entries (if you're lazy, `jrnl -10` will do +the same), + +``` sh +jrnl -from "last year" -until march +``` + +everything that happened from the start of last year to the start of +last march. To only see your favourite entries, use + +``` sh +jrnl -starred +``` + +## Using Tags + +Keep track of people, projects or locations, by tagging them with an `@` +in your entries + +``` sh +jrnl Had a wonderful day on the @beach with @Tom and @Anna. +``` + +You can filter your journal entries just like this: + +``` sh +jrnl @pinkie @WorldDomination +``` + +Will print all entries in which either `@pinkie` or `@WorldDomination` +occurred. + +``` sh +jrnl -n 5 -and @pineapple @lubricant +``` + +the last five entries containing both `@pineapple` **and** `@lubricant`. +You can change which symbols you'd like to use for tagging in the +configuration. + +!!! note + `jrnl @pinkie @WorldDomination` will switch to viewing mode because + although **no** command line arguments are given, all the input strings + look like tags - *jrnl* will assume you want to filter by tag. + +## Editing older entries + +You can edit selected entries after you wrote them. This is particularly +useful when your journal file is encrypted or if you're using a DayOne +journal. To use this feature, you need to have an editor configured in +your journal configuration file (see `advanced usage `) + +``` sh +jrnl -until 1950 @texas -and @history --edit +``` + +Will open your editor with all entries tagged with `@texas` and +`@history` before 1950. You can make any changes to them you want; after +you save the file and close the editor, your journal will be updated. + +Of course, if you are using multiple journals, you can also edit e.g. +the latest entry of your work journal with `jrnl work -n 1 --edit`. In +any case, this will bring up your editor and save (and, if applicable, +encrypt) your edited journal after you save and exit the editor. + +You can also use this feature for deleting entries from your journal + +``` sh +jrnl @girlfriend -until 'june 2012' --edit +``` + +Just select all text, press delete, and everything is gone... + +### Editing DayOne Journals + +DayOne journals can be edited exactly the same way, however the output +looks a little bit different because of the way DayOne stores its +entries: + +```md +# af8dbd0d43fb55458f11aad586ea2abf +2013-05-02 15:30 I told everyone I built my @robot wife for sex. +But late at night when we're alone we mostly play Battleship. + +# 2391048fe24111e1983ed49a20be6f9e +2013-08-10 03:22 I had all kinds of plans in case of a @zombie attack. +I just figured I'd be on the other side. +``` + +The long strings starting with hash symbol are the so-called UUIDs, +unique identifiers for each entry. Don't touch them. If you do, then the +old entry would get deleted and a new one written, which means that you +could lose DayOne data that jrnl can't handle (such as as the entry's +geolocation). diff --git a/features/core.feature b/features/core.feature new file mode 100644 index 00000000..ab86da42 --- /dev/null +++ b/features/core.feature @@ -0,0 +1,60 @@ +Feature: Basic reading and writing to a journal + + Scenario: Loading a sample journal + Given we use the config "basic.yaml" + When we run "jrnl -n 2" + Then we should get no error + and the output should be + """ + 2013-06-09 15:39 My first entry. + | Everything is alright + + 2013-06-10 15:40 Life is good. + | But I'm better. + """ + + Scenario: Writing an entry from command line + Given we use the config "basic.yaml" + When we run "jrnl 23 july 2013: A cold and stormy day. I ate crisps on the sofa." + Then we should see the message "Entry added" + When we run "jrnl -n 1" + Then the output should contain "2013-07-23 09:00 A cold and stormy day." + + Scenario: Filtering for dates + Given we use the config "basic.yaml" + When we run "jrnl -on 2013-06-10 --short" + Then the output should be "2013-06-10 15:40 Life is good." + When we run "jrnl -on 'june 6 2013' --short" + Then the output should be "2013-06-10 15:40 Life is good." + + Scenario: Emoji support + Given we use the config "basic.yaml" + When we run "jrnl 23 july 2013: 🌞 sunny day. Saw an 🐘" + Then we should see the message "Entry added" + When we run "jrnl -n 1" + Then the output should contain "🌞" + and the output should contain "🐘" + + Scenario: Writing an entry at the prompt + Given we use the config "basic.yaml" + When we run "jrnl" and enter "25 jul 2013: I saw Elvis. He's alive." + Then we should get no error + and the journal should contain "[2013-07-25 09:00] I saw Elvis." + and the journal should contain "He's alive." + + Scenario: Displaying the version number + Given we use the config "basic.yaml" + When we run "jrnl -v" + Then we should get no error + Then the output should contain "version" + + Scenario: --short displays the short version of entries (only the title) + Given we use the config "basic.yaml" + When we run "jrnl -on 2013-06-10 --short" + Then the output should be "2013-06-10 15:40 Life is good." + + Scenario: -s displays the short version of entries (only the title) + Given we use the config "basic.yaml" + When we run "jrnl -on 2013-06-10 -s" + Then the output should be "2013-06-10 15:40 Life is good." + diff --git a/features/data/configs/basic.yaml b/features/data/configs/basic.yaml new file mode 100644 index 00000000..9111b561 --- /dev/null +++ b/features/data/configs/basic.yaml @@ -0,0 +1,12 @@ +default_hour: 9 +default_minute: 0 +editor: "" +encrypt: false +highlight: true +journals: + default: features/journals/simple.journal +linewrap: 80 +tagsymbols: "@" +template: false +timeformat: "%Y-%m-%d %H:%M" +indent_character: "|" diff --git a/features/data/configs/brackets.yaml b/features/data/configs/brackets.yaml new file mode 100644 index 00000000..e658947c --- /dev/null +++ b/features/data/configs/brackets.yaml @@ -0,0 +1,12 @@ +default_hour: 9 +default_minute: 0 +editor: "" +encrypt: false +highlight: true +journals: + default: features/journals/brackets.journal +linewrap: 80 +tagsymbols: "@" +template: false +timeformat: "%Y-%m-%d %H:%M" +indent_character: "|" diff --git a/features/data/configs/bug153.yaml b/features/data/configs/bug153.yaml new file mode 100644 index 00000000..765185c3 --- /dev/null +++ b/features/data/configs/bug153.yaml @@ -0,0 +1,13 @@ +default_hour: 9 +default_minute: 0 +editor: '' +encrypt: false +highlight: true +journals: + default: features/journals/bug153.dayone +linewrap: 80 +password: '' +tagsymbols: '@' +template: false +timeformat: '%Y-%m-%d %H:%M' +indent_character: "|" diff --git a/features/data/configs/bug343.yaml b/features/data/configs/bug343.yaml new file mode 100644 index 00000000..a4e25d8a --- /dev/null +++ b/features/data/configs/bug343.yaml @@ -0,0 +1,13 @@ +default_hour: 9 +default_minute: 0 +editor: '' +template: false +encrypt: false +highlight: true +journals: + simple: features/journals/simple.journal + work: features/journals/work.journal +linewrap: 80 +tagsymbols: '@' +timeformat: '%Y-%m-%d %H:%M' +indent_character: "|" diff --git a/features/data/configs/dayone.yaml b/features/data/configs/dayone.yaml new file mode 100644 index 00000000..e7331733 --- /dev/null +++ b/features/data/configs/dayone.yaml @@ -0,0 +1,13 @@ +default_hour: 9 +default_minute: 0 +editor: '' +template: false +encrypt: false +highlight: true +journals: + default: features/journals/dayone.dayone +linewrap: 80 +password: '' +tagsymbols: '@' +timeformat: '%Y-%m-%d %H:%M' +indent_character: "|" diff --git a/features/data/configs/empty_folder.yaml b/features/data/configs/empty_folder.yaml new file mode 100644 index 00000000..ee401ada --- /dev/null +++ b/features/data/configs/empty_folder.yaml @@ -0,0 +1,13 @@ +default_hour: 9 +default_minute: 0 +editor: '' +template: false +encrypt: false +highlight: true +journals: + default: features/journals/empty_folder +linewrap: 80 +password: '' +tagsymbols: '@' +timeformat: '%Y-%m-%d %H:%M' +indent_character: "|" diff --git a/features/data/configs/encrypted.yaml b/features/data/configs/encrypted.yaml new file mode 100644 index 00000000..254b81d9 --- /dev/null +++ b/features/data/configs/encrypted.yaml @@ -0,0 +1,13 @@ +default_hour: 9 +default_minute: 0 +editor: '' +encrypt: true +template: false +highlight: true +journals: + default: features/journals/encrypted.journal +linewrap: 80 +password: '' +tagsymbols: '@' +timeformat: '%Y-%m-%d %H:%M' +indent_character: "|" diff --git a/features/data/configs/encrypted_old.json b/features/data/configs/encrypted_old.json new file mode 100644 index 00000000..e69d9b79 --- /dev/null +++ b/features/data/configs/encrypted_old.json @@ -0,0 +1,13 @@ +{ + "default_hour": 9, + "default_minute": 0, + "editor": "", + "encrypt": true, + "highlight": true, + "journals": { + "default": "features/journals/encrypted_jrnl-1-9-5.journal" + }, + "linewrap": 80, + "tagsymbols": "@", + "timeformat": "%Y-%m-%d %H:%M" +} diff --git a/features/data/configs/encrypted_old.yaml b/features/data/configs/encrypted_old.yaml new file mode 100644 index 00000000..bc7b1440 --- /dev/null +++ b/features/data/configs/encrypted_old.yaml @@ -0,0 +1,11 @@ +default_hour: 9 +default_minute: 0 +editor: '' +encrypt: true +highlight: true +journals: + default: features/journals/encrypted_jrnl1-9-5.journal +linewrap: 80 +tagsymbols: '@' +timeformat: '%Y-%m-%d %H:%M' +indent_character: "|" diff --git a/features/data/configs/markdown-headings-335.yaml b/features/data/configs/markdown-headings-335.yaml new file mode 100644 index 00000000..dafed64b --- /dev/null +++ b/features/data/configs/markdown-headings-335.yaml @@ -0,0 +1,13 @@ +default_hour: 9 +default_minute: 0 +editor: '' +encrypt: false +highlight: true +template: false +journals: + default: features/journals/markdown-headings-335.journal +linewrap: 80 +password: '' +tagsymbols: '@' +timeformat: '%Y-%m-%d %H:%M' +indent_character: "|" diff --git a/features/data/configs/mostlyreadabledates.yaml b/features/data/configs/mostlyreadabledates.yaml new file mode 100644 index 00000000..5e3e1a15 --- /dev/null +++ b/features/data/configs/mostlyreadabledates.yaml @@ -0,0 +1,12 @@ +default_hour: 9 +default_minute: 0 +editor: "" +encrypt: false +highlight: true +journals: + default: features/journals/mostlyreadabledates.journal +linewrap: 80 +tagsymbols: "@" +template: false +timeformat: "%Y-%m-%d %H:%M" +indent_character: "|" diff --git a/features/data/configs/multiple.yaml b/features/data/configs/multiple.yaml new file mode 100644 index 00000000..2e282232 --- /dev/null +++ b/features/data/configs/multiple.yaml @@ -0,0 +1,19 @@ +default_hour: 9 +default_minute: 0 +editor: '' +encrypt: false +highlight: true +template: false +journals: + default: features/journals/simple.journal + ideas: features/journals/nothing.journal + simple: features/journals/simple.journal + work: features/journals/work.journal + new_encrypted: + encrypt: true + journal: features/journals/new_encrypted.journal +linewrap: 80 +password: '' +tagsymbols: '@' +timeformat: '%Y-%m-%d %H:%M' +indent_character: "|" diff --git a/features/data/configs/tags-216.yaml b/features/data/configs/tags-216.yaml new file mode 100644 index 00000000..73523c50 --- /dev/null +++ b/features/data/configs/tags-216.yaml @@ -0,0 +1,13 @@ +default_hour: 9 +default_minute: 0 +editor: '' +encrypt: false +highlight: true +template: false +journals: + default: features/journals/tags-216.journal +linewrap: 80 +password: '' +tagsymbols: '@' +timeformat: '%Y-%m-%d %H:%M' +indent_character: "|" diff --git a/features/data/configs/tags-237.yaml b/features/data/configs/tags-237.yaml new file mode 100644 index 00000000..2b360f6f --- /dev/null +++ b/features/data/configs/tags-237.yaml @@ -0,0 +1,13 @@ +default_hour: 9 +default_minute: 0 +editor: '' +encrypt: false +highlight: true +template: false +journals: + default: features/journals/tags-237.journal +linewrap: 80 +password: '' +tagsymbols: '@' +timeformat: '%Y-%m-%d %H:%M' +indent_character: "|" diff --git a/features/data/configs/tags.yaml b/features/data/configs/tags.yaml new file mode 100644 index 00000000..51a2b8b2 --- /dev/null +++ b/features/data/configs/tags.yaml @@ -0,0 +1,13 @@ +default_hour: 9 +default_minute: 0 +editor: '' +encrypt: false +highlight: true +template: false +journals: + default: features/journals/tags.journal +linewrap: 80 +password: '' +tagsymbols: '@' +timeformat: '%Y-%m-%d %H:%M' +indent_character: "|" diff --git a/features/data/configs/unreadabledates.yaml b/features/data/configs/unreadabledates.yaml new file mode 100644 index 00000000..474e7aae --- /dev/null +++ b/features/data/configs/unreadabledates.yaml @@ -0,0 +1,12 @@ +default_hour: 9 +default_minute: 0 +editor: "" +encrypt: false +highlight: true +journals: + default: features/journals/unreadabledates.journal +linewrap: 80 +tagsymbols: "@" +template: false +timeformat: "%Y-%m-%d %H:%M" +indent_character: "|" diff --git a/features/data/configs/upgrade_from_195.json b/features/data/configs/upgrade_from_195.json new file mode 100644 index 00000000..ec380372 --- /dev/null +++ b/features/data/configs/upgrade_from_195.json @@ -0,0 +1,11 @@ +{ +"default_hour": 9, +"timeformat": "%Y-%m-%d %H:%M", +"linewrap": 80, +"encrypt": false, +"editor": "", +"default_minute": 0, +"highlight": true, +"journals": {"default": "features/journals/simple_jrnl-1-9-5.journal"}, +"tagsymbols": "@" +} diff --git a/features/data/journals/brackets.journal b/features/data/journals/brackets.journal new file mode 100644 index 00000000..4649ea3e --- /dev/null +++ b/features/data/journals/brackets.journal @@ -0,0 +1,2 @@ +[2019-07-08 05:42] Entry subject +[1] line starting with 1 diff --git a/features/data/journals/bug153.dayone/entries/B40EE704E15846DE8D45C44118A4D511.doentry b/features/data/journals/bug153.dayone/entries/B40EE704E15846DE8D45C44118A4D511.doentry new file mode 100644 index 00000000..066821bb --- /dev/null +++ b/features/data/journals/bug153.dayone/entries/B40EE704E15846DE8D45C44118A4D511.doentry @@ -0,0 +1,56 @@ + + + + + Creation Date + 2013-10-27T02:27:27Z + Creator + + Device Agent + iPhone/iPhone3,1 + Generation Date + 2013-10-27T07:02:27Z + Host Name + omrt104001 + OS Agent + iOS/7.0.3 + Software Agent + Day One (iOS)/1.11.4 + + Entry Text + Some text. + Location + + Administrative Area + Östergötlands län + Country + Sverige + Latitude + 58.383400000000000 + Locality + City + Longitude + 15.577170000000000 + Place Name + Street + + Starred + + Time Zone + Europe/Stockholm + UUID + B40EE704E15846DE8D45C44118A4D511 + Weather + + Celsius + 12 + Description + Clear + Fahrenheit + 54 + IconName + sunnyn.png + + + diff --git a/features/data/journals/bug153.dayone/entries/B40EE704E15846DE8D45C44118A4D512.doentry b/features/data/journals/bug153.dayone/entries/B40EE704E15846DE8D45C44118A4D512.doentry new file mode 100644 index 00000000..ea3efec5 --- /dev/null +++ b/features/data/journals/bug153.dayone/entries/B40EE704E15846DE8D45C44118A4D512.doentry @@ -0,0 +1,52 @@ + + Creation Date + 2013-10-27T02:27:27Z + Creator + + Device Agent + iPhone/iPhone3,1 + Generation Date + 2013-10-27T07:02:27Z + Host Name + omrt104001 + OS Agent + iOS/7.0.3 + Software Agent + Day One (iOS)/1.11.4 + + Entry Text + This is not a valid plist. + Location + + Administrative Area + Östergötlands län + Country + Sverige + Latitude + 58.383400000000000 + Locality + City + Longitude + 15.577170000000000 + Place Name + Street + + Starred + + Time Zone + Europe/Stockholm + UUID + B40EE704E15846DE8D45C44118A4D511 + Weather + + Celsius + 12 + Description + Clear + Fahrenheit + 54 + IconName + sunnyn.png + + + diff --git a/features/data/journals/dayone.dayone/entries/044F3747A38546168B572C2E3F217FA2.doentry b/features/data/journals/dayone.dayone/entries/044F3747A38546168B572C2E3F217FA2.doentry new file mode 100644 index 00000000..1ac26242 --- /dev/null +++ b/features/data/journals/dayone.dayone/entries/044F3747A38546168B572C2E3F217FA2.doentry @@ -0,0 +1,34 @@ + + + + + Creation Date + 2013-05-17T18:39:20Z + Creator + + Device Agent + Macintosh/MacBookAir5,2 + Generation Date + 2013-08-17T18:39:20Z + Host Name + Egeria + OS Agent + Mac OS X/10.8.4 + Software Agent + Day One (Mac)/1.8 + + Entry Text + This entry has tags! + Starred + + Tags + + work + PLaY + + Time Zone + America/Los_Angeles + UUID + 044F3747A38546168B572C2E3F217FA2 + + diff --git a/features/data/journals/dayone.dayone/entries/0BDDD6CDA43C4A9AA2681517CC35AD9D.doentry b/features/data/journals/dayone.dayone/entries/0BDDD6CDA43C4A9AA2681517CC35AD9D.doentry new file mode 100644 index 00000000..927de884 --- /dev/null +++ b/features/data/journals/dayone.dayone/entries/0BDDD6CDA43C4A9AA2681517CC35AD9D.doentry @@ -0,0 +1,46 @@ + + + + + Creation Date + 2013-06-17T18:38:29Z + Creator + + Device Agent + Macintosh/MacBookAir5,2 + Generation Date + 2013-08-17T18:38:29Z + Host Name + Egeria + OS Agent + Mac OS X/10.8.4 + Software Agent + Day One (Mac)/1.8 + + Entry Text + This entry has a location. + Location + + Administrative Area + California + Country + Germany + Latitude + 52.4979764 + Locality + Berlin + Longitude + 13.2404758 + Place Name + Abandoned Spy Tower + + Starred + + Tags + + Time Zone + Europe/Berlin + UUID + 0BDDD6CDA43C4A9AA2681517CC35AD9D + + diff --git a/features/data/journals/dayone.dayone/entries/422BC895507944A291E6FC44FC6B8BFC.doentry b/features/data/journals/dayone.dayone/entries/422BC895507944A291E6FC44FC6B8BFC.doentry new file mode 100644 index 00000000..16260763 --- /dev/null +++ b/features/data/journals/dayone.dayone/entries/422BC895507944A291E6FC44FC6B8BFC.doentry @@ -0,0 +1,31 @@ + + + + + Creation Date + 2013-07-17T18:38:08Z + Creator + + Device Agent + Macintosh/MacBookAir5,2 + Generation Date + 2013-08-17T18:38:08Z + Host Name + Egeria + OS Agent + Mac OS X/10.8.4 + Software Agent + Day One (Mac)/1.8 + + Entry Text + This entry is starred! + Starred + + Tags + + Time Zone + America/Los_Angeles + UUID + 422BC895507944A291E6FC44FC6B8BFC + + diff --git a/features/data/journals/dayone.dayone/entries/4BB1F46946AD439996C9B59DE7C4DDC1.doentry b/features/data/journals/dayone.dayone/entries/4BB1F46946AD439996C9B59DE7C4DDC1.doentry new file mode 100644 index 00000000..9ebaf538 --- /dev/null +++ b/features/data/journals/dayone.dayone/entries/4BB1F46946AD439996C9B59DE7C4DDC1.doentry @@ -0,0 +1,29 @@ + + + + + Creation Date + 2013-01-17T18:37:50Z + Creator + + Device Agent + Macintosh/MacBookAir5,2 + Generation Date + 2013-08-17T18:37:50Z + Host Name + Egeria + OS Agent + Mac OS X/10.8.4 + Software Agent + Day One (Mac)/1.8 + + Entry Text + This is a DayOne entry without Timezone. + Starred + + Tags + + UUID + 4BB1F46946AD439996C9B59DE7C4DDC1 + + diff --git a/features/data/journals/empty_folder/empty.txt b/features/data/journals/empty_folder/empty.txt new file mode 100644 index 00000000..175b82b5 --- /dev/null +++ b/features/data/journals/empty_folder/empty.txt @@ -0,0 +1 @@ +Nothing to see here diff --git a/features/data/journals/encrypted.journal b/features/data/journals/encrypted.journal new file mode 100644 index 00000000..d2a5fcbe --- /dev/null +++ b/features/data/journals/encrypted.journal @@ -0,0 +1 @@ +gAAAAABVIHB7tnwKExG7aC5ZbAbBL9SG2oY2GENeoOJ22i1PZigOvCYvrQN3kpsu0KGr7ay5K-_46R5YFlqJvtQ8anPH2FSITsaZy-l5Lz_5quw3rmzhLwAR1tc0icgtR4MEpXEdsuQ7cyb12Xq-JLDrnATs0id5Vow9Ri_tE7Xe4BXgXaySn3aRPwWKoninVxVPVvETY3MXHSUEXV9OZ-pH5kYBLGYbLA== diff --git a/features/data/journals/encrypted_jrnl-1-9-5.journal b/features/data/journals/encrypted_jrnl-1-9-5.journal new file mode 100644 index 0000000000000000000000000000000000000000..339b47baf9671f4550efeb9b6a0cfcd5032255d6 GIT binary patch literal 128 zcmV-`0Du3(bJIGVsY(mXmoW-2hF&*L`0NbJTYlTUr8*^Qm97}8E^3^1bZ$P^M literal 0 HcmV?d00001 diff --git a/features/data/journals/markdown-headings-335.journal b/features/data/journals/markdown-headings-335.journal new file mode 100644 index 00000000..30f592ef --- /dev/null +++ b/features/data/journals/markdown-headings-335.journal @@ -0,0 +1,42 @@ +[2015-04-14 13:23] Heading Test + +H1-1 += + +H1-2 +=== + +H1-3 +============================ + +H2-1 +- + +H2-2 +--- + +H2-3 +---------------------------------- + +Horizontal Rules (ignore) + +--- + +=== + +# ATX H1 + +## ATX H2 + +### ATX H3 + +#### ATX H4 + +##### ATX H5 + +###### ATX H6 + +Stuff + +More stuff +more stuff again diff --git a/features/data/journals/mostlyreadabledates.journal b/features/data/journals/mostlyreadabledates.journal new file mode 100644 index 00000000..bd211bf5 --- /dev/null +++ b/features/data/journals/mostlyreadabledates.journal @@ -0,0 +1,8 @@ +[2019-07-18 14:23] Entry subject +Time machines are possible. I know, because I've built one in my garage. + +[2019-07-19 14:23] Entry subject +I'm going to activate the machine. Nobody knows what comes next after this. Or before this? + +[2019-07 14:23] Entry subject +I've crossed so many timelines. Is there any going back? diff --git a/features/data/journals/simple.journal b/features/data/journals/simple.journal new file mode 100644 index 00000000..8336068e --- /dev/null +++ b/features/data/journals/simple.journal @@ -0,0 +1,5 @@ +[2013-06-09 15:39] My first entry. +Everything is alright + +[2013-06-10 15:40] Life is good. +But I'm better. diff --git a/features/data/journals/simple_jrnl-1-9-5.journal b/features/data/journals/simple_jrnl-1-9-5.journal new file mode 100644 index 00000000..7bb6c5ac --- /dev/null +++ b/features/data/journals/simple_jrnl-1-9-5.journal @@ -0,0 +1,13 @@ +2010-06-10 15:00 A life without chocolate is like a bad analogy. + +2013-06-10 15:40 He said "[this] is the best time to be alive". +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent malesuada +quis est ac dignissim. Aliquam dignissim rutrum pretium. Phasellus pellentesque +augue et venenatis facilisis. + +[2019-08-03 12:55] Some chat log or something + +Suspendisse potenti. Sed dignissim sed nisl eu consequat. Aenean ante ex, +elementum ut interdum et, mattis eget lacus. In commodo nulla nec tellus +placerat, sed ultricies metus bibendum. Duis eget venenatis erat. In at dolor +dui. diff --git a/features/data/journals/tags-216.journal b/features/data/journals/tags-216.journal new file mode 100644 index 00000000..08b6d630 --- /dev/null +++ b/features/data/journals/tags-216.journal @@ -0,0 +1,2 @@ +[2013-06-10 15:40] I programmed for @OS/2. +Almost makes me want to go back to @C++, though. (Still better than @C#). diff --git a/features/data/journals/tags-237.journal b/features/data/journals/tags-237.journal new file mode 100644 index 00000000..be050652 --- /dev/null +++ b/features/data/journals/tags-237.journal @@ -0,0 +1,3 @@ +[2014-07-22 11:11] This entry has an email. +@Newline tag should show as a tag. +Kyla's @email is kyla@clevelandunderdog.org and Guinness's is guinness@fortheloveofpits.org. diff --git a/features/data/journals/tags.journal b/features/data/journals/tags.journal new file mode 100644 index 00000000..a28f3159 --- /dev/null +++ b/features/data/journals/tags.journal @@ -0,0 +1,8 @@ +[2013-04-09 15:39] I have an @idea: +(1) write a command line @journal software +(2) ??? +(3) PROFIT! + +[2013-06-10 15:40] I met with @dan. +As alway's he shared his latest @idea on how to rule the world with me. +inst diff --git a/features/data/journals/unreadabledates.journal b/features/data/journals/unreadabledates.journal new file mode 100644 index 00000000..53ef1d60 --- /dev/null +++ b/features/data/journals/unreadabledates.journal @@ -0,0 +1,5 @@ +[ashasd7zdskhz7asdkjasd] Entry subject +I've lost track of time. + +[sadfhakjsdf88sdf7sdff] Entry subject +Time has no meaning. diff --git a/features/data/journals/work.journal b/features/data/journals/work.journal new file mode 100644 index 00000000..e69de29b diff --git a/features/data/templates/sample.template b/features/data/templates/sample.template new file mode 100644 index 00000000..a356d823 --- /dev/null +++ b/features/data/templates/sample.template @@ -0,0 +1,19 @@ +--- +extension: txt +--- + +{% block journal %} +{% for entry in entries %} +{% include entry %} +{% endfor %} + +{% endblock %} + +{% block entry %} +{{ entry.title }} +{{ "-" * len(entry.title) }} + +{{ entry.body }} + +{% endblock %} +` diff --git a/features/encryption.feature b/features/encryption.feature new file mode 100644 index 00000000..82d971eb --- /dev/null +++ b/features/encryption.feature @@ -0,0 +1,31 @@ + Feature: Encrypted journals + Scenario: Loading an encrypted journal + Given we use the config "encrypted.yaml" + When we run "jrnl -n 1" and enter "bad doggie no biscuit" + Then we should see the message "Password" + and the output should contain "2013-06-10 15:40 Life is good" + + Scenario: Decrypting a journal + Given we use the config "encrypted.yaml" + When we run "jrnl --decrypt" and enter "bad doggie no biscuit" + Then the config for journal "default" should have "encrypt" set to "bool:False" + Then we should see the message "Journal decrypted" + and the journal should have 2 entries + + Scenario: Encrypting a journal + Given we use the config "basic.yaml" + When we run "jrnl --encrypt" and enter "swordfish" + Then we should see the message "Journal encrypted" + and the config for journal "default" should have "encrypt" set to "bool:True" + When we run "jrnl -n 1" and enter "swordfish" + Then we should see the message "Password" + and the output should contain "2013-06-10 15:40 Life is good" + + Scenario: Storing a password in Keychain + Given we use the config "multiple.yaml" + When we run "jrnl simple --encrypt" and enter "sabertooth" + When we set the keychain password of "simple" to "sabertooth" + Then the config for journal "simple" should have "encrypt" set to "bool:True" + When we run "jrnl simple -n 1" + Then we should not see the message "Password" + and the output should contain "2013-06-10 15:40 Life is good" diff --git a/features/environment.py b/features/environment.py new file mode 100644 index 00000000..6f9ac5df --- /dev/null +++ b/features/environment.py @@ -0,0 +1,42 @@ +from behave import * +import shutil +import os +import jrnl +try: + from io import StringIO +except ImportError: + from cStringIO import StringIO + +def before_scenario(context, scenario): + """Before each scenario, backup all config and journal test data.""" + context.messages = StringIO() + jrnl.util.STDERR = context.messages + jrnl.util.TEST = True + + # Clean up in case something went wrong + for folder in ("configs", "journals"): + working_dir = os.path.join("features", folder) + if os.path.exists(working_dir): + shutil.rmtree(working_dir) + + + for folder in ("configs", "journals"): + original = os.path.join("features", "data", folder) + working_dir = os.path.join("features", folder) + if not os.path.exists(working_dir): + os.mkdir(working_dir) + for filename in os.listdir(original): + source = os.path.join(original, filename) + if os.path.isdir(source): + shutil.copytree(source, os.path.join(working_dir, filename)) + else: + shutil.copy2(source, working_dir) + +def after_scenario(context, scenario): + """After each scenario, restore all test data and remove working_dirs.""" + context.messages.close() + context.messages = None + for folder in ("configs", "journals"): + working_dir = os.path.join("features", folder) + if os.path.exists(working_dir): + shutil.rmtree(working_dir) diff --git a/features/exporting.feature b/features/exporting.feature new file mode 100644 index 00000000..db2ef5b3 --- /dev/null +++ b/features/exporting.feature @@ -0,0 +1,85 @@ +Feature: Exporting a Journal + + Scenario: Exporting to json + Given we use the config "tags.yaml" + When we run "jrnl --export json" + Then we should get no error + and the output should be parsable as json + and "entries" in the json output should have 2 elements + and "tags" in the json output should contain "@idea" + and "tags" in the json output should contain "@journal" + and "tags" in the json output should contain "@dan" + + Scenario: Exporting using filters should only export parts of the journal + Given we use the config "tags.yaml" + When we run "jrnl -until 'may 2013' --export json" + # Then we should get no error + Then the output should be parsable as json + and "entries" in the json output should have 1 element + and "tags" in the json output should contain "@idea" + and "tags" in the json output should contain "@journal" + and "tags" in the json output should not contain "@dan" + + Scenario: Exporting using custom templates + Given we use the config "basic.yaml" + Given we load template "sample.template" + When we run "jrnl --export sample" + Then the output should be + """ + My first entry. + --------------- + + Everything is alright + + Life is good. + ------------- + + But I'm better. + """ + + Scenario: Increasing Headings on Markdown export + Given we use the config "markdown-headings-335.yaml" + When we run "jrnl --export markdown" + Then the output should be + """ + # 2015 + + ## April + + ### 2015-04-14 13:23 Heading Test + + #### H1-1 + + #### H1-2 + + #### H1-3 + + ##### H2-1 + + ##### H2-2 + + ##### H2-3 + + Horizontal Rules (ignore) + + --- + + === + + #### ATX H1 + + ##### ATX H2 + + ###### ATX H3 + + ####### ATX H4 + + ######## ATX H5 + + ######### ATX H6 + + Stuff + + More stuff + more stuff again + """ diff --git a/features/multiple_journals.feature b/features/multiple_journals.feature new file mode 100644 index 00000000..1d4943ee --- /dev/null +++ b/features/multiple_journals.feature @@ -0,0 +1,46 @@ +Feature: Multiple journals + + Scenario: Loading a config with two journals + Given we use the config "multiple.yaml" + Then journal "default" should have 2 entries + and journal "work" should have 0 entries + + Scenario: Write to default config by default + Given we use the config "multiple.yaml" + When we run "jrnl this goes to default" + Then journal "default" should have 3 entries + and journal "work" should have 0 entries + + Scenario: Write to specified journal + Given we use the config "multiple.yaml" + When we run "jrnl work a long day in the office" + Then journal "default" should have 2 entries + and journal "work" should have 1 entry + + Scenario: Tell user which journal was used + Given we use the config "multiple.yaml" + When we run "jrnl work a long day in the office" + Then we should see the message "Entry added to work journal" + + Scenario: Write to specified journal with a timestamp + Given we use the config "multiple.yaml" + When we run "jrnl work 23 july 2012: a long day in the office" + Then journal "default" should have 2 entries + and journal "work" should have 1 entry + and journal "work" should contain "2012-07-23" + + Scenario: Create new journals as required + Given we use the config "multiple.yaml" + Then journal "ideas" should not exist + When we run "jrnl ideas 23 july 2012: sell my junk on ebay and make lots of money" + Then journal "ideas" should have 1 entry + + Scenario: Don't crash if no default journal is specified + Given we use the config "bug343.yaml" + When we run "jrnl a long day in the office" + Then we should see the message "No default journal configured" + + Scenario: Don't crash if no file exists for a configured encrypted journal + Given we use the config "multiple.yaml" + When we run "jrnl new_encrypted Adding first entry" and enter "these three eyes" + Then we should see the message "Journal 'new_encrypted' created" diff --git a/features/regression.feature b/features/regression.feature new file mode 100644 index 00000000..3e644b19 --- /dev/null +++ b/features/regression.feature @@ -0,0 +1,64 @@ +Feature: Zapped bugs should stay dead. + + Scenario: Writing an entry does not print the entire journal + # https://github.com/maebert/jrnl/issues/87 + Given we use the config "basic.yaml" + When we run "jrnl 23 july 2013: A cold and stormy day. I ate crisps on the sofa." + Then we should see the message "Entry added" + When we run "jrnl -n 1" + Then the output should not contain "Life is good" + + Scenario: Date with time should be parsed correctly + # https://github.com/maebert/jrnl/issues/117 + Given we use the config "basic.yaml" + When we run "jrnl 2013-11-30 15:42: Project Started." + Then we should see the message "Entry added" + and the journal should contain "[2013-11-30 15:42] Project Started." + + Scenario: Date in the future should be parsed correctly + # https://github.com/maebert/jrnl/issues/185 + Given we use the config "basic.yaml" + When we run "jrnl 26/06/2019: Planet? Earth. Year? 2019." + Then we should see the message "Entry added" + and the journal should contain "[2019-06-26 09:00] Planet?" + + Scenario: Loading entry with ambiguous time stamp + #https://github.com/maebert/jrnl/issues/153 + Given we use the config "bug153.yaml" + When we run "jrnl -1" + Then we should get no error + and the output should be + """ + 2013-10-27 03:27 Some text. + """ + + Scenario: Title with an embedded period. + Given we use the config "basic.yaml" + When we run "jrnl 04-24-2014: Created a new website - empty.com. Hope to get a lot of traffic." + Then we should see the message "Entry added" + When we run "jrnl -1" + Then the output should be + """ + 2014-04-24 09:00 Created a new website - empty.com. + | Hope to get a lot of traffic. + """ + + Scenario: Integers in square brackets should not be read as dates + Given we use the config "brackets.yaml" + When we run "jrnl -1" + Then the output should contain "[1] line starting with 1" + + Scenario: Journals with unreadable dates should still be viewable + Given we use the config "unreadabledates.yaml" + When we run "jrnl -2" + Then the output should contain "I've lost track of time." + Then the output should contain "Time has no meaning." + + Scenario: Journals with readable dates AND unreadable dates should still contain all data. + Given we use the config "mostlyreadabledates.yaml" + When we run "jrnl -3" + Then the output should contain "Time machines are possible." + When we run "jrnl -1" + Then the output should contain "I'm going to activate the machine." + Then the output should contain "I've crossed so many timelines. Is there any going back?" + diff --git a/features/starring.feature b/features/starring.feature new file mode 100644 index 00000000..18113dc3 --- /dev/null +++ b/features/starring.feature @@ -0,0 +1,20 @@ +Feature: Starring entries + + Scenario: Starring an entry will mark it in the journal file + Given we use the config "basic.yaml" + When we run "jrnl 20 july 2013 *: Best day of my life!" + Then we should see the message "Entry added" + and the journal should contain "[2013-07-20 09:00] Best day of my life! *" + + Scenario: Filtering by starred entries + Given we use the config "basic.yaml" + When we run "jrnl -starred" + Then the output should be + """ + """ + When we run "jrnl 20 july 2013 *: Best day of my life!" + When we run "jrnl -starred" + Then the output should be + """ + 2013-07-20 09:00 Best day of my life! + """ diff --git a/features/steps/core.py b/features/steps/core.py new file mode 100644 index 00000000..83981d13 --- /dev/null +++ b/features/steps/core.py @@ -0,0 +1,260 @@ +from __future__ import unicode_literals +from __future__ import absolute_import + +from behave import given, when, then +from jrnl import cli, install, Journal, util, plugins +from jrnl import __version__ +from dateutil import parser as date_parser +from collections import defaultdict +import os +import json +import yaml +import keyring + + +class TestKeyring(keyring.backend.KeyringBackend): + """A test keyring that just stores its valies in a hash""" + + priority = 1 + keys = defaultdict(dict) + + def set_password(self, servicename, username, password): + self.keys[servicename][username] = password + + def get_password(self, servicename, username): + return self.keys[servicename].get(username) + + def delete_password(self, servicename, username, password): + self.keys[servicename][username] = None + +# set the keyring for keyring lib +keyring.set_keyring(TestKeyring()) + + +try: + from io import StringIO +except ImportError: + from cStringIO import StringIO +import tzlocal +import shlex +import sys + + +def ushlex(command): + if sys.version_info[0] == 3: + return shlex.split(command) + return map(lambda s: s.decode('UTF8'), shlex.split(command.encode('utf8'))) + + +def read_journal(journal_name="default"): + config = util.load_config(install.CONFIG_FILE_PATH) + with open(config['journals'][journal_name]) as journal_file: + journal = journal_file.read() + return journal + + +def open_journal(journal_name="default"): + config = util.load_config(install.CONFIG_FILE_PATH) + journal_conf = config['journals'][journal_name] + if type(journal_conf) is dict: # We can override the default config on a by-journal basis + config.update(journal_conf) + else: # But also just give them a string to point to the journal file + config['journal'] = journal_conf + return Journal.open_journal(journal_name, config) + + +@given('we use the config "{config_file}"') +def set_config(context, config_file): + full_path = os.path.join("features/configs", config_file) + install.CONFIG_FILE_PATH = os.path.abspath(full_path) + if config_file.endswith("yaml"): + # Add jrnl version to file for 2.x journals + with open(install.CONFIG_FILE_PATH, 'a') as cf: + cf.write("version: {}".format(__version__)) + + +@when('we run "{command}" and enter') +@when('we run "{command}" and enter "{inputs}"') +def run_with_input(context, command, inputs=None): + text = inputs or context.text + args = ushlex(command)[1:] + buffer = StringIO(text.strip()) + util.STDIN = buffer + try: + cli.run(args or []) + context.exit_status = 0 + except SystemExit as e: + context.exit_status = e.code + + +@when('we run "{command}"') +def run(context, command): + args = ushlex(command)[1:] + try: + cli.run(args or None) + context.exit_status = 0 + except SystemExit as e: + context.exit_status = e.code + + +@given('we load template "{filename}"') +def load_template(context, filename): + full_path = os.path.join("features/data/templates", filename) + exporter = plugins.template_exporter.__exporter_from_file(full_path) + plugins.__exporter_types[exporter.names[0]] = exporter + + +@when('we set the keychain password of "{journal}" to "{password}"') +def set_keychain(context, journal, password): + keyring.set_password('jrnl', journal, password) + + +@then('we should get an error') +def has_error(context): + assert context.exit_status != 0, context.exit_status + + +@then('we should get no error') +def no_error(context): + assert context.exit_status is 0, context.exit_status + + +@then('the output should be parsable as json') +def check_output_json(context): + out = context.stdout_capture.getvalue() + assert json.loads(out), out + + +@then('"{field}" in the json output should have {number:d} elements') +@then('"{field}" in the json output should have 1 element') +def check_output_field(context, field, number=1): + out = context.stdout_capture.getvalue() + out_json = json.loads(out) + assert field in out_json, [field, out_json] + assert len(out_json[field]) == number, len(out_json[field]) + + +@then('"{field}" in the json output should not contain "{key}"') +def check_output_field_not_key(context, field, key): + out = context.stdout_capture.getvalue() + out_json = json.loads(out) + assert field in out_json + assert key not in out_json[field] + + +@then('"{field}" in the json output should contain "{key}"') +def check_output_field_key(context, field, key): + out = context.stdout_capture.getvalue() + out_json = json.loads(out) + assert field in out_json + assert key in out_json[field] + + +@then('the json output should contain {path} = "{value}"') +def check_json_output_path(context, path, value): + """ E.g. + the json output should contain entries.0.title = "hello" + """ + out = context.stdout_capture.getvalue() + struct = json.loads(out) + + for node in path.split('.'): + try: + struct = struct[int(node)] + except ValueError: + struct = struct[node] + assert struct == value, struct + + +@then('the output should be') +@then('the output should be "{text}"') +def check_output(context, text=None): + text = (text or context.text).strip().splitlines() + out = context.stdout_capture.getvalue().strip().splitlines() + assert len(text) == len(out), "Output has {} lines (expected: {})".format(len(out), len(text)) + for line_text, line_out in zip(text, out): + assert line_text.strip() == line_out.strip(), [line_text.strip(), line_out.strip()] + + +@then('the output should contain "{text}" in the local time') +def check_output_time_inline(context, text): + out = context.stdout_capture.getvalue() + local_tz = tzlocal.get_localzone() + utc_time = date_parser.parse(text) + local_date = utc_time.astimezone(local_tz).strftime("%Y-%m-%d %H:%M") + assert local_date in out, local_date + + +@then('the output should contain') +@then('the output should contain "{text}"') +def check_output_inline(context, text=None): + text = text or context.text + out = context.stdout_capture.getvalue() + if isinstance(out, bytes): + out = out.decode('utf-8') + assert text in out, text + + +@then('the output should not contain "{text}"') +def check_output_not_inline(context, text): + out = context.stdout_capture.getvalue() + if isinstance(out, bytes): + out = out.decode('utf-8') + assert text not in out + + +@then('we should see the message "{text}"') +def check_message(context, text): + out = context.messages.getvalue() + assert text in out, [text, out] + + +@then('we should not see the message "{text}"') +def check_not_message(context, text): + out = context.messages.getvalue() + assert text not in out, [text, out] + + +@then('the journal should contain "{text}"') +@then('journal "{journal_name}" should contain "{text}"') +def check_journal_content(context, text, journal_name="default"): + journal = read_journal(journal_name) + assert text in journal, journal + + +@then('journal "{journal_name}" should not exist') +def journal_doesnt_exist(context, journal_name="default"): + with open(install.CONFIG_FILE_PATH) as config_file: + config = yaml.load(config_file, Loader=yaml.FullLoader) + journal_path = config['journals'][journal_name] + assert not os.path.exists(journal_path) + + +@then('the config should have "{key}" set to "{value}"') +@then('the config for journal "{journal}" should have "{key}" set to "{value}"') +def config_var(context, key, value, journal=None): + t, value = value.split(":") + value = { + "bool": lambda v: v.lower() == "true", + "int": int, + "str": str + }[t](value) + config = util.load_config(install.CONFIG_FILE_PATH) + if journal: + config = config["journals"][journal] + assert key in config + assert config[key] == value + + +@then('the journal should have {number:d} entries') +@then('the journal should have {number:d} entry') +@then('journal "{journal_name}" should have {number:d} entries') +@then('journal "{journal_name}" should have {number:d} entry') +def check_journal_entries(context, number, journal_name="default"): + journal = open_journal(journal_name) + assert len(journal.entries) == number + + +@then('fail') +def debug_fail(context): + assert False diff --git a/features/tagging.feature b/features/tagging.feature new file mode 100644 index 00000000..2cbf7ce1 --- /dev/null +++ b/features/tagging.feature @@ -0,0 +1,84 @@ +Feature: Tagging + + Scenario: Displaying tags + Given we use the config "tags.yaml" + When we run "jrnl --tags" + Then we should get no error + and the output should be + """ + @idea : 2 + @journal : 1 + @dan : 1 + """ + + Scenario: Filtering journals should also filter tags + Given we use the config "tags.yaml" + When we run "jrnl -from 'may 2013' --tags" + Then we should get no error + and the output should be + """ + @idea : 1 + @dan : 1 + """ + + Scenario: Tags should allow certain special characters + Given we use the config "tags-216.yaml" + When we run "jrnl --tags" + Then we should get no error + and the output should be + """ + @os/2 : 1 + @c++ : 1 + @c# : 1 + """ + Scenario: An email should not be a tag + Given we use the config "tags-237.yaml" + When we run "jrnl --tags" + Then we should get no error + and the output should be + """ + @newline : 1 + @email : 1 + """ + + Scenario: Entry cans start and end with tags + Given we use the config "basic.yaml" + When we run "jrnl today: @foo came over, we went to a @bar" + When we run "jrnl --tags" + Then the output should be + """ + @foo : 1 + @bar : 1 + """ + + Scenario: Excluding a tag should filter it + Given we use the config "basic.yaml" + When we run "jrnl today: @foo came over, we went to a bar" + When we run "jrnl I have decided I did not enjoy that @bar" + When we run "jrnl --tags -not @bar" + Then the output should be + """ + @foo : 1 + """ + + Scenario: Excluding a tag should filter an entry, even if an unfiltered tag is in that entry + Given we use the config "basic.yaml" + When we run "jrnl today: I do @not think this will show up @thought" + When we run "jrnl today: I think this will show up @thought" + When we run "jrnl --tags -not @not" + Then the output should be + """ + @thought : 1 + """ + + Scenario: Excluding multiple tags should filter them + Given we use the config "basic.yaml" + When we run "jrnl today: I do @not think this will show up @thought" + When we run "jrnl today: I think this will show up @thought" + When we run "jrnl today: This should @never show up @thought" + When we run "jrnl today: What a nice day for filtering @thought" + When we run "jrnl --tags -not @not @never" + Then the output should be + """ + @thought : 2 + """ diff --git a/features/upgrade.feature b/features/upgrade.feature new file mode 100644 index 00000000..bce026b8 --- /dev/null +++ b/features/upgrade.feature @@ -0,0 +1,23 @@ +Feature: Upgrading Journals from 1.x.x to 2.x.x + + Scenario: Upgrade and parse journals with square brackets + Given we use the config "upgrade_from_195.json" + When we run "jrnl -9" and enter "Y" + Then the output should contain + """ + 2010-06-10 15:00 A life without chocolate is like a bad analogy. + + 2013-06-10 15:40 He said "[this] is the best time to be alive". + """ + Then the journal should have 2 entries + + Scenario: Upgrading a journal encrypted with jrnl 1.x + Given we use the config "encrypted_old.json" + When we run "jrnl -n 1" and enter + """ + Y + bad doggie no biscuit + bad doggie no biscuit + """ + Then we should see the message "Password" + and the output should contain "2013-06-10 15:40 Life is good" diff --git a/jrnl/DayOneJournal.py b/jrnl/DayOneJournal.py new file mode 100644 index 00000000..9e988f78 --- /dev/null +++ b/jrnl/DayOneJournal.py @@ -0,0 +1,146 @@ +#!/usr/bin/env python +# encoding: utf-8 + +from __future__ import absolute_import, unicode_literals +from . import Entry +from . import Journal +from . import time as jrnl_time +import os +import re +from datetime import datetime +import time +import fnmatch +import plistlib +import pytz +import uuid +import tzlocal +from xml.parsers.expat import ExpatError + + +class DayOne(Journal.Journal): + """A special Journal handling DayOne files""" + + # InvalidFileException was added to plistlib in Python3.4 + PLIST_EXCEPTIONS = (ExpatError, plistlib.InvalidFileException) if hasattr(plistlib, "InvalidFileException") else ExpatError + + def __init__(self, **kwargs): + self.entries = [] + self._deleted_entries = [] + super(DayOne, self).__init__(**kwargs) + + def open(self): + filenames = [os.path.join(self.config['journal'], "entries", f) for f in os.listdir(os.path.join(self.config['journal'], "entries"))] + filenames = [] + for root, dirnames, f in os.walk(self.config['journal']): + for filename in fnmatch.filter(f, '*.doentry'): + filenames.append(os.path.join(root, filename)) + self.entries = [] + for filename in filenames: + with open(filename, 'rb') as plist_entry: + try: + dict_entry = plistlib.readPlist(plist_entry) + except self.PLIST_EXCEPTIONS: + pass + else: + try: + timezone = pytz.timezone(dict_entry['Time Zone']) + except (KeyError, pytz.exceptions.UnknownTimeZoneError): + timezone = tzlocal.get_localzone() + date = dict_entry['Creation Date'] + date = date + timezone.utcoffset(date, is_dst=False) + entry = Entry.Entry(self, date, text=dict_entry['Entry Text'], starred=dict_entry["Starred"]) + entry.uuid = dict_entry["UUID"] + entry._tags = [self.config['tagsymbols'][0] + tag.lower() for tag in dict_entry.get("Tags", [])] + + self.entries.append(entry) + self.sort() + return self + + def write(self): + """Writes only the entries that have been modified into plist files.""" + for entry in self.entries: + if entry.modified: + utc_time = datetime.utcfromtimestamp(time.mktime(entry.date.timetuple())) + + if not hasattr(entry, "uuid"): + entry.uuid = uuid.uuid1().hex + + filename = os.path.join(self.config['journal'], "entries", entry.uuid.upper() + ".doentry") + + entry_plist = { + 'Creation Date': utc_time, + 'Starred': entry.starred if hasattr(entry, 'starred') else False, + 'Entry Text': entry.title + "\n" + entry.body, + 'Time Zone': str(tzlocal.get_localzone()), + 'UUID': entry.uuid.upper(), + 'Tags': [tag.strip(self.config['tagsymbols']).replace("_", " ") for tag in entry.tags] + } + plistlib.writePlist(entry_plist, filename) + for entry in self._deleted_entries: + filename = os.path.join(self.config['journal'], "entries", entry.uuid + ".doentry") + os.remove(filename) + + def editable_str(self): + """Turns the journal into a string of entries that can be edited + manually and later be parsed with eslf.parse_editable_str.""" + return "\n".join(["# {0}\n{1}".format(e.uuid, e.__unicode__()) for e in self.entries]) + + def parse_editable_str(self, edited): + """Parses the output of self.editable_str and updates its entries.""" + # Method: create a new list of entries from the edited text, then match + # UUIDs of the new entries against self.entries, updating the entries + # if the edited entries differ, and deleting entries from self.entries + # if they don't show up in the edited entries anymore. + + # Initialise our current entry + entries = [] + current_entry = None + + for line in edited.splitlines(): + # try to parse line as UUID => new entry begins + line = line.rstrip() + m = re.match("# *([a-f0-9]+) *$", line.lower()) + if m: + if current_entry: + entries.append(current_entry) + current_entry = Entry.Entry(self) + current_entry.modified = False + current_entry.uuid = m.group(1).lower() + else: + date_blob_re = re.compile("^\[[^\\]]+\] ") + date_blob = date_blob_re.findall(line) + if date_blob: + date_blob = date_blob[0] + new_date = jrnl_time.parse(date_blob.strip(" []")) + if line.endswith("*"): + current_entry.starred = True + line = line[:-1] + current_entry.title = line[len(date_blob) - 1:] + current_entry.date = new_date + elif current_entry: + current_entry.body += line + "\n" + + # Append last entry + if current_entry: + entries.append(current_entry) + + # Now, update our current entries if they changed + for entry in entries: + entry._parse_text() + matched_entries = [e for e in self.entries if e.uuid.lower() == entry.uuid] + if matched_entries: + # This entry is an existing entry + match = matched_entries[0] + if match != entry: + self.entries.remove(match) + entry.modified = True + self.entries.append(entry) + else: + # This entry seems to be new... save it. + entry.modified = True + self.entries.append(entry) + # Remove deleted entries + edited_uuids = [e.uuid for e in entries] + self._deleted_entries = [e for e in self.entries if e.uuid not in edited_uuids] + self.entries[:] = [e for e in self.entries if e.uuid in edited_uuids] + return entries diff --git a/jrnl/EncryptedJournal.py b/jrnl/EncryptedJournal.py new file mode 100644 index 00000000..a83651e4 --- /dev/null +++ b/jrnl/EncryptedJournal.py @@ -0,0 +1,127 @@ +from . import Journal, util +from cryptography.fernet import Fernet, InvalidToken +from cryptography.hazmat.primitives import hashes, padding +from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes +import hashlib +from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC +from cryptography.hazmat.backends import default_backend +import sys +import os +import base64 +import getpass +import logging + +log = logging.getLogger() + + +def make_key(password): + password = util.bytes(password) + kdf = PBKDF2HMAC( + algorithm=hashes.SHA256(), + length=32, + # Salt is hard-coded + salt=b'\xf2\xd5q\x0e\xc1\x8d.\xde\xdc\x8e6t\x89\x04\xce\xf8', + iterations=100000, + backend=default_backend() + ) + key = kdf.derive(password) + return base64.urlsafe_b64encode(key) + + +class EncryptedJournal(Journal.Journal): + def __init__(self, name='default', **kwargs): + super(EncryptedJournal, self).__init__(name, **kwargs) + self.config['encrypt'] = True + + def open(self, filename=None): + """Opens the journal file defined in the config and parses it into a list of Entries. + Entries have the form (date, title, body).""" + filename = filename or self.config['journal'] + + if not os.path.exists(filename): + password = util.getpass("Enter password for new journal: ") + if password: + if util.yesno("Do you want to store the password in your keychain?", default=True): + util.set_keychain(self.name, password) + else: + util.set_keychain(self.name, None) + self.config['password'] = password + text = "" + self._store(filename, text) + util.prompt("[Journal '{0}' created at {1}]".format(self.name, filename)) + else: + util.prompt("No password supplied for encrypted journal") + sys.exit(1) + else: + text = self._load(filename) + self.entries = self._parse(text) + self.sort() + log.debug("opened %s with %d entries", self.__class__.__name__, len(self)) + return self + + + def _load(self, filename, password=None): + """Loads an encrypted journal from a file and tries to decrypt it. + If password is not provided, will look for password in the keychain + and otherwise ask the user to enter a password up to three times. + If the password is provided but wrong (or corrupt), this will simply + return None.""" + with open(filename, 'rb') as f: + journal_encrypted = f.read() + + def validate_password(password): + key = make_key(password) + try: + plain = Fernet(key).decrypt(journal_encrypted).decode('utf-8') + self.config['password'] = password + return plain + except (InvalidToken, IndexError): + return None + if password: + return validate_password(password) + return util.get_password(keychain=self.name, validator=validate_password) + + def _store(self, filename, text): + key = make_key(self.config['password']) + journal = Fernet(key).encrypt(text.encode('utf-8')) + with open(filename, 'wb') as f: + f.write(journal) + + @classmethod + def _create(cls, filename, password): + key = make_key(password) + dummy = Fernet(key).encrypt(b"") + with open(filename, 'wb') as f: + f.write(dummy) + + +class LegacyEncryptedJournal(Journal.LegacyJournal): + """Legacy class to support opening journals encrypted with the jrnl 1.x + standard. You'll not be able to save these journals anymore.""" + def __init__(self, name='default', **kwargs): + super(LegacyEncryptedJournal, self).__init__(name, **kwargs) + self.config['encrypt'] = True + + def _load(self, filename, password=None): + with open(filename, 'rb') as f: + journal_encrypted = f.read() + iv, cipher = journal_encrypted[:16], journal_encrypted[16:] + + def validate_password(password): + decryption_key = hashlib.sha256(password.encode('utf-8')).digest() + decryptor = Cipher(algorithms.AES(decryption_key), modes.CBC(iv), default_backend()).decryptor() + try: + plain_padded = decryptor.update(cipher) + decryptor.finalize() + self.config['password'] = password + if plain_padded[-1] in (" ", 32): + # Ancient versions of jrnl. Do not judge me. + return plain_padded.decode('utf-8').rstrip(" ") + else: + unpadder = padding.PKCS7(algorithms.AES.block_size).unpadder() + plain = unpadder.update(plain_padded) + unpadder.finalize() + return plain.decode('utf-8') + except ValueError: + return None + if password: + return validate_password(password) + return util.get_password(keychain=self.name, validator=validate_password) diff --git a/jrnl/Entry.py b/jrnl/Entry.py new file mode 100755 index 00000000..1306cef5 --- /dev/null +++ b/jrnl/Entry.py @@ -0,0 +1,124 @@ +#!/usr/bin/env python +# encoding: utf-8 + +from __future__ import unicode_literals +import re +import textwrap +from datetime import datetime +from .util import split_title + + +class Entry: + def __init__(self, journal, date=None, text="", starred=False): + self.journal = journal # Reference to journal mainly to access its config + self.date = date or datetime.now() + self.text = text + self._title = self._body = self._tags = None + self.starred = starred + self.modified = False + + @property + def fulltext(self): + return self.title + " " + self.body + + def _parse_text(self): + raw_text = self.text + lines = raw_text.splitlines() + if lines[0].strip().endswith("*"): + self.starred = True + raw_text = lines[0].strip("\n *") + "\n" + "\n".join(lines[1:]) + self._title, self._body = split_title(raw_text) + if self._tags is None: + self._tags = list(self._parse_tags()) + + @property + def title(self): + if self._title is None: + self._parse_text() + return self._title + + @property + def body(self): + if self._body is None: + self._parse_text() + return self._body + + @property + def tags(self): + if self._tags is None: + self._parse_text() + return self._tags + + @staticmethod + def tag_regex(tagsymbols): + pattern = r'(?u)(?:^|\s)([{tags}][-+*#/\w]+)'.format(tags=tagsymbols) + return re.compile(pattern, re.UNICODE) + + def _parse_tags(self): + tagsymbols = self.journal.config['tagsymbols'] + return set(tag.lower() for tag in re.findall(Entry.tag_regex(tagsymbols), self.text)) + + def __unicode__(self): + """Returns a string representation of the entry to be written into a journal file.""" + date_str = self.date.strftime(self.journal.config['timeformat']) + title = "[{}] {}".format(date_str, self.title.rstrip("\n ")) + if self.starred: + title += " *" + return "{title}{sep}{body}\n".format( + title=title, + sep="\n" if self.body.rstrip("\n ") else "", + body=self.body.rstrip("\n ") + ) + + def pprint(self, short=False): + """Returns a pretty-printed version of the entry. + If short is true, only print the title.""" + date_str = self.date.strftime(self.journal.config['timeformat']) + if self.journal.config['indent_character']: + indent = self.journal.config['indent_character'].rstrip() + " " + else: + indent = "" + if not short and self.journal.config['linewrap']: + title = textwrap.fill(date_str + " " + self.title, self.journal.config['linewrap']) + body = "\n".join([ + textwrap.fill( + line, + self.journal.config['linewrap'], + initial_indent=indent, + subsequent_indent=indent, + drop_whitespace=True) or indent + for line in self.body.rstrip(" \n").splitlines() + ]) + else: + title = date_str + " " + self.title.rstrip("\n ") + body = self.body.rstrip("\n ") + + # Suppress bodies that are just blanks and new lines. + has_body = len(self.body) > 20 or not all(char in (" ", "\n") for char in self.body) + + if short: + return title + else: + return "{title}{sep}{body}\n".format( + title=title, + sep="\n" if has_body else "", + body=body if has_body else "", + ) + + def __repr__(self): + return "".format(self.title.strip(), self.date.strftime("%Y-%m-%d %H:%M")) + + def __hash__(self): + return hash(self.__repr__()) + + def __eq__(self, other): + if not isinstance(other, Entry) \ + or self.title.strip() != other.title.strip() \ + or self.body.rstrip() != other.body.rstrip() \ + or self.date != other.date \ + or self.starred != other.starred: + return False + return True + + def __ne__(self, other): + return not self.__eq__(other) diff --git a/jrnl/Journal.py b/jrnl/Journal.py new file mode 100644 index 00000000..72fe94b1 --- /dev/null +++ b/jrnl/Journal.py @@ -0,0 +1,364 @@ +#!/usr/bin/env python +# encoding: utf-8 + +from __future__ import absolute_import, unicode_literals +from . import Entry +from . import util +from . import time +import os +import sys +import codecs +import re +from datetime import datetime +import logging + +log = logging.getLogger(__name__) + + +class Tag(object): + def __init__(self, name, count=0): + self.name = name + self.count = count + + def __str__(self): + return self.name + + def __repr__(self): + return "".format(self.name) + + +class Journal(object): + def __init__(self, name='default', **kwargs): + self.config = { + 'journal': "journal.txt", + 'encrypt': False, + 'default_hour': 9, + 'default_minute': 0, + 'timeformat': "%Y-%m-%d %H:%M", + 'tagsymbols': '@', + 'highlight': True, + 'linewrap': 80, + 'indent_character': '|', + } + self.config.update(kwargs) + # Set up date parser + self.search_tags = None # Store tags we're highlighting + self.name = name + + def __len__(self): + """Returns the number of entries""" + return len(self.entries) + + def __iter__(self): + """Iterates over the journal's entries.""" + return (entry for entry in self.entries) + + @classmethod + def from_journal(cls, other): + """Creates a new journal by copying configuration and entries from + another journal object""" + new_journal = cls(other.name, **other.config) + new_journal.entries = other.entries + log.debug("Imported %d entries from %s to %s", len(new_journal), other.__class__.__name__, cls.__name__) + return new_journal + + def import_(self, other_journal_txt): + self.entries = list(frozenset(self.entries) | frozenset(self._parse(other_journal_txt))) + self.sort() + + def open(self, filename=None): + """Opens the journal file defined in the config and parses it into a list of Entries. + Entries have the form (date, title, body).""" + filename = filename or self.config['journal'] + + if not os.path.exists(filename): + util.prompt("[Journal '{0}' created at {1}]".format(self.name, filename)) + self._create(filename) + + text = self._load(filename) + self.entries = self._parse(text) + self.sort() + log.debug("opened %s with %d entries", self.__class__.__name__, len(self)) + return self + + def write(self, filename=None): + """Dumps the journal into the config file, overwriting it""" + filename = filename or self.config['journal'] + text = self._to_text() + self._store(filename, text) + + def validate_parsing(self): + """Confirms that the jrnl is still parsed correctly after being dumped to text.""" + new_entries = self._parse(self._to_text()) + for i, entry in enumerate(self.entries): + if entry != new_entries[i]: + return False + return True + + def _to_text(self): + return "\n".join([e.__unicode__() for e in self.entries]) + + def _load(self, filename): + raise NotImplementedError + + def _store(self, filename, text): + raise NotImplementedError + + @classmethod + def _create(cls, filename): + raise NotImplementedError + + def _parse(self, journal_txt): + """Parses a journal that's stored in a string and returns a list of entries""" + + # Return empty array if the journal is blank + if not journal_txt: + return [] + + # Initialise our current entry + entries = [] + + date_blob_re = re.compile("(?:^|\n)\[([^\\]]+)\] ") + last_entry_pos = 0 + for match in date_blob_re.finditer(journal_txt): + date_blob = match.groups()[0] + new_date = time.parse(date_blob) + if new_date: + if entries: + entries[-1].text = journal_txt[last_entry_pos:match.start()] + last_entry_pos = match.end() + entries.append(Entry.Entry(self, date=new_date)) + + # If no entries were found, treat all the existing text as an entry made now + if not entries: + entries.append(Entry.Entry(self, date=time.parse("now"))) + + # Fill in the text of the last entry + entries[-1].text = journal_txt[last_entry_pos:] + + for entry in entries: + entry._parse_text() + return entries + + def __unicode__(self): + return self.pprint() + + def pprint(self, short=False): + """Prettyprints the journal's entries""" + sep = "\n" + pp = sep.join([e.pprint(short=short) for e in self.entries]) + if self.config['highlight']: # highlight tags + if self.search_tags: + for tag in self.search_tags: + tagre = re.compile(re.escape(tag), re.IGNORECASE) + pp = re.sub(tagre, + lambda match: util.colorize(match.group(0)), + pp, re.UNICODE) + else: + pp = re.sub( + Entry.Entry.tag_regex(self.config['tagsymbols']), + lambda match: util.colorize(match.group(0)), + pp + ) + return pp + + def __repr__(self): + return "".format(len(self.entries)) + + def sort(self): + """Sorts the Journal's entries by date""" + self.entries = sorted(self.entries, key=lambda entry: entry.date) + + def limit(self, n=None): + """Removes all but the last n entries""" + if n: + self.entries = self.entries[-n:] + + @property + def tags(self): + """Returns a set of tuples (count, tag) for all tags present in the journal.""" + # Astute reader: should the following line leave you as puzzled as me the first time + # I came across this construction, worry not and embrace the ensuing moment of enlightment. + tags = [tag + for entry in self.entries + for tag in set(entry.tags)] + # To be read: [for entry in journal.entries: for tag in set(entry.tags): tag] + tag_counts = set([(tags.count(tag), tag) for tag in tags]) + return [Tag(tag, count=count) for count, tag in sorted(tag_counts)] + + def filter(self, tags=[], start_date=None, end_date=None, starred=False, strict=False, short=False, exclude=[]): + """Removes all entries from the journal that don't match the filter. + + tags is a list of tags, each being a string that starts with one of the + tag symbols defined in the config, e.g. ["@John", "#WorldDomination"]. + + start_date and end_date define a timespan by which to filter. + + starred limits journal to starred entries + + If strict is True, all tags must be present in an entry. If false, the + + exclude is a list of the tags which should not appear in the results. + entry is kept if any tag is present, unless they appear in exclude.""" + self.search_tags = set([tag.lower() for tag in tags]) + excluded_tags = set([tag.lower() for tag in exclude]) + end_date = time.parse(end_date, inclusive=True) + start_date = time.parse(start_date) + + # If strict mode is on, all tags have to be present in entry + tagged = self.search_tags.issubset if strict else self.search_tags.intersection + excluded = lambda tags: len([tag for tag in tags if tag in excluded_tags]) > 0 + result = [ + entry for entry in self.entries + if (not tags or tagged(entry.tags)) + and (not starred or entry.starred) + and (not start_date or entry.date >= start_date) + and (not end_date or entry.date <= end_date) + and (not exclude or not excluded(entry.tags)) + ] + + self.entries = result + + def new_entry(self, raw, date=None, sort=True): + """Constructs a new entry from some raw text input. + If a date is given, it will parse and use this, otherwise scan for a date in the input first.""" + + raw = raw.replace('\\n ', '\n').replace('\\n', '\n') + starred = False + # Split raw text into title and body + sep = re.search("\n|[\?!.]+ +\n?", raw) + first_line = raw[:sep.end()].strip() if sep else raw + starred = False + + if not date: + colon_pos = first_line.find(": ") + if colon_pos > 0: + date = time.parse( + raw[:colon_pos], + default_hour=self.config['default_hour'], + default_minute=self.config['default_minute'] + ) + if date: # Parsed successfully, strip that from the raw text + starred = raw[:colon_pos].strip().endswith("*") + raw = raw[colon_pos + 1:].strip() + starred = starred or first_line.startswith("*") or first_line.endswith("*") + if not date: # Still nothing? Meh, just live in the moment. + date = time.parse("now") + entry = Entry.Entry(self, date, raw, starred=starred) + entry.modified = True + self.entries.append(entry) + if sort: + self.sort() + return entry + + def editable_str(self): + """Turns the journal into a string of entries that can be edited + manually and later be parsed with eslf.parse_editable_str.""" + return "\n".join([e.__unicode__() for e in self.entries]) + + def parse_editable_str(self, edited): + """Parses the output of self.editable_str and updates it's entries.""" + mod_entries = self._parse(edited) + # Match those entries that can be found in self.entries and set + # these to modified, so we can get a count of how many entries got + # modified and how many got deleted later. + for entry in mod_entries: + entry.modified = not any(entry == old_entry for old_entry in self.entries) + self.entries = mod_entries + + +class PlainJournal(Journal): + @classmethod + def _create(cls, filename): + with codecs.open(filename, "a", "utf-8"): + pass + + def _load(self, filename): + with codecs.open(filename, "r", "utf-8") as f: + return f.read() + + def _store(self, filename, text): + with codecs.open(filename, 'w', "utf-8") as f: + f.write(text) + + +class LegacyJournal(Journal): + """Legacy class to support opening journals formatted with the jrnl 1.x + standard. Main difference here is that in 1.x, timestamps were not cuddled + by square brackets. You'll not be able to save these journals anymore.""" + def _load(self, filename): + with codecs.open(filename, "r", "utf-8") as f: + return f.read() + + def _parse(self, journal_txt): + """Parses a journal that's stored in a string and returns a list of entries""" + # Entries start with a line that looks like 'date title' - let's figure out how + # long the date will be by constructing one + date_length = len(datetime.today().strftime(self.config['timeformat'])) + + # Initialise our current entry + entries = [] + current_entry = None + new_date_format_regex = re.compile(r'(^\[[^\]]+\].*?$)') + for line in journal_txt.splitlines(): + line = line.rstrip() + try: + # try to parse line as date => new entry begins + new_date = datetime.strptime(line[:date_length], self.config['timeformat']) + + # parsing successful => save old entry and create new one + if new_date and current_entry: + entries.append(current_entry) + + if line.endswith("*"): + starred = True + line = line[:-1] + else: + starred = False + + current_entry = Entry.Entry(self, date=new_date, text=line[date_length + 1:], starred=starred) + except ValueError: + # Happens when we can't parse the start of the line as an date. + # In this case, just append line to our body (after some + # escaping for the new format). + line = new_date_format_regex.sub(r' \1', line) + if current_entry: + current_entry.text += line + u"\n" + + # Append last entry + if current_entry: + entries.append(current_entry) + for entry in entries: + entry._parse_text() + return entries + + +def open_journal(name, config, legacy=False): + """ + Creates a normal, encrypted or DayOne journal based on the passed config. + If legacy is True, it will open Journals with legacy classes build for + backwards compatibility with jrnl 1.x + """ + config = config.copy() + config['journal'] = os.path.expanduser(os.path.expandvars(config['journal'])) + + if os.path.isdir(config['journal']): + if config['journal'].strip("/").endswith(".dayone") or "entries" in os.listdir(config['journal']): + from . import DayOneJournal + return DayOneJournal.DayOne(**config).open() + else: + util.prompt( + u"[Error: {0} is a directory, but doesn't seem to be a DayOne journal either.".format(config['journal']) + ) + + sys.exit(1) + + if not config['encrypt']: + if legacy: + return LegacyJournal(name, **config).open() + return PlainJournal(name, **config).open() + else: + from . import EncryptedJournal + if legacy: + return EncryptedJournal.LegacyEncryptedJournal(name, **config).open() + return EncryptedJournal.EncryptedJournal(name, **config).open() diff --git a/jrnl/__init__.py b/jrnl/__init__.py new file mode 100644 index 00000000..57664dbb --- /dev/null +++ b/jrnl/__init__.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python +# encoding: utf-8 + +import pkg_resources + +dist = pkg_resources.get_distribution('jrnl') +__title__ = dist.project_name +__version__ = dist.version + diff --git a/jrnl/__main__.py b/jrnl/__main__.py new file mode 100644 index 00000000..73e08b33 --- /dev/null +++ b/jrnl/__main__.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python +# encoding: utf-8 +from __future__ import absolute_import, unicode_literals +from . import cli + + +if __name__ == "__main__": + cli.run() diff --git a/jrnl/cli.py b/jrnl/cli.py new file mode 100644 index 00000000..65a53516 --- /dev/null +++ b/jrnl/cli.py @@ -0,0 +1,296 @@ +#!/usr/bin/env python +# encoding: utf-8 + +""" + jrnl + + license: MIT, see LICENSE for more details. +""" + +from __future__ import unicode_literals +from __future__ import absolute_import +from . import Journal +from . import util +from . import install +from . import plugins +from .util import ERROR_COLOR, RESET_COLOR, UserAbort +import jrnl +import argparse +import sys +import logging + +log = logging.getLogger(__name__) +logging.getLogger("keyring.backend").setLevel(logging.ERROR) + + +def parse_args(args=None): + parser = argparse.ArgumentParser() + parser.add_argument('-v', '--version', dest='version', action="store_true", help="prints version information and exits") + parser.add_argument('-ls', dest='ls', action="store_true", help="displays accessible journals") + parser.add_argument('-d', '--debug', dest='debug', action='store_true', help='execute in debug mode') + + composing = parser.add_argument_group('Composing', 'To write an entry simply write it on the command line, e.g. "jrnl yesterday at 1pm: Went to the gym."') + composing.add_argument('text', metavar='', nargs="*") + + reading = parser.add_argument_group('Reading', 'Specifying either of these parameters will display posts of your journal') + reading.add_argument('-from', dest='start_date', metavar="DATE", help='View entries after this date') + reading.add_argument('-until', '-to', dest='end_date', metavar="DATE", help='View entries before this date') + reading.add_argument('-on', dest='on_date', metavar="DATE", help='View entries on this date') + reading.add_argument('-and', dest='strict', action="store_true", help='Filter by tags using AND (default: OR)') + reading.add_argument('-starred', dest='starred', action="store_true", help='Show only starred entries') + reading.add_argument('-n', dest='limit', default=None, metavar="N", help="Shows the last n entries matching the filter. '-n 3' and '-3' have the same effect.", nargs="?", type=int) + reading.add_argument('-not', dest='excluded', nargs='+', default=[], metavar="E", help="Exclude entries with these tags") + + exporting = parser.add_argument_group('Export / Import', 'Options for transmogrifying your journal') + exporting.add_argument('-s', '--short', dest='short', action="store_true", help='Show only titles or line containing the search tags') + exporting.add_argument('--tags', dest='tags', action="store_true", help='Returns a list of all tags and number of occurences') + exporting.add_argument('--export', metavar='TYPE', dest='export', choices=plugins.EXPORT_FORMATS, help='Export your journal. TYPE can be {}.'.format(plugins.util.oxford_list(plugins.EXPORT_FORMATS)), default=False, const=None) + exporting.add_argument('-o', metavar='OUTPUT', dest='output', help='Optionally specifies output file when using --export. If OUTPUT is a directory, exports each entry into an individual file instead.', default=False, const=None) + exporting.add_argument('--import', metavar='TYPE', dest='import_', choices=plugins.IMPORT_FORMATS, help='Import entries into your journal. TYPE can be {}, and it defaults to jrnl if nothing else is specified.'.format(plugins.util.oxford_list(plugins.IMPORT_FORMATS)), default=False, const='jrnl', nargs='?') + exporting.add_argument('-i', metavar='INPUT', dest='input', help='Optionally specifies input file when using --import.', default=False, const=None) + exporting.add_argument('--encrypt', metavar='FILENAME', dest='encrypt', help='Encrypts your existing journal with a new password', nargs='?', default=False, const=None) + exporting.add_argument('--decrypt', metavar='FILENAME', dest='decrypt', help='Decrypts your journal and stores it in plain text', nargs='?', default=False, const=None) + exporting.add_argument('--edit', dest='edit', help='Opens your editor to edit the selected entries.', action="store_true") + + return parser.parse_args(args) + + +def guess_mode(args, config): + """Guesses the mode (compose, read or export) from the given arguments""" + compose = True + export = False + import_ = False + if args.import_ is not False: + compose = False + export = False + import_ = True + elif args.decrypt is not False or args.encrypt is not False or args.export is not False or any((args.short, args.tags, args.edit)): + compose = False + export = True + elif any((args.start_date, args.end_date, args.on_date, args.limit, args.strict, args.starred)): + # Any sign of displaying stuff? + compose = False + elif args.text and all(word[0] in config['tagsymbols'] for word in " ".join(args.text).split()): + # No date and only tags? + compose = False + + return compose, export, import_ + + +def encrypt(journal, filename=None): + """ Encrypt into new file. If filename is not set, we encrypt the journal file itself. """ + from . import EncryptedJournal + + journal.config['password'] = util.getpass("Enter new password: ") + journal.config['encrypt'] = True + + new_journal = EncryptedJournal.EncryptedJournal(None, **journal.config) + new_journal.entries = journal.entries + new_journal.write(filename) + + if util.yesno("Do you want to store the password in your keychain?", default=True): + util.set_keychain(journal.name, journal.config['password']) + + util.prompt("Journal encrypted to {0}.".format(filename or new_journal.config['journal'])) + + +def decrypt(journal, filename=None): + """ Decrypts into new file. If filename is not set, we encrypt the journal file itself. """ + journal.config['encrypt'] = False + journal.config['password'] = "" + + new_journal = Journal.PlainJournal(filename, **journal.config) + new_journal.entries = journal.entries + new_journal.write(filename) + util.prompt("Journal decrypted to {0}.".format(filename or new_journal.config['journal'])) + + +def list_journals(config): + """List the journals specified in the configuration file""" + result = "Journals defined in {}\n".format(install.CONFIG_FILE_PATH) + ml = min(max(len(k) for k in config['journals']), 20) + for journal, cfg in config['journals'].items(): + result += " * {:{}} -> {}\n".format(journal, ml, cfg['journal'] if isinstance(cfg, dict) else cfg) + return result + + +def update_config(config, new_config, scope, force_local=False): + """Updates a config dict with new values - either global if scope is None + or config['journals'][scope] is just a string pointing to a journal file, + or within the scope""" + if scope and type(config['journals'][scope]) is dict: # Update to journal specific + config['journals'][scope].update(new_config) + elif scope and force_local: # Convert to dict + config['journals'][scope] = {"journal": config['journals'][scope]} + config['journals'][scope].update(new_config) + else: + config.update(new_config) + + +def configure_logger(debug=False): + logging.basicConfig( + level=logging.DEBUG if debug else logging.INFO, + format='%(levelname)-8s %(name)-12s %(message)s' + ) + logging.getLogger('parsedatetime').setLevel(logging.INFO) # disable parsedatetime debug logging + + +def run(manual_args=None): + args = parse_args(manual_args) + configure_logger(args.debug) + args.text = [p.decode('utf-8') if util.PY2 and not isinstance(p, unicode) else p for p in args.text] + if args.version: + version_str = "{0} version {1}".format(jrnl.__title__, jrnl.__version__) + print(util.py2encode(version_str)) + sys.exit(0) + + try: + config = install.load_or_install_jrnl() + except UserAbort as err: + util.prompt("\n{}".format(err)) + sys.exit(1) + + if args.ls: + util.prnt(list_journals(config)) + sys.exit(0) + + log.debug('Using configuration "%s"', config) + original_config = config.copy() + + # If the first textual argument points to a journal file, + # use this! + journal_name = args.text[0] if (args.text and args.text[0] in config['journals']) else 'default' + + if journal_name is not 'default': + args.text = args.text[1:] + elif "default" not in config['journals']: + util.prompt("No default journal configured.") + util.prompt(list_journals(config)) + sys.exit(1) + + config = util.scope_config(config, journal_name) + + # If the first remaining argument looks like e.g. '-3', interpret that as a limiter + if not args.limit and args.text and args.text[0].startswith("-"): + try: + args.limit = int(args.text[0].lstrip("-")) + args.text = args.text[1:] + except: + pass + + log.debug('Using journal "%s"', journal_name) + mode_compose, mode_export, mode_import = guess_mode(args, config) + + # How to quit writing? + if "win32" in sys.platform: + _exit_multiline_code = "on a blank line, press Ctrl+Z and then Enter" + else: + _exit_multiline_code = "press Ctrl+D" + + if mode_compose and not args.text: + if not sys.stdin.isatty(): + # Piping data into jrnl + raw = util.py23_read() + elif config['editor']: + template = "" + if config['template']: + try: + template = open(config['template']).read() + except: + util.prompt("[Could not read template at '']".format(config['template'])) + sys.exit(1) + raw = util.get_text_from_editor(config, template) + else: + try: + raw = util.py23_read("[Compose Entry; " + _exit_multiline_code + " to finish writing]\n") + except KeyboardInterrupt: + util.prompt("[Entry NOT saved to journal.]") + sys.exit(0) + if raw: + args.text = [raw] + else: + mode_compose = False + + # This is where we finally open the journal! + try: + journal = Journal.open_journal(journal_name, config) + except KeyboardInterrupt: + util.prompt("[Interrupted while opening journal]".format(journal_name)) + sys.exit(1) + + # Import mode + if mode_import: + plugins.get_importer(args.import_).import_(journal, args.input) + + # Writing mode + elif mode_compose: + raw = " ".join(args.text).strip() + if util.PY2 and type(raw) is not unicode: + raw = raw.decode(sys.getfilesystemencoding()) + log.debug('Appending raw line "%s" to journal "%s"', raw, journal_name) + journal.new_entry(raw) + util.prompt("[Entry added to {0} journal]".format(journal_name)) + journal.write() + + if not mode_compose: + old_entries = journal.entries + if args.on_date: + args.start_date = args.end_date = args.on_date + journal.filter(tags=args.text, + start_date=args.start_date, end_date=args.end_date, + strict=args.strict, + short=args.short, + starred=args.starred, + exclude=args.excluded) + journal.limit(args.limit) + + # Reading mode + if not mode_compose and not mode_export and not mode_import: + print(util.py2encode(journal.pprint())) + + # Various export modes + elif args.short: + print(util.py2encode(journal.pprint(short=True))) + + elif args.tags: + print(util.py2encode(plugins.get_exporter("tags").export(journal))) + + elif args.export is not False: + exporter = plugins.get_exporter(args.export) + print(exporter.export(journal, args.output)) + + elif args.encrypt is not False: + encrypt(journal, filename=args.encrypt) + # Not encrypting to a separate file: update config! + if not args.encrypt: + update_config(original_config, {"encrypt": True}, journal_name, force_local=True) + install.save_config(original_config) + + elif args.decrypt is not False: + decrypt(journal, filename=args.decrypt) + # Not decrypting to a separate file: update config! + if not args.decrypt: + update_config(original_config, {"encrypt": False}, journal_name, force_local=True) + install.save_config(original_config) + + elif args.edit: + if not config['editor']: + util.prompt("[{1}ERROR{2}: You need to specify an editor in {0} to use the --edit function.]".format(install.CONFIG_FILE_PATH, ERROR_COLOR, RESET_COLOR)) + sys.exit(1) + other_entries = [e for e in old_entries if e not in journal.entries] + # Edit + old_num_entries = len(journal) + edited = util.get_text_from_editor(config, journal.editable_str()) + journal.parse_editable_str(edited) + num_deleted = old_num_entries - len(journal) + num_edited = len([e for e in journal.entries if e.modified]) + prompts = [] + if num_deleted: + prompts.append("{0} {1} deleted".format(num_deleted, "entry" if num_deleted == 1 else "entries")) + if num_edited: + prompts.append("{0} {1} modified".format(num_edited, "entry" if num_deleted == 1 else "entries")) + if prompts: + util.prompt("[{0}]".format(", ".join(prompts).capitalize())) + journal.entries += other_entries + journal.sort() + journal.write() diff --git a/jrnl/export.py b/jrnl/export.py new file mode 100644 index 00000000..d4873314 --- /dev/null +++ b/jrnl/export.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python +# encoding: utf-8 + +from __future__ import absolute_import, unicode_literals +from .util import ERROR_COLOR, RESET_COLOR +from .util import slugify, u +from .template import Template +import os +import codecs + + +class Exporter(object): + """This Exporter can convert entries and journals into text files.""" + def __init__(self, format): + with open("jrnl/templates/" + format + ".template") as f: + front_matter, body = f.read().strip("-\n").split("---", 2) + self.template = Template(body) + + def export_entry(self, entry): + """Returns a unicode representation of a single entry.""" + return entry.__unicode__() + + def _get_vars(self, journal): + return { + 'journal': journal, + 'entries': journal.entries, + 'tags': journal.tags + } + + def export_journal(self, journal): + """Returns a unicode representation of an entire journal.""" + return self.template.render_block("journal", **self._get_vars(journal)) + + def write_file(self, journal, path): + """Exports a journal into a single file.""" + try: + with codecs.open(path, "w", "utf-8") as f: + f.write(self.export_journal(journal)) + return "[Journal exported to {0}]".format(path) + except IOError as e: + return "[{2}ERROR{3}: {0} {1}]".format(e.filename, e.strerror, ERROR_COLOR, RESET_COLOR) + + def make_filename(self, entry): + return entry.date.strftime("%Y-%m-%d_{0}.{1}".format(slugify(u(entry.title)), self.extension)) + + def write_files(self, journal, path): + """Exports a journal into individual files for each entry.""" + for entry in journal.entries: + try: + full_path = os.path.join(path, self.make_filename(entry)) + with codecs.open(full_path, "w", "utf-8") as f: + f.write(self.export_entry(entry)) + except IOError as e: + return "[{2}ERROR{3}: {0} {1}]".format(e.filename, e.strerror, ERROR_COLOR, RESET_COLOR) + return "[Journal exported to {0}]".format(path) + + def export(self, journal, format="text", output=None): + """Exports to individual files if output is an existing path, or into + a single file if output is a file name, or returns the exporter's + representation as unicode if output is None.""" + if output and os.path.isdir(output): # multiple files + return self.write_files(journal, output) + elif output: # single file + return self.write_file(journal, output) + else: + return self.export_journal(journal) diff --git a/jrnl/install.py b/jrnl/install.py new file mode 100644 index 00000000..5a80562f --- /dev/null +++ b/jrnl/install.py @@ -0,0 +1,150 @@ +#!/usr/bin/env python +# encoding: utf-8 + +from __future__ import absolute_import +import readline +import glob +import getpass +import os +import xdg.BaseDirectory +from . import util +from . import upgrade +from . import __version__ +from .Journal import PlainJournal +from .EncryptedJournal import EncryptedJournal +from .util import UserAbort +import yaml +import logging +import sys + +DEFAULT_CONFIG_NAME = 'jrnl.yaml' +DEFAULT_JOURNAL_NAME = 'journal.txt' +XDG_RESOURCE = 'jrnl' + +USER_HOME = os.path.expanduser('~') + +CONFIG_PATH = xdg.BaseDirectory.save_config_path(XDG_RESOURCE) or USER_HOME +CONFIG_FILE_PATH = os.path.join(CONFIG_PATH, DEFAULT_CONFIG_NAME) +CONFIG_FILE_PATH_FALLBACK = os.path.join(USER_HOME, ".jrnl_config") + +JOURNAL_PATH = xdg.BaseDirectory.save_data_path(XDG_RESOURCE) or USER_HOME +JOURNAL_FILE_PATH = os.path.join(JOURNAL_PATH, DEFAULT_JOURNAL_NAME) + +log = logging.getLogger(__name__) + + +def module_exists(module_name): + """Checks if a module exists and can be imported""" + try: + __import__(module_name) + except ImportError: + return False + else: + return True + +default_config = { + 'version': __version__, + 'journals': { + "default": JOURNAL_FILE_PATH + }, + 'editor': os.getenv('VISUAL') or os.getenv('EDITOR') or "", + 'encrypt': False, + 'template': False, + 'default_hour': 9, + 'default_minute': 0, + 'timeformat': "%Y-%m-%d %H:%M", + 'tagsymbols': '@', + 'highlight': True, + 'linewrap': 79, + 'indent_character': '|', +} + + +def upgrade_config(config): + """Checks if there are keys missing in a given config dict, and if so, updates the config file accordingly. + This essentially automatically ports jrnl installations if new config parameters are introduced in later + versions.""" + missing_keys = set(default_config).difference(config) + if missing_keys: + for key in missing_keys: + config[key] = default_config[key] + save_config(config) + print("[Configuration updated to newest version at {}]".format(CONFIG_FILE_PATH)) + + +def save_config(config): + config['version'] = __version__ + with open(CONFIG_FILE_PATH, 'w') as f: + yaml.safe_dump(config, f, encoding='utf-8', allow_unicode=True, default_flow_style=False) + + +def load_or_install_jrnl(): + """ + If jrnl is already installed, loads and returns a config object. + Else, perform various prompts to install jrnl. + """ + config_path = CONFIG_FILE_PATH if os.path.exists(CONFIG_FILE_PATH) else CONFIG_FILE_PATH_FALLBACK + if os.path.exists(config_path): + log.debug('Reading configuration from file %s', config_path) + config = util.load_config(config_path) + + try: + upgrade.upgrade_jrnl_if_necessary(config_path) + except upgrade.UpgradeValidationException: + util.prompt("Aborting upgrade.") + util.prompt("Please tell us about this problem at the following URL:") + util.prompt("https://github.com/jrnl-org/jrnl/issues/new?title=UpgradeValidationException") + util.prompt("Exiting.") + sys.exit(1) + + upgrade_config(config) + + return config + else: + log.debug('Configuration file not found, installing jrnl...') + try: + config = install() + except KeyboardInterrupt: + raise UserAbort("Installation aborted") + return config + + +def install(): + def autocomplete(text, state): + expansions = glob.glob(os.path.expanduser(os.path.expandvars(text)) + '*') + expansions = [e + "/" if os.path.isdir(e) else e for e in expansions] + expansions.append(None) + return expansions[state] + readline.set_completer_delims(' \t\n;') + readline.parse_and_bind("tab: complete") + readline.set_completer(autocomplete) + + # Where to create the journal? + path_query = 'Path to your journal file (leave blank for {}): '.format(JOURNAL_FILE_PATH) + journal_path = util.py23_input(path_query).strip() or JOURNAL_FILE_PATH + default_config['journals']['default'] = os.path.expanduser(os.path.expandvars(journal_path)) + + path = os.path.split(default_config['journals']['default'])[0] # If the folder doesn't exist, create it + try: + os.makedirs(path) + except OSError: + pass + + # Encrypt it? + password = getpass.getpass("Enter password for journal (leave blank for no encryption): ") + if password: + default_config['encrypt'] = True + if util.yesno("Do you want to store the password in your keychain?", default=True): + util.set_keychain("default", password) + else: + util.set_keychain("default", None) + EncryptedJournal._create(default_config['journals']['default'], password) + print("Journal will be encrypted.") + else: + PlainJournal._create(default_config['journals']['default']) + + config = default_config + save_config(config) + if password: + config['password'] = password + return config diff --git a/jrnl/plugins/__init__.py b/jrnl/plugins/__init__.py new file mode 100644 index 00000000..64d7b3ba --- /dev/null +++ b/jrnl/plugins/__init__.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python +# encoding: utf-8 + +from __future__ import absolute_import, unicode_literals + +from .text_exporter import TextExporter +from .jrnl_importer import JRNLImporter +from .json_exporter import JSONExporter +from .markdown_exporter import MarkdownExporter +from .tag_exporter import TagExporter +from .xml_exporter import XMLExporter +from .yaml_exporter import YAMLExporter +from .template_exporter import __all__ as template_exporters + +__exporters =[JSONExporter, MarkdownExporter, TagExporter, TextExporter, XMLExporter, YAMLExporter] + template_exporters +__importers =[JRNLImporter] + +__exporter_types = dict([(name, plugin) for plugin in __exporters for name in plugin.names]) +__importer_types = dict([(name, plugin) for plugin in __importers for name in plugin.names]) + +EXPORT_FORMATS = sorted(__exporter_types.keys()) +IMPORT_FORMATS = sorted(__importer_types.keys()) + +def get_exporter(format): + for exporter in __exporters: + if hasattr(exporter, "names") and format in exporter.names: + return exporter + return None + + +def get_importer(format): + for importer in __importers: + if hasattr(importer, "names") and format in importer.names: + return importer + return None diff --git a/jrnl/plugins/jrnl_importer.py b/jrnl/plugins/jrnl_importer.py new file mode 100644 index 00000000..85615e75 --- /dev/null +++ b/jrnl/plugins/jrnl_importer.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python +# encoding: utf-8 + +from __future__ import absolute_import, unicode_literals +import codecs +import sys +from .. import util + +class JRNLImporter(object): + """This plugin imports entries from other jrnl files.""" + names = ["jrnl"] + + @staticmethod + def import_(journal, input=None): + """Imports from an existing file if input is specified, and + standard input otherwise.""" + old_cnt = len(journal.entries) + old_entries = journal.entries + if input: + with codecs.open(input, "r", "utf-8") as f: + other_journal_txt = f.read() + else: + try: + other_journal_txt = util.py23_read() + except KeyboardInterrupt: + util.prompt("[Entries NOT imported into journal.]") + sys.exit(0) + journal.import_(other_journal_txt) + new_cnt = len(journal.entries) + util.prompt("[{0} imported to {1} journal]".format(new_cnt - old_cnt, journal.name)) + journal.write() diff --git a/jrnl/plugins/json_exporter.py b/jrnl/plugins/json_exporter.py new file mode 100644 index 00000000..5abaf916 --- /dev/null +++ b/jrnl/plugins/json_exporter.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python +# encoding: utf-8 + +from __future__ import absolute_import, unicode_literals +from .text_exporter import TextExporter +import json +from .util import get_tags_count + + +class JSONExporter(TextExporter): + """This Exporter can convert entries and journals into json.""" + names = ["json"] + extension = "json" + + @classmethod + def entry_to_dict(cls, entry): + entry_dict = { + 'title': entry.title, + 'body': entry.body, + 'date': entry.date.strftime("%Y-%m-%d"), + 'time': entry.date.strftime("%H:%M"), + 'starred': entry.starred + } + if hasattr(entry, "uuid"): + entry_dict['uuid'] = entry.uuid + return entry_dict + + @classmethod + def export_entry(cls, entry): + """Returns a json representation of a single entry.""" + return json.dumps(cls.entry_to_dict(entry), indent=2) + "\n" + + @classmethod + def export_journal(cls, journal): + """Returns a json representation of an entire journal.""" + tags = get_tags_count(journal) + result = { + "tags": dict((tag, count) for count, tag in tags), + "entries": [cls.entry_to_dict(e) for e in journal.entries] + } + return json.dumps(result, indent=2) diff --git a/jrnl/plugins/markdown_exporter.py b/jrnl/plugins/markdown_exporter.py new file mode 100644 index 00000000..19b5404d --- /dev/null +++ b/jrnl/plugins/markdown_exporter.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python +# encoding: utf-8 + +from __future__ import absolute_import, unicode_literals, print_function +from .text_exporter import TextExporter +import os +import re +import sys +from ..util import WARNING_COLOR, RESET_COLOR + + +class MarkdownExporter(TextExporter): + """This Exporter can convert entries and journals into Markdown.""" + names = ["md", "markdown"] + extension = "md" + + @classmethod + def export_entry(cls, entry, to_multifile=True): + """Returns a markdown representation of a single entry.""" + date_str = entry.date.strftime(entry.journal.config['timeformat']) + body_wrapper = "\n" if entry.body else "" + body = body_wrapper + entry.body + + if to_multifile is True: + heading = '#' + else: + heading = '###' + + '''Increase heading levels in body text''' + newbody = '' + previous_line = '' + warn_on_heading_level = False + for line in body.splitlines(True): + if re.match(r"^#+ ", line): + """ATX style headings""" + newbody = newbody + previous_line + heading + line + if re.match(r"^#######+ ", heading + line): + warn_on_heading_level = True + line = '' + elif re.match(r"^=+$", line.rstrip()) and not re.match(r"^$", previous_line.strip()): + """Setext style H1""" + newbody = newbody + heading + "# " + previous_line + line = '' + elif re.match(r"^-+$", line.rstrip()) and not re.match(r"^$", previous_line.strip()): + """Setext style H2""" + newbody = newbody + heading + "## " + previous_line + line = '' + else: + newbody = newbody + previous_line + previous_line = line + newbody = newbody + previous_line # add very last line + + if warn_on_heading_level is True: + print("{}WARNING{}: Headings increased past H6 on export - {} {}".format(WARNING_COLOR, RESET_COLOR, date_str, entry.title), file=sys.stderr) + + return "{md} {date} {title}\n{body} {space}".format( + md=heading, + date=date_str, + title=entry.title, + body=newbody, + space="" + ) + + @classmethod + def export_journal(cls, journal): + """Returns a Markdown representation of an entire journal.""" + out = [] + year, month = -1, -1 + for e in journal.entries: + if not e.date.year == year: + year = e.date.year + out.append("# " + str(year)) + out.append("") + if not e.date.month == month: + month = e.date.month + out.append("## " + e.date.strftime("%B")) + out.append("") + out.append(cls.export_entry(e, False)) + result = "\n".join(out) + return result diff --git a/jrnl/plugins/tag_exporter.py b/jrnl/plugins/tag_exporter.py new file mode 100644 index 00000000..439bac7c --- /dev/null +++ b/jrnl/plugins/tag_exporter.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python +# encoding: utf-8 + +from __future__ import absolute_import, unicode_literals +from .text_exporter import TextExporter +from .util import get_tags_count + + +class TagExporter(TextExporter): + """This Exporter can lists the tags for entries and journals, exported as a plain text file.""" + names = ["tags"] + extension = "tags" + + @classmethod + def export_entry(cls, entry): + """Returns a list of tags for a single entry.""" + return ", ".join(entry.tags) + + @classmethod + def export_journal(cls, journal): + """Returns a list of tags and their frequency for an entire journal.""" + tag_counts = get_tags_count(journal) + result = "" + if not tag_counts: + return '[No tags found in journal.]' + elif min(tag_counts)[0] == 0: + tag_counts = filter(lambda x: x[0] > 1, tag_counts) + result += '[Removed tags that appear only once.]\n' + result += "\n".join("{0:20} : {1}".format(tag, n) for n, tag in sorted(tag_counts, reverse=True)) + return result diff --git a/jrnl/plugins/template.py b/jrnl/plugins/template.py new file mode 100644 index 00000000..21fb2896 --- /dev/null +++ b/jrnl/plugins/template.py @@ -0,0 +1,124 @@ +import re +import asteval +import yaml + +VAR_RE = r"[_a-zA-Z][a-zA-Z0-9_]*" +EXPRESSION_RE = r"[\[\]():.a-zA-Z0-9_]*" +PRINT_RE = r"{{ *(.+?) *}}" +START_BLOCK_RE = r"{% *(if|for) +(.+?) *%}" +END_BLOCK_RE = r"{% *end(for|if) *%}" +FOR_RE = r"{{% *for +({varname}) +in +([^%]+) *%}}".format(varname=VAR_RE, expression=EXPRESSION_RE) +IF_RE = r"{% *if +(.+?) *%}" +BLOCK_RE = r"{% *block +(.+?) *%}((?:.|\n)+?){% *endblock *%}" +INCLUDE_RE = r"{% *include +(.+?) *%}" + + +class Template(object): + def __init__(self, template): + self.template = template + self.clean_template = None + self.blocks = {} + + @classmethod + def from_file(cls, filename): + with open(filename) as f: + front_matter, body = f.read().strip("-\n").split("---", 2) + front_matter = yaml.load(front_matter, Loader=yaml.FullLoader) + template = cls(body) + template.__dict__.update(front_matter) + return template + + def render(self, **vars): + if self.clean_template is None: + self._get_blocks() + return self._expand(self.clean_template, **vars) + + def render_block(self, block, **vars): + if self.clean_template is None: + self._get_blocks() + return self._expand(self.blocks[block], **vars) + + def _eval_context(self, vars): + e = asteval.Interpreter(use_numpy=False, writer=None) + e.symtable.update(vars) + e.symtable['__last_iteration'] = vars.get("__last_iteration", False) + return e + + def _get_blocks(self): + def s(match): + name, contents = match.groups() + self.blocks[name] = self._strip_single_nl(contents) + return "" + self.clean_template = re.sub(BLOCK_RE, s, self.template, flags=re.MULTILINE) + + def _expand(self, template, **vars): + stack = sorted( + [(m.start(), 1, m.groups()[0]) for m in re.finditer(START_BLOCK_RE, template)] + + [(m.end(), -1, m.groups()[0]) for m in re.finditer(END_BLOCK_RE, template)] + ) + + last_nesting, nesting = 0, 0 + start = 0 + result = "" + block_type = None + if not stack: + return self._expand_vars(template, **vars) + + for pos, indent, typ in stack: + nesting += indent + if nesting == 1 and last_nesting == 0: + block_type = typ + result += self._expand_vars(template[start:pos], **vars) + start = pos + elif nesting == 0 and last_nesting == 1: + if block_type == "if": + result += self._expand_cond(template[start:pos], **vars) + elif block_type == "for": + result += self._expand_loops(template[start:pos], **vars) + elif block_type == "block": + result += self._save_block(template[start:pos], **vars) + start = pos + last_nesting = nesting + + result += self._expand_vars(template[stack[-1][0]:], **vars) + return result + + def _expand_vars(self, template, **vars): + safe_eval = self._eval_context(vars) + expanded = re.sub(INCLUDE_RE, lambda m: self.render_block(m.groups()[0], **vars), template) + return re.sub(PRINT_RE, lambda m: str(safe_eval(m.groups()[0])), expanded) + + def _expand_cond(self, template, **vars): + start_block = re.search(IF_RE, template, re.M) + end_block = list(re.finditer(END_BLOCK_RE, template, re.M))[-1] + expression = start_block.groups()[0] + sub_template = self._strip_single_nl(template[start_block.end():end_block.start()]) + + safe_eval = self._eval_context(vars) + if safe_eval(expression): + return self._expand(sub_template) + return "" + + def _strip_single_nl(self, template, strip_r=True): + if template[0] == "\n": + template = template[1:] + if strip_r and template[-1] == "\n": + template = template[:-1] + return template + + def _expand_loops(self, template, **vars): + start_block = re.search(FOR_RE, template, re.M) + end_block = list(re.finditer(END_BLOCK_RE, template, re.M))[-1] + var_name, iterator = start_block.groups() + sub_template = self._strip_single_nl(template[start_block.end():end_block.start()], strip_r=False) + + safe_eval = self._eval_context(vars) + + result = '' + items = safe_eval(iterator) + for idx, var in enumerate(items): + vars[var_name] = var + vars['__last_iteration'] = idx == len(items) - 1 + result += self._expand(sub_template, **vars) + del vars[var_name] + return self._strip_single_nl(result) diff --git a/jrnl/plugins/template_exporter.py b/jrnl/plugins/template_exporter.py new file mode 100644 index 00000000..85aa2236 --- /dev/null +++ b/jrnl/plugins/template_exporter.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python +# encoding: utf-8 + +from __future__ import absolute_import, unicode_literals + +from .text_exporter import TextExporter +from .template import Template +import os +from glob import glob + + +class GenericTemplateExporter(TextExporter): + """This Exporter can convert entries and journals into text files.""" + + @classmethod + def export_entry(cls, entry): + """Returns a unicode representation of a single entry.""" + vars = { + 'entry': entry, + 'tags': entry.tags + } + return cls.template.render_block("entry", **vars) + + @classmethod + def export_journal(cls, journal): + """Returns a unicode representation of an entire journal.""" + vars = { + 'journal': journal, + 'entries': journal.entries, + 'tags': journal.tags + } + return cls.template.render_block("journal", **vars) + + +def __exporter_from_file(template_file): + """Create a template class from a file""" + name = os.path.basename(template_file).replace(".template", "") + template = Template.from_file(template_file) + return type(str("{}Exporter".format(name.title())), (GenericTemplateExporter, ), { + "names": [name], + "extension": template.extension, + "template": template + }) + +__all__ = [] + +# Factory pattern to create Exporter classes for all available templates +for template_file in glob("jrnl/templates/*.template"): + __all__.append(__exporter_from_file(template_file)) diff --git a/jrnl/plugins/text_exporter.py b/jrnl/plugins/text_exporter.py new file mode 100644 index 00000000..dbb54d04 --- /dev/null +++ b/jrnl/plugins/text_exporter.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python +# encoding: utf-8 + +from __future__ import absolute_import, unicode_literals +import codecs +from ..util import u, slugify +import os +from ..util import ERROR_COLOR, RESET_COLOR + + +class TextExporter(object): + """This Exporter can convert entries and journals into text files.""" + names = ["text", "txt"] + extension = "txt" + + @classmethod + def export_entry(cls, entry): + """Returns a unicode representation of a single entry.""" + return entry.__unicode__() + + @classmethod + def export_journal(cls, journal): + """Returns a unicode representation of an entire journal.""" + return "\n".join(cls.export_entry(entry) for entry in journal) + + @classmethod + def write_file(cls, journal, path): + """Exports a journal into a single file.""" + try: + with codecs.open(path, "w", "utf-8") as f: + f.write(cls.export_journal(journal)) + return "[Journal exported to {0}]".format(path) + except IOError as e: + return "[{2}ERROR{3}: {0} {1}]".format(e.filename, e.strerror, ERROR_COLOR, RESET_COLOR) + + @classmethod + def make_filename(cls, entry): + return entry.date.strftime("%Y-%m-%d_{0}.{1}".format(slugify(u(entry.title)), cls.extension)) + + @classmethod + def write_files(cls, journal, path): + """Exports a journal into individual files for each entry.""" + for entry in journal.entries: + try: + full_path = os.path.join(path, cls.make_filename(entry)) + with codecs.open(full_path, "w", "utf-8") as f: + f.write(cls.export_entry(entry)) + except IOError as e: + return "[{2}ERROR{3}: {0} {1}]".format(e.filename, e.strerror, ERROR_COLOR, RESET_COLOR) + return "[Journal exported to {0}]".format(path) + + @classmethod + def export(cls, journal, output=None): + """Exports to individual files if output is an existing path, or into + a single file if output is a file name, or returns the exporter's + representation as unicode if output is None.""" + if output and os.path.isdir(output): # multiple files + return cls.write_files(journal, output) + elif output: # single file + return cls.write_file(journal, output) + else: + return cls.export_journal(journal) diff --git a/jrnl/plugins/util.py b/jrnl/plugins/util.py new file mode 100644 index 00000000..0a642cb2 --- /dev/null +++ b/jrnl/plugins/util.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python +# encoding: utf-8 + + +def get_tags_count(journal): + """Returns a set of tuples (count, tag) for all tags present in the journal.""" + # Astute reader: should the following line leave you as puzzled as me the first time + # I came across this construction, worry not and embrace the ensuing moment of enlightment. + tags = [tag + for entry in journal.entries + for tag in set(entry.tags)] + # To be read: [for entry in journal.entries: for tag in set(entry.tags): tag] + tag_counts = set([(tags.count(tag), tag) for tag in tags]) + return tag_counts + + +def oxford_list(lst): + """Return Human-readable list of things obeying the object comma)""" + lst = sorted(lst) + if not lst: + return "(nothing)" + elif len(lst) == 1: + return lst[0] + elif len(lst) == 2: + return lst[0] + " or " + lst[1] + else: + return ', '.join(lst[:-1]) + ", or " + lst[-1] diff --git a/jrnl/plugins/xml_exporter.py b/jrnl/plugins/xml_exporter.py new file mode 100644 index 00000000..0af2ed47 --- /dev/null +++ b/jrnl/plugins/xml_exporter.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python +# encoding: utf-8 + +from __future__ import absolute_import, unicode_literals +from .json_exporter import JSONExporter +from .util import get_tags_count +from ..util import u +from xml.dom import minidom + + +class XMLExporter(JSONExporter): + """This Exporter can convert entries and journals into XML.""" + names = ["xml"] + extension = "xml" + + @classmethod + def export_entry(cls, entry, doc=None): + """Returns an XML representation of a single entry.""" + doc_el = doc or minidom.Document() + entry_el = doc_el.createElement('entry') + for key, value in cls.entry_to_dict(entry).items(): + elem = doc_el.createElement(key) + elem.appendChild(doc_el.createTextNode(u(value))) + entry_el.appendChild(elem) + if not doc: + doc_el.appendChild(entry_el) + return doc_el.toprettyxml() + else: + return entry_el + + @classmethod + def entry_to_xml(cls, entry, doc): + entry_el = doc.createElement('entry') + entry_el.setAttribute('date', entry.date.isoformat()) + if hasattr(entry, "uuid"): + entry_el.setAttribute('uuid', u(entry.uuid)) + entry_el.setAttribute('starred', u(entry.starred)) + entry_el.appendChild(doc.createTextNode(entry.fulltext)) + return entry_el + + @classmethod + def export_journal(cls, journal): + """Returns an XML representation of an entire journal.""" + tags = get_tags_count(journal) + doc = minidom.Document() + xml = doc.createElement('journal') + tags_el = doc.createElement('tags') + entries_el = doc.createElement('entries') + for count, tag in tags: + tag_el = doc.createElement('tag') + tag_el.setAttribute('name', tag) + count_node = doc.createTextNode(u(count)) + tag_el.appendChild(count_node) + tags_el.appendChild(tag_el) + for entry in journal.entries: + entries_el.appendChild(cls.entry_to_xml(entry, doc)) + xml.appendChild(entries_el) + xml.appendChild(tags_el) + doc.appendChild(xml) + return doc.toprettyxml() diff --git a/jrnl/plugins/yaml_exporter.py b/jrnl/plugins/yaml_exporter.py new file mode 100644 index 00000000..c0735811 --- /dev/null +++ b/jrnl/plugins/yaml_exporter.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python +# encoding: utf-8 + +from __future__ import absolute_import, unicode_literals, print_function +from .text_exporter import TextExporter +import os +import re +import sys +from ..util import WARNING_COLOR, ERROR_COLOR, RESET_COLOR + + +class YAMLExporter(TextExporter): + """This Exporter can convert entries and journals into Markdown formatted text with YAML front matter.""" + names = ["yaml"] + extension = "md" + + @classmethod + def export_entry(cls, entry, to_multifile=True): + """Returns a markdown representation of a single entry, with YAML front matter.""" + if to_multifile is False: + print("{}ERROR{}: YAML export must be to individual files. Please specify a directory to export to.".format("\033[31m", "\033[0m", file=sys.stderr)) + return + + date_str = entry.date.strftime(entry.journal.config['timeformat']) + body_wrapper = "\n" if entry.body else "" + body = body_wrapper + entry.body + + tagsymbols = entry.journal.config['tagsymbols'] + # see also Entry.Entry.rag_regex + multi_tag_regex = re.compile(r'(?u)^\s*([{tags}][-+*#/\w]+\s*)+$'.format(tags=tagsymbols), re.UNICODE) + + '''Increase heading levels in body text''' + newbody = '' + heading = '#' + previous_line = '' + warn_on_heading_level = False + for line in entry.body.splitlines(True): + if re.match(r"^#+ ", line): + """ATX style headings""" + newbody = newbody + previous_line + heading + line + if re.match(r"^#######+ ", heading + line): + warn_on_heading_level = True + line = '' + elif re.match(r"^=+$", line.rstrip()) and not re.match(r"^$", previous_line.strip()): + """Setext style H1""" + newbody = newbody + heading + "# " + previous_line + line = '' + elif re.match(r"^-+$", line.rstrip()) and not re.match(r"^$", previous_line.strip()): + """Setext style H2""" + newbody = newbody + heading + "## " + previous_line + line = '' + elif multi_tag_regex.match(line): + """Tag only lines""" + line = '' + else: + newbody = newbody + previous_line + previous_line = line + newbody = newbody + previous_line # add very last line + + if warn_on_heading_level is True: + print("{}WARNING{}: Headings increased past H6 on export - {} {}".format(WARNING_COLOR, RESET_COLOR, date_str, entry.title), file=sys.stderr) + + dayone_attributes = '' + if hasattr(entry, "uuid"): + dayone_attributes += 'uuid: ' + entry.uuid + '\n' + # TODO: copy over pictures, if present + # source directory is entry.journal.config['journal'] + # output directory is...? + + return "title: {title}\ndate: {date}\nstared: {stared}\ntags: {tags}\n{dayone} {body} {space}".format( + date = date_str, + title = entry.title, + stared = entry.starred, + tags = ', '.join([tag[1:] for tag in entry.tags]), + dayone = dayone_attributes, + body = newbody, + space="" + ) + + @classmethod + def export_journal(cls, journal): + """Returns an error, as YAML export requires a directory as a target.""" + print("{}ERROR{}: YAML export must be to individual files. Please specify a directory to export to.".format(ERROR_COLOR, RESET_COLOR), file=sys.stderr) + return diff --git a/jrnl/templates/sample.template b/jrnl/templates/sample.template new file mode 100644 index 00000000..983d6af3 --- /dev/null +++ b/jrnl/templates/sample.template @@ -0,0 +1,18 @@ +--- +extension: txt +--- + +{% block journal %} +{% for entry in entries %} +{% include entry %} +{% endfor %} + +{% endblock %} + +{% block entry %} +{{ entry.title }} +{{ "-" * len(entry.title) }} + +{{ entry.body }} + +{% endblock %} diff --git a/jrnl/time.py b/jrnl/time.py new file mode 100644 index 00000000..9ff125aa --- /dev/null +++ b/jrnl/time.py @@ -0,0 +1,65 @@ +from datetime import datetime +from dateutil.parser import parse as dateparse +try: import parsedatetime.parsedatetime_consts as pdt +except ImportError: import parsedatetime as pdt + +FAKE_YEAR = 9999 +DEFAULT_FUTURE = datetime(FAKE_YEAR, 12, 31, 23, 59, 59) +DEFAULT_PAST = datetime(FAKE_YEAR, 1, 1, 0, 0) + +consts = pdt.Constants(usePyICU=False) +consts.DOWParseStyle = -1 # "Monday" will be either today or the last Monday +CALENDAR = pdt.Calendar(consts) + + +def parse(date_str, inclusive=False, default_hour=None, default_minute=None): + """Parses a string containing a fuzzy date and returns a datetime.datetime object""" + if not date_str: + return None + elif isinstance(date_str, datetime): + return date_str + + # Don't try to parse anything with 6 or less characters. It's probably a markdown footnote + if len(date_str) <= 6: + return None + + default_date = DEFAULT_FUTURE if inclusive else DEFAULT_PAST + date = None + year_present = False + while not date: + try: + date = dateparse(date_str, default=default_date) + if date.year == FAKE_YEAR: + date = datetime(datetime.now().year, date.timetuple()[1:6]) + else: + year_present = True + flag = 1 if date.hour == date.minute == 0 else 2 + date = date.timetuple() + except Exception as e: + if e.args[0] == 'day is out of range for month': + y, m, d, H, M, S = default_date.timetuple()[:6] + default_date = datetime(y, m, d - 1, H, M, S) + else: + date, flag = CALENDAR.parse(date_str) + + if not flag: # Oops, unparsable. + try: # Try and parse this as a single year + year = int(date_str) + return datetime(year, 1, 1) + except ValueError: + return None + except TypeError: + return None + + if flag is 1: # Date found, but no time. Use the default time. + date = datetime(*date[:3], hour=default_hour or 0, minute=default_minute or 0) + else: + date = datetime(*date[:6]) + + # Ugly heuristic: if the date is more than 4 weeks in the future, we got the year wrong. + # Rather then this, we would like to see parsedatetime patched so we can tell it to prefer + # past dates + dt = datetime.now() - date + if dt.days < -28 and not year_present: + date = date.replace(date.year - 1) + return date diff --git a/jrnl/upgrade.py b/jrnl/upgrade.py new file mode 100644 index 00000000..f2b80af3 --- /dev/null +++ b/jrnl/upgrade.py @@ -0,0 +1,120 @@ +from __future__ import absolute_import, unicode_literals + +from . import __version__ +from . import Journal +from . import util +from .EncryptedJournal import EncryptedJournal +from .util import UserAbort +import os +import codecs + + +def backup(filename, binary=False): + util.prompt(" Created a backup at {}.backup".format(filename)) + filename = os.path.expanduser(os.path.expandvars(filename)) + with open(filename, 'rb' if binary else 'r') as original: + contents = original.read() + with open(filename + ".backup", 'wb' if binary else 'w') as backup: + backup.write(contents) + + +def upgrade_jrnl_if_necessary(config_path): + with codecs.open(config_path, "r", "utf-8") as f: + config_file = f.read() + if not config_file.strip().startswith("{"): + return + + config = util.load_config(config_path) + + util.prompt("""Welcome to jrnl {}. + +It looks like you've been using an older version of jrnl until now. That's +okay - jrnl will now upgrade your configuration and journal files. Afterwards +you can enjoy all of the great new features that come with jrnl 2: + +- Support for storing your journal in multiple files +- Faster reading and writing for large journals +- New encryption back-end that makes installing jrnl much easier +- Tons of bug fixes + +Please note that jrnl 1.x is NOT forward compatible with this version of jrnl. +If you choose to proceed, you will not be able to use your journals with +older versions of jrnl anymore. +""".format(__version__)) + encrypted_journals = {} + plain_journals = {} + other_journals = {} + all_journals = [] + + for journal_name, journal_conf in config['journals'].items(): + if isinstance(journal_conf, dict): + path = journal_conf.get("journal") + encrypt = journal_conf.get("encrypt") + else: + encrypt = config.get('encrypt') + path = journal_conf + + if encrypt: + encrypted_journals[journal_name] = path + elif os.path.isdir(path): + other_journals[journal_name] = path + else: + plain_journals[journal_name] = path + + longest_journal_name = max([len(journal) for journal in config['journals']]) + if encrypted_journals: + util.prompt("\nFollowing encrypted journals will be upgraded to jrnl {}:".format(__version__)) + for journal, path in encrypted_journals.items(): + util.prompt(" {:{pad}} -> {}".format(journal, path, pad=longest_journal_name)) + + if plain_journals: + util.prompt("\nFollowing plain text journals will upgraded to jrnl {}:".format(__version__)) + for journal, path in plain_journals.items(): + util.prompt(" {:{pad}} -> {}".format(journal, path, pad=longest_journal_name)) + + if other_journals: + util.prompt("\nFollowing journals will be not be touched:") + for journal, path in other_journals.items(): + util.prompt(" {:{pad}} -> {}".format(journal, path, pad=longest_journal_name)) + + try: + cont = util.yesno("\nContinue upgrading jrnl?", default=False) + if not cont: + raise KeyboardInterrupt + except KeyboardInterrupt: + raise UserAbort("jrnl NOT upgraded, exiting.") + + for journal_name, path in encrypted_journals.items(): + util.prompt("\nUpgrading encrypted '{}' journal stored in {}...".format(journal_name, path)) + backup(path, binary=True) + old_journal = Journal.open_journal(journal_name, util.scope_config(config, journal_name), legacy=True) + all_journals.append(EncryptedJournal.from_journal(old_journal)) + + for journal_name, path in plain_journals.items(): + util.prompt("\nUpgrading plain text '{}' journal stored in {}...".format(journal_name, path)) + backup(path) + old_journal = Journal.open_journal(journal_name, util.scope_config(config, journal_name), legacy=True) + all_journals.append(Journal.PlainJournal.from_journal(old_journal)) + + # loop through lists to validate + failed_journals = [j for j in all_journals if not j.validate_parsing()] + + if len(failed_journals) > 0: + util.prompt("\nThe following journal{} failed to upgrade:\n{}".format( + 's' if len(failed_journals) > 1 else '', "\n".join(j.name for j in failed_journals)) + ) + + raise UpgradeValidationException + + # write all journals - or - don't + for j in all_journals: + j.write() + + util.prompt("\nUpgrading config...") + backup(config_path) + + util.prompt("\nWe're all done here and you can start enjoying jrnl 2.".format(config_path)) + +class UpgradeValidationException(Exception): + """Raised when the contents of an upgraded journal do not match the old journal""" + pass diff --git a/jrnl/util.py b/jrnl/util.py new file mode 100644 index 00000000..bc36ba9b --- /dev/null +++ b/jrnl/util.py @@ -0,0 +1,219 @@ +#!/usr/bin/env python +# encoding: utf-8 + +from __future__ import unicode_literals +from __future__ import absolute_import + +import sys +import os +import getpass as gp +import yaml +if "win32" in sys.platform: + import colorama + colorama.init() +import re +import tempfile +import subprocess +import codecs +import unicodedata +import shlex +import logging + +log = logging.getLogger(__name__) + + +PY3 = sys.version_info[0] == 3 +PY2 = sys.version_info[0] == 2 +STDIN = sys.stdin +STDERR = sys.stderr +STDOUT = sys.stdout +TEST = False +__cached_tz = None + +WARNING_COLOR = "\033[33m" +ERROR_COLOR = "\033[31m" +RESET_COLOR = "\033[0m" + +# Based on Segtok by Florian Leitner +# https://github.com/fnl/segtok +SENTENCE_SPLITTER = re.compile(r""" +( # A sentence ends at one of two sequences: + [.!?\u203C\u203D\u2047\u2048\u2049\u3002\uFE52\uFE57\uFF01\uFF0E\uFF1F\uFF61] # Either, a sequence starting with a sentence terminal, + [\'\u2019\"\u201D]? # an optional right quote, + [\]\)]* # optional closing brackets and + \s+ # a sequence of required spaces. +| # Otherwise, + \n # a sentence also terminates newlines. +)""", re.UNICODE | re.VERBOSE) + + +class UserAbort(Exception): + pass + + +def getpass(prompt="Password: "): + if not TEST: + return gp.getpass(bytes(prompt)) + else: + return py23_input(prompt) + + +def get_password(validator, keychain=None, max_attempts=3): + pwd_from_keychain = keychain and get_keychain(keychain) + password = pwd_from_keychain or getpass() + result = validator(password) + # Password is bad: + if result is None and pwd_from_keychain: + set_keychain(keychain, None) + attempt = 1 + while result is None and attempt < max_attempts: + prompt("Wrong password, try again.") + password = getpass() + result = validator(password) + attempt += 1 + if result is not None: + return result + else: + prompt("Extremely wrong password.") + sys.exit(1) + + +def get_keychain(journal_name): + import keyring + return keyring.get_password('jrnl', journal_name) + + +def set_keychain(journal_name, password): + import keyring + if password is None: + try: + keyring.delete_password('jrnl', journal_name) + except: + pass + elif not TEST: + keyring.set_password('jrnl', journal_name, password) + + +def u(s): + """Mock unicode function for python 2 and 3 compatibility.""" + if not isinstance(s, str): + s = str(s) + return s if PY3 or type(s) is unicode else s.decode("utf-8") + + +def py2encode(s): + """Encodes to UTF-8 in Python 2 but not in Python 3.""" + return s.encode("utf-8") if PY2 and type(s) is unicode else s + + +def bytes(s): + """Returns bytes, no matter what.""" + if PY3: + return s.encode("utf-8") if type(s) is not bytes else s + return s.encode("utf-8") if type(s) is unicode else s + + +def prnt(s): + """Encode and print a string""" + STDOUT.write(u(s + "\n")) + + +def prompt(msg): + """Prints a message to the std err stream defined in util.""" + if not msg.endswith("\n"): + msg += "\n" + STDERR.write(u(msg)) + + +def py23_input(msg=""): + prompt(msg) + return STDIN.readline().strip() + + +def py23_read(msg=""): + print(msg) + return STDIN.read() + + +def yesno(prompt, default=True): + prompt = prompt.strip() + (" [Y/n]" if default else " [y/N]") + raw = py23_input(prompt) + return {'y': True, 'n': False}.get(raw.lower(), default) + + +def load_config(config_path): + """Tries to load a config file from YAML. + """ + with open(config_path) as f: + return yaml.load(f, Loader=yaml.FullLoader) + + +def scope_config(config, journal_name): + if journal_name not in config['journals']: + return config + config = config.copy() + journal_conf = config['journals'].get(journal_name) + if type(journal_conf) is dict: # We can override the default config on a by-journal basis + log.debug('Updating configuration with specific journal overrides %s', journal_conf) + config.update(journal_conf) + else: # But also just give them a string to point to the journal file + config['journal'] = journal_conf + config.pop('journals') + return config + + +def get_text_from_editor(config, template=""): + filehandle, tmpfile = tempfile.mkstemp(prefix="jrnl", text=True, suffix=".txt") + with codecs.open(tmpfile, 'w', "utf-8") as f: + if template: + f.write(template) + try: + subprocess.call(shlex.split(config['editor'], posix="win" not in sys.platform) + [tmpfile]) + except AttributeError: + subprocess.call(config['editor'] + [tmpfile]) + with codecs.open(tmpfile, "r", "utf-8") as f: + raw = f.read() + os.close(filehandle) + os.remove(tmpfile) + if not raw: + prompt('[Nothing saved to file]') + return raw + + +def colorize(string): + """Returns the string wrapped in cyan ANSI escape""" + return u"\033[36m{}\033[39m".format(string) + + +def slugify(string): + """Slugifies a string. + Based on public domain code from https://github.com/zacharyvoase/slugify + and ported to deal with all kinds of python 2 and 3 strings + """ + string = u(string) + ascii_string = str(unicodedata.normalize('NFKD', string).encode('ascii', 'ignore')) + if PY3: + ascii_string = ascii_string[1:] # removed the leading 'b' + no_punctuation = re.sub(r'[^\w\s-]', '', ascii_string).strip().lower() + slug = re.sub(r'[-\s]+', '-', no_punctuation) + return u(slug) + + +def int2byte(i): + """Converts an integer to a byte. + This is equivalent to chr() in Python 2 and bytes((i,)) in Python 3.""" + return chr(i) if PY2 else bytes((i,)) + + +def byte2int(b): + """Converts a byte to an integer. + This is equivalent to ord(bs[0]) on Python 2 and bs[0] on Python 3.""" + return ord(b)if PY2 else b + + +def split_title(text): + """Splits the first sentence off from a text.""" + punkt = SENTENCE_SPLITTER.search(text) + if not punkt: + return text, "" + return text[:punkt.end()].strip(), text[punkt.end():].strip() diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 00000000..ed1795d1 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,23 @@ +site_name: jrnl +theme: + name: readthedocs + custom_dir: docs/theme + static_templates: + - index.html +extra_css: + - https://fonts.googleapis.com/css?family=Open+Sans:300,600 + - assets/theme.css + - assets/highlight.css +markdown_extensions: + - admonition +repo_url: https://github.com/jrnl-org/jrnl/ +site_author: Manuel Ebert +site_description: Never Worry about Money Again. +nav: + - Overview: overview.md + - Quickstart: installation.md + - Basic Usage: usage.md + - Encryption: encryption.md + - Import and Export: export.md + - Advanced Usage: advanced.md + - Recipes: recipes.md diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 00000000..e772b2d2 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,429 @@ +[[package]] +category = "dev" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +name = "appdirs" +optional = false +python-versions = "*" +version = "1.4.3" + +[[package]] +category = "main" +description = "Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP" +name = "asn1crypto" +optional = false +python-versions = "*" +version = "0.24.0" + +[[package]] +category = "main" +description = "Safe, minimalistic evaluator of python expression using ast module" +name = "asteval" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "0.9.14" + +[package.dependencies] +numpy = "*" +six = "*" + +[[package]] +category = "dev" +description = "Classes Without Boilerplate" +name = "attrs" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "19.1.0" + +[[package]] +category = "dev" +description = "behave is behaviour-driven development, Python style" +name = "behave" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "1.2.6" + +[package.dependencies] +parse = ">=1.8.2" +parse-type = ">=0.4.2" +six = ">=1.11" + +[[package]] +category = "dev" +description = "The uncompromising code formatter." +name = "black" +optional = false +python-versions = ">=3.6" +version = "18.9b0" + +[package.dependencies] +appdirs = "*" +attrs = ">=17.4.0" +click = ">=6.5" +toml = ">=0.9.4" + +[[package]] +category = "main" +description = "Foreign Function Interface for Python calling C code." +name = "cffi" +optional = false +python-versions = "*" +version = "1.12.3" + +[package.dependencies] +pycparser = "*" + +[[package]] +category = "dev" +description = "Composable command line interface toolkit" +name = "click" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "7.0" + +[[package]] +category = "main" +description = "Cross-platform colored terminal text." +marker = "sys_platform == \"win32\"" +name = "colorama" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.4.1" + +[[package]] +category = "main" +description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +name = "cryptography" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +version = "2.7" + +[package.dependencies] +asn1crypto = ">=0.21.0" +cffi = ">=1.8,<1.11.3 || >1.11.3" +six = ">=1.4.1" + +[[package]] +category = "main" +description = "Discover and load entry points from installed packages." +name = "entrypoints" +optional = false +python-versions = ">=2.7" +version = "0.3" + +[[package]] +category = "dev" +description = "the modular source code checker: pep8, pyflakes and co" +name = "flake8" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "3.7.8" + +[package.dependencies] +entrypoints = ">=0.3.0,<0.4.0" +mccabe = ">=0.6.0,<0.7.0" +pycodestyle = ">=2.5.0,<2.6.0" +pyflakes = ">=2.1.0,<2.2.0" + +[[package]] +category = "main" +description = "Clean single-source support for Python 3 and 2" +name = "future" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +version = "0.17.1" + +[[package]] +category = "main" +description = "Low-level, pure Python DBus protocol wrapper." +marker = "sys_platform == \"linux\"" +name = "jeepney" +optional = false +python-versions = ">=3.5" +version = "0.4" + +[[package]] +category = "dev" +description = "A small but fast and easy to use stand-alone template engine written in pure python." +name = "jinja2" +optional = false +python-versions = "*" +version = "2.10.1" + +[package.dependencies] +MarkupSafe = ">=0.23" + +[[package]] +category = "main" +description = "Store and access your passwords safely." +name = "keyring" +optional = false +python-versions = ">=3.5" +version = "19.0.2" + +[package.dependencies] +entrypoints = "*" +pywin32-ctypes = "<0.1.0 || >0.1.0,<0.1.1 || >0.1.1" +secretstorage = "*" + +[[package]] +category = "dev" +description = "Python LiveReload is an awesome tool for web developers" +name = "livereload" +optional = false +python-versions = "*" +version = "2.6.1" + +[package.dependencies] +six = "*" +tornado = "*" + +[[package]] +category = "dev" +description = "Python implementation of Markdown." +name = "markdown" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" +version = "3.1.1" + +[package.dependencies] +setuptools = ">=36" + +[[package]] +category = "dev" +description = "Safely add untrusted strings to HTML/XML markup." +name = "markupsafe" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +version = "1.1.1" + +[[package]] +category = "dev" +description = "McCabe checker, plugin for flake8" +name = "mccabe" +optional = false +python-versions = "*" +version = "0.6.1" + +[[package]] +category = "dev" +description = "Project documentation with Markdown." +name = "mkdocs" +optional = false +python-versions = ">=2.7.9,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +version = "1.0.4" + +[package.dependencies] +Jinja2 = ">=2.7.1" +Markdown = ">=2.3.1" +PyYAML = ">=3.10" +click = ">=3.3" +livereload = ">=2.5.1" +tornado = ">=5.0" + +[[package]] +category = "main" +description = "NumPy is the fundamental package for array computing with Python." +name = "numpy" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +version = "1.16.4" + +[[package]] +category = "dev" +description = "parse() is the opposite of format()" +name = "parse" +optional = false +python-versions = "*" +version = "1.12.0" + +[[package]] +category = "dev" +description = "Simplifies to build parse types based on the parse module" +name = "parse-type" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*" +version = "0.4.2" + +[package.dependencies] +parse = ">=1.8" +six = ">=1.11" + +[[package]] +category = "main" +description = "Parse human-readable date/time text." +name = "parsedatetime" +optional = false +python-versions = "*" +version = "2.4" + +[package.dependencies] +future = "*" + +[[package]] +category = "main" +description = "comprehensive password hashing framework supporting over 30 schemes" +name = "passlib" +optional = false +python-versions = "*" +version = "1.7.1" + +[[package]] +category = "dev" +description = "Python style guide checker" +name = "pycodestyle" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.5.0" + +[[package]] +category = "main" +description = "C parser in Python" +name = "pycparser" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.19" + +[[package]] +category = "dev" +description = "passive checker of Python programs" +name = "pyflakes" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.1.1" + +[[package]] +category = "main" +description = "Extensions to the standard Python datetime module" +name = "python-dateutil" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +version = "2.8.0" + +[package.dependencies] +six = ">=1.5" + +[[package]] +category = "main" +description = "World timezone definitions, modern and historical" +name = "pytz" +optional = false +python-versions = "*" +version = "2019.1" + +[[package]] +category = "main" +description = "" +marker = "sys_platform == \"win32\"" +name = "pywin32-ctypes" +optional = false +python-versions = "*" +version = "0.2.0" + +[[package]] +category = "main" +description = "PyXDG contains implementations of freedesktop.org standards in python." +name = "pyxdg" +optional = false +python-versions = "*" +version = "0.26" + +[[package]] +category = "main" +description = "YAML parser and emitter for Python" +name = "pyyaml" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "5.1.2" + +[[package]] +category = "main" +description = "Python bindings to FreeDesktop.org Secret Service API" +marker = "sys_platform == \"linux\"" +name = "secretstorage" +optional = false +python-versions = ">=3.5" +version = "3.1.1" + +[package.dependencies] +cryptography = "*" +jeepney = "*" + +[[package]] +category = "main" +description = "Python 2 and 3 compatibility utilities" +name = "six" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*" +version = "1.12.0" + +[[package]] +category = "dev" +description = "Python Library for Tom's Obvious, Minimal Language" +name = "toml" +optional = false +python-versions = "*" +version = "0.10.0" + +[[package]] +category = "dev" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +name = "tornado" +optional = false +python-versions = ">= 3.5" +version = "6.0.3" + +[[package]] +category = "main" +description = "tzinfo object for the local timezone" +name = "tzlocal" +optional = false +python-versions = "*" +version = "1.5.1" + +[package.dependencies] +pytz = "*" + +[metadata] +content-hash = "9896cf59c7552b6ad95219ee5555c7445a3fab39c2e4f4c6f3d991a36635e44b" +python-versions = "^3.7" + +[metadata.hashes] +appdirs = ["9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92", "d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e"] +asn1crypto = ["2f1adbb7546ed199e3c90ef23ec95c5cf3585bac7d11fb7eb562a3fe89c64e87", "9d5c20441baf0cb60a4ac34cc447c6c189024b6b4c6cd7877034f4965c464e49"] +asteval = ["7c81fee6707a7a28e8beae891b858535a7e61f9ce275a0a4cf5f428fbc934cb8"] +attrs = ["69c0dbf2ed392de1cb5ec704444b08a5ef81680a61cb899dc08127123af36a79", "f0b870f674851ecbfbbbd364d6b5cbdff9dcedbc7f3f5e18a6891057f21fe399"] +behave = ["b9662327aa53294c1351b0a9c369093ccec1d21026f050c3bd9b3e5cccf81a86", "ebda1a6c9e5bfe95c5f9f0a2794e01c7098b3dde86c10a95d8621c5907ff6f1c"] +black = ["817243426042db1d36617910df579a54f1afd659adb96fc5032fcf4b36209739", "e030a9a28f542debc08acceb273f228ac422798e5215ba2a791a6ddeaaca22a5"] +cffi = ["041c81822e9f84b1d9c401182e174996f0bae9991f33725d059b771744290774", "046ef9a22f5d3eed06334d01b1e836977eeef500d9b78e9ef693f9380ad0b83d", "066bc4c7895c91812eff46f4b1c285220947d4aa46fa0a2651ff85f2afae9c90", "066c7ff148ae33040c01058662d6752fd73fbc8e64787229ea8498c7d7f4041b", "2444d0c61f03dcd26dbf7600cf64354376ee579acad77aef459e34efcb438c63", "300832850b8f7967e278870c5d51e3819b9aad8f0a2c8dbe39ab11f119237f45", "34c77afe85b6b9e967bd8154e3855e847b70ca42043db6ad17f26899a3df1b25", "46de5fa00f7ac09f020729148ff632819649b3e05a007d286242c4882f7b1dc3", "4aa8ee7ba27c472d429b980c51e714a24f47ca296d53f4d7868075b175866f4b", "4d0004eb4351e35ed950c14c11e734182591465a33e960a4ab5e8d4f04d72647", "4e3d3f31a1e202b0f5a35ba3bc4eb41e2fc2b11c1eff38b362de710bcffb5016", "50bec6d35e6b1aaeb17f7c4e2b9374ebf95a8975d57863546fa83e8d31bdb8c4", "55cad9a6df1e2a1d62063f79d0881a414a906a6962bc160ac968cc03ed3efcfb", "5662ad4e4e84f1eaa8efce5da695c5d2e229c563f9d5ce5b0113f71321bcf753", "59b4dc008f98fc6ee2bb4fd7fc786a8d70000d058c2bbe2698275bc53a8d3fa7", "73e1ffefe05e4ccd7bcea61af76f36077b914f92b76f95ccf00b0c1b9186f3f9", "a1f0fd46eba2d71ce1589f7e50a9e2ffaeb739fb2c11e8192aa2b45d5f6cc41f", "a2e85dc204556657661051ff4bab75a84e968669765c8a2cd425918699c3d0e8", "a5457d47dfff24882a21492e5815f891c0ca35fefae8aa742c6c263dac16ef1f", "a8dccd61d52a8dae4a825cdbb7735da530179fea472903eb871a5513b5abbfdc", "ae61af521ed676cf16ae94f30fe202781a38d7178b6b4ab622e4eec8cefaff42", "b012a5edb48288f77a63dba0840c92d0504aa215612da4541b7b42d849bc83a3", "d2c5cfa536227f57f97c92ac30c8109688ace8fa4ac086d19d0af47d134e2909", "d42b5796e20aacc9d15e66befb7a345454eef794fdb0737d1af593447c6c8f45", "dee54f5d30d775f525894d67b1495625dd9322945e7fee00731952e0368ff42d", "e070535507bd6aa07124258171be2ee8dfc19119c28ca94c9dfb7efd23564512", "e1ff2748c84d97b065cc95429814cdba39bcbd77c9c85c89344b317dc0d9cbff", "ed851c75d1e0e043cbf5ca9a8e1b13c4c90f3fbd863dacb01c0808e2b5204201"] +click = ["2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13", "5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7"] +colorama = ["05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d", "f8ac84de7840f5b9c4e3347b3c1eaa50f7e49c2b07596221daec5edaabbd7c48"] +cryptography = ["24b61e5fcb506424d3ec4e18bca995833839bf13c59fc43e530e488f28d46b8c", "25dd1581a183e9e7a806fe0543f485103232f940fcfc301db65e630512cce643", "3452bba7c21c69f2df772762be0066c7ed5dc65df494a1d53a58b683a83e1216", "41a0be220dd1ed9e998f5891948306eb8c812b512dc398e5a01846d855050799", "5751d8a11b956fbfa314f6553d186b94aa70fdb03d8a4d4f1c82dcacf0cbe28a", "5f61c7d749048fa6e3322258b4263463bfccefecb0dd731b6561cb617a1d9bb9", "72e24c521fa2106f19623a3851e9f89ddfdeb9ac63871c7643790f872a305dfc", "7b97ae6ef5cba2e3bb14256625423413d5ce8d1abb91d4f29b6d1a081da765f8", "961e886d8a3590fd2c723cf07be14e2a91cf53c25f02435c04d39e90780e3b53", "96d8473848e984184b6728e2c9d391482008646276c3ff084a1bd89e15ff53a1", "ae536da50c7ad1e002c3eee101871d93abdc90d9c5f651818450a0d3af718609", "b0db0cecf396033abb4a93c95d1602f268b3a68bb0a9cc06a7cff587bb9a7292", "cfee9164954c186b191b91d4193989ca994703b2fff406f71cf454a2d3c7327e", "e6347742ac8f35ded4a46ff835c60e68c22a536a8ae5c4422966d06946b6d4c6", "f27d93f0139a3c056172ebb5d4f9056e770fdf0206c2f422ff2ebbad142e09ed", "f57b76e46a58b63d1c6375017f4564a28f19a5ca912691fd2e4261b3414b618d"] +entrypoints = ["589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19", "c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451"] +flake8 = ["19241c1cbc971b9962473e4438a2ca19749a7dd002dd1a946eaba171b4114548", "8e9dfa3cecb2400b3738a42c54c3043e821682b9c840b0448c0503f781130696"] +future = ["67045236dcfd6816dc439556d009594abf643e5eb48992e36beac09c2ca659b8"] +jeepney = ["6089412a5de162c04747f0220f6b2223b8ba660acd041e52a76426ca550e3c70", "f6f8b1428403b4afad04b6b82f9ab9fc426c253d7504c9031c41712a2c01dc74"] +jinja2 = ["065c4f02ebe7f7cf559e49ee5a95fb800a9e4528727aec6f24402a5374c65013", "14dd6caf1527abb21f08f86c784eac40853ba93edb79552aa1e4b8aef1b61c7b"] +keyring = ["1b74595f7439e4581a11d4f9a12790ac34addce64ca389c86272ff465f5e0b90", "afbfe7bc9bdba69d25c551b0c738adde533d87e0b51ad6bbe332cbea19ad8476"] +livereload = ["78d55f2c268a8823ba499305dcac64e28ddeb9a92571e12d543cd304faf5817b", "89254f78d7529d7ea0a3417d224c34287ebfe266b05e67e51facaf82c27f0f66"] +markdown = ["2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a", "56a46ac655704b91e5b7e6326ce43d5ef72411376588afa1dd90e881b83c7e8c"] +markupsafe = ["00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473", "09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161", "09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235", "1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5", "24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff", "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b", "43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1", "46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e", "500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183", "535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66", "62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1", "6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1", "717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e", "79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b", "7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905", "88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735", "8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d", "98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e", "9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d", "9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c", "ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21", "b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2", "b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5", "b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b", "ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6", "c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f", "cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f", "e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"] +mccabe = ["ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", "dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"] +mkdocs = ["17d34329aad75d5de604b9ed4e31df3a4d235afefdc46ce7b1964fddb2e1e939", "8cc8b38325456b9e942c981a209eaeb1e9f3f77b493ad755bfef889b9c8d356a"] +numpy = ["0778076e764e146d3078b17c24c4d89e0ecd4ac5401beff8e1c87879043a0633", "141c7102f20abe6cf0d54c4ced8d565b86df4d3077ba2343b61a6db996cefec7", "14270a1ee8917d11e7753fb54fc7ffd1934f4d529235beec0b275e2ccf00333b", "27e11c7a8ec9d5838bc59f809bfa86efc8a4fd02e58960fa9c49d998e14332d5", "2a04dda79606f3d2f760384c38ccd3d5b9bb79d4c8126b67aff5eb09a253763e", "3c26010c1b51e1224a3ca6b8df807de6e95128b0908c7e34f190e7775455b0ca", "52c40f1a4262c896420c6ea1c6fda62cf67070e3947e3307f5562bd783a90336", "6e4f8d9e8aa79321657079b9ac03f3cf3fd067bf31c1cca4f56d49543f4356a5", "7242be12a58fec245ee9734e625964b97cf7e3f2f7d016603f9e56660ce479c7", "7dc253b542bfd4b4eb88d9dbae4ca079e7bf2e2afd819ee18891a43db66c60c7", "94f5bd885f67bbb25c82d80184abbf7ce4f6c3c3a41fbaa4182f034bba803e69", "a89e188daa119ffa0d03ce5123dee3f8ffd5115c896c2a9d4f0dbb3d8b95bfa3", "ad3399da9b0ca36e2f24de72f67ab2854a62e623274607e37e0ce5f5d5fa9166", "b0348be89275fd1d4c44ffa39530c41a21062f52299b1e3ee7d1c61f060044b8", "b5554368e4ede1856121b0dfa35ce71768102e4aa55e526cb8de7f374ff78722", "cbddc56b2502d3f87fda4f98d948eb5b11f36ff3902e17cb6cc44727f2200525", "d79f18f41751725c56eceab2a886f021d70fd70a6188fd386e29a045945ffc10", "dc2ca26a19ab32dc475dbad9dfe723d3a64c835f4c23f625c2b6566ca32b9f29", "dd9bcd4f294eb0633bb33d1a74febdd2b9018b8b8ed325f861fffcd2c7660bb8", "e8baab1bc7c9152715844f1faca6744f2416929de10d7639ed49555a85549f52", "ec31fe12668af687b99acf1567399632a7c47b0e17cfb9ae47c098644ef36797", "f12b4f7e2d8f9da3141564e6737d79016fe5336cc92de6814eba579744f65b0a", "f58ac38d5ca045a377b3b377c84df8175ab992c970a53332fa8ac2373df44ff7"] +parse = ["1b68657434d371e5156048ca4a0c5aea5afc6ca59a2fea4dd1a575354f617142"] +parse-type = ["6e906a66f340252e4c324914a60d417d33a4bea01292ea9bbf68b4fc123be8c9", "f596bdc75d3dd93036fbfe3d04127da9f6df0c26c36e01e76da85adef4336b3c"] +parsedatetime = ["3d817c58fb9570d1eec1dd46fa9448cd644eeed4fb612684b02dfda3a79cb84b", "9ee3529454bf35c40a77115f5a596771e59e1aee8c53306f346c461b8e913094"] +passlib = ["3d948f64138c25633613f303bcc471126eae67c04d5e3f6b7b8ce6242f8653e0", "43526aea08fa32c6b6dbbbe9963c4c767285b78147b7437597f992812f69d280"] +pycodestyle = ["95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56", "e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c"] +pycparser = ["a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3"] +pyflakes = ["17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0", "d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2"] +python-dateutil = ["7e6584c74aeed623791615e26efd690f29817a27c73085b78e4bad02493df2fb", "c89805f6f4d64db21ed966fda138f8a5ed7a4fdbc1a8ee329ce1b74e3c74da9e"] +pytz = ["303879e36b721603cc54604edcac9d20401bdbe31e1e4fdee5b9f98d5d31dfda", "d747dd3d23d77ef44c6a3526e274af6efeb0a6f1afd5a69ba4d5be4098c8e141"] +pywin32-ctypes = ["24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942", "9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"] +pyxdg = ["1948ff8e2db02156c0cccd2529b43c0cff56ebaa71f5f021bbd755bc1419190e", "fe2928d3f532ed32b39c32a482b54136fe766d19936afc96c8f00645f9da1a06"] +pyyaml = ["0113bc0ec2ad727182326b61326afa3d1d8280ae1122493553fd6f4397f33df9", "01adf0b6c6f61bd11af6e10ca52b7d4057dd0be0343eb9283c878cf3af56aee4", "5124373960b0b3f4aa7df1707e63e9f109b5263eca5976c66e08b1c552d4eaf8", "5ca4f10adbddae56d824b2c09668e91219bb178a1eee1faa56af6f99f11bf696", "7907be34ffa3c5a32b60b95f4d95ea25361c951383a894fec31be7252b2b6f34", "7ec9b2a4ed5cad025c2278a1e6a19c011c80a3caaac804fd2d329e9cc2c287c9", "87ae4c829bb25b9fe99cf71fbb2140c448f534e24c998cc60f39ae4f94396a73", "9de9919becc9cc2ff03637872a440195ac4241c80536632fffeb6a1e25a74299", "a5a85b10e450c66b49f98846937e8cfca1db3127a9d5d1e31ca45c3d0bef4c5b", "b0997827b4f6a7c286c01c5f60384d218dca4ed7d9efa945c3e1aa623d5709ae", "b631ef96d3222e62861443cc89d6563ba3eeb816eeb96b2629345ab795e53681", "bf47c0607522fdbca6c9e817a6e81b08491de50f3766a7a0e6a5be7905961b41", "f81025eddd0327c7d4cfe9b62cf33190e1e736cc6e97502b3ec425f574b3e7a8"] +secretstorage = ["20c797ae48a4419f66f8d28fc221623f11fc45b6828f96bdb1ad9990acb59f92", "7a119fb52a88e398dbb22a4b3eb39b779bfbace7e4153b7bc6e5954d86282a8a"] +six = ["3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c", "d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"] +toml = ["229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c", "235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e", "f1db651f9657708513243e61e6cc67d101a39bad662eaa9b5546f789338e07a3"] +tornado = ["349884248c36801afa19e342a77cc4458caca694b0eda633f5878e458a44cb2c", "398e0d35e086ba38a0427c3b37f4337327231942e731edaa6e9fd1865bbd6f60", "4e73ef678b1a859f0cb29e1d895526a20ea64b5ffd510a2307b5998c7df24281", "559bce3d31484b665259f50cd94c5c28b961b09315ccd838f284687245f416e5", "abbe53a39734ef4aba061fca54e30c6b4639d3e1f59653f0da37a0003de148c7", "c845db36ba616912074c5b1ee897f8e0124df269468f25e4fe21fe72f6edd7a9", "c9399267c926a4e7c418baa5cbe91c7d1cf362d505a1ef898fde44a07c9dd8a5"] +tzlocal = ["4ebeb848845ac898da6519b9b31879cf13b6626f7184c496037b818e238f2c4e"] diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..c107dfd6 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,41 @@ +[tool.poetry] +name = "jrnl" +version = "0.0.2" +description = "Collect your thoughts and notes without leaving the command line." +authors = [ + "Manuel Ebert ", + "Jonathan Wren ", + "Micah Ellison " +] +license = "MIT" +readme = "README.md" +homepage = "https://jrnl.sh" +repository = "https://github.com/jrnl-org/jrnl" + +[tool.poetry.dependencies] +python = "^3.7" +pyxdg = "^0.26.0" +cryptography = "^2.7" +passlib = "^1.7" +parsedatetime = "^2.4" +keyring = "^19.0" +pytz = "^2019.1" +tzlocal = "^1.5" +asteval = "^0.9.14" +colorama = {version = "^0.4.1",platform = "win32"} +python-dateutil = "^2.8" +pyyaml = "^5.1" + +[tool.poetry.dev-dependencies] +behave = "^1.2" +mkdocs = "^1.0" +flake8 = "^3.7" +black = {version = "^18.3-alpha.0",allows-prereleases = true} + +[tool.poetry.scripts] +jrnl = 'jrnl.cli:run' + +[build-system] +requires = ["poetry>=0.12"] +build-backend = "poetry.masonry.api" +