From 230b72a4f98b0d5b7923a8ea6dde638cc2dc836f Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Mon, 18 Mar 2019 00:41:15 -0700 Subject: [PATCH 01/87] basic Flask scaffold --- .gitignore | 2 + Pipfile | 22 +++ Pipfile.lock | 400 ++++++++++++++++++++++++++++++++++++++++++++++ src/__init__.py | 18 +++ src/auth.py | 0 src/exceptions.py | 0 src/forms.py | 0 src/models.py | 0 src/routes.py | 0 wsgi.py | 4 + 10 files changed, 446 insertions(+) create mode 100644 Pipfile create mode 100644 Pipfile.lock create mode 100644 src/__init__.py create mode 100644 src/auth.py create mode 100644 src/exceptions.py create mode 100644 src/forms.py create mode 100644 src/models.py create mode 100644 src/routes.py create mode 100644 wsgi.py diff --git a/.gitignore b/.gitignore index 894a44c..ca75994 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +.vscode/ + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..e1dc967 --- /dev/null +++ b/Pipfile @@ -0,0 +1,22 @@ +[[source]] +name = "pypi" +url = "https://pypi.org/simple" +verify_ssl = true + +[dev-packages] +pytest = "*" +pytest-watch = "*" +pytest-cov = "*" + +[packages] +requests = "*" +flask = "*" +flask-sqlalchemy = "*" +psycopg2-binary = "*" +flask-migrate = "*" +python-dotenv = "*" +flask-wtf = "*" +passlib = "*" + +[requires] +python_version = "3.7" \ No newline at end of file diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 0000000..b466e32 --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,400 @@ +{ + "_meta": { + "hash": { + "sha256": "88667d6a9368b33fc168e394110547b0f0eb6fc44e394364ee4b6cff0f30db19" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.7" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "alembic": { + "hashes": [ + "sha256:505d41e01dc0c9e6d85c116d0d35dbb0a833dcb490bf483b75abeb06648864e8" + ], + "version": "==1.0.8" + }, + "certifi": { + "hashes": [ + "sha256:59b7658e26ca9c7339e00f8f4636cdfe59d34fa37b9b04f6f9e9926b3cece1a5", + "sha256:b26104d6835d1f5e49452a26eb2ff87fe7090b89dfcaee5ea2212697e1e1d7ae" + ], + "version": "==2019.3.9" + }, + "chardet": { + "hashes": [ + "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", + "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" + ], + "version": "==3.0.4" + }, + "click": { + "hashes": [ + "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13", + "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7" + ], + "version": "==7.0" + }, + "flask": { + "hashes": [ + "sha256:2271c0070dbcb5275fad4a82e29f23ab92682dc45f9dfbc22c02ba9b9322ce48", + "sha256:a080b744b7e345ccfcbc77954861cb05b3c63786e93f2b3875e0913d44b43f05" + ], + "index": "pypi", + "version": "==1.0.2" + }, + "flask-migrate": { + "hashes": [ + "sha256:a361578cb829681f860e4de5ed2c48886264512f0c16144e404c36ddc95ab49c", + "sha256:c24d105c5d6cc670de20f8cbfb909e04f4e04b8784d0df070005944de1f21549" + ], + "index": "pypi", + "version": "==2.4.0" + }, + "flask-sqlalchemy": { + "hashes": [ + "sha256:3bc0fac969dd8c0ace01b32060f0c729565293302f0c4269beed154b46bec50b", + "sha256:5971b9852b5888655f11db634e87725a9031e170f37c0ce7851cf83497f56e53" + ], + "index": "pypi", + "version": "==2.3.2" + }, + "flask-wtf": { + "hashes": [ + "sha256:5d14d55cfd35f613d99ee7cba0fc3fbbe63ba02f544d349158c14ca15561cc36", + "sha256:d9a9e366b32dcbb98ef17228e76be15702cd2600675668bca23f63a7947fd5ac" + ], + "index": "pypi", + "version": "==0.14.2" + }, + "idna": { + "hashes": [ + "sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407", + "sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c" + ], + "version": "==2.8" + }, + "itsdangerous": { + "hashes": [ + "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19", + "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749" + ], + "version": "==1.1.0" + }, + "jinja2": { + "hashes": [ + "sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd", + "sha256:f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4" + ], + "version": "==2.10" + }, + "mako": { + "hashes": [ + "sha256:4e02fde57bd4abb5ec400181e4c314f56ac3e49ba4fb8b0d50bba18cb27d25ae" + ], + "version": "==1.0.7" + }, + "markupsafe": { + "hashes": [ + "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473", + "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161", + "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235", + "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5", + "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff", + "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b", + "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1", + "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e", + "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183", + "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66", + "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1", + "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1", + "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e", + "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b", + "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905", + "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735", + "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d", + "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e", + "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d", + "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c", + "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21", + "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2", + "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5", + "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b", + "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6", + "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f", + "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f", + "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7" + ], + "version": "==1.1.1" + }, + "passlib": { + "hashes": [ + "sha256:3d948f64138c25633613f303bcc471126eae67c04d5e3f6b7b8ce6242f8653e0", + "sha256:43526aea08fa32c6b6dbbbe9963c4c767285b78147b7437597f992812f69d280" + ], + "index": "pypi", + "version": "==1.7.1" + }, + "psycopg2-binary": { + "hashes": [ + "sha256:19a2d1f3567b30f6c2bb3baea23f74f69d51f0c06c2e2082d0d9c28b0733a4c2", + "sha256:2b69cf4b0fa2716fd977aa4e1fd39af6110eb47b2bb30b4e5a469d8fbecfc102", + "sha256:2e952fa17ba48cbc2dc063ddeec37d7dc4ea0ef7db0ac1eda8906365a8543f31", + "sha256:348b49dd737ff74cfb5e663e18cb069b44c64f77ec0523b5794efafbfa7df0b8", + "sha256:3d72a5fdc5f00ca85160915eb9a973cf9a0ab8148f6eda40708bf672c55ac1d1", + "sha256:4957452f7868f43f32c090dadb4188e9c74a4687323c87a882e943c2bd4780c3", + "sha256:5138cec2ee1e53a671e11cc519505eb08aaaaf390c508f25b09605763d48de4b", + "sha256:587098ca4fc46c95736459d171102336af12f0d415b3b865972a79c03f06259f", + "sha256:5b79368bcdb1da4a05f931b62760bea0955ee2c81531d8e84625df2defd3f709", + "sha256:5cf43807392247d9bc99737160da32d3fa619e0bfd85ba24d1c78db205f472a4", + "sha256:676d1a80b1eebc0cacae8dd09b2fde24213173bf65650d22b038c5ed4039f392", + "sha256:6b0211ecda389101a7d1d3df2eba0cf7ffbdd2480ca6f1d2257c7bd739e84110", + "sha256:79cde4660de6f0bb523c229763bd8ad9a93ac6760b72c369cf1213955c430934", + "sha256:7aba9786ac32c2a6d5fb446002ed936b47d5e1f10c466ef7e48f66eb9f9ebe3b", + "sha256:7c8159352244e11bdd422226aa17651110b600d175220c451a9acf795e7414e0", + "sha256:945f2eedf4fc6b2432697eb90bb98cc467de5147869e57405bfc31fa0b824741", + "sha256:96b4e902cde37a7fc6ab306b3ac089a3949e6ce3d824eeca5b19dc0bedb9f6e2", + "sha256:9a7bccb1212e63f309eb9fab47b6eaef796f59850f169a25695b248ca1bf681b", + "sha256:a3bfcac727538ec11af304b5eccadbac952d4cca1a551a29b8fe554e3ad535dc", + "sha256:b19e9f1b85c5d6136f5a0549abdc55dcbd63aba18b4f10d0d063eb65ef2c68b4", + "sha256:b664011bb14ca1f2287c17185e222f2098f7b4c857961dbcf9badb28786dbbf4", + "sha256:bde7959ef012b628868d69c474ec4920252656d0800835ed999ba5e4f57e3e2e", + "sha256:cb095a0657d792c8de9f7c9a0452385a309dfb1bbbb3357d6b1e216353ade6ca", + "sha256:d16d42a1b9772152c1fe606f679b2316551f7e1a1ce273e7f808e82a136cdb3d", + "sha256:d444b1545430ffc1e7a24ce5a9be122ccd3b135a7b7e695c5862c5aff0b11159", + "sha256:d93ccc7bf409ec0a23f2ac70977507e0b8a8d8c54e5ee46109af2f0ec9e411f3", + "sha256:df6444f952ca849016902662e1a47abf4fa0678d75f92fd9dd27f20525f809cd", + "sha256:e63850d8c52ba2b502662bf3c02603175c2397a9acc756090e444ce49508d41e", + "sha256:ec43358c105794bc2b6fd34c68d27f92bea7102393c01889e93f4b6a70975728", + "sha256:f4c6926d9c03dadce7a3b378b40d2fea912c1344ef9b29869f984fb3d2a2420b" + ], + "index": "pypi", + "version": "==2.7.7" + }, + "python-dateutil": { + "hashes": [ + "sha256:7e6584c74aeed623791615e26efd690f29817a27c73085b78e4bad02493df2fb", + "sha256:c89805f6f4d64db21ed966fda138f8a5ed7a4fdbc1a8ee329ce1b74e3c74da9e" + ], + "version": "==2.8.0" + }, + "python-dotenv": { + "hashes": [ + "sha256:a84569d0e00d178bc5b957f7ff208bf49287cbf61857c31c258c4a91f571527b", + "sha256:c9b1ddd3cdbe75c7d462cb84674d87130f4b948f090f02c7d7144779afb99ae0" + ], + "index": "pypi", + "version": "==0.10.1" + }, + "python-editor": { + "hashes": [ + "sha256:1bf6e860a8ad52a14c3ee1252d5dc25b2030618ed80c022598f00176adc8367d", + "sha256:51fda6bcc5ddbbb7063b2af7509e43bd84bfc32a4ff71349ec7847713882327b", + "sha256:5f98b069316ea1c2ed3f67e7f5df6c0d8f10b689964a4a811ff64f0106819ec8" + ], + "version": "==1.0.4" + }, + "requests": { + "hashes": [ + "sha256:502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e", + "sha256:7bf2a778576d825600030a110f3c0e3e8edc51dfaafe1c146e39a2027784957b" + ], + "index": "pypi", + "version": "==2.21.0" + }, + "six": { + "hashes": [ + "sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c", + "sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73" + ], + "version": "==1.12.0" + }, + "sqlalchemy": { + "hashes": [ + "sha256:781fb7b9d194ed3fc596b8f0dd4623ff160e3e825dd8c15472376a438c19598b" + ], + "version": "==1.3.1" + }, + "urllib3": { + "hashes": [ + "sha256:61bf29cada3fc2fbefad4fdf059ea4bd1b4a86d2b6d15e1c7c0b582b9752fe39", + "sha256:de9529817c93f27c8ccbfead6985011db27bd0ddfcdb2d86f3f663385c6a9c22" + ], + "version": "==1.24.1" + }, + "werkzeug": { + "hashes": [ + "sha256:c3fd7a7d41976d9f44db327260e263132466836cef6f91512889ed60ad26557c", + "sha256:d5da73735293558eb1651ee2fddc4d0dedcfa06538b8813a2e20011583c9e49b" + ], + "version": "==0.14.1" + }, + "wtforms": { + "hashes": [ + "sha256:0cdbac3e7f6878086c334aa25dc5a33869a3954e9d1e015130d65a69309b3b61", + "sha256:e3ee092c827582c50877cdbd49e9ce6d2c5c1f6561f849b3b068c1b8029626f1" + ], + "version": "==2.2.1" + } + }, + "develop": { + "argh": { + "hashes": [ + "sha256:a9b3aaa1904eeb78e32394cd46c6f37ac0fb4af6dc488daa58971bdc7d7fcaf3", + "sha256:e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65" + ], + "version": "==0.26.2" + }, + "atomicwrites": { + "hashes": [ + "sha256:03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4", + "sha256:75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6" + ], + "version": "==1.3.0" + }, + "attrs": { + "hashes": [ + "sha256:69c0dbf2ed392de1cb5ec704444b08a5ef81680a61cb899dc08127123af36a79", + "sha256:f0b870f674851ecbfbbbd364d6b5cbdff9dcedbc7f3f5e18a6891057f21fe399" + ], + "version": "==19.1.0" + }, + "colorama": { + "hashes": [ + "sha256:05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d", + "sha256:f8ac84de7840f5b9c4e3347b3c1eaa50f7e49c2b07596221daec5edaabbd7c48" + ], + "version": "==0.4.1" + }, + "coverage": { + "hashes": [ + "sha256:3684fabf6b87a369017756b551cef29e505cb155ddb892a7a29277b978da88b9", + "sha256:39e088da9b284f1bd17c750ac672103779f7954ce6125fd4382134ac8d152d74", + "sha256:3c205bc11cc4fcc57b761c2da73b9b72a59f8d5ca89979afb0c1c6f9e53c7390", + "sha256:465ce53a8c0f3a7950dfb836438442f833cf6663d407f37d8c52fe7b6e56d7e8", + "sha256:48020e343fc40f72a442c8a1334284620f81295256a6b6ca6d8aa1350c763bbe", + "sha256:5296fc86ab612ec12394565c500b412a43b328b3907c0d14358950d06fd83baf", + "sha256:5f61bed2f7d9b6a9ab935150a6b23d7f84b8055524e7be7715b6513f3328138e", + "sha256:68a43a9f9f83693ce0414d17e019daee7ab3f7113a70c79a3dd4c2f704e4d741", + "sha256:6b8033d47fe22506856fe450470ccb1d8ba1ffb8463494a15cfc96392a288c09", + "sha256:7ad7536066b28863e5835e8cfeaa794b7fe352d99a8cded9f43d1161be8e9fbd", + "sha256:7bacb89ccf4bedb30b277e96e4cc68cd1369ca6841bde7b005191b54d3dd1034", + "sha256:839dc7c36501254e14331bcb98b27002aa415e4af7ea039d9009409b9d2d5420", + "sha256:8f9a95b66969cdea53ec992ecea5406c5bd99c9221f539bca1e8406b200ae98c", + "sha256:932c03d2d565f75961ba1d3cec41ddde00e162c5b46d03f7423edcb807734eab", + "sha256:988529edadc49039d205e0aa6ce049c5ccda4acb2d6c3c5c550c17e8c02c05ba", + "sha256:998d7e73548fe395eeb294495a04d38942edb66d1fa61eb70418871bc621227e", + "sha256:9de60893fb447d1e797f6bf08fdf0dbcda0c1e34c1b06c92bd3a363c0ea8c609", + "sha256:9e80d45d0c7fcee54e22771db7f1b0b126fb4a6c0a2e5afa72f66827207ff2f2", + "sha256:a545a3dfe5082dc8e8c3eb7f8a2cf4f2870902ff1860bd99b6198cfd1f9d1f49", + "sha256:a5d8f29e5ec661143621a8f4de51adfb300d7a476224156a39a392254f70687b", + "sha256:aca06bfba4759bbdb09bf52ebb15ae20268ee1f6747417837926fae990ebc41d", + "sha256:bb23b7a6fd666e551a3094ab896a57809e010059540ad20acbeec03a154224ce", + "sha256:bfd1d0ae7e292105f29d7deaa9d8f2916ed8553ab9d5f39ec65bcf5deadff3f9", + "sha256:c62ca0a38958f541a73cf86acdab020c2091631c137bd359c4f5bddde7b75fd4", + "sha256:c709d8bda72cf4cd348ccec2a4881f2c5848fd72903c185f363d361b2737f773", + "sha256:c968a6aa7e0b56ecbd28531ddf439c2ec103610d3e2bf3b75b813304f8cb7723", + "sha256:df785d8cb80539d0b55fd47183264b7002077859028dfe3070cf6359bf8b2d9c", + "sha256:f406628ca51e0ae90ae76ea8398677a921b36f0bd71aab2099dfed08abd0322f", + "sha256:f46087bbd95ebae244a0eda01a618aff11ec7a069b15a3ef8f6b520db523dcf1", + "sha256:f8019c5279eb32360ca03e9fac40a12667715546eed5c5eb59eb381f2f501260", + "sha256:fc5f4d209733750afd2714e9109816a29500718b32dd9a5db01c0cb3a019b96a" + ], + "version": "==4.5.3" + }, + "docopt": { + "hashes": [ + "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" + ], + "version": "==0.6.2" + }, + "more-itertools": { + "hashes": [ + "sha256:0125e8f60e9e031347105eb1682cef932f5e97d7b9a1a28d9bf00c22a5daef40", + "sha256:590044e3942351a1bdb1de960b739ff4ce277960f2425ad4509446dbace8d9d1" + ], + "markers": "python_version > '2.7'", + "version": "==6.0.0" + }, + "pathtools": { + "hashes": [ + "sha256:7c35c5421a39bb82e58018febd90e3b6e5db34c5443aaaf742b3f33d4655f1c0" + ], + "version": "==0.1.2" + }, + "pluggy": { + "hashes": [ + "sha256:19ecf9ce9db2fce065a7a0586e07cfb4ac8614fe96edf628a264b1c70116cf8f", + "sha256:84d306a647cc805219916e62aab89caa97a33a1dd8c342e87a37f91073cd4746" + ], + "version": "==0.9.0" + }, + "py": { + "hashes": [ + "sha256:64f65755aee5b381cea27766a3a147c3f15b9b6b9ac88676de66ba2ae36793fa", + "sha256:dc639b046a6e2cff5bbe40194ad65936d6ba360b52b3c3fe1d08a82dd50b5e53" + ], + "version": "==1.8.0" + }, + "pytest": { + "hashes": [ + "sha256:592eaa2c33fae68c7d75aacf042efc9f77b27c08a6224a4f59beab8d9a420523", + "sha256:ad3ad5c450284819ecde191a654c09b0ec72257a2c711b9633d677c71c9850c4" + ], + "index": "pypi", + "version": "==4.3.1" + }, + "pytest-cov": { + "hashes": [ + "sha256:0ab664b25c6aa9716cbf203b17ddb301932383046082c081b9848a0edf5add33", + "sha256:230ef817450ab0699c6cc3c9c8f7a829c34674456f2ed8df1fe1d39780f7c87f" + ], + "index": "pypi", + "version": "==2.6.1" + }, + "pytest-watch": { + "hashes": [ + "sha256:06136f03d5b361718b8d0d234042f7b2f203910d8568f63df2f866b547b3d4b9" + ], + "index": "pypi", + "version": "==4.2.0" + }, + "pyyaml": { + "hashes": [ + "sha256:1adecc22f88d38052fb787d959f003811ca858b799590a5eaa70e63dca50308c", + "sha256:436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95", + "sha256:460a5a4248763f6f37ea225d19d5c205677d8d525f6a83357ca622ed541830c2", + "sha256:5a22a9c84653debfbf198d02fe592c176ea548cccce47553f35f466e15cf2fd4", + "sha256:7a5d3f26b89d688db27822343dfa25c599627bc92093e788956372285c6298ad", + "sha256:9372b04a02080752d9e6f990179a4ab840227c6e2ce15b95e1278456664cf2ba", + "sha256:a5dcbebee834eaddf3fa7366316b880ff4062e4bcc9787b78c7fbb4a26ff2dd1", + "sha256:aee5bab92a176e7cd034e57f46e9df9a9862a71f8f37cad167c6fc74c65f5b4e", + "sha256:c51f642898c0bacd335fc119da60baae0824f2cde95b0330b56c0553439f0673", + "sha256:c68ea4d3ba1705da1e0d85da6684ac657912679a649e8868bd850d2c299cce13", + "sha256:e23d0cc5299223dcc37885dae624f382297717e459ea24053709675a976a3e19" + ], + "version": "==5.1" + }, + "six": { + "hashes": [ + "sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c", + "sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73" + ], + "version": "==1.12.0" + }, + "watchdog": { + "hashes": [ + "sha256:965f658d0732de3188211932aeb0bb457587f04f63ab4c1e33eab878e9de961d" + ], + "version": "==0.9.0" + } + } +} diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..62c0cd6 --- /dev/null +++ b/src/__init__.py @@ -0,0 +1,18 @@ +from . import routes, models, exceptions +from flask import Flask +import os + +basedir = os.path.abspath(os.path.dirname(__file__)) + +app = Flask( + __name__, + static_url_path='', + static_folder='static', + instance_relative_config=True +) + +app.config.from_mapping( + SECRET_KEY=os.environ.get('SECRET_KEY'), + SQLALCHEMY_DATABASE_URI=os.environ.get('DATABASE_URL'), + SQLALCHEMY_TRACK_MODIFICATIONS=False +) diff --git a/src/auth.py b/src/auth.py new file mode 100644 index 0000000..e69de29 diff --git a/src/exceptions.py b/src/exceptions.py new file mode 100644 index 0000000..e69de29 diff --git a/src/forms.py b/src/forms.py new file mode 100644 index 0000000..e69de29 diff --git a/src/models.py b/src/models.py new file mode 100644 index 0000000..e69de29 diff --git a/src/routes.py b/src/routes.py new file mode 100644 index 0000000..e69de29 diff --git a/wsgi.py b/wsgi.py new file mode 100644 index 0000000..08814d4 --- /dev/null +++ b/wsgi.py @@ -0,0 +1,4 @@ +from src import app + +if __name__ = '__main__': + app.run() From e68314681852060c3537611d00f8a2d34b525349 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Mon, 18 Mar 2019 00:45:21 -0700 Subject: [PATCH 02/87] fixes --- Pipfile | 3 ++- Pipfile.lock | 10 +++++++++- wsgi.py | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Pipfile b/Pipfile index e1dc967..08dfc3f 100644 --- a/Pipfile +++ b/Pipfile @@ -7,6 +7,7 @@ verify_ssl = true pytest = "*" pytest-watch = "*" pytest-cov = "*" +pep8 = "*" [packages] requests = "*" @@ -19,4 +20,4 @@ flask-wtf = "*" passlib = "*" [requires] -python_version = "3.7" \ No newline at end of file +python_version = "3.7" diff --git a/Pipfile.lock b/Pipfile.lock index b466e32..96b3c32 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "88667d6a9368b33fc168e394110547b0f0eb6fc44e394364ee4b6cff0f30db19" + "sha256": "3125294801683fb11559b70ba468b14edd41a2efcf2b7cec2a915b79a7779e91" }, "pipfile-spec": 6, "requires": { @@ -330,6 +330,14 @@ ], "version": "==0.1.2" }, + "pep8": { + "hashes": [ + "sha256:b22cfae5db09833bb9bd7c8463b53e1a9c9b39f12e304a8d0bba729c501827ee", + "sha256:fe249b52e20498e59e0b5c5256aa52ee99fc295b26ec9eaa85776ffdb9fe6374" + ], + "index": "pypi", + "version": "==1.7.1" + }, "pluggy": { "hashes": [ "sha256:19ecf9ce9db2fce065a7a0586e07cfb4ac8614fe96edf628a264b1c70116cf8f", diff --git a/wsgi.py b/wsgi.py index 08814d4..27803c4 100644 --- a/wsgi.py +++ b/wsgi.py @@ -1,4 +1,4 @@ from src import app -if __name__ = '__main__': +if __name__ == '__main__': app.run() From 5cd5d2e4e2d82d1c1bfa7f025fdffb5ef544bdc5 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Mon, 18 Mar 2019 09:32:13 -0700 Subject: [PATCH 03/87] blank route functions --- Pipfile | 1 + Pipfile.lock | 16 +++++++++++++++- src/routes.py | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/Pipfile b/Pipfile index 08dfc3f..a98f7dc 100644 --- a/Pipfile +++ b/Pipfile @@ -8,6 +8,7 @@ pytest = "*" pytest-watch = "*" pytest-cov = "*" pep8 = "*" +autopep8 = "*" [packages] requests = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 96b3c32..2553206 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "3125294801683fb11559b70ba468b14edd41a2efcf2b7cec2a915b79a7779e91" + "sha256": "7a82f2025a304ff9be5365de6b19a551b0d8917c9ebc399c6c0a681c38a13e13" }, "pipfile-spec": 6, "requires": { @@ -267,6 +267,13 @@ ], "version": "==19.1.0" }, + "autopep8": { + "hashes": [ + "sha256:33d2b5325b7e1afb4240814fe982eea3a92ebea712869bfd08b3c0393404248c" + ], + "index": "pypi", + "version": "==1.4.3" + }, "colorama": { "hashes": [ "sha256:05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d", @@ -352,6 +359,13 @@ ], "version": "==1.8.0" }, + "pycodestyle": { + "hashes": [ + "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56", + "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c" + ], + "version": "==2.5.0" + }, "pytest": { "hashes": [ "sha256:592eaa2c33fae68c7d75aacf042efc9f77b27c08a6224a4f59beab8d9a420523", diff --git a/src/routes.py b/src/routes.py index e69de29..928ee82 100644 --- a/src/routes.py +++ b/src/routes.py @@ -0,0 +1,36 @@ +from flask import render_template, redirect, url_for, request, flash, session, g +from sqlalchemy.exc import DBAPIError, IntegrityError +from . import app +import requests +import json +import os + + +@app.route('/') +def home(): + pass + + +@app.route('/customer') +def customer(): + pass + + +@app.route('/order') +def order(): + pass + + +@app.route('/item') +def item(): + pass + + +@app.route('/reservation') +def reservation(): + pass + + +@app.route('/employee') +def employee(): + pass From a3b07e11822a71010367e3f7fb28ede270d4b7d3 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Mon, 18 Mar 2019 09:43:41 -0700 Subject: [PATCH 04/87] db table model enpty classes created --- src/models.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/models.py b/src/models.py index e69de29..bce2b2a 100644 --- a/src/models.py +++ b/src/models.py @@ -0,0 +1,34 @@ +from flask_sqlalchemy import SQLAlchemy +from flask import g +from passlib.hash import sha256_crypt +from datetime import datetime as dt +from flask_migrate import Migrate +from . import app + +db = SQLAlchemy(app) +migrate = Migrate(app, db) + + +class User(db.Model): + __tablename__ = 'users' + + +class Customer(User): + __tablename__ = 'customers' + + +class Employee(db.Model): + __tablename__ = 'employee' + + +class Order(db.Model): + __tablename__ = 'orders' + + +class OrdersContain(db.Model): + __tablename__ = 'orders_contain' + + +class Item(db.Model): + __tablename__ = 'items' + From 9104a6b1ed3e1730b5535a6edbcfd01c5e75d587 Mon Sep 17 00:00:00 2001 From: Tim Schoen Date: Mon, 18 Mar 2019 10:16:02 -0700 Subject: [PATCH 05/87] HTML started --- README.md | 5 + src/static/css/normalize.css | 428 ++++++++++++++++++++++++++++++++++ src/static/css/skeleton.css | 419 +++++++++++++++++++++++++++++++++ src/templates/auth/login.html | 18 ++ src/templates/base.html | 28 +++ src/templates/home.html | 10 + 6 files changed, 908 insertions(+) create mode 100644 src/static/css/normalize.css create mode 100644 src/static/css/skeleton.css create mode 100644 src/templates/auth/login.html create mode 100644 src/templates/base.html create mode 100644 src/templates/home.html diff --git a/README.md b/README.md index 7eefcb2..c257ab7 100644 --- a/README.md +++ b/README.md @@ -12,3 +12,8 @@ More to come ## Getting Started We will let you know + + +## + CSS Skeleton V2.04 was used Copyright 2014, Dave Gamache, Free to use under MIT license. + \ No newline at end of file diff --git a/src/static/css/normalize.css b/src/static/css/normalize.css new file mode 100644 index 0000000..6f97c5e --- /dev/null +++ b/src/static/css/normalize.css @@ -0,0 +1,428 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + + html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ + } + + /** + * Remove default margin. + */ + + body { + margin: 0; + } + + /* HTML5 display definitions + ========================================================================== */ + + /** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + + article, + aside, + details, + figcaption, + figure, + footer, + header, + hgroup, + main, + menu, + nav, + section, + summary { + display: block; + } + + /** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + + audio, + canvas, + progress, + video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ + } + + /** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + + audio:not([controls]) { + display: none; + height: 0; + } + + /** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + + [hidden], + template { + display: none; + } + + /* Links + ========================================================================== */ + + /** + * Remove the gray background color from active links in IE 10. + */ + + a { + background-color: transparent; + } + + /** + * Improve readability when focused and also mouse hovered in all browsers. + */ + + a:active, + a:hover { + outline: 0; + } + + /* Text-level semantics + ========================================================================== */ + + /** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + + abbr[title] { + border-bottom: 1px dotted; + } + + /** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + + b, + strong { + font-weight: bold; + } + + /** + * Address styling not present in Safari and Chrome. + */ + + dfn { + font-style: italic; + } + + /** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + + h1 { + font-size: 2em; + margin: 0.67em 0; + } + + /** + * Address styling not present in IE 8/9. + */ + + mark { + background: #ff0; + color: #000; + } + + /** + * Address inconsistent and variable font size in all browsers. + */ + + small { + font-size: 80%; + } + + /** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + + sub, + sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + } + + sup { + top: -0.5em; + } + + sub { + bottom: -0.25em; + } + + /* Embedded content + ========================================================================== */ + + /** + * Remove border when inside `a` element in IE 8/9/10. + */ + + img { + border: 0; + } + + /** + * Correct overflow not hidden in IE 9/10/11. + */ + + svg:not(:root) { + overflow: hidden; + } + + /* Grouping content + ========================================================================== */ + + /** + * Address margin not present in IE 8/9 and Safari. + */ + + figure { + margin: 1em 40px; + } + + /** + * Address differences between Firefox and other browsers. + */ + + hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; + } + + /** + * Contain overflow in all browsers. + */ + + pre { + overflow: auto; + } + + /** + * Address odd `em`-unit font size rendering in all browsers. + */ + + code, + kbd, + pre, + samp { + font-family: monospace, monospace; + font-size: 1em; + } + + /* Forms + ========================================================================== */ + + /** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + + /** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + + button, + input, + optgroup, + select, + textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ + } + + /** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + + button { + overflow: visible; + } + + /** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + + button, + select { + text-transform: none; + } + + /** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + + button, + html input[type="button"], /* 1 */ + input[type="reset"], + input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ + } + + /** + * Re-set default cursor for disabled elements. + */ + + button[disabled], + html input[disabled] { + cursor: default; + } + + /** + * Remove inner padding and border in Firefox 4+. + */ + + button::-moz-focus-inner, + input::-moz-focus-inner { + border: 0; + padding: 0; + } + + /** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + + input { + line-height: normal; + } + + /** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + + input[type="checkbox"], + input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ + } + + /** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + + input[type="number"]::-webkit-inner-spin-button, + input[type="number"]::-webkit-outer-spin-button { + height: auto; + } + + /** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + + input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; + } + + /** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + + input[type="search"]::-webkit-search-cancel-button, + input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; + } + + /** + * Define consistent border, margin, and padding. + */ + + fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; + } + + /** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + + legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ + } + + /** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + + textarea { + overflow: auto; + } + + /** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + + optgroup { + font-weight: bold; + } + + /* Tables + ========================================================================== */ + + /** + * Remove most spacing between table cells. + */ + + table { + border-collapse: collapse; + border-spacing: 0; + } + + td, + th { + padding: 0; + } + \ No newline at end of file diff --git a/src/static/css/skeleton.css b/src/static/css/skeleton.css new file mode 100644 index 0000000..6509671 --- /dev/null +++ b/src/static/css/skeleton.css @@ -0,0 +1,419 @@ +/* +* Skeleton V2.0.4 +* Copyright 2014, Dave Gamache +* www.getskeleton.com +* Free to use under the MIT license. +* http://www.opensource.org/licenses/mit-license.php +* 12/29/2014 +*/ + + +/* Table of contents +–––––––––––––––––––––––––––––––––––––––––––––––––– +- Grid +- Base Styles +- Typography +- Links +- Buttons +- Forms +- Lists +- Code +- Tables +- Spacing +- Utilities +- Clearing +- Media Queries +*/ + + +/* Grid +–––––––––––––––––––––––––––––––––––––––––––––––––– */ +.container { + position: relative; + width: 100%; + max-width: 1200px; + margin: 0 auto; + padding: 0 20px; + box-sizing: border-box; } + .column, + .columns { + width: 100%; + float: left; + box-sizing: border-box; } + + /* For devices larger than 400px */ + @media (min-width: 400px) { + .container { + width: 85%; + padding: 0; } + } + + /* For devices larger than 550px */ + @media (min-width: 550px) { + .container { + width: 80%; } + .column, + .columns { + margin-left: 4%; } + .column:first-child, + .columns:first-child { + margin-left: 0; } + + .one.column, + .one.columns { width: 4.66666666667%; } + .two.columns { width: 13.3333333333%; } + .three.columns { width: 22%; } + .four.columns { width: 30.6666666667%; } + .five.columns { width: 39.3333333333%; } + .six.columns { width: 48%; } + .seven.columns { width: 56.6666666667%; } + .eight.columns { width: 65.3333333333%; } + .nine.columns { width: 74.0%; } + .ten.columns { width: 82.6666666667%; } + .eleven.columns { width: 91.3333333333%; } + .twelve.columns { width: 100%; margin-left: 0; } + + .one-third.column { width: 30.6666666667%; } + .two-thirds.column { width: 65.3333333333%; } + + .one-half.column { width: 48%; } + + /* Offsets */ + .offset-by-one.column, + .offset-by-one.columns { margin-left: 8.66666666667%; } + .offset-by-two.column, + .offset-by-two.columns { margin-left: 17.3333333333%; } + .offset-by-three.column, + .offset-by-three.columns { margin-left: 26%; } + .offset-by-four.column, + .offset-by-four.columns { margin-left: 34.6666666667%; } + .offset-by-five.column, + .offset-by-five.columns { margin-left: 43.3333333333%; } + .offset-by-six.column, + .offset-by-six.columns { margin-left: 52%; } + .offset-by-seven.column, + .offset-by-seven.columns { margin-left: 60.6666666667%; } + .offset-by-eight.column, + .offset-by-eight.columns { margin-left: 69.3333333333%; } + .offset-by-nine.column, + .offset-by-nine.columns { margin-left: 78.0%; } + .offset-by-ten.column, + .offset-by-ten.columns { margin-left: 86.6666666667%; } + .offset-by-eleven.column, + .offset-by-eleven.columns { margin-left: 95.3333333333%; } + + .offset-by-one-third.column, + .offset-by-one-third.columns { margin-left: 34.6666666667%; } + .offset-by-two-thirds.column, + .offset-by-two-thirds.columns { margin-left: 69.3333333333%; } + + .offset-by-one-half.column, + .offset-by-one-half.columns { margin-left: 52%; } + + } + + + /* Base Styles + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + /* NOTE + html is set to 62.5% so that all the REM measurements throughout Skeleton + are based on 10px sizing. So basically 1.5rem = 15px :) */ + html { + font-size: 62.5%; } + body { + font-size: 1.5em; /* currently ems cause chrome bug misinterpreting rems on body element */ + line-height: 1.6; + font-weight: 400; + font-family: "Raleway", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; + color: #222; } + + + /* Typography + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: 2rem; + font-weight: 300; } + h1 { font-size: 4.0rem; line-height: 1.2; letter-spacing: -.1rem;} + h2 { font-size: 3.6rem; line-height: 1.25; letter-spacing: -.1rem; } + h3 { font-size: 3.0rem; line-height: 1.3; letter-spacing: -.1rem; } + h4 { font-size: 2.4rem; line-height: 1.35; letter-spacing: -.08rem; } + h5 { font-size: 1.8rem; line-height: 1.5; letter-spacing: -.05rem; } + h6 { font-size: 1.5rem; line-height: 1.6; letter-spacing: 0; } + + /* Larger than phablet */ + @media (min-width: 550px) { + h1 { font-size: 5.0rem; } + h2 { font-size: 4.2rem; } + h3 { font-size: 3.6rem; } + h4 { font-size: 3.0rem; } + h5 { font-size: 2.4rem; } + h6 { font-size: 1.5rem; } + } + + p { + margin-top: 0; } + + + /* Links + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + a { + color: #1EAEDB; } + a:hover { + color: #0FA0CE; } + + + /* Buttons + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + .button, + button, + input[type="submit"], + input[type="reset"], + input[type="button"] { + display: inline-block; + height: 38px; + padding: 0 30px; + color: #555; + text-align: center; + font-size: 11px; + font-weight: 600; + line-height: 38px; + letter-spacing: .1rem; + text-transform: uppercase; + text-decoration: none; + white-space: nowrap; + background-color: transparent; + border-radius: 4px; + border: 1px solid #bbb; + cursor: pointer; + box-sizing: border-box; } + .button:hover, + button:hover, + input[type="submit"]:hover, + input[type="reset"]:hover, + input[type="button"]:hover, + .button:focus, + button:focus, + input[type="submit"]:focus, + input[type="reset"]:focus, + input[type="button"]:focus { + color: #333; + border-color: #888; + outline: 0; } + .button.button-primary, + button.button-primary, + input[type="submit"].button-primary, + input[type="reset"].button-primary, + input[type="button"].button-primary { + color: #FFF; + background-color: #33C3F0; + border-color: #33C3F0; } + .button.button-primary:hover, + button.button-primary:hover, + input[type="submit"].button-primary:hover, + input[type="reset"].button-primary:hover, + input[type="button"].button-primary:hover, + .button.button-primary:focus, + button.button-primary:focus, + input[type="submit"].button-primary:focus, + input[type="reset"].button-primary:focus, + input[type="button"].button-primary:focus { + color: #FFF; + background-color: #1EAEDB; + border-color: #1EAEDB; } + + + /* Forms + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + input[type="email"], + input[type="number"], + input[type="search"], + input[type="text"], + input[type="tel"], + input[type="url"], + input[type="password"], + textarea, + select { + height: 38px; + padding: 6px 10px; /* The 6px vertically centers text on FF, ignored by Webkit */ + background-color: #fff; + border: 1px solid #D1D1D1; + border-radius: 4px; + box-shadow: none; + box-sizing: border-box; } + /* Removes awkward default styles on some inputs for iOS */ + input[type="email"], + input[type="number"], + input[type="search"], + input[type="text"], + input[type="tel"], + input[type="url"], + input[type="password"], + textarea { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; } + textarea { + min-height: 65px; + padding-top: 6px; + padding-bottom: 6px; } + input[type="email"]:focus, + input[type="number"]:focus, + input[type="search"]:focus, + input[type="text"]:focus, + input[type="tel"]:focus, + input[type="url"]:focus, + input[type="password"]:focus, + textarea:focus, + select:focus { + border: 1px solid #33C3F0; + outline: 0; } + label, + legend { + display: block; + margin-bottom: .5rem; + font-weight: 600; } + fieldset { + padding: 0; + border-width: 0; } + input[type="checkbox"], + input[type="radio"] { + display: inline; } + label > .label-body { + display: inline-block; + margin-left: .5rem; + font-weight: normal; } + + + /* Lists + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + ul { + list-style: circle inside; } + ol { + list-style: decimal inside; } + ol, ul { + padding-left: 0; + margin-top: 0; } + ul ul, + ul ol, + ol ol, + ol ul { + margin: 1.5rem 0 1.5rem 3rem; + font-size: 90%; } + li { + margin-bottom: 1rem; } + + + /* Code + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + code { + padding: .2rem .5rem; + margin: 0 .2rem; + font-size: 90%; + white-space: nowrap; + background: #F1F1F1; + border: 1px solid #E1E1E1; + border-radius: 4px; } + pre > code { + display: block; + padding: 1rem 1.5rem; + white-space: pre; } + + + /* Tables + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + th, + td { + padding: 12px 15px; + text-align: left; + border-bottom: 1px solid #E1E1E1; } + th:first-child, + td:first-child { + padding-left: 0; } + th:last-child, + td:last-child { + padding-right: 0; } + + + /* Spacing + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + button, + .button { + margin-bottom: 1rem; } + input, + textarea, + select, + fieldset { + margin-bottom: 1.5rem; } + pre, + blockquote, + dl, + figure, + table, + p, + ul, + ol, + form { + margin-bottom: 2.5rem; } + + + /* Utilities + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + .u-full-width { + width: 100%; + box-sizing: border-box; } + .u-max-full-width { + max-width: 100%; + box-sizing: border-box; } + .u-pull-right { + float: right; } + .u-pull-left { + float: left; } + + + /* Misc + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + hr { + margin-top: 3rem; + margin-bottom: 3.5rem; + border-width: 0; + border-top: 1px solid #E1E1E1; } + + + /* Clearing + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + + /* Self Clearing Goodness */ + .container:after, + .row:after, + .u-cf { + content: ""; + display: table; + clear: both; } + + + /* Media Queries + –––––––––––––––––––––––––––––––––––––––––––––––––– */ + /* + Note: The best way to structure the use of media queries is to create the queries + near the relevant code. For example, if you wanted to change the styles for buttons + on small devices, paste the mobile query code up in the buttons section and style it + there. + */ + + + /* Larger than mobile */ + @media (min-width: 400px) {} + + /* Larger than phablet (also point when grid becomes active) */ + @media (min-width: 550px) {} + + /* Larger than tablet */ + @media (min-width: 750px) {} + + /* Larger than desktop */ + @media (min-width: 1000px) {} + + /* Larger than Desktop HD */ + @media (min-width: 1200px) {} + \ No newline at end of file diff --git a/src/templates/auth/login.html b/src/templates/auth/login.html new file mode 100644 index 0000000..0ab4f54 --- /dev/null +++ b/src/templates/auth/login.html @@ -0,0 +1,18 @@ +{% extends "base.html" %} + +{% block title %} +Login Page +{% endblock title %} + + +{% block content %} +
+

Login:

+
+ {{ form.hidden_tag() }} + {{ form.email.label }}{{ form.email (size = 32)}} + {{ form.password.label }}{{ form.password (size = 32)}} + +
+
+{% endblock content %} \ No newline at end of file diff --git a/src/templates/base.html b/src/templates/base.html new file mode 100644 index 0000000..f9b8bfb --- /dev/null +++ b/src/templates/base.html @@ -0,0 +1,28 @@ + + + + + + + + + + + +
+ +
+
+ {% for message in get_flashed_messages() %} +
{{message}}
+ {% endfor %} + +
+ + \ No newline at end of file diff --git a/src/templates/home.html b/src/templates/home.html new file mode 100644 index 0000000..b022d2e --- /dev/null +++ b/src/templates/home.html @@ -0,0 +1,10 @@ +{% extends 'base.html' %} + +{% block title%} +Home-Page +{% endblock title%} + +{% block content %} +

Home Page

+{% endblock content %} + From befee02562a2631f7318d814338f3c900cef4b89 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Mon, 18 Mar 2019 10:27:57 -0700 Subject: [PATCH 06/87] db model classes filled in --- src/models.py | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/src/models.py b/src/models.py index bce2b2a..6b22c61 100644 --- a/src/models.py +++ b/src/models.py @@ -12,23 +12,58 @@ class User(db.Model): __tablename__ = 'users' + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String(256)) + email = db.Column(db.String(256)) + role = db.Column(db.String(16)) + class Customer(User): __tablename__ = 'customers' + user_id = db.Column(db.ForeignKey('users.id'), primary_key=True) + phone = db.Column(db.String(32)) + class Employee(db.Model): __tablename__ = 'employee' + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String(256)) + class Order(db.Model): __tablename__ = 'orders' + id = db.Column(db.Integer, primary_key=True) + cust_id = db.Column(db.ForeignKey('customers.id'), nullable=False) + empl_id = db.Column(db.ForeignKey('employee.id'), nullable=False) -class OrdersContain(db.Model): - __tablename__ = 'orders_contain' + items = relationship( + 'Item', + secondary=orders_contain, + back_populates='orders' + ) + + +orders_contain = Table( + 'orders_contain', + Column('order_id', Integer, ForeignKey('orders.id')), + Column('item_id', Integer, ForeignKey('items.id')) +) class Item(db.Model): __tablename__ = 'items' + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String(256), nullable=False) + price = db.Column(db.Decimal(10, 2)) + cog = db.Column(db.Decimal(10, 2)) + inventory_count = db.Column(db.Integer, default=0) + + orders = relationship( + 'Order', + secondary=orders_contain, + back_populates='items' + ) From a95b40756d127991f8ce1a736637461c454874ae Mon Sep 17 00:00:00 2001 From: Tim Schoen Date: Mon, 18 Mar 2019 10:56:36 -0700 Subject: [PATCH 07/87] order.html --- src/templates/auth/register.html | 17 +++++++++++++++++ src/templates/order.html | 29 +++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 src/templates/auth/register.html create mode 100644 src/templates/order.html diff --git a/src/templates/auth/register.html b/src/templates/auth/register.html new file mode 100644 index 0000000..8aad198 --- /dev/null +++ b/src/templates/auth/register.html @@ -0,0 +1,17 @@ +{% extends "base.html" %} + +{% block title %} +Register-Page +{% endblock title %} + +{% block content %} +
+

Register:

+
+ {{ form.hidden_tag() }} + {{ form.name.label }}{{ form.name(size=36)}} + {{ form.phone.label }}{{ form.phone(size=36)}} + {{ form.email.label }}{{ form.email(size=36)}} +
+
+{% endblock content %} \ No newline at end of file diff --git a/src/templates/order.html b/src/templates/order.html new file mode 100644 index 0000000..a668513 --- /dev/null +++ b/src/templates/order.html @@ -0,0 +1,29 @@ +{% extends "base.html" %} +{% block title} +Order Page + +{% endblock title} +
+

Py Cafe Menu

+ + + + + + + + + {% for item in items %} + + + + + {% endfor %} + +
ItemPrice
{{}} {{}}
+
+ {{ form.hidden_tag()}} + {{ form.item_ordered.label }}{{ form.item_ordered}} + {{ form.number_ordered.label }}{{ form.number_ordered}} +
+
From 75f353ea1a68c1c6e2d7dd4dd140659e9d8b485f Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Mon, 18 Mar 2019 10:59:27 -0700 Subject: [PATCH 08/87] bug fixes --- src/__init__.py | 3 ++- src/models.py | 33 ++++++++++++++++++++++----------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/__init__.py b/src/__init__.py index 62c0cd6..0752392 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -1,4 +1,3 @@ -from . import routes, models, exceptions from flask import Flask import os @@ -16,3 +15,5 @@ SQLALCHEMY_DATABASE_URI=os.environ.get('DATABASE_URL'), SQLALCHEMY_TRACK_MODIFICATIONS=False ) + +from . import routes, models, exceptions diff --git a/src/models.py b/src/models.py index 6b22c61..618a7fb 100644 --- a/src/models.py +++ b/src/models.py @@ -38,19 +38,30 @@ class Order(db.Model): id = db.Column(db.Integer, primary_key=True) cust_id = db.Column(db.ForeignKey('customers.id'), nullable=False) empl_id = db.Column(db.ForeignKey('employee.id'), nullable=False) + date_created = db.Column(db.DateTime, default=dt.now()) - items = relationship( + items = db.relationship( 'Item', - secondary=orders_contain, + secondary='orders_contain', back_populates='orders' ) -orders_contain = Table( - 'orders_contain', - Column('order_id', Integer, ForeignKey('orders.id')), - Column('item_id', Integer, ForeignKey('items.id')) -) +class OrdersContain(db.Model): + __tablename__ = 'orders_contain' + + id = db.Column(db.Integer, primary_key=True) + order_id = db.Column(db.ForeignKey('orders.id'), nullable=False) + item_id = db.Column(db.ForeignKey('items.id'), nullable=False) + + order = db.relationship( + 'Order', + backref=db.backref('orders', cascade='all') + ) + item = db.relationship( + 'Order', + backref=db.backref('items') + ) class Item(db.Model): @@ -58,12 +69,12 @@ class Item(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(256), nullable=False) - price = db.Column(db.Decimal(10, 2)) - cog = db.Column(db.Decimal(10, 2)) + price = db.Column(db.Float(10, 2)) + cog = db.Column(db.Float(10, 2)) inventory_count = db.Column(db.Integer, default=0) - orders = relationship( + orders = db.relationship( 'Order', - secondary=orders_contain, + secondary='orders_contain', back_populates='items' ) From ebd5538a055cfc3440aa9a0ab0a0c85331615b71 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Mon, 18 Mar 2019 11:11:35 -0700 Subject: [PATCH 09/87] bug fix & first migration --- migrations/README | 1 + migrations/alembic.ini | 45 +++++++++++++ migrations/env.py | 95 ++++++++++++++++++++++++++++ migrations/script.py.mako | 24 +++++++ migrations/versions/7d8a45abaca3_.py | 75 ++++++++++++++++++++++ src/models.py | 2 +- 6 files changed, 241 insertions(+), 1 deletion(-) create mode 100644 migrations/README create mode 100644 migrations/alembic.ini create mode 100644 migrations/env.py create mode 100644 migrations/script.py.mako create mode 100644 migrations/versions/7d8a45abaca3_.py diff --git a/migrations/README b/migrations/README new file mode 100644 index 0000000..98e4f9c --- /dev/null +++ b/migrations/README @@ -0,0 +1 @@ +Generic single-database configuration. \ No newline at end of file diff --git a/migrations/alembic.ini b/migrations/alembic.ini new file mode 100644 index 0000000..f8ed480 --- /dev/null +++ b/migrations/alembic.ini @@ -0,0 +1,45 @@ +# A generic, single database configuration. + +[alembic] +# template used to generate migration files +# file_template = %%(rev)s_%%(slug)s + +# set to 'true' to run the environment during +# the 'revision' command, regardless of autogenerate +# revision_environment = false + + +# Logging configuration +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/migrations/env.py b/migrations/env.py new file mode 100644 index 0000000..169d487 --- /dev/null +++ b/migrations/env.py @@ -0,0 +1,95 @@ +from __future__ import with_statement + +import logging +from logging.config import fileConfig + +from sqlalchemy import engine_from_config +from sqlalchemy import pool + +from alembic import context + +# this is the Alembic Config object, which provides +# access to the values within the .ini file in use. +config = context.config + +# Interpret the config file for Python logging. +# This line sets up loggers basically. +fileConfig(config.config_file_name) +logger = logging.getLogger('alembic.env') + +# add your model's MetaData object here +# for 'autogenerate' support +# from myapp import mymodel +# target_metadata = mymodel.Base.metadata +from flask import current_app +config.set_main_option('sqlalchemy.url', + current_app.config.get('SQLALCHEMY_DATABASE_URI')) +target_metadata = current_app.extensions['migrate'].db.metadata + +# other values from the config, defined by the needs of env.py, +# can be acquired: +# my_important_option = config.get_main_option("my_important_option") +# ... etc. + + +def run_migrations_offline(): + """Run migrations in 'offline' mode. + + This configures the context with just a URL + and not an Engine, though an Engine is acceptable + here as well. By skipping the Engine creation + we don't even need a DBAPI to be available. + + Calls to context.execute() here emit the given string to the + script output. + + """ + url = config.get_main_option("sqlalchemy.url") + context.configure( + url=url, target_metadata=target_metadata, literal_binds=True + ) + + with context.begin_transaction(): + context.run_migrations() + + +def run_migrations_online(): + """Run migrations in 'online' mode. + + In this scenario we need to create an Engine + and associate a connection with the context. + + """ + + # this callback is used to prevent an auto-migration from being generated + # when there are no changes to the schema + # reference: http://alembic.zzzcomputing.com/en/latest/cookbook.html + def process_revision_directives(context, revision, directives): + if getattr(config.cmd_opts, 'autogenerate', False): + script = directives[0] + if script.upgrade_ops.is_empty(): + directives[:] = [] + logger.info('No changes in schema detected.') + + connectable = engine_from_config( + config.get_section(config.config_ini_section), + prefix='sqlalchemy.', + poolclass=pool.NullPool, + ) + + with connectable.connect() as connection: + context.configure( + connection=connection, + target_metadata=target_metadata, + process_revision_directives=process_revision_directives, + **current_app.extensions['migrate'].configure_args + ) + + with context.begin_transaction(): + context.run_migrations() + + +if context.is_offline_mode(): + run_migrations_offline() +else: + run_migrations_online() diff --git a/migrations/script.py.mako b/migrations/script.py.mako new file mode 100644 index 0000000..2c01563 --- /dev/null +++ b/migrations/script.py.mako @@ -0,0 +1,24 @@ +"""${message} + +Revision ID: ${up_revision} +Revises: ${down_revision | comma,n} +Create Date: ${create_date} + +""" +from alembic import op +import sqlalchemy as sa +${imports if imports else ""} + +# revision identifiers, used by Alembic. +revision = ${repr(up_revision)} +down_revision = ${repr(down_revision)} +branch_labels = ${repr(branch_labels)} +depends_on = ${repr(depends_on)} + + +def upgrade(): + ${upgrades if upgrades else "pass"} + + +def downgrade(): + ${downgrades if downgrades else "pass"} diff --git a/migrations/versions/7d8a45abaca3_.py b/migrations/versions/7d8a45abaca3_.py new file mode 100644 index 0000000..8a51f38 --- /dev/null +++ b/migrations/versions/7d8a45abaca3_.py @@ -0,0 +1,75 @@ +"""empty message + +Revision ID: 7d8a45abaca3 +Revises: +Create Date: 2019-03-18 11:08:12.174498 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '7d8a45abaca3' +down_revision = None +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('employee', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('name', sa.String(length=256), nullable=True), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('items', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('name', sa.String(length=256), nullable=False), + sa.Column('price', sa.Float(precision=10, asdecimal=2), nullable=True), + sa.Column('cog', sa.Float(precision=10, asdecimal=2), nullable=True), + sa.Column('inventory_count', sa.Integer(), nullable=True), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('users', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('name', sa.String(length=256), nullable=True), + sa.Column('email', sa.String(length=256), nullable=True), + sa.Column('role', sa.String(length=16), nullable=True), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('customers', + sa.Column('user_id', sa.Integer(), nullable=False), + sa.Column('phone', sa.String(length=32), nullable=True), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ), + sa.PrimaryKeyConstraint('user_id') + ) + op.create_table('orders', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('cust_id', sa.Integer(), nullable=False), + sa.Column('empl_id', sa.Integer(), nullable=False), + sa.Column('date_created', sa.DateTime(), nullable=True), + sa.ForeignKeyConstraint(['cust_id'], ['customers.user_id'], ), + sa.ForeignKeyConstraint(['empl_id'], ['employee.id'], ), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('orders_contain', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('order_id', sa.Integer(), nullable=False), + sa.Column('item_id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['item_id'], ['items.id'], ), + sa.ForeignKeyConstraint(['order_id'], ['orders.id'], ), + sa.PrimaryKeyConstraint('id') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('orders_contain') + op.drop_table('orders') + op.drop_table('customers') + op.drop_table('users') + op.drop_table('items') + op.drop_table('employee') + # ### end Alembic commands ### diff --git a/src/models.py b/src/models.py index 618a7fb..282d5a8 100644 --- a/src/models.py +++ b/src/models.py @@ -36,7 +36,7 @@ class Order(db.Model): __tablename__ = 'orders' id = db.Column(db.Integer, primary_key=True) - cust_id = db.Column(db.ForeignKey('customers.id'), nullable=False) + cust_id = db.Column(db.ForeignKey('customers.user_id'), nullable=False) empl_id = db.Column(db.ForeignKey('employee.id'), nullable=False) date_created = db.Column(db.DateTime, default=dt.now()) From 87fd7669b63d8d80e1821a168971bf622d21bc92 Mon Sep 17 00:00:00 2001 From: Dan Le Date: Mon, 18 Mar 2019 11:45:14 -0700 Subject: [PATCH 10/87] register and items form added --- Pipfile | 1 + requirements.txt | 24 ++++++++++++++++++++++++ src/forms.py | 17 +++++++++++++++++ src/models.py | 1 + src/routes.py | 16 ++++++++++++---- src/templates/auth/add_items.html | 20 ++++++++++++++++++++ src/templates/auth/register.html | 2 ++ src/templates/base.html | 11 ++++++----- 8 files changed, 83 insertions(+), 9 deletions(-) create mode 100644 requirements.txt create mode 100644 src/templates/auth/add_items.html diff --git a/Pipfile b/Pipfile index a98f7dc..f47bab5 100644 --- a/Pipfile +++ b/Pipfile @@ -19,6 +19,7 @@ flask-migrate = "*" python-dotenv = "*" flask-wtf = "*" passlib = "*" +dev = "*" [requires] python_version = "3.7" diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..ee23a35 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,24 @@ +alembic==1.0.8 +certifi==2019.3.9 +chardet==3.0.4 +Click==7.0 +Flask==1.0.2 +Flask-Migrate==2.4.0 +Flask-SQLAlchemy==2.3.2 +Flask-WTF==0.14.2 +idna==2.8 +itsdangerous==1.1.0 +Jinja2==2.10 +Mako==1.0.7 +MarkupSafe==1.1.1 +passlib==1.7.1 +psycopg2-binary==2.7.7 +python-dateutil==2.8.0 +python-dotenv==0.10.1 +python-editor==1.0.4 +requests==2.21.0 +six==1.12.0 +SQLAlchemy==1.3.1 +urllib3==1.24.1 +Werkzeug==0.14.1 +WTForms==2.2.1 diff --git a/src/forms.py b/src/forms.py index e69de29..209ef2a 100644 --- a/src/forms.py +++ b/src/forms.py @@ -0,0 +1,17 @@ +from flask_wtf import FlaskForm +from wtforms import StringField, SelectField, PasswordField +from wtforms.validators import DataRequired +from .models import User, Customer, Employee, Order, OrdersContain, Item +from flask import g + +class RegisterForm(FlaskForm): + name = StringField('name', validators=[DataRequired()]) + email = StringField('email', validators=[DataRequired()]) + phone = StringField('phone', validators=[DataRequired()]) + password = PasswordField('password', validators=[DataRequired()]) + +class AddItemsForm(FlaskForm): + name = StringField('name', validators=[DataRequired()]) + price = StringField('price',validators=[DataRequired()]) + cost = StringField('cost',validators=[DataRequired()]) + count = StringField('count',validators=[DataRequired()]) \ No newline at end of file diff --git a/src/models.py b/src/models.py index 618a7fb..f1f7b1c 100644 --- a/src/models.py +++ b/src/models.py @@ -15,6 +15,7 @@ class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(256)) email = db.Column(db.String(256)) + password = db.Column(db.String(256)) role = db.Column(db.String(16)) diff --git a/src/routes.py b/src/routes.py index 928ee82..319b730 100644 --- a/src/routes.py +++ b/src/routes.py @@ -1,6 +1,7 @@ from flask import render_template, redirect, url_for, request, flash, session, g from sqlalchemy.exc import DBAPIError, IntegrityError from . import app +from .forms import RegisterForm, AddItemsForm import requests import json import os @@ -8,7 +9,13 @@ @app.route('/') def home(): - pass + return render_template('home.html'), 200 + +@app.route('/register', methods=['GET', 'POST']) +def register(): + form = RegisterForm() + return render_template('auth/register.html', form=form) + @app.route('/customer') @@ -21,9 +28,10 @@ def order(): pass -@app.route('/item') -def item(): - pass +@app.route('/add_items', methods=['GET', 'POST']) +def add_items(): + form = AddItemsForm() + return render_template('auth/add_items.html', form=form) @app.route('/reservation') diff --git a/src/templates/auth/add_items.html b/src/templates/auth/add_items.html new file mode 100644 index 0000000..21941f7 --- /dev/null +++ b/src/templates/auth/add_items.html @@ -0,0 +1,20 @@ +{% extends "base.html" %} + +{% block title %} +Add Items +{% endblock title %} + + +{% block content %} +
+

Add Item:

+
+ {{ form.hidden_tag() }} + {{ form.name.label }}{{ form.name(size = 32)}} + {{ form.cost.label }}{{ form.cost (size = 32)}} + {{ form.price.label }}{{ form.price (size = 32)}} + {{ form.count.label }}{{ form.count (size = 32)}} + +
+
+{% endblock content %} \ No newline at end of file diff --git a/src/templates/auth/register.html b/src/templates/auth/register.html index 8aad198..3f139ab 100644 --- a/src/templates/auth/register.html +++ b/src/templates/auth/register.html @@ -12,6 +12,8 @@

Register:

{{ form.name.label }}{{ form.name(size=36)}} {{ form.phone.label }}{{ form.phone(size=36)}} {{ form.email.label }}{{ form.email(size=36)}} + {{ form.password.label }}{{ form.password(size=36)}} + {% endblock content %} \ No newline at end of file diff --git a/src/templates/base.html b/src/templates/base.html index f9b8bfb..253bc22 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -12,17 +12,18 @@
{% for message in get_flashed_messages() %}
{{message}}
{% endfor %} - + {% block content %} + {% endblock content %}
\ No newline at end of file From 6f5ddf4fc6c397ac4e96e7d4be3a8a49cec3ff05 Mon Sep 17 00:00:00 2001 From: Dan Le Date: Mon, 18 Mar 2019 12:55:16 -0700 Subject: [PATCH 11/87] db stuff started --- Pipfile | 2 +- migrations/README | 1 + migrations/alembic.ini | 45 +++++++++++++++++++ migrations/env.py | 95 +++++++++++++++++++++++++++++++++++++++ migrations/script.py.mako | 24 ++++++++++ src/routes.py | 6 +++ 6 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 migrations/README create mode 100644 migrations/alembic.ini create mode 100644 migrations/env.py create mode 100644 migrations/script.py.mako diff --git a/Pipfile b/Pipfile index f47bab5..201800b 100644 --- a/Pipfile +++ b/Pipfile @@ -19,7 +19,7 @@ flask-migrate = "*" python-dotenv = "*" flask-wtf = "*" passlib = "*" -dev = "*" +sqlalchemy = "*" [requires] python_version = "3.7" diff --git a/migrations/README b/migrations/README new file mode 100644 index 0000000..98e4f9c --- /dev/null +++ b/migrations/README @@ -0,0 +1 @@ +Generic single-database configuration. \ No newline at end of file diff --git a/migrations/alembic.ini b/migrations/alembic.ini new file mode 100644 index 0000000..f8ed480 --- /dev/null +++ b/migrations/alembic.ini @@ -0,0 +1,45 @@ +# A generic, single database configuration. + +[alembic] +# template used to generate migration files +# file_template = %%(rev)s_%%(slug)s + +# set to 'true' to run the environment during +# the 'revision' command, regardless of autogenerate +# revision_environment = false + + +# Logging configuration +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/migrations/env.py b/migrations/env.py new file mode 100644 index 0000000..169d487 --- /dev/null +++ b/migrations/env.py @@ -0,0 +1,95 @@ +from __future__ import with_statement + +import logging +from logging.config import fileConfig + +from sqlalchemy import engine_from_config +from sqlalchemy import pool + +from alembic import context + +# this is the Alembic Config object, which provides +# access to the values within the .ini file in use. +config = context.config + +# Interpret the config file for Python logging. +# This line sets up loggers basically. +fileConfig(config.config_file_name) +logger = logging.getLogger('alembic.env') + +# add your model's MetaData object here +# for 'autogenerate' support +# from myapp import mymodel +# target_metadata = mymodel.Base.metadata +from flask import current_app +config.set_main_option('sqlalchemy.url', + current_app.config.get('SQLALCHEMY_DATABASE_URI')) +target_metadata = current_app.extensions['migrate'].db.metadata + +# other values from the config, defined by the needs of env.py, +# can be acquired: +# my_important_option = config.get_main_option("my_important_option") +# ... etc. + + +def run_migrations_offline(): + """Run migrations in 'offline' mode. + + This configures the context with just a URL + and not an Engine, though an Engine is acceptable + here as well. By skipping the Engine creation + we don't even need a DBAPI to be available. + + Calls to context.execute() here emit the given string to the + script output. + + """ + url = config.get_main_option("sqlalchemy.url") + context.configure( + url=url, target_metadata=target_metadata, literal_binds=True + ) + + with context.begin_transaction(): + context.run_migrations() + + +def run_migrations_online(): + """Run migrations in 'online' mode. + + In this scenario we need to create an Engine + and associate a connection with the context. + + """ + + # this callback is used to prevent an auto-migration from being generated + # when there are no changes to the schema + # reference: http://alembic.zzzcomputing.com/en/latest/cookbook.html + def process_revision_directives(context, revision, directives): + if getattr(config.cmd_opts, 'autogenerate', False): + script = directives[0] + if script.upgrade_ops.is_empty(): + directives[:] = [] + logger.info('No changes in schema detected.') + + connectable = engine_from_config( + config.get_section(config.config_ini_section), + prefix='sqlalchemy.', + poolclass=pool.NullPool, + ) + + with connectable.connect() as connection: + context.configure( + connection=connection, + target_metadata=target_metadata, + process_revision_directives=process_revision_directives, + **current_app.extensions['migrate'].configure_args + ) + + with context.begin_transaction(): + context.run_migrations() + + +if context.is_offline_mode(): + run_migrations_offline() +else: + run_migrations_online() diff --git a/migrations/script.py.mako b/migrations/script.py.mako new file mode 100644 index 0000000..2c01563 --- /dev/null +++ b/migrations/script.py.mako @@ -0,0 +1,24 @@ +"""${message} + +Revision ID: ${up_revision} +Revises: ${down_revision | comma,n} +Create Date: ${create_date} + +""" +from alembic import op +import sqlalchemy as sa +${imports if imports else ""} + +# revision identifiers, used by Alembic. +revision = ${repr(up_revision)} +down_revision = ${repr(down_revision)} +branch_labels = ${repr(branch_labels)} +depends_on = ${repr(depends_on)} + + +def upgrade(): + ${upgrades if upgrades else "pass"} + + +def downgrade(): + ${downgrades if downgrades else "pass"} diff --git a/src/routes.py b/src/routes.py index 319b730..6bdcaba 100644 --- a/src/routes.py +++ b/src/routes.py @@ -14,6 +14,12 @@ def home(): @app.route('/register', methods=['GET', 'POST']) def register(): form = RegisterForm() + if form.validate_on_submit(): + name = form.data['name'] + phone = form.data['phone'] + email = form.data['email'] + role = 'customer' + return redirect(url_for('/')) return render_template('auth/register.html', form=form) From 65b8c7d2d4541514061084e272c6a0043ce0ad4f Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Mon, 18 Mar 2019 13:02:17 -0700 Subject: [PATCH 12/87] created standard pytest fixtures, plus customer, manager, employee, item --- src/models.py | 6 ++ src/tests/conftest.py | 126 +++++++++++++++++++++++++++++++++++++++ src/tests/models_test.py | 0 src/tests/routes_test.py | 0 4 files changed, 132 insertions(+) create mode 100644 src/tests/conftest.py create mode 100644 src/tests/models_test.py create mode 100644 src/tests/routes_test.py diff --git a/src/models.py b/src/models.py index 282d5a8..371a192 100644 --- a/src/models.py +++ b/src/models.py @@ -24,12 +24,18 @@ class Customer(User): user_id = db.Column(db.ForeignKey('users.id'), primary_key=True) phone = db.Column(db.String(32)) + user = db.relationship( + 'User', + back_populates='customer' + ) + class Employee(db.Model): __tablename__ = 'employee' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(256)) + pay_rate = db.Column(db.Float(5, 2)) class Order(db.Model): diff --git a/src/tests/conftest.py b/src/tests/conftest.py new file mode 100644 index 0000000..18d108d --- /dev/null +++ b/src/tests/conftest.py @@ -0,0 +1,126 @@ +from src.models import db as _db +from src.models import User, Customer, Employee, Order, OrdersContain, Item +from src import app as _app +import pytest +import os + + +@pytest.fixture() +def app(request): + """ Session-wide testable Flask app """ + _app.config.from_mapping( + TESTING=True, + SQLALCHEMY_DATABASE_URI=os.getenv('TEST_DATABASE_URL'), + SQLALCHEMY_TRACK_MODIFICATIONS=False, + WTF_CSRF_ENABLED=False + ) + ctx = _app.app_context() + ctx.push() + + def teardown(): + ctx.pop() + + request.addfinalizer(teardown) + return _app + + +@pytest.fixture() +def db(app, request): + """ Session-wide test DB """ + + _db.app = app + _db.create_all() + + def teardown(): + _db.drop_all() + request.addfinalizer(teardown) + return _db + + +@pytest.fixture() +def session(db, request): + """ Create new DB session for testing """ + connection = db.engine.connect() + transaction = connection.begin() + options = dict(bind=connection, binds={}) + session = db.create_scoped_session(options=options) + db.session = session + + def teardown(): + transaction.rollback() + connection.close() + session.remove() + request.addfinalizer(teardown) + + return session + + +@pytest.fixture() +def client(app, db, session): + """ Create test client """ + client = app.test_client() + ctx = app.app_context() + ctx.push() + yield client + ctx.pop() + + +@pytest.fixture() +def customer(session): + """ Create test user with customer role """ + user = User( + name='Milo', + email='milo@test.com', + password='12345', + role='customer' + ) + customer = Customer( + phone='123-456-7890', + user=user + ) + session.add(customer) + session.commit() + return customer + + +@pytest.fixture() +def manager(session): + """ Create test user with manager role """ + user = User( + name='Tim', + email='tim@test.com', + password='12345', + role='manager' + ) + session.add(user) + session.commit() + return user + + +@pytest.fixture() +def employee(session): + """ Create test employee """ + employee = Employee( + name='Dan', + pay_rate=10.50 + ) + + +@pytest.fixure() +def item(session): + """ Create test item """ + item = Item( + name='Biscuits and Gravy', + price=9.50, + cog=6.54, + inventory_count=12 + ) + session.add(item) + session.commit() + return item + + +@pytest.fixture() +def order(session, customer, employee, item): + """ Create test order """ + pass diff --git a/src/tests/models_test.py b/src/tests/models_test.py new file mode 100644 index 0000000..e69de29 diff --git a/src/tests/routes_test.py b/src/tests/routes_test.py new file mode 100644 index 0000000..e69de29 From 44863e2c598b5fa84829e29bc23d09cacfd6434b Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Mon, 18 Mar 2019 13:16:35 -0700 Subject: [PATCH 13/87] added pytest fixture for orders --- src/models.py | 12 ++++++++++-- src/tests/conftest.py | 9 ++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/models.py b/src/models.py index 3e4bc62..d8a33f6 100644 --- a/src/models.py +++ b/src/models.py @@ -14,8 +14,8 @@ class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(256)) - email = db.Column(db.String(256)) - password = db.Column(db.String(256)) + email = db.Column(db.String(256), unique=True) + password = db.Column(db.String(256), nullable=False) role = db.Column(db.String(16)) @@ -47,6 +47,14 @@ class Order(db.Model): empl_id = db.Column(db.ForeignKey('employee.id'), nullable=False) date_created = db.Column(db.DateTime, default=dt.now()) + customer = db.relationship( + 'Customer', + back_populates='customers' + ) + employee = db.relationship( + 'Employee', + back_populates='employees' + ) items = db.relationship( 'Item', secondary='orders_contain', diff --git a/src/tests/conftest.py b/src/tests/conftest.py index 18d108d..5bbbad0 100644 --- a/src/tests/conftest.py +++ b/src/tests/conftest.py @@ -123,4 +123,11 @@ def item(session): @pytest.fixture() def order(session, customer, employee, item): """ Create test order """ - pass + order = Order( + customer=customer, + employee=employee, + item=item + ) + session.add(order) + session.commit() + return order From 1815b500e36b5754b4dbc30d45c509ebd492d8f3 Mon Sep 17 00:00:00 2001 From: Dan Le Date: Mon, 18 Mar 2019 13:50:04 -0700 Subject: [PATCH 14/87] hot garbage --- .../{7d8a45abaca3_.py => a7641b5e0370_.py} | 7 ++++--- src/models.py | 5 +++-- src/routes.py | 16 ++++++++++++---- 3 files changed, 19 insertions(+), 9 deletions(-) rename migrations/versions/{7d8a45abaca3_.py => a7641b5e0370_.py} (94%) diff --git a/migrations/versions/7d8a45abaca3_.py b/migrations/versions/a7641b5e0370_.py similarity index 94% rename from migrations/versions/7d8a45abaca3_.py rename to migrations/versions/a7641b5e0370_.py index 8a51f38..3370b32 100644 --- a/migrations/versions/7d8a45abaca3_.py +++ b/migrations/versions/a7641b5e0370_.py @@ -1,8 +1,8 @@ """empty message -Revision ID: 7d8a45abaca3 +Revision ID: a7641b5e0370 Revises: -Create Date: 2019-03-18 11:08:12.174498 +Create Date: 2019-03-18 13:32:32.487950 """ from alembic import op @@ -10,7 +10,7 @@ # revision identifiers, used by Alembic. -revision = '7d8a45abaca3' +revision = 'a7641b5e0370' down_revision = None branch_labels = None depends_on = None @@ -35,6 +35,7 @@ def upgrade(): sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(length=256), nullable=True), sa.Column('email', sa.String(length=256), nullable=True), + sa.Column('password', sa.String(length=256), nullable=True), sa.Column('role', sa.String(length=16), nullable=True), sa.PrimaryKeyConstraint('id') ) diff --git a/src/models.py b/src/models.py index c2cb4b9..efd4829 100644 --- a/src/models.py +++ b/src/models.py @@ -15,6 +15,7 @@ class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(256)) email = db.Column(db.String(256)) + customer = db.relationship('Customer', backref='user', lazy=True) password = db.Column(db.String(256)) role = db.Column(db.String(16)) @@ -57,11 +58,11 @@ class OrdersContain(db.Model): order = db.relationship( 'Order', - backref=db.backref('orders', cascade='all') + backref=db.backref('orders_contain', cascade='all') ) item = db.relationship( 'Order', - backref=db.backref('items') + backref=db.backref('item') ) diff --git a/src/routes.py b/src/routes.py index 6bdcaba..eec3a33 100644 --- a/src/routes.py +++ b/src/routes.py @@ -2,6 +2,7 @@ from sqlalchemy.exc import DBAPIError, IntegrityError from . import app from .forms import RegisterForm, AddItemsForm +from .models import db, User, Customer import requests import json import os @@ -15,10 +16,17 @@ def home(): def register(): form = RegisterForm() if form.validate_on_submit(): - name = form.data['name'] - phone = form.data['phone'] - email = form.data['email'] - role = 'customer' + user = User( + name = form.data['name'], + email = form.data['email'], + role = 'customer' + ) + customer = Customer( + phone = form.data['phone'], + user = user + ) + db.session.add(customer) + db.session.commit() return redirect(url_for('/')) return render_template('auth/register.html', form=form) From b74f88261930bc29b5502f62802e179b526fbbba Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Mon, 18 Mar 2019 13:50:45 -0700 Subject: [PATCH 15/87] first models tests --- src/tests/models_test.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/tests/models_test.py b/src/tests/models_test.py index e69de29..09f55e8 100644 --- a/src/tests/models_test.py +++ b/src/tests/models_test.py @@ -0,0 +1,14 @@ +from src.models import User, Customer, Employee, Order, OrdersContain, Item + + +class TestUserModel(): + + def test_create_customer(self, customer): + assert customer + + def test_customer_data(self, customer): + assert customer.name == 'Milo' + assert customer.email == 'milo@test.com' + assert customer.password == '12345' + assert customer.role == 'customer' + assert customer.phone == '123-456-7890' From 146369c6c976adf5be555357850e81af80cf4af4 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Mon, 18 Mar 2019 14:19:18 -0700 Subject: [PATCH 16/87] registration bug fixes --- .../{a7641b5e0370_.py => b5aaa346f45d_.py} | 30 ++++---- src/forms.py | 2 +- src/models.py | 74 +++++++++---------- src/routes.py | 14 ++-- src/tests/conftest.py | 2 +- src/tests/models_test.py | 2 +- 6 files changed, 59 insertions(+), 65 deletions(-) rename migrations/versions/{a7641b5e0370_.py => b5aaa346f45d_.py} (79%) diff --git a/migrations/versions/a7641b5e0370_.py b/migrations/versions/b5aaa346f45d_.py similarity index 79% rename from migrations/versions/a7641b5e0370_.py rename to migrations/versions/b5aaa346f45d_.py index 3370b32..c1d75ec 100644 --- a/migrations/versions/a7641b5e0370_.py +++ b/migrations/versions/b5aaa346f45d_.py @@ -1,8 +1,8 @@ """empty message -Revision ID: a7641b5e0370 +Revision ID: b5aaa346f45d Revises: -Create Date: 2019-03-18 13:32:32.487950 +Create Date: 2019-03-18 14:09:19.783445 """ from alembic import op @@ -10,7 +10,7 @@ # revision identifiers, used by Alembic. -revision = 'a7641b5e0370' +revision = 'b5aaa346f45d' down_revision = None branch_labels = None depends_on = None @@ -18,9 +18,18 @@ def upgrade(): # ### commands auto generated by Alembic - please adjust! ### + op.create_table('customers', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('name', sa.String(length=256), nullable=True), + sa.Column('email', sa.String(length=256), nullable=True), + sa.Column('password', sa.String(length=256), nullable=True), + sa.Column('phone', sa.String(length=32), nullable=True), + sa.PrimaryKeyConstraint('id') + ) op.create_table('employee', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(length=256), nullable=True), + sa.Column('pay_rate', sa.Float(precision=5, asdecimal=2), nullable=True), sa.PrimaryKeyConstraint('id') ) op.create_table('items', @@ -31,26 +40,19 @@ def upgrade(): sa.Column('inventory_count', sa.Integer(), nullable=True), sa.PrimaryKeyConstraint('id') ) - op.create_table('users', + op.create_table('managers', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(length=256), nullable=True), sa.Column('email', sa.String(length=256), nullable=True), sa.Column('password', sa.String(length=256), nullable=True), - sa.Column('role', sa.String(length=16), nullable=True), sa.PrimaryKeyConstraint('id') ) - op.create_table('customers', - sa.Column('user_id', sa.Integer(), nullable=False), - sa.Column('phone', sa.String(length=32), nullable=True), - sa.ForeignKeyConstraint(['user_id'], ['users.id'], ), - sa.PrimaryKeyConstraint('user_id') - ) op.create_table('orders', sa.Column('id', sa.Integer(), nullable=False), sa.Column('cust_id', sa.Integer(), nullable=False), sa.Column('empl_id', sa.Integer(), nullable=False), sa.Column('date_created', sa.DateTime(), nullable=True), - sa.ForeignKeyConstraint(['cust_id'], ['customers.user_id'], ), + sa.ForeignKeyConstraint(['cust_id'], ['customers.id'], ), sa.ForeignKeyConstraint(['empl_id'], ['employee.id'], ), sa.PrimaryKeyConstraint('id') ) @@ -69,8 +71,8 @@ def downgrade(): # ### commands auto generated by Alembic - please adjust! ### op.drop_table('orders_contain') op.drop_table('orders') - op.drop_table('customers') - op.drop_table('users') + op.drop_table('managers') op.drop_table('items') op.drop_table('employee') + op.drop_table('customers') # ### end Alembic commands ### diff --git a/src/forms.py b/src/forms.py index 209ef2a..a0b2384 100644 --- a/src/forms.py +++ b/src/forms.py @@ -1,7 +1,7 @@ from flask_wtf import FlaskForm from wtforms import StringField, SelectField, PasswordField from wtforms.validators import DataRequired -from .models import User, Customer, Employee, Order, OrdersContain, Item +from .models import Manager, Customer, Employee, Order, OrdersContain, Item from flask import g class RegisterForm(FlaskForm): diff --git a/src/models.py b/src/models.py index 7d29164..b5b01f0 100644 --- a/src/models.py +++ b/src/models.py @@ -9,28 +9,24 @@ migrate = Migrate(app, db) -class User(db.Model): - __tablename__ = 'users' +class Manager(db.Model): + __tablename__ = 'managers' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(256)) email = db.Column(db.String(256)) - customer = db.relationship('Customer', backref='user', lazy=True) password = db.Column(db.String(256)) - role = db.Column(db.String(16)) -class Customer(User): +class Customer(db.Model): __tablename__ = 'customers' - user_id = db.Column(db.ForeignKey('users.id'), primary_key=True) + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String(256)) + email = db.Column(db.String(256)) + password = db.Column(db.String(256)) phone = db.Column(db.String(32)) - user = db.relationship( - 'User', - back_populates='customer' - ) - class Employee(db.Model): __tablename__ = 'employee' @@ -44,23 +40,23 @@ class Order(db.Model): __tablename__ = 'orders' id = db.Column(db.Integer, primary_key=True) - cust_id = db.Column(db.ForeignKey('customers.user_id'), nullable=False) - empl_id = db.Column(db.ForeignKey('employee.id'), nullable=False) date_created = db.Column(db.DateTime, default=dt.now()) + cust_id = db.Column(db.ForeignKey('customers.id'), nullable=False) + empl_id = db.Column(db.ForeignKey('employee.id'), nullable=False) - customer = db.relationship( - 'Customer', - back_populates='customers' - ) - employee = db.relationship( - 'Employee', - back_populates='employees' - ) - items = db.relationship( - 'Item', - secondary='orders_contain', - back_populates='orders' - ) + # customer = db.relationship( + # 'Customer', + # back_populates='customer' + # ) + # employee = db.relationship( + # 'Employee', + # back_populates='employee' + # ) + # items = db.relationship( + # 'Item', + # secondary='orders_contain', + # back_populates='orders' + # ) class OrdersContain(db.Model): @@ -70,14 +66,14 @@ class OrdersContain(db.Model): order_id = db.Column(db.ForeignKey('orders.id'), nullable=False) item_id = db.Column(db.ForeignKey('items.id'), nullable=False) - order = db.relationship( - 'Order', - backref=db.backref('orders_contain', cascade='all') - ) - item = db.relationship( - 'Order', - backref=db.backref('item') - ) + # order = db.relationship( + # 'Order', + # backref=db.backref('orders_contain', cascade='all') + # ) + # item = db.relationship( + # 'Order', + # backref=db.backref('item') + # ) class Item(db.Model): @@ -89,8 +85,8 @@ class Item(db.Model): cog = db.Column(db.Float(10, 2)) inventory_count = db.Column(db.Integer, default=0) - orders = db.relationship( - 'Order', - secondary='orders_contain', - back_populates='items' - ) + # orders = db.relationship( + # 'Order', + # secondary='orders_contain', + # back_populates='items' + # ) diff --git a/src/routes.py b/src/routes.py index eec3a33..95be2fe 100644 --- a/src/routes.py +++ b/src/routes.py @@ -2,7 +2,7 @@ from sqlalchemy.exc import DBAPIError, IntegrityError from . import app from .forms import RegisterForm, AddItemsForm -from .models import db, User, Customer +from .models import db, Manager, Customer import requests import json import os @@ -12,18 +12,15 @@ def home(): return render_template('home.html'), 200 + @app.route('/register', methods=['GET', 'POST']) def register(): form = RegisterForm() if form.validate_on_submit(): - user = User( - name = form.data['name'], - email = form.data['email'], - role = 'customer' - ) customer = Customer( - phone = form.data['phone'], - user = user + name=form.data['name'], + email=form.data['email'], + phone=form.data['phone'] ) db.session.add(customer) db.session.commit() @@ -31,7 +28,6 @@ def register(): return render_template('auth/register.html', form=form) - @app.route('/customer') def customer(): pass diff --git a/src/tests/conftest.py b/src/tests/conftest.py index 5bbbad0..a6d1a58 100644 --- a/src/tests/conftest.py +++ b/src/tests/conftest.py @@ -1,5 +1,5 @@ from src.models import db as _db -from src.models import User, Customer, Employee, Order, OrdersContain, Item +from src.models import Manager, Customer, Employee, Order, OrdersContain, Item from src import app as _app import pytest import os diff --git a/src/tests/models_test.py b/src/tests/models_test.py index 09f55e8..78130f7 100644 --- a/src/tests/models_test.py +++ b/src/tests/models_test.py @@ -1,4 +1,4 @@ -from src.models import User, Customer, Employee, Order, OrdersContain, Item +from src.models import Manager, Customer, Employee, Order, OrdersContain, Item class TestUserModel(): From 3aa36c305335107da840d6742792ef94782afd59 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Mon, 18 Mar 2019 14:34:08 -0700 Subject: [PATCH 17/87] fixed model relations --- migrations/versions/9bee782d5c72_.py | 44 +++++++++++++++++++ src/forms.py | 2 +- src/models.py | 66 ++++++++++++++++------------ src/tests/conftest.py | 2 +- src/tests/models_test.py | 2 +- 5 files changed, 85 insertions(+), 31 deletions(-) create mode 100644 migrations/versions/9bee782d5c72_.py diff --git a/migrations/versions/9bee782d5c72_.py b/migrations/versions/9bee782d5c72_.py new file mode 100644 index 0000000..9f35d27 --- /dev/null +++ b/migrations/versions/9bee782d5c72_.py @@ -0,0 +1,44 @@ +"""empty message + +Revision ID: 9bee782d5c72 +Revises: b5aaa346f45d +Create Date: 2019-03-18 14:33:12.225219 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '9bee782d5c72' +down_revision = 'b5aaa346f45d' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('order_items', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('order_id', sa.Integer(), nullable=False), + sa.Column('item_id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['item_id'], ['items.id'], ), + sa.ForeignKeyConstraint(['order_id'], ['orders.id'], ), + sa.PrimaryKeyConstraint('id') + ) + op.drop_table('orders_contain') + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('orders_contain', + sa.Column('id', sa.INTEGER(), autoincrement=True, nullable=False), + sa.Column('order_id', sa.INTEGER(), autoincrement=False, nullable=False), + sa.Column('item_id', sa.INTEGER(), autoincrement=False, nullable=False), + sa.ForeignKeyConstraint(['item_id'], ['items.id'], name='orders_contain_item_id_fkey'), + sa.ForeignKeyConstraint(['order_id'], ['orders.id'], name='orders_contain_order_id_fkey'), + sa.PrimaryKeyConstraint('id', name='orders_contain_pkey') + ) + op.drop_table('order_items') + # ### end Alembic commands ### diff --git a/src/forms.py b/src/forms.py index a0b2384..5250ac6 100644 --- a/src/forms.py +++ b/src/forms.py @@ -1,7 +1,7 @@ from flask_wtf import FlaskForm from wtforms import StringField, SelectField, PasswordField from wtforms.validators import DataRequired -from .models import Manager, Customer, Employee, Order, OrdersContain, Item +from .models import Manager, Customer, Employee, Order, OrderItems, Item from flask import g class RegisterForm(FlaskForm): diff --git a/src/models.py b/src/models.py index b5b01f0..c528e1f 100644 --- a/src/models.py +++ b/src/models.py @@ -27,6 +27,11 @@ class Customer(db.Model): password = db.Column(db.String(256)) phone = db.Column(db.String(32)) + orders = db.relationship( + 'Order', + back_populates='customer' + ) + class Employee(db.Model): __tablename__ = 'employee' @@ -35,6 +40,11 @@ class Employee(db.Model): name = db.Column(db.String(256)) pay_rate = db.Column(db.Float(5, 2)) + orders = db.relationship( + 'Order', + back_populates='employee' + ) + class Order(db.Model): __tablename__ = 'orders' @@ -44,36 +54,36 @@ class Order(db.Model): cust_id = db.Column(db.ForeignKey('customers.id'), nullable=False) empl_id = db.Column(db.ForeignKey('employee.id'), nullable=False) - # customer = db.relationship( - # 'Customer', - # back_populates='customer' - # ) - # employee = db.relationship( - # 'Employee', - # back_populates='employee' - # ) - # items = db.relationship( - # 'Item', - # secondary='orders_contain', - # back_populates='orders' - # ) + customer = db.relationship( + 'Customer', + back_populates='orders' + ) + employee = db.relationship( + 'Employee', + back_populates='orders' + ) + items = db.relationship( + 'Item', + secondary='order_items', + back_populates='orders' + ) -class OrdersContain(db.Model): - __tablename__ = 'orders_contain' +class OrderItems(db.Model): + __tablename__ = 'order_items' id = db.Column(db.Integer, primary_key=True) order_id = db.Column(db.ForeignKey('orders.id'), nullable=False) item_id = db.Column(db.ForeignKey('items.id'), nullable=False) - # order = db.relationship( - # 'Order', - # backref=db.backref('orders_contain', cascade='all') - # ) - # item = db.relationship( - # 'Order', - # backref=db.backref('item') - # ) + order = db.relationship( + 'Order', + backref=db.backref('order_items', cascade='all') + ) + item = db.relationship( + 'Item', + backref=db.backref('order_items') + ) class Item(db.Model): @@ -85,8 +95,8 @@ class Item(db.Model): cog = db.Column(db.Float(10, 2)) inventory_count = db.Column(db.Integer, default=0) - # orders = db.relationship( - # 'Order', - # secondary='orders_contain', - # back_populates='items' - # ) + orders = db.relationship( + 'Order', + secondary='order_items', + back_populates='items' + ) diff --git a/src/tests/conftest.py b/src/tests/conftest.py index a6d1a58..b5cd425 100644 --- a/src/tests/conftest.py +++ b/src/tests/conftest.py @@ -1,5 +1,5 @@ from src.models import db as _db -from src.models import Manager, Customer, Employee, Order, OrdersContain, Item +from src.models import Manager, Customer, Employee, Order, OrderItems, Item from src import app as _app import pytest import os diff --git a/src/tests/models_test.py b/src/tests/models_test.py index 78130f7..f27f407 100644 --- a/src/tests/models_test.py +++ b/src/tests/models_test.py @@ -1,4 +1,4 @@ -from src.models import Manager, Customer, Employee, Order, OrdersContain, Item +from src.models import Manager, Customer, Employee, Order, OrderItems, Item class TestUserModel(): From 8c44fbc783b3a2ca30b36fa6462421328263c92b Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Mon, 18 Mar 2019 15:05:46 -0700 Subject: [PATCH 18/87] orders model test working --- Pipfile.lock | 3 ++- src/tests/conftest.py | 24 +++++++++++------------- src/tests/models_test.py | 26 ++++++++++++++++++++++++-- src/tests/pytest.ini | 3 +++ 4 files changed, 40 insertions(+), 16 deletions(-) create mode 100644 src/tests/pytest.ini diff --git a/Pipfile.lock b/Pipfile.lock index 2553206..b0faa07 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "7a82f2025a304ff9be5365de6b19a551b0d8917c9ebc399c6c0a681c38a13e13" + "sha256": "ea6688de1df1739287a554400b5b03ddc3f28c51bdf5dabc2b378e3aa969872d" }, "pipfile-spec": 6, "requires": { @@ -221,6 +221,7 @@ "hashes": [ "sha256:781fb7b9d194ed3fc596b8f0dd4623ff160e3e825dd8c15472376a438c19598b" ], + "index": "pypi", "version": "==1.3.1" }, "urllib3": { diff --git a/src/tests/conftest.py b/src/tests/conftest.py index b5cd425..208956f 100644 --- a/src/tests/conftest.py +++ b/src/tests/conftest.py @@ -68,15 +68,11 @@ def client(app, db, session): @pytest.fixture() def customer(session): """ Create test user with customer role """ - user = User( + customer = Customer( name='Milo', email='milo@test.com', password='12345', - role='customer' - ) - customer = Customer( - phone='123-456-7890', - user=user + phone='123-456-7890' ) session.add(customer) session.commit() @@ -86,15 +82,14 @@ def customer(session): @pytest.fixture() def manager(session): """ Create test user with manager role """ - user = User( + manager = Manager( name='Tim', email='tim@test.com', - password='12345', - role='manager' + password='12345' ) - session.add(user) + session.add(manager) session.commit() - return user + return manager @pytest.fixture() @@ -104,9 +99,12 @@ def employee(session): name='Dan', pay_rate=10.50 ) + session.add(employee) + session.commit() + return employee -@pytest.fixure() +@pytest.fixture() def item(session): """ Create test item """ item = Item( @@ -126,7 +124,7 @@ def order(session, customer, employee, item): order = Order( customer=customer, employee=employee, - item=item + items=[item] ) session.add(order) session.commit() diff --git a/src/tests/models_test.py b/src/tests/models_test.py index f27f407..a9e6ffe 100644 --- a/src/tests/models_test.py +++ b/src/tests/models_test.py @@ -1,7 +1,8 @@ from src.models import Manager, Customer, Employee, Order, OrderItems, Item -class TestUserModel(): +class TestUserModels(): + """ Tests for Customer and Manager models """ def test_create_customer(self, customer): assert customer @@ -10,5 +11,26 @@ def test_customer_data(self, customer): assert customer.name == 'Milo' assert customer.email == 'milo@test.com' assert customer.password == '12345' - assert customer.role == 'customer' assert customer.phone == '123-456-7890' + + def test_create_manager(self, manager): + assert manager + + def test_manager_data(self, manager): + assert manager.name == 'Tim' + assert manager.email == 'tim@test.com' + assert manager.password == '12345' + + +class TestItems(): + """ Tests for Item model """ + + def test_create_item(self, item): + assert item + + +class TestOrders(): + """ Tests for Order model """ + + def test_create_order(self, customer, employee, item, order): + assert order diff --git a/src/tests/pytest.ini b/src/tests/pytest.ini new file mode 100644 index 0000000..b0e5a94 --- /dev/null +++ b/src/tests/pytest.ini @@ -0,0 +1,3 @@ +[pytest] +filterwarnings = + ignore::DeprecationWarning \ No newline at end of file From 5e5081498b49328f6d046a7a9c1c57eecf61e559 Mon Sep 17 00:00:00 2001 From: Tim Schoen Date: Mon, 18 Mar 2019 15:09:51 -0700 Subject: [PATCH 19/87] order form rendering in html --- Pipfile.lock | 3 ++- src/forms.py | 6 +++++- src/routes.py | 26 ++++++++++++++++++++++---- src/templates/auth/add_items.html | 2 +- src/templates/auth/register.html | 2 +- src/templates/order.html | 12 ++++++++---- 6 files changed, 39 insertions(+), 12 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 2553206..b0faa07 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "7a82f2025a304ff9be5365de6b19a551b0d8917c9ebc399c6c0a681c38a13e13" + "sha256": "ea6688de1df1739287a554400b5b03ddc3f28c51bdf5dabc2b378e3aa969872d" }, "pipfile-spec": 6, "requires": { @@ -221,6 +221,7 @@ "hashes": [ "sha256:781fb7b9d194ed3fc596b8f0dd4623ff160e3e825dd8c15472376a438c19598b" ], + "index": "pypi", "version": "==1.3.1" }, "urllib3": { diff --git a/src/forms.py b/src/forms.py index a0b2384..f42a955 100644 --- a/src/forms.py +++ b/src/forms.py @@ -14,4 +14,8 @@ class AddItemsForm(FlaskForm): name = StringField('name', validators=[DataRequired()]) price = StringField('price',validators=[DataRequired()]) cost = StringField('cost',validators=[DataRequired()]) - count = StringField('count',validators=[DataRequired()]) \ No newline at end of file + count = StringField('count',validators=[DataRequired()]) + +class OrderForm(FlaskForm): + item_ordered = StringField('item_ordered', validators=[DataRequired()]) + number_ordered = StringField('number_ordered', validators=[DataRequired()]) \ No newline at end of file diff --git a/src/routes.py b/src/routes.py index 95be2fe..7e9e472 100644 --- a/src/routes.py +++ b/src/routes.py @@ -1,8 +1,8 @@ from flask import render_template, redirect, url_for, request, flash, session, g from sqlalchemy.exc import DBAPIError, IntegrityError from . import app -from .forms import RegisterForm, AddItemsForm -from .models import db, Manager, Customer +from .forms import RegisterForm, AddItemsForm, OrderForm +from .models import db, Manager, Customer, Item import requests import json import os @@ -12,6 +12,9 @@ def home(): return render_template('home.html'), 200 +@app.add_template_global +def get_items(): + return Items.query.all() @app.route('/register', methods=['GET', 'POST']) def register(): @@ -33,14 +36,29 @@ def customer(): pass -@app.route('/order') +@app.route('/order', methods = ['GET', 'POST']) def order(): - pass + form = OrderForm() + + items=Item.query.all() + return render_template('order.html', items=items, form=form) + @app.route('/add_items', methods=['GET', 'POST']) def add_items(): form = AddItemsForm() + if form.validate_on_submit(): + item = Item( + name = form.data['name'], + cog = form.data['cost'], + price = form.data['price'], + inventory_count = form.data['count'] + ) + db.session.add(item) + db.session.commit() + return redirect(url_for('/')) + return render_template('auth/add_items.html', form=form) diff --git a/src/templates/auth/add_items.html b/src/templates/auth/add_items.html index 21941f7..3181026 100644 --- a/src/templates/auth/add_items.html +++ b/src/templates/auth/add_items.html @@ -8,7 +8,7 @@ {% block content %}

Add Item:

-
+ {{ form.hidden_tag() }} {{ form.name.label }}{{ form.name(size = 32)}} {{ form.cost.label }}{{ form.cost (size = 32)}} diff --git a/src/templates/auth/register.html b/src/templates/auth/register.html index 3f139ab..c2de84c 100644 --- a/src/templates/auth/register.html +++ b/src/templates/auth/register.html @@ -14,6 +14,6 @@

Register:

{{ form.email.label }}{{ form.email(size=36)}} {{ form.password.label }}{{ form.password(size=36)}} -
+ ``
{% endblock content %} \ No newline at end of file diff --git a/src/templates/order.html b/src/templates/order.html index a668513..5bc3d29 100644 --- a/src/templates/order.html +++ b/src/templates/order.html @@ -1,8 +1,9 @@ {% extends "base.html" %} -{% block title} +{% block title %} Order Page -{% endblock title} +{% endblock title %} +{% block content %}

Py Cafe Menu

@@ -15,8 +16,8 @@

Py Cafe Menu

{% for item in items %} - - + + {% endfor %} @@ -25,5 +26,8 @@

Py Cafe Menu

{{ form.hidden_tag()}} {{ form.item_ordered.label }}{{ form.item_ordered}} {{ form.number_ordered.label }}{{ form.number_ordered}} + + +{% endblock content %} From e3cb12cc575b2a12f2c2a737316f4949e6b97bbf Mon Sep 17 00:00:00 2001 From: Tim Schoen Date: Mon, 18 Mar 2019 16:35:27 -0700 Subject: [PATCH 20/87] orders dropdown working.. not saving in db --- src/forms.py | 8 ++++++-- src/models.py | 3 +++ src/routes.py | 11 ++++++++++- src/templates/order.html | 42 ++++++++++++++++++++-------------------- 4 files changed, 40 insertions(+), 24 deletions(-) diff --git a/src/forms.py b/src/forms.py index 03de15b..a1bbe5f 100644 --- a/src/forms.py +++ b/src/forms.py @@ -17,5 +17,9 @@ class AddItemsForm(FlaskForm): count = StringField('count',validators=[DataRequired()]) class OrderForm(FlaskForm): - item_ordered = StringField('item_ordered', validators=[DataRequired()]) - number_ordered = StringField('number_ordered', validators=[DataRequired()]) \ No newline at end of file + items = SelectField('items') + number_ordered = StringField('number_ordered', validators=[DataRequired()]) + def __init__(self,*args, **kwargs): + super().__init__(*args,**kwargs) + self.items.choices = [(item.id,item.name)for item in Item.query.all()] + \ No newline at end of file diff --git a/src/models.py b/src/models.py index c528e1f..423ebf5 100644 --- a/src/models.py +++ b/src/models.py @@ -100,3 +100,6 @@ class Item(db.Model): secondary='order_items', back_populates='items' ) + + def __repr__(self): + return ''.format(self.name) \ No newline at end of file diff --git a/src/routes.py b/src/routes.py index 7e9e472..f2c3f7c 100644 --- a/src/routes.py +++ b/src/routes.py @@ -2,7 +2,7 @@ from sqlalchemy.exc import DBAPIError, IntegrityError from . import app from .forms import RegisterForm, AddItemsForm, OrderForm -from .models import db, Manager, Customer, Item +from .models import db, Manager, Customer, Item, Order import requests import json import os @@ -39,9 +39,18 @@ def customer(): @app.route('/order', methods = ['GET', 'POST']) def order(): form = OrderForm() + if form.validate_on_submit(): + items_list = [form.data['items']] + order = Order( + items = items_list + ) + db.session.add(order) + dp.session.commit() items=Item.query.all() + return render_template('order.html', items=items, form=form) + diff --git a/src/templates/order.html b/src/templates/order.html index 5bc3d29..7bda887 100644 --- a/src/templates/order.html +++ b/src/templates/order.html @@ -4,30 +4,30 @@ {% endblock title %} {% block content %} -
+

Py Cafe Menu

{{}} {{}} {{ item.name }} {{ item.price }}
- - - - - - - - {% for item in items %} - - - - - {% endfor %} - + + + + + + + + {% for item in items %} + + + + + {% endfor %} +
ItemPrice
{{ item.name }} {{ item.price }}
ItemPrice
{{ item.name }} {{ item.price }}
-
- {{ form.hidden_tag()}} - {{ form.item_ordered.label }}{{ form.item_ordered}} + + {{ form.hidden_tag() }} {{ form.number_ordered.label }}{{ form.number_ordered}} - - + + + {{ form.items.label }} {{ form.items() }}
-{% endblock content %} +{% endblock content %} \ No newline at end of file From fdfd08ef571c56e75fb5fe4d099f490570f2b158 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Mon, 18 Mar 2019 16:43:55 -0700 Subject: [PATCH 21/87] testing & troubleshooting --- src/models.py | 6 +++--- src/tests/conftest.py | 21 ++++++++++++++------- src/tests/models_test.py | 28 +++++++++++++++++++++++++--- 3 files changed, 42 insertions(+), 13 deletions(-) diff --git a/src/models.py b/src/models.py index c528e1f..9f2c0e5 100644 --- a/src/models.py +++ b/src/models.py @@ -38,7 +38,7 @@ class Employee(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(256)) - pay_rate = db.Column(db.Float(5, 2)) + pay_rate = db.Column(db.Numeric(5, 2)) orders = db.relationship( 'Order', @@ -91,8 +91,8 @@ class Item(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(256), nullable=False) - price = db.Column(db.Float(10, 2)) - cog = db.Column(db.Float(10, 2)) + price = db.Column(db.Numeric(10, 2)) + cog = db.Column(db.Numeric(10, 2)) inventory_count = db.Column(db.Integer, default=0) orders = db.relationship( diff --git a/src/tests/conftest.py b/src/tests/conftest.py index 208956f..300a117 100644 --- a/src/tests/conftest.py +++ b/src/tests/conftest.py @@ -105,26 +105,33 @@ def employee(session): @pytest.fixture() -def item(session): - """ Create test item """ - item = Item( +def items(session): + """ Create test items """ + item1 = Item( name='Biscuits and Gravy', price=9.50, cog=6.54, inventory_count=12 ) - session.add(item) + session.add(item1) + item2 = Item( + name='Cheeseburger', + price=8.50, + cog=5.00, + inventory_count=22 + ) + session.add(item2) session.commit() - return item + return [item1, item2] @pytest.fixture() -def order(session, customer, employee, item): +def order(session, customer, employee, items): """ Create test order """ order = Order( customer=customer, employee=employee, - items=[item] + items=items ) session.add(order) session.commit() diff --git a/src/tests/models_test.py b/src/tests/models_test.py index a9e6ffe..fb5eebb 100644 --- a/src/tests/models_test.py +++ b/src/tests/models_test.py @@ -20,17 +20,39 @@ def test_manager_data(self, manager): assert manager.name == 'Tim' assert manager.email == 'tim@test.com' assert manager.password == '12345' + + def test_user_query(self, customer, manager): + c = Customer.query.all() + m = Manager.query.all() + assert c[0].name == 'Milo' + assert m[0].name == 'Tim' class TestItems(): """ Tests for Item model """ - def test_create_item(self, item): - assert item + def test_create_item(self, items): + assert items + + def test_item_data(self, items): + assert items[0].name == 'Biscuits and Gravy' + assert items[1].price == 8.50 + assert items[0].cog == 6.54 + assert items[1].inventory_count == 22 + + def test_item_query(self, items): + i = Item.query.all() + assert i[0].name == 'Biscuits and Gravy' class TestOrders(): """ Tests for Order model """ - def test_create_order(self, customer, employee, item, order): + def test_create_order(self, customer, employee, items, order): assert order + + def test_order_data(self, customer, employee, items, order): + assert order.customer.name == 'Milo' + assert order.employee.name == 'Dan' + assert order.items[0].name == 'Biscuits and Gravy' + assert order.items[1].name == 'Cheeseburger' From 160346945cc60c684e372f1bb33f0561a44ea2c2 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Mon, 18 Mar 2019 21:23:41 -0700 Subject: [PATCH 22/87] auth routes & functions --- src/auth.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/auth.py b/src/auth.py index e69de29..e89fe57 100644 --- a/src/auth.py +++ b/src/auth.py @@ -0,0 +1,45 @@ +from flask import render_template, flash, redirect, url_for, session, abort, g +from .models import db, Manager, Customer +from .forms import RegisterForm, AuthForm +from . import app +import functools + + +def login_required(view): + @functools.wraps(view) + def wrapped_view(**kwargs): + if g.user is None: + return redirect(url_for('.login')) + return view(**kwargs) + return wrapped_view + + +@app.before_request +def load_logged_in_user(): + user_id = session.get('user_id') + if user_id is None: + g.user = None + else: + g.user = Customer.query.get(user_id) + + +@app.route('/login', methods=['GET', 'POST']) +def login(): + form = AuthForm() + if form.validate_on_submit(): + email = form.data['email'] + password = form.data['password'] + error = None + + customer = Customer.query.filter_by(email=email).first() + if not customer or not Customer.check_password_hash(customer, password): + error = 'Invalid username or password' + + if not error: + session.clear() + session['user_id'] = customer.id + return redirect(url_for('.home')) + + flash(error) + + return render_template('auth/login.html', form=form) From bd3d0e85ee84b904f2533ec45a8ce30149d3b1ca Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Mon, 18 Mar 2019 21:56:20 -0700 Subject: [PATCH 23/87] Manager and Customer classes both inherit from User class --- migrations/versions/25497ae8ae66_.py | 51 ++++++++++++++++++++++++++++ src/models.py | 36 ++++++++++++++------ 2 files changed, 77 insertions(+), 10 deletions(-) create mode 100644 migrations/versions/25497ae8ae66_.py diff --git a/migrations/versions/25497ae8ae66_.py b/migrations/versions/25497ae8ae66_.py new file mode 100644 index 0000000..8fc5615 --- /dev/null +++ b/migrations/versions/25497ae8ae66_.py @@ -0,0 +1,51 @@ +"""empty message + +Revision ID: 25497ae8ae66 +Revises: 9bee782d5c72 +Create Date: 2019-03-18 21:48:12.783527 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '25497ae8ae66' +down_revision = '9bee782d5c72' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('users', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('name', sa.String(length=256), nullable=True), + sa.Column('email', sa.String(length=256), nullable=True), + sa.Column('password', sa.String(length=256), nullable=True), + sa.Column('type', sa.String(length=64), nullable=True), + sa.PrimaryKeyConstraint('id') + ) + op.create_foreign_key(None, 'customers', 'users', ['id'], ['id']) + op.drop_column('customers', 'password') + op.drop_column('customers', 'email') + op.drop_column('customers', 'name') + op.create_foreign_key(None, 'managers', 'users', ['id'], ['id']) + op.drop_column('managers', 'password') + op.drop_column('managers', 'email') + op.drop_column('managers', 'name') + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('managers', sa.Column('name', sa.VARCHAR(length=256), autoincrement=False, nullable=True)) + op.add_column('managers', sa.Column('email', sa.VARCHAR(length=256), autoincrement=False, nullable=True)) + op.add_column('managers', sa.Column('password', sa.VARCHAR(length=256), autoincrement=False, nullable=True)) + op.drop_constraint(None, 'managers', type_='foreignkey') + op.add_column('customers', sa.Column('name', sa.VARCHAR(length=256), autoincrement=False, nullable=True)) + op.add_column('customers', sa.Column('email', sa.VARCHAR(length=256), autoincrement=False, nullable=True)) + op.add_column('customers', sa.Column('password', sa.VARCHAR(length=256), autoincrement=False, nullable=True)) + op.drop_constraint(None, 'customers', type_='foreignkey') + op.drop_table('users') + # ### end Alembic commands ### diff --git a/src/models.py b/src/models.py index 95ffe8e..8100c63 100644 --- a/src/models.py +++ b/src/models.py @@ -9,32 +9,48 @@ migrate = Migrate(app, db) -class Manager(db.Model): - __tablename__ = 'managers' +class User(db.Model): + __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(256)) email = db.Column(db.String(256)) password = db.Column(db.String(256)) + type = db.Column(db.String(64)) + + __mapper_args__ = { + 'polymorphic_identity': 'user', + 'polymorphic_on': type + } + + +class Manager(User): + __tablename__ = 'managers' + + id = db.Column(db.ForeignKey('users.id'), primary_key=True) + __mapper_args__ = { + 'polymorphic_identity': 'manager' + } -class Customer(db.Model): + +class Customer(User): __tablename__ = 'customers' - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(256)) - email = db.Column(db.String(256)) - password = db.Column(db.String(256)) + id = db.Column(db.ForeignKey('users.id'), primary_key=True) phone = db.Column(db.String(32)) orders = db.relationship( 'Order', back_populates='customer' ) + __mapper_args__ = { + 'polymorphic_identity': 'customer' + } class Employee(db.Model): - __tablename__ = 'employee' + __tablename__ = 'employees' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(256)) @@ -52,7 +68,7 @@ class Order(db.Model): id = db.Column(db.Integer, primary_key=True) date_created = db.Column(db.DateTime, default=dt.now()) cust_id = db.Column(db.ForeignKey('customers.id'), nullable=False) - empl_id = db.Column(db.ForeignKey('employee.id'), nullable=False) + empl_id = db.Column(db.ForeignKey('employees.id'), nullable=False) customer = db.relationship( 'Customer', @@ -102,4 +118,4 @@ class Item(db.Model): ) def __repr__(self): - return ''.format(self.name) \ No newline at end of file + return ''.format(self.name) From 418897fde743abe102761b292f4aaa04995b3c62 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Mon, 18 Mar 2019 22:31:38 -0700 Subject: [PATCH 24/87] Employee class inherits from User --- migrations/versions/ce66d77e8a63_.py | 44 ++++++++++++++++++++++++++++ src/models.py | 37 +++++++++++------------ src/tests/models_test.py | 8 ++--- 3 files changed, 65 insertions(+), 24 deletions(-) create mode 100644 migrations/versions/ce66d77e8a63_.py diff --git a/migrations/versions/ce66d77e8a63_.py b/migrations/versions/ce66d77e8a63_.py new file mode 100644 index 0000000..6cb877f --- /dev/null +++ b/migrations/versions/ce66d77e8a63_.py @@ -0,0 +1,44 @@ +"""empty message + +Revision ID: ce66d77e8a63 +Revises: 25497ae8ae66 +Create Date: 2019-03-18 22:03:04.923521 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'ce66d77e8a63' +down_revision = '25497ae8ae66' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('employees', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('pay_rate', sa.Numeric(precision=5, scale=2), nullable=True), + sa.ForeignKeyConstraint(['id'], ['users.id'], ), + sa.PrimaryKeyConstraint('id') + ) + op.drop_constraint('orders_empl_id_fkey', 'orders', type_='foreignkey') + op.drop_table('employee') + op.create_foreign_key(None, 'orders', 'employees', ['empl_id'], ['id']) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, 'orders', type_='foreignkey') + op.create_foreign_key('orders_empl_id_fkey', 'orders', 'employee', ['empl_id'], ['id']) + op.create_table('employee', + sa.Column('id', sa.INTEGER(), autoincrement=True, nullable=False), + sa.Column('name', sa.VARCHAR(length=256), autoincrement=False, nullable=True), + sa.Column('pay_rate', sa.REAL(), autoincrement=False, nullable=True), + sa.PrimaryKeyConstraint('id', name='employee_pkey') + ) + op.drop_table('employees') + # ### end Alembic commands ### diff --git a/src/models.py b/src/models.py index 8100c63..032c2f7 100644 --- a/src/models.py +++ b/src/models.py @@ -27,40 +27,37 @@ class User(db.Model): class Manager(User): __tablename__ = 'managers' - id = db.Column(db.ForeignKey('users.id'), primary_key=True) - - __mapper_args__ = { - 'polymorphic_identity': 'manager' - } + id = db.Column( + db.ForeignKey('users.id', ondelete='CASCADE', onupdate='CASCADE'), + primary_key=True + ) + __mapper_args__ = {'polymorphic_identity': 'manager'} class Customer(User): __tablename__ = 'customers' - id = db.Column(db.ForeignKey('users.id'), primary_key=True) phone = db.Column(db.String(32)) - - orders = db.relationship( - 'Order', - back_populates='customer' + id = db.Column( + db.ForeignKey('users.id', ondelete='CASCADE', onupdate='CASCADE'), + primary_key=True ) - __mapper_args__ = { - 'polymorphic_identity': 'customer' - } + orders = db.relationship('Order', back_populates='customer') + __mapper_args__ = {'polymorphic_identity': 'customer'} -class Employee(db.Model): +class Employee(User): __tablename__ = 'employees' - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(256)) pay_rate = db.Column(db.Numeric(5, 2)) - - orders = db.relationship( - 'Order', - back_populates='employee' + id = db.Column( + db.ForeignKey('users.id', ondelete='CASCADE', onupdate='CASCADE'), + primary_key=True ) + orders = db.relationship('Order', back_populates='employee') + __mapper_args__ = {'polymorphic_identity': 'employee'} + class Order(db.Model): __tablename__ = 'orders' diff --git a/src/tests/models_test.py b/src/tests/models_test.py index fb5eebb..0a71adf 100644 --- a/src/tests/models_test.py +++ b/src/tests/models_test.py @@ -20,7 +20,7 @@ def test_manager_data(self, manager): assert manager.name == 'Tim' assert manager.email == 'tim@test.com' assert manager.password == '12345' - + def test_user_query(self, customer, manager): c = Customer.query.all() m = Manager.query.all() @@ -33,13 +33,13 @@ class TestItems(): def test_create_item(self, items): assert items - + def test_item_data(self, items): assert items[0].name == 'Biscuits and Gravy' assert items[1].price == 8.50 assert items[0].cog == 6.54 assert items[1].inventory_count == 22 - + def test_item_query(self, items): i = Item.query.all() assert i[0].name == 'Biscuits and Gravy' @@ -50,7 +50,7 @@ class TestOrders(): def test_create_order(self, customer, employee, items, order): assert order - + def test_order_data(self, customer, employee, items, order): assert order.customer.name == 'Milo' assert order.employee.name == 'Dan' From 64761d7bd349c2a52c72241b4d83acfaa4c4ade9 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Tue, 19 Mar 2019 00:28:37 -0700 Subject: [PATCH 25/87] login form & route working with User model inheritance; added employee unit tests --- .coveragerc | 2 ++ src/__init__.py | 2 +- src/auth.py | 26 +++++++++++++++++++++----- src/forms.py | 22 +++++++++++++++------- src/models.py | 24 +++++++++++++++++++++++- src/routes.py | 35 ++++++++++------------------------- src/templates/auth/login.html | 2 +- src/tests/conftest.py | 2 ++ src/tests/models_test.py | 19 ++++++++++++++++--- 9 files changed, 91 insertions(+), 43 deletions(-) create mode 100644 .coveragerc diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 0000000..844422f --- /dev/null +++ b/.coveragerc @@ -0,0 +1,2 @@ +[report] +omit = src/tests/* \ No newline at end of file diff --git a/src/__init__.py b/src/__init__.py index 0752392..08f2425 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -16,4 +16,4 @@ SQLALCHEMY_TRACK_MODIFICATIONS=False ) -from . import routes, models, exceptions +from . import auth, routes, models, exceptions diff --git a/src/auth.py b/src/auth.py index e89fe57..d83c84b 100644 --- a/src/auth.py +++ b/src/auth.py @@ -1,5 +1,5 @@ from flask import render_template, flash, redirect, url_for, session, abort, g -from .models import db, Manager, Customer +from .models import db, User, Manager, Customer, Employee from .forms import RegisterForm, AuthForm from . import app import functools @@ -20,7 +20,23 @@ def load_logged_in_user(): if user_id is None: g.user = None else: - g.user = Customer.query.get(user_id) + g.user = User.query.get(user_id) + + +@app.route('/register', methods=['GET', 'POST']) +def register(): + form = RegisterForm() + if form.validate_on_submit(): + customer = Customer( + name=form.data['name'], + email=form.data['email'], + phone=form.data['phone'], + password=form.data['password'] + ) + db.session.add(customer) + db.session.commit() + return redirect(url_for('/')) + return render_template('auth/register.html', form=form) @app.route('/login', methods=['GET', 'POST']) @@ -31,13 +47,13 @@ def login(): password = form.data['password'] error = None - customer = Customer.query.filter_by(email=email).first() - if not customer or not Customer.check_password_hash(customer, password): + user = User.query.filter_by(email=email).first() + if not user or not User.check_pass_hash(user, password): error = 'Invalid username or password' if not error: session.clear() - session['user_id'] = customer.id + session['user_id'] = user.id return redirect(url_for('.home')) flash(error) diff --git a/src/forms.py b/src/forms.py index a1bbe5f..85ef4bf 100644 --- a/src/forms.py +++ b/src/forms.py @@ -4,22 +4,30 @@ from .models import Manager, Customer, Employee, Order, OrderItems, Item from flask import g + class RegisterForm(FlaskForm): name = StringField('name', validators=[DataRequired()]) email = StringField('email', validators=[DataRequired()]) phone = StringField('phone', validators=[DataRequired()]) password = PasswordField('password', validators=[DataRequired()]) + +class AuthForm(FlaskForm): + email = StringField('email', validators=[DataRequired()]) + password = PasswordField('password', validators=[DataRequired()]) + + class AddItemsForm(FlaskForm): name = StringField('name', validators=[DataRequired()]) - price = StringField('price',validators=[DataRequired()]) - cost = StringField('cost',validators=[DataRequired()]) - count = StringField('count',validators=[DataRequired()]) + price = StringField('price', validators=[DataRequired()]) + cost = StringField('cost', validators=[DataRequired()]) + count = StringField('count', validators=[DataRequired()]) + class OrderForm(FlaskForm): items = SelectField('items') number_ordered = StringField('number_ordered', validators=[DataRequired()]) - def __init__(self,*args, **kwargs): - super().__init__(*args,**kwargs) - self.items.choices = [(item.id,item.name)for item in Item.query.all()] - \ No newline at end of file + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.items.choices = [(item.id, item.name)for item in Item.query.all()] diff --git a/src/models.py b/src/models.py index 032c2f7..d248ede 100644 --- a/src/models.py +++ b/src/models.py @@ -23,6 +23,18 @@ class User(db.Model): 'polymorphic_on': type } + def __init__(self, name, email, password): + self.name = name + self.email = email + self.password = sha256_crypt.hash(password) + + @classmethod + def check_pass_hash(cls, user, password): + if user is not None: + if sha256_crypt.verify(password, user.password): + return True + return False + class Manager(User): __tablename__ = 'managers' @@ -33,6 +45,9 @@ class Manager(User): ) __mapper_args__ = {'polymorphic_identity': 'manager'} + def __init__(self, name, email, password): + User.__init__(self, name, email, password) + class Customer(User): __tablename__ = 'customers' @@ -45,6 +60,10 @@ class Customer(User): orders = db.relationship('Order', back_populates='customer') __mapper_args__ = {'polymorphic_identity': 'customer'} + def __init__(self, name, email, password, phone): + User.__init__(self, name, email, password) + self.phone = phone + class Employee(User): __tablename__ = 'employees' @@ -54,10 +73,13 @@ class Employee(User): db.ForeignKey('users.id', ondelete='CASCADE', onupdate='CASCADE'), primary_key=True ) - orders = db.relationship('Order', back_populates='employee') __mapper_args__ = {'polymorphic_identity': 'employee'} + def __init__(self, name, email, password, pay_rate): + User.__init__(self, name, email, password) + self.pay_rate = pay_rate + class Order(db.Model): __tablename__ = 'orders' diff --git a/src/routes.py b/src/routes.py index f2c3f7c..4cd6092 100644 --- a/src/routes.py +++ b/src/routes.py @@ -12,46 +12,31 @@ def home(): return render_template('home.html'), 200 + @app.add_template_global def get_items(): return Items.query.all() -@app.route('/register', methods=['GET', 'POST']) -def register(): - form = RegisterForm() - if form.validate_on_submit(): - customer = Customer( - name=form.data['name'], - email=form.data['email'], - phone=form.data['phone'] - ) - db.session.add(customer) - db.session.commit() - return redirect(url_for('/')) - return render_template('auth/register.html', form=form) - @app.route('/customer') def customer(): pass -@app.route('/order', methods = ['GET', 'POST']) +@app.route('/order', methods=['GET', 'POST']) def order(): form = OrderForm() if form.validate_on_submit(): items_list = [form.data['items']] - order = Order( - items = items_list + order = Order( + items=items_list ) db.session.add(order) dp.session.commit() - items=Item.query.all() - - return render_template('order.html', items=items, form=form) + items = Item.query.all() - + return render_template('order.html', items=items, form=form) @app.route('/add_items', methods=['GET', 'POST']) @@ -59,10 +44,10 @@ def add_items(): form = AddItemsForm() if form.validate_on_submit(): item = Item( - name = form.data['name'], - cog = form.data['cost'], - price = form.data['price'], - inventory_count = form.data['count'] + name=form.data['name'], + cog=form.data['cost'], + price=form.data['price'], + inventory_count=form.data['count'] ) db.session.add(item) db.session.commit() diff --git a/src/templates/auth/login.html b/src/templates/auth/login.html index 0ab4f54..83dadb2 100644 --- a/src/templates/auth/login.html +++ b/src/templates/auth/login.html @@ -8,7 +8,7 @@ {% block content %}

Login:

-
+ {{ form.hidden_tag() }} {{ form.email.label }}{{ form.email (size = 32)}} {{ form.password.label }}{{ form.password (size = 32)}} diff --git a/src/tests/conftest.py b/src/tests/conftest.py index 300a117..7865d61 100644 --- a/src/tests/conftest.py +++ b/src/tests/conftest.py @@ -97,6 +97,8 @@ def employee(session): """ Create test employee """ employee = Employee( name='Dan', + email='dan@test.com', + password='54321', pay_rate=10.50 ) session.add(employee) diff --git a/src/tests/models_test.py b/src/tests/models_test.py index 0a71adf..4b32926 100644 --- a/src/tests/models_test.py +++ b/src/tests/models_test.py @@ -10,7 +10,8 @@ def test_create_customer(self, customer): def test_customer_data(self, customer): assert customer.name == 'Milo' assert customer.email == 'milo@test.com' - assert customer.password == '12345' + assert customer.password + assert customer.password != '12345' assert customer.phone == '123-456-7890' def test_create_manager(self, manager): @@ -19,13 +20,25 @@ def test_create_manager(self, manager): def test_manager_data(self, manager): assert manager.name == 'Tim' assert manager.email == 'tim@test.com' - assert manager.password == '12345' + assert manager.password + assert manager.password != '12345' - def test_user_query(self, customer, manager): + def test_create_employee(self, employee): + assert employee + + def test_employee_data(self, employee): + assert employee.name == 'Dan' + assert employee.email == 'dan@test.com' + assert employee.password + assert employee.password != '54321' + + def test_user_query(self, customer, manager, employee): c = Customer.query.all() m = Manager.query.all() + e = Employee.query.all() assert c[0].name == 'Milo' assert m[0].name == 'Tim' + assert e[0].name == 'Dan' class TestItems(): From c1b806f38ed7775446001b42a90987bfc74f9106 Mon Sep 17 00:00:00 2001 From: Dan Le Date: Tue, 19 Mar 2019 10:03:31 -0700 Subject: [PATCH 26/87] update and delete started for items --- src/forms.py | 17 +++++++++++++++-- src/routes.py | 26 +++++++++++++++++++++----- src/static/css/style.css | 0 src/templates/auth/register.html | 2 +- src/templates/base.html | 1 + 5 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 src/static/css/style.css diff --git a/src/forms.py b/src/forms.py index a1bbe5f..e5efe67 100644 --- a/src/forms.py +++ b/src/forms.py @@ -21,5 +21,18 @@ class OrderForm(FlaskForm): number_ordered = StringField('number_ordered', validators=[DataRequired()]) def __init__(self,*args, **kwargs): super().__init__(*args,**kwargs) - self.items.choices = [(item.id,item.name)for item in Item.query.all()] - \ No newline at end of file + self.items.choices = [str(item.id,item.name)for item in Item.query.all()] + +class UpdateItemsForm(FlaskForm): + name =SelectField('name') + price = StringField('price',validators=[DataRequired()]) + cost = StringField('cost',validators=[DataRequired()]) + count = StringField('count',validators=[DataRequired()]) + def __init__(self,*args, **kwargs): + super().__init__(*args,**kwargs) + self.items.choices = [str(item.id,item.name)for item in Item.query.all()] +class DeleteForm(FlaskForm): + name =SelectField('name') + def __init__(self,*args, **kwargs): + super().__init__(*args,**kwargs) + self.items.choices = [str(item.id,item.name)for item in Item.query.all()] \ No newline at end of file diff --git a/src/routes.py b/src/routes.py index f2c3f7c..41598dc 100644 --- a/src/routes.py +++ b/src/routes.py @@ -1,7 +1,7 @@ from flask import render_template, redirect, url_for, request, flash, session, g from sqlalchemy.exc import DBAPIError, IntegrityError from . import app -from .forms import RegisterForm, AddItemsForm, OrderForm +from .forms import RegisterForm, AddItemsForm, OrderForm, UpdateItemsForm, DeleteForm from .models import db, Manager, Customer, Item, Order import requests import json @@ -51,10 +51,7 @@ def order(): return render_template('order.html', items=items, form=form) - - - -@app.route('/add_items', methods=['GET', 'POST']) +@app.route('/item/add', methods=['GET', 'POST']) def add_items(): form = AddItemsForm() if form.validate_on_submit(): @@ -70,6 +67,25 @@ def add_items(): return render_template('auth/add_items.html', form=form) +@app.route('/item/delete', methods=['POST']) # this is a DELETE +def delete_items(): + form = DeleteForm() + pass + +@app.route('/item/update', methods=['POST']) # this is a PUT +def update_items(): + form = UpdateItemsForm() + if form.validate_on_submit(): + item = Item( + name = form.data['name'], + cog = form.data['cost'], + price = form.data['price'], + inventory_count = form.data['count'] + ) + db.session.add(item) + db.session.commit() + return redirect(url_for('/')) + @app.route('/reservation') def reservation(): diff --git a/src/static/css/style.css b/src/static/css/style.css new file mode 100644 index 0000000..e69de29 diff --git a/src/templates/auth/register.html b/src/templates/auth/register.html index c2de84c..3f139ab 100644 --- a/src/templates/auth/register.html +++ b/src/templates/auth/register.html @@ -14,6 +14,6 @@

Register:

{{ form.email.label }}{{ form.email(size=36)}} {{ form.password.label }}{{ form.password(size=36)}} - `` +
{% endblock content %} \ No newline at end of file diff --git a/src/templates/base.html b/src/templates/base.html index 253bc22..2a608c8 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -10,6 +10,7 @@
+

Py Café

From 8da85d05ed0efe25c9d8f2ead3a9f4b12b02b72e Mon Sep 17 00:00:00 2001 From: Dan Le Date: Tue, 19 Mar 2019 11:14:19 -0700 Subject: [PATCH 30/87] delete works --- migrations/versions/224d552285d8_.py | 38 ++++++++++++++++++++++++++++ src/forms.py | 2 +- src/routes.py | 7 ++--- src/templates/auth/update_items.html | 21 +++++++++++++++ 4 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 migrations/versions/224d552285d8_.py create mode 100644 src/templates/auth/update_items.html diff --git a/migrations/versions/224d552285d8_.py b/migrations/versions/224d552285d8_.py new file mode 100644 index 0000000..099fde3 --- /dev/null +++ b/migrations/versions/224d552285d8_.py @@ -0,0 +1,38 @@ +"""empty message + +Revision ID: 224d552285d8 +Revises: ce66d77e8a63 +Create Date: 2019-03-19 11:04:47.053201 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '224d552285d8' +down_revision = 'ce66d77e8a63' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint('customers_id_fkey', 'customers', type_='foreignkey') + op.create_foreign_key(None, 'customers', 'users', ['id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') + op.drop_constraint('employees_id_fkey', 'employees', type_='foreignkey') + op.create_foreign_key(None, 'employees', 'users', ['id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') + op.drop_constraint('managers_id_fkey', 'managers', type_='foreignkey') + op.create_foreign_key(None, 'managers', 'users', ['id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, 'managers', type_='foreignkey') + op.create_foreign_key('managers_id_fkey', 'managers', 'users', ['id'], ['id']) + op.drop_constraint(None, 'employees', type_='foreignkey') + op.create_foreign_key('employees_id_fkey', 'employees', 'users', ['id'], ['id']) + op.drop_constraint(None, 'customers', type_='foreignkey') + op.create_foreign_key('customers_id_fkey', 'customers', 'users', ['id'], ['id']) + # ### end Alembic commands ### diff --git a/src/forms.py b/src/forms.py index fff1838..d30466a 100644 --- a/src/forms.py +++ b/src/forms.py @@ -29,7 +29,7 @@ class OrderForm(FlaskForm): number_ordered = StringField('number_ordered', validators=[DataRequired()]) def __init__(self,*args, **kwargs): super().__init__(*args,**kwargs) - self.items.choices = [str(item.id,item.name)for item in Item.query.all()] + self.items.choices = [(str(item.id),item.name)for item in Item.query.all()] class UpdateItemsForm(FlaskForm): name =SelectField('name') diff --git a/src/routes.py b/src/routes.py index 7d4d0ee..0af731b 100644 --- a/src/routes.py +++ b/src/routes.py @@ -58,13 +58,14 @@ def delete_items(): form = DeleteForm() if form.validate_on_submit(): name = form.data['items'] - item = Item.query.filter_by(name='name').first() + item = Item.query.filter_by(id=name).first() db.session.delete(item) db.session.commit() + return redirect(url_for('/')) items= Item.query.all() return render_template('auth/delete_items.html', form=form, items=items) -@app.route('/item/update', methods=['POST']) # this is a PUT +@app.route('/item/update', methods=['GET','POST']) # this is a PUT def update_items(): form = UpdateItemsForm() if form.validate_on_submit(): @@ -76,7 +77,7 @@ def update_items(): ) db.session.add(item) db.session.commit() - return redirect(url_for('/')) + return redirect(url_for('auth/update_items.html')) @app.route('/reservation') diff --git a/src/templates/auth/update_items.html b/src/templates/auth/update_items.html new file mode 100644 index 0000000..50c5a17 --- /dev/null +++ b/src/templates/auth/update_items.html @@ -0,0 +1,21 @@ +{% extends "base.html" %} + +{% block title %} +Update Items +{% endblock title %} + + +{% block content %} +
+

Update Item:

+
+ {{ form.hidden_tag() }} + {{ form.name.label }}{{ form.name(size = 32)}} + {{ form.cost.label }}{{ form.cost (size = 32)}} + {{ form.price.label }}{{ form.price (size = 32)}} + {{ form.count.label }}{{ form.count (size = 32)}} + +
+
+ +{% endblock content %} \ No newline at end of file From d322b0311b5b76ef27ca3573be7a5bdf386efb54 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Tue, 19 Mar 2019 11:50:37 -0700 Subject: [PATCH 31/87] role-based authorization is working; orders-create form is saving to DB --- src/auth.py | 5 ++++- src/exceptions.py | 2 +- src/forms.py | 36 ++++++++++++++++++++++-------------- src/routes.py | 28 +++++++++++++++++----------- src/templates/base.html | 3 +++ 5 files changed, 47 insertions(+), 27 deletions(-) diff --git a/src/auth.py b/src/auth.py index 8ffdf01..f14ba45 100644 --- a/src/auth.py +++ b/src/auth.py @@ -14,7 +14,10 @@ def wrapped_view(**kwargs): return wrapped_view -def authorization_required(view, roles=[]): +def authorization_required(view=None, roles=[]): + if not view: + return functools.partial(authorization_required, roles=roles) + @functools.wraps(view) def wrapped_view(**kwargs): if g.user is None: diff --git a/src/exceptions.py b/src/exceptions.py index 7c71967..de66301 100644 --- a/src/exceptions.py +++ b/src/exceptions.py @@ -17,4 +17,4 @@ def bad_request(error): @app.errorhandler(401) def bad_request(error): """ Custom 401 handler """ - return render_template('exceptions/401.html', error=error), 401 \ No newline at end of file + return render_template('exceptions/401.html', error=error), 401 diff --git a/src/forms.py b/src/forms.py index fff1838..bdf06a6 100644 --- a/src/forms.py +++ b/src/forms.py @@ -27,21 +27,29 @@ class AddItemsForm(FlaskForm): class OrderForm(FlaskForm): items = SelectField('items') number_ordered = StringField('number_ordered', validators=[DataRequired()]) - def __init__(self,*args, **kwargs): - super().__init__(*args,**kwargs) - self.items.choices = [str(item.id,item.name)for item in Item.query.all()] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.items.choices = [(str(item.id), item.name) + for item in Item.query.all()] + class UpdateItemsForm(FlaskForm): - name =SelectField('name') - price = StringField('price',validators=[DataRequired()]) - cost = StringField('cost',validators=[DataRequired()]) - count = StringField('count',validators=[DataRequired()]) - def __init__(self,*args, **kwargs): - super().__init__(*args,**kwargs) - self.items.choices = [(str(item.id),item.name)for item in Item.query.all()] + name = SelectField('name') + price = StringField('price', validators=[DataRequired()]) + cost = StringField('cost', validators=[DataRequired()]) + count = StringField('count', validators=[DataRequired()]) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.items.choices = [(str(item.id), item.name) + for item in Item.query.all()] + class DeleteForm(FlaskForm): - items =SelectField('items') - def __init__(self,*args, **kwargs): - super().__init__(*args,**kwargs) - self.items.choices = [(str(item.id),item.name)for item in Item.query.all()] + items = SelectField('items') + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.items.choices = [(str(item.id), item.name) + for item in Item.query.all()] diff --git a/src/routes.py b/src/routes.py index 95652ab..15f9959 100644 --- a/src/routes.py +++ b/src/routes.py @@ -3,6 +3,7 @@ from . import app from .forms import RegisterForm, AddItemsForm, OrderForm, UpdateItemsForm, DeleteForm from .models import db, Manager, Customer, Item, Order +from .auth import login_required, authorization_required import requests import json import os @@ -24,21 +25,24 @@ def customer(): @app.route('/order', methods=['GET', 'POST']) +@authorization_required(roles=['customer']) def order(): form = OrderForm() if form.validate_on_submit(): - items_list = [form.data['items']] + item_ids = [form.data['items']] + items = Item.query.filter(Item.id.in_(item_ids)).all() customer = Customer.query.filter_by(id=g.user.id).first() order = Order( customer=customer, - items=items_list + items=items ) db.session.add(order) - dp.session.commit() + db.session.commit() items = Item.query.all() return render_template('order.html', items=items, form=form) + @app.route('/item/add', methods=['GET', 'POST']) def add_items(): form = AddItemsForm() @@ -55,7 +59,8 @@ def add_items(): return render_template('auth/add_items.html', form=form) -@app.route('/item/delete', methods=['GET','POST']) # this is a DELETE + +@app.route('/item/delete', methods=['GET', 'POST']) # this is a DELETE def delete_items(): form = DeleteForm() if form.validate_on_submit(): @@ -63,22 +68,23 @@ def delete_items(): item = Item.query.filter_by(name='name').first() db.session.delete(item) db.session.commit() - items= Item.query.all() + items = Item.query.all() return render_template('auth/delete_items.html', form=form, items=items) -@app.route('/item/update', methods=['POST']) # this is a PUT + +@app.route('/item/update', methods=['POST']) # this is a PUT def update_items(): form = UpdateItemsForm() if form.validate_on_submit(): item = Item( - name = form.data['name'], - cog = form.data['cost'], - price = form.data['price'], - inventory_count = form.data['count'] + name=form.data['name'], + cog=form.data['cost'], + price=form.data['price'], + inventory_count=form.data['count'] ) db.session.add(item) db.session.commit() - return redirect(url_for('/')) + return redirect(url_for('/')) @app.route('/reservation') diff --git a/src/templates/base.html b/src/templates/base.html index b0af9f2..88434a5 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -19,6 +19,9 @@

Py Café

  • Add Item
  • Delete Item
  • + {% if g.user %} +

    Welcome, {{ g.user['id'] }}

    + {% endif %}
    {% for message in get_flashed_messages() %} From a9030799ce45ae424876109ded4dca176654d40d Mon Sep 17 00:00:00 2001 From: Tim Schoen Date: Tue, 19 Mar 2019 12:09:38 -0700 Subject: [PATCH 32/87] migrate db --- migrations/versions/29c91915a871_.py | 44 ---------------------------- migrations/versions/e3c38d00d77e_.py | 32 ++++++++++++++++++++ src/static/css/styles.css | 0 3 files changed, 32 insertions(+), 44 deletions(-) delete mode 100644 migrations/versions/29c91915a871_.py create mode 100644 migrations/versions/e3c38d00d77e_.py create mode 100644 src/static/css/styles.css diff --git a/migrations/versions/29c91915a871_.py b/migrations/versions/29c91915a871_.py deleted file mode 100644 index 02b15cb..0000000 --- a/migrations/versions/29c91915a871_.py +++ /dev/null @@ -1,44 +0,0 @@ -"""empty message - -Revision ID: 29c91915a871 -Revises: ce66d77e8a63 -Create Date: 2019-03-19 09:39:23.310295 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '29c91915a871' -down_revision = 'ce66d77e8a63' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_constraint('customers_id_fkey', 'customers', type_='foreignkey') - op.create_foreign_key(None, 'customers', 'users', ['id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') - op.drop_constraint('employees_id_fkey', 'employees', type_='foreignkey') - op.create_foreign_key(None, 'employees', 'users', ['id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') - op.drop_constraint('managers_id_fkey', 'managers', type_='foreignkey') - op.create_foreign_key(None, 'managers', 'users', ['id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') - op.alter_column('orders', 'empl_id', - existing_type=sa.INTEGER(), - nullable=True) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.alter_column('orders', 'empl_id', - existing_type=sa.INTEGER(), - nullable=False) - op.drop_constraint(None, 'managers', type_='foreignkey') - op.create_foreign_key('managers_id_fkey', 'managers', 'users', ['id'], ['id']) - op.drop_constraint(None, 'employees', type_='foreignkey') - op.create_foreign_key('employees_id_fkey', 'employees', 'users', ['id'], ['id']) - op.drop_constraint(None, 'customers', type_='foreignkey') - op.create_foreign_key('customers_id_fkey', 'customers', 'users', ['id'], ['id']) - # ### end Alembic commands ### diff --git a/migrations/versions/e3c38d00d77e_.py b/migrations/versions/e3c38d00d77e_.py new file mode 100644 index 0000000..53162c2 --- /dev/null +++ b/migrations/versions/e3c38d00d77e_.py @@ -0,0 +1,32 @@ +"""empty message + +Revision ID: e3c38d00d77e +Revises: 224d552285d8 +Create Date: 2019-03-19 12:06:20.368123 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'e3c38d00d77e' +down_revision = '224d552285d8' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('orders', 'empl_id', + existing_type=sa.INTEGER(), + nullable=True) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('orders', 'empl_id', + existing_type=sa.INTEGER(), + nullable=False) + # ### end Alembic commands ### diff --git a/src/static/css/styles.css b/src/static/css/styles.css new file mode 100644 index 0000000..e69de29 From 06da7a2ebd9b7447b7d417ac0cb649ad2eb27a02 Mon Sep 17 00:00:00 2001 From: Tim Schoen Date: Tue, 19 Mar 2019 13:10:07 -0700 Subject: [PATCH 33/87] put is working for items --- src/forms.py | 2 +- src/routes.py | 24 ++++++++++++------------ src/static/css/style.css | 4 ++++ src/static/css/styles.css | 0 src/templates/auth/add_items.html | 20 ++++++++++++++++++++ src/templates/auth/delete_items.html | 20 ++++++++++++++++++++ src/templates/auth/update_items.html | 22 +++++++++++++++++++++- src/templates/base.html | 1 + 8 files changed, 79 insertions(+), 14 deletions(-) delete mode 100644 src/static/css/styles.css diff --git a/src/forms.py b/src/forms.py index bdf06a6..89a7673 100644 --- a/src/forms.py +++ b/src/forms.py @@ -35,7 +35,7 @@ def __init__(self, *args, **kwargs): class UpdateItemsForm(FlaskForm): - name = SelectField('name') + items = SelectField('items') price = StringField('price', validators=[DataRequired()]) cost = StringField('cost', validators=[DataRequired()]) count = StringField('count', validators=[DataRequired()]) diff --git a/src/routes.py b/src/routes.py index 6f566db..842edf4 100644 --- a/src/routes.py +++ b/src/routes.py @@ -55,9 +55,9 @@ def add_items(): ) db.session.add(item) db.session.commit() - return redirect(url_for('/')) - - return render_template('auth/add_items.html', form=form) + return redirect(url_for('.add_items')) + items= Item.query.all() + return render_template('auth/add_items.html', form=form, items= items) @app.route('/item/delete', methods=['GET', 'POST']) # this is a DELETE @@ -68,7 +68,7 @@ def delete_items(): item = Item.query.filter_by(id=name).first() db.session.delete(item) db.session.commit() - return redirect(url_for('/')) + return redirect(url_for('.delete_items')) items= Item.query.all() return render_template('auth/delete_items.html', form=form, items=items) @@ -76,15 +76,15 @@ def delete_items(): def update_items(): form = UpdateItemsForm() if form.validate_on_submit(): - item = Item( - name=form.data['name'], - cog=form.data['cost'], - price=form.data['price'], - inventory_count=form.data['count'] - ) - db.session.add(item) + item = Item.query.get(form.data['items']) + item.cog=form.data['cost'], + item.price=form.data['price'], + item.inventory_count=form.data['count'] + # db.session.add(item) db.session.commit() - return redirect(url_for('auth/update_items.html')) + return redirect(url_for('.update_items')) + items= Item.query.all() + return render_template('auth/update_items.html', form=form, items=items) @app.route('/reservation') diff --git a/src/static/css/style.css b/src/static/css/style.css index e69de29..b4ce753 100644 --- a/src/static/css/style.css +++ b/src/static/css/style.css @@ -0,0 +1,4 @@ +li { + text-decoration: none; + display: inline-block; +} \ No newline at end of file diff --git a/src/static/css/styles.css b/src/static/css/styles.css deleted file mode 100644 index e69de29..0000000 diff --git a/src/templates/auth/add_items.html b/src/templates/auth/add_items.html index 69ea797..c9dfd88 100644 --- a/src/templates/auth/add_items.html +++ b/src/templates/auth/add_items.html @@ -7,6 +7,26 @@ {% block content %}
    + + + + + + + + + + + {% for item in items %} + + + + + + + {% endfor %} + +
    ItemPriceCost of GoodInventory
    {{ item.name }} {{ item.price }} {{ item.cog }} {{ item.inventory_count }}

    Add Item:

    {{ form.hidden_tag() }} diff --git a/src/templates/auth/delete_items.html b/src/templates/auth/delete_items.html index 3dcaed8..ac52f2b 100644 --- a/src/templates/auth/delete_items.html +++ b/src/templates/auth/delete_items.html @@ -7,6 +7,26 @@ {% block content %}
    + + + + + + + + + + + {% for item in items %} + + + + + + + {% endfor %} + +
    ItemPriceCost of GoodInventory
    {{ item.name }} {{ item.price }} {{ item.cog }} {{ item.inventory_count }}

    Delete Item:

    {{ form.hidden_tag() }} diff --git a/src/templates/auth/update_items.html b/src/templates/auth/update_items.html index 50c5a17..467174b 100644 --- a/src/templates/auth/update_items.html +++ b/src/templates/auth/update_items.html @@ -7,10 +7,30 @@ {% block content %}
    + + + + + + + + + + + {% for item in items %} + + + + + + + {% endfor %} + +
    ItemPriceCost of GoodInventory
    {{ item.name }} {{ item.price }} {{ item.cog }} {{ item.inventory_count }}

    Update Item:

    {{ form.hidden_tag() }} - {{ form.name.label }}{{ form.name(size = 32)}} + {{ form.items.label }}{{ form.items()}} {{ form.cost.label }}{{ form.cost (size = 32)}} {{ form.price.label }}{{ form.price (size = 32)}} {{ form.count.label }}{{ form.count (size = 32)}} diff --git a/src/templates/base.html b/src/templates/base.html index 88434a5..a74fb5b 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -18,6 +18,7 @@

    Py Café

  • Order
  • Add Item
  • Delete Item
  • +
  • Update Item
  • {% if g.user %}

    Welcome, {{ g.user['id'] }}

    From d41c8e65946893098d24f93e52e6e0951d8d2977 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Tue, 19 Mar 2019 15:17:08 -0700 Subject: [PATCH 34/87] orders form supports adding multiple items, saving to DB --- src/forms.py | 12 +++++------ src/routes.py | 6 ++++-- src/static/css/style.css | 12 +++++++++++ src/static/css/styles.css | 0 src/static/js/app.js | 26 ++++++++++++++++++++++++ src/templates/order.html | 42 ++++++++++++++++++++++++++++++--------- 6 files changed, 81 insertions(+), 17 deletions(-) delete mode 100644 src/static/css/styles.css create mode 100644 src/static/js/app.js diff --git a/src/forms.py b/src/forms.py index bdf06a6..ef7fc88 100644 --- a/src/forms.py +++ b/src/forms.py @@ -25,13 +25,13 @@ class AddItemsForm(FlaskForm): class OrderForm(FlaskForm): - items = SelectField('items') - number_ordered = StringField('number_ordered', validators=[DataRequired()]) + # items = SelectField('items') + item_ids = StringField('item_ids', validators=[DataRequired()], render_kw={"v-model": "orderItemIds"}) - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.items.choices = [(str(item.id), item.name) - for item in Item.query.all()] + # def __init__(self, *args, **kwargs): + # super().__init__(*args, **kwargs) + # self.items.choices = [(str(item.id), item.name) + # for item in Item.query.all()] class UpdateItemsForm(FlaskForm): diff --git a/src/routes.py b/src/routes.py index 6f566db..c30b1f6 100644 --- a/src/routes.py +++ b/src/routes.py @@ -29,9 +29,11 @@ def customer(): def order(): form = OrderForm() if form.validate_on_submit(): - item_ids = [form.data['items']] - items = Item.query.filter(Item.id.in_(item_ids)).all() + item_ids = form.data['item_ids'].split(',') + #import pdb; pdb.set_trace() + items = [Item.query.get(i) for i in item_ids] customer = Customer.query.filter_by(id=g.user.id).first() + order = Order( customer=customer, items=items diff --git a/src/static/css/style.css b/src/static/css/style.css index e69de29..5c3765d 100644 --- a/src/static/css/style.css +++ b/src/static/css/style.css @@ -0,0 +1,12 @@ +.order-select { + cursor: pointer; +} + +#orders { + display: grid; + grid-template-columns: fr fr; +} + +#items-table { + grid-column-start: 0; +} \ No newline at end of file diff --git a/src/static/css/styles.css b/src/static/css/styles.css deleted file mode 100644 index e69de29..0000000 diff --git a/src/static/js/app.js b/src/static/js/app.js new file mode 100644 index 0000000..8e07de7 --- /dev/null +++ b/src/static/js/app.js @@ -0,0 +1,26 @@ + + +const vm = new Vue({ + el: '#orders', + data: { + orderItems: [], + orderItemIds: [], + totalPrice: 0 + }, + methods: { + updateOrder: function(event) { + const item_id = event.target.dataset.id; + const item_name = event.target.dataset.name; + const item_price = event.target.dataset.price; + const item = { + id: item_id, + name: item_name, + price: item_price + } + this.orderItems.push(item); + this.orderItemIds.push(item_id) + this.totalPrice += parseFloat(item_price); + } + }, + delimiters: ['[[',']]'] +}) \ No newline at end of file diff --git a/src/templates/order.html b/src/templates/order.html index 7bda887..15a3411 100644 --- a/src/templates/order.html +++ b/src/templates/order.html @@ -4,9 +4,9 @@ {% endblock title %} {% block content %} -
    +

    Py Cafe Menu

    - +
    @@ -18,16 +18,40 @@

    Py Cafe Menu

    + {% endfor %}
    Item
    {{ item.name }} {{ item.price }} Add to Order
    - - {{ form.hidden_tag() }} - {{ form.number_ordered.label }}{{ form.number_ordered}} - - - {{ form.items.label }} {{ form.items() }} - + + + + + + + + + + + + + + + + + +
    ItemPrice
    [[ item.name ]][[ item.price ]]
    Total Price:[[ totalPrice ]]
    +
    + {{ form.hidden_tag() }} + {{ form.item_ids.label }} {{ form.item_ids }} + +
    + + {% endblock content %} \ No newline at end of file From 529013e4cc823386fba49f233b516750a9eedb94 Mon Sep 17 00:00:00 2001 From: Dan Le Date: Tue, 19 Mar 2019 15:25:39 -0700 Subject: [PATCH 35/87] dont use the delete user button --- src/forms.py | 9 ++++++- src/routes.py | 19 +++++++++++-- src/static/css/style.css | 9 ++++++- src/templates/about_us.html | 24 +++++++++++++++++ src/templates/auth/manager/all_users.html | 33 +++++++++++++++++++++++ src/templates/base.html | 6 +++-- 6 files changed, 94 insertions(+), 6 deletions(-) create mode 100644 src/templates/about_us.html create mode 100644 src/templates/auth/manager/all_users.html diff --git a/src/forms.py b/src/forms.py index 89a7673..3ea1ec1 100644 --- a/src/forms.py +++ b/src/forms.py @@ -1,7 +1,7 @@ from flask_wtf import FlaskForm from wtforms import StringField, SelectField, PasswordField from wtforms.validators import DataRequired -from .models import Manager, Customer, Employee, Order, OrderItems, Item +from .models import Manager, Customer, Employee, Order, OrderItems, Item, User from flask import g @@ -53,3 +53,10 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.items.choices = [(str(item.id), item.name) for item in Item.query.all()] +class DeleteUserForm(FlaskForm): + users = SelectField('users') + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.users.choices = [(str(user.id), user.name) + for user in User.query.all()] diff --git a/src/routes.py b/src/routes.py index 842edf4..a2a88c3 100644 --- a/src/routes.py +++ b/src/routes.py @@ -1,8 +1,8 @@ from flask import render_template, redirect, url_for, request, flash, session, g from sqlalchemy.exc import DBAPIError, IntegrityError from . import app -from .forms import RegisterForm, AddItemsForm, OrderForm, UpdateItemsForm, DeleteForm -from .models import db, Manager, Customer, Item, Order +from .forms import RegisterForm, AddItemsForm, OrderForm, UpdateItemsForm, DeleteForm, DeleteUserForm +from .models import db, Manager, Customer, Item, Order, User from .auth import login_required, authorization_required import requests import json @@ -13,6 +13,10 @@ def home(): return render_template('home.html'), 200 +@app.route('/about') +def about(): + return render_template('about_us.html'), 200 + @app.add_template_global def get_items(): @@ -86,6 +90,17 @@ def update_items(): items= Item.query.all() return render_template('auth/update_items.html', form=form, items=items) +@app.route('/auth/manager/all_users', methods=['GET','POST']) +def all_users(): + form = DeleteUserForm() + if form.validate_on_submit(): + id = form.data['users'] + user = User.query.filter_by(id=id).first() + db.session.delete(user) + db.session.commit() + return redirect(url_for('.all_users')) + users = User.query.all() + return render_template('/auth/manager/all_users.html', users=users, form=form) @app.route('/reservation') def reservation(): diff --git a/src/static/css/style.css b/src/static/css/style.css index b4ce753..f4fec95 100644 --- a/src/static/css/style.css +++ b/src/static/css/style.css @@ -1,4 +1,11 @@ -li { +body{ + margin-left: 5%; +} +#pycafe{ text-decoration: none; display: inline-block; + margin-bottom: 5%; +} +h1{ + margin-top:5%; } \ No newline at end of file diff --git a/src/templates/about_us.html b/src/templates/about_us.html new file mode 100644 index 0000000..7734b00 --- /dev/null +++ b/src/templates/about_us.html @@ -0,0 +1,24 @@ +{% extends 'base.html' %} + +{% block title%} +About Us +{% endblock title%} + +{% block content %} +
    +

    Tim Schoen

    + +

    Some stuff

    +
    +
    +

    Milo Anderson

    + +

    Some stuff

    +
    +
    +

    Dan Le

    + +

    Some stuff

    +
    +{% endblock content %} + diff --git a/src/templates/auth/manager/all_users.html b/src/templates/auth/manager/all_users.html new file mode 100644 index 0000000..abccf95 --- /dev/null +++ b/src/templates/auth/manager/all_users.html @@ -0,0 +1,33 @@ +{% extends 'base.html' %} + +{% block title%} +All users +{% endblock title%} + +{% block content %} + + + + + + + + + + {% for user in users %} + + + + + + {% endfor %} + +
    NamePhone Numberemail
    {{ user.name }}{{ user.phone }}{{ user.email }}
    +

    Delete User:

    + +{% endblock content %} + diff --git a/src/templates/base.html b/src/templates/base.html index a74fb5b..4a7714d 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -10,7 +10,7 @@
    -

    Py Café

    +

    Py Café

    {% if g.user %} -

    Welcome, {{ g.user['id'] }}

    +

    Welcome, {{ g.user['name'] }}

    {% endif %}
    From c08ea19a3e5970f3ae1ac3520742660b805cb089 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Tue, 19 Mar 2019 15:53:08 -0700 Subject: [PATCH 36/87] started building customer-items report model --- src/models_reports.py | 9 +++++++++ src/routes.py | 3 +++ 2 files changed, 12 insertions(+) create mode 100644 src/models_reports.py diff --git a/src/models_reports.py b/src/models_reports.py new file mode 100644 index 0000000..d7c58aa --- /dev/null +++ b/src/models_reports.py @@ -0,0 +1,9 @@ +from flask_sqlalchemy import SQLAlchemy +from .models import db, User, Customer, Manager, Employee, Order, OrderItems, Item + + +class CustomerOrders(): + + def __init__(self, cust_id): + orders = Order.query.filter_by(cust_id=cust_id).all() + self.test = orders[0].items[0].name \ No newline at end of file diff --git a/src/routes.py b/src/routes.py index 95f4402..0dd2d12 100644 --- a/src/routes.py +++ b/src/routes.py @@ -3,6 +3,7 @@ from . import app from .forms import RegisterForm, AddItemsForm, OrderForm, UpdateItemsForm, DeleteForm from .models import db, Manager, Customer, Item, Order +from .models_reports import CustomerOrders from .auth import login_required, authorization_required import requests import json @@ -11,6 +12,8 @@ @app.route('/') def home(): + customer_orders = CustomerOrders(3) + print(customer_orders.test) return render_template('home.html'), 200 From a819b23b734f3e204ecaa789ac28f79dbcedb71f Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Tue, 19 Mar 2019 16:17:36 -0700 Subject: [PATCH 37/87] order creation updates item inventory_count --- src/models.py | 7 +++++++ src/static/js/app.js | 2 -- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/models.py b/src/models.py index 32b1afb..abbbdf5 100644 --- a/src/models.py +++ b/src/models.py @@ -103,6 +103,13 @@ class Order(db.Model): back_populates='orders' ) + def __init__(self, items, customer): + for item in items: + item.inventory_count -= 1 + db.session.commit() + self.items = items + self.customer = customer + class OrderItems(db.Model): __tablename__ = 'order_items' diff --git a/src/static/js/app.js b/src/static/js/app.js index 8e07de7..8b07184 100644 --- a/src/static/js/app.js +++ b/src/static/js/app.js @@ -1,5 +1,3 @@ - - const vm = new Vue({ el: '#orders', data: { From c8501658e1188f55f1dd821485538f188136fff3 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Tue, 19 Mar 2019 23:51:26 -0700 Subject: [PATCH 38/87] user can delete items from order before submitting --- src/models_reports.py | 3 ++- src/static/js/app.js | 18 ++++++++++++++++-- src/templates/order.html | 9 +++++---- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/models_reports.py b/src/models_reports.py index d7c58aa..6be9acf 100644 --- a/src/models_reports.py +++ b/src/models_reports.py @@ -1,4 +1,5 @@ from flask_sqlalchemy import SQLAlchemy +from sqlalchemy import func from .models import db, User, Customer, Manager, Employee, Order, OrderItems, Item @@ -6,4 +7,4 @@ class CustomerOrders(): def __init__(self, cust_id): orders = Order.query.filter_by(cust_id=cust_id).all() - self.test = orders[0].items[0].name \ No newline at end of file + self.test = orders[0].items[0].name diff --git a/src/static/js/app.js b/src/static/js/app.js index 8b07184..2eac1e5 100644 --- a/src/static/js/app.js +++ b/src/static/js/app.js @@ -6,7 +6,7 @@ const vm = new Vue({ totalPrice: 0 }, methods: { - updateOrder: function(event) { + addToOrder: function(event) { const item_id = event.target.dataset.id; const item_name = event.target.dataset.name; const item_price = event.target.dataset.price; @@ -18,7 +18,21 @@ const vm = new Vue({ this.orderItems.push(item); this.orderItemIds.push(item_id) this.totalPrice += parseFloat(item_price); + console.log('orderItems: ' + this.orderItems); + console.log('orderItemIds: ' + this.orderItemIds); + }, + removeFromOrder: function(event) { + const item_id = event.target.dataset.id; + i = this.orderItems.findIndex((element) => { + return element.id === item_id; + }); + console.log(i) + this.orderItems.splice(i, 1); + j = this.orderItemIds.indexOf(item_id); + if (j > -1) this.orderItemIds.splice(j, 1); + console.log('orderItems: ' + this.orderItems); + console.log('orderItemIds: ' + this.orderItemIds); } }, delimiters: ['[[',']]'] -}) \ No newline at end of file +}) diff --git a/src/templates/order.html b/src/templates/order.html index 15a3411..817f88f 100644 --- a/src/templates/order.html +++ b/src/templates/order.html @@ -18,12 +18,11 @@

    Py Cafe Menu

    {{ item.name }} {{ item.price }} - Add to Order + data-price="{{ item.price }}">Add {% endfor %} @@ -39,10 +38,12 @@

    Py Cafe Menu

    [[ item.name ]] [[ item.price ]] + Remove Total Price: - [[ totalPrice ]] + [[ totalPrice ]] From 44c498f0d2048363cf43c4caca99febe457411f9 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Wed, 20 Mar 2019 10:30:06 -0700 Subject: [PATCH 39/87] fixed orders total price calculation --- src/static/js/app.js | 18 +++++++++--------- src/templates/order.html | 6 +++--- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/static/js/app.js b/src/static/js/app.js index 2eac1e5..b6e74fe 100644 --- a/src/static/js/app.js +++ b/src/static/js/app.js @@ -16,22 +16,22 @@ const vm = new Vue({ price: item_price } this.orderItems.push(item); - this.orderItemIds.push(item_id) - this.totalPrice += parseFloat(item_price); - console.log('orderItems: ' + this.orderItems); - console.log('orderItemIds: ' + this.orderItemIds); + this.orderItemIds.push(item_id); + this.totalPrice = this.orderItems.reduce((acc, curr) => { + return acc + parseFloat(curr.price); + }, 0); }, removeFromOrder: function(event) { const item_id = event.target.dataset.id; - i = this.orderItems.findIndex((element) => { + const i = this.orderItems.findIndex((element) => { return element.id === item_id; }); - console.log(i) this.orderItems.splice(i, 1); - j = this.orderItemIds.indexOf(item_id); + const j = this.orderItemIds.indexOf(item_id); if (j > -1) this.orderItemIds.splice(j, 1); - console.log('orderItems: ' + this.orderItems); - console.log('orderItemIds: ' + this.orderItemIds); + this.totalPrice = this.orderItems.reduce((acc, curr) => { + return acc + parseFloat(curr.price); + }, 0); } }, delimiters: ['[[',']]'] diff --git a/src/templates/order.html b/src/templates/order.html index 817f88f..9746a27 100644 --- a/src/templates/order.html +++ b/src/templates/order.html @@ -17,7 +17,7 @@

    Py Cafe Menu

    {% for item in items %} {{ item.name }} - {{ item.price }} + ${{ item.price }} Py Cafe Menu [[ item.name ]] - [[ item.price ]] + $[[ item.price ]] Remove Total Price: - [[ totalPrice ]] + $[[ totalPrice ]] From a766fb2598de35ab08110f6773e81845e80c6544 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Wed, 20 Mar 2019 12:03:30 -0700 Subject: [PATCH 40/87] basic CSS styling & template cleanup --- src/static/css/base.css | 45 ++++++++++++++++++ src/static/css/layout.css | 21 +++++++++ src/static/css/module.css | 12 +++++ src/static/css/skeleton.css | 15 ------ src/templates/about_us.html | 26 ++++++----- src/templates/auth/add_items.html | 44 +++++++++--------- src/templates/auth/delete_items.html | 56 ++++++++++++----------- src/templates/auth/manager/all_users.html | 8 +++- src/templates/auth/register.html | 2 +- src/templates/auth/update_items.html | 44 +++++++++--------- src/templates/base.html | 18 +++++--- src/templates/home.html | 4 +- src/templates/order.html | 21 +++++---- 13 files changed, 199 insertions(+), 117 deletions(-) create mode 100644 src/static/css/base.css create mode 100644 src/static/css/layout.css create mode 100644 src/static/css/module.css diff --git a/src/static/css/base.css b/src/static/css/base.css new file mode 100644 index 0000000..f878140 --- /dev/null +++ b/src/static/css/base.css @@ -0,0 +1,45 @@ +header, footer { + padding: 0px 20px; +} +nav ul li { + list-style-type: none; + margin: 0px; +} +nav ul li a { + display: block; + margin: 0px; + padding: 5px; + padding-left: 20px; + border: 1px solid darkgrey; + border-top: none; + color: navy; + text-decoration: none; + font-weight: bold; +} +nav ul li a:hover { + background-color: ivory; +} +header { + border-bottom: 2px solid darkblue; +} +footer { + border-top: 2px solid darkorange; + background-color: navajowhite; + height: 30px; +} + +table th { + text-align: left; + padding: 10px 18px; +} +table tr:nth-child(odd) td { + background-color: whitesmoke; +} +table tr:nth-child(even) td { + background-color: ivory; +} +table tr td { + padding: 10px 18px; + text-align: left; + border-bottom: 1px solid #E1E1E1; } +} \ No newline at end of file diff --git a/src/static/css/layout.css b/src/static/css/layout.css new file mode 100644 index 0000000..ca32be9 --- /dev/null +++ b/src/static/css/layout.css @@ -0,0 +1,21 @@ +header { grid-area: header; } +nav { grid-area: nav; } +main { grid-area: main; } +footer { grid-area: footer; } + +body { + display: grid; + grid-template-areas: "header header" + "nav main" + "footer footer"; + grid-template-columns: 200px 1fr; + grid-template-rows: 120px 1fr 30px; + min-height: 100vh; +} + +header h5 { + float: right; +} +main { + padding-top: 14px; +} \ No newline at end of file diff --git a/src/static/css/module.css b/src/static/css/module.css new file mode 100644 index 0000000..19325b3 --- /dev/null +++ b/src/static/css/module.css @@ -0,0 +1,12 @@ +#items-table td.btn-add { + cursor: pointer; + font-weight: bold; + padding: 10px; + background-color: springgreen; +} +#order-items-table td.btn-remove { + cursor: pointer; + font-weight: bold; + padding: 10px; + background-color: orangered; +} \ No newline at end of file diff --git a/src/static/css/skeleton.css b/src/static/css/skeleton.css index 6509671..d1f0e75 100644 --- a/src/static/css/skeleton.css +++ b/src/static/css/skeleton.css @@ -320,21 +320,6 @@ white-space: pre; } - /* Tables - –––––––––––––––––––––––––––––––––––––––––––––––––– */ - th, - td { - padding: 12px 15px; - text-align: left; - border-bottom: 1px solid #E1E1E1; } - th:first-child, - td:first-child { - padding-left: 0; } - th:last-child, - td:last-child { - padding-right: 0; } - - /* Spacing –––––––––––––––––––––––––––––––––––––––––––––––––– */ button, diff --git a/src/templates/about_us.html b/src/templates/about_us.html index 7734b00..c725329 100644 --- a/src/templates/about_us.html +++ b/src/templates/about_us.html @@ -5,20 +5,22 @@ {% endblock title%} {% block content %} -
    -

    Tim Schoen

    - -

    Some stuff

    -
    -
    -

    Milo Anderson

    - -

    Some stuff

    -
    -
    -

    Dan Le

    +
    +
    +

    Tim Schoen

    + +

    Some stuff

    +
    +
    +

    Milo Anderson

    + +

    Some stuff

    +
    +
    +

    Dan Le

    Some stuff

    +
    {% endblock content %} diff --git a/src/templates/auth/add_items.html b/src/templates/auth/add_items.html index c9dfd88..443f7ce 100644 --- a/src/templates/auth/add_items.html +++ b/src/templates/auth/add_items.html @@ -7,27 +7,29 @@ {% block content %}
    - - - - - - - - - - - {% for item in items %} - - - - - - - {% endfor %} - -
    ItemPriceCost of GoodInventory
    {{ item.name }} {{ item.price }} {{ item.cog }} {{ item.inventory_count }}
    -

    Add Item:

    +

    All Items

    + + + + + + + + + + + {% for item in items %} + + + + + + + {% endfor %} + +
    ItemPriceCost of GoodInventory
    {{ item.name }} {{ item.price }} {{ item.cog }} {{ item.inventory_count }}
    + +

    Add Item

    {{ form.hidden_tag() }} {{ form.name.label }}{{ form.name(size = 32)}} diff --git a/src/templates/auth/delete_items.html b/src/templates/auth/delete_items.html index ac52f2b..082b697 100644 --- a/src/templates/auth/delete_items.html +++ b/src/templates/auth/delete_items.html @@ -7,31 +7,33 @@ {% block content %}
    - - - - - - - - - - - {% for item in items %} - - - - - - - {% endfor %} - -
    ItemPriceCost of GoodInventory
    {{ item.name }} {{ item.price }} {{ item.cog }} {{ item.inventory_count }}
    -

    Delete Item:

    - - {{ form.hidden_tag() }} - {{ form.items.label }}{{ form.items()}} - - -
    +

    All Items

    + + + + + + + + + + + {% for item in items %} + + + + + + + {% endfor %} + +
    ItemPriceCost of GoodInventory
    {{ item.name }} {{ item.price }} {{ item.cog }} {{ item.inventory_count }}
    + +

    Delete Item

    +
    + {{ form.hidden_tag() }} + {{ form.items.label }}{{ form.items()}} + +
    +
    {% endblock content %} \ No newline at end of file diff --git a/src/templates/auth/manager/all_users.html b/src/templates/auth/manager/all_users.html index abccf95..f69c004 100644 --- a/src/templates/auth/manager/all_users.html +++ b/src/templates/auth/manager/all_users.html @@ -5,7 +5,9 @@ {% endblock title%} {% block content %} - +
    +

    All Users

    +
    @@ -23,11 +25,13 @@ {% endfor %}
    Name
    -

    Delete User:

    + +

    Delete User

    +
    {% endblock content %} diff --git a/src/templates/auth/register.html b/src/templates/auth/register.html index 3f139ab..e8da4e2 100644 --- a/src/templates/auth/register.html +++ b/src/templates/auth/register.html @@ -6,7 +6,7 @@ {% block content %}
    -

    Register:

    +

    Register

    {{ form.hidden_tag() }} {{ form.name.label }}{{ form.name(size=36)}} diff --git a/src/templates/auth/update_items.html b/src/templates/auth/update_items.html index 467174b..413d92a 100644 --- a/src/templates/auth/update_items.html +++ b/src/templates/auth/update_items.html @@ -7,27 +7,29 @@ {% block content %}
    - - - - - - - - - - - {% for item in items %} - - - - - - - {% endfor %} - -
    ItemPriceCost of GoodInventory
    {{ item.name }} {{ item.price }} {{ item.cog }} {{ item.inventory_count }}
    -

    Update Item:

    +

    All Items

    + + + + + + + + + + + {% for item in items %} + + + + + + + {% endfor %} + +
    ItemPriceCost of GoodInventory
    {{ item.name }} {{ item.price }} {{ item.cog }} {{ item.inventory_count }}
    + +

    Update Item

    {{ form.hidden_tag() }} {{ form.items.label }}{{ form.items()}} diff --git a/src/templates/base.html b/src/templates/base.html index 4a7714d..b302e96 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -6,12 +6,18 @@ - + + +

    Py Café

    -
    + - {% if g.user %} -

    Welcome, {{ g.user['name'] }}

    - {% endif %} - + +
    {% for message in get_flashed_messages() %}
    {{message}}
    @@ -33,5 +36,6 @@

    Welcome, {{ g.user['name'] }}

    {% block content %} {% endblock content %}
    +
    \ No newline at end of file diff --git a/src/templates/home.html b/src/templates/home.html index b022d2e..41d251e 100644 --- a/src/templates/home.html +++ b/src/templates/home.html @@ -5,6 +5,8 @@ {% endblock title%} {% block content %} -

    Home Page

    +
    +

    Home Page

    +
    {% endblock content %} diff --git a/src/templates/order.html b/src/templates/order.html index 9746a27..a6ca4a7 100644 --- a/src/templates/order.html +++ b/src/templates/order.html @@ -5,7 +5,7 @@ {% endblock title %} {% block content %}
    -

    Py Cafe Menu

    +

    Py Cafe Menu

    @@ -19,10 +19,10 @@

    Py Cafe Menu

    + data-price="{{ item.price }}">+ {% endfor %} @@ -38,8 +38,9 @@

    Py Cafe Menu

    - + @@ -47,11 +48,11 @@

    Py Cafe Menu

    {{ item.name }} ${{ item.price }} Add
    [[ item.name ]] $[[ item.price ]]Remove-
    Total Price:
    - - {{ form.hidden_tag() }} - {{ form.item_ids.label }} {{ form.item_ids }} - - +
    + {{ form.hidden_tag() }} + {{ form.item_ids.label }} {{ form.item_ids }} + +
    From ccad14d366217c943379ffd3a8cd14a4e546481e Mon Sep 17 00:00:00 2001 From: Tim Schoen Date: Wed, 20 Mar 2019 12:21:31 -0700 Subject: [PATCH 41/87] sales by scustomer working --- src/auth.py | 2 +- src/models_reports.py | 21 +++++++++++- src/routes.py | 18 ++++++++-- src/static/css/style.css | 3 +- src/templates/auth/manager/by_customer.html | 37 +++++++++++++++++++++ src/templates/base.html | 3 +- 6 files changed, 78 insertions(+), 6 deletions(-) create mode 100644 src/templates/auth/manager/by_customer.html diff --git a/src/auth.py b/src/auth.py index f14ba45..714d651 100644 --- a/src/auth.py +++ b/src/auth.py @@ -49,7 +49,7 @@ def register(): ) db.session.add(customer) db.session.commit() - return redirect(url_for('/')) + return redirect(url_for('.home')) return render_template('auth/register.html', form=form) diff --git a/src/models_reports.py b/src/models_reports.py index 6be9acf..1c71cea 100644 --- a/src/models_reports.py +++ b/src/models_reports.py @@ -6,5 +6,24 @@ class CustomerOrders(): def __init__(self, cust_id): + self.cust_id= cust_id + + + + def item_totals(self, cust_id): + rtn= [] + order_ids =[] + counts = [] + order_items_list =[] + orders = Order.query.filter_by(cust_id=cust_id).all() - self.test = orders[0].items[0].name + for order in orders: + order_ids.append(order.id) + for i in order_ids: + orderd_items = OrderItems.query.filter_by(order_id= i).all() + for j in orderd_items: + order_items_list.append(j.item_id) + items = Item.query.all() + for item in items: + counts.append((item.name,order_items_list.count(item.id))) + return counts diff --git a/src/routes.py b/src/routes.py index fd9d2eb..15d2fcb 100644 --- a/src/routes.py +++ b/src/routes.py @@ -12,8 +12,6 @@ @app.route('/') def home(): - customer_orders = CustomerOrders(3) - print(customer_orders.test) return render_template('home.html'), 200 @app.route('/about') @@ -107,6 +105,22 @@ def all_users(): users = User.query.all() return render_template('/auth/manager/all_users.html', users=users, form=form) +@app.route('/auth/manager/by_customer', methods=['GET','POST']) +def by_customer(): + form = DeleteUserForm() + if form.validate_on_submit(): + id = form.data['users'] + report = CustomerOrders(id) + content= report.item_totals(id) + users = User.query.all() + + return render_template('/auth/manager/by_customer.html', users=users, form=form, content=content) + + users = User.query.all() + return render_template('/auth/manager/by_customer.html', users=users, form=form, content=None) + + + @app.route('/reservation') def reservation(): pass diff --git a/src/static/css/style.css b/src/static/css/style.css index 629b3be..080a420 100644 --- a/src/static/css/style.css +++ b/src/static/css/style.css @@ -3,7 +3,7 @@ body{ margin-left: 5%; } #pycafe{ - +} .order-select { cursor: pointer; } @@ -22,6 +22,7 @@ li { text-decoration: none; display: inline-block; margin-bottom: 5%; + color:red; } h1{ margin-top:5%; diff --git a/src/templates/auth/manager/by_customer.html b/src/templates/auth/manager/by_customer.html new file mode 100644 index 0000000..de6a9d0 --- /dev/null +++ b/src/templates/auth/manager/by_customer.html @@ -0,0 +1,37 @@ +{% extends "base.html" %} + +{% block title %} +Add Items +{% endblock title %} + + +{% block content %} +
    + {% if content != None %} + + + + + + + + + {% for item in content %} + + + + + {% endfor %} + +
    NameNumber Sold
    {{ item[0] }} {{ item[1] }}
    + {% endif %} +

    Select User

    + + +
    + +{% endblock content %} \ No newline at end of file diff --git a/src/templates/base.html b/src/templates/base.html index 4a7714d..6899dc1 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -5,7 +5,7 @@ - + @@ -21,6 +21,7 @@

    Py Café

  • Update Item
  • Users
  • About Us
  • +
  • Sales by Customer
  • {% if g.user %}

    Welcome, {{ g.user['name'] }}

    From e508eef5de82c01e5ed3027924d55239d84e0903 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Wed, 20 Mar 2019 12:58:50 -0700 Subject: [PATCH 42/87] progress on site authorization & navigation --- src/routes.py | 10 +++++++-- src/static/css/module.css | 19 ++++++++++++++++ src/templates/base.html | 23 ++++++++++++++----- src/templates/items/all_items.html | 36 ++++++++++++++++++++++++++++++ 4 files changed, 80 insertions(+), 8 deletions(-) create mode 100644 src/templates/items/all_items.html diff --git a/src/routes.py b/src/routes.py index 15d2fcb..1affdf5 100644 --- a/src/routes.py +++ b/src/routes.py @@ -50,6 +50,12 @@ def order(): return render_template('order.html', items=items, form=form) +@app.route('/item', methods=['GET']) +#@authorization_required(roles=['employee', 'manager']) +def all_items(): + items = Item.query.all() + return render_template('items/all_items.html', items=items) + @app.route('/item/add', methods=['GET', 'POST']) def add_items(): form = AddItemsForm() @@ -63,8 +69,8 @@ def add_items(): db.session.add(item) db.session.commit() return redirect(url_for('.add_items')) - items= Item.query.all() - return render_template('auth/add_items.html', form=form, items= items) + items = Item.query.all() + return render_template('auth/add_items.html', form=form, items=items) @app.route('/item/delete', methods=['GET', 'POST']) # this is a DELETE diff --git a/src/static/css/module.css b/src/static/css/module.css index 19325b3..95d96ba 100644 --- a/src/static/css/module.css +++ b/src/static/css/module.css @@ -9,4 +9,23 @@ font-weight: bold; padding: 10px; background-color: orangered; +} +a.button { + display: inline-block; + height: 38px; + padding: 0 30px; + color: #555; + text-align: center; + font-size: 11px; + font-weight: 600; + line-height: 38px; + letter-spacing: .1rem; + text-transform: uppercase; + text-decoration: none; + white-space: nowrap; + background-color: transparent; + border-radius: 4px; + border: 1px solid #bbb; + cursor: pointer; + box-sizing: border-box; } \ No newline at end of file diff --git a/src/templates/base.html b/src/templates/base.html index 7364a7e..4037bd1 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -22,14 +22,25 @@
    Welcome, {{ g.user['name'] }}
    diff --git a/src/templates/items/all_items.html b/src/templates/items/all_items.html new file mode 100644 index 0000000..7042ce5 --- /dev/null +++ b/src/templates/items/all_items.html @@ -0,0 +1,36 @@ +{% extends "base.html" %} + +{% block title %} +All Items +{% endblock title %} + + +{% block content %} +
    +

    All Items

    + + + + + + + + + + + {% for item in items %} + + + + + + + {% endfor %} + +
    ItemPriceCost of GoodInventory
    {{ item.name }} {{ item.price }} {{ item.cog }} {{ item.inventory_count }}
    + Add Items + Update Items + Delete Items +
    + +{% endblock content %} \ No newline at end of file From 5299804dca54b983c504c0cddd2ac60afaeba607 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Wed, 20 Mar 2019 14:06:01 -0700 Subject: [PATCH 43/87] can create new managers --- src/forms.py | 11 +++- src/routes.py | 60 +++++++++++++------ src/templates/auth/register.html | 2 +- src/templates/base.html | 6 +- .../{auth/manager => user}/all_users.html | 14 ++++- src/templates/user/create_manager.html | 19 ++++++ 6 files changed, 86 insertions(+), 26 deletions(-) rename src/templates/{auth/manager => user}/all_users.html (63%) create mode 100644 src/templates/user/create_manager.html diff --git a/src/forms.py b/src/forms.py index c9268ae..480a6f2 100644 --- a/src/forms.py +++ b/src/forms.py @@ -26,7 +26,8 @@ class AddItemsForm(FlaskForm): class OrderForm(FlaskForm): # items = SelectField('items') - item_ids = StringField('item_ids', validators=[DataRequired()], render_kw={"v-model": "orderItemIds"}) + item_ids = StringField('item_ids', validators=[DataRequired()], render_kw={ + "v-model": "orderItemIds"}) # def __init__(self, *args, **kwargs): # super().__init__(*args, **kwargs) @@ -53,6 +54,8 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.items.choices = [(str(item.id), item.name) for item in Item.query.all()] + + class DeleteUserForm(FlaskForm): users = SelectField('users') @@ -60,3 +63,9 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.users.choices = [(str(user.id), user.name) for user in User.query.all()] + + +class ManagerForm(FlaskForm): + name = StringField('name', validators=[DataRequired()]) + email = StringField('email', validators=[DataRequired()]) + password = StringField('password', validators=[DataRequired()]) diff --git a/src/routes.py b/src/routes.py index 1affdf5..c16d36f 100644 --- a/src/routes.py +++ b/src/routes.py @@ -1,7 +1,8 @@ from flask import render_template, redirect, url_for, request, flash, session, g from sqlalchemy.exc import DBAPIError, IntegrityError from . import app -from .forms import RegisterForm, AddItemsForm, OrderForm, UpdateItemsForm, DeleteForm, DeleteUserForm +from .forms import RegisterForm, AddItemsForm, OrderForm, UpdateItemsForm +from .forms import DeleteForm, DeleteUserForm, ManagerForm from .models import db, User, Manager, Customer, Item, Order from .models_reports import CustomerOrders from .auth import login_required, authorization_required @@ -14,6 +15,7 @@ def home(): return render_template('home.html'), 200 + @app.route('/about') def about(): return render_template('about_us.html'), 200 @@ -30,12 +32,11 @@ def customer(): @app.route('/order', methods=['GET', 'POST']) -@authorization_required(roles=['customer']) +@authorization_required(roles=['customer', 'employee', 'manager']) def order(): form = OrderForm() if form.validate_on_submit(): item_ids = form.data['item_ids'].split(',') - #import pdb; pdb.set_trace() items = [Item.query.get(i) for i in item_ids] customer = Customer.query.filter_by(id=g.user.id).first() @@ -51,11 +52,12 @@ def order(): @app.route('/item', methods=['GET']) -#@authorization_required(roles=['employee', 'manager']) +# @authorization_required(roles=['employee', 'manager']) def all_items(): items = Item.query.all() return render_template('items/all_items.html', items=items) + @app.route('/item/add', methods=['GET', 'POST']) def add_items(): form = AddItemsForm() @@ -82,24 +84,25 @@ def delete_items(): db.session.delete(item) db.session.commit() return redirect(url_for('.delete_items')) - items= Item.query.all() + items = Item.query.all() return render_template('auth/delete_items.html', form=form, items=items) -@app.route('/item/update', methods=['GET','POST']) # this is a PUT + +@app.route('/item/update', methods=['GET', 'POST']) # this is a PUT def update_items(): form = UpdateItemsForm() if form.validate_on_submit(): item = Item.query.get(form.data['items']) - item.cog=form.data['cost'], - item.price=form.data['price'], - item.inventory_count=form.data['count'] - # db.session.add(item) + item.cog = form.data['cost'], + item.price = form.data['price'], + item.inventory_count = form.data['count'] db.session.commit() return redirect(url_for('.update_items')) - items= Item.query.all() - return render_template('auth/update_items.html', form=form, items=items) + items = Item.query.all() + return render_template('auth/update_items.html', form=form, items=items) -@app.route('/auth/manager/all_users', methods=['GET','POST']) + +@app.route('/all_users', methods=['GET', 'POST']) def all_users(): form = DeleteUserForm() if form.validate_on_submit(): @@ -109,23 +112,44 @@ def all_users(): db.session.commit() return redirect(url_for('.all_users')) users = User.query.all() - return render_template('/auth/manager/all_users.html', users=users, form=form) + return render_template('/user/all_users.html', users=users, form=form) + -@app.route('/auth/manager/by_customer', methods=['GET','POST']) +@app.route('/user/manager', methods=['GET', 'POST']) +def create_manager(): + form = ManagerForm() + if form.validate_on_submit(): + manager = Manager( + name=form.data['name'], + email=form.data['email'], + password=form.data['password'] + ) + db.session.add(manager) + db.session.commit() + return redirect(url_for('.all_users')) + + return render_template('/user/create_manager.html', form=form) + + +@app.route('/user/manager', methods=['GET', 'POST']) +def create_employee(): + pass + + +@app.route('/auth/manager/by_customer', methods=['GET', 'POST']) def by_customer(): form = DeleteUserForm() if form.validate_on_submit(): id = form.data['users'] report = CustomerOrders(id) - content= report.item_totals(id) + content = report.item_totals(id) users = User.query.all() return render_template('/auth/manager/by_customer.html', users=users, form=form, content=content) users = User.query.all() return render_template('/auth/manager/by_customer.html', users=users, form=form, content=None) - - + @app.route('/reservation') def reservation(): diff --git a/src/templates/auth/register.html b/src/templates/auth/register.html index e8da4e2..b91247d 100644 --- a/src/templates/auth/register.html +++ b/src/templates/auth/register.html @@ -6,7 +6,7 @@ {% block content %}
    -

    Register

    +

    Customer Registration

    {{ form.hidden_tag() }} {{ form.name.label }}{{ form.name(size=36)}} diff --git a/src/templates/base.html b/src/templates/base.html index 4037bd1..ec18969 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -26,12 +26,12 @@
    Welcome, {{ g.user['name'] }}
    {% if g.user %}
  • Orders
  • {% endif %} - {% if g.user.type in ('employee', 'manager') %} + {% if g.user and g.user.type in ('employee', 'manager') %}
  • Items
  • Sales by Customer
  • {% endif %} - {% if g.user.type in ('manager') %} -
  • Manage Users
  • + {% if g.user and g.user.type in ('manager') %} +
  • Users
  • {% endif %}
  • Reservations
  • {% if not g.user %} diff --git a/src/templates/auth/manager/all_users.html b/src/templates/user/all_users.html similarity index 63% rename from src/templates/auth/manager/all_users.html rename to src/templates/user/all_users.html index f69c004..bc48971 100644 --- a/src/templates/auth/manager/all_users.html +++ b/src/templates/user/all_users.html @@ -6,26 +6,34 @@ {% block content %}
    -

    All Users

    +

    Manage Users

    + + - + {% for user in users %} - + + + {% endfor %}
    NameEmailRole Phone NumberemailPay Rate
    {{ user.name }}{{ user.phone }} {{ user.email }}{{ user.type }}{{ user.phone }}{{ user.pay_rate }}
    + Create Customer + Create Employee + Create Manager +

    Delete User

    {{ form.hidden_tag() }} diff --git a/src/templates/user/create_manager.html b/src/templates/user/create_manager.html new file mode 100644 index 0000000..9bdbcd9 --- /dev/null +++ b/src/templates/user/create_manager.html @@ -0,0 +1,19 @@ +{% extends 'base.html' %} + +{% block title%} +Create Manager +{% endblock title%} + +{% block content %} +
    +

    Create Manager

    + + + {{ form.hidden_tag() }} + {{ form.name.label }}{{ form.name()}} + {{ form.email.label }}{{ form.email()}} + {{ form.password.label }}{{ form.password()}} + + +
    +{% endblock content %} \ No newline at end of file From 67b2e4bbf83a929f29ab7147e5088a72a24a78eb Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Wed, 20 Mar 2019 14:37:00 -0700 Subject: [PATCH 44/87] file reorg & cleanup --- src/routes.py | 19 ++++++++----------- src/templates/{auth => items}/add_items.html | 0 .../{auth => items}/delete_items.html | 0 .../{auth => items}/update_items.html | 0 .../{auth => }/manager/by_customer.html | 0 5 files changed, 8 insertions(+), 11 deletions(-) rename src/templates/{auth => items}/add_items.html (100%) rename src/templates/{auth => items}/delete_items.html (100%) rename src/templates/{auth => items}/update_items.html (100%) rename src/templates/{auth => }/manager/by_customer.html (100%) diff --git a/src/routes.py b/src/routes.py index c16d36f..ffb6dc8 100644 --- a/src/routes.py +++ b/src/routes.py @@ -13,6 +13,8 @@ @app.route('/') def home(): + report = CustomerOrders(3) + report.customer_totals() return render_template('home.html'), 200 @@ -72,7 +74,7 @@ def add_items(): db.session.commit() return redirect(url_for('.add_items')) items = Item.query.all() - return render_template('auth/add_items.html', form=form, items=items) + return render_template('items/add_items.html', form=form, items=items) @app.route('/item/delete', methods=['GET', 'POST']) # this is a DELETE @@ -85,7 +87,7 @@ def delete_items(): db.session.commit() return redirect(url_for('.delete_items')) items = Item.query.all() - return render_template('auth/delete_items.html', form=form, items=items) + return render_template('items/delete_items.html', form=form, items=items) @app.route('/item/update', methods=['GET', 'POST']) # this is a PUT @@ -99,7 +101,7 @@ def update_items(): db.session.commit() return redirect(url_for('.update_items')) items = Item.query.all() - return render_template('auth/update_items.html', form=form, items=items) + return render_template('items/update_items.html', form=form, items=items) @app.route('/all_users', methods=['GET', 'POST']) @@ -136,7 +138,7 @@ def create_employee(): pass -@app.route('/auth/manager/by_customer', methods=['GET', 'POST']) +@app.route('/manager/by_customer', methods=['GET', 'POST']) def by_customer(): form = DeleteUserForm() if form.validate_on_submit(): @@ -145,17 +147,12 @@ def by_customer(): content = report.item_totals(id) users = User.query.all() - return render_template('/auth/manager/by_customer.html', users=users, form=form, content=content) + return render_template('/manager/by_customer.html', users=users, form=form, content=content) users = User.query.all() - return render_template('/auth/manager/by_customer.html', users=users, form=form, content=None) + return render_template('/manager/by_customer.html', users=users, form=form, content=None) @app.route('/reservation') def reservation(): pass - - -@app.route('/employee') -def employee(): - pass diff --git a/src/templates/auth/add_items.html b/src/templates/items/add_items.html similarity index 100% rename from src/templates/auth/add_items.html rename to src/templates/items/add_items.html diff --git a/src/templates/auth/delete_items.html b/src/templates/items/delete_items.html similarity index 100% rename from src/templates/auth/delete_items.html rename to src/templates/items/delete_items.html diff --git a/src/templates/auth/update_items.html b/src/templates/items/update_items.html similarity index 100% rename from src/templates/auth/update_items.html rename to src/templates/items/update_items.html diff --git a/src/templates/auth/manager/by_customer.html b/src/templates/manager/by_customer.html similarity index 100% rename from src/templates/auth/manager/by_customer.html rename to src/templates/manager/by_customer.html From 82d50fc86ac27f5ad288f0776249d9ad56deecc2 Mon Sep 17 00:00:00 2001 From: Tim Schoen Date: Wed, 20 Mar 2019 14:47:08 -0700 Subject: [PATCH 45/87] report by item working --- src/forms.py | 9 +++++- src/models_reports.py | 15 ++++++++++ src/routes.py | 16 ++++++++++- src/templates/auth/manager/by_item.html | 37 +++++++++++++++++++++++++ src/templates/base.html | 1 + 5 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 src/templates/auth/manager/by_item.html diff --git a/src/forms.py b/src/forms.py index c9268ae..ff836db 100644 --- a/src/forms.py +++ b/src/forms.py @@ -44,7 +44,13 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.items.choices = [(str(item.id), item.name) for item in Item.query.all()] - +class ItemForm(FlaskForm): + items = SelectField('items') + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.items.choices = [(str(item.id), item.name) + for item in Item.query.all()] + class DeleteForm(FlaskForm): items = SelectField('items') @@ -53,6 +59,7 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.items.choices = [(str(item.id), item.name) for item in Item.query.all()] + class DeleteUserForm(FlaskForm): users = SelectField('users') diff --git a/src/models_reports.py b/src/models_reports.py index 1c71cea..b65ea49 100644 --- a/src/models_reports.py +++ b/src/models_reports.py @@ -27,3 +27,18 @@ def item_totals(self, cust_id): for item in items: counts.append((item.name,order_items_list.count(item.id))) return counts + + def customer_totals(self, item_id=0): + rtn=[] + SQL = """ + select users.name, count(items.id), items.name from users +inner join customers on users.id = customers.id +inner join orders on customers.id=orders.cust_id +inner join order_items on orders.id=order_items.order_id +inner join items on order_items.item_id=items.id +where items.id={} +group by users.name, items.name; """.format(item_id) + test = db.session.execute(SQL) + for row in test: + rtn.append(row) + return rtn \ No newline at end of file diff --git a/src/routes.py b/src/routes.py index 15d2fcb..7badf72 100644 --- a/src/routes.py +++ b/src/routes.py @@ -1,7 +1,7 @@ from flask import render_template, redirect, url_for, request, flash, session, g from sqlalchemy.exc import DBAPIError, IntegrityError from . import app -from .forms import RegisterForm, AddItemsForm, OrderForm, UpdateItemsForm, DeleteForm, DeleteUserForm +from .forms import RegisterForm, AddItemsForm, OrderForm, UpdateItemsForm, DeleteForm, DeleteUserForm, ItemForm from .models import db, User, Manager, Customer, Item, Order from .models_reports import CustomerOrders from .auth import login_required, authorization_required @@ -120,7 +120,21 @@ def by_customer(): return render_template('/auth/manager/by_customer.html', users=users, form=form, content=None) +@app.route('/auth/manager/by_item', methods=['GET','POST']) +def by_item(): + form = ItemForm() + if form.validate_on_submit(): + id = form.data['items'] + report = CustomerOrders(id) + content= report.customer_totals(id) + items = Item.query.all() + + return render_template('/auth/manager/by_item.html', items=items, form=form, content=content) + items = Item.query.all() + return render_template('/auth/manager/by_item.html', items=items, form=form, content=None) + + @app.route('/reservation') def reservation(): pass diff --git a/src/templates/auth/manager/by_item.html b/src/templates/auth/manager/by_item.html new file mode 100644 index 0000000..d7579bc --- /dev/null +++ b/src/templates/auth/manager/by_item.html @@ -0,0 +1,37 @@ +{% extends "base.html" %} + +{% block title %} +Add Items +{% endblock title %} + + +{% block content %} +
    + {% if content != None %} + + + + + + + + + {% for item in content %} + + + + + {% endfor %} + +
    NameNumber Sold
    {{ item[0] }} {{ item[1] }}
    + {% endif %} +

    Select Item

    + + +
    + +{% endblock content %} \ No newline at end of file diff --git a/src/templates/base.html b/src/templates/base.html index 7364a7e..723bbe9 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -30,6 +30,7 @@
    Welcome, {{ g.user['name'] }}
  • Users
  • About Us
  • Sales by Customer
  • +
  • Sales by Item
  • From ab64f3ad4edb8f3edd5ee82813f8eecf2f3b23c8 Mon Sep 17 00:00:00 2001 From: Dan Le Date: Wed, 20 Mar 2019 14:49:29 -0700 Subject: [PATCH 46/87] reservations does not work --- migrations/versions/5f81300e98dd_.py | 36 +++++++++++++++ migrations/versions/69799b785e40_.py | 30 +++++++++++++ migrations/versions/e253ee37986d_.py | 30 +++++++++++++ src/forms.py | 5 +++ src/models.py | 19 ++++++-- src/models_reports.py | 14 +++--- src/routes.py | 28 +++++++++--- src/static/css/style.css | 3 +- src/templates/auth/login.1.html | 15 +++++++ src/templates/auth/reservations.html | 40 +++++++++++++++++ src/templates/base.html | 6 ++- src/templates/order.html | 2 +- src/tests/routes_test.py | 67 ++++++++++++++++++++++++++++ 13 files changed, 274 insertions(+), 21 deletions(-) create mode 100644 migrations/versions/5f81300e98dd_.py create mode 100644 migrations/versions/69799b785e40_.py create mode 100644 migrations/versions/e253ee37986d_.py create mode 100644 src/templates/auth/login.1.html create mode 100644 src/templates/auth/reservations.html diff --git a/migrations/versions/5f81300e98dd_.py b/migrations/versions/5f81300e98dd_.py new file mode 100644 index 0000000..aa22488 --- /dev/null +++ b/migrations/versions/5f81300e98dd_.py @@ -0,0 +1,36 @@ +"""empty message + +Revision ID: 5f81300e98dd +Revises: e3c38d00d77e +Create Date: 2019-03-20 13:30:49.392975 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '5f81300e98dd' +down_revision = 'e3c38d00d77e' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('reservations', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('date', sa.String(length=32), nullable=True), + sa.Column('time', sa.String(length=32), nullable=True), + sa.Column('party', sa.String(length=32), nullable=True), + sa.Column('cust_id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['cust_id'], ['customers.id'], onupdate='CASCADE', ondelete='CASCADE'), + sa.PrimaryKeyConstraint('id', 'cust_id') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('reservations') + # ### end Alembic commands ### diff --git a/migrations/versions/69799b785e40_.py b/migrations/versions/69799b785e40_.py new file mode 100644 index 0000000..9d84b55 --- /dev/null +++ b/migrations/versions/69799b785e40_.py @@ -0,0 +1,30 @@ +"""empty message + +Revision ID: 69799b785e40 +Revises: 5f81300e98dd +Create Date: 2019-03-20 13:38:15.068104 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '69799b785e40' +down_revision = '5f81300e98dd' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint('reservations_cust_id_fkey', 'reservations', type_='foreignkey') + op.drop_column('reservations', 'cust_id') + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('reservations', sa.Column('cust_id', sa.INTEGER(), autoincrement=False, nullable=False)) + op.create_foreign_key('reservations_cust_id_fkey', 'reservations', 'customers', ['cust_id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') + # ### end Alembic commands ### diff --git a/migrations/versions/e253ee37986d_.py b/migrations/versions/e253ee37986d_.py new file mode 100644 index 0000000..df5e39b --- /dev/null +++ b/migrations/versions/e253ee37986d_.py @@ -0,0 +1,30 @@ +"""empty message + +Revision ID: e253ee37986d +Revises: 69799b785e40 +Create Date: 2019-03-20 13:44:49.615143 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'e253ee37986d' +down_revision = '69799b785e40' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('reservations', sa.Column('cust_id', sa.Integer(), nullable=True)) + op.create_foreign_key(None, 'reservations', 'customers', ['cust_id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, 'reservations', type_='foreignkey') + op.drop_column('reservations', 'cust_id') + # ### end Alembic commands ### diff --git a/src/forms.py b/src/forms.py index c9268ae..ff06cf2 100644 --- a/src/forms.py +++ b/src/forms.py @@ -23,6 +23,10 @@ class AddItemsForm(FlaskForm): cost = StringField('cost', validators=[DataRequired()]) count = StringField('count', validators=[DataRequired()]) +class ReservationForm(FlaskForm): + date = StringField('date', validators=[DataRequired()]) + time = StringField('time', validators=[DataRequired()]) + party = StringField('party', validators=[DataRequired()]) class OrderForm(FlaskForm): # items = SelectField('items') @@ -60,3 +64,4 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.users.choices = [(str(user.id), user.name) for user in User.query.all()] + diff --git a/src/models.py b/src/models.py index abbbdf5..418fa16 100644 --- a/src/models.py +++ b/src/models.py @@ -51,19 +51,32 @@ def __init__(self, name, email, password): class Customer(User): __tablename__ = 'customers' - + id = db.Column(db.Integer, primary_key=True) phone = db.Column(db.String(32)) - id = db.Column( + user_id = db.Column( db.ForeignKey('users.id', ondelete='CASCADE', onupdate='CASCADE'), - primary_key=True ) orders = db.relationship('Order', back_populates='customer') + reservations = db.relationship('Reservation', back_populates='customer') __mapper_args__ = {'polymorphic_identity': 'customer'} def __init__(self, name, email, password, phone): User.__init__(self, name, email, password) self.phone = phone +class Reservation(db.Model): + __tablename__= 'reservations' + id = db.Column(db.Integer, primary_key=True) + date = db.Column(db.String(32)) + time = db.Column(db.String(32)) + party = db.Column(db.String(32)) + cust_id = db.Column( + db.ForeignKey('customers.id',ondelete='CASCADE', onupdate='CASCADE') + ) + customer = db.relationship( + 'Customer', + back_populates='reservations' + ) class Employee(User): __tablename__ = 'employees' diff --git a/src/models_reports.py b/src/models_reports.py index 6be9acf..a745f4c 100644 --- a/src/models_reports.py +++ b/src/models_reports.py @@ -1,10 +1,10 @@ -from flask_sqlalchemy import SQLAlchemy -from sqlalchemy import func -from .models import db, User, Customer, Manager, Employee, Order, OrderItems, Item +# from flask_sqlalchemy import SQLAlchemy +# from sqlalchemy import func +# from .models import db, User, Customer, Manager, Employee, Order, OrderItems, Item -class CustomerOrders(): +# class CustomerOrders(): - def __init__(self, cust_id): - orders = Order.query.filter_by(cust_id=cust_id).all() - self.test = orders[0].items[0].name +# def __init__(self, cust_id): +# orders = Order.query.filter_by(cust_id=cust_id).all() +# self.test = orders[0].items[0].name diff --git a/src/routes.py b/src/routes.py index fd9d2eb..9985a76 100644 --- a/src/routes.py +++ b/src/routes.py @@ -1,9 +1,9 @@ from flask import render_template, redirect, url_for, request, flash, session, g from sqlalchemy.exc import DBAPIError, IntegrityError from . import app -from .forms import RegisterForm, AddItemsForm, OrderForm, UpdateItemsForm, DeleteForm, DeleteUserForm -from .models import db, User, Manager, Customer, Item, Order -from .models_reports import CustomerOrders +from .forms import RegisterForm, AddItemsForm, OrderForm, UpdateItemsForm, DeleteForm, DeleteUserForm, ReservationForm +from .models import db, User, Manager, Customer, Item, Order, Reservation +# from .models_reports import CustomerOrders from .auth import login_required, authorization_required import requests import json @@ -12,8 +12,8 @@ @app.route('/') def home(): - customer_orders = CustomerOrders(3) - print(customer_orders.test) + # customer_orders = CustomerOrders(3) + # print(customer_orders.test) return render_template('home.html'), 200 @app.route('/about') @@ -107,9 +107,23 @@ def all_users(): users = User.query.all() return render_template('/auth/manager/all_users.html', users=users, form=form) -@app.route('/reservation') +@app.route('/reservation',methods=['GET','POST']) +@authorization_required(roles=['customer']) def reservation(): - pass + form = ReservationForm() + if form.validate_on_submit(): + # return('g user' + str(g.user.name)) + reservation = Reservation( + date = form.data['date'], + time = form.data['time'], + party = form.data['party'], + customer = Customer.query.filter_by(id=g.user.id).first() + ) + db.session.add(reservation) + db.session.commit() + return redirect(url_for('.reservation')) + reservations = Reservation.query.filter_by(id=g.user.id) + return render_template('/auth/reservations.html', form=form, reservations=reservations) @app.route('/employee') diff --git a/src/static/css/style.css b/src/static/css/style.css index 629b3be..3391928 100644 --- a/src/static/css/style.css +++ b/src/static/css/style.css @@ -2,7 +2,6 @@ body{ margin-left: 5%; } -#pycafe{ .order-select { cursor: pointer; @@ -25,4 +24,4 @@ li { } h1{ margin-top:5%; -} \ No newline at end of file +} diff --git a/src/templates/auth/login.1.html b/src/templates/auth/login.1.html new file mode 100644 index 0000000..3b3d58d --- /dev/null +++ b/src/templates/auth/login.1.html @@ -0,0 +1,15 @@ +{% extends "base.html" %} + +{% block title %} +Logout Page +{% endblock title %} + + +{% block content %} +
    +

    Login:

    +
    + +
    +
    +{% endblock content %} \ No newline at end of file diff --git a/src/templates/auth/reservations.html b/src/templates/auth/reservations.html new file mode 100644 index 0000000..77a4d44 --- /dev/null +++ b/src/templates/auth/reservations.html @@ -0,0 +1,40 @@ +{% extends "base.html" %} + +{% block title %} +Make a Reservation +{% endblock title %} + + +{% block content %} +
    + + + + + + + + + + {% for reservation in reservations %} + + + + + + {% endfor %} + +
    DateTimeParty
    {{ reservation.date }} {{ reservation.time }} {{ reservation.party }}
    + {% if form.errors%} + {{form.errors}} + {% endif %} +
    + {{ form.hidden_tag() }} + {{ form.date.label }}{{ form.date(size = 32)}} + {{ form.time.label }}{{ form.time (size = 32)}} + {{ form.party.label }}{{ form.party(size = 32)}} + +
    +
    + +{% endblock content %} \ No newline at end of file diff --git a/src/templates/base.html b/src/templates/base.html index 4a7714d..9b23ae5 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -5,7 +5,7 @@ - + @@ -20,7 +20,11 @@

    Py Café

  • Delete Item
  • Update Item
  • Users
  • +
  • Login
  • +
  • Logout
  • About Us
  • +
  • Reservations
  • + {% if g.user %}

    Welcome, {{ g.user['name'] }}

    diff --git a/src/templates/order.html b/src/templates/order.html index 817f88f..af30566 100644 --- a/src/templates/order.html +++ b/src/templates/order.html @@ -5,7 +5,7 @@ {% endblock title %} {% block content %}
    -

    Py Cafe Menu

    +

    Py Cafe Menu

    diff --git a/src/tests/routes_test.py b/src/tests/routes_test.py index e69de29..70ff38a 100644 --- a/src/tests/routes_test.py +++ b/src/tests/routes_test.py @@ -0,0 +1,67 @@ + +class TestClass(): + @classmethod + def setup_class(cls): + print('setup_class') + @classmethod + def teardown_class(cls): + pass + + def test_home_route(self, client): + """ + test home route + """ + rv = client.get('/') + assert rv.status_code == 200 + assert b'

    Home Page

    ' in rv.data + + def test_login_route(self, client): + """ + test login route + """ + rv = client.get('/login') + assert rv.status_code == 200 + assert b'

    Login:

    ' in rv.data + + def test_register_route(self,client): + """ + test register route + """ + rv = client.get('/register') + assert rv.status_code == 200 + assert b'

    Register:

    ' in rv.data + + def test_order_route(self,client, customer): + """ + test order route + """ + rv = client.post( + '/order', + data = {'email':customer.email, 'password':customer.password}, + follow_redirects = True, + ) + assert rv.status_code == 200 + + def test_add_route(self,client): + """ + test add item route + """ + rv = client.get('/item/add') + assert rv.status_code == 200 + assert b'

    Add Item:

    ' in rv.data + + def test_delete_route(self,client): + """ + test add item route + """ + rv = client.get('/item/delete') + assert rv.status_code == 200 + assert b'

    Delete Item:

    ' in rv.data + + def test_users_route(self,client,manager): + """ + test all users route + """ + rv = client.get('/auth/manager/all_users') + assert rv.status_code == 200 + assert b'' in rv.data \ No newline at end of file From 1f1b48e685163ed151d48efd93395aedb6ed348f Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Wed, 20 Mar 2019 15:23:58 -0700 Subject: [PATCH 47/87] created reports index page --- src/forms.py | 10 ++-------- src/routes.py | 7 +++++-- src/templates/base.html | 3 +-- src/templates/{auth => }/manager/by_item.html | 2 +- src/templates/manager/report_index.html | 19 +++++++++++++++++++ 5 files changed, 28 insertions(+), 13 deletions(-) rename src/templates/{auth => }/manager/by_item.html (97%) create mode 100644 src/templates/manager/report_index.html diff --git a/src/forms.py b/src/forms.py index 269d2cb..8f3109c 100644 --- a/src/forms.py +++ b/src/forms.py @@ -1,5 +1,5 @@ from flask_wtf import FlaskForm -from wtforms import StringField, SelectField, PasswordField +from wtforms import StringField, SelectField, PasswordField, HiddenField from wtforms.validators import DataRequired from .models import Manager, Customer, Employee, Order, OrderItems, Item, User from flask import g @@ -25,15 +25,9 @@ class AddItemsForm(FlaskForm): class OrderForm(FlaskForm): - # items = SelectField('items') - item_ids = StringField('item_ids', validators=[DataRequired()], render_kw={ + item_ids = HiddenField('item_ids', validators=[DataRequired()], render_kw={ "v-model": "orderItemIds"}) - # def __init__(self, *args, **kwargs): - # super().__init__(*args, **kwargs) - # self.items.choices = [(str(item.id), item.name) - # for item in Item.query.all()] - class UpdateItemsForm(FlaskForm): items = SelectField('items') diff --git a/src/routes.py b/src/routes.py index 0859cee..08d0b26 100644 --- a/src/routes.py +++ b/src/routes.py @@ -13,8 +13,6 @@ @app.route('/') def home(): - report = CustomerOrders(3) - report.customer_totals() return render_template('home.html'), 200 @@ -138,6 +136,11 @@ def create_employee(): pass +@app.route('/manager', methods=['GET']) +def reports(): + return render_template('/manager/report_index.html') + + @app.route('/manager/by_customer', methods=['GET', 'POST']) def by_customer(): form = DeleteUserForm() diff --git a/src/templates/base.html b/src/templates/base.html index b9d4353..b0df9c0 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -28,8 +28,7 @@
    Welcome, {{ g.user['name'] }}
    {% endif %} {% if g.user and g.user.type in ('employee', 'manager') %}
  • Items
  • -
  • Sales by Customer
  • -
  • Sales by Item
  • +
  • Reports
  • {% endif %} {% if g.user and g.user.type in ('manager') %}
  • Users
  • diff --git a/src/templates/auth/manager/by_item.html b/src/templates/manager/by_item.html similarity index 97% rename from src/templates/auth/manager/by_item.html rename to src/templates/manager/by_item.html index d7579bc..2bcbf06 100644 --- a/src/templates/auth/manager/by_item.html +++ b/src/templates/manager/by_item.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block title %} -Add Items +Report By Items {% endblock title %} diff --git a/src/templates/manager/report_index.html b/src/templates/manager/report_index.html new file mode 100644 index 0000000..36f3482 --- /dev/null +++ b/src/templates/manager/report_index.html @@ -0,0 +1,19 @@ +{% extends "base.html" %} + +{% block title %} +Reports +{% endblock title %} + + +{% block content %} +
    +

    Reports

    + +

    Total number of each item sold, by customer

    + Go + +

    Total customer sales, by item

    + Go +
    + +{% endblock content %} \ No newline at end of file From 33faf59f9b9132e0a8ac1fc479bad321c964f166 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Wed, 20 Mar 2019 15:36:47 -0700 Subject: [PATCH 48/87] can create employee users --- src/forms.py | 9 ++++++++- src/routes.py | 20 ++++++++++++++++---- src/templates/user/create_employee.html | 20 ++++++++++++++++++++ 3 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 src/templates/user/create_employee.html diff --git a/src/forms.py b/src/forms.py index 8f3109c..459fa4e 100644 --- a/src/forms.py +++ b/src/forms.py @@ -68,4 +68,11 @@ def __init__(self, *args, **kwargs): class ManagerForm(FlaskForm): name = StringField('name', validators=[DataRequired()]) email = StringField('email', validators=[DataRequired()]) - password = StringField('password', validators=[DataRequired()]) + password = PasswordField('password', validators=[DataRequired()]) + + +class EmployeeForm(FlaskForm): + name = StringField('name', validators=[DataRequired()]) + email = StringField('email', validators=[DataRequired()]) + password = PasswordField('password', validators=[DataRequired()]) + pay_rate = StringField('pay rate') diff --git a/src/routes.py b/src/routes.py index 08d0b26..bb89632 100644 --- a/src/routes.py +++ b/src/routes.py @@ -2,8 +2,8 @@ from sqlalchemy.exc import DBAPIError, IntegrityError from . import app from .forms import RegisterForm, AddItemsForm, OrderForm, UpdateItemsForm -from .forms import DeleteForm, DeleteUserForm, ManagerForm, ItemForm -from .models import db, User, Manager, Customer, Item, Order +from .forms import DeleteForm, DeleteUserForm, ManagerForm, ItemForm, EmployeeForm +from .models import db, User, Manager, Customer, Employee, Item, Order from .models_reports import CustomerOrders from .auth import login_required, authorization_required import requests @@ -131,9 +131,21 @@ def create_manager(): return render_template('/user/create_manager.html', form=form) -@app.route('/user/manager', methods=['GET', 'POST']) +@app.route('/user/employee', methods=['GET', 'POST']) def create_employee(): - pass + form = EmployeeForm() + if form.validate_on_submit(): + employee = Employee( + name=form.data['name'], + email=form.data['email'], + password=form.data['password'], + pay_rate=form.data['pay_rate'] + ) + db.session.add(employee) + db.session.commit() + return redirect(url_for('.all_users')) + + return render_template('/user/create_employee.html', form=form) @app.route('/manager', methods=['GET']) diff --git a/src/templates/user/create_employee.html b/src/templates/user/create_employee.html new file mode 100644 index 0000000..55213b8 --- /dev/null +++ b/src/templates/user/create_employee.html @@ -0,0 +1,20 @@ +{% extends 'base.html' %} + +{% block title%} +Create Employee +{% endblock title%} + +{% block content %} +
    +

    Create Employee

    + + + {{ form.hidden_tag() }} + {{ form.name.label }}{{ form.name()}} + {{ form.email.label }}{{ form.email()}} + {{ form.pay_rate.label }}{{ form.pay_rate()}} + {{ form.password.label }}{{ form.password()}} + + +
    +{% endblock content %} \ No newline at end of file From fdc7735ece68cc7621b9e50e2facea5ff1817035 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Wed, 20 Mar 2019 15:58:36 -0700 Subject: [PATCH 49/87] mobile CSS --- src/static/css/base.css | 2 +- src/static/css/layout.css | 27 +++++++++++++++++++++++++++ src/templates/user/all_users.html | 4 ++-- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/static/css/base.css b/src/static/css/base.css index f878140..45245db 100644 --- a/src/static/css/base.css +++ b/src/static/css/base.css @@ -41,5 +41,5 @@ table tr:nth-child(even) td { table tr td { padding: 10px 18px; text-align: left; - border-bottom: 1px solid #E1E1E1; } + border-bottom: 1px solid #E1E1E1; } \ No newline at end of file diff --git a/src/static/css/layout.css b/src/static/css/layout.css index ca32be9..1f6cc3b 100644 --- a/src/static/css/layout.css +++ b/src/static/css/layout.css @@ -1,3 +1,5 @@ +/* Inspired by bitsofco.de/holy-grail-layout-css-grid */ + header { grid-area: header; } nav { grid-area: nav; } main { grid-area: main; } @@ -18,4 +20,29 @@ header h5 { } main { padding-top: 14px; +} + +@media screen and (max-width: 800px) { + body { + grid-template-areas: "header" + "nav" + "main" + "footer"; + grid-template-columns: 100%; + grid-template-rows: 100px 50px 1fr 20px; + } + h1 { + font-size: 2.8em; + } + h4 { + font-size: 1.6em; + } + h5 { + font-size: 1.2em; + } + nav ul li a { + float: left; + font-size: .9em; + padding: 6px; + } } \ No newline at end of file diff --git a/src/templates/user/all_users.html b/src/templates/user/all_users.html index bc48971..bcded03 100644 --- a/src/templates/user/all_users.html +++ b/src/templates/user/all_users.html @@ -13,8 +13,8 @@

    Manage Users

    - - + + From 6003240cc8a492eb78b4309ecd2192cb12d6df16 Mon Sep 17 00:00:00 2001 From: Dan Le Date: Wed, 20 Mar 2019 16:00:17 -0700 Subject: [PATCH 50/87] reservation works --- migrations/versions/339748f86335_.py | 32 ++++++++++++++++++++++++++++ src/models.py | 15 +++++++------ src/templates/auth/reservations.html | 6 +++--- 3 files changed, 44 insertions(+), 9 deletions(-) create mode 100644 migrations/versions/339748f86335_.py diff --git a/migrations/versions/339748f86335_.py b/migrations/versions/339748f86335_.py new file mode 100644 index 0000000..2dbfe95 --- /dev/null +++ b/migrations/versions/339748f86335_.py @@ -0,0 +1,32 @@ +"""empty message + +Revision ID: 339748f86335 +Revises: e253ee37986d +Create Date: 2019-03-20 15:36:15.900040 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '339748f86335' +down_revision = 'e253ee37986d' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint('reservations_cust_id_fkey', 'reservations', type_='foreignkey') + op.create_foreign_key(None, 'reservations', 'customers', ['id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') + op.drop_column('reservations', 'cust_id') + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('reservations', sa.Column('cust_id', sa.INTEGER(), autoincrement=False, nullable=True)) + op.drop_constraint(None, 'reservations', type_='foreignkey') + op.create_foreign_key('reservations_cust_id_fkey', 'reservations', 'customers', ['cust_id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') + # ### end Alembic commands ### diff --git a/src/models.py b/src/models.py index 418fa16..7b8b436 100644 --- a/src/models.py +++ b/src/models.py @@ -51,10 +51,11 @@ def __init__(self, name, email, password): class Customer(User): __tablename__ = 'customers' - id = db.Column(db.Integer, primary_key=True) + phone = db.Column(db.String(32)) - user_id = db.Column( + id = db.Column( db.ForeignKey('users.id', ondelete='CASCADE', onupdate='CASCADE'), + primary_key=True ) orders = db.relationship('Order', back_populates='customer') reservations = db.relationship('Reservation', back_populates='customer') @@ -66,13 +67,15 @@ def __init__(self, name, email, password, phone): class Reservation(db.Model): __tablename__= 'reservations' - id = db.Column(db.Integer, primary_key=True) + id = db.Column( + db.ForeignKey('customers.id',ondelete='CASCADE', onupdate='CASCADE'), + primary_key=True + ) + # id = db.Column(db.Integer, primary_key=True) date = db.Column(db.String(32)) time = db.Column(db.String(32)) party = db.Column(db.String(32)) - cust_id = db.Column( - db.ForeignKey('customers.id',ondelete='CASCADE', onupdate='CASCADE') - ) + customer = db.relationship( 'Customer', back_populates='reservations' diff --git a/src/templates/auth/reservations.html b/src/templates/auth/reservations.html index 77a4d44..e2b70dc 100644 --- a/src/templates/auth/reservations.html +++ b/src/templates/auth/reservations.html @@ -18,9 +18,9 @@ {% for reservation in reservations %} - - - + + + {% endfor %} From 868d7f4b746700fe68c92ffb27b9a617fa8aa498 Mon Sep 17 00:00:00 2001 From: danhuyle508 <38339026+danhuyle508@users.noreply.github.com> Date: Wed, 20 Mar 2019 16:15:33 -0700 Subject: [PATCH 51/87] Update routes.py --- src/routes.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/routes.py b/src/routes.py index 11d1e59..9408e86 100644 --- a/src/routes.py +++ b/src/routes.py @@ -202,6 +202,3 @@ def by_item(): return render_template('/manager/by_item.html', items=items, form=form, content=None) -@app.route('/reservation') -def reservation(): - pass From 79fbbfc071bdc1179f5b4972f3333402d97281c4 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 01:36:56 -0700 Subject: [PATCH 52/87] wed night fix & refactor --- migrations/versions/cfb635d9b172_.py | 32 +++++++++ src/auth.py | 1 - src/forms.py | 20 +++++- src/models.py | 33 ++++----- src/models_reports.py | 20 +++--- src/routes.py | 49 ++++++++----- src/static/css/base.css | 2 +- src/static/css/module.css | 51 +++++++++++-- src/static/js/app.js | 14 ++-- src/templates/order.html | 104 ++++++++++++++------------- 10 files changed, 216 insertions(+), 110 deletions(-) create mode 100644 migrations/versions/cfb635d9b172_.py diff --git a/migrations/versions/cfb635d9b172_.py b/migrations/versions/cfb635d9b172_.py new file mode 100644 index 0000000..9eeffe7 --- /dev/null +++ b/migrations/versions/cfb635d9b172_.py @@ -0,0 +1,32 @@ +"""empty message + +Revision ID: cfb635d9b172 +Revises: 339748f86335 +Create Date: 2019-03-21 00:44:50.381285 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'cfb635d9b172' +down_revision = '339748f86335' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('reservations', sa.Column('cust_id', sa.Integer(), nullable=True)) + op.drop_constraint('reservations_id_fkey', 'reservations', type_='foreignkey') + op.create_foreign_key(None, 'reservations', 'customers', ['cust_id'], ['id'], ondelete='CASCADE') + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(None, 'reservations', type_='foreignkey') + op.create_foreign_key('reservations_id_fkey', 'reservations', 'customers', ['id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') + op.drop_column('reservations', 'cust_id') + # ### end Alembic commands ### diff --git a/src/auth.py b/src/auth.py index 714d651..d761045 100644 --- a/src/auth.py +++ b/src/auth.py @@ -79,5 +79,4 @@ def login(): @login_required def logout(): session.clear() - flash('Thank you, bye for now') return redirect(url_for('.login')) diff --git a/src/forms.py b/src/forms.py index 13435d8..f182c7e 100644 --- a/src/forms.py +++ b/src/forms.py @@ -23,14 +23,25 @@ class AddItemsForm(FlaskForm): cost = StringField('cost', validators=[DataRequired()]) count = StringField('count', validators=[DataRequired()]) + class ReservationForm(FlaskForm): date = StringField('date', validators=[DataRequired()]) time = StringField('time', validators=[DataRequired()]) party = StringField('party', validators=[DataRequired()]) + class OrderForm(FlaskForm): item_ids = HiddenField('item_ids', validators=[DataRequired()], render_kw={ "v-model": "orderItemIds"}) + customer = SelectField('customer', default=None) + employee = SelectField('employee', default=None) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.customer.choices = [(str(c.id), c.name) + for c in Customer.query.all()] + self.employee.choices = [(str(e.id), e.name) + for e in Employee.query.all()] class UpdateItemsForm(FlaskForm): @@ -43,13 +54,16 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.items.choices = [(str(item.id), item.name) for item in Item.query.all()] + + class ItemForm(FlaskForm): items = SelectField('items') + def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.items.choices = [(str(item.id), item.name) for item in Item.query.all()] - + class DeleteForm(FlaskForm): items = SelectField('items') @@ -59,7 +73,7 @@ def __init__(self, *args, **kwargs): self.items.choices = [(str(item.id), item.name) for item in Item.query.all()] - + class DeleteUserForm(FlaskForm): users = SelectField('users') @@ -68,7 +82,7 @@ def __init__(self, *args, **kwargs): self.users.choices = [(str(user.id), user.name) for user in User.query.all()] - + class ManagerForm(FlaskForm): name = StringField('name', validators=[DataRequired()]) email = StringField('email', validators=[DataRequired()]) diff --git a/src/models.py b/src/models.py index 7b8b436..9bc3e7a 100644 --- a/src/models.py +++ b/src/models.py @@ -65,21 +65,6 @@ def __init__(self, name, email, password, phone): User.__init__(self, name, email, password) self.phone = phone -class Reservation(db.Model): - __tablename__= 'reservations' - id = db.Column( - db.ForeignKey('customers.id',ondelete='CASCADE', onupdate='CASCADE'), - primary_key=True - ) - # id = db.Column(db.Integer, primary_key=True) - date = db.Column(db.String(32)) - time = db.Column(db.String(32)) - party = db.Column(db.String(32)) - - customer = db.relationship( - 'Customer', - back_populates='reservations' - ) class Employee(User): __tablename__ = 'employees' @@ -97,6 +82,21 @@ def __init__(self, name, email, password, pay_rate): self.pay_rate = pay_rate +class Reservation(db.Model): + __tablename__ = 'reservations' + + id = db.Column(db.Integer, primary_key=True) + cust_id = db.Column(db.ForeignKey('customers.id', ondelete='CASCADE')) + date = db.Column(db.String(32)) + time = db.Column(db.String(32)) + party = db.Column(db.String(32)) + + customer = db.relationship( + 'Customer', + back_populates='reservations' + ) + + class Order(db.Model): __tablename__ = 'orders' @@ -119,12 +119,13 @@ class Order(db.Model): back_populates='orders' ) - def __init__(self, items, customer): + def __init__(self, items, customer, employee): for item in items: item.inventory_count -= 1 db.session.commit() self.items = items self.customer = customer + self.employee = employee class OrderItems(db.Model): diff --git a/src/models_reports.py b/src/models_reports.py index 407c8f3..bf08272 100644 --- a/src/models_reports.py +++ b/src/models_reports.py @@ -6,30 +6,28 @@ class CustomerOrders(): def __init__(self, cust_id): - self.cust_id= cust_id + self.cust_id = cust_id - - def item_totals(self, cust_id): - rtn= [] - order_ids =[] + rtn = [] + order_ids = [] counts = [] - order_items_list =[] - + order_items_list = [] + orders = Order.query.filter_by(cust_id=cust_id).all() for order in orders: order_ids.append(order.id) for i in order_ids: - orderd_items = OrderItems.query.filter_by(order_id= i).all() + orderd_items = OrderItems.query.filter_by(order_id=i).all() for j in orderd_items: order_items_list.append(j.item_id) items = Item.query.all() for item in items: - counts.append((item.name,order_items_list.count(item.id))) + counts.append((item.name, order_items_list.count(item.id))) return counts - + def customer_totals(self, item_id=0): - rtn=[] + rtn = [] SQL = """ select users.name, count(items.id), items.name from users inner join customers on users.id = customers.id diff --git a/src/routes.py b/src/routes.py index 11d1e59..7040e3c 100644 --- a/src/routes.py +++ b/src/routes.py @@ -36,19 +36,36 @@ def customer(): def order(): form = OrderForm() if form.validate_on_submit(): + import pdb; pdb.set_trace() item_ids = form.data['item_ids'].split(',') items = [Item.query.get(i) for i in item_ids] - customer = Customer.query.filter_by(id=g.user.id).first() + + if g.user.type == 'customer': + customer = Customer.query.get(g.user.id) + elif form.data['customer']: + cust_id = form.data['customer'] + customer = Customer.query.get(cust_id) + + if g.user.type == 'employee': + employee = Employee.query.get(g.user.id) + elif form.data['employee']: + empl_id = form.data['employee'] + employee = Employee.query.get(empl_id) order = Order( customer=customer, + employee=employee, items=items ) db.session.add(order) db.session.commit() items = Item.query.all() - return render_template('order.html', items=items, form=form) + return render_template( + 'order.html', + items=items, + form=form + ) @app.route('/item', methods=['GET']) @@ -115,22 +132,21 @@ def all_users(): return render_template('/user/all_users.html', users=users, form=form) -@app.route('/reservation',methods=['GET','POST']) +@app.route('/reservation', methods=['GET', 'POST']) @authorization_required(roles=['customer']) def reservation(): form = ReservationForm() if form.validate_on_submit(): - # return('g user' + str(g.user.name)) reservation = Reservation( - date = form.data['date'], - time = form.data['time'], - party = form.data['party'], - customer = Customer.query.filter_by(id=g.user.id).first() + date=form.data['date'], + time=form.data['time'], + party=form.data['party'], + customer=Customer.query.filter_by(id=g.user.id).first() ) db.session.add(reservation) - db.session.commit() + db.session.commit() return redirect(url_for('.reservation')) - reservations = Reservation.query.filter_by(id=g.user.id) + reservations = Reservation.query.filter_by(id=g.user.id) return render_template('/auth/reservations.html', form=form, reservations=reservations) @@ -185,23 +201,18 @@ def by_customer(): users = User.query.all() return render_template('/manager/by_customer.html', users=users, form=form, content=None) - - -@app.route('/manager/by_item', methods=['GET','POST']) + + +@app.route('/manager/by_item', methods=['GET', 'POST']) def by_item(): form = ItemForm() if form.validate_on_submit(): id = form.data['items'] report = CustomerOrders(id) - content= report.customer_totals(id) + content = report.customer_totals(id) items = Item.query.all() return render_template('/manager/by_item.html', items=items, form=form, content=content) items = Item.query.all() return render_template('/manager/by_item.html', items=items, form=form, content=None) - - -@app.route('/reservation') -def reservation(): - pass diff --git a/src/static/css/base.css b/src/static/css/base.css index 45245db..1a209a3 100644 --- a/src/static/css/base.css +++ b/src/static/css/base.css @@ -39,7 +39,7 @@ table tr:nth-child(even) td { background-color: ivory; } table tr td { - padding: 10px 18px; + padding: 4px 18px; text-align: left; border-bottom: 1px solid #E1E1E1; } \ No newline at end of file diff --git a/src/static/css/module.css b/src/static/css/module.css index 95d96ba..8357b78 100644 --- a/src/static/css/module.css +++ b/src/static/css/module.css @@ -1,13 +1,54 @@ -#items-table td.btn-add { +#orders { + display: grid; + column-gap: 40px; + grid-template-columns: 1fr 1fr; + grid-template-areas: + "items order-items" + "form order-items"; +} +#orders #items-table { + grid-area: items; +} +#orders #order-items-table { + grid-area: order-items; +} +#orders #order-form { + grid-area: form; + display: grid; + column-gap: 10px; + margin-bottom: 0px; + grid-template-columns: 1fr 1fr 1fr; + grid-template-rows: 1fr 3fr; + grid-template-areas: "cl el ." + "ci ei b"; +} +#orders #order-form label[for=customer] { + grid-area: cl; +} +#orders #order-form #customer { + grid-area: ci; +} +#orders #order-form label[for=employee] { + grid-area: el; +} +#orders #order-form #employee { + grid-area: ei; +} +#orders #order-form-btn { + grid-area: b; +} + +#items-table td.btn-add, +#order-items-table td.btn-remove { cursor: pointer; font-weight: bold; - padding: 10px; + padding: 4px 0px; + width: 40px; + font-size: 1.4em; + text-align: center; background-color: springgreen; } #order-items-table td.btn-remove { - cursor: pointer; - font-weight: bold; - padding: 10px; background-color: orangered; } a.button { diff --git a/src/static/js/app.js b/src/static/js/app.js index b6e74fe..cfdc3ea 100644 --- a/src/static/js/app.js +++ b/src/static/js/app.js @@ -6,6 +6,12 @@ const vm = new Vue({ totalPrice: 0 }, methods: { + updateTotalPrice: function() { + this.totalPrice = this.orderItems.reduce((acc, curr) => { + return acc + parseFloat(curr.price); + }, 0); + this.totalPrice = Number((this.totalPrice).toFixed(2)); + }, addToOrder: function(event) { const item_id = event.target.dataset.id; const item_name = event.target.dataset.name; @@ -17,9 +23,7 @@ const vm = new Vue({ } this.orderItems.push(item); this.orderItemIds.push(item_id); - this.totalPrice = this.orderItems.reduce((acc, curr) => { - return acc + parseFloat(curr.price); - }, 0); + this.updateTotalPrice(); }, removeFromOrder: function(event) { const item_id = event.target.dataset.id; @@ -29,9 +33,7 @@ const vm = new Vue({ this.orderItems.splice(i, 1); const j = this.orderItemIds.indexOf(item_id); if (j > -1) this.orderItemIds.splice(j, 1); - this.totalPrice = this.orderItems.reduce((acc, curr) => { - return acc + parseFloat(curr.price); - }, 0); + this.updateTotalPrice(); } }, delimiters: ['[[',']]'] diff --git a/src/templates/order.html b/src/templates/order.html index a6ca4a7..398d2b9 100644 --- a/src/templates/order.html +++ b/src/templates/order.html @@ -4,55 +4,63 @@ {% endblock title %} {% block content %} -
    +

    Py Cafe Menu

    -
    NameName Email RolePhone NumberPay RatePhoneRate
    {{ reservation.date }} {{ reservation.time }} {{ reservation.party }} {{ reservation.date }}{{ reservation.time }}{{ reservation.party }}
    - - - - - - - - {% for item in items %} - - - - - - {% endfor %} - -
    ItemPrice
    {{ item.name }} ${{ item.price }} +
    - - - - - - - - - - - - - - - - - - -
    ItemPrice
    [[ item.name ]]$[[ item.price ]]-
    Total Price:$[[ totalPrice ]]
    -
    - {{ form.hidden_tag() }} - {{ form.item_ids.label }} {{ form.item_ids }} - -
    +
    + + + + + + + + + {% for item in items %} + + + + + + {% endfor %} + +
    ItemPrice
    {{ item.name }} ${{ item.price }} +
    +
    + {{ form.hidden_tag() }} + {{ form.item_ids }} + {% if g.user.type != 'customer' %} + {{ form.customer.label }}{{ form.customer() }} + {% endif %} + {% if g.user.type == 'manager' %} + {{ form.employee.label }}{{ form.employee() }} + {% endif %} + +
    + + + + + + + + + + + + + + + + + + +
    ItemPrice
    [[ item.name ]]$[[ item.price ]]-
    Total Price:$[[ totalPrice ]]
    +
    From 43dc4b969a022b0d96f60a67419f3baed1824eb5 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 09:16:30 -0700 Subject: [PATCH 53/87] orders.cust_id is no longer required --- src/models.py | 2 +- src/routes.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/models.py b/src/models.py index 9bc3e7a..9fbacba 100644 --- a/src/models.py +++ b/src/models.py @@ -102,7 +102,7 @@ class Order(db.Model): id = db.Column(db.Integer, primary_key=True) date_created = db.Column(db.DateTime, default=dt.now()) - cust_id = db.Column(db.ForeignKey('customers.id'), nullable=False) + cust_id = db.Column(db.ForeignKey('customers.id')) empl_id = db.Column(db.ForeignKey('employees.id')) customer = db.relationship( diff --git a/src/routes.py b/src/routes.py index 7040e3c..fd4c986 100644 --- a/src/routes.py +++ b/src/routes.py @@ -36,7 +36,6 @@ def customer(): def order(): form = OrderForm() if form.validate_on_submit(): - import pdb; pdb.set_trace() item_ids = form.data['item_ids'].split(',') items = [Item.query.get(i) for i in item_ids] From ed7f35f716edbdc3c8e85bb548dc9ccc0651d2e3 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 09:17:19 -0700 Subject: [PATCH 54/87] migration --- migrations/versions/f446b9619bae_.py | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 migrations/versions/f446b9619bae_.py diff --git a/migrations/versions/f446b9619bae_.py b/migrations/versions/f446b9619bae_.py new file mode 100644 index 0000000..b16167c --- /dev/null +++ b/migrations/versions/f446b9619bae_.py @@ -0,0 +1,32 @@ +"""empty message + +Revision ID: f446b9619bae +Revises: cfb635d9b172 +Create Date: 2019-03-21 09:16:51.014029 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'f446b9619bae' +down_revision = 'cfb635d9b172' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('orders', 'cust_id', + existing_type=sa.INTEGER(), + nullable=True) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('orders', 'cust_id', + existing_type=sa.INTEGER(), + nullable=False) + # ### end Alembic commands ### From 682e9ca20d33f1be29f948a10d7a02278ba5bb09 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 10:20:21 -0700 Subject: [PATCH 55/87] fixed reservations pkey issue --- migrations/versions/39b79e8b1d05_.py | 28 ++++++++++++++++++++++ migrations/versions/46b05022d86b_.py | 30 +++++++++++++++++++++++ migrations/versions/67b3d9d9b73f_.py | 36 ++++++++++++++++++++++++++++ migrations/versions/75d00484181f_.py | 31 ++++++++++++++++++++++++ 4 files changed, 125 insertions(+) create mode 100644 migrations/versions/39b79e8b1d05_.py create mode 100644 migrations/versions/46b05022d86b_.py create mode 100644 migrations/versions/67b3d9d9b73f_.py create mode 100644 migrations/versions/75d00484181f_.py diff --git a/migrations/versions/39b79e8b1d05_.py b/migrations/versions/39b79e8b1d05_.py new file mode 100644 index 0000000..d16cf23 --- /dev/null +++ b/migrations/versions/39b79e8b1d05_.py @@ -0,0 +1,28 @@ +"""empty message + +Revision ID: 39b79e8b1d05 +Revises: f446b9619bae +Create Date: 2019-03-21 09:37:15.998384 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '39b79e8b1d05' +down_revision = 'f446b9619bae' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('items', sa.Column('active', sa.Boolean(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('items', 'active') + # ### end Alembic commands ### diff --git a/migrations/versions/46b05022d86b_.py b/migrations/versions/46b05022d86b_.py new file mode 100644 index 0000000..51a6134 --- /dev/null +++ b/migrations/versions/46b05022d86b_.py @@ -0,0 +1,30 @@ +"""empty message + +Revision ID: 46b05022d86b +Revises: 75d00484181f +Create Date: 2019-03-21 10:14:53.436271 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '46b05022d86b' +down_revision = '75d00484181f' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('reservations', sa.Column('id', sa.Integer(), nullable=False)) + op.drop_column('reservations', 'res_id') + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('reservations', sa.Column('res_id', sa.INTEGER(), autoincrement=False, nullable=False)) + op.drop_column('reservations', 'id') + # ### end Alembic commands ### diff --git a/migrations/versions/67b3d9d9b73f_.py b/migrations/versions/67b3d9d9b73f_.py new file mode 100644 index 0000000..d6cfb0a --- /dev/null +++ b/migrations/versions/67b3d9d9b73f_.py @@ -0,0 +1,36 @@ +"""empty message + +Revision ID: 67b3d9d9b73f +Revises: 46b05022d86b +Create Date: 2019-03-21 10:17:26.860819 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '67b3d9d9b73f' +down_revision = '46b05022d86b' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('reservations', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('cust_id', sa.Integer(), nullable=True), + sa.Column('date', sa.String(length=32), nullable=True), + sa.Column('time', sa.String(length=32), nullable=True), + sa.Column('party', sa.String(length=32), nullable=True), + sa.ForeignKeyConstraint(['cust_id'], ['customers.id'], ondelete='CASCADE'), + sa.PrimaryKeyConstraint('id') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('reservations') + # ### end Alembic commands ### diff --git a/migrations/versions/75d00484181f_.py b/migrations/versions/75d00484181f_.py new file mode 100644 index 0000000..4ff9e7a --- /dev/null +++ b/migrations/versions/75d00484181f_.py @@ -0,0 +1,31 @@ +"""empty message + +Revision ID: 75d00484181f +Revises: 39b79e8b1d05 +Create Date: 2019-03-21 09:49:26.595037 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '75d00484181f' +down_revision = '39b79e8b1d05' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('reservations', sa.Column('res_id', sa.Integer(), nullable=False)) + op.drop_column('reservations', 'id') + sa.PrimaryKeyConstraint('res_id') + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('reservations', sa.Column('id', sa.INTEGER(), autoincrement=False, nullable=False)) + op.drop_column('reservations', 'res_id') + # ### end Alembic commands ### From 9a0ba15071fba7cf70e1be78e731fe7b98f8a31f Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 10:33:30 -0700 Subject: [PATCH 56/87] items delete issue tentatively fixed --- src/forms.py | 10 +++++----- src/models.py | 1 + src/routes.py | 8 ++++---- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/forms.py b/src/forms.py index f182c7e..0be8a73 100644 --- a/src/forms.py +++ b/src/forms.py @@ -1,6 +1,6 @@ from flask_wtf import FlaskForm from wtforms import StringField, SelectField, PasswordField, HiddenField -from wtforms.validators import DataRequired +from wtforms.validators import DataRequired, Email from .models import Manager, Customer, Employee, Order, OrderItems, Item, User from flask import g @@ -53,7 +53,7 @@ class UpdateItemsForm(FlaskForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.items.choices = [(str(item.id), item.name) - for item in Item.query.all()] + for item in Item.query.filter_by(active=True).all()] class ItemForm(FlaskForm): @@ -62,7 +62,7 @@ class ItemForm(FlaskForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.items.choices = [(str(item.id), item.name) - for item in Item.query.all()] + for item in Item.query.filter_by(active=True).all()] class DeleteForm(FlaskForm): @@ -71,7 +71,7 @@ class DeleteForm(FlaskForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.items.choices = [(str(item.id), item.name) - for item in Item.query.all()] + for item in Item.query.filter_by(active=True).all()] class DeleteUserForm(FlaskForm): @@ -91,6 +91,6 @@ class ManagerForm(FlaskForm): class EmployeeForm(FlaskForm): name = StringField('name', validators=[DataRequired()]) - email = StringField('email', validators=[DataRequired()]) + email = StringField('email', validators=[DataRequired(), Email()]) password = PasswordField('password', validators=[DataRequired()]) pay_rate = StringField('pay rate') diff --git a/src/models.py b/src/models.py index 9fbacba..f22ac16 100644 --- a/src/models.py +++ b/src/models.py @@ -153,6 +153,7 @@ class Item(db.Model): price = db.Column(db.Numeric(10, 2)) cog = db.Column(db.Numeric(10, 2)) inventory_count = db.Column(db.Integer, default=0) + active = db.Column(db.Boolean, default=True) orders = db.relationship( 'Order', diff --git a/src/routes.py b/src/routes.py index 76a4f42..f2fa21d 100644 --- a/src/routes.py +++ b/src/routes.py @@ -70,7 +70,7 @@ def order(): @app.route('/item', methods=['GET']) # @authorization_required(roles=['employee', 'manager']) def all_items(): - items = Item.query.all() + items = Item.query.filter_by(active=True).all() return render_template('items/all_items.html', items=items) @@ -87,7 +87,7 @@ def add_items(): db.session.add(item) db.session.commit() return redirect(url_for('.add_items')) - items = Item.query.all() + items = Item.query.filter_by(active=True).all() return render_template('items/add_items.html', form=form, items=items) @@ -97,7 +97,7 @@ def delete_items(): if form.validate_on_submit(): name = form.data['items'] item = Item.query.filter_by(id=name).first() - db.session.delete(item) + item.active = False db.session.commit() return redirect(url_for('.delete_items')) items = Item.query.all() @@ -114,7 +114,7 @@ def update_items(): item.inventory_count = form.data['count'] db.session.commit() return redirect(url_for('.update_items')) - items = Item.query.all() + items = Item.query.filter_by(active=True).all() return render_template('items/update_items.html', form=form, items=items) From a2f43057508a920832924b188c1761c57b15c407 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 11:08:33 -0700 Subject: [PATCH 57/87] changed items delete to active=False; fixed orders bug --- src/forms.py | 6 +++--- src/models.py | 6 ++++-- src/routes.py | 6 ++++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/forms.py b/src/forms.py index 0be8a73..5deb3c8 100644 --- a/src/forms.py +++ b/src/forms.py @@ -1,6 +1,6 @@ from flask_wtf import FlaskForm from wtforms import StringField, SelectField, PasswordField, HiddenField -from wtforms.validators import DataRequired, Email +from wtforms.validators import DataRequired, Email, Optional from .models import Manager, Customer, Employee, Order, OrderItems, Item, User from flask import g @@ -33,8 +33,8 @@ class ReservationForm(FlaskForm): class OrderForm(FlaskForm): item_ids = HiddenField('item_ids', validators=[DataRequired()], render_kw={ "v-model": "orderItemIds"}) - customer = SelectField('customer', default=None) - employee = SelectField('employee', default=None) + customer = SelectField('customer', validators=[Optional()], default=None) + employee = SelectField('employee', validators=[Optional()], default=None) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/src/models.py b/src/models.py index f22ac16..a1859df 100644 --- a/src/models.py +++ b/src/models.py @@ -124,8 +124,10 @@ def __init__(self, items, customer, employee): item.inventory_count -= 1 db.session.commit() self.items = items - self.customer = customer - self.employee = employee + if customer: + self.customer = customer + if employee: + self.employee = employee class OrderItems(db.Model): diff --git a/src/routes.py b/src/routes.py index f2fa21d..bf28f84 100644 --- a/src/routes.py +++ b/src/routes.py @@ -39,15 +39,17 @@ def order(): item_ids = form.data['item_ids'].split(',') items = [Item.query.get(i) for i in item_ids] + customer = None if g.user.type == 'customer': customer = Customer.query.get(g.user.id) - elif form.data['customer']: + elif form.data['customer'] != 'None': cust_id = form.data['customer'] customer = Customer.query.get(cust_id) + employee = None if g.user.type == 'employee': employee = Employee.query.get(g.user.id) - elif form.data['employee']: + elif form.data['employee'] != 'None': empl_id = form.data['employee'] employee = Employee.query.get(empl_id) From 489df1e1af58f18fb311c2b9cb7874172aab2f98 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 11:25:31 -0700 Subject: [PATCH 58/87] bug fix --- src/forms.py | 4 ++-- src/routes.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/forms.py b/src/forms.py index 5deb3c8..8ef9ad6 100644 --- a/src/forms.py +++ b/src/forms.py @@ -56,13 +56,13 @@ def __init__(self, *args, **kwargs): for item in Item.query.filter_by(active=True).all()] -class ItemForm(FlaskForm): +class ItemReportForm(FlaskForm): items = SelectField('items') def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.items.choices = [(str(item.id), item.name) - for item in Item.query.filter_by(active=True).all()] + for item in Item.query.all()] class DeleteForm(FlaskForm): diff --git a/src/routes.py b/src/routes.py index bf28f84..973f364 100644 --- a/src/routes.py +++ b/src/routes.py @@ -2,7 +2,7 @@ from sqlalchemy.exc import DBAPIError, IntegrityError from . import app from .forms import RegisterForm, AddItemsForm, OrderForm, UpdateItemsForm, ReservationForm -from .forms import DeleteForm, DeleteUserForm, ManagerForm, ItemForm, EmployeeForm +from .forms import DeleteForm, DeleteUserForm, ManagerForm, ItemReportForm, EmployeeForm from .models import db, User, Manager, Customer, Employee, Item, Order, Reservation from .models_reports import CustomerOrders from .auth import login_required, authorization_required @@ -101,7 +101,7 @@ def delete_items(): item = Item.query.filter_by(id=name).first() item.active = False db.session.commit() - return redirect(url_for('.delete_items')) + return redirect(url_for('.all_items')) items = Item.query.all() return render_template('items/delete_items.html', form=form, items=items) @@ -206,7 +206,7 @@ def by_customer(): @app.route('/manager/by_item', methods=['GET', 'POST']) def by_item(): - form = ItemForm() + form = ItemReportForm() if form.validate_on_submit(): id = form.data['items'] report = CustomerOrders(id) From 6fc3fd754ef066fbba2d5b5b48d0a8f93d8fd069 Mon Sep 17 00:00:00 2001 From: Dan Le Date: Thu, 21 Mar 2019 11:34:19 -0700 Subject: [PATCH 59/87] res bugs fixed and dic strings started --- migrations/versions/0dd416463f04_.py | 36 +++++++++++++++++ src/forms.py | 33 +++++++++++++++ src/routes.py | 60 ++++++++++++++++++++++------ src/templates/auth/reservations.html | 1 + 4 files changed, 117 insertions(+), 13 deletions(-) create mode 100644 migrations/versions/0dd416463f04_.py diff --git a/migrations/versions/0dd416463f04_.py b/migrations/versions/0dd416463f04_.py new file mode 100644 index 0000000..393be6a --- /dev/null +++ b/migrations/versions/0dd416463f04_.py @@ -0,0 +1,36 @@ +"""empty message + +Revision ID: 0dd416463f04 +Revises: 67b3d9d9b73f +Create Date: 2019-03-21 10:43:33.366354 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '0dd416463f04' +down_revision = '67b3d9d9b73f' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('reservations', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('cust_id', sa.Integer(), nullable=True), + sa.Column('date', sa.String(length=32), nullable=True), + sa.Column('time', sa.String(length=32), nullable=True), + sa.Column('party', sa.String(length=32), nullable=True), + sa.ForeignKeyConstraint(['cust_id'], ['customers.id'], ondelete='CASCADE'), + sa.PrimaryKeyConstraint('id') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('reservations') + # ### end Alembic commands ### diff --git a/src/forms.py b/src/forms.py index f182c7e..c8c1b06 100644 --- a/src/forms.py +++ b/src/forms.py @@ -6,6 +6,9 @@ class RegisterForm(FlaskForm): + """ + Registration form + """ name = StringField('name', validators=[DataRequired()]) email = StringField('email', validators=[DataRequired()]) phone = StringField('phone', validators=[DataRequired()]) @@ -13,11 +16,17 @@ class RegisterForm(FlaskForm): class AuthForm(FlaskForm): + """ + login authentication form + """ email = StringField('email', validators=[DataRequired()]) password = PasswordField('password', validators=[DataRequired()]) class AddItemsForm(FlaskForm): + """ + form to add items + """ name = StringField('name', validators=[DataRequired()]) price = StringField('price', validators=[DataRequired()]) cost = StringField('cost', validators=[DataRequired()]) @@ -25,12 +34,18 @@ class AddItemsForm(FlaskForm): class ReservationForm(FlaskForm): + """ + reservations form + """ date = StringField('date', validators=[DataRequired()]) time = StringField('time', validators=[DataRequired()]) party = StringField('party', validators=[DataRequired()]) class OrderForm(FlaskForm): + """ + order form + """ item_ids = HiddenField('item_ids', validators=[DataRequired()], render_kw={ "v-model": "orderItemIds"}) customer = SelectField('customer', default=None) @@ -45,6 +60,9 @@ def __init__(self, *args, **kwargs): class UpdateItemsForm(FlaskForm): + """ + update items form + """ items = SelectField('items') price = StringField('price', validators=[DataRequired()]) cost = StringField('cost', validators=[DataRequired()]) @@ -57,6 +75,9 @@ def __init__(self, *args, **kwargs): class ItemForm(FlaskForm): + """ + item form + """ items = SelectField('items') def __init__(self, *args, **kwargs): @@ -66,6 +87,9 @@ def __init__(self, *args, **kwargs): class DeleteForm(FlaskForm): + """ + delete item form + """ items = SelectField('items') def __init__(self, *args, **kwargs): @@ -75,6 +99,9 @@ def __init__(self, *args, **kwargs): class DeleteUserForm(FlaskForm): + """ + delete user form + """ users = SelectField('users') def __init__(self, *args, **kwargs): @@ -84,12 +111,18 @@ def __init__(self, *args, **kwargs): class ManagerForm(FlaskForm): + """ + create manager form + """ name = StringField('name', validators=[DataRequired()]) email = StringField('email', validators=[DataRequired()]) password = PasswordField('password', validators=[DataRequired()]) class EmployeeForm(FlaskForm): + """ + employee form + """ name = StringField('name', validators=[DataRequired()]) email = StringField('email', validators=[DataRequired()]) password = PasswordField('password', validators=[DataRequired()]) diff --git a/src/routes.py b/src/routes.py index 76a4f42..92ad100 100644 --- a/src/routes.py +++ b/src/routes.py @@ -13,27 +13,25 @@ @app.route('/') def home(): + """ + route handler for home + """ return render_template('home.html'), 200 @app.route('/about') def about(): + """ + route handler for the about page + """ return render_template('about_us.html'), 200 - -@app.add_template_global -def get_items(): - return Items.query.all() - - -@app.route('/customer') -def customer(): - pass - - @app.route('/order', methods=['GET', 'POST']) @authorization_required(roles=['customer', 'employee', 'manager']) def order(): + """ + route handler for order + """ form = OrderForm() if form.validate_on_submit(): item_ids = form.data['item_ids'].split(',') @@ -70,12 +68,18 @@ def order(): @app.route('/item', methods=['GET']) # @authorization_required(roles=['employee', 'manager']) def all_items(): + """ + route handler for items to display all items in database + """ items = Item.query.all() return render_template('items/all_items.html', items=items) @app.route('/item/add', methods=['GET', 'POST']) def add_items(): + """ + route handler for add items + """ form = AddItemsForm() if form.validate_on_submit(): item = Item( @@ -93,6 +97,9 @@ def add_items(): @app.route('/item/delete', methods=['GET', 'POST']) # this is a DELETE def delete_items(): + """ + route handler for delete items + """ form = DeleteForm() if form.validate_on_submit(): name = form.data['items'] @@ -106,6 +113,9 @@ def delete_items(): @app.route('/item/update', methods=['GET', 'POST']) # this is a PUT def update_items(): + """ + route handler for update items + """ form = UpdateItemsForm() if form.validate_on_submit(): item = Item.query.get(form.data['items']) @@ -120,6 +130,9 @@ def update_items(): @app.route('/all_users', methods=['GET', 'POST']) def all_users(): + """ + route handler to display all users + """ form = DeleteUserForm() if form.validate_on_submit(): id = form.data['users'] @@ -132,8 +145,11 @@ def all_users(): @app.route('/reservation', methods=['GET', 'POST']) -@authorization_required(roles=['customer']) +@authorization_required(roles=['customer','manager']) def reservation(): + """ + route handler for reservations + """ form = ReservationForm() if form.validate_on_submit(): reservation = Reservation( @@ -145,12 +161,18 @@ def reservation(): db.session.add(reservation) db.session.commit() return redirect(url_for('.reservation')) - reservations = Reservation.query.filter_by(id=g.user.id) + if g.user.type == 'manager': + reservations = Reservation.query.all() + else: + reservations = Reservation.query.filter_by(cust_id=g.user.id).all() return render_template('/auth/reservations.html', form=form, reservations=reservations) @app.route('/user/manager', methods=['GET', 'POST']) def create_manager(): + """ + route handler to create a manager role + """ form = ManagerForm() if form.validate_on_submit(): manager = Manager( @@ -167,6 +189,9 @@ def create_manager(): @app.route('/user/employee', methods=['GET', 'POST']) def create_employee(): + """ + route handler to create an employee role + """ form = EmployeeForm() if form.validate_on_submit(): employee = Employee( @@ -184,11 +209,17 @@ def create_employee(): @app.route('/manager', methods=['GET']) def reports(): + """ + route handler for manager reports + """ return render_template('/manager/report_index.html') @app.route('/manager/by_customer', methods=['GET', 'POST']) def by_customer(): + """ + route handler for tems sold by customer report + """ form = DeleteUserForm() if form.validate_on_submit(): id = form.data['users'] @@ -204,6 +235,9 @@ def by_customer(): @app.route('/manager/by_item', methods=['GET', 'POST']) def by_item(): + """ + route handler for total customer sales by item report + """ form = ItemForm() if form.validate_on_submit(): id = form.data['items'] diff --git a/src/templates/auth/reservations.html b/src/templates/auth/reservations.html index e2b70dc..c6f4635 100644 --- a/src/templates/auth/reservations.html +++ b/src/templates/auth/reservations.html @@ -6,6 +6,7 @@ {% block content %} +

    Your Reservations

    From e21da500217a2a1c7ccba70284152d9b41936fd4 Mon Sep 17 00:00:00 2001 From: Tim Schoen Date: Thu, 21 Mar 2019 11:34:59 -0700 Subject: [PATCH 60/87] time report working --- src/forms.py | 13 +++++-- src/models_reports.py | 16 +++++++++ src/routes.py | 20 ++++++++++- src/templates/manager/by_item.html | 3 +- src/templates/manager/by_time.html | 46 +++++++++++++++++++++++++ src/templates/manager/report_index.html | 3 ++ 6 files changed, 96 insertions(+), 5 deletions(-) create mode 100644 src/templates/manager/by_time.html diff --git a/src/forms.py b/src/forms.py index f182c7e..09884f1 100644 --- a/src/forms.py +++ b/src/forms.py @@ -1,6 +1,8 @@ from flask_wtf import FlaskForm from wtforms import StringField, SelectField, PasswordField, HiddenField from wtforms.validators import DataRequired +from wtforms.fields.html5 import DateField, TimeField +# from wtforms_components import TimeField from .models import Manager, Customer, Employee, Order, OrderItems, Item, User from flask import g @@ -23,10 +25,17 @@ class AddItemsForm(FlaskForm): cost = StringField('cost', validators=[DataRequired()]) count = StringField('count', validators=[DataRequired()]) +class DateTimeForm(FlaskForm): + start_date = DateField('Start Date', format = '%Y-%m-%d') + start_time = TimeField('Start Time') + end_date = DateField('End Date', format = '%Y-%m-%d') + end_time = TimeField('Start Time') + + class ReservationForm(FlaskForm): - date = StringField('date', validators=[DataRequired()]) - time = StringField('time', validators=[DataRequired()]) + date = DateField('date', validators=[DataRequired()]) + time = TimeField('time', validators=[DataRequired()]) party = StringField('party', validators=[DataRequired()]) diff --git a/src/models_reports.py b/src/models_reports.py index bf08272..0f86f65 100644 --- a/src/models_reports.py +++ b/src/models_reports.py @@ -40,3 +40,19 @@ def customer_totals(self, item_id=0): for row in test: rtn.append(row) return rtn + + def time(self,start_time, end_time): + rtn =[] + SQL = """select users.name, orders.date_created, count(items.id), items.name from users +inner join customers on users.id = customers.id +inner join orders on customers.id=orders.cust_id +inner join order_items on orders.id=order_items.order_id +inner join items on order_items.item_id=items.id +where items.name='cheeseburger' +and orders.date_created > '{}' +and orders.date_created < '{}' +group by users.name, orders.date_created, items.name;""".format(start_time,end_time) + test = db.session.execute(SQL) + for row in test: + rtn.append(row) + return rtn diff --git a/src/routes.py b/src/routes.py index 76a4f42..7d0ca07 100644 --- a/src/routes.py +++ b/src/routes.py @@ -2,7 +2,7 @@ from sqlalchemy.exc import DBAPIError, IntegrityError from . import app from .forms import RegisterForm, AddItemsForm, OrderForm, UpdateItemsForm, ReservationForm -from .forms import DeleteForm, DeleteUserForm, ManagerForm, ItemForm, EmployeeForm +from .forms import DeleteForm, DeleteUserForm, ManagerForm, ItemForm, EmployeeForm, DateTimeForm from .models import db, User, Manager, Customer, Employee, Item, Order, Reservation from .models_reports import CustomerOrders from .auth import login_required, authorization_required @@ -201,6 +201,24 @@ def by_customer(): users = User.query.all() return render_template('/manager/by_customer.html', users=users, form=form, content=None) +@app.route('/manager/by_time', methods=['GET', 'POST']) +def by_time(): + form = DateTimeForm() + if form.validate_on_submit(): + start_date = form.data['start_date'] + end_date = form.data['end_date'] + start_time = form.data['start_time'] + end_time = form.data['end_time'] + print('valid') + print((start_date, end_date)) + sql_start_time = (str(start_date)+' ' +str(start_time)) + sql_end_time = (str(end_date)+' ' +str(end_time)) + report = CustomerOrders(id) + content = report.time(sql_start_time,sql_end_time) + return render_template('/manager/by_time.html', form=form, content=content) + + return render_template('/manager/by_time.html', form=form, content=None) + @app.route('/manager/by_item', methods=['GET', 'POST']) def by_item(): diff --git a/src/templates/manager/by_item.html b/src/templates/manager/by_item.html index 2bcbf06..56b6278 100644 --- a/src/templates/manager/by_item.html +++ b/src/templates/manager/by_item.html @@ -29,8 +29,7 @@

    Select Item

    {{ form.hidden_tag() }} {{ form.items.label }}{{ form.items()}} - - + diff --git a/src/templates/manager/by_time.html b/src/templates/manager/by_time.html new file mode 100644 index 0000000..ff188ea --- /dev/null +++ b/src/templates/manager/by_time.html @@ -0,0 +1,46 @@ +{% extends "base.html" %} + +{% block title %} +Report By Time +{% endblock title %} + + +{% block content %} +
    + {% if content != None %} +
    + + + + + + + + + + + {% for item in content %} + + + + + + + + {% endfor %} + +
    UserDate/TimeQuantityItem
    {{ item[0] }}{{ item[1] }}{{ item[2] }}{{ item[3] }}
    + {% endif %} + +

    Select Item

    + +
    + +{% endblock content %} \ No newline at end of file diff --git a/src/templates/manager/report_index.html b/src/templates/manager/report_index.html index 36f3482..8cfd7be 100644 --- a/src/templates/manager/report_index.html +++ b/src/templates/manager/report_index.html @@ -14,6 +14,9 @@

    Reports

    Total customer sales, by item

    Go +

    Total sales, by time

    + Go +
    {% endblock content %} \ No newline at end of file From f64d13d8b5e9bffa203af8c4b442b60c51565d60 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 11:35:54 -0700 Subject: [PATCH 61/87] added route authorization restrictions --- src/routes.py | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/src/routes.py b/src/routes.py index 973f364..73356cb 100644 --- a/src/routes.py +++ b/src/routes.py @@ -26,11 +26,6 @@ def get_items(): return Items.query.all() -@app.route('/customer') -def customer(): - pass - - @app.route('/order', methods=['GET', 'POST']) @authorization_required(roles=['customer', 'employee', 'manager']) def order(): @@ -70,13 +65,14 @@ def order(): @app.route('/item', methods=['GET']) -# @authorization_required(roles=['employee', 'manager']) +@authorization_required(roles=['employee', 'manager']) def all_items(): items = Item.query.filter_by(active=True).all() return render_template('items/all_items.html', items=items) @app.route('/item/add', methods=['GET', 'POST']) +@authorization_required(roles=['employee', 'manager']) def add_items(): form = AddItemsForm() if form.validate_on_submit(): @@ -94,6 +90,7 @@ def add_items(): @app.route('/item/delete', methods=['GET', 'POST']) # this is a DELETE +@authorization_required(roles=['employee', 'manager']) def delete_items(): form = DeleteForm() if form.validate_on_submit(): @@ -107,6 +104,7 @@ def delete_items(): @app.route('/item/update', methods=['GET', 'POST']) # this is a PUT +@authorization_required(roles=['employee', 'manager']) def update_items(): form = UpdateItemsForm() if form.validate_on_submit(): @@ -120,21 +118,8 @@ def update_items(): return render_template('items/update_items.html', form=form, items=items) -@app.route('/all_users', methods=['GET', 'POST']) -def all_users(): - form = DeleteUserForm() - if form.validate_on_submit(): - id = form.data['users'] - user = User.query.filter_by(id=id).first() - db.session.delete(user) - db.session.commit() - return redirect(url_for('.all_users')) - users = User.query.all() - return render_template('/user/all_users.html', users=users, form=form) - - @app.route('/reservation', methods=['GET', 'POST']) -@authorization_required(roles=['customer']) +@authorization_required(roles=['customer', 'employee', 'manager']) def reservation(): form = ReservationForm() if form.validate_on_submit(): @@ -151,7 +136,22 @@ def reservation(): return render_template('/auth/reservations.html', form=form, reservations=reservations) +@app.route('/all_users', methods=['GET', 'POST']) +@authorization_required(roles=['manager']) +def all_users(): + form = DeleteUserForm() + if form.validate_on_submit(): + id = form.data['users'] + user = User.query.filter_by(id=id).first() + db.session.delete(user) + db.session.commit() + return redirect(url_for('.all_users')) + users = User.query.all() + return render_template('/user/all_users.html', users=users, form=form) + + @app.route('/user/manager', methods=['GET', 'POST']) +#@authorization_required(roles=['manager']) def create_manager(): form = ManagerForm() if form.validate_on_submit(): @@ -168,6 +168,7 @@ def create_manager(): @app.route('/user/employee', methods=['GET', 'POST']) +@authorization_required(roles=['manager']) def create_employee(): form = EmployeeForm() if form.validate_on_submit(): @@ -185,11 +186,13 @@ def create_employee(): @app.route('/manager', methods=['GET']) +@authorization_required(roles=['employee', 'manager']) def reports(): return render_template('/manager/report_index.html') @app.route('/manager/by_customer', methods=['GET', 'POST']) +@authorization_required(roles=['employee', 'manager']) def by_customer(): form = DeleteUserForm() if form.validate_on_submit(): @@ -205,6 +208,7 @@ def by_customer(): @app.route('/manager/by_item', methods=['GET', 'POST']) +@authorization_required(roles=['employee', 'manager']) def by_item(): form = ItemReportForm() if form.validate_on_submit(): From 1a067aad39e0dc9d5deff38dc27de6297499640d Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 11:50:35 -0700 Subject: [PATCH 62/87] routes bug fix --- src/routes.py | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/routes.py b/src/routes.py index a1f73ee..cd066e5 100644 --- a/src/routes.py +++ b/src/routes.py @@ -173,20 +173,6 @@ def reservation(): return render_template('/auth/reservations.html', form=form, reservations=reservations) -@app.route('/all_users', methods=['GET', 'POST']) -@authorization_required(roles=['manager']) -def all_users(): - form = DeleteUserForm() - if form.validate_on_submit(): - id = form.data['users'] - user = User.query.filter_by(id=id).first() - db.session.delete(user) - db.session.commit() - return redirect(url_for('.all_users')) - users = User.query.all() - return render_template('/user/all_users.html', users=users, form=form) - - @app.route('/user/manager', methods=['GET', 'POST']) #@authorization_required(roles=['manager']) def create_manager(): From 602fb7e7e6bce8cf483c7b8e3e38b6e0bbc1937d Mon Sep 17 00:00:00 2001 From: Tim Schoen Date: Thu, 21 Mar 2019 12:21:36 -0700 Subject: [PATCH 63/87] time - cheeseburger bug fixed --- migrations/versions/393789f720a7_.py | 34 ++++++++++++++++++++++++++++ src/models_reports.py | 3 +-- 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 migrations/versions/393789f720a7_.py diff --git a/migrations/versions/393789f720a7_.py b/migrations/versions/393789f720a7_.py new file mode 100644 index 0000000..c390f0f --- /dev/null +++ b/migrations/versions/393789f720a7_.py @@ -0,0 +1,34 @@ +"""empty message + +Revision ID: 393789f720a7 +Revises: 0dd416463f04 +Create Date: 2019-03-21 11:55:22.498992 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '393789f720a7' +down_revision = '0dd416463f04' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('items', sa.Column('active', sa.Boolean(), nullable=True)) + op.alter_column('orders', 'cust_id', + existing_type=sa.INTEGER(), + nullable=True) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('orders', 'cust_id', + existing_type=sa.INTEGER(), + nullable=False) + op.drop_column('items', 'active') + # ### end Alembic commands ### diff --git a/src/models_reports.py b/src/models_reports.py index 0f86f65..8376192 100644 --- a/src/models_reports.py +++ b/src/models_reports.py @@ -48,8 +48,7 @@ def time(self,start_time, end_time): inner join orders on customers.id=orders.cust_id inner join order_items on orders.id=order_items.order_id inner join items on order_items.item_id=items.id -where items.name='cheeseburger' -and orders.date_created > '{}' +where orders.date_created > '{}' and orders.date_created < '{}' group by users.name, orders.date_created, items.name;""".format(start_time,end_time) test = db.session.execute(SQL) From 7b9a4c8b3bde63636425d66c8dbe79e8728c2d7c Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 12:36:59 -0700 Subject: [PATCH 64/87] fixed orders bug for real this time --- src/forms.py | 4 ++-- src/routes.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/forms.py b/src/forms.py index 477107d..a49e37c 100644 --- a/src/forms.py +++ b/src/forms.py @@ -61,9 +61,9 @@ class OrderForm(FlaskForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.customer.choices = [(str(c.id), c.name) + self.customer.choices = [('None', '')] + [(str(c.id), c.name) for c in Customer.query.all()] - self.employee.choices = [(str(e.id), e.name) + self.employee.choices = [('None', '')] + [(str(e.id), e.name) for e in Employee.query.all()] diff --git a/src/routes.py b/src/routes.py index cd066e5..6c07cd1 100644 --- a/src/routes.py +++ b/src/routes.py @@ -59,7 +59,7 @@ def order(): db.session.add(order) db.session.commit() - items = Item.query.all() + items = Item.query.filter_by(active=True).all() return render_template( 'order.html', items=items, From 48f15bfc0ad3a30d544ab8bc8a959ab8cd1a8d50 Mon Sep 17 00:00:00 2001 From: Tim Schoen Date: Thu, 21 Mar 2019 12:58:38 -0700 Subject: [PATCH 65/87] about me updated --tim --- .DS_Store | Bin 0 -> 6148 bytes src/.DS_Store | Bin 0 -> 6148 bytes src/static/assets/dan.png | Bin 0 -> 521083 bytes src/static/assets/tim.jpg | Bin 0 -> 244716 bytes src/static/css/layout.css | 1 + src/static/css/module.css | 3 +++ src/static/css/style.css | 1 + src/templates/about_us.html | 8 +++++--- 8 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 .DS_Store create mode 100644 src/.DS_Store create mode 100644 src/static/assets/dan.png create mode 100644 src/static/assets/tim.jpg diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..08a23e170990143d7897fff28a6e517cf0ec4def GIT binary patch literal 6148 zcmeHK%}&BV5Z(pU1!Lr3BFA35aR5;{nKTs--b`xrpaxn?qzQHjEjC&)eGPphpTO5~ zW_K|XIe0QgW|G}+W@l!%^CjIM#u#@dL6fm6V@yCpei8r5-*JUW0f2ReF(X_2%|uzj+{h6tmbjGLx{2{cdNB5+ix}M z*4}P&TDP)x8}-(~bXpeMJI%wB-rd7v_B4Hd(fo3tU&*Gy8N7mG%DZ>R(NIRWFfxmt zMG+DM!~iis3@jA`<`@v`OI0-$OAHVLKVbm(2MZdaZ7|oUwhrj<`i%Y(A`0mEmO!)& z+6Hrt-~r(}6;P*g^Tgmf9mXvaXB*5l>U74{$}o>vdG>hWYIPX5R5;_dM(T+HVql(u zqBg5|{vX3Hv+$8WpF$QfKn(md26(CCb{r_moUPx=!?V_c)`NzEaXBg=pwC?bz`%W^ frkvVup$>7j!CWKGg5xS3kS+p>5bB75Utr(^HV{wJ literal 0 HcmV?d00001 diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9323d10a9ff3589a3bb28cb7020eec47f65d5753 GIT binary patch literal 6148 zcmeHK!A`}#{L%NXPKwBKaRV2lY+#6ks{F9gR?m!zOQh+NL$vs*8T z#@;COmZHh=7a72BS7s55nG3r3{ocLt$dBSiSo$*qun~pvWnQ*Z62NW?jN7h=j`QGG0Wj6l(MC925(?2Z1TaG z1fwvx1OF^%7E4GB5Cg=(3NWCLKC!U^d!;QB1H{137{K$v1Vywo<_hJ}0S#UsalC|x z0ye%S5KWDi##|wcfN+%xs8YFpVsMoXepAO;8gqpzopHG`%%fN4`h~*f>fkqJIOCQ= zYKZ}2V3C2M>Ka)8PriTuFD6ls7$64z6$8A~aXL0^N!Qk;&0(!IL3^Mm7?&%Yr+^_# gF~njiu7OGczljE*r7>3s9uT?+NE)ai27Z-+PmoknWdHyG literal 0 HcmV?d00001 diff --git a/src/static/assets/dan.png b/src/static/assets/dan.png new file mode 100644 index 0000000000000000000000000000000000000000..b85c9a811cf517a9d2bc70dd3e7a544535ffc854 GIT binary patch literal 521083 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

    XXD8oTVU(M-JF^9`|IW9VHJR^9=hn=d#?p8 zz@cs6VD&&B?MMad`Tq03R|-7sqI9L;OSz$)fpfFKRSw6ma0N%o_2lb8;IWRNp?v6q zR&JO2;nNL1c_}97q+U;H(M}oigP)8dz+i#cj;E|4>wbyarRr6iFzFp4ecfR+xTX`_R`8nZIuD?CAp5#ezd!KDq9$YEQ zto_+n6A#J5aDd)uAiwuXBXm%PE$FPxEoV(M{lYk*-x_b= zFZy|@GiCKr6ez7(CaXJodyl5dbtS&6`D>d#ll6iFysop!D>J@4+NB&;w*2j#_P`Gu zx|Qi2>*w4V7njbBNZ8~9k8T{Z=ew6($dA`G}EWw*^y+;nZdyyhw-?6ioNoXP=jU`}cn@|MuH|iw;RcChm(j0LG#5d$H#RW zn|AaT+hsm;mc&Jv;%AeJM;3>zjjd3$IJ9YN_>e@S?jEnjg^hEv9=MyQ1Gr!an$Wn+138{aOl|4QADro+49$zpx0Zi@@;dl4(09c{rka}Itd}e$<(Qq zj+`dYj}DK%3%C=??r9Co0)KOd$TS||o@j!G4<9~?*)9Im*;!6}cT})4zy0RZNS6Y{ z8mzTyF-Oc8W2aIK0M1uy*0sYRkJsi_Y-5L#lPT4wLyt!1VO4W-DreR6Nj(WsKeS_} ze{vi!9NLn((26$oR;zR0XmlFy2*X~d8#|`{$N%_$%76W@|9APxPyV9WR!Olu2`9^`?evI>LP*`sed8zu%kN?tPw z@l@V-LfK%$(%M)Z$WzutPR%iphZTXdb2AV(PM6y1f+Ixm-A#F5v7-QF8u*KJ3M8Y> zn8p3km>TjKGhd-!YJ3~{0GB{$zvazx;NEYS!BUy|9e=y@0q`)pyJiMP3P~)<32#4% zzx@Vp?1Hm=WPmn9wv}GIk}m(OP8@PI8n()aUs*W6S1YdFQ}da!>T=21+zFZUXqUd( ziXDIT$Z;~EZVh&ttjR>3o%6S%JfJxlM!_HhYzW{#hIaa>c4pft&inh%!)h@e?*

    (Uyf+XW`I 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 From 0d12c82dca1fca44f6e40fcbc080b2788abe8eb0 Mon Sep 17 00:00:00 2001 From: Tim Schoen Date: Thu, 21 Mar 2019 13:04:44 -0700 Subject: [PATCH 66/87] DS_Store added to git ignore --- .DS_Store | Bin 6148 -> 0 bytes .gitignore | 1 + src/.DS_Store | Bin 6148 -> 0 bytes 3 files changed, 1 insertion(+) delete mode 100644 .DS_Store delete mode 100644 src/.DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 08a23e170990143d7897fff28a6e517cf0ec4def..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}&BV5Z(pU1!Lr3BFA35aR5;{nKTs--b`xrpaxn?qzQHjEjC&)eGPphpTO5~ zW_K|XIe0QgW|G}+W@l!%^CjIM#u#@dL6fm6V@yCpei8r5-*JUW0f2ReF(X_2%|uzj+{h6tmbjGLx{2{cdNB5+ix}M z*4}P&TDP)x8}-(~bXpeMJI%wB-rd7v_B4Hd(fo3tU&*Gy8N7mG%DZ>R(NIRWFfxmt zMG+DM!~iis3@jA`<`@v`OI0-$OAHVLKVbm(2MZdaZ7|oUwhrj<`i%Y(A`0mEmO!)& z+6Hrt-~r(}6;P*g^Tgmf9mXvaXB*5l>U74{$}o>vdG>hWYIPX5R5;_dM(T+HVql(u zqBg5|{vX3Hv+$8WpF$QfKn(md26(CCb{r_moUPx=!?V_c)`NzEaXBg=pwC?bz`%W^ frkvVup$>7j!CWKGg5xS3kS+p>5bB75Utr(^HV{wJ diff --git a/.gitignore b/.gitignore index ca75994..d3ae56b 100644 --- a/.gitignore +++ b/.gitignore @@ -82,6 +82,7 @@ celerybeat-schedule # SageMath parsed files *.sage.py +.DS_Store # Environments .env diff --git a/src/.DS_Store b/src/.DS_Store deleted file mode 100644 index 9323d10a9ff3589a3bb28cb7020eec47f65d5753..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!A`}#{L%NXPKwBKaRV2lY+#6ks{F9gR?m!zOQh+NL$vs*8T z#@;COmZHh=7a72BS7s55nG3r3{ocLt$dBSiSo$*qun~pvWnQ*Z62NW?jN7h=j`QGG0Wj6l(MC925(?2Z1TaG z1fwvx1OF^%7E4GB5Cg=(3NWCLKC!U^d!;QB1H{137{K$v1Vywo<_hJ}0S#UsalC|x z0ye%S5KWDi##|wcfN+%xs8YFpVsMoXepAO;8gqpzopHG`%%fN4`h~*f>fkqJIOCQ= zYKZ}2V3C2M>Ka)8PriTuFD6ls7$64z6$8A~aXL0^N!Qk;&0(!IL3^Mm7?&%Yr+^_# gF~njiu7OGczljE*r7>3s9uT?+NE)ai27Z-+PmoknWdHyG From 0b4907690eac042ffd8fd7e6cd0d00cc8a9cd74e Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 13:12:58 -0700 Subject: [PATCH 67/87] existing models & routes tests are passing --- src/templates/auth/login.html | 2 +- src/templates/auth/register.html | 2 +- src/templates/base.html | 2 ++ src/templates/home.html | 2 +- src/templates/user/all_users.html | 2 +- src/tests/conftest.py | 44 ++++++++++++++++++++++++++----- src/tests/models_test.py | 7 ++--- src/tests/routes_test.py | 29 ++++++++++---------- 8 files changed, 62 insertions(+), 28 deletions(-) diff --git a/src/templates/auth/login.html b/src/templates/auth/login.html index 83dadb2..15deb49 100644 --- a/src/templates/auth/login.html +++ b/src/templates/auth/login.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block title %} -Login Page +Login {% endblock title %} diff --git a/src/templates/auth/register.html b/src/templates/auth/register.html index b91247d..e2deb7f 100644 --- a/src/templates/auth/register.html +++ b/src/templates/auth/register.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block title %} -Register-Page +Register {% endblock title %} {% block content %} diff --git a/src/templates/base.html b/src/templates/base.html index 25d30ba..190b22c 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -9,6 +9,8 @@ + {% block title %} + {% endblock title %}
    diff --git a/src/templates/home.html b/src/templates/home.html index 41d251e..3a547fb 100644 --- a/src/templates/home.html +++ b/src/templates/home.html @@ -1,7 +1,7 @@ {% extends 'base.html' %} {% block title%} -Home-Page +Home {% endblock title%} {% block content %} diff --git a/src/templates/user/all_users.html b/src/templates/user/all_users.html index bcded03..e28a9fe 100644 --- a/src/templates/user/all_users.html +++ b/src/templates/user/all_users.html @@ -1,7 +1,7 @@ {% extends 'base.html' %} {% block title%} -All users +Users {% endblock title%} {% block content %} diff --git a/src/tests/conftest.py b/src/tests/conftest.py index 7865d61..f387158 100644 --- a/src/tests/conftest.py +++ b/src/tests/conftest.py @@ -79,6 +79,16 @@ def customer(session): return customer +@pytest.fixture() +def auth_customer(client, customer): + client.post( + '/login', + data={'email': customer.email, 'password': '12345'}, + follow_redirects=True + ) + return client + + @pytest.fixture() def manager(session): """ Create test user with manager role """ @@ -92,6 +102,16 @@ def manager(session): return manager +@pytest.fixture() +def auth_manager(client, manager): + client.post( + '/login', + data={'email': manager.email, 'password': '12345'}, + follow_redirects=True + ) + return client + + @pytest.fixture() def employee(session): """ Create test employee """ @@ -106,16 +126,19 @@ def employee(session): return employee +@pytest.fixture() +def auth_employee(client, employee): + client.post( + '/login', + data={'email': employee.email, 'password': '54321'}, + follow_redirects=True + ) + return client + + @pytest.fixture() def items(session): """ Create test items """ - item1 = Item( - name='Biscuits and Gravy', - price=9.50, - cog=6.54, - inventory_count=12 - ) - session.add(item1) item2 = Item( name='Cheeseburger', price=8.50, @@ -123,6 +146,13 @@ def items(session): inventory_count=22 ) session.add(item2) + item1 = Item( + name='Biscuits and Gravy', + price=9.50, + cog=6.00, + inventory_count=12 + ) + session.add(item1) session.commit() return [item1, item2] diff --git a/src/tests/models_test.py b/src/tests/models_test.py index 4b32926..c148b28 100644 --- a/src/tests/models_test.py +++ b/src/tests/models_test.py @@ -48,14 +48,15 @@ def test_create_item(self, items): assert items def test_item_data(self, items): - assert items[0].name == 'Biscuits and Gravy' + assert items[1].name == 'Cheeseburger' assert items[1].price == 8.50 - assert items[0].cog == 6.54 + assert items[1].cog == 5.00 assert items[1].inventory_count == 22 def test_item_query(self, items): i = Item.query.all() - assert i[0].name == 'Biscuits and Gravy' + assert i[0].name == 'Cheeseburger' + assert i[1].name == 'Biscuits and Gravy' class TestOrders(): diff --git a/src/tests/routes_test.py b/src/tests/routes_test.py index 70ff38a..06948b9 100644 --- a/src/tests/routes_test.py +++ b/src/tests/routes_test.py @@ -3,6 +3,7 @@ class TestClass(): @classmethod def setup_class(cls): print('setup_class') + @classmethod def teardown_class(cls): pass @@ -13,7 +14,7 @@ def test_home_route(self, client): """ rv = client.get('/') assert rv.status_code == 200 - assert b'

    Home Page

    ' in rv.data + assert b'Home' in rv.data def test_login_route(self, client): """ @@ -21,47 +22,47 @@ def test_login_route(self, client): """ rv = client.get('/login') assert rv.status_code == 200 - assert b'

    Login:

    ' in rv.data + assert b'Login' in rv.data - def test_register_route(self,client): + def test_register_route(self, client): """ test register route """ rv = client.get('/register') assert rv.status_code == 200 - assert b'

    Register:

    ' in rv.data + assert b'Register' in rv.data - def test_order_route(self,client, customer): + def test_order_route(self, client, customer): """ test order route """ rv = client.post( '/order', - data = {'email':customer.email, 'password':customer.password}, - follow_redirects = True, + data={'email': customer.email, 'password': customer.password}, + follow_redirects=True, ) assert rv.status_code == 200 - def test_add_route(self,client): + def test_item_add_route(self, client, auth_manager): """ test add item route """ rv = client.get('/item/add') assert rv.status_code == 200 - assert b'

    Add Item:

    ' in rv.data + assert b'Add Items' in rv.data - def test_delete_route(self,client): + def test_item_delete_route(self, client, auth_manager): """ test add item route """ rv = client.get('/item/delete') assert rv.status_code == 200 - assert b'

    Delete Item:

    ' in rv.data + assert b'Delete Items' in rv.data - def test_users_route(self,client,manager): + def test_users_route(self, client, auth_manager): """ test all users route """ - rv = client.get('/auth/manager/all_users') + rv = client.get('/all_users') assert rv.status_code == 200 - assert b'Name' in rv.data \ No newline at end of file + assert b'Users' in rv.data From 37f8b657a6a790d5daf62a825f350f29d272833a Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 13:40:52 -0700 Subject: [PATCH 68/87] routes & orders testing --- src/templates/order.html | 3 +-- src/tests/orders_routes_test.py | 19 +++++++++++++++++++ src/tests/routes_test.py | 18 ------------------ 3 files changed, 20 insertions(+), 20 deletions(-) create mode 100644 src/tests/orders_routes_test.py diff --git a/src/templates/order.html b/src/templates/order.html index 398d2b9..a7203c1 100644 --- a/src/templates/order.html +++ b/src/templates/order.html @@ -1,7 +1,6 @@ {% extends "base.html" %} {% block title %} -Order Page - +Order {% endblock title %} {% block content %}
    diff --git a/src/tests/orders_routes_test.py b/src/tests/orders_routes_test.py new file mode 100644 index 0000000..e857a4a --- /dev/null +++ b/src/tests/orders_routes_test.py @@ -0,0 +1,19 @@ +from src.models import Manager, Customer, Employee, Order, OrderItems, Item + + +class TestOrders(): + + def test_order_route_get(self, auth_customer): + """ test order route """ + res = auth_customer.get('/order') + assert res.status_code == 200 + assert b'Order' in res.data + + def test_order_route_post(self, auth_customer): + """ test order creation """ + res = auth_customer.post( + '/order', + data={'item_ids': '1,1,2,2,2', } + ) + orders = Order.query.all() + assert orders[0].id == 1 diff --git a/src/tests/routes_test.py b/src/tests/routes_test.py index 06948b9..56ffb56 100644 --- a/src/tests/routes_test.py +++ b/src/tests/routes_test.py @@ -1,12 +1,5 @@ class TestClass(): - @classmethod - def setup_class(cls): - print('setup_class') - - @classmethod - def teardown_class(cls): - pass def test_home_route(self, client): """ @@ -32,17 +25,6 @@ def test_register_route(self, client): assert rv.status_code == 200 assert b'Register' in rv.data - def test_order_route(self, client, customer): - """ - test order route - """ - rv = client.post( - '/order', - data={'email': customer.email, 'password': customer.password}, - follow_redirects=True, - ) - assert rv.status_code == 200 - def test_item_add_route(self, client, auth_manager): """ test add item route From 7d6d480a4767d195708bb641f01dc2db920a4d9d Mon Sep 17 00:00:00 2001 From: danhuyle508 <38339026+danhuyle508@users.noreply.github.com> Date: Thu, 21 Mar 2019 13:53:00 -0700 Subject: [PATCH 69/87] Update about_us.html --- src/templates/about_us.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/templates/about_us.html b/src/templates/about_us.html index 6b1401b..54e6290 100644 --- a/src/templates/about_us.html +++ b/src/templates/about_us.html @@ -21,7 +21,7 @@

    Milo Anderson

    Dan Le

    -

    Some stuff

    +

    Python developer with a geology background, experience in leadership and quality assurance. Passionate and interested about Data Analytics.

    {% endblock content %} From 80d815d6531df174ce31fa5a4ca33bc8a1ed7514 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 14:07:52 -0700 Subject: [PATCH 70/87] added items tests --- src/routes.py | 1 - src/tests/items_routes_test.py | 44 +++++++++++++++++++++++++++++++++ src/tests/orders_routes_test.py | 11 +++++++-- src/tests/routes_test.py | 16 ------------ 4 files changed, 53 insertions(+), 19 deletions(-) create mode 100644 src/tests/items_routes_test.py diff --git a/src/routes.py b/src/routes.py index 6c07cd1..453b77c 100644 --- a/src/routes.py +++ b/src/routes.py @@ -36,7 +36,6 @@ def order(): if form.validate_on_submit(): item_ids = form.data['item_ids'].split(',') items = [Item.query.get(i) for i in item_ids] - customer = None if g.user.type == 'customer': customer = Customer.query.get(g.user.id) diff --git a/src/tests/items_routes_test.py b/src/tests/items_routes_test.py new file mode 100644 index 0000000..6cd28be --- /dev/null +++ b/src/tests/items_routes_test.py @@ -0,0 +1,44 @@ +from src.models import Order, Item + + +class TestItems(): + + def test_item_all_get(self, auth_manager, items): + """ all_items landing page """ + res = auth_manager.get('/item') + assert res.status_code == 200 + assert b'All Items' in res.data + assert b'Cheeseburger' in res.data + assert b'Biscuits and Gravy' in res.data + + def test_item_add_get(self, client, auth_manager): + """ + test add item route + """ + rv = client.get('/item/add') + assert rv.status_code == 200 + assert b'Add Items' in rv.data + + def test_item_add_post(self, auth_manager): + """ testing item creation """ + res = auth_manager.post( + '/item/add', + data = { + 'name': 'BLT', + 'cost': 4.50, + 'price': 7.95, + 'count': 12 + } + ) + items = Item.query.all() + assert len(items) == 1 + assert items[0].name == 'BLT' + assert items[0].cog == 4.5 + + def test_item_delete_get(self, client, auth_manager): + """ + test add item route + """ + rv = client.get('/item/delete') + assert rv.status_code == 200 + assert b'Delete Items' in rv.data \ No newline at end of file diff --git a/src/tests/orders_routes_test.py b/src/tests/orders_routes_test.py index e857a4a..d2e8a29 100644 --- a/src/tests/orders_routes_test.py +++ b/src/tests/orders_routes_test.py @@ -1,4 +1,4 @@ -from src.models import Manager, Customer, Employee, Order, OrderItems, Item +from src.models import Order, Item class TestOrders(): @@ -9,11 +9,18 @@ def test_order_route_get(self, auth_customer): assert res.status_code == 200 assert b'Order' in res.data - def test_order_route_post(self, auth_customer): + def test_order_route_post(self, auth_customer, items): """ test order creation """ res = auth_customer.post( '/order', data={'item_ids': '1,1,2,2,2', } ) orders = Order.query.all() + assert len(orders) == 1 assert orders[0].id == 1 + assert orders[0].cust_id == 1 + items = Item.query.all() + assert items[0].name == 'Cheeseburger' + assert items[0].inventory_count == 20 + assert items[1].name == 'Biscuits and Gravy' + assert items[1].inventory_count == 9 diff --git a/src/tests/routes_test.py b/src/tests/routes_test.py index 56ffb56..f7de527 100644 --- a/src/tests/routes_test.py +++ b/src/tests/routes_test.py @@ -25,22 +25,6 @@ def test_register_route(self, client): assert rv.status_code == 200 assert b'Register' in rv.data - def test_item_add_route(self, client, auth_manager): - """ - test add item route - """ - rv = client.get('/item/add') - assert rv.status_code == 200 - assert b'Add Items' in rv.data - - def test_item_delete_route(self, client, auth_manager): - """ - test add item route - """ - rv = client.get('/item/delete') - assert rv.status_code == 200 - assert b'Delete Items' in rv.data - def test_users_route(self, client, auth_manager): """ test all users route From 1b4df6712851a5fc1dc07358ea124bbf91e1488c Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 14:31:51 -0700 Subject: [PATCH 71/87] items routes tests are done & passing --- src/tests/items_routes_test.py | 47 ++++++++++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/src/tests/items_routes_test.py b/src/tests/items_routes_test.py index 6cd28be..d1d0bf0 100644 --- a/src/tests/items_routes_test.py +++ b/src/tests/items_routes_test.py @@ -23,7 +23,7 @@ def test_item_add_post(self, auth_manager): """ testing item creation """ res = auth_manager.post( '/item/add', - data = { + data={ 'name': 'BLT', 'cost': 4.50, 'price': 7.95, @@ -36,9 +36,46 @@ def test_item_add_post(self, auth_manager): assert items[0].cog == 4.5 def test_item_delete_get(self, client, auth_manager): - """ - test add item route - """ + """ test delete item route """ rv = client.get('/item/delete') assert rv.status_code == 200 - assert b'Delete Items' in rv.data \ No newline at end of file + assert b'Delete Items' in rv.data + + def test_item_delete_post(self, auth_manager, items): + """ testing item deletion """ + res = auth_manager.post( + '/item/delete', + data={'items': 1}, + follow_redirects=True + ) + items = Item.query.all() + assert len(items) == 2 + assert items[0].active is True + assert items[1].active is False + + def test_item_update_get(self, auth_manager, items): + """ test item update route """ + res = auth_manager.get('/item/update') + assert res.status_code == 200 + assert b'Update Items' in res.data + + def test_item_update_post(self, auth_manager, items): + """ test item updating """ + res = auth_manager.post( + '/item/update', + data={ + 'items': 1, + 'cost': 0.50, + 'price': 20.00, + 'count': 42 + }, + follow_redirects=True + ) + saved_items = Item.query.all() + assert len(saved_items) == 2 + assert saved_items[1].cog == 0.50 + assert saved_items[0].cog != 0.50 + assert saved_items[1].price == 20.00 + assert saved_items[0].price != 20.00 + assert saved_items[1].inventory_count == 42 + assert saved_items[0].inventory_count != 42 From 3c2c396958cb41abd87694138416b0bd69590861 Mon Sep 17 00:00:00 2001 From: Dan Le Date: Thu, 21 Mar 2019 14:33:57 -0700 Subject: [PATCH 72/87] res tests added --- migrations/versions/9bf5da0d7ef4_.py | 28 ++++++++++++++++++++++++++++ src/auth.py | 18 ++++++++++++++++++ src/routes.py | 2 +- src/tests/conftest.py | 11 ++++++++++- src/tests/models_test.py | 14 +++++++++++++- src/tests/routes_test.py | 11 ++++++++++- 6 files changed, 80 insertions(+), 4 deletions(-) create mode 100644 migrations/versions/9bf5da0d7ef4_.py diff --git a/migrations/versions/9bf5da0d7ef4_.py b/migrations/versions/9bf5da0d7ef4_.py new file mode 100644 index 0000000..3d35d02 --- /dev/null +++ b/migrations/versions/9bf5da0d7ef4_.py @@ -0,0 +1,28 @@ +"""empty message + +Revision ID: 9bf5da0d7ef4 +Revises: 0dd416463f04 +Create Date: 2019-03-21 13:17:16.291176 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '9bf5da0d7ef4' +down_revision = '0dd416463f04' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('items', sa.Column('active', sa.Boolean(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('items', 'active') + # ### end Alembic commands ### diff --git a/src/auth.py b/src/auth.py index d761045..aee52ce 100644 --- a/src/auth.py +++ b/src/auth.py @@ -6,6 +6,9 @@ def login_required(view): + """ + restricts access to decorated route + """ @functools.wraps(view) def wrapped_view(**kwargs): if g.user is None: @@ -15,6 +18,9 @@ def wrapped_view(**kwargs): def authorization_required(view=None, roles=[]): + """ + restricts access to only certain roles + """ if not view: return functools.partial(authorization_required, roles=roles) @@ -30,6 +36,9 @@ def wrapped_view(**kwargs): @app.before_request def load_logged_in_user(): + """ + + """ user_id = session.get('user_id') if user_id is None: g.user = None @@ -39,6 +48,9 @@ def load_logged_in_user(): @app.route('/register', methods=['GET', 'POST']) def register(): + """ + route handler for register + """ form = RegisterForm() if form.validate_on_submit(): customer = Customer( @@ -55,6 +67,9 @@ def register(): @app.route('/login', methods=['GET', 'POST']) def login(): + """ + route handler for login page + """ form = AuthForm() if form.validate_on_submit(): email = form.data['email'] @@ -78,5 +93,8 @@ def login(): @app.route('/logout') @login_required def logout(): + """ + route handler for logout + """ session.clear() return redirect(url_for('.login')) diff --git a/src/routes.py b/src/routes.py index cd066e5..616f093 100644 --- a/src/routes.py +++ b/src/routes.py @@ -166,7 +166,7 @@ def reservation(): db.session.add(reservation) db.session.commit() return redirect(url_for('.reservation')) - if g.user.type == 'manager' or q.user.type == 'employee': + if g.user.type == 'manager' or g.user.type == 'employee': reservations = Reservation.query.all() else: reservations = Reservation.query.filter_by(cust_id=g.user.id).all() diff --git a/src/tests/conftest.py b/src/tests/conftest.py index 7865d61..f4b60dd 100644 --- a/src/tests/conftest.py +++ b/src/tests/conftest.py @@ -1,5 +1,5 @@ from src.models import db as _db -from src.models import Manager, Customer, Employee, Order, OrderItems, Item +from src.models import Manager, Customer, Employee, Order, OrderItems, Item, Reservation from src import app as _app import pytest import os @@ -105,6 +105,15 @@ def employee(session): session.commit() return employee +@pytest.fixture() +def reservation(session): + """ create test reservation """ + reservation = Reservation( + date = '3/24/2019', + time = '11:00 PM', + party = 3 + ) + return reservation @pytest.fixture() def items(session): diff --git a/src/tests/models_test.py b/src/tests/models_test.py index 4b32926..f53441d 100644 --- a/src/tests/models_test.py +++ b/src/tests/models_test.py @@ -1,4 +1,4 @@ -from src.models import Manager, Customer, Employee, Order, OrderItems, Item +from src.models import Manager, Customer, Employee, Order, OrderItems, Item, Reservation class TestUserModels(): @@ -69,3 +69,15 @@ def test_order_data(self, customer, employee, items, order): assert order.employee.name == 'Dan' assert order.items[0].name == 'Biscuits and Gravy' assert order.items[1].name == 'Cheeseburger' + +class TestReservations(): + """ Tests for Reservation model """ + + def test_create_reservation(self,reservation): + assert reservation + + def test_reservation_data(self, reservation): + assert reservation.date == '2019-03-24' + assert reservation.time == '21:00:00' + assert reservation.party == 3 + diff --git a/src/tests/routes_test.py b/src/tests/routes_test.py index 70ff38a..594eb6f 100644 --- a/src/tests/routes_test.py +++ b/src/tests/routes_test.py @@ -64,4 +64,13 @@ def test_users_route(self,client,manager): """ rv = client.get('/auth/manager/all_users') assert rv.status_code == 200 - assert b'Name' in rv.data \ No newline at end of file + assert b'Name' in rv.data + + def test_reservation(self, client, manager): + """ + test reservation route + """ + rv = client.get('/reservation') + assert rv.status_code == 302 + assert b'

    Your Reservations

    ' in rv.data + \ No newline at end of file From 7a0e1ed271a3ea6630f6aea6f9473a165217bbb1 Mon Sep 17 00:00:00 2001 From: Tim Schoen Date: Thu, 21 Mar 2019 14:34:21 -0700 Subject: [PATCH 73/87] model testing for reports at 83% --- src/tests/conftest.py | 3 ++- src/tests/models_test.py | 2 ++ src/tests/reports_test.py | 25 +++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 src/tests/reports_test.py diff --git a/src/tests/conftest.py b/src/tests/conftest.py index f387158..0317cbf 100644 --- a/src/tests/conftest.py +++ b/src/tests/conftest.py @@ -163,7 +163,8 @@ def order(session, customer, employee, items): order = Order( customer=customer, employee=employee, - items=items + items=items, + ) session.add(order) session.commit() diff --git a/src/tests/models_test.py b/src/tests/models_test.py index c148b28..747a9dd 100644 --- a/src/tests/models_test.py +++ b/src/tests/models_test.py @@ -1,4 +1,5 @@ from src.models import Manager, Customer, Employee, Order, OrderItems, Item +from src.models_reports import CustomerOrders class TestUserModels(): @@ -70,3 +71,4 @@ def test_order_data(self, customer, employee, items, order): assert order.employee.name == 'Dan' assert order.items[0].name == 'Biscuits and Gravy' assert order.items[1].name == 'Cheeseburger' + diff --git a/src/tests/reports_test.py b/src/tests/reports_test.py new file mode 100644 index 0000000..9371b3d --- /dev/null +++ b/src/tests/reports_test.py @@ -0,0 +1,25 @@ +from src.models import Manager, Customer, Employee, Order, OrderItems, Item +from src.models_reports import CustomerOrders + +class TestReportModels(): + """ Tests for Reports """ + def test_create_model(self): + assert CustomerOrders + def test_created_model(self): + assert CustomerOrders(0) + def test_sales_report(self,customer,items,order): + res = CustomerOrders(0) + assert res.item_totals(1)[0][0] == 'Biscuits and Gravy' + assert res.item_totals(1)[0][1] == 1 + assert res.item_totals(1)[1][0] == 'Cheeseburger' + assert res.item_totals(1)[1][1] == 1 + + def test_customer_totals_report(self,customer,items,order): + res = CustomerOrders(0) + #testing for Biscuits and Gravy + assert res.customer_totals(1)[0][0] == 'Milo' + assert res.customer_totals(1)[0][1] == 1 + #testing for Cheeseburger + assert res.customer_totals(2)[0][0] == 'Milo' + assert res.customer_totals(2)[0][1] == 1 + From cd014e4913f4cb43fd4abbf7645f93a73ecf81b3 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 15:15:46 -0700 Subject: [PATCH 74/87] fixed tests --- src/routes.py | 2 +- src/tests/models_test.py | 12 +++++------- src/tests/routes_test.py | 6 +++--- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/routes.py b/src/routes.py index 59961a8..c20d259 100644 --- a/src/routes.py +++ b/src/routes.py @@ -149,7 +149,7 @@ def all_users(): @app.route('/reservation', methods=['GET', 'POST']) -@authorization_required(roles=['customer','manager', 'employee']) +@authorization_required(roles=['customer', 'manager', 'employee']) def reservation(): """ route handler for reservations diff --git a/src/tests/models_test.py b/src/tests/models_test.py index 6f15a7d..0c1d4d7 100644 --- a/src/tests/models_test.py +++ b/src/tests/models_test.py @@ -4,7 +4,6 @@ from src.models_reports import CustomerOrders - class TestUserModels(): """ Tests for Customer and Manager models """ @@ -75,15 +74,14 @@ def test_order_data(self, customer, employee, items, order): assert order.items[0].name == 'Biscuits and Gravy' assert order.items[1].name == 'Cheeseburger' + class TestReservations(): - """ Tests for Reservation model """ + """ Tests for Reservation model """ - def test_create_reservation(self,reservation): + def test_create_reservation(self, reservation): assert reservation def test_reservation_data(self, reservation): - assert reservation.date == '2019-03-24' - assert reservation.time == '21:00:00' + assert reservation.date == '3/24/2019' + assert reservation.time == '11:00 PM' assert reservation.party == 3 - - diff --git a/src/tests/routes_test.py b/src/tests/routes_test.py index f3b99b6..5e8eda7 100644 --- a/src/tests/routes_test.py +++ b/src/tests/routes_test.py @@ -33,11 +33,11 @@ def test_users_route(self, client, auth_manager): assert rv.status_code == 200 assert b'Name' in rv.data - def test_reservation(self, client, manager): + def test_reservation(self, client, auth_manager): """ test reservation route """ rv = client.get('/reservation') - assert rv.status_code == 302 - assert b'

    Your Reservations

    ' in rv.data + assert rv.status_code == 200 + assert b'Make a Reservation' in rv.data \ No newline at end of file From b9ce1c65f1be0444c0be79ca066e3670dd864d38 Mon Sep 17 00:00:00 2001 From: danhuyle508 <38339026+danhuyle508@users.noreply.github.com> Date: Thu, 21 Mar 2019 15:20:05 -0700 Subject: [PATCH 75/87] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c257ab7..25865d6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # py_cafe -**Authors**: Dan Huyle, Tim Schoen, Milo Anderson +**Authors**: Dan-Huy Le, Tim Schoen, Milo Anderson **Version**: 0.0.0 @@ -16,4 +16,4 @@ We will let you know ## CSS Skeleton V2.04 was used Copyright 2014, Dave Gamache, Free to use under MIT license. - \ No newline at end of file + From b807cc141a9b15648e48869021c25ec114c5f785 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 15:53:07 -0700 Subject: [PATCH 76/87] updated About Us page --- src/routes.py | 14 ++++++----- src/static/assets/milo.jpg | Bin 0 -> 78212 bytes src/static/css/module.css | 17 ++++++++++++- src/static/css/style.css | 28 --------------------- src/templates/about_us.html | 10 +++++--- src/templates/auth/login.1.html | 15 ----------- src/templates/{auth => }/reservations.html | 0 7 files changed, 30 insertions(+), 54 deletions(-) create mode 100644 src/static/assets/milo.jpg delete mode 100644 src/static/css/style.css delete mode 100644 src/templates/auth/login.1.html rename src/templates/{auth => }/reservations.html (100%) diff --git a/src/routes.py b/src/routes.py index c20d259..105a7d1 100644 --- a/src/routes.py +++ b/src/routes.py @@ -26,6 +26,7 @@ def about(): """ return render_template('about_us.html'), 200 + @app.route('/order', methods=['GET', 'POST']) @authorization_required(roles=['customer', 'employee', 'manager']) def order(): @@ -131,6 +132,7 @@ def update_items(): items = Item.query.filter_by(active=True).all() return render_template('items/update_items.html', form=form, items=items) + @app.route('/all_users', methods=['GET', 'POST']) @authorization_required(roles=['manager']) def all_users(): @@ -169,11 +171,11 @@ def reservation(): reservations = Reservation.query.all() else: reservations = Reservation.query.filter_by(cust_id=g.user.id).all() - return render_template('/auth/reservations.html', form=form, reservations=reservations) + return render_template('/reservations.html', form=form, reservations=reservations) @app.route('/user/manager', methods=['GET', 'POST']) -#@authorization_required(roles=['manager']) +# @authorization_required(roles=['manager']) def create_manager(): """ route handler to create a manager role @@ -240,6 +242,7 @@ def by_customer(): users = User.query.all() return render_template('/manager/by_customer.html', users=users, form=form, content=None) + @app.route('/manager/by_time', methods=['GET', 'POST']) def by_time(): form = DateTimeForm() @@ -250,10 +253,10 @@ def by_time(): end_time = form.data['end_time'] print('valid') print((start_date, end_date)) - sql_start_time = (str(start_date)+' ' +str(start_time)) - sql_end_time = (str(end_date)+' ' +str(end_time)) + sql_start_time = (str(start_date)+' ' + str(start_time)) + sql_end_time = (str(end_date)+' ' + str(end_time)) report = CustomerOrders(id) - content = report.time(sql_start_time,sql_end_time) + content = report.time(sql_start_time, sql_end_time) return render_template('/manager/by_time.html', form=form, content=content) return render_template('/manager/by_time.html', form=form, content=None) @@ -276,4 +279,3 @@ def by_item(): items = Item.query.all() return render_template('/manager/by_item.html', items=items, form=form, content=None) - diff --git a/src/static/assets/milo.jpg b/src/static/assets/milo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2307d6c32fbcf4e2b779531ac0976051119162b1 GIT binary patch literal 78212 zcmb@s1yoyI*Djh62*I7=?(QU5aW4|w-QB${F2%jUiaQkdQi_-24ut|KUP>v_0&O|z z_x}I+zJH86?zrcUGn2K~vuEa7YtFSZvS;>u9@ZXq0EFtwYRUj0N_c=g0Kmg81CLU$ ziz5J_rp5(;0000?06q{6fQCX`s73|E002?FEvixf7j{Kq4j|}X`oDI9D0^H~?~7_e zC`^j#pQ4&eJo>+EGEuk*)p$@7{hjN-dlj`OIt)U5f&zSE03iWEn1q0^gpeSEps0k9 zh=hO$$~G<&6M%&pQGsgzDgW{m_|NQrrv&~Nen1(ap*#bjdQy}g^j}_rQRm?Qz-0f0 z|Jni3{+WjgWsmk>7>geD0ZJhMdOiH-zWogWW%;lPPyj%{U`#Lu1QQbz3k!mcONxh! zgM&*+OhQ0POGQsdOGQJ&z{1DQz{JB$L&G7?$s-^rA|gW14wHroN%0Ab2>qP|h=qlP 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
    r>@xAq)aeR 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 literal 0 HcmV?d00001 diff --git a/src/static/css/module.css b/src/static/css/module.css index f28dfa7..50a0d98 100644 --- a/src/static/css/module.css +++ b/src/static/css/module.css @@ -1,3 +1,4 @@ +/* -------- Orders page -------- */ #orders { display: grid; column-gap: 40px; @@ -70,6 +71,20 @@ a.button { cursor: pointer; box-sizing: border-box; } -img { + + +/* -------- About Us page -------- */ +#about h5 { + font-size: 1.4em; +} +#about h4 { + margin-bottom: 0px; +} +#about img { width:200px; + margin: 0px 20px 30px 0px; + float: left; +} +#about div { + clear: both; } \ No newline at end of file diff --git a/src/static/css/style.css b/src/static/css/style.css deleted file mode 100644 index e58ce6c..0000000 --- a/src/static/css/style.css +++ /dev/null @@ -1,28 +0,0 @@ - -body{ - margin-left: 5%; -} -.order-select { - cursor: pointer; -} - -#orders { - display: grid; - grid-template-columns: fr fr; -} - -#items-table { - grid-column-start: 0; -} - -li { - - text-decoration: none; - display: inline-block; - margin-bottom: 5%; - color:red; -} -h1{ - margin-top:5%; -} - diff --git a/src/templates/about_us.html b/src/templates/about_us.html index 54e6290..c4ccec2 100644 --- a/src/templates/about_us.html +++ b/src/templates/about_us.html @@ -5,22 +5,24 @@ {% endblock title%} {% block content %} -
    +

    Tim Schoen

    Software Developer

    Passionate, dedicated, team player.

    -

    Software Devloper that utilizes a creative,entrepreneurial mindset with the ability for everyday learning.
    Excited about data analysis to help businesses grow.

    +

    Software Devloper that utilizes a creative, entrepreneurial mindset with the ability for everyday learning. Excited about data analysis to help businesses grow.

    Milo Anderson

    - -

    Some stuff

    + +
    Software Developer
    +

    I have a background in music, journalism, and social sciences, and a philosophical commitment to pragmatism. Coding gives me a way to make the world better, while experiencing the fun and camaeraderie that comes from solving tough problems as part of a team.

    Dan Le

    +
    Software Developer

    Python developer with a geology background, experience in leadership and quality assurance. Passionate and interested about Data Analytics.

    diff --git a/src/templates/auth/login.1.html b/src/templates/auth/login.1.html deleted file mode 100644 index 3b3d58d..0000000 --- a/src/templates/auth/login.1.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends "base.html" %} - -{% block title %} -Logout Page -{% endblock title %} - - -{% block content %} -
    -

    Login:

    -
    - -
    -
    -{% endblock content %} \ No newline at end of file diff --git a/src/templates/auth/reservations.html b/src/templates/reservations.html similarity index 100% rename from src/templates/auth/reservations.html rename to src/templates/reservations.html From db0ac0ce92604381f97c9d00e7b879d7b9abfda1 Mon Sep 17 00:00:00 2001 From: Tim Schoen Date: Thu, 21 Mar 2019 16:19:20 -0700 Subject: [PATCH 77/87] readme --- README.md | 61 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 51 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c257ab7..4c0eb1a 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,60 @@ # py_cafe -**Authors**: Dan Huyle, Tim Schoen, Milo Anderson +**Authors**: Dan-Huy Le, Tim Schoen, Milo Anderson -**Version**: 0.0.0 +**Version**: 1.1.0 -## Overview -py_cafe allows restauranteurs to integrate front-of-house data (customer identity, table reservations) with point-of-sale data (menu orders). Managers can view detailed reports on customer preferences & behavior; customers can accumulate reward points or participate in special offers. +## Overview: +Py_cafe allows restauranteurs to integrate front-of-house data (customer identity, table reservations) with point-of-sale data (menu orders). Managers can view detailed reports on customer preferences & behavior; customers can accumulate reward points or participate in special offers. ## Features -More to come +* Allow users to register as customers. +* As Customers users are able to make reservations and place orders. +* Customers are able update order by adding or removing items. +* As Orders are being generated users are able to see the grand-total of items in order. +* Managers are allowed to create, both customer and managers roles. +* As a Manager, you have the ability to add, remove, and update items from the menu. +* Items have the attributes of (Name, Price, Cost (cost of goods sold), and Inventory Count. +* As Orders are being placed, the inventory count reflects changes in real-time. +* As a Manager you have the ability, to run reports which include: +** Users Sales ( how much of each item a selected used has ordered) +** Item Sales(how many times each user as ordered a selected item) +** Timely Sales( All Sales detail (User, Item, Quantity, Time) with in a selected time window. -## Getting Started -We will let you know +## Getting Started — Running local -## - CSS Skeleton V2.04 was used Copyright 2014, Dave Gamache, Free to use under MIT license. - \ No newline at end of file +1. Clone Repo to local machine. + +2. Set up a Virtual Environment using PIPENV SHELL +3. Create a database and in your .env file DATABASE_URL = << your data base >> +4. Add a secret key to you .env file. SECRET_KEY = <> +5. Install dependencies using. PIPENV INSTALL +6. Run the app FLASK RUN + + +7. In your browser go to localhost:5000 + +8. In order to set up first manager role go to localhost:5000/user/manager + + +## Tools Used: + * Vue.js + * flask + * sqlalchemy + * wtforms + * SQL + * postgres + +## Deployment: +* Deployed on AWS - ES2 (server) +* AWS - RDS (database) +* guincorn -- Python Web Server Gateway Interface HTTP server +* nginx -- web server which can also be used as a reverse proxy, load balancer. + +## Credits + + * CSS Skeleton V2.04 was used Copyright 2014, Dave Gamache, Free to use under MIT license. + * CSS Inspired by bitsofco.de/holy-grail-layout-css-grid + + From 5e45a24a8922e50f8d491b1a93ea648014f84924 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 16:22:46 -0700 Subject: [PATCH 78/87] user tests --- src/tests/reports_test.py | 17 +++++++++------- src/tests/routes_test.py | 32 +++++++++++++++++++++--------- src/tests/users_routes_test.py | 36 ++++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 16 deletions(-) create mode 100644 src/tests/users_routes_test.py diff --git a/src/tests/reports_test.py b/src/tests/reports_test.py index 9371b3d..f3a144a 100644 --- a/src/tests/reports_test.py +++ b/src/tests/reports_test.py @@ -1,25 +1,28 @@ from src.models import Manager, Customer, Employee, Order, OrderItems, Item from src.models_reports import CustomerOrders + class TestReportModels(): """ Tests for Reports """ + def test_create_model(self): assert CustomerOrders + def test_created_model(self): assert CustomerOrders(0) - def test_sales_report(self,customer,items,order): + + def test_sales_report(self, customer, items, order): res = CustomerOrders(0) assert res.item_totals(1)[0][0] == 'Biscuits and Gravy' assert res.item_totals(1)[0][1] == 1 assert res.item_totals(1)[1][0] == 'Cheeseburger' assert res.item_totals(1)[1][1] == 1 - - def test_customer_totals_report(self,customer,items,order): + + def test_customer_totals_report(self, customer, items, order): res = CustomerOrders(0) - #testing for Biscuits and Gravy + # testing for Biscuits and Gravy assert res.customer_totals(1)[0][0] == 'Milo' assert res.customer_totals(1)[0][1] == 1 - #testing for Cheeseburger - assert res.customer_totals(2)[0][0] == 'Milo' + # testing for Cheeseburger + assert res.customer_totals(2)[0][0] == 'Milo' assert res.customer_totals(2)[0][1] == 1 - diff --git a/src/tests/routes_test.py b/src/tests/routes_test.py index 5e8eda7..5e884b5 100644 --- a/src/tests/routes_test.py +++ b/src/tests/routes_test.py @@ -1,5 +1,5 @@ -class TestClass(): +class TestRoutes(): def test_home_route(self, client): """ @@ -9,6 +9,15 @@ def test_home_route(self, client): assert rv.status_code == 200 assert b'Home' in rv.data + def test_about_us_route(self, client): + """ test about_us route """ + res = client.get('/about') + assert res.status_code == 200 + assert b'About Us' in res.data + assert b'Tim Schoen' in res.data + assert b'Milo Anderson' in res.data + assert b'Dan Le' in res.data + def test_login_route(self, client): """ test login route @@ -17,6 +26,19 @@ def test_login_route(self, client): assert rv.status_code == 200 assert b'Login' in rv.data + def test_login_post(self, client): + """ testing login """ + res = client.post( + '/login', + data={ + 'email': 'milo@test.com', + 'password': '12345' + }, + follow_redirects=True + ) + assert res.status_code == 200 + assert b'Login' in res.data + def test_register_route(self, client): """ test register route @@ -25,14 +47,6 @@ def test_register_route(self, client): assert rv.status_code == 200 assert b'Register' in rv.data - def test_users_route(self, client, auth_manager): - """ - test all users route - """ - rv = client.get('/all_users') - assert rv.status_code == 200 - assert b'Name' in rv.data - def test_reservation(self, client, auth_manager): """ test reservation route diff --git a/src/tests/users_routes_test.py b/src/tests/users_routes_test.py new file mode 100644 index 0000000..b90aefd --- /dev/null +++ b/src/tests/users_routes_test.py @@ -0,0 +1,36 @@ +from src.models import User, Customer, Employee, Manager + + +class TestUsers(): + + def test_users_route_get(self, client, auth_manager): + """ test all users route """ + rv = client.get('/all_users') + assert rv.status_code == 200 + assert b'Users' in rv.data + + def test_customer_registration_get(self, auth_manager): + """ registration page load """ + res = auth_manager.get('/register') + assert res.status_code == 200 + assert b'Register' in res.data + + def test_customer_registration_post(self, auth_manager): + """ test customer creation """ + res = auth_manager.post( + '/register', + data={ + 'name': 'Chris', + 'phone': '1234567890', + 'email': 'chris@test.com', + 'password': '12345' + }, + follow_redirects=True + ) + customers = Customer.query.all() + assert res.status_code == 200 + assert len(customers) == 1 + assert customers[0].name == 'Chris' + assert customers[0].phone == '1234567890' + assert customers[0].email == 'chris@test.com' + assert customers[0].password != '12345' From 3267bf5855c136c1365804c8355e942b50bfa8cc Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 17:35:15 -0700 Subject: [PATCH 79/87] kill migrations, hopefully fix deployment issue --- _migrations/README | 1 + _migrations/alembic.ini | 45 +++++++++ _migrations/env.py | 95 +++++++++++++++++++ _migrations/script.py.mako | 24 +++++ .../versions/0dd416463f04_.py | 0 .../versions/224d552285d8_.py | 0 .../versions/25497ae8ae66_.py | 0 .../versions/339748f86335_.py | 0 .../versions/393789f720a7_.py | 0 .../versions/39b79e8b1d05_.py | 0 .../versions/46b05022d86b_.py | 0 .../versions/5f81300e98dd_.py | 0 .../versions/67b3d9d9b73f_.py | 0 .../versions/69799b785e40_.py | 0 .../versions/75d00484181f_.py | 0 .../versions/9bee782d5c72_.py | 0 .../versions/b5aaa346f45d_.py | 0 .../versions/ce66d77e8a63_.py | 0 .../versions/cfb635d9b172_.py | 0 .../versions/e253ee37986d_.py | 0 .../versions/e3c38d00d77e_.py | 0 .../versions/f446b9619bae_.py | 0 migrations/versions/43afb694bcba_.py | 94 ++++++++++++++++++ migrations/versions/9bf5da0d7ef4_.py | 28 ------ 24 files changed, 259 insertions(+), 28 deletions(-) create mode 100644 _migrations/README create mode 100644 _migrations/alembic.ini create mode 100644 _migrations/env.py create mode 100644 _migrations/script.py.mako rename {migrations => _migrations}/versions/0dd416463f04_.py (100%) rename {migrations => _migrations}/versions/224d552285d8_.py (100%) rename {migrations => _migrations}/versions/25497ae8ae66_.py (100%) rename {migrations => _migrations}/versions/339748f86335_.py (100%) rename {migrations => _migrations}/versions/393789f720a7_.py (100%) rename {migrations => _migrations}/versions/39b79e8b1d05_.py (100%) rename {migrations => _migrations}/versions/46b05022d86b_.py (100%) rename {migrations => _migrations}/versions/5f81300e98dd_.py (100%) rename {migrations => _migrations}/versions/67b3d9d9b73f_.py (100%) rename {migrations => _migrations}/versions/69799b785e40_.py (100%) rename {migrations => _migrations}/versions/75d00484181f_.py (100%) rename {migrations => _migrations}/versions/9bee782d5c72_.py (100%) rename {migrations => _migrations}/versions/b5aaa346f45d_.py (100%) rename {migrations => _migrations}/versions/ce66d77e8a63_.py (100%) rename {migrations => _migrations}/versions/cfb635d9b172_.py (100%) rename {migrations => _migrations}/versions/e253ee37986d_.py (100%) rename {migrations => _migrations}/versions/e3c38d00d77e_.py (100%) rename {migrations => _migrations}/versions/f446b9619bae_.py (100%) create mode 100644 migrations/versions/43afb694bcba_.py delete mode 100644 migrations/versions/9bf5da0d7ef4_.py diff --git a/_migrations/README b/_migrations/README new file mode 100644 index 0000000..98e4f9c --- /dev/null +++ b/_migrations/README @@ -0,0 +1 @@ +Generic single-database configuration. \ No newline at end of file diff --git a/_migrations/alembic.ini b/_migrations/alembic.ini new file mode 100644 index 0000000..f8ed480 --- /dev/null +++ b/_migrations/alembic.ini @@ -0,0 +1,45 @@ +# A generic, single database configuration. + +[alembic] +# template used to generate migration files +# file_template = %%(rev)s_%%(slug)s + +# set to 'true' to run the environment during +# the 'revision' command, regardless of autogenerate +# revision_environment = false + + +# Logging configuration +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/_migrations/env.py b/_migrations/env.py new file mode 100644 index 0000000..169d487 --- /dev/null +++ b/_migrations/env.py @@ -0,0 +1,95 @@ +from __future__ import with_statement + +import logging +from logging.config import fileConfig + +from sqlalchemy import engine_from_config +from sqlalchemy import pool + +from alembic import context + +# this is the Alembic Config object, which provides +# access to the values within the .ini file in use. +config = context.config + +# Interpret the config file for Python logging. +# This line sets up loggers basically. +fileConfig(config.config_file_name) +logger = logging.getLogger('alembic.env') + +# add your model's MetaData object here +# for 'autogenerate' support +# from myapp import mymodel +# target_metadata = mymodel.Base.metadata +from flask import current_app +config.set_main_option('sqlalchemy.url', + current_app.config.get('SQLALCHEMY_DATABASE_URI')) +target_metadata = current_app.extensions['migrate'].db.metadata + +# other values from the config, defined by the needs of env.py, +# can be acquired: +# my_important_option = config.get_main_option("my_important_option") +# ... etc. + + +def run_migrations_offline(): + """Run migrations in 'offline' mode. + + This configures the context with just a URL + and not an Engine, though an Engine is acceptable + here as well. By skipping the Engine creation + we don't even need a DBAPI to be available. + + Calls to context.execute() here emit the given string to the + script output. + + """ + url = config.get_main_option("sqlalchemy.url") + context.configure( + url=url, target_metadata=target_metadata, literal_binds=True + ) + + with context.begin_transaction(): + context.run_migrations() + + +def run_migrations_online(): + """Run migrations in 'online' mode. + + In this scenario we need to create an Engine + and associate a connection with the context. + + """ + + # this callback is used to prevent an auto-migration from being generated + # when there are no changes to the schema + # reference: http://alembic.zzzcomputing.com/en/latest/cookbook.html + def process_revision_directives(context, revision, directives): + if getattr(config.cmd_opts, 'autogenerate', False): + script = directives[0] + if script.upgrade_ops.is_empty(): + directives[:] = [] + logger.info('No changes in schema detected.') + + connectable = engine_from_config( + config.get_section(config.config_ini_section), + prefix='sqlalchemy.', + poolclass=pool.NullPool, + ) + + with connectable.connect() as connection: + context.configure( + connection=connection, + target_metadata=target_metadata, + process_revision_directives=process_revision_directives, + **current_app.extensions['migrate'].configure_args + ) + + with context.begin_transaction(): + context.run_migrations() + + +if context.is_offline_mode(): + run_migrations_offline() +else: + run_migrations_online() diff --git a/_migrations/script.py.mako b/_migrations/script.py.mako new file mode 100644 index 0000000..2c01563 --- /dev/null +++ b/_migrations/script.py.mako @@ -0,0 +1,24 @@ +"""${message} + +Revision ID: ${up_revision} +Revises: ${down_revision | comma,n} +Create Date: ${create_date} + +""" +from alembic import op +import sqlalchemy as sa +${imports if imports else ""} + +# revision identifiers, used by Alembic. +revision = ${repr(up_revision)} +down_revision = ${repr(down_revision)} +branch_labels = ${repr(branch_labels)} +depends_on = ${repr(depends_on)} + + +def upgrade(): + ${upgrades if upgrades else "pass"} + + +def downgrade(): + ${downgrades if downgrades else "pass"} diff --git a/migrations/versions/0dd416463f04_.py b/_migrations/versions/0dd416463f04_.py similarity index 100% rename from migrations/versions/0dd416463f04_.py rename to _migrations/versions/0dd416463f04_.py diff --git a/migrations/versions/224d552285d8_.py b/_migrations/versions/224d552285d8_.py similarity index 100% rename from migrations/versions/224d552285d8_.py rename to _migrations/versions/224d552285d8_.py diff --git a/migrations/versions/25497ae8ae66_.py b/_migrations/versions/25497ae8ae66_.py similarity index 100% rename from migrations/versions/25497ae8ae66_.py rename to _migrations/versions/25497ae8ae66_.py diff --git a/migrations/versions/339748f86335_.py b/_migrations/versions/339748f86335_.py similarity index 100% rename from migrations/versions/339748f86335_.py rename to _migrations/versions/339748f86335_.py diff --git a/migrations/versions/393789f720a7_.py b/_migrations/versions/393789f720a7_.py similarity index 100% rename from migrations/versions/393789f720a7_.py rename to _migrations/versions/393789f720a7_.py diff --git a/migrations/versions/39b79e8b1d05_.py b/_migrations/versions/39b79e8b1d05_.py similarity index 100% rename from migrations/versions/39b79e8b1d05_.py rename to _migrations/versions/39b79e8b1d05_.py diff --git a/migrations/versions/46b05022d86b_.py b/_migrations/versions/46b05022d86b_.py similarity index 100% rename from migrations/versions/46b05022d86b_.py rename to _migrations/versions/46b05022d86b_.py diff --git a/migrations/versions/5f81300e98dd_.py b/_migrations/versions/5f81300e98dd_.py similarity index 100% rename from migrations/versions/5f81300e98dd_.py rename to _migrations/versions/5f81300e98dd_.py diff --git a/migrations/versions/67b3d9d9b73f_.py b/_migrations/versions/67b3d9d9b73f_.py similarity index 100% rename from migrations/versions/67b3d9d9b73f_.py rename to _migrations/versions/67b3d9d9b73f_.py diff --git a/migrations/versions/69799b785e40_.py b/_migrations/versions/69799b785e40_.py similarity index 100% rename from migrations/versions/69799b785e40_.py rename to _migrations/versions/69799b785e40_.py diff --git a/migrations/versions/75d00484181f_.py b/_migrations/versions/75d00484181f_.py similarity index 100% rename from migrations/versions/75d00484181f_.py rename to _migrations/versions/75d00484181f_.py diff --git a/migrations/versions/9bee782d5c72_.py b/_migrations/versions/9bee782d5c72_.py similarity index 100% rename from migrations/versions/9bee782d5c72_.py rename to _migrations/versions/9bee782d5c72_.py diff --git a/migrations/versions/b5aaa346f45d_.py b/_migrations/versions/b5aaa346f45d_.py similarity index 100% rename from migrations/versions/b5aaa346f45d_.py rename to _migrations/versions/b5aaa346f45d_.py diff --git a/migrations/versions/ce66d77e8a63_.py b/_migrations/versions/ce66d77e8a63_.py similarity index 100% rename from migrations/versions/ce66d77e8a63_.py rename to _migrations/versions/ce66d77e8a63_.py diff --git a/migrations/versions/cfb635d9b172_.py b/_migrations/versions/cfb635d9b172_.py similarity index 100% rename from migrations/versions/cfb635d9b172_.py rename to _migrations/versions/cfb635d9b172_.py diff --git a/migrations/versions/e253ee37986d_.py b/_migrations/versions/e253ee37986d_.py similarity index 100% rename from migrations/versions/e253ee37986d_.py rename to _migrations/versions/e253ee37986d_.py diff --git a/migrations/versions/e3c38d00d77e_.py b/_migrations/versions/e3c38d00d77e_.py similarity index 100% rename from migrations/versions/e3c38d00d77e_.py rename to _migrations/versions/e3c38d00d77e_.py diff --git a/migrations/versions/f446b9619bae_.py b/_migrations/versions/f446b9619bae_.py similarity index 100% rename from migrations/versions/f446b9619bae_.py rename to _migrations/versions/f446b9619bae_.py diff --git a/migrations/versions/43afb694bcba_.py b/migrations/versions/43afb694bcba_.py new file mode 100644 index 0000000..d72b4bb --- /dev/null +++ b/migrations/versions/43afb694bcba_.py @@ -0,0 +1,94 @@ +"""empty message + +Revision ID: 43afb694bcba +Revises: +Create Date: 2019-03-21 17:27:23.180765 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '43afb694bcba' +down_revision = None +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('items', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('name', sa.String(length=256), nullable=False), + sa.Column('price', sa.Numeric(precision=10, scale=2), nullable=True), + sa.Column('cog', sa.Numeric(precision=10, scale=2), nullable=True), + sa.Column('inventory_count', sa.Integer(), nullable=True), + sa.Column('active', sa.Boolean(), nullable=True), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('users', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('name', sa.String(length=256), nullable=True), + sa.Column('email', sa.String(length=256), nullable=True), + sa.Column('password', sa.String(length=256), nullable=True), + sa.Column('type', sa.String(length=64), nullable=True), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('customers', + sa.Column('phone', sa.String(length=32), nullable=True), + sa.Column('id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['id'], ['users.id'], onupdate='CASCADE', ondelete='CASCADE'), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('employees', + sa.Column('pay_rate', sa.Numeric(precision=5, scale=2), nullable=True), + sa.Column('id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['id'], ['users.id'], onupdate='CASCADE', ondelete='CASCADE'), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('managers', + sa.Column('id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['id'], ['users.id'], onupdate='CASCADE', ondelete='CASCADE'), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('orders', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('date_created', sa.DateTime(), nullable=True), + sa.Column('cust_id', sa.Integer(), nullable=True), + sa.Column('empl_id', sa.Integer(), nullable=True), + sa.ForeignKeyConstraint(['cust_id'], ['customers.id'], ), + sa.ForeignKeyConstraint(['empl_id'], ['employees.id'], ), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('reservations', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('cust_id', sa.Integer(), nullable=True), + sa.Column('date', sa.String(length=32), nullable=True), + sa.Column('time', sa.String(length=32), nullable=True), + sa.Column('party', sa.String(length=32), nullable=True), + sa.ForeignKeyConstraint(['cust_id'], ['customers.id'], ondelete='CASCADE'), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('order_items', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('order_id', sa.Integer(), nullable=False), + sa.Column('item_id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['item_id'], ['items.id'], ), + sa.ForeignKeyConstraint(['order_id'], ['orders.id'], ), + sa.PrimaryKeyConstraint('id') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('order_items') + op.drop_table('reservations') + op.drop_table('orders') + op.drop_table('managers') + op.drop_table('employees') + op.drop_table('customers') + op.drop_table('users') + op.drop_table('items') + # ### end Alembic commands ### diff --git a/migrations/versions/9bf5da0d7ef4_.py b/migrations/versions/9bf5da0d7ef4_.py deleted file mode 100644 index 3d35d02..0000000 --- a/migrations/versions/9bf5da0d7ef4_.py +++ /dev/null @@ -1,28 +0,0 @@ -"""empty message - -Revision ID: 9bf5da0d7ef4 -Revises: 0dd416463f04 -Create Date: 2019-03-21 13:17:16.291176 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '9bf5da0d7ef4' -down_revision = '0dd416463f04' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('items', sa.Column('active', sa.Boolean(), nullable=True)) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_column('items', 'active') - # ### end Alembic commands ### From 247f5c0463508f8e9973fd2302f2f506d226ce16 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Thu, 21 Mar 2019 17:36:27 -0700 Subject: [PATCH 80/87] delete old files --- _migrations/README | 1 - _migrations/alembic.ini | 45 ------------- _migrations/env.py | 95 --------------------------- _migrations/script.py.mako | 24 ------- _migrations/versions/0dd416463f04_.py | 36 ---------- _migrations/versions/224d552285d8_.py | 38 ----------- _migrations/versions/25497ae8ae66_.py | 51 -------------- _migrations/versions/339748f86335_.py | 32 --------- _migrations/versions/393789f720a7_.py | 34 ---------- _migrations/versions/39b79e8b1d05_.py | 28 -------- _migrations/versions/46b05022d86b_.py | 30 --------- _migrations/versions/5f81300e98dd_.py | 36 ---------- _migrations/versions/67b3d9d9b73f_.py | 36 ---------- _migrations/versions/69799b785e40_.py | 30 --------- _migrations/versions/75d00484181f_.py | 31 --------- _migrations/versions/9bee782d5c72_.py | 44 ------------- _migrations/versions/b5aaa346f45d_.py | 78 ---------------------- _migrations/versions/ce66d77e8a63_.py | 44 ------------- _migrations/versions/cfb635d9b172_.py | 32 --------- _migrations/versions/e253ee37986d_.py | 30 --------- _migrations/versions/e3c38d00d77e_.py | 32 --------- _migrations/versions/f446b9619bae_.py | 32 --------- 22 files changed, 839 deletions(-) delete mode 100644 _migrations/README delete mode 100644 _migrations/alembic.ini delete mode 100644 _migrations/env.py delete mode 100644 _migrations/script.py.mako delete mode 100644 _migrations/versions/0dd416463f04_.py delete mode 100644 _migrations/versions/224d552285d8_.py delete mode 100644 _migrations/versions/25497ae8ae66_.py delete mode 100644 _migrations/versions/339748f86335_.py delete mode 100644 _migrations/versions/393789f720a7_.py delete mode 100644 _migrations/versions/39b79e8b1d05_.py delete mode 100644 _migrations/versions/46b05022d86b_.py delete mode 100644 _migrations/versions/5f81300e98dd_.py delete mode 100644 _migrations/versions/67b3d9d9b73f_.py delete mode 100644 _migrations/versions/69799b785e40_.py delete mode 100644 _migrations/versions/75d00484181f_.py delete mode 100644 _migrations/versions/9bee782d5c72_.py delete mode 100644 _migrations/versions/b5aaa346f45d_.py delete mode 100644 _migrations/versions/ce66d77e8a63_.py delete mode 100644 _migrations/versions/cfb635d9b172_.py delete mode 100644 _migrations/versions/e253ee37986d_.py delete mode 100644 _migrations/versions/e3c38d00d77e_.py delete mode 100644 _migrations/versions/f446b9619bae_.py diff --git a/_migrations/README b/_migrations/README deleted file mode 100644 index 98e4f9c..0000000 --- a/_migrations/README +++ /dev/null @@ -1 +0,0 @@ -Generic single-database configuration. \ No newline at end of file diff --git a/_migrations/alembic.ini b/_migrations/alembic.ini deleted file mode 100644 index f8ed480..0000000 --- a/_migrations/alembic.ini +++ /dev/null @@ -1,45 +0,0 @@ -# A generic, single database configuration. - -[alembic] -# template used to generate migration files -# file_template = %%(rev)s_%%(slug)s - -# set to 'true' to run the environment during -# the 'revision' command, regardless of autogenerate -# revision_environment = false - - -# Logging configuration -[loggers] -keys = root,sqlalchemy,alembic - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = WARN -handlers = console -qualname = - -[logger_sqlalchemy] -level = WARN -handlers = -qualname = sqlalchemy.engine - -[logger_alembic] -level = INFO -handlers = -qualname = alembic - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(levelname)-5.5s [%(name)s] %(message)s -datefmt = %H:%M:%S diff --git a/_migrations/env.py b/_migrations/env.py deleted file mode 100644 index 169d487..0000000 --- a/_migrations/env.py +++ /dev/null @@ -1,95 +0,0 @@ -from __future__ import with_statement - -import logging -from logging.config import fileConfig - -from sqlalchemy import engine_from_config -from sqlalchemy import pool - -from alembic import context - -# this is the Alembic Config object, which provides -# access to the values within the .ini file in use. -config = context.config - -# Interpret the config file for Python logging. -# This line sets up loggers basically. -fileConfig(config.config_file_name) -logger = logging.getLogger('alembic.env') - -# add your model's MetaData object here -# for 'autogenerate' support -# from myapp import mymodel -# target_metadata = mymodel.Base.metadata -from flask import current_app -config.set_main_option('sqlalchemy.url', - current_app.config.get('SQLALCHEMY_DATABASE_URI')) -target_metadata = current_app.extensions['migrate'].db.metadata - -# other values from the config, defined by the needs of env.py, -# can be acquired: -# my_important_option = config.get_main_option("my_important_option") -# ... etc. - - -def run_migrations_offline(): - """Run migrations in 'offline' mode. - - This configures the context with just a URL - and not an Engine, though an Engine is acceptable - here as well. By skipping the Engine creation - we don't even need a DBAPI to be available. - - Calls to context.execute() here emit the given string to the - script output. - - """ - url = config.get_main_option("sqlalchemy.url") - context.configure( - url=url, target_metadata=target_metadata, literal_binds=True - ) - - with context.begin_transaction(): - context.run_migrations() - - -def run_migrations_online(): - """Run migrations in 'online' mode. - - In this scenario we need to create an Engine - and associate a connection with the context. - - """ - - # this callback is used to prevent an auto-migration from being generated - # when there are no changes to the schema - # reference: http://alembic.zzzcomputing.com/en/latest/cookbook.html - def process_revision_directives(context, revision, directives): - if getattr(config.cmd_opts, 'autogenerate', False): - script = directives[0] - if script.upgrade_ops.is_empty(): - directives[:] = [] - logger.info('No changes in schema detected.') - - connectable = engine_from_config( - config.get_section(config.config_ini_section), - prefix='sqlalchemy.', - poolclass=pool.NullPool, - ) - - with connectable.connect() as connection: - context.configure( - connection=connection, - target_metadata=target_metadata, - process_revision_directives=process_revision_directives, - **current_app.extensions['migrate'].configure_args - ) - - with context.begin_transaction(): - context.run_migrations() - - -if context.is_offline_mode(): - run_migrations_offline() -else: - run_migrations_online() diff --git a/_migrations/script.py.mako b/_migrations/script.py.mako deleted file mode 100644 index 2c01563..0000000 --- a/_migrations/script.py.mako +++ /dev/null @@ -1,24 +0,0 @@ -"""${message} - -Revision ID: ${up_revision} -Revises: ${down_revision | comma,n} -Create Date: ${create_date} - -""" -from alembic import op -import sqlalchemy as sa -${imports if imports else ""} - -# revision identifiers, used by Alembic. -revision = ${repr(up_revision)} -down_revision = ${repr(down_revision)} -branch_labels = ${repr(branch_labels)} -depends_on = ${repr(depends_on)} - - -def upgrade(): - ${upgrades if upgrades else "pass"} - - -def downgrade(): - ${downgrades if downgrades else "pass"} diff --git a/_migrations/versions/0dd416463f04_.py b/_migrations/versions/0dd416463f04_.py deleted file mode 100644 index 393be6a..0000000 --- a/_migrations/versions/0dd416463f04_.py +++ /dev/null @@ -1,36 +0,0 @@ -"""empty message - -Revision ID: 0dd416463f04 -Revises: 67b3d9d9b73f -Create Date: 2019-03-21 10:43:33.366354 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '0dd416463f04' -down_revision = '67b3d9d9b73f' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table('reservations', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('cust_id', sa.Integer(), nullable=True), - sa.Column('date', sa.String(length=32), nullable=True), - sa.Column('time', sa.String(length=32), nullable=True), - sa.Column('party', sa.String(length=32), nullable=True), - sa.ForeignKeyConstraint(['cust_id'], ['customers.id'], ondelete='CASCADE'), - sa.PrimaryKeyConstraint('id') - ) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_table('reservations') - # ### end Alembic commands ### diff --git a/_migrations/versions/224d552285d8_.py b/_migrations/versions/224d552285d8_.py deleted file mode 100644 index 099fde3..0000000 --- a/_migrations/versions/224d552285d8_.py +++ /dev/null @@ -1,38 +0,0 @@ -"""empty message - -Revision ID: 224d552285d8 -Revises: ce66d77e8a63 -Create Date: 2019-03-19 11:04:47.053201 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '224d552285d8' -down_revision = 'ce66d77e8a63' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_constraint('customers_id_fkey', 'customers', type_='foreignkey') - op.create_foreign_key(None, 'customers', 'users', ['id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') - op.drop_constraint('employees_id_fkey', 'employees', type_='foreignkey') - op.create_foreign_key(None, 'employees', 'users', ['id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') - op.drop_constraint('managers_id_fkey', 'managers', type_='foreignkey') - op.create_foreign_key(None, 'managers', 'users', ['id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_constraint(None, 'managers', type_='foreignkey') - op.create_foreign_key('managers_id_fkey', 'managers', 'users', ['id'], ['id']) - op.drop_constraint(None, 'employees', type_='foreignkey') - op.create_foreign_key('employees_id_fkey', 'employees', 'users', ['id'], ['id']) - op.drop_constraint(None, 'customers', type_='foreignkey') - op.create_foreign_key('customers_id_fkey', 'customers', 'users', ['id'], ['id']) - # ### end Alembic commands ### diff --git a/_migrations/versions/25497ae8ae66_.py b/_migrations/versions/25497ae8ae66_.py deleted file mode 100644 index 8fc5615..0000000 --- a/_migrations/versions/25497ae8ae66_.py +++ /dev/null @@ -1,51 +0,0 @@ -"""empty message - -Revision ID: 25497ae8ae66 -Revises: 9bee782d5c72 -Create Date: 2019-03-18 21:48:12.783527 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '25497ae8ae66' -down_revision = '9bee782d5c72' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table('users', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('name', sa.String(length=256), nullable=True), - sa.Column('email', sa.String(length=256), nullable=True), - sa.Column('password', sa.String(length=256), nullable=True), - sa.Column('type', sa.String(length=64), nullable=True), - sa.PrimaryKeyConstraint('id') - ) - op.create_foreign_key(None, 'customers', 'users', ['id'], ['id']) - op.drop_column('customers', 'password') - op.drop_column('customers', 'email') - op.drop_column('customers', 'name') - op.create_foreign_key(None, 'managers', 'users', ['id'], ['id']) - op.drop_column('managers', 'password') - op.drop_column('managers', 'email') - op.drop_column('managers', 'name') - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('managers', sa.Column('name', sa.VARCHAR(length=256), autoincrement=False, nullable=True)) - op.add_column('managers', sa.Column('email', sa.VARCHAR(length=256), autoincrement=False, nullable=True)) - op.add_column('managers', sa.Column('password', sa.VARCHAR(length=256), autoincrement=False, nullable=True)) - op.drop_constraint(None, 'managers', type_='foreignkey') - op.add_column('customers', sa.Column('name', sa.VARCHAR(length=256), autoincrement=False, nullable=True)) - op.add_column('customers', sa.Column('email', sa.VARCHAR(length=256), autoincrement=False, nullable=True)) - op.add_column('customers', sa.Column('password', sa.VARCHAR(length=256), autoincrement=False, nullable=True)) - op.drop_constraint(None, 'customers', type_='foreignkey') - op.drop_table('users') - # ### end Alembic commands ### diff --git a/_migrations/versions/339748f86335_.py b/_migrations/versions/339748f86335_.py deleted file mode 100644 index 2dbfe95..0000000 --- a/_migrations/versions/339748f86335_.py +++ /dev/null @@ -1,32 +0,0 @@ -"""empty message - -Revision ID: 339748f86335 -Revises: e253ee37986d -Create Date: 2019-03-20 15:36:15.900040 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '339748f86335' -down_revision = 'e253ee37986d' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_constraint('reservations_cust_id_fkey', 'reservations', type_='foreignkey') - op.create_foreign_key(None, 'reservations', 'customers', ['id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') - op.drop_column('reservations', 'cust_id') - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('reservations', sa.Column('cust_id', sa.INTEGER(), autoincrement=False, nullable=True)) - op.drop_constraint(None, 'reservations', type_='foreignkey') - op.create_foreign_key('reservations_cust_id_fkey', 'reservations', 'customers', ['cust_id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') - # ### end Alembic commands ### diff --git a/_migrations/versions/393789f720a7_.py b/_migrations/versions/393789f720a7_.py deleted file mode 100644 index c390f0f..0000000 --- a/_migrations/versions/393789f720a7_.py +++ /dev/null @@ -1,34 +0,0 @@ -"""empty message - -Revision ID: 393789f720a7 -Revises: 0dd416463f04 -Create Date: 2019-03-21 11:55:22.498992 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '393789f720a7' -down_revision = '0dd416463f04' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('items', sa.Column('active', sa.Boolean(), nullable=True)) - op.alter_column('orders', 'cust_id', - existing_type=sa.INTEGER(), - nullable=True) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.alter_column('orders', 'cust_id', - existing_type=sa.INTEGER(), - nullable=False) - op.drop_column('items', 'active') - # ### end Alembic commands ### diff --git a/_migrations/versions/39b79e8b1d05_.py b/_migrations/versions/39b79e8b1d05_.py deleted file mode 100644 index d16cf23..0000000 --- a/_migrations/versions/39b79e8b1d05_.py +++ /dev/null @@ -1,28 +0,0 @@ -"""empty message - -Revision ID: 39b79e8b1d05 -Revises: f446b9619bae -Create Date: 2019-03-21 09:37:15.998384 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '39b79e8b1d05' -down_revision = 'f446b9619bae' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('items', sa.Column('active', sa.Boolean(), nullable=True)) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_column('items', 'active') - # ### end Alembic commands ### diff --git a/_migrations/versions/46b05022d86b_.py b/_migrations/versions/46b05022d86b_.py deleted file mode 100644 index 51a6134..0000000 --- a/_migrations/versions/46b05022d86b_.py +++ /dev/null @@ -1,30 +0,0 @@ -"""empty message - -Revision ID: 46b05022d86b -Revises: 75d00484181f -Create Date: 2019-03-21 10:14:53.436271 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '46b05022d86b' -down_revision = '75d00484181f' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('reservations', sa.Column('id', sa.Integer(), nullable=False)) - op.drop_column('reservations', 'res_id') - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('reservations', sa.Column('res_id', sa.INTEGER(), autoincrement=False, nullable=False)) - op.drop_column('reservations', 'id') - # ### end Alembic commands ### diff --git a/_migrations/versions/5f81300e98dd_.py b/_migrations/versions/5f81300e98dd_.py deleted file mode 100644 index aa22488..0000000 --- a/_migrations/versions/5f81300e98dd_.py +++ /dev/null @@ -1,36 +0,0 @@ -"""empty message - -Revision ID: 5f81300e98dd -Revises: e3c38d00d77e -Create Date: 2019-03-20 13:30:49.392975 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '5f81300e98dd' -down_revision = 'e3c38d00d77e' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table('reservations', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('date', sa.String(length=32), nullable=True), - sa.Column('time', sa.String(length=32), nullable=True), - sa.Column('party', sa.String(length=32), nullable=True), - sa.Column('cust_id', sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(['cust_id'], ['customers.id'], onupdate='CASCADE', ondelete='CASCADE'), - sa.PrimaryKeyConstraint('id', 'cust_id') - ) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_table('reservations') - # ### end Alembic commands ### diff --git a/_migrations/versions/67b3d9d9b73f_.py b/_migrations/versions/67b3d9d9b73f_.py deleted file mode 100644 index d6cfb0a..0000000 --- a/_migrations/versions/67b3d9d9b73f_.py +++ /dev/null @@ -1,36 +0,0 @@ -"""empty message - -Revision ID: 67b3d9d9b73f -Revises: 46b05022d86b -Create Date: 2019-03-21 10:17:26.860819 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '67b3d9d9b73f' -down_revision = '46b05022d86b' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table('reservations', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('cust_id', sa.Integer(), nullable=True), - sa.Column('date', sa.String(length=32), nullable=True), - sa.Column('time', sa.String(length=32), nullable=True), - sa.Column('party', sa.String(length=32), nullable=True), - sa.ForeignKeyConstraint(['cust_id'], ['customers.id'], ondelete='CASCADE'), - sa.PrimaryKeyConstraint('id') - ) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_table('reservations') - # ### end Alembic commands ### diff --git a/_migrations/versions/69799b785e40_.py b/_migrations/versions/69799b785e40_.py deleted file mode 100644 index 9d84b55..0000000 --- a/_migrations/versions/69799b785e40_.py +++ /dev/null @@ -1,30 +0,0 @@ -"""empty message - -Revision ID: 69799b785e40 -Revises: 5f81300e98dd -Create Date: 2019-03-20 13:38:15.068104 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '69799b785e40' -down_revision = '5f81300e98dd' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_constraint('reservations_cust_id_fkey', 'reservations', type_='foreignkey') - op.drop_column('reservations', 'cust_id') - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('reservations', sa.Column('cust_id', sa.INTEGER(), autoincrement=False, nullable=False)) - op.create_foreign_key('reservations_cust_id_fkey', 'reservations', 'customers', ['cust_id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') - # ### end Alembic commands ### diff --git a/_migrations/versions/75d00484181f_.py b/_migrations/versions/75d00484181f_.py deleted file mode 100644 index 4ff9e7a..0000000 --- a/_migrations/versions/75d00484181f_.py +++ /dev/null @@ -1,31 +0,0 @@ -"""empty message - -Revision ID: 75d00484181f -Revises: 39b79e8b1d05 -Create Date: 2019-03-21 09:49:26.595037 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '75d00484181f' -down_revision = '39b79e8b1d05' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('reservations', sa.Column('res_id', sa.Integer(), nullable=False)) - op.drop_column('reservations', 'id') - sa.PrimaryKeyConstraint('res_id') - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('reservations', sa.Column('id', sa.INTEGER(), autoincrement=False, nullable=False)) - op.drop_column('reservations', 'res_id') - # ### end Alembic commands ### diff --git a/_migrations/versions/9bee782d5c72_.py b/_migrations/versions/9bee782d5c72_.py deleted file mode 100644 index 9f35d27..0000000 --- a/_migrations/versions/9bee782d5c72_.py +++ /dev/null @@ -1,44 +0,0 @@ -"""empty message - -Revision ID: 9bee782d5c72 -Revises: b5aaa346f45d -Create Date: 2019-03-18 14:33:12.225219 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '9bee782d5c72' -down_revision = 'b5aaa346f45d' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table('order_items', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('order_id', sa.Integer(), nullable=False), - sa.Column('item_id', sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(['item_id'], ['items.id'], ), - sa.ForeignKeyConstraint(['order_id'], ['orders.id'], ), - sa.PrimaryKeyConstraint('id') - ) - op.drop_table('orders_contain') - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table('orders_contain', - sa.Column('id', sa.INTEGER(), autoincrement=True, nullable=False), - sa.Column('order_id', sa.INTEGER(), autoincrement=False, nullable=False), - sa.Column('item_id', sa.INTEGER(), autoincrement=False, nullable=False), - sa.ForeignKeyConstraint(['item_id'], ['items.id'], name='orders_contain_item_id_fkey'), - sa.ForeignKeyConstraint(['order_id'], ['orders.id'], name='orders_contain_order_id_fkey'), - sa.PrimaryKeyConstraint('id', name='orders_contain_pkey') - ) - op.drop_table('order_items') - # ### end Alembic commands ### diff --git a/_migrations/versions/b5aaa346f45d_.py b/_migrations/versions/b5aaa346f45d_.py deleted file mode 100644 index c1d75ec..0000000 --- a/_migrations/versions/b5aaa346f45d_.py +++ /dev/null @@ -1,78 +0,0 @@ -"""empty message - -Revision ID: b5aaa346f45d -Revises: -Create Date: 2019-03-18 14:09:19.783445 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'b5aaa346f45d' -down_revision = None -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table('customers', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('name', sa.String(length=256), nullable=True), - sa.Column('email', sa.String(length=256), nullable=True), - sa.Column('password', sa.String(length=256), nullable=True), - sa.Column('phone', sa.String(length=32), nullable=True), - sa.PrimaryKeyConstraint('id') - ) - op.create_table('employee', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('name', sa.String(length=256), nullable=True), - sa.Column('pay_rate', sa.Float(precision=5, asdecimal=2), nullable=True), - sa.PrimaryKeyConstraint('id') - ) - op.create_table('items', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('name', sa.String(length=256), nullable=False), - sa.Column('price', sa.Float(precision=10, asdecimal=2), nullable=True), - sa.Column('cog', sa.Float(precision=10, asdecimal=2), nullable=True), - sa.Column('inventory_count', sa.Integer(), nullable=True), - sa.PrimaryKeyConstraint('id') - ) - op.create_table('managers', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('name', sa.String(length=256), nullable=True), - sa.Column('email', sa.String(length=256), nullable=True), - sa.Column('password', sa.String(length=256), nullable=True), - sa.PrimaryKeyConstraint('id') - ) - op.create_table('orders', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('cust_id', sa.Integer(), nullable=False), - sa.Column('empl_id', sa.Integer(), nullable=False), - sa.Column('date_created', sa.DateTime(), nullable=True), - sa.ForeignKeyConstraint(['cust_id'], ['customers.id'], ), - sa.ForeignKeyConstraint(['empl_id'], ['employee.id'], ), - sa.PrimaryKeyConstraint('id') - ) - op.create_table('orders_contain', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('order_id', sa.Integer(), nullable=False), - sa.Column('item_id', sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(['item_id'], ['items.id'], ), - sa.ForeignKeyConstraint(['order_id'], ['orders.id'], ), - sa.PrimaryKeyConstraint('id') - ) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_table('orders_contain') - op.drop_table('orders') - op.drop_table('managers') - op.drop_table('items') - op.drop_table('employee') - op.drop_table('customers') - # ### end Alembic commands ### diff --git a/_migrations/versions/ce66d77e8a63_.py b/_migrations/versions/ce66d77e8a63_.py deleted file mode 100644 index 6cb877f..0000000 --- a/_migrations/versions/ce66d77e8a63_.py +++ /dev/null @@ -1,44 +0,0 @@ -"""empty message - -Revision ID: ce66d77e8a63 -Revises: 25497ae8ae66 -Create Date: 2019-03-18 22:03:04.923521 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'ce66d77e8a63' -down_revision = '25497ae8ae66' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table('employees', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('pay_rate', sa.Numeric(precision=5, scale=2), nullable=True), - sa.ForeignKeyConstraint(['id'], ['users.id'], ), - sa.PrimaryKeyConstraint('id') - ) - op.drop_constraint('orders_empl_id_fkey', 'orders', type_='foreignkey') - op.drop_table('employee') - op.create_foreign_key(None, 'orders', 'employees', ['empl_id'], ['id']) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_constraint(None, 'orders', type_='foreignkey') - op.create_foreign_key('orders_empl_id_fkey', 'orders', 'employee', ['empl_id'], ['id']) - op.create_table('employee', - sa.Column('id', sa.INTEGER(), autoincrement=True, nullable=False), - sa.Column('name', sa.VARCHAR(length=256), autoincrement=False, nullable=True), - sa.Column('pay_rate', sa.REAL(), autoincrement=False, nullable=True), - sa.PrimaryKeyConstraint('id', name='employee_pkey') - ) - op.drop_table('employees') - # ### end Alembic commands ### diff --git a/_migrations/versions/cfb635d9b172_.py b/_migrations/versions/cfb635d9b172_.py deleted file mode 100644 index 9eeffe7..0000000 --- a/_migrations/versions/cfb635d9b172_.py +++ /dev/null @@ -1,32 +0,0 @@ -"""empty message - -Revision ID: cfb635d9b172 -Revises: 339748f86335 -Create Date: 2019-03-21 00:44:50.381285 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'cfb635d9b172' -down_revision = '339748f86335' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('reservations', sa.Column('cust_id', sa.Integer(), nullable=True)) - op.drop_constraint('reservations_id_fkey', 'reservations', type_='foreignkey') - op.create_foreign_key(None, 'reservations', 'customers', ['cust_id'], ['id'], ondelete='CASCADE') - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_constraint(None, 'reservations', type_='foreignkey') - op.create_foreign_key('reservations_id_fkey', 'reservations', 'customers', ['id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') - op.drop_column('reservations', 'cust_id') - # ### end Alembic commands ### diff --git a/_migrations/versions/e253ee37986d_.py b/_migrations/versions/e253ee37986d_.py deleted file mode 100644 index df5e39b..0000000 --- a/_migrations/versions/e253ee37986d_.py +++ /dev/null @@ -1,30 +0,0 @@ -"""empty message - -Revision ID: e253ee37986d -Revises: 69799b785e40 -Create Date: 2019-03-20 13:44:49.615143 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'e253ee37986d' -down_revision = '69799b785e40' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('reservations', sa.Column('cust_id', sa.Integer(), nullable=True)) - op.create_foreign_key(None, 'reservations', 'customers', ['cust_id'], ['id'], onupdate='CASCADE', ondelete='CASCADE') - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_constraint(None, 'reservations', type_='foreignkey') - op.drop_column('reservations', 'cust_id') - # ### end Alembic commands ### diff --git a/_migrations/versions/e3c38d00d77e_.py b/_migrations/versions/e3c38d00d77e_.py deleted file mode 100644 index 53162c2..0000000 --- a/_migrations/versions/e3c38d00d77e_.py +++ /dev/null @@ -1,32 +0,0 @@ -"""empty message - -Revision ID: e3c38d00d77e -Revises: 224d552285d8 -Create Date: 2019-03-19 12:06:20.368123 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'e3c38d00d77e' -down_revision = '224d552285d8' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.alter_column('orders', 'empl_id', - existing_type=sa.INTEGER(), - nullable=True) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.alter_column('orders', 'empl_id', - existing_type=sa.INTEGER(), - nullable=False) - # ### end Alembic commands ### diff --git a/_migrations/versions/f446b9619bae_.py b/_migrations/versions/f446b9619bae_.py deleted file mode 100644 index b16167c..0000000 --- a/_migrations/versions/f446b9619bae_.py +++ /dev/null @@ -1,32 +0,0 @@ -"""empty message - -Revision ID: f446b9619bae -Revises: cfb635d9b172 -Create Date: 2019-03-21 09:16:51.014029 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'f446b9619bae' -down_revision = 'cfb635d9b172' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.alter_column('orders', 'cust_id', - existing_type=sa.INTEGER(), - nullable=True) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.alter_column('orders', 'cust_id', - existing_type=sa.INTEGER(), - nullable=False) - # ### end Alembic commands ### From 5e3ce603978a3cc7199a75e0113a976fc529dc9d Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Fri, 22 Mar 2019 00:27:08 -0700 Subject: [PATCH 81/87] new report - employee items totals --- src/forms.py | 25 ++++++++++++------ src/models_reports.py | 35 +++++++++++++++++++------ src/routes.py | 22 +++++++++++++--- src/static/css/base.css | 3 +++ src/static/css/module.css | 9 +++++++ src/templates/manager/by_customer.html | 2 +- src/templates/manager/by_employee.html | 35 +++++++++++++++++++++++++ src/templates/manager/report_index.html | 16 ++++++++--- 8 files changed, 123 insertions(+), 24 deletions(-) create mode 100644 src/templates/manager/by_employee.html diff --git a/src/forms.py b/src/forms.py index a49e37c..604823d 100644 --- a/src/forms.py +++ b/src/forms.py @@ -36,16 +36,16 @@ class AddItemsForm(FlaskForm): cost = StringField('cost', validators=[DataRequired()]) count = StringField('count', validators=[DataRequired()]) + class DateTimeForm(FlaskForm): - start_date = DateField('Start Date', format = '%Y-%m-%d') + start_date = DateField('Start Date', format='%Y-%m-%d') start_time = TimeField('Start Time') - end_date = DateField('End Date', format = '%Y-%m-%d') + end_date = DateField('End Date', format='%Y-%m-%d') end_time = TimeField('Start Time') - class ReservationForm(FlaskForm): - date = DateField('date', format = '%Y-%m-%d') + date = DateField('date', format='%Y-%m-%d') time = TimeField('time') party = StringField('party', validators=[DataRequired()]) @@ -62,9 +62,9 @@ class OrderForm(FlaskForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.customer.choices = [('None', '')] + [(str(c.id), c.name) - for c in Customer.query.all()] + for c in Customer.query.all()] self.employee.choices = [('None', '')] + [(str(e.id), e.name) - for e in Employee.query.all()] + for e in Employee.query.all()] class UpdateItemsForm(FlaskForm): @@ -82,12 +82,10 @@ def __init__(self, *args, **kwargs): for item in Item.query.filter_by(active=True).all()] - class ItemReportForm(FlaskForm): """ item form """ - items = SelectField('items') def __init__(self, *args, **kwargs): @@ -137,3 +135,14 @@ class EmployeeForm(FlaskForm): email = StringField('email', validators=[DataRequired(), Email()]) password = PasswordField('password', validators=[DataRequired()]) pay_rate = StringField('pay rate') + + +class EmployeeSelect(FlaskForm): + """ creates a select-option element with all employees """ + + employee = SelectField('employee') + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.employee.choices = [('None', '')] + [(str(e.id), e.name) + for e in Employee.query.all()] diff --git a/src/models_reports.py b/src/models_reports.py index 8376192..3cdef4a 100644 --- a/src/models_reports.py +++ b/src/models_reports.py @@ -29,10 +29,10 @@ def item_totals(self, cust_id): def customer_totals(self, item_id=0): rtn = [] SQL = """ - select users.name, count(items.id), items.name from users +select users.name, count(items.id), items.name from users inner join customers on users.id = customers.id -inner join orders on customers.id=orders.cust_id -inner join order_items on orders.id=order_items.order_id +inner join orders on customers.id=orders.cust_id +inner join order_items on orders.id=order_items.order_id inner join items on order_items.item_id=items.id where items.id={} group by users.name, items.name; """.format(item_id) @@ -40,18 +40,37 @@ def customer_totals(self, item_id=0): for row in test: rtn.append(row) return rtn - - def time(self,start_time, end_time): - rtn =[] + + def time(self, start_time, end_time): + rtn = [] SQL = """select users.name, orders.date_created, count(items.id), items.name from users inner join customers on users.id = customers.id inner join orders on customers.id=orders.cust_id -inner join order_items on orders.id=order_items.order_id +inner join order_items on orders.id=order_items.order_id inner join items on order_items.item_id=items.id where orders.date_created > '{}' and orders.date_created < '{}' -group by users.name, orders.date_created, items.name;""".format(start_time,end_time) +group by users.name, orders.date_created, items.name;""".format(start_time, end_time) test = db.session.execute(SQL) for row in test: rtn.append(row) return rtn + + +class EmployeeOrders(): + + @classmethod + def employee_items_total(cls, empl_id): + rtn = [] + SQL = """ +select items.name, count(items.id) from users +inner join employees on users.id = employees.id +inner join orders on employees.id=orders.empl_id +inner join order_items on orders.id=order_items.order_id +inner join items on order_items.item_id=items.id +where employees.id={} +group by items.name; """.format(empl_id) + test = db.session.execute(SQL) + for row in test: + rtn.append(row) + return rtn \ No newline at end of file diff --git a/src/routes.py b/src/routes.py index 105a7d1..7a6d2a1 100644 --- a/src/routes.py +++ b/src/routes.py @@ -1,10 +1,11 @@ from flask import render_template, redirect, url_for, request, flash, session, g from sqlalchemy.exc import DBAPIError, IntegrityError from . import app -from .forms import RegisterForm, AddItemsForm, OrderForm, UpdateItemsForm, ReservationForm -from .forms import DeleteForm, DeleteUserForm, ManagerForm, ItemReportForm, EmployeeForm, DateTimeForm +from .forms import RegisterForm, AddItemsForm, OrderForm, UpdateItemsForm +from .forms import DeleteForm, DeleteUserForm, ManagerForm, ItemReportForm +from .forms import ReservationForm, EmployeeForm, DateTimeForm, EmployeeSelect from .models import db, User, Manager, Customer, Employee, Item, Order, Reservation -from .models_reports import CustomerOrders +from .models_reports import CustomerOrders, EmployeeOrders from .auth import login_required, authorization_required import requests import json @@ -279,3 +280,18 @@ def by_item(): items = Item.query.all() return render_template('/manager/by_item.html', items=items, form=form, content=None) + + +@app.route('/manager/by_employee', methods=['GET', 'POST']) +@authorization_required(roles=['employee', 'manager']) +def by_employee(): + """ + route handler for total employee sales + """ + form = EmployeeSelect() + if form.validate_on_submit(): + empl_id = form.data['employee'] + report = EmployeeOrders.employee_items_total(empl_id) + return render_template('/manager/by_employee.html', form=form, content=report) + + return render_template('/manager/by_employee.html', form=form, content=None) \ No newline at end of file diff --git a/src/static/css/base.css b/src/static/css/base.css index 1a209a3..7cd558b 100644 --- a/src/static/css/base.css +++ b/src/static/css/base.css @@ -42,4 +42,7 @@ table tr td { padding: 4px 18px; text-align: left; border-bottom: 1px solid #E1E1E1; +} +.container p { + margin-bottom: 1.5rem; } \ No newline at end of file diff --git a/src/static/css/module.css b/src/static/css/module.css index 50a0d98..2430b55 100644 --- a/src/static/css/module.css +++ b/src/static/css/module.css @@ -1,3 +1,12 @@ +#reports p { + width: 60%; + font-size: 1.2em; +} +#reports p a { + float: right; + margin-bottom: 0px; +} + /* -------- Orders page -------- */ #orders { display: grid; diff --git a/src/templates/manager/by_customer.html b/src/templates/manager/by_customer.html index de6a9d0..e2966a7 100644 --- a/src/templates/manager/by_customer.html +++ b/src/templates/manager/by_customer.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block title %} -Add Items +Reports {% endblock title %} diff --git a/src/templates/manager/by_employee.html b/src/templates/manager/by_employee.html new file mode 100644 index 0000000..9068589 --- /dev/null +++ b/src/templates/manager/by_employee.html @@ -0,0 +1,35 @@ +{% extends "base.html" %} + +{% block title %} +Reports +{% endblock title %} + +{% block content %} +
    + {% if content != None %} + + + + + + + + + {% for item in content %} + + + + + {% endfor %} + +
    NameNumber Sold
    {{ item[0] }} {{ item[1] }}
    + {% endif %} +

    Select Employee

    + + +
    +{% endblock content %} \ No newline at end of file diff --git a/src/templates/manager/report_index.html b/src/templates/manager/report_index.html index 8cfd7be..f86ff2c 100644 --- a/src/templates/manager/report_index.html +++ b/src/templates/manager/report_index.html @@ -6,16 +6,24 @@ {% block content %} -
    +

    Reports

    -

    Total number of each item sold, by customer

    +

    Total number of each item sold, by customer Go +

    -

    Total customer sales, by item

    +

    Total number of each item sold, by employee + Go +

    + +

    Total customer sales, by item Go -

    Total sales, by time

    +

    + +

    Total sales, by time Go +

    From 35284794ff4e87a1fefd32609cbb2b1d60f47bd8 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Fri, 22 Mar 2019 09:11:03 -0700 Subject: [PATCH 82/87] fixed items delete bug --- src/routes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes.py b/src/routes.py index 7a6d2a1..3eba42b 100644 --- a/src/routes.py +++ b/src/routes.py @@ -112,7 +112,7 @@ def delete_items(): item.active = False db.session.commit() return redirect(url_for('.all_items')) - items = Item.query.all() + items = Item.query.filter_by(active=True).all() return render_template('items/delete_items.html', form=form, items=items) From 0820558ab6dfa76d57e4d169a6e14fdf0a83e1b4 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Fri, 22 Mar 2019 09:47:02 -0700 Subject: [PATCH 83/87] minor UX nits --- src/templates/base.html | 4 ++- src/templates/reservations.html | 44 ++++++++++++++++----------------- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/templates/base.html b/src/templates/base.html index 190b22c..bb8a5b7 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -24,6 +24,7 @@
    Welcome, {{ g.user['name'] }}
  • Home
  • About Us
  • {% if g.user %} +
  • Reservations
  • Orders
  • {% endif %} {% if g.user and g.user.type in ('employee', 'manager') %} @@ -33,7 +34,8 @@
    Welcome, {{ g.user['name'] }}
    {% if g.user and g.user.type in ('manager') %}
  • Users
  • {% endif %} -
  • Reservations
  • + +
      {% if not g.user %}
    • Register
    • Login
    • diff --git a/src/templates/reservations.html b/src/templates/reservations.html index c6f4635..10fd4c3 100644 --- a/src/templates/reservations.html +++ b/src/templates/reservations.html @@ -6,29 +6,29 @@ {% block content %} -

      Your Reservations

      - - - - - - - - - - {% for reservation in reservations %} - - - - - - {% endfor %} - -
      DateTimeParty
      {{ reservation.date }}{{ reservation.time }}{{ reservation.party }}
      - {% if form.errors%} - {{form.errors}} - {% endif %} +

      Your Reservations

      + + + + + + + + + + {% for reservation in reservations %} + + + + + + {% endfor %} + +
      DateTimeParty
      {{ reservation.date }}{{ reservation.time }}{{ reservation.party }}
      + {% if form.errors%} + {{form.errors}} + {% endif %}
      {{ form.hidden_tag() }} {{ form.date.label }}{{ form.date(size = 32)}} From 936221e6b9b03aa4ea43ceaf63ffdd3f90362b8d Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Fri, 22 Mar 2019 10:02:20 -0700 Subject: [PATCH 84/87] items report UX --- src/models_reports.py | 4 ++-- src/templates/manager/by_item.html | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/models_reports.py b/src/models_reports.py index 3cdef4a..2461f23 100644 --- a/src/models_reports.py +++ b/src/models_reports.py @@ -29,13 +29,13 @@ def item_totals(self, cust_id): def customer_totals(self, item_id=0): rtn = [] SQL = """ -select users.name, count(items.id), items.name from users +select users.name, count(items.id), items.name, items.active from users inner join customers on users.id = customers.id inner join orders on customers.id=orders.cust_id inner join order_items on orders.id=order_items.order_id inner join items on order_items.item_id=items.id where items.id={} -group by users.name, items.name; """.format(item_id) +group by users.name, items.name, items.active; """.format(item_id) test = db.session.execute(SQL) for row in test: rtn.append(row) diff --git a/src/templates/manager/by_item.html b/src/templates/manager/by_item.html index 56b6278..0bc9ef4 100644 --- a/src/templates/manager/by_item.html +++ b/src/templates/manager/by_item.html @@ -12,14 +12,18 @@ Name + Item Number Sold + Active? {% for item in content %} {{ item[0] }} + {{ item[2] }} {{ item[1] }} + {{ item[3] }} {% endfor %} From c34edd878e2dcbf31643843c50f859aa7fc0f025 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Fri, 22 Mar 2019 10:12:16 -0700 Subject: [PATCH 85/87] update items can change active --- src/forms.py | 5 +++-- src/routes.py | 2 +- src/templates/items/update_items.html | 3 +++ src/templates/manager/by_item.html | 8 ++++---- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/forms.py b/src/forms.py index 604823d..47578ac 100644 --- a/src/forms.py +++ b/src/forms.py @@ -1,5 +1,5 @@ from flask_wtf import FlaskForm -from wtforms import StringField, SelectField, PasswordField, HiddenField +from wtforms import StringField, SelectField, PasswordField, HiddenField, BooleanField from wtforms.validators import DataRequired, Email, Optional from wtforms.validators import DataRequired @@ -75,11 +75,12 @@ class UpdateItemsForm(FlaskForm): price = StringField('price', validators=[DataRequired()]) cost = StringField('cost', validators=[DataRequired()]) count = StringField('count', validators=[DataRequired()]) + active = BooleanField('active', default=True) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.items.choices = [(str(item.id), item.name) - for item in Item.query.filter_by(active=True).all()] + for item in Item.query.all()] class ItemReportForm(FlaskForm): diff --git a/src/routes.py b/src/routes.py index 3eba42b..d2c30d0 100644 --- a/src/routes.py +++ b/src/routes.py @@ -130,7 +130,7 @@ def update_items(): item.inventory_count = form.data['count'] db.session.commit() return redirect(url_for('.update_items')) - items = Item.query.filter_by(active=True).all() + items = Item.query.all() return render_template('items/update_items.html', form=form, items=items) diff --git a/src/templates/items/update_items.html b/src/templates/items/update_items.html index 413d92a..bd01c53 100644 --- a/src/templates/items/update_items.html +++ b/src/templates/items/update_items.html @@ -15,6 +15,7 @@

      All Items

      Price Cost of Good Inventory + Active? @@ -24,6 +25,7 @@

      All Items

      {{ item.price }} {{ item.cog }} {{ item.inventory_count }} + {{ item.active }} {% endfor %} @@ -33,6 +35,7 @@

      Update Item

      {{ form.hidden_tag() }} {{ form.items.label }}{{ form.items()}} + {{ form.active.label }}{{ form.active()}} {{ form.cost.label }}{{ form.cost (size = 32)}} {{ form.price.label }}{{ form.price (size = 32)}} {{ form.count.label }}{{ form.count (size = 32)}} diff --git a/src/templates/manager/by_item.html b/src/templates/manager/by_item.html index 0bc9ef4..1b45466 100644 --- a/src/templates/manager/by_item.html +++ b/src/templates/manager/by_item.html @@ -20,10 +20,10 @@ {% for item in content %} - {{ item[0] }} - {{ item[2] }} - {{ item[1] }} - {{ item[3] }} + {{ item[0] }} + {{ item[2] }} + {{ item[1] }} + {{ item[3] }} {% endfor %} From 29caa8b2c0459ddd22edd042b5eca6522fbd9540 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Fri, 22 Mar 2019 10:29:04 -0700 Subject: [PATCH 86/87] items update bug fix --- src/routes.py | 1 + src/templates/base.html | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/routes.py b/src/routes.py index d2c30d0..fe955b5 100644 --- a/src/routes.py +++ b/src/routes.py @@ -128,6 +128,7 @@ def update_items(): item.cog = form.data['cost'], item.price = form.data['price'], item.inventory_count = form.data['count'] + item.active = form.data['active'] db.session.commit() return redirect(url_for('.update_items')) items = Item.query.all() diff --git a/src/templates/base.html b/src/templates/base.html index bb8a5b7..8d809f3 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -35,7 +35,7 @@
      Welcome, {{ g.user['name'] }}
    • Users
    • {% endif %}
    -
      +
        {% if not g.user %}
      • Register
      • Login
      • From 7631292a17102c9c509010ace34ee28f3441cbd0 Mon Sep 17 00:00:00 2001 From: TheMiloAnderson Date: Fri, 22 Mar 2019 10:33:16 -0700 Subject: [PATCH 87/87] nav styling nit --- src/static/css/layout.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/static/css/layout.css b/src/static/css/layout.css index 3aa49b5..faac9ac 100644 --- a/src/static/css/layout.css +++ b/src/static/css/layout.css @@ -46,4 +46,10 @@ main { font-size: .9em; padding: 6px; } + nav #auth-nav { + margin-top: -100%; + } + nav #auth-nav a { + float: right; + } } \ No newline at end of file

    uplx;Ir85cC%?8+0S$tc%mG!NhZ6P@JSdPg&BY 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%0Dhf_L?~bkc#&gu)--nAUIi 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πh)!pR(sh#yuWTAu0FKq zRjOY_H4h2Pjt4d^m__L~st6L1BR#M{xKFY>MgnvKKm_~McfD)p|;VU$%0GjPQ1d*gfdXeM)7-Lr(DhM*tWT_u* zI{lT+kS&{Y;t>BpGM&xyH{^XZgNzPE+|eWq(i$New|$q+Hb5H=15h5?VVKFPQqfFk zy6;pj7i(Y~F2pIZV-DOAwC?`G?S%}ic!zvK$-z;F{`rr5uFS|{;<0V23Ok+6 zr717MZ>})EzUQ+=+n>_N72+@+$UxuZ1`*jpzAcZr%I=DB!|g{%&RF!Q#*aQ>!1ZMx zWco?F&?AhxxwKpU&V1y#>Vx|b6n(@jcQ1-xMfSf=ii{Xn1d1+LOXI@`ViXR~?6{I! z9olZNi&jsG_5Ikzmc(mMY|5lVL^<$Lslp*bS}F_+*j-^9*p&z4lmTZV6SFNj5>2Ij zA6t8vMaZ?n_D)VO8viIf0N56p0xoGd?ML%}=)ww%u6xJ64Va5Kl%{fJW#v2!FaUS} zX+D#xDf3*cq}0t7&KUxNzwUf%(q7C<5H{Gbn#G>NQ_*1d#4V6jtAo5dv=gb(BwHhJ z(lN*D?Xq1iUT2;}YB3ebSA*$VZHFnU!Eq6H_k-=8dFbEecYn>d^HxbXrD@B!y7y?iZ^PV}6Cdw)xZd~E zb#3drHv9Mb)@J`+fA{a`uW@K331Ra3cJoK~Pv7_cnl(W`B}UT*vjn^jRtuk$nJ8l` zDfU-}qaTAddK|%O(3@7O?;W#69P8HGb7(rtKrs*n6ZS7{UM9vxP8sS=fQwp`7ImvZ zvl}6xI;p=@P9*u`1=}y6>O)l!mZLa%*bwD#ffFo;7L0`feEroosSNj@|KI)qOr<>dA-L&4)xOI5X3Q3cL{XU>MRQ0R1E3+?c^ge>2aZ8&JZxzNFid;_ z?(c=OO0F@=CV#kJC4tRzm*2r8<9vmVi(Ywpd>;l3pjea4b1Gw!Jb^dVS0v4Ec&0Q4 z#mxg|eS6*+m<@AkA~1*5h1jr5LSfB5c49!HcF|Pi#slEx@Arz z^`R=|P>Nwfh_)NGMIMvD3e)HV-AJwK+Vg1A_KAkE(V(l!?LHcEmP2s(BXrsM3M*wR zL0Cr5LAFpzc5#^;0<1;sAY#B9gm2zR!O&fRx(IF&1E-5oa+`5xlX?fui=*2>^&@oU zSEA6LW1izU#V+dG9C)rL%;n2drlpwXIu&fc!7t88Y=tmG&`D<2mY<5)dl4)>QK^w+ zeh@fBBiZZ{9$Irv3-|evkV#sn4tdftf^GXL8WxOWH~t`%47>X8wG}{7^JD?c9m9oh zOjLYVc7rA_D`)88RMINyaZw)1w{za*JY8y8ZQ4^bdH|ij2M4p&mMxm&m-WNG*IIEL z#^AdT9D;o&4d)0MB25N3hmO!07hHA1mK+9Ul>}J_slSUy?nrj6xi-PHz0+rpOhf^O zP`w}7K<)S*mb+}16&WF=w?tM2OI{Gun!Rm~IGIJuSgE+33!K^D%s&UwH+7$v^wAc@ zG}@bpB~42ej2mQro;#0BQo6M0q)|f0D!6*dj?Iq0x6YE-9kwT=rDtoQ)41lcTgchVa56Te4+1Hh zWD#84u@FpluxYrbKmPGg?XN%mrERa)ZT0lfHd{q+rtQ_s7w!0Do;0fukN55F{w|Il zY}3=-B9mn^o7BVLp`GgNd=c#f^hYupq~K2&q)4jqmMg^GA&c$vrX;;?^JGdgp@saww6$^MyF-fgH@K^O|1>z% z$^1IPK;YhoDu_Z<73!F_!r<|0FJFe3<@Uk=)rArASe5S}CjB-l@3OvG6UeSZg8VcP zUc}~E|2yOnSk~vR-`;BtwPSs>tv&NQIhuwTS(h+aXt(F!W8Ynr5baUayof$p9Y+xf z;x@^h!W*6AHLWU_001BWNkl@h` zIk1~w2r_Rrk0zw6eu}8WH(?;Ge>cy40XIK6l0mPTa+0apt*z8OSL;aA0+vm>`On&R z+6Vo!uLvu_E+Wa!Dk+|wypkuZZR5bZIJR!P_V}of*f5%4f73jQp7WuZ0AEZ~uF)35 zuMQbG5fa4;MRdWXhzLg3+#@y^i5D+k1}_D6y8HkpDWK6iK*sN&Ok(IlPsF^3mK5Cp zZ~f5|akRvB&uG8!#ivY&&O5Z1d9q#|9Rkz!TmUsN-QTO7{vCnyZqNSDeE?rO`@6%t z+VosMR{Nypr9##FYyErl1ykWXlaS~I^X<2}b)5sK_8iV*0KCW8@9vr2WK%8ell$`S z?9CDtQEtpOI+SQEW}~jZv=H)r$aUf{9`7(O`mO)|Hg1fAzFG_KaD6nFDYMqudHcUt z1P~15Vba&TyJ3}Chy}qIDq-XpmyW>mIe7i*RXlb{JP?&^e_~c`;GJS7gGy*Ln}!uh z9s-jkoTuk#3;@HSqcvs4fS3RsG#G>Ow>$yA`Rc2tT*Jftti3otZRhfZpDYp!A8u`5 z#7G(FI6|d;#GYsUIH5wE))c-H4!7l$mD&y!1_>RYBXiLkA$YZbB;~ui+o(B_Boey* zViMFw>i|0sKO_)3AZwh;4Hxh$+9#noKDK|@A+B114}EemKH^(O$%CK zV7m>1iMuX4-KULGwJiV*C(_NZ7`Q-5R;L&S25)L#%mFQiy|3ao&BN1j-A;Jfr^;y+ zaS8(=?XU5L>T0o=KUl5MXKh%32p04e<3uV<)JdDiuBxi(tj&XH0^Gxb8*9AXth)kR z6vG6q!o=2Iv<2X`RuJG}r=AB-_o}mCE_;VYYl$e1MONfvo{EjIuES2E)YoDXifIk7 zCcU-B%B+A_^IM0TOBbgOK z%bKT}CFeTp$c*zGkACpyxQ~P3CxV_ViXB2V_tM^)I~s&AcU_SkM3iRE-V7=25v;!T zHsh|JG&%YQ4%}~lLMUP^#w!^=3vrXgGVeA*#NbYwfv83r5@GPk$0o#eOS@%m>XArU z?Ah`@L}OT*0)7ve2e4MKL~5V3$MthtVsw+ul#?K4LexfU{~ufTxh2b$C5CyY_vNmG z>27onIUG`=sP}&X{gamXhgxHLW`J&>adBlEi~aODe7;BlboT7HmB_2}l}9CP7kryrg<%Q0aZtmo*NEGxW|o z2|otuetvax9g^x9(~HYx497%r<5--I2`d>tUS2O_FsAYmuc0%z)L+C0+XtbekGpt$ zwC^|Z?i~(#ozi3Vf~UL}FeCN_c&u$~kg`vSbUK&7)YTW)Zrvoj%tU~-jtW-RbI1k^ zb8UZHdu?y2TN!@)8?12k4cy`CaIZaYIK#RHKfL36_u(D;ti7Mp(>?djbDZOSN3Q*@ zUia(|bvI&0`QQ@*N}ZkwLgv0c|*0dtYzp8;!A=$^sD5$#jw z(+zYQRu*-$n9njTbt4{Bl;4;fTqd={y52Q8Cf}h02ItkQR~ayAy_(03z&Mu-g196; z#QNzmb$Mw(c{(Il!!U1`9JNe=v-tYeSCz(iSfU^t64WxEPSa4xU|U?;MNf~|p&$JC z@k55f<(kMnuPrPPCf)rqTO^7P^;V)nlP$8P1(AJ_T~ky%$Z*evvMhC}Z4hL*0253! zuTMN49v^pc?DAJ|Gu%DNP6-eJe5Ibr!u^vOD9h^Ec-bKOVUe`oX=sIe8$6{N1);L- zpX2dq7mrWdSWGX{bqrBKje)W(AYu6`rxuqs6uSu(W#!4O0(^iyb&PuF3kx660+@ut zCN`@L#VLe$#yX__(tt|w=`4Iet2_N=7#&q(Yu-ky(3W!lhL2B0N zgi#^s7SW>tRj6in$p1@jj^wmE-E;muEFbMo8kQTp15Sq>L$2~ZK`rW|qXDCos66{^ z?%OjBVB}}s0TuhE)E3r9sl)n!EWM%e>kLm38PhK7!diCvjaaZ|oB){L)N$GXogMBoFh-{;l53+}7-24e1XF?N zNRA|WkFY3C+jwNgS<(}Rc3q&k-JXhMkXGEr&v*b{!fPpKR@BtVDb zAPgWm0i1RRON@=4@b3bM4PrVUXIz|Ir8s* zKBm-`ZG^SJz1H9C9Q0p)2HfT^zx-TTJZEM)oJHBme*thQc##Pzo*>k^J9ofzf!TY;? z=N+ftBx%|HE^?#y;4x*uVUVro&s7!1Bfsegj!T3d70AfCMF^LgQ5_Bpu=~jf>nkZ0 z*q7-7FneValWVMNzxp#qOR5$mD6Dkr*4gdd-50MjwhscOfx$HnWn-Z|=8QB1(bL98 zpR`^1`i40vuQ?FC!M>VX_E?-7Fgd?`sz1EHeTvtwFEiHt`u-uVFD~QN z^^3T>Tc==+&B2d9{3ZVQ``>4D$Iat94%<@@$Z3_cq-6 zd^wMQ_>ccNU662(CS9h^_5EXvhm)9GarG;URGY@&N~P-f^yy=|K)rZz9qWfpN(p52 zu&EIi_^7lWU>rCa#^<|FY1Im0n!vXBTw6v!FlE2n#>Wrabk#xC3zy41^Zw2v%&gfl z=s(6o4@JxBxLkJ{mz|p^jZX`GYpaRQ@W&|?Dc@%c7$;aRIEQ%o`X<(QpW^QR7+=4f z$Kbe$_a8q8pv~Taf#D%J6xmVdxqxuE@`eoL36UW)a~{aPI7#AbCs@_JSRD+{Y7-H8 z@^wdHKh*`W4Ep_&97gIX(7JBHWu?m8iYPQtfPNBsWDbcE=)cN7F?Tji2ux<8Y9ZqU?&QiRYLv zW-*^k;_70NbM<(CALITiCaXnECxh5Nea?)b2sb>;KqLZ3H+42L#8K8h!Xn#};wgx~2!Px$2>vt1qqF(Spk~Fvkp^0C z8N%8=8BAzZx-lvVjPddwmqN@t`znEu2LPW*O*Dpe>81CuUSIgLM z`ti%#U(&we&6`(oD`?nkl5mk^6#@3~{W)RE*I$2|eb;tkXew(6McTA#P29O%3t-Es&hGsgJ(*3>WMkg2mbbn{z#O z>obw(Gh)Lt``GusQHOO5p+S)FOXH}O+YqF8yz4!6C|7-+YX{=NJMJmhp>6Cx>>G6= zwj7CHCX;-wPGt#-C<5rK*RL|h0*R6LfB4~t`2L6Qb1qZ*))5T$^CQozT}cL#sGw$F zvs0O6nV4Nf0i^%-?b~W+$27X9O}rExqz-MY+nDOVd*1u%tFOMa{o8N9%|61<#>0G& zOx#>od=K-B;Z3PXsx|iU@#Ck2@%99mL~@1Lbif5UYdR%+BY+2dGJ?wo9n?%wE5jVF zSq!3x#F7izCnDBh2Tlke+jgD@kR!xi4@r!Plx;vjhFJ5QX=As$hj_UAl->`kEy#5D={5jc=FD|CRg2hbO_w%c!06<{%@M5PN*VgfBBWm^;pXR97Fx9^eT>;<~B*}zpyM>P%CjKJ6yuKD=U=nx3 zUhLKtS7G~fjt?L2eBAYNd|}X zh8Iqr0#)%6vnJSCk*+{0X@g*W;f9O*PF0t=OZi$-MV0c~SZ6L5nTSk`k@g`#0rFmN6wB2tW^((?sTI$$+dsu@ev|o95SsR~h=x|Jfv{&1 ziFU4d5C=HLXdava)7Yn#)S-+bAz1;|nyRC%sf1I{BoDa|J7jFlHKL-eL+@M1#<{K6 z_RRb4w`c8nuH9$Ef&2f{dhdv1-xkcQ{m|ZXZDkujb=qsnG9KU-LPY=DH=Y?M<>@~p z?zau%J}V4N9;PmF#!h`1$9bk^=Hkq-DxJW}S zh8+T=7zh*+vPY05+z*2v`Y4;4s5FhX4n&}$nC)_77+eQVL=qtbm(NkGTyT!R8qF9V zR5)&`R3IX(0sIU>8EQ#C%UG)<98@p&_v;vs<}sgFE&=tV#Toy6<#$|jHsXK!2NIx@ zq-z7r04&@b8;%lPqPmFC9mQS}_f~=82rC=tW73q=cg2dzDuFEP}z%2!E43=2q zk4N#>fB!x=7Vb@63q%)gEIB-Cqs=Z3DXpmR)5fxpM%g&X8DRYAb&ZGhk`jV+r|TyH z!P=gYVGq&jYL?h7u=^mYq?ga+S?9F(*zj*padp4)msmppM@KvW7zr#$Gaze1#SWNe z{r*mpB0{Kl91P&x0HL{Szyi_+96bY6ic78-BCxAa+aaK0e-6-(_l-ZwTbLA7RjhWTWeI(NNIOa zI_U)FY&JThNNYAl$XQycC7N+%5=97wt{)HpsbNa07?Y7o7^P--Mv9b-)ic7OBOuIi zB8GnUsH?x$kL_o@=}5vauoG|}3{%xo_bdJf%X`Wu9%TE&Hf=m+q!wfOf{3h%>`6c> zI8#Oj?DYGj3%9qQzaXcEsKDapzyRKX3*el!2l?=%@w*WpqeCTZvhI9q9e7uH5L;V& zez$kL*ZywLy=&e2R@q3Rq z%8tOh_Ng)*u1@cyq2kk1st_cx)9!{F>_d_aZFg0!zgvGjci4;85lS~h>v!;_sXsC< zQrgm0Hd%Xoaz9NRz9G3d?9S^vQ1oqV~X@+?z?q;cvt2 zyMhx;4fZKHs(pi@sCA$m<2js80H#RK1DrnnEq%0mC%SC0>ks>QyuVAy#8R&Ci2yA8 zU$^n;)B6(pk1PfV)S!v7_>_S9#mlQ~3?SynMt8wBOt&02^pR)HlF+I2Z>5lMK+(0TdhT;c*?K zfv9%89E1oh;0Cyo-Xsg~g@EX=_Osu(jYKLPm%#wc=5)nPPy=l@4EMG%Mr4SdxtK?6 z*O~kVcbF<85}$(vUknf{qM8Me$WHL6jC0W~bU+a>&e$E>j%)8+%IH_eqvDEo+a%l! z39$JEYNxAO5hL;9CdIcx+MWc(VjQ;-TYs1Oe%VYJX&uhJ*dEWZ*`H%`a8kLPV)yB> zvw5iW)eE7bx#mvBF%zUp42jO=&H5@}T^<|)z#w7~Y&K1b+9sv{wt-}AoK5FBzWM}U z8Nbv=(p_880zKJi_5`2^7$DXIrpVh0p_`{h0< z970o1YeA<8MW$lU_1%xnP6m=*9C=P5_J}tnd_x4BBi38}5c{K-wkXyn0w2Na+@vdE z0dDIR;K{aePe0KuA7gkXLS}f`tr=qCQKYniDswLLqpYXaEe??iNUV&0FC|i#8ALn# zBo;(TntX|dSDsN73{4%CLx5YYc{JZC15iJE3^pa{a$SEjXSTKtPZ{L0W#JxLbCyyQ zh_&0gYEQz>nhC10vKhhHh$CSx)Z?1t5&cvj@pwWY6cbk8uuZwRx=bn0WOhy%12rNd zs5k&~>k#5N9CvBC&nB4RCYM$r!8hB^ZtTp^uekk`9!x6Eh`9ihA=wg5%k^_kl?CD= z6LKM#I$e2wn}kH|0Yq_IkG^a0-9oN@)|~rYaI0(z{Pu1`R?2{c9gT4CJnQRh9w1?d zdYtWOzm?V6psx0JTkn21MDBSKjGbqKXX*tPsGODMU5MD6XoqVf9+EH^4C3ScZ3aLr z#+$J(0&bk})ZgHpZ^;kIW4j&e(bP?@8fn?J^bZG?U87!vn;8TGY( zcuYhM874eQ`AW`KCTXGv_rCMt{wV<=zv6^A>F|B3Opix8DUs}^admZ(gTUP?7a&n$ z##W%Ww#`a+o?^wm3GByWx`^cp|9Xx$uV1FC*PuU6i*-8U%ga}>T$JQNuov9#?zB() z1qNIQgUmvR+dgb^13ay_G3En49mkR%ZX()I3}>v2E#wlDQ!A|3o6OHK+U=9_&kd3K zbLov)t(TM`GmeesUFOVQ%%;m&Zyw`se|r~Co5xHf!+>+WeN4bOnJ!Wn%j<$|!Ucj)-QK64{b~kr&SHPYd6wsd z1!*DD50PqE1Arrfr+5PNW^n)(B2EaW3V9-`5I>vEtXu`nBBYRisr8rcNY`$|AkD;Y9tbKK05* zLeP}KIJRrn{bel4kTch@=`#VxW88oK^hG6@hQAp&tBjT)E_>=k;?T`AU|^G{+U$Ie zyHA4m)RF*ToSx^|Aut5f7dwegJlO!cZ}XcBSXJscbvXPhsFMS#>+39?Od>d%B`UsS zrWL2qWH$FiRdqhb7NTYSE%pHN0-jZ+-%aXuB zT*kc&b?qSx273hiBV%VIG0=-qdi)fzY?`TF^}XLOsX=ZGuqEXIkqlH49yn?-BXSQS zA`mh9eh8uddm|D5s2%9_$8nG-sq+KgW1T3@!e_*s!Ko zn8=hV4xd0iIAP3-6N8Y;E%!V`XFMRk!QfY}8PbAyig+jjz@E|$YZIJkNU^P1^PF>< zGhToD-R?nH2}_=d;S-7Fb}6wsSgW3dxgGJ~8}GUI+oP4=uAV=Cua$4VIF#+4HVf|M zJAd0RkhSq}veod+xEKeB*nNMulO%I1FyHOxFKQX(ATX4PAOkyEot|l%ayK>pF_|9+dwlefzUnJ+dy0|Xp zx>L(ogW8ti^mmm$oRr?4u)h*3bnO{7Dgr0ygJP^}pmQM-m!!KHTZU~~XIfZ}8gy3p zC{rAL>1@jOVV^FJ2n#;P7O+m}xIxNI)+_7Z&E_#ae_E%Ad^VlL%bSZ>E*addvreI` zpPud_CG3M)yn6j@1}_m!ZnxfL@-0YlG#JNnahb_Rrt?W$9j-HkD^dO3!(Af7Toe)M z$w57_nhWn*h_ek2pbk+OFr0+n#Ge2SZm~_i&6r7d?w=BXQ0XA5M3UTY&T;+1hMuOn zq$t%2t6N-yxb$V|o`aq%+lVJr&GF5@bHUq)<^)FvnGI69!}H@XD1*ugeI1va?Iy&V zpy%JO4W7qB(7m6} z@#+1$bR9;VCqa?ix5P3G4<{*^vL_RNb_kx-%$k5y#VkP(5f!J3ida}Z2)$lE-oAfd zoN-4GSeu9m`?*Q`+^e%&R&7n$!`W4Cut+qX0_QmHI}Tj^q(!3H*)ws7hvPoh(v%}& zdV_eRlIh4z+;~dy61bc*;1{)v;mlFtmWXh`0p~lU2i2ec7~xRabtT9XC*|dftCT(r zgl*3J4ZWC+#<7~sGP|z#iU-oKk}4!ol~()=VTt`2qNvd(=M+s#3C^ucU$?m44D-B;{<&N}5eCFR z+?HgRGY(V^whnO(!h)F7pj$k7#xU0FZQR{G#*S;u>@oF@CTcpPA1tX3E(Z84>wd`o z*O&o0t4-3NaarT98x~+nZh`JH1HbS_@HfK7oX}MhA=QGkP6ozwGLG$eAOHTt53!sL zV>*77sm6gb{n_nGrxyUhaNGq3Iu`+9LjigzL?}@hU3H4{liLy&713Cm&{zPzwXm{B zCD}pY^9Sz4fd}(W)Y>1!&DB+$_YtQZD)$t}djY#L6jh3|&pmS|QX6h6<5owH5v)v- zrvkz(B`$N`AXmU_o_P&m1}=U=lRw1kn#uH3FU^6w~^ddVnB5 z5yClDG_%DlrptgNp<2#FK!J!+0W~(qK7Lg0JH|=r}bKV!aZ*cfc^0RNgJ5ryOfL%k#dt z5nO^(^v>Y0#P*_|KJ5<~eCjYb1+D4&e2DwqAs$Juv}JhAzu7>fv@+{CrLi@X>>TwG zSCvLvU4}+0NBuI|Wh+5tDU0RB#Uft5y2&|W8g#i@WM<#fZWCt`H9>aRCP~@OWfOrf zvMD+Hs=*LpPGh+IIg44(nTLT>s=vS7+ea?{y^SPX~)1X^+Y?#TiNM#W%?5?a`P1_-= z4@Cr9v)ToAzkByf+&{4Vhpc)DkHC$Ta0r#2h?l(xB*dnn>OpK9GkdooHSL0M5DM-) z9j@+)plgimd*kHV5KDW%-Lvl zPHQiCUGrbWigFz7stoV6{(9E|k6|>G>z+12{@!on)n{i$dT9K-Bmac-0=t%zrJmW# z%25Z#AlFbw4Dp;GX+UU@XlRRfwa;(k*}io}6ljC{zVU6d;qttVx4#|USFiH?-Nr*7 z;LK!@)278bBca$P0Ybg%8{f9^RbKm@^Hki4NLNx{A7aRm!v^a*KqWxOX2<&wU{2qC zZG$kn$aoeN+XxGm;f@#w+yfuikW`6M=-xS83@9%{Rq(G@Pbrn|M(`n&V-YhJ!~LQ*$J0!TwK#LoV`Pb%05w9;NxN%|>kA>+}03 z(P4)$NcXtp1O<+XVf^jwyZH92*YWcDDkh*ggwJdv4SkMr7IR`O&O$#1@E*~7qsTK( z!yr{!##BCewh;if4P*Xs!@#8H2rOg9C=yqXGfggKNJKVH4-0{kEIj`67yF3!@7Hna z-={wPi92im7*EHD&6!0%gHC`-vmxD6ASs$?-QOb|f$VUrRb0P%882Vn!_RcAOHz&r{hH^FoKLiBeh^RnNY$sG_rJjLx(mp6gG3?9M zYH-UQM&KdFpw=W}O#m!=!+0ejl#>AARvrh0TJ}+W9YNM&Wq5)Zu)jzKB~c?Wdwf{O z)9xHEUSB1`0W8vxQ$fjTcY%$Fm{Ym{c$?djj_^)M#55pwA7r}qbk7v6@*GJxtj*PI zmQnbiQ0|pnJ4qpgOAwt8T1hggQwM0TXqNz{-tGi8I-S!VCk=50cf$phvq0K0OvRX) z&EnP7Reb&GRZ1X8$Yg(T4y z%(4BQh`qD*VHaqgNfdV5BB0v%=({%UNgdYfFT_Y2ldP+=f6(qG5%CQP2*L&-1IIkv zJw*Rv5W{5=H{h#)X-_B2`!OVu#Bdx($1jo(M8}Sy_ztG1zk5p~-;^w;TXPw( zw)tp;oADjml$ri`G>MCw7xDEs-^AyK$Jl=Vmz)?2X1bci;^Lx$D$Pf!hh!f)CKl}V zK>Pju_a$|(6zI1YaUwM)lbXnJ z#NYkltJrRD;@$fX@#!P$q&fi|By(rEu6&e zwYL%%B^Qt(cg0{>cr63-aN$xGcg@tj@3iU=SF4LOI@~@z#FFSubg(Va>ohK}R&m@u z#_sXXw8R+qheF-%>-W4DgBe{u?u2p9F3#goP_s;_N3>nYVVvJ|k^pD(xJjE6eS#b+ zj$evK;wU;Kf$fQv?=(|aLs&%Pkn~sI_G5POCWfnjkB_Hge0cjQHc-xNn*Q@d=ImGQ z#X^WvEc&EAT!{A3KTl#J&G~8>Uw!o|jgCG%t>f>$`Y-X_AAT1f-v1IGKfF)k0Z}K~ z9wI|IHX%ZBJYB?ObzM0a=ovqJjN6YN(!h}l2uBRSAgVv#Kg9IBh{IKMhzMQ65 zo~=(Z4LqqBP?JzBr|}?qDG5hJJWA0#7{v||j-cK$lpL2NjjOM@PH`{^MjA6Dv6RXM z1Zk??*lG1*IAOaojz8R7$K`C2BH*j*i&!O4WXwp-R;mxd)K25FCmGB}aR8)1Tfdz2 zVlz0VL?ek5I91^0BVvCO5BJ9YnB4nhFpY=L<+IPc1Co_4To5P#aQ(E4?f#fiEjN3d zS1})qxsyOdMA&pTA`Ul6wIVFsr=m-w0O4|7rJHYtwS79}RdS+`?~vq;9f`n42w!m= z5K|-#<9^I%^SHcN#m(hqJUrdS?c-gHspiI$`1tWImW!+8MmP6dD9e^JpLBr%wr?TyyZhVt@bNvY8<<_!%hf!e?>3Jq>4wiB>qlOCowrJ= z4w7IW#}f%8SThnM1~G7-1mflDBHOyzY=TD>v6E2u)RnGtwh0*10b}A>p!h%Ef68_( zr;C)%isP_(c*?(N3!m;0iAB^Y2T^fxu}o>BHm)~^jG(+b)VxW}P5L6P#b&pO?Y_J` z^xgOlQzC_H=^|dS`sTw;7YdjlE+pSz0C+lzFjdr6sxA+Qc>D9)4E>zc&`gF&`kF&L ztnX9gdwG4C0GN0(-QY-eb1xQks`13TxCR{Fx}5CE}S+%EXj)vT8+N1)He*EE2-=*IC$4?*Qm&{`#Bk3k~qz<`G1b#w*u*r}hh<(O@ zn@|iT$Z=gvaoX6Ghb&OZDboYI@|D0~X)&&-lR|;3s`Nd@nmshbnoMSBB z1Cii#9Gm-x97C}nj17c8X1RQM8PkhZN@un>Q29q5HgVqZAbE-px1Xa=luRTDcyWyy z7jhvc$M_zN0YAhp#Wdm}`Ua?KAFS4>8K_M>)+*J>N5;SWZ6Z?ldA)c8FE@Z&7<-|+s6dV0YwM#F@gapB! zwt{i!5_jQGQ|iE@B*~%<$#x8yHR`*Gcn;#aAnJ*O`@OhWj^gFbWxQO@;}sXP(I^1f zWx8ZCSSt?*(g$QgN(9t~t0VQ}c|~-g{RsmqxKqYwN!30zOxZ1shtn9!Bpc$AfK8=4 z&rL+9EpXWW9J^HYl)8t_L#jQJLr!RwBtuFDY?Ve!*s}JEwxx@1?$%UUB~e31ouS4{ z_2C`+_;?`A@U9){urErIMIwX%A*q`mr|H#!;mK^Y!(Hr$zU7WSPXuB;AaFMuo~r5(hzJRY6x=sV z2}3#wTK1?j;d_i=lF7n9wjq)fSz3rC3{NmAqF=KAyBe#)^? zHbScigHG~6GKEkkMe6Fd2T7(Khg74Mo3ihm+6pm$LGm5k^jqJO=;>@Cz+E^BamXf0 z+#}CPJHTQA`VdUuLE@Q=Zu%=xg~(+K1TLCS1R)|1ZW4BZN-U*$N%WUwNm=U9o?+?e zOn&J|+%&)@H!IDkVHK52a47m5@9^|Mc%%qY>S#tK%X#|OYpHJqIpK;4sY522$rvU7 zMaN(D5c%A5Ioxd%(cXRj9N+)tukrKWKF9S1cav3IT;0Ug&8wI%7&r1{N=iA$OxW7w%)N*-|wg(LC7OQ!TpM=cD#f)Mynq~^@?bB_nQ|)rd zs9RJwiM%^&bp1c=MT|VgKmOyNQ*U|LRX~kD{GO55MUKt=-8%mK=YP+!BK~$*05+5| z;P~7`DJ#v#2?)BsI%1>1i*JY@9SJb=FPo2OP_PeT{Z72dIMCk`i4hx~1u>~PoJ~g= zRdSF)flKV00fC6)7~%lRDd#TnEfFn5XihDp+O##Fjq0&6t)Jmg{orXW{xm4-07u)z z#(_?ju7vLO<*RQJIp3`x;&Hc${r7)~j}M2+d_Ee*r-$-Ut}SK(6P-sq2w)TY_|rEp zV!m1?Qc3Y4ygZx6>S`5nei;ad&!1QE>Erv9Y}q7?a$mf>iOZW;ah|R+;^F@3DGiox zm&lO%4gb&zfIW09s1enM91SUjVCZ+Y4z2I9O_=n=shGy< z;v$CQc?{AU#@Z@dl-+I<$KD}!0-znzk0LGdaW-s(#-m9RA=bxnSj5rO_7uD0Iv%;u z+T-?V|TE9kPK^*u~CL2 z?)Sa22S{SRm<csSg@DWnRf-M3yggRQEtPOp}(bqd4^J*;?5mn>h8+Etw(l_Nf^n63Tl zQjg!-+`jX-ay^5*UETAZHZitrE~W?@?~)prTZeDlYh`K&75s0@(~qnxrArn35Mk-P zHV&RU)AUs*3_wwr5ON{4G`>qBp~8#Wv?!;;WRgLO;25qQEP93IytukZf`JGzgR=|= z@%i>s5(`2kXXTl{ycUs8eY*XegG#QJc?($l+fjWYG2r>(^h$ctUh9 z9>Xb)4^MG1A#y{k*kI*(L0^e`5m@T;=O5#r|K*=D9>wc7FXPRd*GW9^3`mwMBpnG{%sE5aMZNo;+B!!y2+U^(*Hi zfpc*HT5j&Onb9cwj9Q?APxa#Uo9pezT7wgPzAv8QG9r!}>sw zO47DD9^(ByH@877uP$S8T4ufyo)#49)72v9Ya}?=Y?M0k{^w!Zn;;x--n@>hmv7=Y znx}2Zakq>4VwnJg#rp&ItMs#;#FaF-Z(hgcix)9juHrXThWr&BrxLCz-GK>CrmK;295F9MxLA;bC76BmR zJsG5(1AS(SfJft)uU6T|@q8J=aHrt@xQ~&Dgxf*vxgTIc2$r&g7|bog;Mb!IVU=^A)`$71kbQn|*d~x!PI~d; zY8k(K^D@4D^DV@CPW}F#Dg{*plI@M$Z{F>=JAGlRk(Tg?(JmwLeph=b zJ&QIOp)A);FJUYKqwE2i+p-#r&7glwdo^lF>xlFT^3vXhTp-Uz6j&<|lIQNbf?th8 zM&wuz_I(m-&xi)^I`qZi9cTO7{s%L1J#_?#d#ya*xB7hJzN6iDbTRdKA`PJ|tagydp#qHB>>gGwhyw<;v3SP$;=GBDU}uT-tb9m43;$Xjv8f-QOu#Z`*_m;25Ojj$*&@DPUd4;+SMmDQSMl{X-^FTq z9j9|Ywp>dD5?XI#er1uA3(>>FeM&kIL9$xn#Qyo8|D5?9R;%mi_s4O2`%o@SX+1xU zU*3Lpag*sA#`X2fGGKe;s>(O} zDUOGy`0(LVynn}cn!QzV%)WR|I3!5y#=)~XI>4JhYBSjU{&(c-Bsobu=z9SQH>gZ@ z81-|+L~^mgK5mKX51W__P9eO+7%@n_w0nx}<3p_27YK9(#Px*#DIhtHak@0B$6|IM z9#Y-HQvpoQ4PN3C8_41^LMf%`O0tLn8Gy{9R9@rKaM$FJpRn75&`E{pe+c%!sqB zjTftUA%DSSn9{fRKmIlDK75SL<73=R3#izr%gc*+@%mM~c=aa#rfztDdsm`S7Hx^1 zaCwI`6ixLSV|=klhP}*1Af^Ok)8)k~=8WTTl58A|H<7iVV%uTt&bu@;j0XmW!x&8w z;&PLCA0XlCX-)(rN;9I2?nxcf!zGQTF=UBPj*!c*DTHb%N^ zCJ0FK@?zGDZ{NI#KYsgF{O+rladWZEb=W%|VkTvICO_gO&FE}qs$zcUS%yuMB$gwXe zhi}#AJ?|^m-|cL_U0XfMc-{{8-D~f(vXtl4S97F4khAu*cDTZEuI>HS2Uqo^8mN=B zvkh?1+3ExT)ah`q^~c{%Wj7>myc;5aUZ?hHCrN_xTHXF8AzCh$c~v%C>}ccF%2$TJ zo!aMWA+x74M%vo(3J;AyX7OAt$oEJWrpr}Kr;ChDFCyUm=exLN*wGut z&C9RiAO6#SiOY)@v0PmTi(^uW-tZLCP2&u?ak4|OO<0QF35=8mHxMf~#7X@AcfU`u z=%>$>v`fO7<1XUIAKzvIsmXXA>xXT8|8IXu;$bl09YB{?zPSbum}-N*m@Q+u63A+m z39}gSU97HCy)qm~Tyh(a58QRONt6IE=E~9FMgGo3ZDG~os_XN=aVRB%^eiVluL;+( zJVsWpUcF44gU=tQX<>cZ%aR(&$&GNaM2wql8tn*CeVmOepTlUFA*)YZx=_^!1epgD zNZRP6Ef95r&XPQ&h_yJuRE^ls=?-UO7je+qs*iN+hzAz^#?Qi|L$y|LgThEJ$Ae7A z&i#%Kd2l+#v_FUspC01%LOJKHs@@$iqUcz1Nkpjh=*ZHQgG%Z8SD}cVqHw7v^~e{`X;7V z*U=Z%j~7WzC8{bu3k1U?VKR=@OL;V8ah!xTcK7jPzT@=?qUiE6ZeG8Mi<_Gm6G^kZ z=v|~OiM3kkka5rZlmd}hUCClP>Sr(-_8g3*M5TLi^D-8zRop)9K(Sh1fDucQ?I5AY$l~Gb?XI9$Nc^cP3_-Q)YlMiB?b`FRJDhr07<;7EZA~H}{r}M^5=iDaQTx*)I zL2B*+$d0gpMknd16LB#g#hVvb@gKhXHvaU7Z{qd!MY?HnrQL6K=~;zPLwu$O278+` zE?M#_(gtcYfL`LLaoTTCS3sQV12A#b#nl_TivDVaGI~TXumxcBDirq9hU7u~{$m;m zub(yJ#WEB{Jgy5- zQBV1nY9HiAg&O~_97fW^lg8(#7q!}15$-l8e#>98Zxz?wAs6^%4&!Alv{AC z+SH!=-eC-Wi(I|akgTh+z3=MXb}HAq?Npw7&(GhMt-jV??;2oV|2seqz;*vlv5Dq*Dh)sC{NO1M$>)*xK-+q@w17n(v43SJFN8{)tM7G;_ z`|~du;S%MjQw)gaGf}|i86-yJLB7DqaDh!oC-jBL>HguaBNAk4lh;E4AvqZ^PyJXd zB|x$9x<%O^CXyy~xmaH1W}7b#F}l6WL_!xAR~Zuf;qGto@%^WGTBCY>%OtdpjtET& zZ(E4zFV^fpy7#)bbG&dWCQZ;A-_VaYV6eJa#_QKF<6^bSbmojqxu42!AqRvI&b@<7 zhP+(1@x-pAw@h8OIehr|u{g;d9dHH8A)Yl)8n0f4G&YDuXF+L0zl#!TZuJp;k-(E- zV-g>3SimfpC5BO6XCT_Sefbvh%9Q23V=QK)_}!Zu>|m@$)A;a-mG3z|zIur3%ZvEe zzx)_)KR=|);Q6pi4)x>hr*yfb2AHQRU>yC7<1h;B@L|`B0jU-@&%-Xga>fjs7K<3n z=FyWOQX6PHMEN_PW6s0DCQs3F#Ny@4m|x!@=R>Xwgmrd!I8NIL0Y|bgqN8S(QFdzQ z7|q7H5QI1LsWjQc_=o@S z$9VnXG9?bLZ!Tj>BDj+;g?9kR(kO#g(#^7BD>N6x%j7=I!rhGAFjB(C2TZF@}&(z$I zl>JeE=ZN^bNQb;axZL1zmAj320UbhxnB?A}wvnHQZB3_EYLQwIbUszV>}~UDDR=cke8BpB^Agi37?ZX$1$HxGb*nrxTDc5>w{3hNx6u4G9b=gzj+lm zH#c$f;yUL9GSfB&bf2Gy9ya#b6JWbeEFisy45U$>BZSlUNmC@?+Tf6Id zNn3o==Fxuh4*Lk#)?Z~O;_e6tWgBDtC++dKGL@~*t^RC8*Zwv}>LPh)#ENpguPmpd z5fAEj_|}?KkA0oS*j@j8>v_(_>DMuG-#oN3+xQIm6WgSy)7`d+gz{A`Uu>448*vHb zy_X@AcsJuAlpZyyu5^7O_98KuX2K-ILvH{Xv5?pHPp_8}}2f9`i zvNX)oMO?pl72kaOU5qA+bWJ2_z(q)}EI+-KjT11)8CV53HNb7pQp$iEPog2t@wl$| z3zw_Q`01w~BpZln9KFmWlAB$6KIRC5f2HwxwpBIH!bexXF{Mv z%t>%%*yY6MN#tmRb!SNDPe;bSM0DEp6J8aw=uc*uvq573ahX2_km^ro>17b&)N@O{ zyo||el@bSb2i7m)Ar;2;i<@|QxX<&9P!euVM~DE{l;e;1d_S=?MMV>;p<#?5ORLz0E*Fs3slS~mrt z5vs-@30L_mGO{ZjEmaHE8N!P90x3(mn`P{U%pPhz=2HGbT=Sd)b25%Y8hZ-Q&N#FP zhm_jrk9yAn*riuo62P^VpY6(A^C{@bC9b9Iu)p);t}i(sa))e+c-TC#xkw>Oxk4u* zKmb+0(v~GH?k6d6pf)ANJsj34g%B7@Ul2%uc!s$?^@EKg$qFO^*?_5*Q8GXolxh@{ zv3)m<%Zr;JWu?9qP%TBzjDI(UP>YzT@XP8D!BDx5h5#WfCq$JIdRG@;kUCh_&h|}1 z`Vi1>pJ^-j?dnvg)89Fsoy~;bkXrlRwH?2`=eu^ca=oj5_g#P67SFw#xTJeW|7x6n z?UTB+!>J4hg3r|Jr}s%|QkAe2_P#P&wsy4d+qIPgF*k&+4BtKfMqS=*#DS|a)M*Y| zf6a^Ul;QMSpB$|W^&mW*h=;``$wD2<{L=4&qS-ElFJ@aA%5-QCFOs;wzstpRd3Bwx zCAJF$^YJ5#Z|*t6N>cT-$qa_~>r!LLdYe zl87MkXXM9KZ+ZPDvt)v0@7{lmhg%_|CF>Z(KmOC7Gif_Ato}f-TxS zV_lTEa`Xcc2Z2FYJDDbPL6=%7qi#ZXds$BV89lJKoTvL^|9DP!wBC3gzx%`Q6&kjmC8br2N~B4Q#M+-?}> z-6lqhd0h8j$HnzkjObA}o3yKW^Yzz>J=pZHD=;ocEOvUdKqRGhIGsk(JMN-)9A(zk z>E$Zsf(*xL-d8Rh4~mmfNKZ9enpprwh@NEQut^o56k} z)k)+g-1oy%y6uT*$%l$mjz9hOxR1R)M#N%V^UZUF;}3#ibRwx3WxSCI=|B{L`ls){ zjsNi7@8a+N_-zslLMd+%Yvm88QZJet;2{tuk14(@Q?YEgb18i{L>Ao|iB;#piF7CwY<_dCx3>#we zP0nHWt+Lt)zBG8}9lskF4t98^E@gS{ce`I>T}a#CzV#ls)!u>Rw5J`d?S4a&4)u`| zX!E;w@3M|I4$ASKzIu-bhPErGjfr=RuXo&UgoE}#xb8#L%4~mo*2bl^T{+sW9R>d- zbS#5*eQ)=a;cwsj8-X_!Lua+h{v%%WM_U?Up%2RUjr!E#nP6C?9T+5I=YBikaqk;H z^(j{wPUR^l4JN+;{Vo^>ft?0-l8yvwM0PmL(r=^2%4m?Nb-S&|RGaN8mXk#`CXFOh z#5>FY6C@j%(1m}p^vHsSL_dE1`CW`Bk4g0trM`OgCcb|2ZM?pI9qFUpA7>P`j~_q8 z=i9rOFW<$h*Kbl3Ih~H;Z-4tK-oN`L{`R-OWiSgJrAnciAPKpIJ75Hnzj)D$ z)#@TGRrOKOq7=?wx?i7s0^_>g!z$kWV(Ec=s(41zKH&KQh7P_ltilII^};r%y0=5 zUC~+pRVZ$;9;~@kU8HcP>__(7bq1lz{=v>CiKqkzo5f%^2ti}E)KOwR-XUP? z3JXndjM(y|Q+G80D4-EHYVM2vX7`|h!q=N~Qq9f&A^O8n2CYizCGMTw4Pv2lD|Su1 zUw|;@lmRX3-O8wE9?IPn+oN4k>A!&sV8l<+3ip-E6jx#RB6qOgH00 z4)3?$uAXbFGF%q+Mry70fde4@SbO_Ol2t3x0lQ7 zBm|oJ0#V>OqC&Z?zSbANm8U*lc=n{<4p;p^=wx1)ju_LX;}O$a{nuaR40EFy7=VY! zXjpL^hcEx1S*nT8vh(bCY*=BHX`C# zpvn22cxv$LXREM`uU~%?-~H~7alN_@88dPA@85lhfBn~gjeq`^f5`}sxb2IptKeez z^dMC4eGVj7FZ#MyuU=(FF_MRjj+Jgk;xG`my-JGC0Ie3QOl6xBD^>*8rRh9o6Z)!( zB?lnYgyOW^gFt$5dMy3w-J_J)yfPwYg7x$VvD+RqjIVIG##f*aA%A_FgjohvDoQ@x zQgiCsKP7Q6*@y^}NfbVr&^K~p1=GsFDt)#GHU5uu;&kH*}erV)buH~y;@}2kwI(NvLH6t$aGO6&nn2H2unc4xPcu` z#0+GmeDht1%Vz6{ho)knRG@cO9Ih+lXwNdp*xlVaxm=4`d!;D;`s=UafB*THxV`-p z|NQ^__qZZacwA>lUmI?}Ee=#T@KUu9u~SWq;?!|}#KI7Rwt#85fyz8R2IoV?V@S!6 zBxB=5bUMP8!RFDw>Kh&t5ke%A4VPHby*bh7odo+`M=Z@{<6W zgWfr_oL*n8;^oaMuCJEy>gF;oR`b|y9xHn!;F{Sk2WeX(rvsfl)e<7R0oQWNEThyS zf{HjWj|Sa)3HZ{ujB7HfX1Nz4B2q2Zv%V_!!`;JU63vK(w0B^iLdpSv@-jha+1KV4 z95g?~vYkYt?ib;W05#j%p?t&)$$;MpSUaSd1c%+;d0DxQSZwRxZzqP#zHpKpfHU9{ zn-1;OM()Fx7o=2+U{ht!V}Mr6i-acByzGWXBQYU{sd_#h8J|uw7!ew1+vmL_>0!Y@ zdxWHz8k!`qwZQ@?0-+53}IP2st_3 zPHN$K!M8%b#@o00@ASUstxSJ=o^#P5Fl)eXWjVa7P3`ckeb??if9~)0y{kHni*`cH zPIV~1)#aPE{`~Ek{u;~YM2Ge0xf2oKxAwLEwEnBZI2j}FD#O{nBSBEN(|fM!Z|zgA zvf63vNRjlzf$$)`&<4+Zt89Na!U6%RZ1KtXPi6Yu?hhGgL1_x!Y`IvL z&bTPi8g?HbX^YGJm3p)TEc%R!$N&C_>e{3@GX1EDV>`>?^HHM~F_|oL10r^075wV; zHwAbR57T+PxO$noSpV?OI;P6LL6-+c2; zMwCQEuoV6F+i#KzvjGgc0Vhs!+BlUM#^gvIV-eFE4HJ;2H$bQJ^KH2=3H4e=Jq*!4 z-BrqD1h9=&wj8yQ@^>!c9QJO4P}sJv_vlS1)2mmrbGs)^(c}h-?dziyN%2 z45Skq84O|DrvOjssT%=do#4odv$Gi6;#X$9Z($lQL61<{MNmM(8RCP=3)epw#v&7$ zNx8m@^N}un6_6ajCjQ~OuhU*4#mL0cyM63f&~JA!CU%#O7*0pLNF&S@ zFjE+l8gzsZBDovu)44d}(GhY7Y{wY{OmtK;B{HY>Ca@wsU@Jm$(FiH)Ac38n6oZ&Z zFeAkGa*=8W#DZ5L{SsT0NIvJlqCbl$DWNmMVxQ{+(J&g%;!FfBW%Fc~W15Wla1tYg z0fZ#5Xbh7OpN;3SoGxQCSZ9uek&LX?4xqfRfL~(UTYp>b*{s?j1$j6SAh^rTQ_L3g zm~-_U4?<>9?x=!hvGPWoi@ibp#x_9;?H4zzOlUP3_TspCtntDqJFie#cjB#2E z0+eVw*T$gN`O5>E2v`8mTFU&@B~{sN_vxmc9tVJ*2%lYy2NF7Kt|X^iktiWm_N#U+z6 zP+_reNSlw0BSFkPOy=s%o3AohSgQCKt|tN0q#=bwz&pt2haY}OxTikcZG#KOn0k!F z4t{`utS#?BPM#|RlJd7_?z{T^{P2B)sh&I9y;hd{zkTMt8oweQeoH`j-s)1G?_Hhk zXwTIH=|aBBX~o1WkE4B?C_>_!ohMp3qvYt}ig)CNSRsIJv!$k9&iZiJBgRE$#sz7$&E-#C%m8JNQTP=a1W#& zY2?+9!FUj3LU)T@7QZzjX&Z-)pjfzsDN#?n{BQp)K74o=_m47~9+C~r#QxXroV;MstBIcuUES8JR-@@Q> zIvZ!sg^R0I5)bx~bxL|btZkn$np`d>aVgR)RoIC|H?F5_d@Ql#s;EOVLEb3cVg)qI zwFbCn=Gh8fbmXDaC$$vmlbucN8)}N(W*_@)WtTklaAUPbA?H*p<@ze`A@{6v>Ntc$ zx+DYU8G;&_TzkWeG5|F_osc7+<#a(f`K12!-07BiLlD%L2y1Jt>Tc!eR}l`s?xUol z>@Vw2jF8mpms@l)0co@f7F3X{Udnj-@$m4Nb`IK0qRUna@n~7@lasX?doj-(HIrB; zXIsP-#CUOWnYKZQV#td(nz@8*8o~h^AtRmwfBy5IbAG=5`s=(xJm$+4Qrd2+?1og_ zE96t~4zt#twePfDUDbzjO@tVo-gUS>|IW8gZGHZ{z4!lj^`37$Yv1G_-9N2-SN&9FSJ}hKR)7+Vxfwg;#`v}F)P2)?pHY?>bDopkA*p5tMJhq@qtx35qi-Z89gie| z(OG()F5T<>Q|ylKgQ4b|SA&?1mI)~K0^JM;F&U2HhabKV84{O^S^T&E?SGA9{C(!l zc-pR0KPUl=u+k>pz!(Gr>TjI?F0*G2637`8u1O4B3?534UeGsG4~PX~$laFiRZtc9 zrzo~DfVx7fon28IG{mYBc3}E@vwBSu9>luA9klRw49~bPT-KGsjKR9 zP2wRpOFb;YgpGjyp@d5pyW4NmXiUN`-;IZp?7RB0JtPYdj(OqhJ{$EzqQKkx`*{EH zQ@p;qNRBhNB#PSnoz7tnECog}7NOGyV&Dh3kw6%M43*EUFW)Kd*WV3sBTf)g>`#n; z1GTxy#2DDp|JS1AEwjg!rx=k9!7!elZUbaw(kVlPeljJPPefF19nQJJAD?9H0q^^1J*UekVs^y%TXue#2%0qOd6erjqT| zMl(%`3`lTtc5{93e&OxGE+OqKa(|S~1uq;~E_2NLh@1k92%9tYMdsvWo556qF(MU~ z`JJTE94!mNpLYhLA%%#iB9Krtr#V6PZ@a2I6!R6l@!JE^jt8P02^cItNFAltkF&47Ct!jSyZIp!(_V96oXq8By{Xs*ycs0K>)g_ctFLwHp7m}{ z5Emq9>4}qJ7mBd879sU^Btg)AAf}&tUL-)kyZXNMy~<+b z{i}Mx*fyz+=gMarCL@IL?URI|}P0>_DkI zdi{CDwa7#?Pnl&@D&S1|l{zAvN%Hu`(RVFaQ7`07*naRBB^IE$j>kJ0OAJ zF*ofjF>!ftB=K}EWx8Nuf)oYoV95Ji$(qo?)+x2aWB^G?vwY4VL*(_cNG@lKlx{#K z244h0M8bYsIqK7_&3vHNNhOlAQ%q87WjF-gBOY=*&&kccf7Zswi)poUhE3 z$ol{$H?l-Q9+U8xiJ z?E5C|GIJgnMiwE7m|@odaml84`{6b|{QM!a^~p}^xjK@=k3meOh!<01K8>$mt>XIf zIuY6*e*gRU<9C0|`A2N;cK|$tXSN*?6Sf>ewIBC6AJZA*Jl46W6iLEx#B4W?NjwB~ zfCeKT7&G?RG!(K#jzPYVvGrlEF_2_0*laI$A$-jx!(|DLlDNn+aQ%qY zUD`Ov?wO(Hx4Sfa6$Gp?Hs-JD&M8d*nuDK&gAI)su6=5cweOMuPCJP*xE1#UFx6tP zgp?zfF^TKczQ|HL0BwzsM#{cPZS(X6_yg47l633#-MEh#I%KR0OwGl`E>k#*KuO}0 zh)(9(-YCZlV@68FSQ4`)*cSuKlyan`OtipL?tKIx*nyFPY_z|@Ic;d1Z-bk9kaN>{ zHE1hhgKES&^}Btah^143LS_wVdZ!)6-hJ}mtDEQy5$+V#uptsJCg41yIw3VWRlsT&17VHn9M43da#Qp&JTGHL z6mb7>oq!bJRET%z;n_*xynIQldY1r%Sw4M<=Aq$doZ#pQc-G`|&6wzH$QGhru~^ zn|_Lyafu{D8A0zXYTY@8A3mqiXa zhwRS@NS9a3obMhZA-c)!A#FDpr%n3XOkQ@}>^qWwT{_WkO5z}Y z|CtM;n@Xf=X3%uzKcqM|XDO1>D<&tum?wmC5)zD)g)~oDoCY(1OHdZ$?DMb44H07R zx&w|rZWzLvPj_&*wZDf_G*6^==DtYn+D|xDfv~6|i%U+ynS4O<&X78FNV(uwakC9s zAruhc=7{vc@xu>)`4UkQVkt><5x(}WeWYFHfK()=PZqx3`T8DTcU5qP<14hgIAZV(r_T0UMp&hcTvZ~+u(~v1dSoPMu z=g-AuxOo**f4Kqx(%dp9xR93w@gRv8 z*r~r@8A5`+0|rZf3%C60zN-CgEIhYnecRTNb~uNOvBdOGu{#&BV#E?z%%>vs5l`6_ z7Stpy&!^*lte+0?;oZj=%!ZlK&}7U0N8GwQh(^hmo#3?>`w+&ue1nNuiOl!0j`IMg zaflC}Yz_k&aX0>$DY*rWnhUEtna0J%EK_Am#^;``M{3$uf$?Pf@3@#``Lr|iV!2D@24+GNeqwxcCm|nW@g%VmoLTdfAY?>Hs8ysuB^V~~$`HejAR0d#VmW1|9JaV;i1Sd@0B7-0nMUQ#S75=6G@FNTCl9rn9@E8F2RhX! zM~6)al+BHpS(C%#YdcJz+xX(5jrTnGj2H3Rwv*9Gd<2jS&X$k2&+X#!qRp1`g!7W3 zPcN3)Cx}wi@ca^l!(mc*@9&T8WV%Sy&M&|ITFm2qk}&6%N{VG`mlgBn%YA$qP!0C~ zm3e=rk zG)y$7Y8rr&z@{k(rdG}V@Txj^JK^xSRiRZbm}8Tsd$y=bqL?P+IZnKsi?J1$hC$+% z>*K(@kQyqGfB7beh>#u98p1P%OS*r4T(_x&UrH*&GfAK{B#@fT!%+S7=U<}5qy0>D z2f{s=F63$9xN4mtQ_MjSq}mz);&^N?qD5#n5PO7Ukof#ea_5jaPWUt&He|fyKNiQ_ z(w61nXi^k+E3GJvhqbuAx@v#?>8}0n|MjeW|J{%6-~Rp2?fUwCYKuI+ytbcy{(bx5 z$G>Vn{_xj>)^Xp?&o4p%m<;SkX~&=W{A^a)OBiBF*Nz9w!m+)7cNKx6{37J)nY7b6 zjqN%+CdciYYs|T9#7}KE!90xHnxMdec{*!X-(AP|gs&0?o6isP zsrzUR@7K5O^8B(f&x(fgZZy*vjOFhBe#j(=0o*i#I_(?WGg-g3r`MQ-oL*I0>8h#Yl1IKn~g-mr7G`> zg(dgG#o1{Rz9dOYLIq!wGz#*y8F>qP2FEo$Orlo5nw+M$PxTho_VXk9Hv( z8tzPtZ>g{#B5hg(fJs$kLA7a4z%a%k`4$Eho|S}HFj)YMWHrEgHWuv&`zGR!gI&y~ zk=|82ot?CHy5#snBXMYZ#jqCBwv~DsLdLB})!n)Aar^S{+)kG-jaqvu#(cL=1r7t-HK5UljI1TA*G!2OYku0pTfYS1?H(L+LeUortk|>9{+63l+p8)0u zqQ!NmGT<0;2YtoO*OsprTL;Xq_nfyX`3vTZPsk4ZCf3lvo@0dtTv_U<0nFE#_0~}8KH28 zW4m5nR;VY_k&^cNU3=NC+w1DNy&ezky?Fg-+YTX`QVo|=WjWI&E%E(xd;NUZo`1b< zj~AcY+32L59w!M`zWwD>Od+&2o9EZIds?-V!=!!x{=4?w#kuI%zdiqk}h9jiX&Xu^9U~_?GsEO6i7!1zS zes>?lZS924X5mC(V4A>|dm^1lgjTSoHiO6q5;(ZiZ%Dsn-C{g&r(nDG_b!?)1W2m; zxK1e39;t9zc|D?@Em)J)R=BkN3BI%wsWGs?Y&2_=gVNceYG`N&-x$Qk=#zWGgH`mZ z&%?0I{(^251k-SM+4wk0f}i*APTLPZ{MbHz{I1`f|7Di;x1$r|%&o@WXa@WZj?A_7)Ltjzt~vDsytq%B?hE`3S_MK!;mR@< z{AK%{ImnBLe?0GcKlH7i{WtHT70@5|lI~OQhUpN_iA{TO#2)&OnRc&nXb+(_R~b8o zmuc5*4N)hH!FS@_yPNj#@GkU+FH14Vm_iy3A=S*ZvvydNCWYn*?8vf8^Rwg*F!YD> zI$<>oS{(Uj?e^|2=3I1#P_1@RA8*^#eCm@qcKGe>-1l+O=<8dDi;NWlbOS#=&tG0$ zBvdQFvOPwQMR&5Xj|MBTLj-B!={P5$C?cIl)MwMujK0Z00 zk`rD*p~(>b;+^`duO>G@C_xR~V&tWo$Wkeuge2}?UjlIM&0JC64R$?%WAh@6;C*_S zwdrKnc4G_d1dPl$>cUHl%J$3)dXkKw#$t2nOW$;!D^E4Vw+Nqkat{PG+DSqs=l&#F zK)0{2L7D{*OfAM%n-$F1BvkJDpMy%$=8K7|Bm(P%xMqw9Pd8hHW}jqpB3x#N6n>@v$AB#_i*e z=P_Y~qx2pyvstyL=f_kwe0q6oS98%oXVCzitXJ)@-Zx34=0aa>TnGWv61yL>ip-u8 zj&0lO?!JvAMY|lg>2ls?6QPx(_HrPZZ`->XU?8m3a-S0r_F)5Glsa~!`MJ|ZM@5;)vouVsA$&)<-~y%A~@=qo}3 zUIZaw82s)8rx=IYM~4u^M6u}apiMOAh2Sd07~ckl!J;S<0udy~Y!S=Spz03Z0%Rd# z-gj)9LzzGVCxNI!pl}RELQyfcq4@e>7Oc%^=x=8_GBnr9SIWK&qcgm#-q_z8aLE_# zBk-rovq*H1K3nx@B9!&CeHe|~(+htu!pkyQbImdQWv$$Qes8Simu zLw`K$?|#j@Ixg_6zxDC$J=MQrhP3T;uX}vD-&o9F$8p*RKhA!*w;yk>_rLr7{ky*F zkGAz&U(qD*b&t;uYnV0WccxJNak$5If}+#-J=6Vi`ncVzZ+=&ZjGu!Hma3ehKfNE` zZ|pP*y{~;dKHa@LhZ3p&$Bhe>t>ix!mV(NBTR^G1tunjl)|8Rez@Q zSydCG>RPQTsRRjtd=PD52H9c+%z4!x%rsLgu5@dX^%`XXH&gcwCl^O_Vn;jeheJG#*~>Yw^X`WBwd~SLRM3TB#M0N~4u1gcR?7>(>t|Fs25C8Y6W7xM+*nO_fMa zb-~Do85`nZeuemzqb6j*AVm#_nitX!5|3y5z6rk#F*h%x+U#Q3=hVkThDmKw&2?nc zfj65(V?#P_DpPYv{}Hx(_;eqMR0v~|`|xA&K0Jd?C;tNff?~dCg!Zed3`;9Tn!f+_ za|#pbgQ$=fWr?3_jj61c=gao8ylB_6WgDH&OG^>SF|O|IbjX|;+YFTf*n3{J)zfpT zzW(?B_TSn$v%$v??cMhuqb@85!)0r;W7|K!L`xKToVuCxjR#_@hL>wdz72+@e^2WyxJ66iuGazRC$ zOg95!hk%Y1!i}-&(kzEe4+h@H2z_bvI59$+Byo8h=26R*^yXc;pUEhmAj1o@Uj{pH zm|B{J%07wV#vbyQO1fysEe?sL<%niMYGIWi!SdE#E}OgGqJ`Md8lDFJz@YtW2lynl zCoQ#&CP`Bm^nx&bv;n~vO<9OMj5uhfYON|d1}I=kwbz*jvsqx@8TY>H3R!!leFvIl zy`+RuCj#;C&a12Im^jZauG+u;;SX`tL=5szkP2LA_)6rZ)lB8-GS+lOG+^CIzt@`HDMbls=+Yo2Ot-mXvjdpt&~CFvsO zq5p2KJU0ahCW(F0fPVSq*ARQeVR1TYN+Y<@X#zE1v-ob}SC3E8R76USPH%9$SZ!h= z0H8Ack<`rb{oO-#KGFsPI*VpOPJR6_;g73z+XzLOs@?EDHk>o&2%euQzsvi2-~>5x za4u4JoCFdt`)!;pxDA7{aeQa6a7LryaTNky|!hi)-=h z|I0IK$O3$e3zOIf{-y$#=qQ(?`N^_H^7l-w1zRtNz(V>61R%9O2*oo-X=_bNQny4o zLU1{pt=f9^+IHJjYx`|`cX5`)UgQ0yZ6>33xfD55{lQd{hV5guM;zIV9XWL3huBbe za^y-ODX`<-Vu-X+Fa;TOiL^8i+H>fqS&0cK7Yc!dg-BcRq{t>A6-u%+f@s*ZW7kF` z`H2iF)S+$&W{tPMFgO0W@jnM)+9wdj#rb(5xBW3%he;Sz)kKf6)vBP1 z2#`!j&=|K9c^3vrs`fD=R^`z-2MSj;@tOaatIRuX5_sY-02kD{^C8)6H#vi#66wNu zklCu30NFWfL2(?FtpE{*xDZeXF=J;|vo~pxPB0~y)k>mfo{Rx#FnwVnbP#-D3?WKD z>Gv?X(EwCPq*CPC!i-?}livYA53DHdiD$v1BP1P>1Lq=2LYxMN&fvcy+XbDqnF=q` zJQPh2{~B#auuWRkHYpiCED$f@B%50;5uwwcKBr>r{5VM@gUq6A-Ekt`3-`m|&tlf4 z9fLzWXAborK0y4<7oi1#f%p*+zr(E#@Z%(m{rt=4A^L)!f; z`}+HOKYTh|@9osx^=~mC)zAK{Up%LM^Q48|U)TQf(ErXfbi&UZW-OU=@0JvCVB9<( zxZhV<2W|Jc_P4Q{J7?D>>5sW^&HFN*0=MinYrH&@gi%Fnj`CHhlP|Q6bl&V@OIM%bH3=;$gp=Cks(7R&>uwU{M_jWEzolbrc0bywM9%TpHDXrU_)!)T#uX{nAe5OEKOq-T?MdR)Z8 zYtNSefuIr}h&Y1bSe~6Gp_2a4BJEY%RNyFe2$U^8CTubZbeJB39EzZ1BjNH*XaLz~ zArGbmCaNHG+NMo0VcQ;t;xaTChq+4qop&5c|3E&Z@xWj)@gR7Z zMrFDY9MLk?ycn30lzDn7D3t7tBpWLGlTjPL^2cGe!B7YVowoD&B7_bDEu^h&4w3#3 zua(rr+F$@T5@t+Vi076=?WVF@GBezNxy@!j6HT(&wb$GG_L&|2?!L{IrxmVA+C?C< zCc;0d@FU7b>p=5xzC3G_MQiWRIlY~hW+k&-_i`%Utk+>W5@I?ne*lbxNn?!tV;fibS@el^Pc;6ytY@VqMQ9VNQkLh@ipRx z#-KR%jyIT6AVADg=54TXml_|4R%TR;0%S+Rg;2p(m`&<;rqv<`^2y@4_4%mMzu zdofBTwr7-#W+#&A;Byg;UJ;7CKU&O+%7RDu9sx{5pI?KysR2PV7{^L3hd6}G9*C#C z0pZdfeq$JlfuK2b*c-I83udhoA?3#~3oom?_R}w)+I;y-{5LQ+@7}#PnCvOAhiMRQ zZ9F8`PSmV}c}9%Qv3n6FL=fV4U?|O}y*U5r*WB+phfnHu&mb1=>t`_>r8(8M)Bc6$ zywe$CJ1{b?``vxo?eB1(xzXp|H}7!WJ?`)K^k;)7hIe>Y+s=Nx{oAwJ?sMWEziZ1i zpZ%Kt`mOh`KkFTREM23HFuTt^X)l#$tDJ-WnRD~)9>2Q}GvRrf_OCT)-uQ$d_!wgj zyXGAngKeOCda9Gv`Zd5v?f)%qev-O@T=_0aU5+00qFD5MQhM_3Y*0qxo*684AC*U{iim?uC==_l2z5ToAb_?f={r0dRjI{la6`l zo58|ZA_NxG<*a%3Z>diKIwBl|7rzNWSYEnF#Qv~OW>16?LN6CCT;mXrJYTfG`s*Ls z%d?1*m-hVl5;Zsp$a?C4e#Mz=G>Y1Hwb`^29`Zs}M@1OLdWcfUCerU=V_NGI1Q>Hj z(io70HN)H}4u(L*CKu!{v}oVbvjTWHN8l8OFUkn2l2I8qotoVLI2V zwgi$78V)A+#5H6vCuY+g3(|tw|Z~yEkb0M;%2)c1&k!YMU(}yA|%%B*nGL;MtmdOrV z42}E2wgWhJCZ6WDwvMYc{U z@@x*sg9ME;vsf{|Eaov$B%N@cF*fxb?%UP7^S0W&v`?QtwLky#=l0Bwe7Sq5E(?I@pUkfEX&xOx zpy+xSqF&B>-zEb=_D*eket(cFfaiQ<@h}jC8sEE<-1pzl+T#Nsk5Q_B9@piNhHiVK zGUc=iRB8wIu+^$vpD&YU`1C}Y<57}GfiI@1Fb;#%V62b|OSTQZ*{%{Ig3)o(~wy!%tIUrZQezd!e!e>fTyo#nV zua_6+A)3$wCC;V?dUj||5E2LJ^{{U0MCbex$JhEl7Tb#7{?xfw_e$KoVQ4}pv z`z8o+Ab950oW#F|7J{0V^dlUQ#xi1eNs}a*%rl85ar!*^OV$?BiJ?KAogd$aL-Lno zA7P53`mv{WF>O%(*p5sZyxtjGzzp+;L`*8Z>TB{70HZ-!R6tyNSliKNg`i>_N?QGP zk2d!0@nPLQ{!l{1Vy=FPD5P0iEHB!}AAW5A_y6gX zIWce1Vvfeav-(i|EMkb6FfPIwd}}}b?sqrAmly)~JG!aB{8<+VV(K2+h_}oGCdPf% z#J!;h0~6u8HGvNuzI%r=_-iP^jX)u4PS1DZ)!*Hp@eZeUoZ6_Si*V;91C!A2?PKzr zet7Qf(fi`lZ|>0t>Ej)wdoTIRcHHM38QU9N;hKB54FRsqlGd!4%j&as^ImfiCZP(u zVYJLMe5sfA*wgcKyLtDneGp!|Tt*AwH_s=ac<7tCaz8jFsQ82f&_T=teAC;;M7V#n z9uHAZH8*{J{MJuvBTc!!`MaAgtkLBC#mWE0uRyiLkKcW0zxmDI#mVUP<+c6#%byxE zCc;6DEpGSb<~-RR_xmy*L{{K%G(lv`VJTrn%d>F3G!0T{{QS$WO)T{1+q-uEAXEvWUBzRS*Q)y=1QMhS zcmNHZ63Z;KQL&%1i$x~=*H6E;hkK4_@`iKLDyJ0p^2hMbNF-7F$>La?>Dl>t9GD=( ztLw}5<6nK>E-uT1U1%CLCq95vq3;kCq!e3gB=$pFo-;4Z(tnFxF}JnABnb-%`2$Q) zRhxzibJ~9Vs}F5FslrUlGhVUFHeXZ{5yb7{;;K}l`(xttEjk9#v(}YAiaZym%d(-X z72-YbKfDiPK#eXeNFNCCk;apy?~qd1v<^0#XAl7hNhLse}L#WXYae$!(%?4$`6qsy0Z*HUY*B z1fJ4%Nn}ICY*R)uR~$=WE|Tg=3PGJ+fcs_E$wo9Dgbre`_LXF;RNBVvITCmxapD6| zp{p_;VhUonZ{y@IsPEN38$10Q?9$$&E#v0fBS{$oZLUKowufjZYD^+1$`4>lYeITT z_1Z!x7=z6gV_nRWdB3~A{bmLfew|X;;n*Tkb$^;@wnSUWavBDsq;GsPDTiiZzF3sg z?%6VZguuEcLZ9`enBHR4%qPDPdmfU;R3NgR>kg015XR}cc?u)KNtKXcUj)gPqcq$S z?U(!LA!%_YL!u*uqvwJcm=|N=0}_M_p2Ey=JcOh#l8}IAj>URMLktF?cq6He{$H=;2GCTfVY=``thOWBXtK(|>N4SJ#OaLEp|UE+fDx zi~e_i_nWk1juhh~@L?n{vF?S~5p>5UA%g4Js%Zz{c6M`rBaZg5KKYJ;z<3b=>|ywl zL!|aQA*E@s*R<>KorxK|Y0JG`BcToVdbaOZ@9D6aJv%TD*~hKLw5(li^}cJ<^UTiu z05=YOHCAo*_h4@Q{`TFTce>Bv_s*2K&!G?Ai)rz9|J^tU2k!Ge?=i>dlTR7~z5pDn zY3l9f&ir^rJB#_EefaP(QajBB!5Z<_mUYyQxtBX7n#mz~Qy-H#z{L5~_J8>=|0U1= z{PWM57uUXg{?h*TZ~r!M3F6ZSwC?mYefnZ8yYpm{rmf0(G75tdkfc&Kf5zPBRsS8v zuAll_w6`2Ut-p6o6XrH8&J^M>i6)>HBYQ9eSL1%Ofgwz)V~4@IKi@&J|JfjeP&dg# zPg>$QhY;~`z}atvQME~XdBSZS8p*0JHnbiak*bL6ZF_uriCWl(vDg1G)V4K@wou8j&Ln~l~iGJc;yj?}ze|2`=o;T02FH18$XJ0y#a7n4|V>0T! zsyMh1PmMsl2H8>9*)Zqlr|r|HyGV2DF08k&3EdHoJ=;izrNntjB9LC3+@}bjx&!8o zdWjus9dn4kg@Nr=c5J0$CC!&7cS#YZ*z-2U$qW-Rp^#6FhisTICY%L}+xLNpD5Go+ z9v>la49d9828OCajYPx@$#-7Y?NJgUDTjC4Nb56p@6sZ+yaBEqO)BiWUKTRsO(&OrFtt=X0XTcm>_M?jn>6>dm&NX$h! zNs1i8gy8?F#4)MhykNMpvdQlp0-n5R%t7(4%tiv&l`b69TQ*L_h{h|0wPtMH1?bx~ zn_~H`Ft1@a+VrFy25k!FVd`G(*rYZ`Oh3iRE*GbH#@eNSnS~5IfSoLq+B>Nf*?cx6 zDAjlS5j>cG1dvJ1{Dr9?p~c~`LNo0(j5-a2P*Y}zlvj_|%HDx~v{8R!7BI_E%~I9x zMIgyxQt6kyII7Vewu^z}M-q)gF;{6XSfc*2cR6jvDV3DOr{Vb}<_kzNuuUVg7dH5s z@XxG$q+jE$b;RtMFJpduxo>M)2gIWmF7qfoT|rSXdFHFnlluaLG56_P^)KV4{jd-C z_sDqw52QGmeT=aIbw0I@zziDEm@2eX1if%$;lf%{Qf*BJSdX?NQ4xd?gsTLE%pZnF zgxYqWDx2_)HT4{Vzm6Xl^)WxCva@U1{5s7I{OxZlXK;lO`*gyK?s3?g^SOOkW>v(# z6FI+Y#|h6{BW*em4}GHL?KHzZ?sWu~htOW%{q~oi=mv(N+WHnj;aTtL@6ChRlLhnM z=L`%C%*t0f^u`3?x!!-DovyuY?=Sy$k9T)%djGwTtur_Xta}mM316aN&O5G?GCoWM zQ?)sX=DdWS-e&qU(G@IB1p5ZUslKm94p1ct&InX{{#>zMZ7QH=R=y=o_$ z@_UHTgNazLqV=>_Xg{@!Y4P1*Ua-~XT$|qSQ(yXgy`4kPyT|=g3vF^31i6!hG39{QxP+Gs7+7GLpa2iW`LPzUg1169wg=Q5rV2>OPC!@hnmtTZ%TtI`o|am2-_?^VRCS`irVFbWVjhMu(7otC9Zj^<$6j)@|W zj0vJ2B_+BHup5q@+kHFXtB}HN5E`U{KuAc!Uz!Z?E zhjNgW6fC|-7``F8z)&C}xgefiUV;SeX{H?}o-iy4l`ZF0efi1^B*Fr&DQ7_%Kncwp z%xpA`m3^`jk?C+4(3rU@Lo4Ybj+9a77BgR(ze%#8hIt6*N{%2TFoUYkfx$ivg2gmI zhvsuI!i4E4p(xy3;WzgU(L|Ow$hll~(q}ZACeoZCfV0sgrq+jt$F@8t(W%!nV_#}J zK26bbz|k}srL7fei%9MFmDmZM!x+^Xdd)YcvR~IH2;b@5K{gCB15@3JhjuX!h=fD` zt)1_0nTKktsyl*r_c-l?jCmmLgsje7_`Sn@zh9dU?}Q7y->2)@Q-hG2JvC?(I^*CP zc&zf<&x^YHx-KSb;OZ-4w_v`wzl*!k2aVfLFL85PYRQ~qLk z8tnsZDQx3CXhe=KxahvyHJk%5zKobqh$XsW4} zNf(e2PMahv6QM=MXeGY|H|rWN|P$=Is9NOM860t(^M@ zRmf~Y>Z(bboi5wu*=cLvjoapW(>{Fsn0g9)G%z|i`!m@kZR(S0TMnumL}0UiX_wdM zN%woUEw!Pz^66sS&Zo=v>V+wuZuYT&iGEhqv(inKNs69QLY9@VgvkJMHD2SSb`LSw(V##cqpX*Wh^WU| ztrO1f$Qi;Kxi)hKIk4k-cT5p6)8xrw9>zt?Ak{Dqagdd*u%tro0bo|Z7Lt84hY#2s zG7W;q`kGpda2d0QvK3`&3g)jzv-1=oI?@mw+iZ}|{A!J}H-=mN4LeZGnmH^21ssx5;vT^@>B5>Ij9xal%|KPgK!VD zhX_|W$N6MpD+$HgtrOZDbDH$cE1Cda)|*5)#O%oTBVR8oZ5_23R zX+I^e{xDz5^RpmV&yix2=qjc?%n0}`U#1{SD%nNlZ6KA2q>`^Aeh$OjU{o^y(MS$z zIz$ICz^G*Y$~OidU?1x%iXQVK*od|PlXhs+_!b$_Fs}Gtl}4=`9tj41M?k<1qB9Vl ztYv{yz$^^I0CEE%WT{~iAspSj-?ZiVMO&Pmx1$1QN4RcTQetr9q~PJG{P{)Z8E!_f z*rFkP^Vx4fqU*A~gNzaNeJD z-QWG${=84^yRL8U(XQ|M>GZe5y^h|ee!XAoZT5Tn_rAxB)8F3F-{X6~-<&wK>m7cx z7ib<_^SeG`2r%$|>w5-{etKD_+`T@VYsILTiZBm^PmZVrAYuOA?;VBvM(sH4J^L#A zFTOhqN$d1I-&IyQJeFTB_n< zb3h)XAbzK$JueLsAJo=KECcwdk4KmSKv|kQDmf}+9gE~jdL2@tx~FfBlMKF`dQ60a z)InMnAyB|IX&0A5K2`WrTAQ89c+{;pZ6{Nzq}TTR{1~+@@y&v+1@x8;Yk5KvyN zChByyYBv{G?e(ObS4g0E)T@iLq=bHYeu<~~;=X%S}Ab{y~H_&HzFL@c6; z4sh=v2~zeb2=@7L)$Sheqwd6kLiCtFs_60jtc|9Hq^;Xh;Uuy1`$H35kQCB<2>1!` z(MTvCA_m|v0|ijX?s!%RK|7I#ln0(qQzej=h|?OULsbKWCcO^WKSVd>tp^n|dXN;#)X|&?Wu6RT!te-X1dCK)D zmbr$lFHGg$_{}qO$)uf}PTFCjB=@$BrlW*ssv*LWvGgzl;-$tHx)rlfg;yusb%?Ow z5J?J21j)WkX&Yf(4YH63O2MkK)0Wg;8cE28q>s5bwjiN6t`_q!!n6thlTTz*#m($h zCNzi-b7IWu8q_o(Rwi(W>LGj#M2asJtpk&WD1yi5r@=H<+8B%jW}sFqP?Mx^HCKd^ zWF3o{6Q06MAJy-mvBG2_T8NsVgvn6AFRVqzrcaP=7x3c<*lHagv0r}qB?PK_{1*t9DJ_IzNFVK4OiCo~2?x5W0O`8>;BklV-i07} zw*y{q`VA4PyBn#8G=z3jQG&F(#%c{P4&Q(OeN2P|DdDu*)%X7H{@uQKPA22Z+2J02 z(RROwK#YlS-S4iuX8zY_n?&hgo~QehFy&MJ7%$HeuE8=!!E>01)3YU~oWQbYwyDig zYZJOLR4_F!=D|Dr-`eQctiQFI_8Y3>I$!v zx|nYOPK%jiellTq@ zdStgQuXxvJToPcX!<`ro>hEF%K%9+JJ{j4xoT?Cgri>sn$bS^GQ;18{c?d|Ym3D&l z(_r?{u=%}zP+J~GiKCu!Y#A7XOybZl48&1ZQ0qSEJdCv(9zHoI*&89;-;is)5w_!) zw~y3=fdJo#u85~F5y|TSwpy!jRm_HW9*0PXT`_&p7?tJ;9EJ%T?9<3BqL^_>^cCV? zhy#J4l?oFKMv~K{{FA~I>Ea;e+m|7(Ww8n33ImlK3}tJz7GYo^>d8q6_I$u7K=pNH^9O$< z0u&;wsws!!<;7*pvGe7wot>506h@nFn6=u6wR-m0PmST9;@4dbLOmDOI!}quS@V9%7ua7%n#Df+B z?DRRnfb}^7G+P4QpkYCPF$>zGdBEUm*R$rH`J(rs_suhX-Lzxw{nq>Ol~G7;q+&wc zZ~Q(zU$9?r>AO8^kI-7UC$#&GUxWT=-;wzoU`3nez5nhWYpOqf^BH>5la2L7h!=fq zH>46Qbq#vWfe&Kiz>+Lt?0}>Np1m)e+o?3VCliiI74E4&OdWThZ%cJFKWXpYT_?`Ie6{s^$Xa-EXp45z zUKCy$@fX;}8+Wr=wd42@mGAw-Z5BwM{Rh4wG6%vrTbv{Wji$vS0xmCLmN8et52s@V zNvKAp7;f#|&Aax)58q`j9-klEYWEcHXJZ|Y0aZzen6jwx^>-q+`!v2KQ9B>2UIh*gthUW74(7?F*GTKSNKkeVk51EWAW&3>2uC?GSARtoNl z31d_UhxF}099rX(P#Y->UXn*~1}Z6?beC1jBSoOTF%RHZ#>!%REiFQi5p!gNCe*kH zY#VZxgjqmDNfVM=4QksYx-ynQP3)Bma|pp8s?qRGQ>H!02Ph%biKu9mJ7K$SSSxBW z4xThtr3F;2a$9Br3|Rb>Dtn>++H1~okSyj15?u2N9~`Z`3*%Bu-$@(y{PhD8@_aE8 z)z>g~gT$r3ogkRgAi(XutzT9#HA0ezS^SBvS#3M@!QqeQ)21x$HcdwjKQ)?lpejwb$FoAH#j- z&>R?_s1)NeURhoJCd$CGy?=g_M%tllfeO;Jb$&OeDo{E(C)2*dtr$yqOA2@M=Y5X; zUgPzw-<;;7Gcx+GA7I{Z?(>{}xX*X6=ji=(zk4yyez#sRjl@hf2tIkDrEToB`#tA< z`qSsxckeNWe(&p*$P6z4{1^fue&MD_L!_$dIH7CSgd-h=Ae;Efl=`eR12(J9OAv*~ zVLFZngy5vjXXAExF>aiw)>~mIVnru$xU6~zqqf|~BXZkS6I$vJOCT9SE znO*7X;xbv+F3zvomoK;N-Q`95_3Eu;&iKQx9!CCjpKt?Qe?hlmui$kjfP85f;O#^l3=)^6s5+Uq)rR zJ**NoE26}?+d~RvTdO%#e*-h3BI-e0u!DI}vD5aWZ9uE0v(u!) z<(txW({>b{A7Q&xn?fB*{{wE1$;MnZmtSR|B?i2$==IV(lB zzL^U}zf=PCX&&Wt;81#`iQq4Sy$SCt^uip%N3GMLM+k~^JA=Z|$-6x_pUMu)lvx@D za0zZQ-a*xhVKt9ZkBhX3IR_IKB7s;JOkir=gIV1U;e6mPbFV?fZ&-W4#Zfr~Kfe_N zBI>KS0{uY{!C|RZ^vm2cd$?Shn1XYiE~cR#*QZY83ffBhXCKl&bRz8@IN7^sRfO_A zJlrL$oVil28Jai3-r;cCe)#eGm@a!L9o4zL=Y5d9?33PsVIUPFk_d&lqB$tSfRGij z(>Loxh|msZ&Z&(e+89mqP{O5t!ZmxP?Xwe$Iq+@-2qPaJ-INUqnS5etX>o>d)=s3n zN1q&?cNj}QvX=()hyF~YUkxMB?=P)5Y21lH^0?;;ioi)Rc-rsdM#GE~^WYP+SOm4q z@L&cIqGd}BlFH{NbnR^y=j?9`1Pz*bp;fJbgfamz?H$(4c-5wTM^F^{Y+X0ZdP6;m zs)9OcS67#z&wP$B0`QZ5CrWK7Ola=ReaS?FfMZRD00-uYm5QB&1F*%!iS8%LXVU}( zm`m-Nr#{D>x#`#R&4EsWBZ&j!NHv~bM8Y_`JZqQN*G-N0r_H+UqS6~x=$Sg=yz7`D zcDNQBQBfID5t0l6h;du5c5OD>x6`xpc6;};B7x1w?2>zbvX5=L5GDf3OQN+E4)5%|eGrN>pQdQmcDru( zPj~I%@m{=SyEr>3-D?N76#o=~%z;!i7M~ zUb?VN0kCt-iZ0)*jBH*c7Ar!7PAjw4iRz3&GmKra;G}!ryzmkWjK!7#}7ZY z-DcgM?!UB0X`0z1PfxM|u##;uYaf63K9Vyt#D)Yb7K0W*QlHhPO&817rn@je$;8Na zM2>zoxaFd)SI=$4{yi_xZKjr>AsB{-`1mB!FakQ@rXYX6StkIUWK*L}?md~V+sSm1 zYMkn(j2j0(Lf@xn zetu}%^`Xo#99*NBs?2T(+~!H16PvP5^X+fUDx}LX)88=%L`p5`jbtGm_3Gs=;Uz>~@L$MROT9q)vC~%nN)QAz>m5C~4vk_Mbo(5tk+vIN2QXzIDvSJ9$f+#Q# z>-Z;BfuxPZQ_`WE^W-ZT!Z`QGc6oChtw14v$&?CFL;KlB){*&3Qm7X`RU{{bsvNIg zU-%>)!(b;=+26E2L&ikv{L=*~mt)u_bw@Bj99h?-rPO{Xjb-^Q)cpCIMu_P$%tAPj zaXjPgBjaUamD8cdU*UNe0K_WUQRRp^J&h*G9PmF8x@nBb5<*LOc@ni&h^Qhm;Ymo) zW&YZ1R$(sf!SP5WSvZr-j(g<_xV%&)b=q$4zO++$UI;YGY0vDDS$jXajt1%B@k?8r z%HL5^tJ*!*Y@8FHYt>2uclQttnY$SJqqFG-;c$hM}2E|K@h-YR7XKxHhX^dKXN+svc zAlNH4hh1w^d)#$&0@3P3PQOZ9T74Ri2UFBgN?bqm+jH92XJgVIW0=h<%{8e$nMjYH z0%uG-7>K*uyLP(VmS7m6bHGuU3-iFvJt-5tJ~8{yIwWFoV0ymXeU6sEz7mOdI+BK* zMnJXaZTw992G7ur(~5USl5dOoy}P>&)8Kc4zCB?)+BseF9jXF$>-8$(_mb>AKHLXS zxsTr!pFPn@nOg#!IcUd3EuvZaU_Q;26BBA4%ninr`Ab_}c=!8MnBHP3VaOsIYkoR! zXXj__;%eP4Z*JPl>!%ULHD{ks?N5LBeUlyY z@BZ#@+TZ`(-$Y`%zM?MTxc3rA!_8(Csl2?mah2F$HvRG}w-8iJ5*%SDNPI$Y^3EVnX?VRCi#|QDJN9prZstYeVrN{LU(@mkN*&)_sf?*x6hBi22nxYv%Nw( zRV7ba=i})dJD$p+t7o3>ilUJC*w}5P)()$E`~2lgm>ru-7^lS%Cc54o+V|i6(9V|2 zwtBj2`}I?Mrd~@figLQ#N>G!Ee&->;Dfx_x7v{M<8#b>nNnw3#!~9U@Nz{dz+#Hy> zN~$iAphQ^`OE!F{QNf#jEo_Xp2eSb(F`5lxed`UrG zOGu9zk)#}3b<#Kv8?Q`0=7ZltKJ_6!0sA(Ri84$KTff>G`d*UPTV|ogRbp4jw~6Ms zsYwh;q=`ZxVG#U|3E0{2B_-P2UF(5RL5f10XKhx|O{tt$1y4T6>(PVKS`@nNeGwkk(4QP5XrKLd=+E`^nM? z&qNOFJJPSY#t59w%cC1SG8J;>Og2;XDyX&xEf7h|xObb17~C9O|HUGwknVjN?kkWKNChx)Y5g(oITjC3Y93Icc@{1DAo;K=?iXVWru z?VHi1{h;Mx4KYxXX(D1nF|iQ7NY!Ny1M^I6F?ofd0NaI&Xz)0_Vpw_3BN*`1%j;7+ z>}djMGHGdPJ}WU7->OKqRQ0mx4mN7*0M4T!8UD@048nZZRO%mw)!aL*lfU70L?!!f zaB2iQ@Vars(_yd&`0N@B&p5Q<_i!$`V*X2`s2>#`8zVs$ZZn5MXyMbFwbQ%I*W zc**K`d3n)(`qQTj4xo5Ale!z!9FTV$mL#-bBcdL)K$Av7C&}YhiIQVdo&r${Q0;3& zh)3nv!TAV64BSd#n<{_1wqNhsAOG}+c6ol;t}d_I8A&`qSwv)$%5qBP0>DjFL|4~0 zgIW&}pqe8omMYFWPESdfu1O6IQI%Z?(&LeOeRCD{IlzfJQe6j#ZBX5r4A0mQkR^tx zjoA~Q6ASM<2_V*o3#Fi<2hQhh(BWx@w!&2%>4bbvvDn+f*VS()s8ZEdtYw`G|xwlro+S zRUHQa3L^vb0k=5~|M^A*2_U18=e=J#xWF9A@$H7sW{e7sEc z9mm9m*(53sNIU)s12Ro`QrY?-wQtUZozQD zM@N{o-ZoslvBm)jfWP>p1l$3Nv+hUenMIF6EhoT!Fr z0VrRhO^NU9H;?vE@AT)JDmFY>h(|FLMbrYFBlq{8cO!F9|}R|UD6?Av^Lx1ulR0o;xp$|*Q7_< z5=h=*?n!~2Kv_TY>~sw=1V35Vf%xl3hbaOD0_B=E^}(8VqU(8mc7K1L`->4|>ecuB z6sC|CLpymUQoiTFOfeJQQ}({XqnL-@cVl#diEi%e%!B8Q!O_Q}Po3C#PCM>%dcU(D zo^g7{eSJKhH-|o5Gv59lbD-TaWfVi!pY3h;cKdxkwa39;TiVqh&-K3hbf3BM>38qa zrnz;^>DkUa^gi|R`1G7U_p$iyIrB$DpdZ!~BjU5Kt^2j-eeQQ(|L&Tzk4qmqGw0Jd zI()=Eww$N-ZG5P7(M14DRXM;#m{qFFl+WGPX38c*==UW};Cx2Obp%cV zW&4-sctJluJ~VD0cGKAzpAV_8cbPNDJ4{TR0zC(bR~5$RXExkQ=rcDy4vw-|E|=jT zA0C)z$~orC=g;l#_Dg&m%n!$&$H#5vV?HO5RLB&SH}7m~x!cqx04S=Y8aI3Di9Grz z93^=Sm$xDtH*=E&BT72|_ka4QrcW4%X>tIRbJT>6}nC0Uk&WdUyaQv|>tgXKBeW<^yuS7LINt}B1$8QtN=Ab!!T|GqG&1GSm}-K(LjK^z==+1JkogeHU2_Ff~4Rb%o;xqN%mIj_zhiN zU4=og=9o(JlXV%02c+Je_>3LnK;4Y+8khU6m(QA8%UR#yH^NShzt+Wb`eL6UUj0C1 zz_e$*1I%F_e0RG4aNvW0$alt?pjE`EW)EYHfhdiLzr8DKHV`yp^Dd{qd;31!=hHYk zVRfH5@P0>c%b4=6K7e8EGS9=DU{XBiQ=6Xc3`>8nJ|M=Jh#vi*jp`f5ow=%*FEGno zGMzp}7Qi4>f6b5a6cdB@Q)F2md!O~y`}M<^;5*+P!G&gZm@C)(-RIWd{k}dQ`lo%* zcEaE1(7Rl-{(X+L;q3ET?N^0X?euxgi!iR6^(J1Rq}Sbk+Eyz>Y7=`8TSq_i&5Jc6 z2_>gAv$NT*W0zrLI~i46G)cwABK5Q3P)Sm$B_-~TR7VX~iEY$b0A{J4IKnlN^2@$V z1^wd>-?f{o>-OEp_wDAU>NI3kY*$$YC&%{juCTP0K)?1MwqYst@w0 zr8Z?Ng%lnh9|AZhC!7oUa+EqrpKK1?zW$n@$An2e<{Ie@PG$Fkd=l`jwmfoI5a^3P|k%e;XwTC!%t5S?ce_J z`)tl%e*P)M4Ivf{adC!WxR4#WoqEx*kpN@g2$2ZaRrYnVm^LAB505X2JeZ~+&$L~? zyJ_#PZ`%FcUHi=0M%n7kYdh{%?Q$vE$TY-xzgi~`0^k!md6xR~RRaRRiV|3_UlUeX z(iSJWC?Eo))&@X!xPq854|_xv%wR+YjR3|%IAk^yY1?x)TI9}>W}-Xb!DkbM_!bkG z1Rb__oIPm~%6p#404`@kCjqfjr|hzoC20-`QKr)(q$mLd08xYp(cUDMzZh2VV#8&l zBjD`bk!A~-hOUJC6mt=x0%7f#AUdL}zMB_AVe>?|kJQK^=+(D`j~vw(S!IsQ6+)D( zqZoRo2Mi53wb$ec*{!3M+HW~#txKyhXixOJ!$_Q}2FFkcNTiT%gYB%zAerbR*z#=t zrfE=iJXs$*^H3%T^9xQOHf`A3p0%#_Baie>016M5!==A5As7ZGkj{{#Kiq6*?D|D8 zijf#n=nwD#;AjHso}qMm;n~5Nj^t-O=r4*_&HZvk4K*;l%SzkV%xTr%dd|MI-kJMk z>TA&`nG-?`m?``pPn+yX$)!pXujE>%i$#djNTd^!Tatrqqlsi|u7XHn{rBzpv3zLE zoi1Sz&6_?z`qshUh@tDQA@uOJzn%Kl|E}K$P1KOfgY#YyAkugd>>@TaO_)>j?Yeg} zTbsAKkG&rbb-%tO%{%A&aWS>7e`PMRpGrI6Uj3@yi@`Qoo^yhkesnlB2Q(m_0jI{> zrEKkC0*u4&+SW#&AKyLi9&?2`=y=FIy+8dPCT-5^zFQN=#l=~Bc@?T!44U`otG;N{ z+@hhLc}sk~yN}6lzI(U7y;nOveb+DjHV*gs&Aq*Um=%ZL{_=F)y$)^kInr)_uV>yK zzWdGL9p*>h`={&L(*G$gH-I$Qu&C;pA6|rp4Dp;<-oe&KExsdUijR)X3lm^raqZJK z-fa^yw%M-QY{wf7Q0Rya>>2m#e3iacbAc1uekU&h8-D?TWKzKF;_NaLc#$-|A{g#d zo>rTHg>+4|9wuRW+HT%m1>wewaWaYNg(_6cEu`ih)bYRm@+r~`Z|$qA>vlQ2tXk;9 z=8JR61R{d8M=?n#jjRv~*um9XSdo^Zr75Q(K#t+MzyA`G4xzBt5rE)rX4;6Bo=LB(gs_!=fA0|xAE%%0|f`x-583Y zQ&p5Rn@BBt)&3eKaa6sRRw(`p1AJ!v2RQIf?euFHD!v;Kp+af z#|$z=OJD}{8BX{2WWscSaFw8!T^IfxF)yarCm0Z_F67ys&=1V2&-z}(-_EQl%4+02 zwOflwfg>;jt{h-WKec0yTt`6reeMBIo-vmGdvMHj`gOboQ)x2)RKH5Y;_qmdhxWDS zba=nt?V&E6$0u&N%sl%YgCO#c=|>+N-iLuHA+@p|>*HUZ-lNa%_YS}J@fv6Ehc@-2 zGY@&m&_8`}pWpp$ZnTwsKWL0x)9zok?YlmEuX`NY(jTANbM)tZcY4ksHm;&lkmPn-rF&IRG_Fh4`OYrdmM;dAz+%?U&*WU#wdZFD{ytF}kT?|} zP7;AZFfeLcW|9;Xdd+5j_x>gbiz(y&_O4x=owe)h%bfAZA7RcA#d30j+z^ZBXLUAC zlCiGlm$ZXH*tH4ic6V&^(?z>^chizGc)dvmKOw8*;~{C3Po~R+7OrHDJd9Fo3t{J2 z>Ud>4eS8c5%pAgcd7=9(Jp=f20^~|HUK=?Sr~@=r zDQRV>Oj=J4R4|*1b^;QZh5_W+%uy&(BSJNvwv+L+Eo2alDTNx6^QG>R6i5V+0R~G1 zgH1)+q;9VF_?>#*XWwjo*Kb6^`bz;FMtR700b#gT%=d~ zHdz%?=*+fj4x1R$B5SJq6D}6#)7p<5=mN(FdyVr~sU7R@Di@A$EQeR(;7UwSCzcLg-P@bv$1Q>@0 zeh%wRF}kqNK%54Ol=m0|?Eoe_Vde3iD%hb{=-LOLtPa9BqZdg$X=zuO@51OX@5TS6 zGXh00v+{2uX9D@wA5#JchbhREW=`cwv1Y-mx<_M*5srsV?NiR0{1&8&=X^aO&|$<~?cayPhD-qy&4dst;}R=RLcpcdX7DSxy1GcDh|T`Gq9UHeA&dhZ z%tLE1pHA9YQnwyj)RNPa6eU7zg=_`S9mnl-A>H*;TOU@@I0T`oN@_!`OU(!v?rv}M z&W|5IGzp+MXp&x+v#WM}aoH}<&f9AJ)Lv!IoE+P1PK#5UA{$1IjH#qoH|_lVvYbXo zY-0DxWr0}QbQlK!&9?XDi?Zeq$;Dv4my20jzdpBz=f`N508+EA5`M{WxJB63?QFXZ zlT^vLN^<}*GUfrfS~K4PGgMlPLm^jl1X!K?HA2w6D;f#W6vbFY8zNCcHdL_>VHgIj zKmcPfjU+k;lMq@tsQB4p=gWlo)F#C6A^g<*Ra1e(V)_@vrcWg9QoYMd!GW)M^g?*r z;V|4cwdffe+U7hSsh5kdKdmhV*0YYxSOc~D!WJ*srkdB$E2%C}7ijYqUlL*c8h>ecdIw;mmt1c`813vn#w zq2{~Vies~aa?4p5ti$t52n4vM{n346hCjevv<>@;#-J_0Y`nazlA-o>y$<7`jzzXu z0#--yd2nw418~GtM4v>o5y?QBtz7;XzD!vdy+B_g9nLRR(4`?6?DlYBLo|ey@+B%{ zE&F8NlWDJYz+8m6jE18$L4+q^!H_1#38Nn7VPH5)NJI3b5HG}^gmJWT3VtQy<)odg z#Pm-hK-h~3x1P^}&#V=E+cgbB_ejOy46*3&=2II5lf{IZb4T#YZX5rqf;)a-azM}= zt%GmjTu1fa8r$FIyH2f}~vLiqXp7$8mdi179z4VmL5((i;T!XEooh>xa+& zZvC*w+-L0i^Y+uGZ5;v@@ki z@bH=FimQwE{3>>L5s69nX6&{QplW=xlc?BisQqpg27-f{17KwWk_@O`mN;t#tz_kr z>|#1;cMtbL7Sri6of2J;2#h77^^E{P+MC#O$LY`c@~pkPxd}nW06;kMzGFZv{^u_^ z=5;g_Vr@C={r%tnHhuc(=bu6hjdQzw$l(9sAO0aKN`0ht2!}QrN8R-6r%xfAAHV+) z2RtfdDm?F(?QU@j+3{O=Y@6MO!zB=2`H^e)VqK) z>R^)eDA_Chu0L>bZI$A9>sooW)7Vf&%X5+1DOB1JbIKU(!~CROA(1v=vNEwNV-7~` zp2~B=S#RD(yOutHDLyzMwisr_D2Cl~sN^$om{c8vQ+Y3CrKKc5L+j-m3>_nO~&lrYM`LdTozL<%w8m`jpu9wt9yRq54<~~|J3;_+pI=1Ud z`sCR#Ap>Jkk^>H^l6{5w9wZmPnOpNAL`}c#X->~ol&(D5?RUQg(G7^mI$HObr{-k} z0B8xaZ&MD{6W#G29cfJ7^m)>B^u zH;6&5^#i9tw8?bZ+SAix_N;jg(MkwuL9_XW$1Y_yMEv)d!AZNgzDdD8>dnXJ=R`vZ z$%La`pXI5kjIjzNAx4-Bu&sT}ID&z(fEPP~2$Mb#9QPLSsc5;vXJw+2DDdj~BDg>f z0rwF|n0#;Vz*Z5^<=G z7MzHev49(GfHCt(OXIq6_xFZ&4B9jInpbU^v+TRUbl`rcxyKL?iu~?AZ6trez@&JG z`E{?~KYgmm!w(-m$L_QVEj|hFtnOA8@yMXbU z3;5H|KWBlw*J9fGq!EiLsmJxZcj;d?_TaVq{SV*8E82$r_4BVy5o*An_-f&LM~LmY z-QGR6=NANuWQ2Q5lvRV|C$lz~g1mE-aSO#XL6{%N2E%Z7`;eL(TQ#p{HNTLUwOEf^ zd{4|C@+aE4%mHDRH*F85H!FX1f=u_9CY{!Aien~fIMi#XvJ(u@L6h7&a*r;3x2ih)SmH1 z3vmQzZon)Q+_*b)5U?G5c1Vu=UpV0H#z~sSUt~O+lubYFhOVW|MZHmcx^%N%SGIQV zcG_=j+88XcAy^cWY)R53m6wU3?vLhR@M_P-9wgafGB7R76P2lv24a)&+SnwC2O?|?Qd;|bxxbHuPcpXGJqr(b zuTQ*O!8`m@;hiG3Fdhl9W-HXJ-;R@$oo@dEmS7=~F^S!id|?_G?G(9qEHB>j6d_+OK*Mx2y~MK;)wC1fhg@v!MGe3h1>hOca0q9 z`Z5W5wxR*_vmgHM^P%7VHlDWx&Gndih7e6-22W1&VqV?T=cmJ~Hni8D??l`4uJ<`I z7H#lpKzs>P{S(1=otb>SW(uW|dtpZ@KS?WbRUY3G-pOXlDAW$Zj$LEKn)^1z1FsQr~ z4Jaa&h0TP^7}(nDt5my%gcf7j1CQ*UM@eq#9S{g?cLR7JEijE@6ePSSFfR@Lv1nheE0qL z?ZbzU$pDHIhQDY}gmj*t@8a}iE!b#Z9%!2&xP6;Xas5M00|n5SvsF_(k91o zyW}&$uD7FZKD2gPDlT;&*3`e*#Fd7Zvl{|KbqAqB=$J;@0rQpr2In6D%8ASZh7rxE z0xn;0bk42zOyFwN#HuNjavt`(dj!3YP~*C+FiuI{`&dz=3y}SD)InKYVxk-L*~-{Kov**RODJwbNmW#BGgyPyYtBzdjPCFt3~K zIw`UVCImEaYKq;Dp&iShJ3MC|{7oZ4sMN0SHAh8V{N4MM{XGy&W7L0h=1lv;HNWX6 zK~mq0*Y8fxIK9glweNZ1t;XlNIdR>md%f4Qm^9bBwt}{U5NqDG;k~pBaN2ZA`&Swj zdp+8$L0e^Brc+E^0dfC5X3znDfE~<({`58LeX94AK&^kS_tRYIOYgHW^fm7D=+iar z^xr(ME#Lbb_#PO3^IN~)b-z2cGewMi*^ofk>rz^>#n!AdUP>x66iBT)0ar?%d^Y)G(h|pQfsRvF*riiJkVr_(^X?&oYdI}n&<;k|I^E=U0z?tmPMOE z)xSJnhHHL!dTbvLAKK?HzqFT?u+>VPi{OcvFwK(*+mT9t((EQts~sXoWU!%0(#kUs#YJAbd) z-bQ;BqO++Z#cnHJ*d~#J8bDGrnn&}zT5TisV64s-%l7`}U0a;Y+ROc8G!IEs6ldCs z0y$e=w3D6eg)&k;wzX8lazwm;*XHx9xSH?w)SvsduyM!JcI4xtNX({6XM;C!<>TqD z&8U6fB-{$~V9@~Rz~KU1l3UP9_=^JW4&Y!e2*RcxB+h8ZJP~Kg3Mr0spK!9;Jcw^} z+(V{5jH0*DhuF}}OQj(y&Cyqe1S2sJR6XGg7!3p_C|Wj%a9}zz1{)ot_RXh2-)%l7 z4$`&p8mD#X8iu~f>v|Cze>;Pmu~`E`WM0YraU!i!>&zIgVJ3tiN0p3O^YS62)bs4} z-tVyA-KRpU`V!y;vNgwV&+4alRt7+b%c+@;peqMM5rtwH%Ek(5l02zyA>i9jpN1rF zwf9532V1!Jbiz;DkeN?b#!3u^d83gqD*ZDGeV|7OLm9_N3{R~|7^f)rijd$BwW`^pY(vZ5A*&P0@-w0JTpPhlI&s>A>3%t`HxNuk}^TuIUP8{$I z77;97`%+5tUtzAqJWz967wZH!^mzvx*1_RZyZZ0bT3Uz9=|FtE=No(>9SW{oQ{H%n$SFKJE0w_s%?kb$J`$*FH~v*IsY4YXf{*2lsmy0&gzO zF`pLC?Ix8zpH`_NyFf=p%bC)`C4&hJybZLj_E<5F{x(+aY1{hir|*3Zyx+R@Pkq6d zxWC}0;Hi(h-)9bt({Vf#MMCY$!EAw9uMI2QFx-2j70#EFc9=_JTQ1E{&ytXA+k%IFqA|wp{&v;QFOCVb ztWdYg*>7MFaKaT+-BI?nlXg0%qJz+9QO_evx3_m;8eUhWYUYV7fhd=x= zp_(-@<$sN7xwyD$-+%XGn+l6u%-U~$^PBb`|KopbA3lD}LP-v_-OGL{!(vI^HV}Y! zax*i*7>&ETRfrqmdvZByv(xi-GFwKnLnMFx^PfYbI6tmeMR{gZz7IAzW=3_p%DM;; zAwtBKZE-zBl`vO8AXK2V4H82kGBI1+-?yiShbsOxYwhytyq!+jl#4hiPj2o2051FC zk!SxtVVn1NFKxS~WvJ?nH_8Fe7wzfxKA!TlQgWi7oSwF`)3bJSebZj}2u!Kic1_vZ zm%~#c7HBt4vym_d`?f!+ghez5UlHn%+8kmLk~WdAfs{h>z^D$~bclEeZUHuw5`x_! z9%>zcz5{!~j_P$ofuo@IO5$Y!B27}+YiR`e{C||)SCb@3k|%ZxlEIP|?e6KF*}Yxh zUcgQ8jxLDbYzEj4_E-{)r3Gcd#%5+lr_Gd}0pl?D|5l#g~Q1xY)c7_CWdvCY4Q0 zln|7P>{!UJ2(7*q^6rG~8xzqNwDO3Z`Yh^FeH_ZI)bFhLV(zJ2I>FLUo+{n0Lovt) z5_0y9Lm{PaJHx+0EJL-9l&>JhHnn@9Jeg@e%>XeK<^1i9|^ps$UV0 zRlV7asK3gX&k$m;Bu)9CXC@`q4tNCX!Id-P4M9ewQN+Pq7#s84$1m^A9C@M``gA5W z)VD|;1{zl=wl-6}T<0XT&3!~7%rAI`-%LPYC>&@cz9cS;wP(ZRAWXZceoB>y`M-ZC zQ9HFV0_a?wu7;g+5j|tx$JKoJ?lhLh-7|fDdV6a=ixG9L&!z7Lf5mWs1B?oShRCTu zcq>c_m2g?|+oXZR4&Sb)TVdpjIaYUIb+ECiHvBD<(EHNM`K=E=UDGFR@E%9+tNX5X zCc!<|oDSDLuP;uFfoo2OXN|x5`!nj+Z{_>*%JD|TeEL2fm)8}za+-ZG30^z%>eKID zMmvl#X$joy&>lx$f9^ZILpxsf#r0DCmx{%6>ePNmFYmLDS+A?t>z+RK-+6HO)35pT zd_Vi|sa+NXNxZ}cV7?I!*`h7u8xtftnxj|dJ0eH=ATnZdQ$%`8EC}(Im@dlRM(kC) z&AFs5(^;EL8NpO)Q|gE;_vBNk`$Xx8D?&iUK-z$TkZgtK@b;F0;+J-FeG_*~Iq$#w zZrM(`&5Rgpmch!CES{M_+!PKJx4LLom#^D&GH!)#);k@Scw%`-xmRX}5O|?dJM3Feqle1~9}adaqdY7fA%x zAx^^%)i?uQnJ2-#IWXP;<#GLx_zUapCek81*siycTPg3%}rI50Pq%o79C zP*2ukH%Jyin+{9@Y@OX>jbj=#EW#r0#(k(?(XbT6)@%eUlwrrtPalb~90tjmndnlt zPz9N=qNXbXtG%V3s84m_Mq*_3kmollp3G5$nU0T%F>h5K&f2U{Eqn+;eGX1-;aQcl1kaov6O_O=8E3Yk7I5BksA!--rmk~FY3*)iLqKWfEq-sF= zJ9q^UfR00f-$Bh{H+a-#>k@il4K?WAgyjPET0k9}_g@`ueu*_J_9H97EuD>$0N|SAu$k zaVGB;Qj154gT(xhtc7dpSR8zkCDAEY?XZ1lH#hg~m!E%Y=kt?x@%FM!Cfdz*Mg&fx zI$P^nV717)4)i3hu$Yt>R9g5DxE*}?Jq3u>2Al-Z>hKpJ?4mg1gLz;)1%W`=Azez< z82aptLnp)`6d^969eASBD_i>vIYGVg%*%&HBr2sv3;-~8bD8yOmr?71Rsa$*hcym; z0h?0~^+jHYs;s=hXpj@5DXdbZT7sjfWdNM73C6PEYAn_5BeX^ zpBK9)eRa+wmK{7*2E@!o^WkYzSy~6%hjKHmF&}+(b#86O5G}~Nm=z;#J@xVT8}k4` zf_e2&muh!nP(bFGhrVOvYCU+rn9taR)iidH%cn8MB)p&#b^UKjg;xl!c*#&G(&x~I zrN+330aamg(NOQq=COHj-&n`ZZ}8pMpF}SVek+}~a{7g6^m(yv`*-lCPwH}j18afw ztIr3fg69G6d9L5rC%?7bCpdFDUiLE=27=qms^9w^-syA?!S)^QG(O$|M*A4JUocyq z8QzC}IWZ0hy}pu)!)GP+Di=|8^)`Cf%fs)N_l&G}snW)ED>qHTAe| z47@Y=d5~JTr@XRG-}~74?(jaRXM34`ueaGV4xh>zpWaT-OzqAW%VqoShj;Du+gCwa zzkT@FK7IPqwws4x*P)wmXgGqZJKM=ZMpAV5Y=w}R#Tw+4NO7JjzwPlviqS=TeRdiG z1$d9#5`x$VW#FicPqqo0y^iq}V=C#M!>ON$#>RMYkvR11-Xt%QhvC!pb^HAJV}MtT z2gCyWmmLNh4M0@Eut;09b$<4JyS={+03cvo%>*>!zJ$qGEN!x%+T;49%@&x1hqicF zwDn&6@{_iHl-MMZeY?GWXk$9vv$J-2`7UBn)3usU+iE80QF#N1J$w+D=|p(b z(!YB@qe+X;sc&yyU$ob6-n4h`-p8VO`fwX&2_v@K?Ap`)ecSCfL#~W*49}(;Vk}5x z-X5->+KI_qW{chSn_YXj=YGWQa~k8%=k=~_9@nW4ahx&QTC9>4b2Pb$JEoZbl1r67 z*zS_(@}wPihxT~;*gk&w(!PKHx*f)EntT}t7V}5Je5P%j=sDT551tj{*gJ@h$pX3Z znIHkJ9mZlf6rs;fdmxC3937%w2-#(b%y@Q$*cV?GOM!jv1-=F>5BL$6FezCXwIc}e z9T);cCB%V0JwhIJi@;4K*@zXsXD#S$g}b(x5KmQDb9u)Qac{COQX52iG>t^73?*HIQ}uyeq@uy}sAlhY9o{gyk@biU+dNF628oQ(~|?Fc0P@|NO48 zrYnuXvz=q?G!Pv7$%Np;IYEdOa1KFcH`9Y_YO{V7qJx9>Z5$~J zqdsc9LWb;&%rP4Sb~`ppotZDx+M=GS*baj$dNQUIvD4FH29*9=wt(PFP_>d3)=oTN zRYikGgG-0DF3+Un7TmM@Ra3{a3e62albBMmkVYU_`@QUn?1*ee!6!Ry7 z?J6(^rZ5@a51+t?HI@YkHBRsh<^f?V@jdt}2B4VANMYj^T#`@()SSbsW$;%!T9H7l z8){|mDWX$wOgfh}myJb@i*=$6S%xp95#QkZo9%`&%6hLpSwjx%PWevQ`X?BzHC05m z|5jEV`e3agy6Won^!nX%s>7#xd%L{f=2e}mrTHsD-I);A(Y8MJ5J^i3aKds(KBnR3N6FtTM7TX{gtmwUa<8K`0W^g&(e3r1OfD3W?k z4QW%q7oi)ryrgfmbHfRsNa3c4sok;o03Sa5(w3)-_TBey+iWq5fAs(HzyJ5PO&aPl zVqDvuZdo;t+IqLn=T!15dUiV6!3az!Sr*a{o5yx0h|$$WIvQq1y!wsZ{XDwRKmX;g z0sKGw{>O-H|M&Y;v&pL2S|J9&GwMg;`7;AJ6+YH8y`;EL13Bdhqk$W3KNHDZ111i)DB{H z+5}g)zk7=6{b<@wmS>Hv=fC~wFHy;e>G0Ff{~jXw`iHBwdwOX9 z<4=EzB;gM~yc74l&DwK&dv(zk({VdXs_~~b-#kYpvRIAUippibXf!oH_AVR`o zXYmuO4=6WCcvuM?eRBf^%wa?kxS}>eepCV$Wh4$^O@`P83^jw_#_i_*Aq)`$Vo{Z3 zL;#}FS6|=V1+j*>WFeQ-1d@z2MYPqVXYaeoAy&d*JFrb=Q3!R?w#hG1;?$17c87gb zUXT}?0K1ya4w4?k|B)`#uB%927k?JQH%8VJNr=-}shgoLn3C2Vpc9L$)2@2Xz-qyU zNDw20d>Zu@g32BB>4_A9bZL@ZXo48Q2LqBO#gGt-QE-fA$9Ahyc2C=EazeHeCYDDI zwb|Z6rs8X5OF~zS=^@d0+ONZG3pRE8xNeV(a1FjW8jZs+Ge|YZh3I(b80*Sv%4ib( z!MspygmD`XZ(=%NIAY(x{glK-ps8bQc}8&&M_g-n7U>oEiryI0un&`;(|U*i03ZNK zL_t)85iF*wX21`y=o&ku5J83;1H(rRBwvbV+YlIcUK3_V90kn5X8YVGi$%M5{kqN1 zPQxrbY<6voh%8r0^}bIO*Nf!eIUL80aroy?A8L&DhxYmNmjvJY@y8zn=ZPsX5vzc1 zz5+%u^g~n_TWT|y*lcRItE&P`iB{{HcFu##ix?tEKmGJm7zEel3KC#01a~qW)W70% zNVs-roAs_u#+$ZS)H-70hJf0cQ+0aIdh{MJieW(mj9)P*HWL+Fq8J%bgXcrr1eBAi zx{^7We{JqWA5OOxx{ZbYn;>d{zSgSzIAfu#@cVJUH&HgYiGFN-)^9YxeN2)uWmk7| z)7tg*myG3X_J?+LiQtz+BPIYt`0&`q9jQ4s?f&69@mLlMMw*Luef_aLJY0tXr_Rzw z?RS_TCx*r~ZTE>`!0`CgXNPfw_ndva+;_^=;xp1J^$bDKYK#QJOAYPr?ji3hrn1yz z-e=Ahi%ITTht<6D9#gL)79Dhs76{`dbioPFQ0Fd)zQGi=zNRqZWqf{29*otoA>Y9 z<*SN}I8IbV7VdZLal30DzI<+r)uNqWUbZQ~+N|5t!+qQAwv|@7m0tJ5#}6UMR0rG< z-@Ja)W^=p#F2=0DOhKemJAjAS9DM%rYkS@iQ|;TshA;D|U7cUH)AQ4KWqkbfDG96= z%W0dQoW@q;bh*sVZ$25f_g5EDx7Z~-@78T{5LFKnm9BRrBtnAV?1$X&li4aear3~? zR5CC-kMoPm3h18)4)roDl2)~`iEr-M^>po;lYQi<$tv!_X$eCsEt zCoe{c8@&rW@c=ju341JbJ4&B%n=80=zufRm0bfMOu@jLGGN2*OW*ayw~QT_p*5wYIZKAnAc37^Kt(HmXk9iIs7B4#VKP`|7KEBpKG?V9b6Z zro@n?cw5;--8Z(?{$aO1FaUXL>Mv=Jy4lJFw{eeOu`xVN+wbpdV_+=$81*^y+Z-CV ze)e)6cHhy<`*cm2{yhbTGV17M)oYGye9UFx7Qc-jkgj*S4sXG0Tum_&ecq-ufNoaQ zEjpM$=I~Z}p@+$nFh^;a6uImcCh^6V4YEXqc8*p|Iy}VCmd$c`isQ9aDC0IviiTM* z&wKIrxte^_7qMB;SR&N#zyB`5IEdji7{GT<-ZQw+`}IRRKRHX#DDIQoHTOGxU};^( zd5`P+Bp-Sbb#1$8@7}y=Z{EDF1XXrXq@e(lPkiH|H);=$n|6KoDUloPZXbCn++4>! zWpQ%S9`Ent^&k$yYB`S=Nbp~iYI)Y4FV$2g zA00&C7IKh4pt3*qaGEj8HZHgi+?C`E;Z={L>idT5>srNiF@|t1n=8!2e0glMh0xU) z`f=NAgf1>MLFQo)ag#9VvuEK@J9^{nTGrBFKna(6&h?VQmBFFku3H~q+izn{N|C^0 zL*!t%SNrMrd)-5~@*H?juTOpHN0qI2s6QS{0|U{^`0USUi*ioyQ=fHX=j>3Q>o4zX zZ-2gjzO18!mDDqqY%;ha=F{BiF;JNvtOdGB%Pt9$z4 zeXbj~U?CH%SwO+3cF&N5T~os{ve-fq{7Y_I1KW%bIB*YLM-8O3a8ryn21r4%cPH z`}lO<-oCwRzyJO3+GK1OR2dE9mX~#YXk)evHhtx96%T<+mM!T_s7% zY~JP*`ej322ojUAeR^)=(-K3OlskOrM;bwbSK! zJ6$c?b|)n2p{?5{;wd{Ny3?~$VXoJ)x48Lu6BQD>iJRLmu~q3&2StN~NZ`ly=5fe3 za33R5@438u-yWW}?Qne?#HUSPK7YyX{QaBP?dsyZt)|ea&0XSjwmm((@dOi3&&g6M zhz!8jzHpf#r)9k8Qbmk(D{c>QM=ZdG+#zcVqWt{LB@6#H`DVe6$XGA{|M^4)*G`;U zM8I~Jq+Q*0u|iiD-7uy>05TKJi=})r}$aPV3Lyuo>|g;vBz6!L?@DN#5PuL^@zSjz-$S zHiI^1 zt;8ac(Q}A7aC%Bo2VtL-sx$T;`=LyEiam1rDuleFt;3tcSXaktn#W zh?5nfy^P7NZ-KO|e`}T)n#T%)eB!*QO=!>_(=;&ej@0M7j8Tzwhb~p3h*CQqN<5;dw^H4)5t}rp7myzg}0i z-`76n;Rc86o!Ix^#;fqA0Lef$zh3wI`1Z1%bt>odUT4)`W2b!% zw5dPmx9`2q-egb1SeVmM+y4`m@Sv93jUO$yf4-ObIBhr_Y2LdQv=MdOp2yTHS zc&S507y~K=3kNnL27^>?9&Rf=bquarbg;zs5&|i+kksYO z9w%ff{S8if+C;9iTf4izZR_=Y``r)kDkb$uVy^oTFFR*Jn~s;K#k@T4<5sv>R>B%0 z_rreIwmc{rpYd56&Brl%vi3iH`W$ad@eVGi4_;rk+lPmC{bkhNT%NUeZ!Tj$L6o{V zZrcukZg=fKweWmwyY(i~A1_uHZ91NX$Ui+kRUfDe*aMt#Gd&HL-6y*&fsgHXzx!P# zOL$a(Xd=5o6y&p$-h4}vAaiC}2{Tr;3zJq?P^tCPwtfD5ooI^E`_l0)7N_mqn|JN? z`Ku6og!}nfWXp$kmt7F#K5GvwsO_5Xc8!h6&F$wzmy88|JH{?TwnGMuu;nAS&+B#j z_uoDRpxHl+=%Oc;uVOC?Ytj~#?)moNw#jvXyYDeINFNY`*g8Nq12Yk#H6S5y2TdgU zD;NaWs9@+{gvpUWWITsOChdC`*kF{z(C%b*Y~!e|YB7hX$9Swf0Q!OtuS_z)aE#Z> zgA~!*HX3qAcrloCS~Gqh#^d(+<8>AsQ7(i~2$Ph{=6T%q&z0Fwf2`RMZbIWBRCRXo z84hc4)bp~z5o~~MuC)QxvVtHjD<1ZByO`4#Om9QF^D6~ zwlR{KQ7;~!27_ zH&_G53@h1GsgL@BLPVuk)#S# z$J~;dlj~?-^CVhj7f|nmb6o>}VEiRwHx7O~GbV$Pp}G)FXD@Hv>F2QVO*gs^w_(HsxHs!&+^#M!+iJOJKmYu5W5o*@Gnkx8CS|vK zXbJE%S=deN+xBtWK7aWTRmN{0e@)`4H*YT5tINx_-ONiMIRxFIYOt%ao1RWqZL?wU zvuV?*-RdM_U-1(z&d%EH^`}TIX0y|_IzMg8i_g=EJnKl00uEi zgU#2UO^SZp-HN^`I%VlBxpVQTxxT*7&WM)^*H`m>(|zJi+}_`}(PSAnRr+(we>5Gnr|q%*{M#qwvt68@wv*9w zJ1!<|$x;K88B>N)GgePTfN>?AW>-jR5HyW}$gJ0n1N;S-2QimBaa|cOJZ|_a15t?G zU%Ojty8F?q)dI5^NE`U1kBA-VM4!1?4N`*`*&#R>V^3B6zIji`sI=RYQQHpsPso%$ zI>Ej~*F22EXu3Y%3F<{fgGnphp*gTH&A036<3JpvhaW`K*r(!)P`R=fGB%LaXh`9$ ziN-tn=_&m_1a@p!uP(xrl_mZvhSA{aE5l)jd(frkvoSyb!D?Nj z4yoNTg4v0qF;WJjg~2jj#uLv<%EU}S+&m(@*%)K2Y9|XN^D;oi zjg$J!of88Fk6;dhT)8f4Zz6=2m=!Y}nBL2ep?1wLRSqhz9{1Igu8r+}Yj>5xF1|P* zWpie#LNAh^q@+ew%=aROB~2QLi3u*~PCqbkeJS7*TcXk-^9lN2j{-S2rvACFXkZGSNrFY7VCFWapyb=Uk?`#kHnIqGAG8Q-ZcbA>l=KYVnf?~_VZ;M)!&bPzqg^^>(_lw?M~>#5pf5@ zxz%#nF6~f{5AA;X7|1CO+KBANa4T{_9gnz$j&c`905Tx9d`?1;8fYpI z2ijn#sJ)nkBpr(M0^wXl?B4zTKYjX`xD&5mziDq@zyIpCh4G;>IGIn{=T9HohY!D{ zt!thVmuE?z?Or8Be2)G$t}?N3u#+kTn?;Ba1mV}hz|2t1ym|eqEmpHOKG9dkaN95m z0wUcD#xaPkpzad^lyHr0+O}h%GRhzh(!T?0sJ?f@r| zUjY$|U^@-~;k2;bqdIyH(m$5UV!g{JK>GF956OR_EQ?`MAyFUA6UIyUSV)S*FXNl4+)AT;TXo`Fxt11*)qu6dqkt$9G=>z+ourL z@2+p!a%LO0YzvmxQ+vB{c1+XJNkfDXfI|4?_J}it-vB7W89NA{v8gK#9l;N|WPuix zjCu|X1f)42_e2;(>^lMMy9&}2Vn??Fn~Z8RIV6T8w0f>&V8Tfmq?;&JIC?oEt~ zMH`8xI(lx;BQX>tF=89AZ^u2tBhXU|bBC%TT7rlnISgHE-Yfhw2HZHCf6Q5!1u?H; zv`7`GO_jM6lVGGYFG>AYcVf^shs-gX(1%3?6adu+GI82s1Vw+Q$VsI5`CL= zLo{o8UhZQV+rcISQBS$(<*DKdj)SzQg}R4`z%(`+gN}d)4KEFd?l}=Bx9#EXDXJZ6 z9>v0-NW3=0WWY28sV9IJP%P<^*;h92O2V&7A_cvaaVMey9>R0fXJ}>-RA1RNr~`bF z7$zD<@EgZE#JB7!zM<5B+Sfns!-Wx)4TM8jeHK)mNl@547+Vq)Fztc5#=F7zYExhT z!_Jh=#$ZV6Jy8`m(wBKWvPev|dmW>`A}rpaeuN3q_uEl;qr4b8f$W<^@B#mAxAVXR zCUZ8Mw)=--Sg6fBlZdNaMTb6k{v`nfW1R>iG}eqZm}|dF3RXBw9lagJNLTwaHUp7I zXti6pURFJw8Bo?coc++>J_fEUgAjYZUw19-3GFGhP=C&+clvaw!}tCk&*`T&sI&JC z)9JT4@AYRb40aoZt4rkH>r+l${e7Ny_Wt?a=TTX|yf`n2>kvUU5Zo5I3NB8UZT-A%B3E+D6tCgzbQx>bvy0OUhYHnM6i7hr0Vw_4mU3L+z{q?VZ zNd!!3U_JNh)m1Ei`vgYKaQDz2A1ab3Ra16R&-*3_7XZi9)eZ@eKrXU-7E&hB`1RLc zl5RGHX2!U$tm^IF1PlUB#!U+J@4oxKy?Jw&K40HFv`^PhZ8rO6&^n*50>tYlMvT1Fr&qCRkn;G95AkPo+F4B}CctuhKmT<7$d zjmUl7o-q(d3`X|rvE~=S(_D~>9T>^%Cym%%{c?&}h=_yF99iTTP62wJ+w8JF>uNMnw^i7ODugM|SF%XKF6Z~ zBS$@U5(aP_x7OH%jHpei9oROpN#e5Er5zQ$GLi!Xdl;6EFs(k%7COYFPNSlVtwid4 zZi^{zjKXK%kY+I)d2%pZFh0Frg>g?6kbq|br0bqG6(=7>eGGjtc*TkDB&Co z1BMbaWBso;WtiR7cC(W*&i>k;VW*D3sk_Fcn1*TtU3p1AjGMKMs5!hB^Wi?c*W2ZK zuLqncuOF`Wd&)X%{SH!*L86d{hd*mPYVjR{&XXi_qsp8flAQ@^sF>22y|CadTD|MpM+^bZk>e!2P5-o1a@-n@Mi zgD=R`?&-^?>-bwQ?3PEPc1mQwT;!U*ZhNM(`7Fr7F2ce$$bg>cNwOz{5TnWcAy)r7 z$<6Zq;Xa5_otIY^$$5br4p%-JRZ^1k^CJF-LpwjKBqe|y(q_%i!+?zhmzuY4U$s}S zE|LW^`&@uRhu4mYD?z6ZPA@L5qWfo^PF+HDhl!yBrm|UcP2BJ_K~QA&9P+mhqOkCG z$JXAyewFN?LTY2M7=qqj-!+l)mW$JNy1IxC^TThSGM>Ubc3;qJEW=GHjcb&ir?2B7`Rzx;D- z7_M)=M5^(_?|v8%(xe!}B}7xij>r?EBlNYnB0*{qyOr^ec2fg@!<=@4+=_<941@Dr zaW8AG!&jJuLLPR=wfJgLdLL%jI3P&edwB(=oZSe3DzRH4Ko05$#5fWtUL3<% zV;YSKI4FGy2BT748#CiQUtrQ#VOrVCzyV*bugf(rV>m4bPvTbzv=~k9C2p%MkH!To zfB5_*_6}jp8ltstclVDG-H#`;*gz;7NfJz#ol>XXMC&4}*7_W*WWoeR?T~L3dX89Xtfy8CzFGTJ_3S3~wbwy$#b4qrsZTU|P#y zx{s4*J25O`Rt#Ui?!D^B7!QQrv+6)Miujp_Vo3A@zU=+cPW3vK=|_LR-@f-U>h<0G zy&GZn=}?#Z`k~EK$F9M{o(WzWm@Uur-z4jR$e8eAt4&~S2$bt_BH$eKhLA z>;3Be&`0faur2B1*!vJz-j!<0IK6rECgVj)2>|T|vw1;`O7T9*cH%#>i2ggn9I)zK1bbp0?HM zEXl4cB8FD?Pxoy)ryCPKc^)qd3wSmMgb4IwyT7}S-GsnY67*P*cG26zb6erkNIO=i z!cVpN%r1aU0^}f&RjF|d6b_we8pFapjXGj`kUwKmu1q5gMhkH>!3?^(m1~J_?Zl`F z7>JeO%h~oUgrhG)&l!gfXt>kN&FSgaNjGs2uSk51Zh}CE=KuyEV}By8IDo1}RH7-K z6qp+XfU(`=C^WTr)(Fw6ou6L>L5Wq6U_DVs6*ICHoig?((vNdjVrzj(l>P544A0f8 zS0SDfVy*Yb_PBXYrc*@nVJ%(wq`f|0#XCd$=kxO*a=S##9Rg4s^CS^Osgepc4C3Cf z9)a{AZM#n61tsQbjMK0Xz^L(b_#RA!U|>K5R1*_}2g49j)D#9d001BWNkl7-4l{zetM;c(owBPRLkB21pluIe2T z`V8WK-=u7(CIruNlMoRl*2swlJ|~cq-xvg57492%&lZs?`=mlFwT>};Ju7Axi-)-Z z8xd)ifu-n+-~}V=6P#s-8+8fyMs_H1Ss3OhgBQvgLVX;yv-9&v1C(_Q!6QL1#tVo# zaW4jAMhNS%m{9AG`*YbZ6fsKp=*(pi1#L2~>WfgppNyViD8xvj5p~j6j}^_cTc@UD zc==7zQm|tF5fx=>uGJbQA&~O7e?pgv-qww8bSl5Ao(xIq3s2(xX=_km<{gaMfcSI} z<`kl@#C7IBax1Vn7_ho#OyNHS)!cU^t{&I)0g{Ig%80RuY36bu64mf;e?8MrxTM-+ zy;(1PwY-rpEdk%GV{ME(by&dMVztd;tc3|A{u$j&7y+riA zU46az-N#P(mv!~$dK-HEy({i+HDle!xVK+ld!M|wGd0TfzQ25* zdR_1R@s5}8QLp;?b>%yOR!?UL`}01Xy*=8Xe!u^|Z|GnjGta17pY*{qnE8I+XRq7m z%iq5Da@wiA&Z!+2E_O2J!grP(*mk{X2t{QIES+$;>>~rn+Nr37eT1EQt&T!s5FwGI z)kExyA%U=PX;MxbWIGiGk%;JL?tzHudfl#{3 zh;&7>#0c0q6(9p*M49NfjNOtL>W+J1C8)8xAR3nG@8RL8J>CAA2#*l+<@squ{o^t5 zks2U!qQ6RzWSzm=c0wkCywezvAl9T~7D!i0%rl!|Olr}%&w$KsPP?C;Hpv-b(GxZE zexSags_A-0z;JPKp1kw=2T((>_mY@hx9gj`FbEhf`dS_&3F4LLe`QgR;R$n-JRcB+ z_L-})sW@Alwe4~d;Kewo3sCL0rHeL3vN0NGY0Ph~Z_*FDNiNt>A>G&FY?Zd!vGP}E z9dE}jNBFC^-?g*(xLtqvsXaVw+uN(FHkr=j9ddPPhfTapGE|;DF$0VxHzZSrX|?Rj zhyI&$KuAk18jG+a2O|Cf!B~i3R?jgIS-8ahaRFuE*|RFv*c8&E9{Hx?A&prvp1sB7 zJ{42=ERoVSiyN}X#gn+r=cFa;HhHMD#1{WJxfp5;Wvf-LFHnT+C@NAI8arG=#^A9G zPwr(Y6UFsa<(I)SP4X5M!Pj+YPUiaY9>9=M@SXoT+2P;E2{HM!2G%$`$hzBVMWs zJu-Hf4u-$msCvQ%7Ue~SBXOdGGLI0OBxcVc_yVEDUP?v7VeNJzF2NRh9hyCWOZ4x; zrt@AIf_8bdBgk*{==xv?JRtpkuYan;Mk8>FKvr{eyV{WMr=R9L_Em#wQcxyq9)kxi zg>N<%##Vg@v&u;v%@3x3y%rm19mX;DhlEEM2dA>Vyhgw~y5B30fxC4IBG0eAgf$|)b0;MjB(;X$nWp*>&WKMdTk0T`|qVJkOA-}~90 z>GgPzadF*y`+e7YpI?^s-M#*tXPuo`qfJiZY78(>?mK*X&O4NG9~}CGmyMH^(d+k# zpu6vxe!RTzns)Yf_}%;AyX(vc)bH%~dVM~7n~agVUe@pZ%DC>?UZ&Rr&%4&!(Z{)$ z?e9r}VeC57;&TeI8l;QkSrCC>KTo^I+8HxWq8A&iQQ1KB#<>n?Smk!fLn>rU5@T$J zVT`|QpelW?LAN7jW0BoAhT-~4qBSCppFVv^SZWsH)9F8DVG#!rvs=V4zTiqG7cyA1 zMVm+jHI?ylk=@zxNSsr;T|}Ot7(J|0L`zZqK7RPzK7YAsH(wrGd!DxC$*R41eHBAQ z#9BKS3pO9yNHTB-0Iafu?n3-45+e)xYRmcw(O<`wK-NP2S)JPbFN5S_b&ee&o!E=p zzi)G)Qw6^nCeV1AXp7c0?EpX-gXuK$WFk$f#r@^_OMCt1yD&y#WAKzvx1lN~qa+yS zm~loB9i&9;zFak_zW>Ybe~fV@8O`Zg>JgB^dL1$0Niz_^NVbaQ8OVQmMg+*> zT~Nkp0rY`N7(*u@>AN`$YuVaC_TPx9=$DW{%4bJd2r2M(l#GZ?M-M?;3q5o2Oy9h2 z>n%}wN01eKYdL>vs|B5Cxz+Z%3>+rRndXVy85pz9aHge_Vdo&MbkJ6!-x=$Qxxx#m z8%>h@*_C200xQFqg#o~HOea}q-VY|I?jl);XkHY^X&Z%k7?_X280=->Dw7kqh^00r zqINj?VxFvnFuT+l10x1uVl2wDqSm^#2tSb4U@9^1T}7n+Zypze?Fd3P7%hg`!9WGp zWWp>49!@rY4t3O@BG!z#2N1|-3K5)G3-O$ZxZ&%(=kXW@rR3K?1>eJS#lhwtc=1!8 zvaY~X>Q6Jny!1*6cNLs<>4SCMB?{^a!X98lf8D2ojk+e*{)m~h=H+D}1h{9wE?iOH z3qHX@$0gcOefIv0Qg2p1tsC=&pWN*y2}nhnX`LcivJH14qMpKyq@hJ*tqt#T^mb^w z!`Sq8$;|A#Lpz+-fsJ9m<~{0g>Zj-X*tpl9Q@+z7?{eMm{(OHf6%T*h>(~3Ue(R5R zx$inA07KN<;kv_n`k40dW!&7~uMO5=m8rVitNVlWe&~B|r+4)CdQN+KKfJTIP5XKq zhwkJ#*OYnrjCNGLg=6}?{x0wHu4==#F@4#lmu0oz(Z|krbvh#xM&#WL$F={KN>!9Z z6UOrmpjVr=bh8~_vrwt6FrikiGCr6@ibIs44+vh$~2uR=V!{=JG$G30W)tjpT z>gUfN+J}$N+1+i00eyaMJS~XHL{glc*kO;_VO_fwiF1ezF%={Ng^_K)w%3<$l3_E6d!pwogF&HUi9eqYm64LCOu zwrwYjGy}%ztX*836j6A1%=lkiR4QBIY(|=lK}m8pPuuo!yKP^tr7JI8AVPI_N1VE8 z%gMBDH^;WVdum@k-?zm?i1S&>ilR50$?zE2KoS_iM}Qnf$X+a#?^%6`;#XGfvdWb@ zDUv2`Z5S~~$f6%ylLGMF@_5)01ffI9+uA7^=OR0Or0dh-(GKHbe!ni(Fb|71zQ>f+ zf&zd0)xK>`>1Rtf4I);` z65VgM(hHYp8!S0V7fh}(0Sjd;g|ZDc17d(Ef|)p;B>snf>YL{gFH$n9HX-A|XCEFC zx(=_|dBsv+UwPdiPEuf(JxSY*+THy_8CeeDp(ojO4+NLTi}hy5W%u}8IWi=$(&j{s zPD3@e`eaTEoezew(~_jwuzaPBA@bjLn86ES45(oZ9mL9?!b1c15v2IHb04@Fn1X(% zGXj3=KXpxJb>OM;>Rxy#6OujL@QkD8tah*mFy^wIItVcTkpNB7SDQOIdDf&}VmrKW z9kiAm9Zt=m@8GUqSH@W|p39lTK98hn+wHoNpvCiwimtpQJfp7h_}dQowWni zbvs_(t2gUjXJU%r_uq(?6H)YBzwYzp+3Qqawe4FQ`n_Jh*Xh%>mu*zmSUKEtSnKE@ z#z|Sv^|4gmchA&W2E`pG*SPCbWvf-!Xhd>@F)PDQeS^C@{`O37$IG_&`7$@k`mMhH z{yt8a9oO9NeOA7@Q_NoPNALg3vFLqQrk}kY_j>z$*S`L&GE)YA9_n1vddRVGGGDgM z)2==2o|06Gc=Yb3cF7UDjuE$Ix!?r2SO8ZX2m?gl@3^_)0$A3##B$yxlU_quCzJN} z?VETqa7j#q;<7dh0sZ-xpCS?!*y!!s_ieSLRyd6qIJ*v(@C^FGh4U51b(P!UmoLAy zySv+nB@Hmde|>wK^wGHHw{PFI@815{p6+*Tb#~q^E?>3f>Di#S-A9C4s9c?_z2UEc zh}aD#Qr@Ipy^j4r2fj zLlTF>G7|=93Lr|_qp05y&~Lx}7UT@2Vjk=mBt<#l>mOshWujYBNg;qC_Roh%MvNuI zL?tBhb3$|JxLBGNf9Lbl;BZ3J0OnvobJ7hUsv2g52DLeoOpH&GH@~?GUikr zfBy4N?cr?MZtou3VZBcrip6Bs-oL$QPmdJ_yCg@FMig$Gj? ztRXwul^T$!ibm}jfQK0_YQn`fcpGkrcS3CssSEVQ*tSF@RiLgFaxCJ+DA3}x7=5Rb zGe;KDWGBIlRP(j4EH3bE{%V{H5e8u-LZCHKR3vq@V|)GPJUem5p~X5S!A!nOTt(HV zw|3Gq>Ino!h~-28EHxP9RBqDc3aPy!4}u}zYfFq-C`KP4c75E+V`P*VEbJjF5~h(5 zW5E1TZK%Sv1mTKXVeKLrg&G+3N~#v5KQJL&OFa`QTH;}3kTQ1W%-Yv3@D(+gG3&;R zm@wgy561+n3*!(aCW)e25si|}gfSxt6N4tUAlk~UIv&PhI>Pu6JH>osAVg7n=#$#2 z&OSFOpSKio>bGm=h8tf$K&ACiQ|m($tC@xG*qeYU^%iW^r#Ub_)5D?7BdH;2Pyvsy zimzi#5%LiDP1zY?kim=V#uD7At0Q;MIKbFTl&ks= zZ7P;Rc56fDcH3=Ro~@#5X~(Dbc)yPLjCJ*>-G}h+NCmPHfLNGJ{VYeouDA8u^z)gH{sDP5uD9MLd7_Tm0#TXKT zG{-(=76mJq3hzerFndl?1%NB6B!3=rL@Hs-XS0fM2(avsxz|czejH8PdUt5E#aU8% zd*Y$7(l@EDn@t=27@RI z&@GPrb7kG^3&8m3vz#Gz=7C8JYtF*z9R}4)zb}0FVTc<6ds|fA>m*i%q-CWeL1UF3 zq8i_OWc_TA@)W`{XNOrK0pC5l-3r+ZZtY^e?F#LDx#De@Jm9D8YA^?T?C_{bSx(It z{ebq6D2>It7V~5{cO?7J6wGyLWyb!+u3K64IFJ**?LFWTUUm31UVR+ZsSf4(^ZmEBxaPOyF;XURD|9{nlo(yniA+x^2s;$1L~`uOQO#9GV-u_{PY_FKBM0z`|A0bF@v)oz}y z(+m(|p;@XY&u|+}b5<+z#+-1x&ESMO|*+~L)gaDF4 zL0a3dE6Sr?aXbpF03nqz0|Qc`PRnA!{BI zq}>=v)E1;y&X~McBjN#72*nOGL6}HV>|E`_c|0s7rmJBy28dZaD2C^anF2u=1C3QN zMn_Vtk<{p36uzz85g{B*x)Xy)qKNr>cmki(?1t^fF$PhM=qtv3yKeVS?5WCalQ)le zAlpqvNHzY9ZP};b6VtQ4AsIF$LqpnB{D&C-GDL<1>omQ=gNR6G%Ae00{xH{93IX9jKdd3mTFuv?gs5q!5WUVawk+}2@URkMf z*f1QjD?hZS#|mK_tqlQ>$eaVS1-{hlUEmXQZ$97xOm7i%a7copECNw&a}BH_Zlsn7 zAsY;^vfm^46%kdNl--U>LKH8nX9TQv+%Jh!C$P$=ev;-$n~g&;$BHkY_g^YsYmeEuqm6aE-u=`=v$MWi zKeRvp`LFHIfByH{t*#2=F zqb~@MPqy9mZ@+$ywBux6A$a-plX5&f-o{?yfBj$nD@WGYjJ$pQwoRwYHW|;``?o)| z(A}C55EQQNN@n%&CSR5@xygI02V75MWuITtOrnP z5q|poIXgj#YtApu+m(L4dDWIHs*rK}^5wdH{Ow~HF@|Z7&#kc@AKS&%S!_F=p0@4% z`*#82j~_p^t@O|1X+-Jb9o#%0+tnZ5XTAkl!o`33_#q2`8i--6;9b9c_|WdYd~VmL z^Y+g_e%HQ#b=nrAL;Ld||F!+$AAc8-CZ-4xN4PJ}&)fO=X%R0wBCdlme_&<5i-9iU z!FUjp)E8Gbw1g}mEei{imw;qe14I-XnW7k3tfN`mu1g(ySsgenjk8S5gP{iP97sI zVjMY{NiZ>K!eH`NA zyb8krFMz`$PLerQFeET$^FTU90%z^m%ovJ$($68_lywZAA|xVNn~4WhQj*j$NLbAw z!h{i0hxcXO4ndO`oMVDwj62wC6daan08yyJY@ztvA#jo=}O-mjhR`*h!T z^*EGs`mL-ZM0hCQnF@2^dGC05yo+>izBm~Yn-$la?5&afErS;keDPk4O>N%xZ8DxU z-d92*Fh49FeblDx!KPH7;t$n*nh)ici?g)RxXBWvefoj%A#L*M8r)05tRG+&uB0CK zsn1k`RH2W9nSws+mp=7=`!olA?81l)u#|C&&TTM`V;nUWrgu!79duI$K|)CzVB-=F zs#51pCDpO_pNvB2=1aTglLQkYdSfwT{Pyufbg_srpKb0ZYp>>IwSRm2rI8N&+rR$b5s4#=Y&Ks1)7y4+ z_Bxizl2fhE*C9-AU%hE>UcGLA`29a5hD4CQ0e^1o{^71&fBLn3{wU0|@T|ngWr&nr zxBxjM2G6_puzqN#r!|RUL0Gt?2oNVXR@p%h2Q~{V-REs~a@tO&tG1X4ob}x17UBu~ zGj7|7UBfJD21F0iT&=FkeR4-U^$KKS(sevjJtcW32^HIPF)57 zARs%=sFPUi+ht5fkuqQ$ylcDLMeMy;tTK=D`E&d7LJF3;%OjYVrrb7j@oEC z3!^2SHx<~`<#`YWI1sk@r=Namw>P(K|FmwWQBT-)&Y~tDJiwHY1|)#h`Je)TE_rwC zh+j*!HR4(rE}$=J)U0+i5M_}^t36aMeY0p{(B{j42tpu+*bo-0MV;6lK{{Z56HlB! z|M@TNs7eP|+kLjI&G!7OT;u&WqFg~8yrA9UO1heQTqks2HGVXk392vHKN4OQk2PO8k7 zqhT zQSGitFDgGs_2et#pf2-Hi=j+fRs^XyH}{PX=AhO~S=$T@MVg`=!(8Q??=K}C-dS~O zmpQ|9V+PY#J2&p<%hUQDwM%WRGV+m{lw=2hlp4bhlRN7!5}c@n>|~$8O~rxeOlgNT zcsICrfS*n@``o6L2~VzGM7->z5av$gFy`5zT4S+Cvkv=s6@y*Gx7rUzFc+n!nUwuc zTmp-sBmKZwz&Yyn&H>y5@7j*wsRuFBX6H+yu1vq)%XG$|_pLvptg|0kKLalC-E;lf z&J?^X@4NfT{=e(0x$Sr<>m*Vab(TuVn%9?t&%WFDoN=t*V8<9M=ZwwNFz&89jTOmK z_x`dV5O)1^^mg{Px~9!hUj?41M9UaAp%F-2b{Lo%-`?lm&t9kB{p@ur>)Q0`Y1dBA zrUA0so11ofch_bKSz7LfI2;@bqOG&^uHk?gY0XaB=2&?bh+c7vc59!%TzgNrJ}=QB zgV-n9H4UJ%4@1J`C1Mde>|Hx-y<^+%AE;5D+6ibA%6c(t@7}*@7n`y-;2m(0fJ4*l ztZ=~GFmJAJ;~5~d_5b`o{Y!iM=53;eiNvKX)CX@~ziw~eR61?$mT@6%hjw?pZomHW zOZ)usmxv4@5D^1Su>LX-3}=tb>^5z^t2_}Vv6zSQzJQo#vqO9T{(W1o=`OeJWGfmO zdydmcSLlf6+zi4+u#waHqUY;Q!OrS-bgi(|-HyL%Y7d30Dkx5-V!c z)z#~^S&LFB;^!&|53%-JeK()4)Qe2D70t(_3Wv8MKlx?S_snpM%kvRjgnnak%xBp*V4}WCos3~_ zX1Ky)m~(knf`l^Sh0syAsIu$_F@uAW!EVjr_y6A`uo;y~!QXsHi1+vP)YuntMuhXG zxDpr4lKL1!wp-Ml!t9)_7(!`cixLRppGELQ@`i6;boh|>Hz;)gITlH9_><2dC&EBzI?BD=|g|N zvfk6jEe{QUl=Y7O?p~kko_D&ZjMKPU-+hdFo&8;YE9bL6@7=z?y!WzBYsNE#wb4@*6V_z_(4!`>|+LrdIh^k~@G}NsP&XgT&H+r8^ z`~}n0ulLX1{%PT*QHblOFJF@5Kr$-}@Z#z!;&?l0FVSTQe!@J&C}i3WiT%I@su~0M zSbhWit5>hHgOyq~JHiY{aM!?jZrg{C^vT4aa%4OwVkCqm@e!iUHX>qD6MSfip{vX@v>NMFoU%!5xcdSJ?NU%m1|6QBGf=LU}8URCdOi~<-hM-kM z$@ZekRlWg%k+`&N!Z?|Ddb8E(y!|lyu01}UCGnJGRQfNxFMAA(gSkPpFd8Hdw|Cc( z(%AJyZ#fncdC^|Kel;*~tc(FL25gx*F(35Qc6^^c-Lyac+h3!~5F{~hn?BjV@{}1T zvZpcDcVfu<`==(J#ZIKT#c5O-;(@Sr`S9D9_VdrbL|i*xtlH`FtjR)pb+Ib9-xI#n z@*>RI`sqG8{k8ZHr$m+PV#;`MJS&TCQm~HTqbp9hSGf*qe^(v>#X*|`<5T3Y0Isgp zcW_!(`9(;>cx3UGdm(+}ci(*%JD|mK6@$@>%d7V8yY~qL3%)T`7BXqg>o-@~Wnco# zEn;eM87FHCLa-Kiz?2@dR7C3F6M%?VSRGlY!_gOawc77OCbjS(+ai>VEbCo`z*IJA z737Hs9P!l-#H%w`627UQq6iWnScfoC#aP(wBDN$ebixdp`Tle1D^aL+(&3-YFNzR% zBuc_C>?+w%ficPGw$}EeSSU|{<(>()9Zv#BdPm@a>9*pWiQ&+tBO(6QVHrn)X5}l; zl+pzu5S)j@K;V=7sQ)S8nJ`M_@H-4|Cq_o1#JMGr_y$GM8!Md*nl(S_X-PajRP!Hv z4Co*P#`qg|a|q{PN+I{;9{DVc;m{C2|oE9D_H~J8U zfk>J!&-K$iu)Kff{#k@G>gdyDTP(mz1)YL>fZjN{R*FGZSLT1ni=xi{exK@VN9*Hn znPNTjoUt@1MU24mw}I==TVK9wXK!8b@=`7 z|1n%SG5*pk7 z*#L`N`J7$%iI@e%_Ty>W2;(fM4YAYHx{Q-X6+^*pSa2u1LW>lVr51Sg`n+v6XKi(Z z@nH7>aj)Cs(|z10Ej$t)%!aYq?w(>>!9bF+;^8n4b0NB+v8g%bB_YEn>+Er*@LoT+ zU;h2K*ldW!K(cUoAyhJp+%nuDbx`kOE=%bmQV0RD0QYphXn*+e_d)n~w_hUCW_auQ z^Ruf+EfArz)6*~y)ZcynpPvOnVt=wsKOP?*+TCp0o>xMIPutn5!g6;+5Xc`E5u_9& zul=D#r9K$xb-_ds{UC+tJ0@e`5Tq+ohG7>zqoR8zPOe4S#w^%Z?RUTXF(J%<`uW$W zE5x~XJxs9eEO*CeqW=LIu%#83f6zISW)!>^A`gPdf~_4KqG8>U*fHqz-O<|#Ve5Nn zVJCi7AlKrRVQ0+BJq95yFqB<0MnS!HmuXLn^g&%kIQu6D^x74vI&oB^BRxhcLtO4< zP;tcV2v=`QDubLVw*(0d!)wS315j}r7_&|j2#Z}6#vx(ZV=Px8!nd(=5IjwCy5a`$ zEmRRkb}P#$x5e-T@JBIu^!?gp{FS%I&uzwfkkl6QFc`571VkSl5Vtw-`Ry!;f#(lFlrxBQJ-Z4({UJFsiy_I-Nh0ts-;W#iedHc zzS~t^n|y`{4v{^1$+-?E^!}SW%x~UtWSIB@?g!>Wy$*F*2Z5`B82g^q3^{+)@9>O! z{n_BCubu_NSPkQF??9sJ0e-{YULnFMQ`v)~TF!CLH-1P5O59`>uFaxtHg+lC4eM zhzG@SR+_(L97qK_h3WL0hvx|0hana5V4i0Vo$f~5Btyb;*yLavO^QRCs zC`|t`Lm?CpBSR|UFwz&|JcMXpfk3uf(gB26aw*0pa=^1Te~vL4ld!oI)*?Y-z!;w; zLZJmMmcTp`1rY_6xxasGPYFp|7QiGAP$cF7!+}_Mr|+Z`r)Ou8K8OtGWP4!IPp6Wa zvD|G51%7w?)E@46i!gv)wzqG-&%8k%=F8kM*qO~3cQUXV#VwVwkNGpctFwz3@Nh+C z$olkfAJv6j_?tKH!bsY=8Vhjt#K3Cv+!k_(jFzoUj|qPCaR1ouZoae;eYsp8JVR!7 zMkkFC>XiPEtDB617HW{8nK`rs9U2yccVKC=I2h;!nH5pSw1Cw*Aq?~8JAeZqG`K}skl+POcckFA1YNuJ z=BsGEFVZZsFerGG(o+f&qV0uf2V@H|C5K5#Xm+x)itQlwTk;~51SBICLBcS4+Ug~K zg5A_RNG{^eSrPzvfz1UtpIN)46hmLMm5mfnA}eIO+eRO6Jh<9ovW-{ZZ?w&K29aVg zzz-qQ;}%!MJ=Ms-EU8wkXJ4fFAz{OQOT!^<6$6t~Z_dk*so zF5p|^h#@24!3n`R=ApxlXAqO@9$_Z7GHhL_iq@40v+h?JYti9((yQ&ZK8=uekd%om zX>+5@dTnD+E{xg%9~9hGpVeh-w8K2=g7-NQ$y#3nqcTXNzm+Y*mGE3(PrF{YC~8kX ztYPix{qDbgT01@+@Ogi(-+TFtGJf~+eat;m?J5ABKw`hwRAsbZKU~lH9GDdM{=N=n z)#0<>_v!Hb-=E4lF#)|z7>Is)pYP_~sV?Qs$4lvh_o-Vw{kn30|K9#SaKg}vi<{dzt?HRAVp!2!_N+uiw6HXXmFO^v9#P0>h%U94#QYEdKR} zAWnz{g7EzM386H2lMqTebc9a=oFJj++LhXk7=X!S-j<7#c6+x8Vp0!j$9S@AXXne< zJ+zT{1?&vwaTi3ixCTb&Cwrl6eX;a^2oazvn9mjw2L~D8xDn{MCLS}8>>Ik}>Bae3 zyg^0`lXkm=0X|!<+GcUr9_}`AM@uHad5Qk@*Wl@6`c2d|l_t5wYr7-v*L}M#3p4{3 zOb!3>smJj#JbT)1+HBCp16q9~d4S{+1c>$frbNYIpkj9dV8z6jhh)+=&-`$4%64SL zZn7^H!K*g1wieI{Anp>NNsNVGe*Tn5kE3?d&Q7n|VqWe(k#Ib+abN^G&JO&mv>?Qj zRX6nm6~;;X*MI$E`|$B&EW3@f=j_tWAB$s54w2b@ziFGt$K-L?F6|V`uyiqJaevJG zY{in8fSpBKKR$i6^RPD9+)QG`OFdKph5&ewRY7`aApm!3I|)P?-r{5~1VK?)=| zLC~?6=;Fje4!s}Nr|;U{7j0kEcI%OFArKKi3Nelf3Je8NkT+v}YfO-CXa>_7hG9Su zE)Hx(cKev93KC_9M=GOW8KROv#494YaF5qF~T zav7~>x>&r_4dxHrAwFSzz7m=0C)}b9k{Ie&iNb4*^!Djy?VPpu+xT?Y?w_4Fb-3=o z-FNis-e(N-rLP6`XDq(9udn}N4yte8n1^1MI()DG6*J;m^<$iQ>F>~vmt)`C*Xz*6 z-WT6p*Cx;Rd%k-P!S7N8Oae)R!#&SAU;eIW!{6HP*_UNrmi11j`(5GIubCt3q4y(g zv!?%pw!iFOpM#g>)ZzK4Ep}@}sycy_3sEFep=-{hlnY&U1fhk=W>AucQNmOPc!{I> zw!!W@2AHxwVoYSMj8*Wl%@;WNNtgnzcLEVXy7ADOOxx;g5sw488}@64XQQ^mxeW+m zJSpysx`7vjK|#0?4cQSpXg2q}vpgG7c~J4Q%!e9w_u z%m!mA;hX7>pQq0e!CF|54df$DwfGe?yJQg@5!ex(ChrVU5~o3kCe$LI#wZE*iOYXz z^Rx297ej(UsCqVHO+3*#KE%xj5tdC9=XN&}OJdPpUA=De<*cpu!d?%4zSKKI+z!zp zA*A>3z7JEi+aB8e-Ba7HkL}Z^>-OQpr*?gP*Y@juf<g)7*f{`8mFrTp;2kBNYIe}CH+^F`do5XRY%xQQoCfNsb~f%!OHPTF!d zYK!8s8OjVH8li0&alr@UwC8F3H>9koTN z4-PJfRE0=a1*9Qp!T^ymAcbv?)?_8q*J(t=3$Fcc*zL?i}ph3G)4tzRi8 zB!_8HBrB-iXC2mVSGeeJwjKKJd|HbSjjOu$8jplkhOr2fAS^Hea|RS_Mh7DHIfgB@q# zUwAX_k=c|;6h~Hx(HPV<1H7wOyXd_I4J(O;reh4gNgPXGQXaC;o z_PY~8&pV837wdbc-wx0C?KHkGulM`?QyJ@7oxXSC>wbTa&zi$3)1Q6WwwLcvkKaB$ z+fUC~&)%Wkj8uK9$93o5Gc)daUb)^5&nu^I!V2_uc%L)Bhq>y{^!D_!>aZb_J=wk9 zer@dSR`%tgOz#U^G(}(_OT>U^gGT~FS&^m2$r?x;_UiTPCJ@l)4_|^n&d&C2b||+? zz=23ZEP@x&!$Uya@Cp%Df+5KI{d+$A7umTprsB6Omi?FO+l0HOmayCYyuE3sr*!s< zMjw82dy{}li1L=<)&@gD`-k@HufK*N zLOfTi^Y-0$-?!bafa&bytW6h_cDbRxsl}84Q(JmjlB8ujKfg-2X-T_2e)zW-I?C~J zeSO;=?;qQ2GHZu^!M`Pi1Lvmgm&*y|{BcXyY7 zVl;SEI+#;)4k5T7^;jpCLNw8>O0zxq>?7Rz5uh7(D%Oc{hh&mf^W-G?5UfpVl!)EC z&ba%jAIm1e?$&!5C)4lSy(fkVBdx)R>}0-(#1Uv<3fhkHuC>#}vVHvYIq_1iUcYXC z`RiZ8P{+$-QaGX171V>1CSMK$i4mc~n9Y}MG(>)-CL@6uO~f*QTgGj%#B5;Zb}hmB zBH83ULX5}#v)U1w7{ph5u7O4dc7g)KYt-feLJZD2wssQZ+9Eh9_jRL@X$_N#fMR$M zaYCKLq@)P&nJB0j6GXez8*l{G7UVo2-|;v$STeX`yzDr^vdzr5U3=MAAn4V;A{y}L zcJOoo7oBjZzXVI8c5w!$fvu9X>08NU5L5U>)?vZnc*C`&!Tg*}>u##;M5A8qACYrd2x zG*emAK349jH`!`?`R@7NRU2y_`B81s4}BW#Fm~=wAW@m#bdD5_nGpWP@k=fM94a7U zuZ8?3(@#Mfz>-=wvO?+oK69lSaWp$jcvjv66q9N8JD|pfyrqz~@IQX~5I`0^z()Wf z-aOuyR=}oI4?13LpkVGUs=9jmd&tU%rXWdfBu6?WGSE5eCKN>7XmbMRQ^heb zJZU!F(TlU{dbMir!!S+St2eLWtMZ7LAS5DJCRhiy;K#Pl4AzrAtv50q4y{8;J=&w~ z+D8kdKk`A)Kv;mqXjMY4IQi0#A8^1crok{ANv)o++)Yet(O&FGHkgVoxM%E*zr!Mg z>_r+K9+zs@eFy>pc8@m6=2uDJ(j||;RR125k>tyv+$i>FH-_&3J2PfFwsPTZn=m(f z{4mm}ngjjEjAi?A>#66brzONFjP&&CQ3fFZfmi?Acke&KnwK zuLIu*jdh91EE*cx%PgThk5+@wB5G<#x0o;>k{%b~HHS68ek-8=9GA{aEf%g#nVyr&bn(xfGw>|H5?zAH1RKqexsiXg6%#@rf+)A>vCPQ3)Ta{h= zdX(RoIkHY%OG8khwtQ#e;s~ja%!dh$t+@R}ZgFZ)4hF5YIx4{!Tv8cCXbF799H8SQTZVdN^8og|KJrYgLgwxXGyN5 z%_st`{NPq!b-w^t_nnB8b{R*+%ip^vTr`Nd>-cVbV_JNt9BtA*&qi79`RzN$_`Xl) z=X<~Vd%QQk8_)gLR)@cL`=lQ2a1LgIkghGX5dJpC+T`2OcWoYRcYpLjJtB7CF^BR; zy~@mdnNRIGC?>?Wo;f*c>-B%E|K1<{7<245=4Aq@P?#-On|3R~(EVMT$vPLiyFoV) zm8=Hx#xQVXgka@^pbjtX2I7N*DqA^5Kw4gifhb4?&KZ-+8}nfB_*(qxSKl;y8*rSQ za3stweVifZ?dehY=B7M@C&B=aQVvbY^k9>+a7p$-kOLs-rE4M(aRij< zaVMU8?3@WXKPVluiWzg9 z{_Y@V^M_#$0}-T5Yqo6n^UC)R!9+u_t=tY7^C6iAQSG&xySu>s!F*Af5IfV51t6*? zTFB1mhNl4cb_10}s)vb%vcx|y?dMbV*~FCg1_cF1f_#i}S zKyyH+q9=kcFy2A8LAt&QJDzduPLgP7Uk&wcnLSk+p@Ku+A{$c8O7>63gB5L4Td81Ft-#tk7*339Y8~paSqxuF976YLS_mnx_8TYi&vvKa0 zlfpVv;M?(zGJLm7;I-TH@yv6FHeeErU+_a`}-g$vsn0iU{Y)z)H!O7hw|=|LD2%ZXxTC2y>NxjxBvhk07*naRQ}jry?9yCC{&}_=6W7AAx6T^lnH&^ zKZw5qO#mX$PCT zwt7LsQt4UEh0VjLun2q3sogBSo-#k>2^f@LA|8Mf**V9_8z> zs5}}-QrnbK-tIzjYhyF-nG*|g0kH~Cg&;#nYcCm#-&jK~)(S?KnS^%4!j2C>kc5S- zobs}#2CbO?VrmedMD%2=L?uC_!h1>7h47+5$o(2WYZwDzj;%3m#f-`);9dz6HNF_= z`GQ)PRJ?AYCVXRzlL0f%ryL`hst~_&w$x@P=2!Unpa%$(zqQZzMi60gvrunVSYR=T zNH1cJ0IP$+=)O@pTeFycqa%4&NrM4#L)jrRU~Bwcj6=o__VTT=;vZ7iaN-yTDt8c4 z4XjFs6gb+jL&P9yeFUqpOI@w%9$kq_p0nfeDWfF<+0^zBmc`%SPMuRa0GrNa+ zoQM>d@!q(%`<^wTE#_5wFatEF=21JrZ-j@=l*;#@t(@V}LmRtQ-WqK$^?Mit(OO|f zm>Ztg1^73=+M-@t%#TAK#;MKYaL;#xc#dc8k8-S+@s9grTs(K*;csP(I>tR~5lz#c z-SXTU$L=@k_uhC{na&W@oxBu-Ay9_z9iuMobqc3`pa)3fv=e}HdM_*Tld=G?5xeE+jf3-5x}Iqz+houXdobb?M_1vvh# z#R)Ftx>(7Fu_~Hz$MwA3-CVb$s6E-cAxN1;XK`G! zP5V)o+A%-i@YBbuHZfl$dW5}a=u3S)49vSUN2#}S$|1Jl)R`*mcvp-DO%!d1J{kvy zy+YW5SJEpRbTCUwV&=fSzXSQVHBiYnm7S#Sunl|+nA}xfV zt%XdAx!~{?gdyj`wsz=)$iap_8(@T$Mx|zDNJmeJ*nq6T5BodV#t1V3`55ySa~!XI z$T8AT5&xJng46~QF6ok!Cnf@n*nVC4+CQ953*nT*sCH+)BS1p8V|Li95LP)JlH9D4 zoE7s>;jm?5YE2F{>jisIz5|t8fSJ$li0$6#^N@M&K19H_81|CRYHT{8AFvqHgL~zO zTl&fVU1toC{~*@RAf((#d@YPaY0iq4TONJ6L=Z@wQArfj6f;MnTOi*eTo7=Wp-7kB z%QObYG5NCyZTF=OO-9BVTVpxk#(JQw!pzZ7MbL}%|L;raReB+RlDYXpn82ZO{6-j^ z+7`StCv+_00~FjaOi4W~+{F6M_?y%9`YMrW-Ss52!!zYO1|c%8gIHOY!6lEhAEkk* zbxYd$lln;J=H{R1n<+|@W+N_1X zABTFzIJ)OO&(%HJ>;4%3@!hz3*SI*8O*l69hL{4Cv|gPR2j`hvZMtA7WWA;>ma21=8G@ec7K{pU}iHK2qJ1F zGvX|1O{|LAqo%r*aCJbGDpK z5=JO=>GjK(tvy||j}TvSDr^%Kg4l583KHvtr;uGus&ONY7XjT1V<26%HfsZEAO728 zOE#91;pJPVfYS#eCB~eY$JcpYGcC-@R)bAm@v9(q3~; ztLOp|ED(%PN(@--7Y}frr3XM@VPsQ*?6_&J9OiHUbRiI&I);WBY0>6O3}dxF@>WlS zOr4sruk@eRrgDM+;4DO&DJ^VkzHKKn;Yt`t%+#tqGF?!kasZQYZ8lAKB)j?b^>s{W zhbJfP_*D3CrLCnEBk@OF_nbw9t44^yI9mc{HpJ~3lp zT;o`fO`|MU^T-SuW+6Ce7|HQJMT{s3%vs1j3AHm5h0e=S0=$3LE_kyuCV}lv@{JJ; zQur7Sd1eNJD8opAkMehjHH)UA6QFt@KH<|*8WC-Gzcd)uRhCo6t6=4sXsZqKrfM(3 z0B@4|D;kL}2+%Xufw}CFW9;2~E*HMBE=%|*&9JBXpw8+a+)|MogK74ia(!pcXcqj9 ziE*uUUs9;~*ET|jZ`3dQq_sbLa@F-CScK?JdO8s5! zNZpUZBoWdw`S5C{4uq6x9QcUPyj|}av4$wf!<67e`6i)P==3gs5;DluDQiW{2wpIDmT)Kl2H(feVo|_8j3wUdX5%v;c3A z3kQlYcSYRe)R^tqODn<$=KOp=JABGoxxT$`i|tc8!L?5&iK>bD;`Aire79IMW`ncs zww<1z2QDLxu^Y!J3pHFIhYbIi-?4n_pmEvIT3!CF^rCd9IZt$8vX_!2zLtX2q<-^Cngk0 z!^$HYY$?n7G1kn6-sNXhNnj>{_l?{kQ%udYZD)qH5C%#h zAXPZ!XF*74!N4P!vC6XRZJD;$Sn1VF}9s?$h`U;%|j7&uZ8*OMBeYxLnyq; zP`0D4&-dI`Hlm0j%ljHEN<+D+xJ$MjIfWVOK;r@dJIxy{8ecJZ$@$PVj^@(XI^Zez zME|wNoIBR*RlB;PwJRSSS|kkjLwp#@84y9SHq-8X>ihZ)7Yqrt+JfOn@W%PvXK?Ku zebp}bpommUa=0;8a2lNMcfDWIbC`&3g3@;V8vWM~<<)w_1pEE0^$s5C_{cln9f!Z2 z${OoLf5-jtuIKQVvefVQ?pZKg<#;~Ut9nMe^lh|7x%xQTdT{j@qyP{8tHcycT+AW2Hn4*c!MBRH%-q zK%+^K&f^)MfI^tF$x}Ji0BjCGQCb7dB0{*|Vjkk8o$PbRrx)$?YjC zQN>OVrm^K>9)y;Xip)ibB=s5s2emK<$RsG|Ubd1xwo7g%(x4b@VWOu;XSJK)!@9Od z=D@^0F3*K@v|G-T)!!{iT&LqySkV+xTtC=ZaP!z!v@hF=BsiE&+lQ+UZPs_;1dzi1 z5X#tn#lElilKhI60j*!JD#PLa-eFs>w(aAGyY?4<@lE^YFTV?sw2y@Fr_+;*_=%9_ z`9^TOECxw<8}&8-UbpM(PwnuK`3OM+ctv2P*`+B#^w@SC189uR0CWq1^!(}iI$8&F zjoUZ&%w33F8s43DqTUqh*Y|#)0fC_4Rl8T7onOS1LKCx;&im=9UA#Ju11d+%gUzJ9 zK9O2?zdhYo7E$IA`8P0wq#?Nk5DARZbjq|)S}t&K@W5V;dEj6RE@iPR8+-g5aH<_2 zVW0R+Fi*s%B1nRC{Ma@t(l|stkG}z52ht}Z$`1kZa=hHX3{p1M#?AO>6Ej;F#;wrA zLJro*P^TJK2t|gyz-sr>c2C&@xd=bTU?@YoAnSpg^p~oIKZNXs%f&q5y-akd#|lEy zC+sd{6aONuHUK3(ue*t&<{N^eB@pIZ$%5o(d3d~UtNWhNDw1V63^R{$ItD(*#dl!a z)rM%ZWL>T35dObaR|ZhP4A|NbR*6NC{Phz z4354H(s;0KO1u>mE)2%p@31-xm_7vi1l(RkJdLbl13B zYY%Pz32sFAlvjy@tf7SJ`GD;=rVe>C;K!17vo;Zqp5+k}KNqDIUmpzOBpa$eJr>~r zUrz8*%yBuYn|t?)iLQQ!ed>`&rG=xl6&0eLgP$!aA1tnE2@`Tzp?e6H_Fr7u9)K1_ zs9>e!S5CnMvq%vc2x$LI(Tuo{ikl?Mo9N06p{<1_Wift zw#DsT`-?yOvvzlL)4qK3CJ6NE>MEU+TL=jF3vBL00^;5IASCQWlY-1;aO`>vN|^ak5t#D`RgK<8G6x#OjJH*l#P2q88?M+dkdhwfEOojTzzP>zC=TzMq_( zC7R^mfa#)4GtEBS+k<9%ZBZohG05~do1V1C2RR>{pp|ny8Y&x9~*~AQ5LrG zl|d5`iZf)S46D66d9jlU1zN7+_$1q;#Z2qK36rF1j8Twlqi;LRd_ z*VddYg_QPu4m1hTG(^g;NCW0ben(ImrPec(Yr2XF-~@}BgWW=Ig#f`Wa?Tv4jrlJU zt|t}3SVVz}zoa;@m%1QP3_vt3&j>Y4YL}9u`N#%&l_H-5aKY4XYebY|SJ9~?O%uC| zK7~MBgZ!im;&<|n@?qZ(q(k}RH*iI4Hyol63jQek6>w6 zU5ng>c*!HOsQo;AGuF#sqWp%dm0Qe8&GjIJ;Pq+0wOf%71O>zrWRtM=_MLSzp!?`lTM>qfU$h)4o28)0lWi8xj25n@)tC&mR`Si6jB<9Ju1}AmR z=3sW<596Ti4)0B7N3|r_=D;VG_0v+qQaIwDp7VE8$~u z+EY5<#?@O|j4X)Kvqfs(A~X_G6=i8B_RQE+Mof|*oAT=~zi3BCCsCuXSC8#sCHH@E z&j|X<7jN3r!?ykK{kv@Fb$7Q+=ElXMw!uC-ebo;3PBX^TfdCZaV4?x+(aA}W_LxwU z>R@ZMD3ge*bHjilfYjA^fPokMKzaod8)cGB#ZT5!o|~ zvmnP`h)Ws9is}#HrPZJow&zJ@d$Sh_W{E_UuJF zz_^-U$kQB;IU^m7ISfKW-1v$_ijZ6>>~3iqdY+9+6-{fyF}EBh<1~qJoQg6kDNWlj zmg?dYLNhd*+3uYqDW>@$2sUG=;Uu4|h2lf4jqHa)qU*UEglWoBi=lk9zY7gT@(mRJ z3vCIwlJU)Yip^N3(u6k`vQl5F&Ce2z!^mVtj3>CMId+8)e4u1wjX2k>GC6F^j!}$s zBB84MFb(mE!L2B_Or2FfsHW1bHKxVtsbo9qR#(UE8WBdix3vIJfoUb=Z(Te-2!He? zrg;&qMVNEuRcdb0P8?;8rM-fZjKkh>@Z3XeF~xq5?{&D=k2M6|O0(v9 zn9d!1G<<=nZ0a%w@#~XH3tL#x@wO;6kaVKD1Yy^0TYF((r0wk*Z`csYS%94oBRCq z{H<)?!I{2Qzi+nNatWv|mbS696$P_3Py6iv0|VcRq=+V`gc$90=%;#|<8W_0*Z%a) z3l@Dfpgx4ebj0CBTNGEwYj?;@$8?sh zy%A~LGcCpS^_A_WQir_)hBSJAf7cH7sIl?Rj}3@#0e8=Qx7tdoA)HGHoUNXvYeh6k zbPw&cX8_arr;UDA#}Q%@s$CWNN7!p(wS@RdI;GNuFv6{AS+@-uv<#|EYn*-m3Ex5X zObDgIHkl-0JB(7HGb>P+ts|{N%ft&x!rvJRoCc~X9)s@Y*An;(CC8*7o> zQcsSK+k9QQCQv0{k9nYVNtn|5p_|qUA$rC%K`k5&!wxdhFQ-1L(-pkC=eI+@)8CFb zjE#H7AzF>T`C1W{La2zaw(&h!CyJuxkdK1$Jtv`z`Bd+y%Q{oOwdUR3W7M6cPVG`J?^kg}XbQQOR)e1q8?Wcth9^B`%w5Fui()wXAIc3Y!kL0g<*d*ujX(G)e;CcwYQpRMc>^c2io9k5~DX?OU$NK{Zz`x4z%y;g4*L$P< zn(J~bL|;ZdOrnn6a+Sf1=H4jR-!wXsQIn?X$oc6<PDwA|MqQG-_30Qg$tb zFfb4I@lvkEYYc0kpRy+eIsN1ITC&!5{OYni^S9c4pVYx3D8Bje+xF?>b^Gu^s%PHM zLP}@xgW&YXH$wD;Fjw~IB;wjfTx)UTB54o)szsp9CjWO26F&fW00ZFgw`2D?KLlev z%F;il-x$Zo9<7sn3jsdFAtRQtWd7QQA#3f$ zsSJ+h_2%}zegDI|EQB|&zl?bTIat{Ruswu;r%jL^%~AJBX+dUP+IZ;x4AGP&hjrWA zY#IkPOs9o5#=&(g9Ah%>Lu!SbNlg+ol|9&f1Tl-M?*N;8AU2IlsAC~?{yqGKN}b*k zZo3vP%;uQ{WR)zc#+S3<^0%hX*cTNgU1R)W|>Jae9BF|F~54D>Q4I+hu#s*4FX1Rd&6ie6CxV{ zg}=~K{D+3away%Z!?u@XUEmwTu|G5IVFMy1hjB?hgTuDj7Ey|+f(E7&$$`%?Lhzm2 zU@=;ztoLW4Fvh;dv(`75SC&2yRtBN2u`J)Q`QAKu&G)0;fpZWz-wi^fJm=6_Cqk#^ zXR!8^JIeOnSZD4j({9{iIefo+y6^dDWAd$ZI1r-0lo7T&Cezqq z+6W?PQ`eS`HjlDKo3z2RajL`L-Ya}vTM-l!S@^~{IQ8A3ET=a6X0)}&Rpe6%f6A=- z%efJpaY@@wI&x`#JMF-OIlpC;t1>@hs6lWsE66H{*YcGX*L+S~8HP1(tG7qu$& z3>(^E7AdI=l7#T~Ilv+Oyy0a*qq2dd*w?bHwc0BdpUQ4JW7|}BIf)n~n9t<%0;h41 z;SYn*ALWX{kUF`wXO6t$ZVaMLE7E!)KKZ}1M=@N|0Ij*o?& z&f5L$W4rz|Z{L0UW4ror)qec$`$ACJ=K4HIoTQ^ZoKa`b+Ioc#w)jb_r2RV0Evasa zaO^C!Oq#YEBme*)07*naR6t)OCOUoYH~l?+kE{6{hkJm+)wfQIXOuI(aUJjYoVFlp zKaCogll71<1C`vC18ZxS=V$HBt5@wj%updhbDK7VK-5BEjxyc`2J9yBLN;R_ z^)CysFI;2byWNvthBagHyYE}$0Vcff_sQ{TU=6$(oGieJy&;MKOIkLNDGAhXNLP8w zB<-1JtjEI6{3t2#2|~Nxo&^b;%Q5Y7(>BXm!|UZ?Ih$gtoDZ9y%`tYoG{qhEDLzlnkdAS26XVV z{(kG|%)xKn`>TF{zuX6t3M&mkS#98%dLiq(6NQo{3g`WnDn1)WwcwjD2!OL|wJ=P6 zxU%oHIA-BbWhtpW6) z2vrdmaOeQv5hmAiNYvV~UL39%4aXo#${XvVoO3JRjXJ&Kn{oQBZbxuKzxvy$?s57( z-W~URr`+9Ryff~3SKrhHw?rERk7Z6}shzfVw9WPf@CpW^)KEppQyz!LcU2U0ro-1q2I~bsCut6Z)G#Co? z3rEw#Fmte3+~2l)31fJ}FXrvthpQkU>7$R2Iq-lGoLbjwK0QSxcXISq zv-iY`liJ=>_O{r=ZINiH$C3d}WJk>+>89;F*|!g~hk!u^i$$ma%~N}_DHq~zLL#rx zJ{Wjh8QRhbWNfr$o}tFAu*Vip{N;l*)Xxc?Ocdgd*olbX)MtmvljDoFeVVjSH}~z^ z-@I*q{%7B`-+c3JySlm#VmLcKO#}i7n^R<%1-=$dh)y}Dfl}s=HY)<8PmsxaWk=F3 zJ$2wRk7Lr!onru7e(d}M5S(KX0;KV6fIQn7529WRdMu8Nr%4YstVP||e3!<|C1NI% z++MplKW#5APTLV!iHCY2`l#FS9TSe{QiUJ1iIBc+snk6`I-IswFJ8o4X7e%<{OS2g z+n+qP+0ir+70d_P93pM>Y)o@^7s-g~*Ibd7_oY1N5Ek`2Es^c9%ZJBUKw{vYh5)?l zb$Z^VN^LZ*{DKk|3)wMCch%%(-Sf$Z$%QD4aY+PVcGJIC2ET*Ny281PCv9HaPIGmi zgQxLEvWrj^vNT5srLf{Drgm0NvC_pO-NqLIweFJk9Fx>Hi=%0XHfg(UxA(WP`5Koj zp>3@C#q?2ON1Z7eg}JAYrFZ3mkSGp}TXHlNHu@5l&4j_v0axj2O)z;d%?1uR`X%e= zGZQi3^E3Q}OqVbd`0aC0{Z`I?e33fnWh{zusM+^#MLZNWC;8JF#OX2&>yWGO$rDEOSMlhL=<8@2y-zcNVHvaY^>JaKUtL?qixp)Zvc9gEnCT&wr^rjHIy! z3#FmjD<3(+WH;lEerSU}y00DjuTEn)#>9PX^33V*+dF>ywxUJKL~Q)fVei!V!EqQZ z{dEn?8)lL)4S+F;t}&TQgAmjCb34WuDpT7>8(clp7FTU{s&^cd@j-A=KBz2nyMO}O z=nU-xq;s5n>Jo>PL(lYN7Non9Zj6K~QaOc>N~<(8s9TMNi1; z$T17!P_fiCS=#oquYQ_6GFFld&23`!ki91=wtd>{!ijN^^^!(mF6-rnjh2dMlCZvX zwyQqF7{s}xfN{N9SNdsAaLg2sY_Of<;*D>w4HBo#u@LYLRqs>$I&Q?o$Jxe$SY^)# zyLirK93&58=UyxjkL&jRch~KQ@82inl8M5W#D~+9c6NN+jt_-xm9`5n ztKZevPDpy@%omA8kWLno!Nt#Mw$)%KCM7*OY=7BZYW@eUd5B~TUw*ri23ysV6#tE31t81C=X(-8i2J-^XvH4oE53Mj&# z)OC41zm*5pE988v4@5zo6=|af>JQ9ge0rO)1sDXgn2={49uO!EK_^5d5mt^5riqw% zhy556N4lKfx0B^rTarGHkD`H~$_lF}>TPeo*&-esfX#3w-LFNymDTE?P1lort6pne zy&U&xrN}2BKC;FtF${dGh-f@ode6Rd*9c@eb7?_wy zd$~PIt=W~bpaKEd3Ezvt8Ood~0cuJQI>w5d-u zXUeR;RS2rFAs`uNxIjiub;1W@KHwq!iB`Wm26LFD#mBH0ENZXyr=7-CJ(vgY&?L~B zl@>-DjFomMSAFWvSoN_Tb7kBoH4zG;ZYtHrD8vg2;q?ot*eBxV^S&weA}*XZ?ht04z#PKZL6u|G>Cds2+Et+uiA%?SFxE|pYCfHWNPcz zlOv&br|tUcpxxhm3L)iJesqW!oo6r}ALdb=vfH-3b;3Mt&h@aJhts#=3>o@Ji#fzxUEy7yt-R>O%6D%7q{S}*dt8KFp zV+>Ca+jbhFM@TcNj+m&0ij-g|(l5OdA#KwrWPDVbD*6R#Zward+k^Z7F5;MJ=)(Kda2 z|DoM3F|pJ3`prd5PZq`o@nS-N6zt3Kut|DrVRBO$H!)&7*rTQ`gdrD)aiS5xxPlGR zo$|B|(yxS5#kh@k*3w+>@z!3ntq2Z8J|;G`6!Wl3YHU(rMFD|Vh~4;(`OzNQ3rJ$D zH|@b7V!m84l8BTsH3z%w9!8ox5~4pi_7$NfDEPbc0)d~5 z5QoIBY5B}J4Cd5Z9ZWe850C{9*pfnuo#2O}7VH$`P#LYQ)p2;Uua3{!$67xK-FT}Q z2ZSK^Xw15%N#nc!WHf2@qslMei~3tp>J98i)4AU^Pn-DUDAPPb+>e|6m|fQ#>DH^Z zA?afv5S^G+pPI-TvM6|5hcQ@Zv$I0<*0t@@_uKiNT@{NMn{)kwYng3J>a13!mm)1N zd6?Hs2&dR${#v%t05X^vgNg=lM7>=0$;>;^i6%G3p=D0fGifBy3xNshS z-Zs7F)|`P;s>g7>$(Rdo1QG=-2obMrW1sICOZ9<)!Zjsex^He=jg`N5j{zV0o_YWI z>$88#3x2hl$Jc=O?y7H$bAEBrUcY*kb<8|5V%5d2A}%CT2$tqR0I@($zcQPYvs?sm zfBp4OQ~8aAQ>PXGdUbuBoDGOH4aND{S^LE=e$n2%ev?i>diIS!rec14YG1s0lbtY! z1K4W5NRkwg?c2+X%Vc2$=#bp~V%gq*xJpW0YS<$C)80&U>s>2&JbA= z-+jBixrxmjk}|g5;h=U@M| zc6xdl=HcDjtM>hO@7rJe>YJpNrj>a4@>Nn#Cwz3I5Lp-2-3@Ku0_va>rO$0dV$g(rQ;x`NruObrkSDCJixl zed>XMf<&?!Lhz2J2W>fDw!iU5zi9vXAN_;&#mn<{B)QP?zWwPhf7#BCMZJ{cs`&}y zkTQy+hg4&_+1k!}*&a6}{gO7AybwnWhcVJ#nkVtv$(m{b(wJRdWIhqhljD;x5H{Wd z3oz=JUuW8*sd?Qdqhk$rWH0T|%~Y)4joFp`KXB!p1~qleSOTy0TLYiExb*Dyvh zL1H+fhAzZk%+nYTh`JCAX&>S6+dGjO)~ojN;w;(?L%&(C+7Cbc5TZddXLnY}0|JuN zOM5?FUA61$n~W9zor{+*nsph*d2he{=Gz~#!!Cx4h72PXlSCpa9@}DBo8O7Rk!^Lp zw5P>3T183HXyAls2JGyEfTIh14O1X8UQ7^Xv%t?gHQyn|i6yMx+GV_r*I)<&*AQTA z#{0pWo=0O9typXY(Lx};LoLmO)~RBu3%EugD?OC?#~gm1gTBEVAvqefZu-o}0deNh z+Uv%=7<20~TAIGH0xQYbh_S9z_aYc*aS<6NUiF4>t=8@M@UWeqo(Il9eE9HLYXtv- z!!U+@uZpva^Y-FZg`z8uBYSeIWXMZ$rO|YVJd2qj*?x-wh{+(S^9%M75_s7OR=~f% z-FNzJjbe1I7jvvVCQ;qm;91tis!VadcMl;NM@4-ZAgW zcJ;kFtzqM*ZSDtFy7WBSG42QF?+96Nm7%h3F%8C-uoI#lAFA50F8$}T)J-S0n8X1x+YSxl$8otOuEH#yX+d}FEI{tk`ru;968qy4^_m~eyY;oY5WR#k>`lg!3; ztCfEnqSg^6i!Z+XGDztA?|u_CC1)wb)1rYu8X`aE=yp^MzF)NC)3Pm519JGWNNF-Y zyn7$#4k{lTBVC+d1leiF7jJ%&On<06O@oCY!{P&*>E0x`z>b3P5?|T9QCjO4Nv?8w zcG*tl6gWGN`X`z2BGEm?8=ulFi+Nf}fcEyvv4kozTL!O~VAiqinzFs8y>@+b-#&i2 zYH#0tjO4XHowSpSi#A{07|QnQ<*S5M%GCMoZz?OKeJH4Q4`-+C<%{#~+aQq;PdkZm zNW1`+&j?Ph$hjO+CJ-_v2{=f><|&A*Z|((v+ye}*PQdPJvd1w1W?VfRj6;|Ynw1dk z=Y^<#?>okKuI2QWo7E35L|yyLJXn@Eb#2yqNc?CvN#;nJhY2miNXiq*u=l$!=FU84 zVPo=&xJ!|V*|HmGX(c2l6V9prMHt#u)cm4Q%+C~}u?uL|&{Eaw7ltySiK|u0uJUWV z{B4ndeOHHtWUR+;&-V9@!vyIoxF*5W^&y!?F*@cV(u}pStaQ!hJ~94}Hs7i-vtUgZ z`*Xr9yXFW|a38~D>`T?y9hV*-+WYr6ZMB#OiE6iYx$^x11J?BZzHQLgS+nmxUiEE~ z587=1pxxW_?tU4VCs8g}n>MxDs6WkM93<_A`PiQN?wDY5y(@Dpe&#vudx|JOezHa3#7NV1k~8?h7VX{V=HLLHsPJkUqs^m)WF^^$ zNbZ;f+;@OYhw{NcW&ojtl?U(JUR2hsI`u1zf1HL3XUXiTei{h6UgHBVZ81*WREl|l zkF7c7zyaRVH`j45J=np~L*TNW2ef!sIinxG=ku`J2Yqt5nw~P5q8-J|6=?PGjJk|K zWSo3w918CnH(|eHA1ZY_a=-UM{Z2>5q5EcdR~sj|U=4P-$;q*_CXd;eC^q7!O4GTR z&)eDQX*2?FfBZ4Xh464UU$xWwMF@n(QH9>z+{IbP;^lzJeiOvY-U5&gCec_>G9tRR zp4Rc7eD$*?NtC}|zk1nju0F+#K@(A?e(Iv5b_lUgOPY(cv!=p2Y$xXz?eO%h9Uh%V z^S}d{x|rAg;_j~P3+=Q`b}}*UI)WHnfL79{D2w~K2#;wPn%VJDyPe;+)td2h+76G; zE8)=Wq-~!dXd$WRjkDahKYrhS{PBJJbamIj2JZjz@@2Nt)*cJl;$e%P?oVP5hDbFHy=FJxBvglO^@Y{FqA`#rllt?n+97NKw5cgU#nzAD&J^9g5ByJ1@N&foN zbr?wFV4Olck|2rii`)p)#yNAWkLt2$np!K~NoF`36fG+%W!N+=R*smF1gJox;xxZT z38AY<4~eSy2tml^By)&R_e5y?UCfEa3vSGF$tJ=Wmez|Ukd~FUmj*<9##6;AomCr#Nst)L=cAEuS zm~Pq#cuG6ii8E#)nfdeo^FP||_-*pxM%~Gp0gBzH$=e8e4r^$SxpBOX9U6b*Hw)p` zy!+0;ltwae+20+AU$OqiAUX&i$&fjikGx<08Z;r=KI)D+BJ4x08xD{Ls-lUGvlh(X zo`g-0w7jS7?D(X8yuMCG(&hbq{H~79&fDq5d9v0DW0t)(5oM7UOPbV5_y{~nLbiPZ zo7HbVC{*6yjJCw^`b{dOofsO5z?ZPm?%NP;ilkJs+a4b03NH~F)#Dh1&EErN)uSx% zr!4m|G=nG&{N%TF2+oyf?7TPdQ7Y);>%HB&28_5ji1xUrJbycb(>n1T&&?^#6nbQi zh6#g!`Xsw?7qL;cu!xnL;FYnJlAf|+&3=pFvhR^PT&+cPFsy- zX@0DEr+e0%D{`$Y?;9UXXP~~Dq%s%w^AS0cXu?qjNA8NU%6Kr%S>*{7C{vNPjnjDf zyXq)fqTVrflW<&p-|yt_Cv|lnluw^NwfFDeM)`?f4hiN3IcREJ} z+nd;(s6ZtbD#A`BwTMK|8St}#=*d;2lj zFE7qtw%Kb7&Bj=^jy*jBrEW&N_nuYLLDD5D4nj?pOhaQlLLAt2`#sY0!_94bnjEyF zbGi19l0gl7MH}&ScN>JqM8NSiW3p}0Se=|!+UObs3-Y(e5@TADR;gO`*H|Ljv{|oS zoP`lFR>s|&Ia5cn^_8<6CRFHcjd39~-!O&Djw%hWadQviQHMjj{0#{@#(a5?EmmI< zGfAA5+uGGL42w3jy`-PUNLqIswzm5+pFXz5`k_6oHtn`+9ZCWcerePsiCPA}XdGxU zgkUBIL>x|m91Nx(WoFaHm^bX2iFqhKwL5dA>Hlf}^n!{hs3JP37hyKoAu9b@T?Rg` zcltdfuHeZWhmFWwjqeMK*z3hJNZtEIKCDaZ!e_=LWkUa>{*vfOrUSta2BO$tjEuj` z%Ft9%i$BE4m4hq6Aq)+M8{V4D+N+DpXso1Y|MBgQZSlho?Zuln?GOIw58InBzhpDX zPP*VggE0Z--+V}gP6IIr5d2f?rlAp-WYxJEaTDD+~dCW zF|-qdQ5f(H_T5v5zqJ|Tvisbydgd5wz~2K0sb~E5yw+{4i@;!4|9hv_T1oP?9-p-$ z`L6o}r5yc60e zx)Ws>rS)DMmq-7`7#T-x9vYf4FZ$(~_r^IG2hWTT;pFpNCrnebictXz;{Xd)Uujs3 zgLBOLZe7at%v_E86F1mnAVUOHVW+3Z=`>H-U;p~o?T`NO58KO^FEd#D01Oz%LYq?E z-1^P-qR{~WVPd@#c6BXj`vPWGLCBMupM*u z5yCfLB)zeavxGY0G5JocS84C{&0RDo^3uyPcjdnSzi_VUH6b|SZf9P{D+*!SkyV8#GYLmwR9>r0}*%Fp<;HpnsW;tlf~W#P=}3m5H0U!!R;*METBkl z#aMiP?&U~hMMQ*V@`pJ;JB>yF(MyP7G+xxjgP9rSs0*W0#-$+q6p2~ub~_1~wk`Xu ze7L%5clOSh9<=G{N&JH_l@FV3X(Q%x^H=1J93~RM#BU%QZ55T%c8hZKGv6moborJT zpHfklz0-R%Dzs>ubvX`On96{ZqmkIQb}y7Rp7Q0eOQmdnAO(B6eE4(~%>$&W4d%<~ z9c5u$yz94j%*SXahM*+hA{t1Wy6u%A}{9Mlei7zOaR zlAZODZ_R$*ci(r$1Y-a(1uo1z|C}(vh}MW?DKGZ+xA;Ee%B18f0<$W-t%1cNHoeuA`g~QZ@NqPpfn4 ztU79!P|OH50EW-WSLSiEPCkL{(Q(6yKM`!^^DqKu7nkk#e)e@takuyL_U-@m%l7RL z-^YCV_1m}Y#mm?2#miU80?cG9+&joWU~Qj;`^w)zqahd06QQD{Re5g<}lh6|@DxsrO4z8Fgp}vxo1;^O~*t*LzOSMjfuo z9q)TSz8`DHb@v!$jCJMxQ8qu7`_6D!r!)|>n!;)MCiw=w2%K4a-8_qCxR*6E7~I|# zb&oZwo!YBDWevRI9k5{?i8yoLyS}r|UA6PwyLX@anr}K|<+;;0Ltu&dq;Ga+jXpCF zhz2v8ajEyUNl~*yepiK4%+n}$jB_!i#mITCo#WYrSpt&)a7N?Uv)mVE_`~<#w=cf< zBK9C3g~>QPjK9KHKmA$z{_Xp=Sbl1Yh3!T+?bYR*ILJvWEu@ax%yPm}^GRTSuy}1p ztOJ%S2Ea2C`qNlbQ#7vj4id2S!J@Z z70D!K5t${wyM3`owGF__942W-rt>r40p4+Vw>=0`EW&9Xv||9d1VGFUVX8V(^{oLS zem4LBAOJ~3K~(u4$5?zC^|5tlvG zDprrfx4tpfhTFPyDqov06Bw)d{m`x#_mN}}cV+X~7bS5wpSJ`1Qyd<~$?<-^j0po% zXr2-~l;{agxe}TUr&r9;V|ye~bsq?kN6FRD2@2fYCEV_Gf>^Wq@r)rvpQct!m(ss?Mhwvko&}RgZDa&}K{_Z0*soYL|DO%hRH& z#J}bt<%axM*m0Fx-{K)2l8C#?$d|o{Fh~mTzw-sHRyVJhzYry=YbJxXDih{Z^1N02 zx%MWjID|9bo?c$Gy~#maJgnQF{PLIWfB)k@ZvWfA{@3mI|N0-cFTVV${r>O&e*60C zuiL9vud{bd601#TF(22uCKxdnly(fGI|%pgum>M?0uA1@)3_?b-(V3Dai!tFusHk% zyH4~269IQ)G?b%UoFcgDQ;XWUl? z+#eqVDeRd|x&y2GHQ&WpR*k7N?+|YE6Q)Gi+MM6-s7BpbTo@VKFU;n#-QUvf15|` z&_-=gr~4BFa<~7le?Xlylt;vym-}Sv!nLv^_zBfewoF4d_whn(w6f@ zwsB^E6h1SfrY0?KR&9QJ6Lp_~I+`7|CjcdZ3Y9O(c6u0d1J0Mq=m@u+P`zba*stM! z9->Awz)N4U8%)LBZE^hP=NIAV&n_;q8y0@bNmstU{|%X_Vj4% z_-shvB;ijDc1h9&02ZA%Z4Nq9*@b8uqUtu`b$&)-)I|?0`GqJGjexoEUf)*$_iGMu ztOMu}^M}?o7D1$i$U@Q)A1drFDVs~*1AgAac3L!!4)>ko@BHyQ{|rF&ecp=>MLO@2 z-V&;KbQp~frh#98YY1jn^H#f`H6zLao659iiXky7r7ooT$|8BBrJA)D7ncpgu-q#T z?iEg(CwVt9AgmKP6mIX@@$|60e)%fQ!$uhFP9N0^!9jXX?W#7=0`P1u1ZN$bogTH# z@;)ipap>02Sh&`P?;ujwDv#3`2hH+4w;-Y}YYsF5s^KN#)#HWoI*hd>*ZQAj1nI4j0jgNz!LwU&` zNil8i529)0TqU)%SqT3*7?I8x7h^{-~Y4xNKkj{O9eT{qz5&{mH-i zx9yj|{AK&ix8JvKzWGfw!L-3&e({s`<(EI{guS)^H#gwTa5AA97tXQZSRz00R>bCc zz55LYt%32Z#^jk`>!&{We!S;u4Z*#bWOb>>`Y5{5@kGX@q;zGBIrg`2oXT-u{mS*X ztJ8Z9?`Wsr?yJK+zkN4OzsEcIuscGJvennYCUx)G3&*zb){dxyWb-TscLI_35lKRp z`kczr#&P<++djV?+A&P1<6GD9%++u2sb}SR;20_+uqZO`taI-<38lzXBvBK?c@88(H4lZ z_{H!2Uc0<})%UvC#F>!#X@36@!YeM@4tgY=tLwY=>dl+B%=W_)H%Yi8+aNVbO|V=7 zTe(^70FlTCs^8+C5cSK;i`aH?=}9_7Qjk&Y;VALbrAG}ONQS%lYSk8!nM^lfH16#T zDpbu*jvRaz%XWWfGZvwA7wv9&mxMa(*Gp!F&8pcE^W~d2?dQMui#U`~%P!VJHy7>w z`>XcjyZ7;erWSsBVD6ZO*};g=hAfxmNXN!4M}ajG2`Kv)l!_<>L59CiWyY}%OfcXo z_$n|qCh==XCQGTdC*?3{M)^$&tCTIXFA|wPF$I9cZlM5S9RALG9dT(xNxbSTXCsT9 zc|{m!s)%GZN*LvVka5;u-l&D~nfnRwOmL~muQAO+#5BYvn{^K=D&1nH{gxvD&%M#-kXQzvYSc@d6?6LTt&THYEz~!?WNsVVT2C$GbYT5 zXKgC-mMzIBk$*XePkk$x=1j0q8$wm)H`z&K#!3f|CM42(I1 zDLCzFf5C2W>1UYp9VmH*z+Ohb;aMHV@;`JGLQO&amEM#pSC0PApO%JEt>&~e6Eu=) zQcfohe24Ol-8U+lX7CkJOr&4M_P-ButgmQUyXldcAnUL0 z(=Y|xwX81_jM{Vt`6HH?wMq$2D>gltwdHEw=Ice9E$-W!ufA&k@bCY<_6L9c7wzoi zF!25_{?)&2SF2C$@Wmi$?2ZcdK-W5zU$ujUGP_oLaocfMZR^6GIy_eu){orso^UUjVl^d zOh|-i48%slG=5Fh&x8=0FN}-z(DOYgH_>z5yeK`s=NN@B3uTNVGeEuf>gCI}SjzvvW>sM!doevAPL=$HS1{+u z_wPPNMf&E=mq{1}F5X{VwUe`p_Vw34kAHy0^XAJp0ZfYqaIKdQ?aiw<$$cOyVLCf( zw|BDF-L~V?(+a0suiA3WfoqffEttaZ7I*FK$G7caZ`;=PrqJ2RL4b9Bcbin!m#4?= z{AiZ2Ckx^3>bl)t-^5IUdB92D-(EHEGqXUxlf!8{zr1Y67Z)f>cDSQ)-~%B<^Zome z?f!P&9#{0|JhPA6!M?l{Y?lz0jk79MFoa4~n3V!q5OxrDS>6)HSHv6P;dO7qpkr83 zw#(V!G~T^YGYI3`a$YMy6fuCwzG9Va?CQ)OCAqkMn?$kjs&vRv6c zaq~G{ZA=z{g~uWu2TV_piliurpe%gJPL)LgexOr~Bf1{!KiVD zc#P-yS;gi1PL7DphKb-VW;+bQzT`XzE4BWCwCPBgHD&CK_hHNg^Tj&p$nzjAV>m_fW1Lmk+MM z8aN+-4_4w_3_%tI2BATI+GKnoG;`n@vVefa#7VfBM!@j|vR1a0BDMTBej0;$sYP~R zZ<)^sm(Nt~dqS#D6h-QIHYunuxA_>bGK|MD-}x8Hu-cTarGyuugqcpRP_ zw#U7Pc3{sSzE0~+qwRfMKeVICQM)+1Xj_>I6Fo6$XUXSt6pPRLX&pQOUg4nO=Kyb$ zSpDWtmTe0T_KTs&MAycIVUiHfWCAWi4IZpB#~@yqoZ!VB2_6&eFz()WMeuxYt-yf@ zvjff>&ofWmr@*_O5emjP%Jr?&+DRX%>pO$MNq)-=Mx%K+YZA<14loXa4NkLz^tAE{ zW#hRP2Y$eW`LLFP(?mMa2F5hlH3dn`W@9--WG~-cphGA2IGSesw8JxPgPYWOadDY4 z2`rdHLSLQ5&{%JN!_Pn&O>rK8C&J@FnNuTd_OT!1fN?NJe!Du2x8KHhLJ|ZVGs$RT z&n@Xn1PKX4E(VCpqLoKoa-F-2`#9!k4dwxmiM7A}bkn~5_PZp0x_J4z-SJ2#ZS7Cm zT7LW6yCw~*3OVON#Ou{Ieg;=ppW>sici`Q}c1RsFowl_QrS&Ra$usGgx0}lB_pol0 z%)llYDH z!9ja}^{)N-pZ!Jq@cv`ce4ZX(wu6%jVY^#Awnv%cy4niY4e5=62BglQrw}3ITBo_n zQpq3OCF{Q+sE{1>hbCvz>b1x=B@u+tD7h;Lx@Q$M!A@;3$@v{y7n^G^Wfqoy06xGn zhT2I>@L;hg+QU8N4?^IJ=fA6+#q4CjV}fXzADogjspLLoLNZay#yo?Vkj@Z;N(G!T zVvfmfZzbtKrh#~40kL$+E~vwhn)lhXJ#w1uDT1|*Kf~$tD7iVl`{7;cvH%aZl2er< z<-z_eOfL9@=lKjsfCP?cazqZ8HetiEph8aIF_L80d}QJ6Z`=OUL6`=8QV!y8F`ILa zzctUKPG+Hv_|Xvb)6?_3!(nQ*DB^FSV@iT(+Eb4lF=wPzjAu!9=GM%-lWp_ny6o3% zo$e+%)2iJsH$hMsehh@VwJ*6?Fr%15PN4@y#6?EVbRKOD1NsizB2F%Ff2x+Ln( zK&BU2*7aK8ycnQ>zUQ?B3hs9Pj@MJ75DJbnSl&`mn2NeToGihR2mB2%j-g~7?skez zJ)V!KC1oMZ-mmwJQ)zDoOqV6YQ^c#*?O-HS3kEHRT(hpL&+*&p%zWlL;(BQtj1%&k zYl<$Z+bYiac{!E#?{ix)=ot0K!gqVJu09AUl;@{wM#W{hxpO=k1^U zPyciKlmFx2v>!iw%7%N9oDU}L`|rMs&kmvI_~bM`5q#B{HBQcs+E+h+lTJwTC+ZE; zy}E}NmuQ$@nxXXtXyNI1%sG>FnV5`&dYrp$F+Zbyp6!m^M5gbQ4-Y0)a%`zE0g7;T;gE_ zHbEX|=NIkb#YG69rTDP16KHW{)I6ipI5LZZBNA-`sbBp3dPUM&wbQesc5!@~xOWLa z4v){GHov`@w;z6d-`>7^A1M*BgYe~vSk70?{s5#&?KIgYU=Zsui6-AMCfD`z1chCx z3HFZryYFegxj_$vk?xk`@7+Z*7#3G$xIWrla{avU#y8*yFnxZn*9$1kWjO7q)GCZL z75@kR(Z*3O#Qtms(a-W%7|6hT-v8YHjx;`h54qdl#AZ7dvAzdsmpUIKGsY)llif=V zPF8P)SP6^T9<-Cwqeuq(@7|Wwv#}u8@mi)$%Ar8lpXztlM<4%)*4^z==`P z*5Nrmoz`9xY{y`Uvk`|_el1{wn!}E$=Z4%!hFt7CAvW zNgf7sRyO1L;w~B$?d3NSUy@0s_b%dAMBEq2kDocDbu4rgqRRLm+{Bw7(}+6`(076z z5P7z>npE$HH!q){a6-8mRPmgXlc~b@V+|CdE-gy|Zu#YS5!`A+K>9P|QTIBA z&-2gY*WZt(MIF(&P+gjpY8y?=-~C&Er+xL)pSM?+FWSqC%l6Oz`M+%6zkQdrhtY7{ z-`vJ=QZG4ybE}JDq@4HsNQY<(+{q#$1l?Mj2x~l>=@) z_bg+a9(S!#$2XpN&*>fSk22kJ_&pA79Ayr?t_;WTJ}cr{ZSZ`w!PU2}qu$@`mojVf z$mg<08wN4=&1kc~;pb7#sB6@#ywT3_%9`Aa8eBcb^%jRi-axG2ni_12@ziYR*_em~w zae1Cd3wu_)dGoq&)4i8(c-~v+8bJf`_{1}OniSWY+q?E?w@OUR<{?OSBy&ls+_m(- z%WSgr;^Z`H;Hc_2;sKquY6M`vyC7?&yHWEE2l#Jt^?rL7!`)Mb#tVbrgm5#KXs?Ro5D zA@WacKl_PPxT$B30mx$lbF%|xCblD47aa1K;FQ~eCGB_=L;P5r^yhHMXVswZqItli z>?~Rca}CS=zc{LmeK8K^VO!EM6${4PJUbof{|<*6!i{)`+xG@EZX8OjCTt2*ImX0u z+Oi<~FdG<*`X-wc>F>T!U~2n=_6L9cueEo!@qYI{D)|HV4{SDe-#&hzdVh%h7u?fM z%%&C+ht@(iRClx!jx3nTq>$)#+s+C4u)3UGPow$ zmr$vrSsZ*n&wZDCm|oDwvKyDi07GG44hvn`$_(==)8AUgOi@$i2&w(d4a@?NKYt(E zl$cK_{WD}w@!b)c=|G?`f6t78tK%m5ukA>Q;$`G^^ufdOKUv8HKB`fol% z;~nb2>?S$1_*;5t_z3z8&QfA_xlBn{OT3>zh%BK0Q4Z13B6~ zo`v@8^v!dJ=i^kCGPS`m>Q<+7)a4y@dC$Gwe))TRw_8UF?Ek25x9y{iQ0e%+hdGdbT0Zy1{65UVa>e6&6$yz`7e}v+tw=9hJ4_oO zm`NPBID81rWG7<_d!#0Y*dw4)m(f2|+u1e&E~5-aK{iKuCvs1ypbd}q_S+X<{G=V7 z*szNRfz#PK_Ta1QoA&}s?KosdPslG~#etMbYjtE4ZgV3`yl ze&a&9SdJw{bogGpc`bs6G|$ugCOb%OR*QDSM}U;Sc`EIi5Z|Y5oVzSi5b+b&~50h`J|RA{|05QrxYM(o#9szPRx`*w14oGq3i zDq|7{SQ~PIC5UA@%>quI2IjleJEQ@KXuokgc-ot_)yDe4>^yYy%0cSi+c!4gn|6ys z9wshcam6T5vqNas*rT?n6zaFL{HFjTz zlrr)-R0Hw>2EmwrhV2+10)=%Uwr+0?Tgo6#4pMo5*#h}H`BJ- zEVJG=tH+o%Hm^2qdR)%$aEK@bV*}sX)%Ln?YtYWlYF;{VCKODMgvpm=j&^{51TL`B z$4;5!2<-1@5dw4LVZZKv>z41e2hQ>L_-4%CAjrPc23Lo+kjh89{PxWIg9t05+FQ8J zJLBG{*S+1-bI+`IT`Ie+`*va=I`L#(HB?eD96?Jqm1$1 zs9XKYb~S(F+ugD93>y=~%S18Fma80iBy?)+aaJDqDv>2bat? z2f1m7L`;y5LBlndR8-!|7Qh4bNw_hSUJ?T?SsnyNCA>sW?t{_3Qw2 z?-}#o{bu)je^*=eZefICf@XjC9D5ba~ywne+KwcHjKjS8rlwu*)k`)#85D=8~JO3;t*a#Jyi$+HCEj zY_W)hyq}N!1)dY6crX2U+O}Dbpy7b&goH(9WHYZYbv-NF9>=8~8n>0^d6lS^`N4f{ z(@PW8eNbr7{Ecx?&wR1W7T8fSM$=s?Q5uoE`&HJSsg>L0F}v0pXWAc5R1fh7;Y$*J zfi^Cww;v)w26+Ya?97MA97LEfpFk3Wl*S0VD%(Psw9YHUF2v;KBhet%oot zeO-WqXc&GMm=InaN5Ca=0v93F#h7>% zT8nC9F%~3BU)35OusN8EYHF>~(e|p(7a4$p<1k6JhG|u@$4Ho4nuV%g8`2JhM9z@3 zuElg%arvVCoxkgk5phkHs_(ybzqR zD_C{B=)S|egQv&fg zetT{%MjOU+<>;5wJ^hN%K;RDR_^X3)F2np|6KyVJAnhZ+#7%pZ9-2o>+eh^EZv!bd`~*; zs#25g@I7@sq?_`FpFmiTDrbCKNcy)qQsX^<9-#R9KX!l%h`|xy)P^nzY71s9_dDSF z8{iF~l*1yt^rZGt5NeoqF;}2vLA2GzsG(J)&&sfv<0GN3J%kKB=y@-Qt?Qdb()^wr zi)TMgB*@}undq6=k%j7Qx6Q_HH`h1q2e#d1pDVt=i4-Shz4SKzQTiEPYqA8rlZy73<)!z8-rUpkHTmi2+Xn5W}Zc$ zq=_-$T&}2yz*JfWcvc44#$2iI@qh??6CXnaBved<+ZsnS4y%lOewt$p(JSp#;c~J1 zWRscyG=o_iW0TL7^-{GfBDOSB2+H!9r2^aXvb4q)LR$SbXOSvALC|n);i0RoJ!+6> z_&J*$6PgI$HG|au;rDp{Y%bi^PWaz{iepo>;GM;`#LO z_$0LW>z7yKz4zZuzcNKHJmG|m22I=5<1V*xh=$mWl<-KFdXgS#s>CzdDJe1iHwA-g zUQHB@Jy$=2OF@Fdy@F@Y{Fkcs&d-?Z^y0pLizh7faxSZScXwIFsPS&>H@)ioJzet9 z_dUkd7u^&tojhFPujbwPbiJBkcfS2yzJ0Ie)9+wSnCW&%Cr?jdzM&Ux;p(G~oxeC; zFJUg_iKkB5-+6g=VM4YI(q)>RjB*f_gN1_pH5-WLD~U(>W52c?aASP@;opt- zzxIu+^Foft4Eom0Y#(~>{rASFpZqk08IT=){m$F(#Ho+69z1#wzYyd3vp6rY z{PB>(pPQR;czBQoo5dMa%hb!ZdQArz8Mt%ULh!P6 zcsTz42Oo}~eEiusIzAeYo;(>l54LkK80R_Af?b2zWV_oocr14)=fVDiaS=O<>L{Ji zz^@KpY6OBLb7odVk>r@@uly_(^nE)vQx-b%bi_w#kH}wy*)nt$&a(0&9X}jGUGjz z9ff0eZQ&|nLIcIdM!RfNxNGQ@y? zjK%i2;!^tJB6vz5fSZ<9XeQu!=MC?zr(>Gy)5B=ClindLCA6UR4!7#bG>p0~-@-^hGNw|E062i9?ta4d%4pxaGz-o@vV=Q1whL?P%*O19xgmvITT5 zHKh#{Il+l)16-Y?xwH=XoxL%&ebmfWo#ip#{dNMeJ`kpk{mr}a5kZu}F17pV$#`~t z7NL6o@ssi1TTjRT_&@yjjF(6J+T6q+h+ewp`ya@nl6PwIZk;W} z0Ql;9eE)|(%=qS`!BR9YhUhT?ir`|vgKgk4`%yZ^w{qE zingTd?%=1+ z0}&d?0Ife7@Y#E7;FyVLeZJP|FR$$VE$u{>gig=G2&B{TBzS^@4hK77go9`%rl&|o zr?ft_MdHb?J2*y^1dz$hR|N_TE&H%1Vt4-fzF=D37aM7-O{Fe_Y-o-(^lEbv$6n9f z+*lu*v@zp)JlNYBzx3^Ij<3J}?zlKT9!Cc+28UdSY)S|Wb5?3r&d<87oxI-J(GVEU zqsY;1Geq^o2oW%L4Lv#5cKBN9F+hW*v`y;E85)&0jRTE`_}2KT^udB4BR{EP9~=U>LLR5@2egcf75wVnFrES2Na!PfEok|CsJK0Bax$~xXm z5Uw)lvRpJzO|*0eVCrDUN3;i%QL>e&8A|nKwjlP5Iiv$~GorAanoANFBPb+n&g{eV zD_&_UfprSf(|9p?!0EXRVLS(SFi2x3{ZPiSJxh+?ix9YS?F`nIAN83&4MHN!3{jm_ zn)Ve_&hl5ZTfMA-h>o$dwH=Knnt>0nzkxrNX*mdLe2ze#`mTo_p-IlA09W+|Pq>%e z8S8v?5Ekv&@wLvVp)IB9>22i>#d`1Ux5obNcD4g6tF#(s)L;X$1q0t!m%}Pv*_#$g@0tlqoAfixd*>;iX2Rgz`6!=YZG474%p=9a=jQT*IMTbCiF(Rg-PNys z9-y)M(Kna8eRs*zclGN0x=zaQ-Exhzz6tdCfDV6Hj?=`E?xc?#|m&yEcCD>+k-q*;T38N^&7YP}^lNPN~G; ztLt_w=BzIbUn}Q25bou3OyN9hZjj^U!D-?KxXE+r7P*++c4kx%PhKiSQbi=FYE4^1 z6ha20r;L*!m~KY~p+-3|z9HpbUW}u|m*eR0Fw75wC!}y7!~xIV9?xofImGKHKlx<* z{f|BxTRRWO#uim{9bZgvI5;}a`2dJ%?b`>BT7M-l6yt&*<&cBtuoem?kkXN@&QHe@ z5Ojc9*_0eH#@6U$EUnlFG$QFx@%`>}-I+DW=S*u#jsyowBjSnV;wcYuH4=6C-NuwWXU%d75hXBiP-O=N4|_M)O?&?2w~a_`QdYx zt=PR>$2Bw_F%QdErH?McQ)7vJ0UL)B z6yZTRYAKC~Hh{5pVZtc^jK;&PpFIVKWPDD*xpTG@_TKli-!HCW__(&Y8!ZDn920;D z8Zpu=oW#5_IK;lR2_+n*&LIe;t-(Mr_`afK4j3!G*GckMo`eV*fz~w83XIZxnQgUd zI0C`)oA_qVt|BYdj|qudzi=rL;6Q{+$U0}9lStAaWWsPyGzpi*s5zE`hgF}#b@8E= zqTSkvDWfx(HO5a<5rGH(s8GhN_tJnRUGTLuhj6qAez!rQx{cE+D=nMjXt_k9?8guG zQimQ}sYjU1PMAjUIE>6W3asr*ogZc}ClpmT#To-eQ{>|;14~UUR7mT9y8WHSI5|EX zpMUvsY&zba@PWqg(SYW03V2h@gKe5Nrk!)#8B1saqxq;F?3~N-&;)-xy2%MoXRIa+>Tq-da+k(o)E$p9BEE=sd75!%du^)l$BlBbSx zcPGiSk-XFS)&fGu>oCN<4J?HPNx0CS29?TiH3A`Q>WZ3`P44iIZ(?Mh+gUzkRci=Fy$-DPe`0P-dV@R zXg0!_?pixxHU;SoTJ0oQWjSk%P1|}2rgt}EZ)-6g>^>Q%mL}HM%Gb!=UYr_Z|r`%`YN5ttk{7RerQE{zBxz`G=YbTh8R%af!X zM;N{B%c^TEuy-J7TE5Ws@cKLN44GNZUyloJ#W`gIsEH?wH6BD6M+%2&5V;tkS2iZ` zR@#CqJ0#)(A`?NkM21@Ks9AfEAc?`LmX^eyL8X?T3>q`;ixAM4=(UV7=jNiV*aIXU z9QKk!;7UWKA6LJ{4r$tYvh~TSh`sffywQS%`e@H2o->pCGgheM!6rYYqC{LOW$XCh~XTywQ;QxX;RdKF}m*NvO|_n%IAoVrb%#$;?>3NIJ&tQ9N+!gFMVr#^BeDv-}?1m8Nc^$e{cNz z|L`BimoH9BFygY9Po20~1}i5?D!H~TTh{&flaI#5`RRE7-FL?aAAD^%l+F&dqG3*$ zy&jhvX3C}Uq7fYz7x&-ks`4+V<(4ptHZ)xboL81Wz_;mPe^aA|yQlE`KAJcvJT;$; z*mnYhCwhlwv;a~4SAEy{bXrgKQ-=5*9>zH}Bb8=3xf3V!e+oF=HsR9A&%G)DsPF5y zbi!!om8}lax6t8t=;w++CXKQiCcdLfu7*i|to)%l(FT|F%80FpxNpY6OWQlv$2;%7 zJ-+s+p zv>!KXw>c!sc?NE6+gj{IJq-x<@H>r@I``&wEh^|QKKpWf`PGXUl|6a$?Hm|ni|Df# z&&T2MQH&)qJR}MV-UBg{`L(#E4K2t-wzmi_88rX{HaNKZcXyuO-3gxdSR?ES57S*) zql=TJvR&{UnMp@ZLa%P!@jA6T*)#dg&ThnrHfIV6Jy0?`Mv!M*d8&60nr?&q`noTt z3Z0a(zKTZ(k-ym`*ZkW^l-dt)?2p86Zr%KmX0r4mTY;HhoR%8TP^eHuBb=p^bz zQ7ew9@(SZC=4S?)?O^LpL!GXW5q4@|-Xzb@;t4L>?kfUtvSFgX%Uivt6`_wAsRf=&Do2YoP*IUA*`)Ysa^z*v|X2% z2=?u`yA-w_tyq4m!=+P8v0b>x7NcC+auG~B0q-%);HcDA)xcy<1_*YBP}tTywUZc# z-nJb>?0S^oJ1vX%7_v-8pI(f7Qs>_Ur;7l+f_IDuQ`ec`zxJrkEnz{t798^KcOA5b zgLc~>1O}HSk1RLTl9x6ne#Sx7S?wCE7JOF1fS}`~4$+Fp zmnQ4Vlp*D^2{AS!1*o4%+NSd{j>qNs@z{U#XngR_o8!rY-x%8)x8oN+_}chi{@4F) z92}jDqZ7x<-Hh$EDS&Np3BDc|=<3gGmXJ19wur%U+(dTVS3*#dvT zx9Ev?SKv5Lwd_2E8^^(sl_itaI{FsgGqnoZ(D_N*-#X7OM;=|rj_(`%l81L`(NX!V zYCwFG-|Dpri!P&|zV&;zMVLG~FHd2XM?BT7>(}2Fc1lQOy>*RKCWDYqeRdF8lW}kr z%kuTHx3@E{F4xA%(NPGW8Po387{{mQVF(Ok_)JF>HP}gq#|MYmHDL|ea)j9dq~Ye; zao=yf{bXF7GeX-RcYE6r5NPIhcDDy@#Pcsd&pY?oaRz0(Qr0+2y>jyMaPSe&IEYks zbntRKyWnPcF}8R1;texa=`Rn)Cm(+n-~JBbT4#lQJ;oPbd=+(c1P59T12aZ)CaA4u zHs}dYItUX%fS155a#jR_<+k>59~-z%=OQ{*C-k%5yTiLPbRQHOm~~6$DWTNiVQ2)8sBsGhh&`gNkMx~>Fr&QPxEnVcH{)jA zi3AKMM`oyYYG4=$pPdlLCnv$*#}6N6%kHxmFSC`7!>PsM;kb>hi6xAyXsFIkkH^CY zdl7if&It<)>}VmD173R(Q|<%)qh{5qBy86x)0VXrnnh`?9;kML1ek??amKlsG>`tyN_Kl8gK98W5)AGjgC|-slpWJB-=M>xttf@P>SH-_?fI1 zmyG}>OD$t258m6`i_~8**wdWKE8|9UEZN3}s*H6h5KFiyn+`%n_y)%B}JHI%-{q=8*%d?B|gTMZ8 z{KfaaKfX9{NZU=u27wICV|TRWU_mw{w&IPuaddPze)`!@$K}=e*xLN1XjsgU^$$Fc z;D;_v=8G=VT9@P?v@ZCUKAmGipTJH1+0Txf{+hJTH}`#cGtz1t-`uXwx5L!Y-M_`@ zxHGGy@s3fuI*+t(B|chKqIgXfn!$TYOF)rEdcW1X^YZLlc$d>*UB9N6(s%hCr|Xx* zs{-;Yr^7q1es=o)-SLEXU4)_Cq0@6qY{yI3H-6!pF^D-nI*elvf~M590%>`|VM7{ErNv;90geHFa&$5- zFVDvtZ#)<$Cx_#mcitO!Ya8R-I{3!=c>LtaI6gWmB0=t@0;5W!%Fh(ZwxpY}c6&We z4qlAYv(p%}>9j0|y!CeW>>E`MYx(4-pT!96`kICE&R{&rp!4A1D5~*zJcA_jv^;et zP|f*nr1={}+n@x&*gg~!2*I8Rm6`8^u#V8V=_uqEk(dHRcLD|%x3i=cG<;tB67 zogBtkA<1(^g3MN_9=sEYB1}xuEIt8HK3xazL6m8T2qF4=4gF znT(rH1_X}r;l)MP_rXH`)bIvD@=U#uB>oi4#A%c6#x-KPUaCeKspf~N5$2ScnK-rc zLAbIqBW(K`vl@pBS+*iXEUb}RrZ8*28F#!r+6A}R%E_w71}7CKIPv_+k=VNJer$8x zTX8H!Qx$@kwceDRzPg+$=IiS^EJ=OzAz>VjwD7R8UYaH|RtRn^u~!g>5Y7Gj^>o}r zn-C6S`3a+*#*Lmx;{|46DRIJswug)L(v;MU)oeI3UYf0F9pqCm%{+P1bLbWA9s&{p zqF|~ZQNm7(9;X|^FV{Jfni(Xt{-~eJr+%-H`S(6>71Mm1OBFL(NUH4BL7r1+$kM$Od~ zEp;i|qqK2tjI)cg@x>QkH(f!Au7vifcsc~7@izI7ULeRsP&(Vx|{ey=iSv`M>-`y7P@(_3R`Fj4o zEuOylW-Llcm6-J<32_p34LwKrXdy0YKmLQg{qgqOZ;kEE&7976d0D4AB4CWY`07>= zV;Mk;?L*!<#wjUIzU&3g&#%UZfA@Fe@skJ9R%~tW#wGN#XV1o)Z@v|Q96a4X5aJwFZ!xskj|6tt;~G)kETR&_ zxO+xW@T>OVPKE4~!-c~XbBQdHwlju9$lM^NKY{f6`Z5CP?$+jb^k6q96JB4QXEyP0 ze=puf>r}*fisvoE%B{g68jZyII)kawrXa2@Ab=%dDa$T&RXmtpm%3Ygm*pD-6uhW) zO>(ZTkH_U@**G}bU3k0;MdgcF6*sa&M0s~tXUQAe2swdPnMrR1pMzyFr4Nz@Rt}d7 zQIBx7gkNTxVbU0HF?HIgyievWKX>XswLf^(?`Fy6o!gWc<@_eKWRTJ6l_WPo6*iv%eTW`skB!e07;J zw)Y-}9-g0VEic0Gj2SNy39F07_;#`SS7OaeI9^P7aU9%fsVgiQw&b-_D6@ zrNC2ah(!{^Lhulkwug%kk+K&&K}#X3mj^G+VnnG0Hk)VVX6+mYQzHi)YUx z1iba;@nExg@ccziZ?j$p0l)g})3Lj^9n0QqP&5l=sCID{qfHHY@ZjNi>#euOn{U09 zbv=96Z71bQ^|Q~Pk7v&hv%`Yj!^@XPH_g8!6CEUoNHkTu5@bK zoLJ>wjC%5xI?ukVuAL2-SS8Ho=-`5DLh5SV=->UUK5x7!jnvN?4;6pO5GwoX&%CQj z1b|{%mbpr5sxv&I-EX^r;6ZIu?t0vhh3ptJ?in?rDb*i2!@-UV%Q@>sTtPR#Eddcu zrt#wX%@Rm8cB@W7fb@4U3`>~J&ujG|9xJka{QTlHwlst}cuiP~z}D;av*Jqfy-W0L zEklHb)Tu)x0_(f+_{pO(xV^f_WXdVA>yv&uhlpQGF5Lh5@BDV?{mI$sIG}}o_B`W( zA@M1Dnv;vc!4$hV^>Asv$=TcQyq%+|x%pqe+K7vPG(?}%0%Lf13wokf&AbTO@V{`Q zU?tzidGD*jgLtdoe3#d1SoLoSTAi14;`P<>yB?iS>M_gje3}Pz+1k*|yEQ`-9CJcc zf~NH1wSdxP!4u!)*GyRX{d+aOG`-u8g+mJu-R8?n4zp?!wDB9?{inZ6<$rN;9<|fk@4Pi~3g%iJ%CrCQL6#8ScB&WzyPr;mV*;U+JURKV7R0h!0L!=r2kWsJ!}ovUjC!~0+RV7&X@`{V6* z-yM&hJRN)cPT5=^pM3h&`0Ky<(fFf3`p@IT4}UU#^3iAGi_f2pmj~sZm=!xJwEtjl z5S})-w*qutBWX{}_z+-@QF_}Kpoaj5GvP0_6p`7Z84zoKVN{wq9Ex;pa44*dJuwQ7 zT}Z3eS_vsSxCI9cM(20O6X3kN5IS}v;$B|Z?sJy>Z|}sPCZ4F&WCoTLs6kn7E6@23 zmsgDQs*cw)4P=q0oA!duN+YpnUyW3L7gE+44@J^SD3HE2Ao`cBiW#jfY2W$v+eOBOc`T_ zqc@J&j)AeQfc~jV4QLD;T(twfd16)#-#BTpj1t_c=IL(25`tjgK0z^64^zY-ECZeo zHWyo4mSswl!si8zpmq8f>;V-OyM~n6V`iRa^KNxZT>Tk9k!T9O0ds6xZnKo=#W+0yO-j!R>C1}r0NPB@0eMu@%5GAiP0ITgH(Pui~FfHuYV2$%iT7&SJH zX-!mSnBRnL`WT8tfKxtCw!5`^<<{<=MUK6GwEr+?nmF~6@D`sawm$Ccj)!}DV{dyW zJAo{NY}tupTd=K=j4bDG+bc~xwszUbKvWtBb`y*HTN}*&X&da)5yzO9PMS=7P~vDT zZpYj2zBRt_3t!I`_>VvOas1ox%kpHOQ?>2!V0Ujk*xAdH@6F}yc)0&?oL-!bmxqV( zeIn0CPaf9+hu7C}@y}B$*!B(9=o?S2pMU;ECMj@-&yffw?9H;vr?x0IZ3^9-+6%NU z!u-AFpnSSurbRm^Egbw8*$zqdUp7|K2~#G6{bGcK7``CNlO)_RKG9e2;=)OFk^Y{Z zPi+%?RIc)ubyzNozzerHO;0PY8f?ORTeh_{0q6$JgS3PMw8DF}sWi@*yD*pZ-rdrw zcc=FoAL+DygZIX|l?8e7WdR2Gm8IIv7{VHL(t)A7+FwL?0YDsKxD{rXh2?-fPAT^G z#=-OFJuim*wch_Rqb&47rPwlQ?X$m;LbYBt~NU`<#mGkF7n%CO2W2TYLL8us1kC*{S`? z5B4L_FaWw88{@0zhvUV|kH=3x{bKz6-~V`g{K;qI_~bmN7_M(@jqP2w7+Yg^w~m=L zt99Ve<;^?+jylGyd#AkeAzFal^1c~bh`hc+vF7YxIlc6u0NY{PJGE7&I&-?ejdgo5 zTTJTS?qRCXy7N5=2`=xf8Lidp%o-%O+17PmW@5hj2mIWX#|RPa_y}q8&E zzZ3Y{pF-5cuC;-Pf`!BhrDj)ULKTNHw)#3>gnh-7p4Ee}fZ4#W?6Eh&~@xHWO}+cV^u}FsbOGdZ_hWMroExsJpYZ3_+M$ z66w?bQ*a?nZZmMZTcrDMZVb-#akE~&6rxecKrUe*1229GsIv)Zm}wCsZO@L9xuq1^ za1p_a?A#6fKNZls`?Zo<3%!f)c7Q~IWZSY z-;h0L^3+4Iv@~f8!`2AQ1ZP?t{#feN%`Ptmul(uqR)SuAjj+26N}J|S?|~`&4SWiZ zeXe|G&l1j(2DAd{z%ApIT?v`7mkssr{Za;aRJ%(+F9F~7R)P?oY#fLan5SHMRo@5` zZ>l~5qw3cJrZJV~QR=WEunltx0hqsUww5yxW{?=CP;7oI$!2C*2JG4%dy@bmB6V6@ z!cpOf03>NrpTHx1s_r6Ah*XS%mI^p4hInB-6C{7(gZIaO```SF@zqyfjX(UOKN+Xz z*W-qe%;h=oLx>oT!zc9cZk(QZ@u)3mUBvt(koAU}_@p*s5;{2-@p+(_2r!(RVlDK%Gi} zSqcWq>ozq^J(umSvW3a7Z@0;sxT5JtpX=Hmn5)D`$tJD zW?3T)ya02awdO&UwXqoc4;}_EfN^?pIgU=x#^K57*mv*q*Kj*__jaa-t(~!HA=6&= zle1yjgo7s203IN}`s(@k^s_IrgW`*?o{xj`>l`y~zuL~mW&{JX3RD5o$7|)3#sJlo zj*9df5XE6oRFx~=0k(;ePU#No^vP(d8Ff^D_v}t=B#9TiS*|cwBb%rA5QmWAVn-p& z$YI#EwI#edbG4j)CmcY+Zl83%`JFI`Me{HTvKed2nRW^4;OaE}?67=X`IBX@c;=|y^DUnrob%DGQ)Uu5c;?{oX9Iwql$N_-&vx|az4d!Bs@<3L= zCr4`QC)V=+TZVqC|+)q zSHZbLkhqLL*KCQHxB&L*i-~Ml%VMApytg%b#!yml*pPHL(XPPNN$!(x2qKe4%sjJP z=+JBbRbI(~rFHNQn`NK=k-wtCIK!3idoXCe!i0QC`Yab9!e(LBR|sxjoo~gjI=ueg zahK29J+b^k+UC8)mtLd%wT+t#9Rw7&GRsgB@4C8;efrBs|Ci-E)g4 zKDZDn*rN2z+P764Q~S=>bMtnDl!=aZS-z>K@6!4P{@@+@I%yvGh}&g{jzr^7 z!ow$R8h_jPtXLT06-M(B61n?Jmc+zx_|5#&U!< zTL=JmL!`aE2ib<{Xk!f^NbK&djV(?v;@R^Ty9depK$d2vaaI~!-~X93)!2M@;f z=1vSN3ABU_LWIMq4jjy~yAvl)XBV~Y#W)H8iR}>@F5=SHu89{f529(nkZj@G-?6i! zW=JgN>p&L>~x+X0nzFd<00ln3Ch%+w)c59$!wpG_>K1$Y6clEa{O-seyGxy7xwJsLJdatXIJ0~f&WE`vZjR>IzQU*G= z=F?yZV}%?jSHekoYP7{S%9F&WZqE{z zjeFBZB%C2yo!fCofVtN^ED313zJ)RZ16amg^^_VWjs>HmRlt;sfChgi_aSi524&1? zSU6}wIj~w87sUt*f9t&nPUBCddi^hMt+3_z@hd|++dXsOV+QLkzjfxW^AL*l!8CMr$EuR8jjbhFBE3cYa!b`vI*e+jB; zFHPmC9>!w90+Y1cM?PIvl~?ucapb$ZFZs)-AR{wnOeT^@>eQ2jqAAjV7l74ct#+^7 z-Hq+VB9pX(1{moxFxHf_1QEdD{zpfzYXV8Sjigj)?uZC3A9n&Mkugb}~dxMp^qou2R^ z5BWC?s}E~wLU_S)sg+Qc^qoidfq1U2i|_wspHx1+fkCJ3I&_}CDI46MY&Ne#p)neC=v1 zG@>hIeQxvN!#IYDTKM*My!W*a=Dy$BQsyY`FTeaUk|v+$moa)N6$|xyz&kD35jsTWbh7g(?sD|+*~QV=**uHZqO6=D{rb4J_olTHzy&WBhTeMNLorwqy!#L~HL@a;>dcDNZnRJe#w{gNIVQSQrGAw&tgv+sJk zCXGQHV>h`Jv+i^)IQXr+?%ysyzaih8jYGernTSWo5;tv~dB|(^l5dBloa*_6ndyaL zS)yRgzIKvhrJub#7>7qEV}C2t?`(Ti7G#CowLPw80PJW?&5vWedNoc@@8VORFuAc& z4EriVEJ9&G6}(O55nr<@l!;2V2y8!#a2DZRjP1LvadmB}j)N*ESIVz6CT3#0JKNbJ zY4%S`mw`2zg?8HoR7RS`a0m`=JBz4qw>Ak5wH^(|>UpzPLQgZY5C9BqV+`kmHEmSm zg%cs=&Qt51+wGJyurw7XU%Y=J#LGH@b*p!SCsRp^j>Rm)XyvTQ;s@5ag4R7@WVwFFYk!T6IVeb5G=_ckKN^_(FZYoVAECQ~SC zAtAtQn6=O_pT6zy?2O9`c4v2Edt))qZ!coM^Ty*x5g`8b&;BAlP_A#*#`*QlIKMmz zj4y7lGO4_UpL6$!I-_^bolrbRp2qbzzVVIm&2N4)+6HkjFY(ZF;~Cs7o1?Y9gC!=n zyIE&BfI;1JVzi>|Z5pLKeN*WRiF|V_Pk8m+QYe$B@gdwLu6p(Dw{QJDk!Cz;g?AZ# z_w{=G&cn0o(eKJq2l-SRD_^|eb$%d?IO593Q~GY7@`bxr>m!~r`dfcrrY`{s7*Yol zsrU&Qv3m$T&2n#-4`yR53;_Ge_u^2gJWT3L4xg;Yy?l8XWXbZx*5=rI_;|b%k!FaUGz=?5Soh^W>SYn~t)VHMGtDDQQ z5gPzZmFijt^geqtltMBV&#vxx@2ef+9m*j-v8H~l)9%wv#59<7vb&LBapwTBlc+*h z5un;xNTSoZ7tS@2-FMd|kD5D}Y*XB&#-S1vB^Q4cX*>Tx+J}&n;ayMZS6w^4e7fCT z@1OS!w~8Rs!U${j&D8GX{Cqrr@p8O8IvU$g9^S8+FF0_z=1ZTmqua6Oc=b8^15yIq z)g`-?t8ulsifd?u#g&~gmK{Ps=k69N{z%f8aV%HE8M781hDu{qY2aE0MhIFN+ZAjI zq=*>&fhU$*A`q}n4y{3f{V!uY>&4CqAY@$4b@FvnwP6i+E){EIG#tgaEIBZiBQ-Gi zykV5sD#u{g6hLDmQ$j9g9W4cwb(liUgux>!?+O11#@V4#>+R%?iS{6uHT23LDU&w1 z5CT-NBqPP>4nZ~UfNo-&sZkeqQ{gw=Zu$;s%o@m}L#d9cR+QnNDK2Ct^ZqQ+Yh z($%q%iAhN&fl}j~{0RmTWMXGfLJ6%7+b+)cFi~-8a#ReV8HlH}zE^nw1BWTKN-{8B zgU{)|J`%k&UdD&G-S+C6((uqY+^}o7bP(Z#@$~WIadvStu1_zl-6tUVDDj0LwoY%NhCm-x)BTK)A_e_h2`}`ubLm1&+#eGQ0++?Lq{X_3gVXQIz_L_sF%e z;K(OOghQI{4D+udUXxEp-rn6c(?jISqF4U>Ghphx>fPL}<=_{)AJ|7=!~mjfWo|FF zr#7TI4Pawf2g#;ydLs`*1x{(rtd-;a@@nZDT&F45Mg9|qFyiv=UcFM*4AaRSufyeE zbuDD{9YVRq2b))}SP?=oW1=0rrl;rmM6eOud9^A26QucSH-vU+^ERU`5!aq9@4c#q7?yHPI<= zq?|<&4%F8!FL{(Eq;^($mq*irzB+rDUwvy*D;`!?}cNZH+PbUG8o8Ps=f*nLWjyvNudMypc^J@#heKkc2<1w z!N=oQfAv?#cfRwT?39a*)6~wId}<$|qUjDkl-jQ_UU2P8JhaTSZ{OtO0w*^{?2?~& z{eC%5+7u>Vzt87ER(`u%z>ufA%jtZ?cXe6n(>zodyy*Oe``+|731?bmt)>G9_3k{B zEiae2^7OmIyKdskM_W9_b@}ewYWcq5A=Q?`^%fq2_pOPTJY<3{_$1H88*jXsHK~UW zAEmMwD%a76#}4PY9z2mjy}NN9z#gBxtj13XYj1x)NU2NA(2h^f;(&=eQZw2|kKd?S zE>zW=wng zd*kH%c_i8zm}S{pK%W3b2&W(bn1H(ms1qTD0X)xxr3x(M6UJ!L_D7xa$~AvCg89~+ z=w1AjCGUw4m`mrAyypOjMe=od^lXGd7^vB4OdL#A#B@opmC3_M`-rcYJm@??$(zX5P=70KSd;COUAw+hG_-wBI>iR(!XW&Max8Uu(rLOylBJt zZoK5#Gi0VEdM~SPwa0@P!eSooYH?9~^Mzc}IxdtU6s2E{6tD3Uc^J#SPxn?4Thd02 zm>P!&-^sUNPz-(r7Qr{a3rE-x5ggzJMn|g^gD_Y*!wCxTIpZlyKn07t8?(UWxBIrK z&%A}D^x(kM;7t0FTxieIcO^uCPU9;<7V)~dHMzkEXqrlW4|Zwx><7XIZ3N~eom+k3 za6!DDf!`Dgw6A{G2n53$no+h8;G}>aOA~H~2M6Pwx8D;Qhf=kq%=YJIIJ)5K(q!;t z?Ch|NR7dSb$G!Fz{Ghh~7S@1e!>w=my2 zKH4Z>*J?Q(rrup{=M#E5^XPb8c4*Z~{_q^z0%If1;YDWw1B&{CqeC(7xR-zv4&XFh+6lrss&^^NaiSUnl-ab8>bzPEXGU zkB=9KzIulE6``foaBBj=p_-us<2;ucSCGAa+kagr!VyL?YlB2{3yr<3-EkT$H=XO2 zF+-{l@fB5*_%87q5lTf~T98I!9TD$zGi`TFcT^iic4w(uW}qwis}Te);~_4Z3#pUW z7~?4Ch%mZ~*i;>lkjFq(|I{E+Mmls#qv}l%T%EDBG}`gB@%%O4<(-cfNONUD zT=iTXjA5i<`o(xGQ<;4Sk&!EHxi}whK7BH7ug`Mo<1c*UgYosRe-L8qjE3urljzfH zS*Nzqc`ssGTd<0`*ETMB_f?FzW)udB?xl?|qr=SgVvb9n(th`=Wi3J*6?L2>#g?Q5 zvOECWtdgxZSc!c=d{29v+ib!H>~Js zvI_MxBY~?*Onza;#+8s#nb+DsMn8$y6qbs$7Xge=_zH2?e@)=8bFPRivm9w$%vl0H zn-!huqrp3W8w3I~crdA(qqCZonQ=EB(Ik}z(6tDLTbm_pS|*D7eS%O6^%3mKCL&vg z!BZ<~h%8glveJlx`NpCS`@)R)Vc6NJExyw*{P_4Zs&*43TCvBEAEtlctbW26X%Ywq zmMb1U+>5YLGeC@a5n3P~ZK-F3(+H?`SXFv?*g0matjfYGahsvQJLA*0bZO+DVxamw z{dzaX{`Ovsw$TB2t=_x)`{S*5-W@;w_>=Jm|M3sA#rpZ-Q8deTo17CCZf>&8{nUYk zX;-bAHv@$;^21!=nz3gI;>C*>v6(ZTo<4nJy#4muiP!WBeR=%&QQ9Lu;lTyJ8xQ3t zy)@oC|E9|Y>ncBqCoOMUC>>fT4|$>;etQaYHyxBl{_+;qG{jSw`e~_+RtvL@PvXWVY#L_6J9U!J!cxP=28LA~p)i^Hjd<95%fpzPa3N7wKwJYh z1zd7JP0h1Zu@k_fWx&*DXUo@d!&fZLeK$xO!9$kP=E4@g0|cn4(n&t!(^p0SGa8Enna2E{(>2A&@j8%_R3Yt=phMJ2Az?6?b0u6#Vx*O}!xb+FWS@Pz@cnz57F*vdlwvB1Dv+ku8-|eGgy2DjFp=9xAKfQ-3}d+F-ca z=X=s5ZaH9rMKoVIm%%ue7D6M^*`2Zot@IlR;Q$Z)}W< z%d>HCbTCfNPRbtx=Y8?!Q(9Mkau!$WUM|e5FDE?*tJ^V7j!!e;Fqw4w{qaYi zy|0$#cjpam#$Ts{DND`aa%2-`Yk9mUDH%w?*@YR$74Jjgz$4cG=NAsTDrY>_z|Stu zqbVRQsSIMH0f1yC;D}6?Cq_H?7iENSEA} zjS7_fo&(IYyjITinH@RdlG>#uGKgIRzv5HN76Yr9=ybJQnHS(87iJuWP{_A)#+AWVD%~(X!WZJDud@_ab;6*^d*>K8Q{bQ#BdEKp zziJC9%@qwzsiPr5^-ICN9Bt8}gh_4~F>txOP6B=REtq((XZ2DTc0^#aP$E&Yo=T@4 z1g%K%(}=SAacUr_N2dm7vZ3T5PWqzN1XbM6{EP8{>3#cVEcMK{XglVzRB*4Dc+esY zy)*!WGpd?$7C>N=6QO4mP6mvCEBOk>v4T{HeS4ZIgU?` zqg~ZTUPg@?UI`c0P8DZ@e=gWvzIlbTOAAF!&or z3$9Bog0L>5%kebPUM))4m$xJkO@z^1YniFonx^mA{H7tn>HmyYua` zx?S=t!9m-dol#p|fve&cf_Ix5E}?sK(p7P9OY@-qv;iX8I%pk<*Dyw7nCj(Kc?ZPI zDl<;T>Wm4>VXD2-EG&tmiiF;0UAMwh#?&|%&{30QR#X+P%J*OnOlQYv*{k6YvjCD@ zD)JWCP9?R1{Hw_2`|I`5er5C}j$hEZ z%K?*q_w09R8o@e`q)nx2mfQ>mvEbX``r>*#e{nbt4v)uMPv6LCm3KGAs65>jpspYd&Crn`y z{7LwuY?*Zg?*i|%ZwS8kNa#GPKhsy*o*9M4=(`o*85=Q{;+QKvo^8KtcQuQQ)-3?{ zt;Xu>@L$R8=e}xZm}79K2xZzn$CNxXM~;tz$=GA`SMAETY_-HhODKr2*JCoLx7Q3F zzWavZR-7{ABOt&LC#!}T-=lnaRcxAODBKT+8Hdn;WW>!l?M*cSKtqx`D}9r4H@FKf zYk5lyWi(j%(jKKAS$c5DQK`h2W2$hq>Y%@B*)D?6{nFG@fC$b7PfJjWfCQc~{46RL z0WD)n<5KMiQWKFv?^JkWlc0P(I56AU-yP2nPsYbT{WvFVI(mI`XKUO!nHG((`(t}+ zY}~Dn3&xevx|lQ?Z^Z~bTQi&Y$^4sUB;wuL`1s?G(@u5}ZrTPHril+NVFQLmhqYT@ z`}R70O5&A2809L{)z>cRb6fk@f-evgi-E+0>8DDcibshUDUgzIcQ3rRI-{D=( zYJ6d?*YopR-kyEqPu^Ga@A|)^=&Q7N~KvyiTMuy;2u!vZ{J&ZkluGVwz#~o z6j93&h#un?>tAOVY!%8{*7_Dfg7KZk1HWe);OvG86aqxT=eJa6Y92yR=d7==*k9PJ z@jW8_M&VYUa(Vso-DOz;!6{%SREJIjAzgr2n`| zFTVlL)g2_P5dw3@NC7-*;T2WXYCfy)JwW8w`O`qGmeJo*)~r)3s%KpwLNUY={UK7P zA))s->HG2>)C28VwsbD}iQDn}>D%hNJR*xtrq{Wr{mP0kvL4?Fn~-i}#TJ&VZlsxX&+{&InC_fH@ply3IN2+gcZ^jL}T4V-irwts^ zTa&4z%owd!`!BL)uMRXDRJf%@0gLE?;ANUsj7&4tfw1ZlPd&7UaA8L6zSm65Wh-%9 z>ftWDuUTU9n_A6+XZKU#T+zUk7MMjdGzEw($5m+cRf?H4#vmMxwY?dk;r#M^Y;JFk z{fGPG!;e21Kl<^H#?k3<1c=MqT8g}|HJTt`x%!4y(Q?k*_C9Hb`qR`wIsJkLUtU~f z+;ltb$_s4PZ{t|1*ZS?oaJCY>XYVCk8u{p}v~n6_u1@Uop~uS#?dtUMyYJ)s{CFm= z-4b0d`FIZ=O##L4*Y7T`Z8GGo3^Y_)zxx*E-BX;^yn5NC(|Wo)t+=jE*SOH%SL4gS z%kTPoiqn_(&O_e)y~cJ*O8vain$cbt&g)~!14lSiUo32^%&aJCa*l1dou)G9`nisj zhG5kD1ON=OyxnQk-MD5jleNTZAdJzlt}u0O8W15fxt}E8kb2-SpLG z#cLLrJi-m-Q8O+B9^s4iv(7ZI4I~|c2p9mvISJKa056~JXirzS$G5%#y~-?xTWu`C zO1P_^`SEl9bQwNpXT*68IQey1owQ(7jIQgK3X)U~=U z7!Wpc5APIHC^6xhvbsJk3?PJA%Y(6nQ}C9AQ~lM;N|pf#H?nkqK@q`*In{UwV}z+< z$O!+=dTpPQm$Y13GmyKlt9JOc;_j8lR9Bc{2J%v~69!*hmpX=PhZ!N%il~1jP^f!x z1Or`PX+q(*xNx(CPR56R%b)fn>-;K~*=w!$rw?y!Qw4i=4vdhi8i9(ea#n_zG(tk* zL07nl3%A`XLCcTxtzb%Pz)f_CD!MIoWvED7U@I!MxQW0lC#}zR?+ohXhIdHYONFT- zJdG-S68x1Jy2{?CiEzQ7aN1c!!>EnmSYt#XXob23zsB0QxVXyl6_tG;utM0?3@+4) zFW3kv`VoO^&{|fVF}|hnP)2ZJtZ`FZ#(h2BngRG;Otb1!bt=GmmuJ$n-;$6Wy-~uf z#!FvyDIupQ+U%UHxnD=?0PrS@d%OG5K7aW4ACA8#JRBd6!;{MxwO>2y$2NKgD#bSL zdTgz4M|jZBaMI-fkw9+0-K52Bw-}>5eu4-e5szs?hVQy$p1)**$h{PA6$(sugJv&-l!qi$dgo2LH!Z)g|;K-cqU2!)Y zWL?%?8EXG(q&0t3Qf}J9JdbsuU(L@m_tV0{h&is zS$Dg@F)*DOt>&*DO+?ZLOBZu_Nj%IWG-VC~SqN9AnVWhi-mG)l#lm+Ephi$_OuCuA z>m!fOQ_rnlm=^Ws)%oeT*|avj7{|v~KsRWO)wCTu!w z2@eW})7n#RoE?5;Z1^4mJ`E@((&*Jb_q*dX zU0;p6`rUY!zq{+w`E{QC+f$wOQ-7m*kQOuVGP-Qx;;MtIzf0@x_KVlwgmpQ>{g&Q$ zdDY~o1e8wK_3;!>-rhTY$LnX;T{-e|N!MxnxA;|dJ-yQ+ZETbW(8bB=SpU4yZiNNVB_Yun5SYaQG7u5{*8zD;B(qE`(NN4gBo z4B(mL>fk6$%Dk+;F4Gk0DdL*ELSSlr5;KWPZ>IEn!Ld&TCaWrYmbn7d2D~piB}haC zIXidFE|OT{W6Hc0*0IhkwSV5FmT`YQ?JP*-5Lj6pTv=P}`gr!c{IpFS)^BSzRY<4o zQWwg@wY$qjcL{U%^^o?yKWZB&>MKueqpEV<%)y0^w#aE>J2YaxoJl~WdGB^_LKEb?M|W87p7 z-FCE#al|jm+4<~07(O}MEH})pxJ79NfDOKc)u(#Rd#b-u)!AAz%ThWNhY#p`mqNBk z7(8X^SzS==^bWVystqY66KLCL1Bp5i(plRX1D;iv7y*V!cHJbLejOT}I&Orb8846S zCDkYb7y)-?9ve+(ZNyl$v<+d>vw!APr8FjKL*<=*kVn>3N@%9pv>%0*F_ReaVIcHh zA30nvfQ_$_+Rj_JU!XK0l0&pKNn5!Px)H&4L}obkk`)?go2nfXJNr9fz&CuA%rP2a zgfM$oS`p=;33*1>HN%0)@yF|nFmPi}9_w*zXItpzJm5Xkt_cJWW3`x!vBT&*S5OWu z=8C+=e>5qxeF1+B;TogpxAJQGHr6(`a$d?OpM5!g_;)`Vho@)p$FgyKJ~r=aoZ70& zkyMPFuWyUa5&kAqr7bWyYt4hD?5pqDrKg7H5 zzL$Otm;&445d?M)3<*9>_wEt5K$`aHQwGUldT5Y;p;_`V^DjDG@T7Gnd=^}nFou+M z7tPhyrSJd`GA`zExP~EG0!Pqb8kfp*HJ=jV#p}sgaC_3=(DfA|#W!u}@TUF3`|{0i zPv1KZoO1c?yE=LA%lFl=PD?{z$<>)ekhBD6yHv{i>7DbHo;-T`yO(BO06o>-m-g|p z48O7Mq}DmI)-kvCWS_Lg#X8tpc1hA1*AWTQP3f!%3e(oWa)-PAO<((}7Gl)Ey%(!9 zx^;GgD09#mEyOhY?j3xCa4?Xxc8Zzm&|0g_5(QvVfswN2mb{!u7zSK`Oh?SlxUUIy zd}a_gnWgOS?Zstx8HaKpRK}v+IVu`Njigw!+DM91m6=^8Q;KXvAdw3vxIrYB4s8ju zC0g;LDw@*0a04y7MFMyZaqKI$qooGv=7O4iv)~dtkQyA>%4j>|oM{KfQ(_Hb%^3;e zZlK3bAhV)kh_oVzs~OU+_0shc1ZkzXG1k9#&K=mG_C3#ueHRyJV{3ge-hA|U96Uc5 z*B7_rpa0H38{_sO`8Wce0U76F+nbB=aBp{9df!@%t*M^9S63S-9PAhj=`1sw#aNql z>@lT|V5S}5Wv7qmSra#);GI)1b1GsPlrrkYn;6n=Z*6DmT6QYjSm9sKk;;y2#`yKM zL9lMk-Ilv}!!9X3Gts-daeRCfMyA}@Js<*v#;wh+39EYp1yZ<0A)^#pH!%{AqVwaNBgo7(!LWH@x9oM$A+yB2={mTH_ z$+`M7hPRtrV=u=6>_%YNyjvd+ws*(=&R+a-V9q<+J7asZ4s_bx<|M7Lz=Q#9aD4Y- ztnu@(7~=;0-CWOji>g0TbP2l;A3Yef2N)H*og9tLjg9g0#mn*DyYHoq=%99e|9jsb&%Sy#{^h^?m*bni z@XZJ#92c61J$&#m?I*C)_%(CPq?Wb=-c9=wxEb1(LlE&ecz-uGHrK~uYmq)gD>2DR z-x`h<0P1i^-;9B#%ihrw$BpAP=m7Z6VVU>(ZTz21reEiIh#SE(JZjqB#2~SlI$T9_ zL)+&>Qn>`GULx_$EiZAK;rlJTc?QxUzrMu7SKQ+Aqakm+MHpJ?UHioCdJ=WZO)dPB z-fp7pu{b_EO-2ed^Ob2A7)H`~8;a~lv2qCQ4UzQ3h$7j{XPEJQ>`8yR6|X$y*@e9F zVg6W=x_`!JQfO+`9Anlcn~J7{MdAm-jVXnsuF*c!thUwVtJ(K}^(=x3fYqS>CO&v| zTS>xxyLe8#zA|$uheeyVH{F(sXtf+=C;dwOSHJh*&?oLL%OJ@pxtGXOYQpX%V{4RC z^8p4S@{l5gzx#5DTwQLLksK!sUw`j7BvC5z43=4i%w=ktpSA1^;%jc2aWKfa7^i2~ z<0l_|I==q?PL{#$PS3~Y+Fb@T%(}d|3<2s%mF(11I|vQQ%2qHAe5PNAh>%nL-Ag{z zrXr+-Gw!4jw-(;wQ7{H>mTIh5V`i4NYGzzBhuRyST}4wcGn>E+Y&gbn%LtAe;_81I z3zftusCmUlgtRTf9bCG(9S`<)Q)c;#(5@P|gkb%PnM5cR^p3fyL;gOc^6&?fvGv?GB4DPiVa<74_inY9f_m$=$c8M7a4iPhtz z@Yz~yWt%6Dw{X^-y5(8IhL$ZjRwIN(9Rv7vsGB@C))!?z6Po5zX<Wt&eZAHj;qdNI5To_@Z<0x0Y;(&Fh5iZT@T{tFw<=5k1 zoEj^Ou{b_HP9`C&v+`ZIOf}B6T7mn*CJ@5NentgW^GPQEh(D{0S{+=gPXG|AtiJM| z0ao!1$hr!s9nW($-D-Hhmn61qevA3feDJIMecye<2&VU3w9S3OH5UW3fQ121@;EuOIh!2DD7Qa56#5!7mJuLsci zRrx+Kuna!y!?X~g`_sks-R)L(XVh|sA&1}xtmFFXc3h6DaTAA4A!BjRtE`)wIfDrr z6ZEpEJ+^n8`e~adO(4N!!ZE^Rt;eTNW~W6E2weoDd8%s!wwl?1NB5-}MTCFM;QsPX zix;)xy)b#*Cs5j%r=J;%N@gpN&uTG0c$B;z;Xn<$k2;F}tGoK6dc5mgUM6W6 zF<1RUQy~v`^=U2Rd5^GgdwsvNL0(|(_RSdD+1^d%8mA*X3JG3}5NfTeEtX~ZA0aR_ zg|>>er`F4*RS&qq?XuhWSmI>O`tE4~4aPhoIiQ?GUmoIQjHfOI%Oz}@o~fD6?*8-3 zzgiZNCn21Ms07&MHgtj-99`eo8v73(jq}Uv@xAZ=aQwS}{|DnQ|MIWK%Y);w*tR57 zGy%6xle4ppKVAM@jW->?pB>(PC|tg7-XQy3l*X#L;vwF*4+HS{!6epkoEJ9yhVE^_Mw=Zugd?noXj#Fs7MD$Mg|MjUJ zef4`k1N;dLYSSH7t91Rn)A|DLgaL%RjUI(JGRnhX>PuRx-4;sxcKMwP%=-645P8V2 zXSSVpBOC^UkjkRGGZxWJ{qFN0Ezx~_sYrpov_}16o9P3+K zb;A*yURU#X)@N= ziqRq3!G{=phFVamWF0nZjlmI2d2KAVw`S|AHR&(fs??sUzS^m|NF#?>v=`pB7!$-? z!cHdm?teG_HDhRi<>-1dU}LH9yU|3Hem8-)+|gy_+e!rSiosW1e1bEnS6H0y)qT}p zH4)Ig;78k3U2SFyA8hHhPR;j5X&%bMWUFJT^o!~0bNxmrTW*V-LVMcVnhAYT>SH(& z4I1E1#+YS}5b>SBl18cpP-E!qbowG_-wwRQT1w&eckUojmlAB2!h$jb()cxbVb@&|fqTAc3#Out8Xm%`$TOzXYUpwmAzv8cNP6!N_E0W9;rf8dukM z<46DS@%ZEa{HNnD|LO~<#I8aHF}eh1K`bxofqlIypk6(tC1Px@%~L(|c2b3aq9?zgJt zy)fALBQNdf-(636G|q?v#^QjTr!svPPa1KAc~@WI>fC~uaNngB?p>PK--Ws4?do*- zF@JX)c`Ul%j_kP#fKJ$n`nRVsmh>}FhJ7`|>EHj@r@FXae|DHPvZiLr@46$Z-T|O; zn6sW0+a5%2ZOIyu9kX(D7C(gi1j5;7fnIbz#Dchlr2Uh zld`qN`l^XZT{T;d2tuVA6=DfFmp4~gAI+LEubJy>ab^DLmtTz^fAq=t;A?MQJAh5gr*FQ4cr>_c>THlB4>b zOArZ1Fll|ZYPSMh){pLjbqN!VyK2{D3S7VyJmE~;U^*Ef8<$OXLkP95sfw@PED3g& zju=Q!-wp7@EiO%3)n%!H(3BX`?PaKL zIabZ0$$=5KwL}mYL_>o{8YjwFk8rct+#YKi+hMjp`tir(KmO4lk3ad-zl<^S=GN}G zyu2Pqr)OiVIX|Vwb8sfYU%>-Vt}YpP7Y-<|$B}2p2UkqZZ|m&hS;IF5g%bwcv<;ts z{(0WtefQmbbD$PM0^{V)`nP`Tx5gW9yb&ZjIXNCXyXBNiy9fo*#CXp3@(`+gWnNzs zhHCku@L&QC?3$(+H!HVveXWLz55M4#cbB+szgNS=kycxMSD(IU6KJP|w-&0)k&bWy zPHtDz_Acl3^7}hMq2b$Qd3N5Nmu0om)~I8(rRb?XFTthDs(cDQ;JA>Ps~fx8aPKPT z>UjN3SXU-7Uj0+^i&w+`F~7QA()N2lg=ts_eoygGfx*pLfDd~i@V*7z(U+baDG z+2qwCT-5_HGk6e`8W1&WWoWjuQv*E)R}7NOL>K~2BB7jO7DXJWeNk_Hwz09DXU_m) zgAn{F;V(R3GGb12lvK0d>1$$=c)D#=yq?&wWE_>b5@m6am$Xs{| zP}48nKkJMDOY`WXKCfC8y$Ow&%rXYe#{b2|*v1H_>t*e1TGG8{>>eB(+%vzAKKdxX zg;C@G=5PMygy+^YlCRQhY|KhT*9I$-|!bA6I^`IDFK)@kX6Iuwn)h1yDqp5l5iuBXRWYJ7Fzm^Db|80i6}er1KlmI;m&ZFC8rXisWnv z7#0}{+BBUFAu`grq)YoIvM8gk*WJHU?Rd$qlCd^+ zw`~0y=eVkC<}26D~u>@Hn3`N$-e}~K;~Y6Fh~u`%M5T!1f>xW3oNhK zZpY1{X0j!`)zRKn<>Izzy>c;{y6PDoKLrP9=}@j>47GjL&WI%O=cbNaE{a`kh#_Mb zWfAfi$wlDE-pt9gOLZ$oX7kpJ{Ue9ZWhi)=`l;Nk;-tg1LtUNf~)K;dW+w3ylHz0CE!tgqg-uCd$L5) z%PR72vlcIvMjL1zXuZHR%aIYf;nnO1&wihR8ELUdSWPtOXxN0X8KV6vOao|Po9Xq_ z(~I%)=zRRafBfU|AO6#yj=%ce-{io$#m<9qetj`6F0aS-!j?=7Z&?3@tf;?@z47d&do(U8DC%6VN-A<*gSpuW|*y=40dF^{pQ;_SBXC&lY;l& zdw;y~#?$e^2OmU3QT<#q`zjZ**RnM@ou8h^fU=oh@EmXnK!h&al;>4_2)HG*cer{t zZZ}@_w@%~fo49=o>u~X#xwjAi4{g;i?Nw>aVN>D=LY zledZQTi=zR`lWlTPp43oICf^4?1s86>AZ1VnkK@7UCva@?%CKb$P*y?cNd)B_bcJ~ zeE+8#b|3Kn(@U2V;ywYRsBQz&=RE+Ns_aZzE&2re@Y_{=ce*PaW?Ws=;cPv4 zUdLB;28SMGql>H7E({V} zZ#ajcQV-`utV%r|B33}op>3HFHIXUuUW{c55Mki)AXv;)|Es%j#4k>gqj|tgmu%u* zOq?pxw08AJ`;CA<{VTOYS(k?H@b-B`QLR!#y*U(G1w;kJW7g|mDn|0tMhi9wpH zEIXMY!@aV-K#=}#^4_$^vgA0^w7bT=v1MjeWmOi*Di+t~G*BEgIWrjQ4|D_iQ~D(X z2=isWG`goTjcGxRZb+1dEovn0%v!Sc+}GIS?sxFKui3dLqOyt{kp!F637k0R`tilw z+}zCE+}xdbSU!-mmAjf1ft!5C3Ws~AmVTl*rv<~CU_GB%BSeZuWd+D-3EGUdGmV&$ zveh^=!tFNS@B;F{l7Q7gRwB;P&=kpLr&0PJwB>#%HBz*ZXmMLYs&eWRs+us-0?xD0 zHh7Z-BDc2I>LL#ozyooN+lGR~fvYZ}zGmtaXKDrnsfhH3+TBxYUON4l&DZhl@HFl{ zdKy3e=`Z80w{OLRXUAF+%c`Hl?w6_Kg z$#21l_p!l}XlGOC1SnO7f__cs{+kuE`Pw*qSbCeFAq4UBu-?>o|cmgAFbS29J|KO5qLr0#{ct0}PHbp~6py>~6Ty{&lvqfg>5{_?-XzyH7fQ~dpp zeikR^oI;BrUB%gSu3aSAc6=rtW#296t!S?HzF|N^U%&!a0*U&8i^3WG1s+V_VcG$B z_xAP_pA{B_bCEZ{A3uI9-v{uGV1>t!H{U6X@0@wT0a{=E>Q`fLXIJeHEHoQ?vycY9 zeRg`PW4_5B3ow1cP0Rj0Za*AgX;a|hS+GzK!r*t*2Y9%7=bQ3OnjpN*JM=MyI`L^2 z@~S+j3-92D@Ay1SCX-x(x>0cXW*(dL*ph*23-(b-rHuRtGksY`0MnH#R~lGp6XL_~ zxn?u_lrhktzmOg)NYQRhUHBV36Fz0017GL^;OAWhVf@I#S@#>q11_Y;Bi+HjKq%eX&DUXJn&1VugMUY9g5-Ox?>Yd6@!BEdO z41_iDlPC$(bVjzH;?G?N;H}XB#8>I79^}P)ilauDk_Wrx49=AUDB(A^sR>Zfy5&OGWqc3vM zBkB%A19wCnx$&HMC}f=pW%eOuXpKRGRN$j3^A zR$J)H@9AG5%+iX3g&4|#zvo8OA@_Ewx9JTVhQfG~$EK4uecql{^OT4Gc16^^QX=W{z8314DBUIC%s zmeqL}lH1S>ggI_32HrlLym~zp3g6HR?E_))q<)N+5kx%cVBCD8_N!j5smD4Yrn)h! z!}Q%54GeJ6ZgNv%ggWrSM(8vsLE2T56AneUotVwo{ZwKW>`G~pvcOJoFd`h%m_|v( zP#bJ%YhI?nI@$u+LcC3X8%9H&gx#c_S^^7h3wOp}$G!<8c7McKbIaRVcbFPrdFEF1hug7OcjL*yY5d~tcjNE={zvf- zKlyola{F$aoX=v)fQKcQOzk1iuwn`6))}gufrj=oPoak9nHr>|@I;B$fJVvyE0LD5 z1OH5ZH5!j&duK-qJp2Vkh21xqI>K@Uj(2uE(x0W3j};c~e-_~MtH+O@1j@tXhmWNJ zzwzZS$CuxDBbXxX#Hr5q!IH@iyAs-vs!f)v1MjLA{8Pf!gQ61PvU7SFO(pKIeIZ-LoZq0h~vQ(@#yxycgq76_+4Iws5a8u2&C-# zT~ES_ATFn`-_;m!5u73U4P$HzUGgah%FA`E5q-hcF580F4Xn-xAts)PUpHx_+~5$F zeizaUlQ@WXxgM9{AP&3bY3pVV`pGRyDOVjY@q@y^bOW8bI@X-yY&Dl{qQzt?XGyvH zi@S=Mi47t%nBRpwlR{xfllfAc#w@3kxPA9w{PLY!apU@n@%k$-YDA=!8eMl%p+Jn( zmJ5}~cuAVE@rAU(1gqOpLTnF^SjEu6Ay6Y}`~_Aq#AJ>FlKVY?kM-KtBicdAr}C!* z8u!|ITRNJ(-L-q4WFr14m4@xYJF)6o5F>!NEasV)bSLhzLmxs&496B9VzK2gaQ4{# zH(>{UwM$NUkqo8_TqV@4RC$VkTwyMxLHGb0^eQ|cpu|AT>#UK#@M_#ZKlG!VQcuOfj1GpT6&IT3@bnJ& z^;ua&NJfAl_H)Fv7Zd>gkMxCBa{t)5M99r)gV@6tVGz_f^q@wh(~{uB0-(H-PqpQ)AYnZ zN5(r7+Hbz>#B{lc{r#PIeD_iO=x4u(AN=q~@#CNUGCsb2KTbG@Wz~su{5haElm@lG zI<#9+Ta~-N(k6VDg-cCLAGAO>T@>cbPl2(w?nzN%z(GC7+hg4lc-pGm%9^JTJT>7d z7Dol2_*E@`ZkC8fay8z7Vzl#_&o^4k}`(T%(~Y+SM5Kz7;QD+l%SRTq6`1ZFE>#nWi&Fr;ME4KV3>ou>v-3IuK9VLpaX5 z>U*qWFy`zJgp&oXX~Q_>eL9=S=wD`2*K^ak5DrFx^M_%{%EI>6>Th;*RJ%hnOlfGT zrj-Xxk7&*jj%*xJ24w>y!)-b0(0nTDw8@}nb3OEFIDw@F05ByjP=39u%>+|cH3tl& zReI7Wt>GqbZo}yIhbB2yxL732TS`~@h45WUclyK-4;U&hH7{`MY?QuM0;vqj23Fv! z6(IaZP$;joL_|l*1J02+HXDz}76!UZC<+JzF5Za;*Q(0bnS{vHuqOA&E!hn;(l3+-|PdvWC1M61bNh?Iv zyW)_Zdor2mNqAkwQ=yp(Cr`@b*}kd_p5V2f9}Zg zF1oaqcmY=u0CDPj32o(@1VlQS4-*#!3s2$+AFN22Ok{4vd5DexPWUFp1<8T114v0J zFRcW8)*WbEC-g9?=8t(&(s=3?)rb)g1c_jMdOV3=zV&Wgzp@)wcfYCSW=tRB*h!7S zr;bHVFaG|RJ@1VR;0Dii@eV`as&HVh-w4pff|2efof*FUL^yhugKfY)mICTbhw{^H zN_@3#t1Ve3*Jll*+Q-ZPgj<=@X)`k(&DXOB(<Qc&Vb& ztk~)o<;6@vmJ&viw7;@K=vtxhT)M^#7x3lLSk^(}Du*3IhR_Z4QA{qCi0Tq*KmOrUA>|GDtBtFj zY*kQO)j>%u<5f{RDo5KoegLJDV4N=@-kT9Vp=~C>!vcQZ~-c&h^eW zVUl21001BWNkl~8PIy}S2xNEHs33~ow+K-t1#i=Pix5V{GtMKR+7Rw*$l z6oI)7XB$@a-{ddFOUR@6Yw-l0#HD`ZjZ=H&Lp}J$MIO|zlyt&KLmZw}Ui-bmcoqyi zDU+MH?YqLj7w^=s@^Cy9v$+Ojl_xX}of<~(N#S4gC+7o>fStube`cos{QuT7EBSMt zS<%~RcK17Q=MqXyD|luFwMwUDUw(AfY*@Z?hsLOk9pZwR6ClptmV zMWf|BcYUK&-ieQ}6ch=I;3=|6!A%~-7mONtB;jjr-F0+LJPIXl`Ce4oswdAj97PSl zTXo|Jk<{4~q^UadO)w{sqT#bDg}vpyBih1*kHA!+h>66mWHY}I%HR#IX~_96v$*!h zH%>Rv6Y04ozjFYK9D%9`nTH)+*I4~ zy)M-s=s7GW*YFGK3$);A2rJm7=sAbVQ*D;Lt#Gcot3zYnL&>s_h-qyz@-fDY8}hRW zJCzegsG6@tpJ-EV;@n1cZ#kKF`Th zCj>kKkN#oYf&(jO!Qx;+ix5DL zl85Qo?ZCXYIG6gCX`1}Z;7}ax##gI-SRR?|&FS`svT&-~PM*5FdPeC!Rb#iu2i04wBQwI;IOwSoKte=m8p| zKkF`$h7~KPuY@L4ef46sIW52njijnZaG7Q{!m5o2_~EQhI@RfvtW0wK=x2p1o?LDG ziShJjyaPXvM^mQ1ToF#KWlu9bRfvegV{Fk8Bhn7;vZ_`lq z0k;L=z)Cvm$&(BCxEXknKlR{uDJz7L-wZyN!k;kWpg?f*PP)1aUKNnIA&k4?@U8MD ze=gwSz2X)eK6eEiYzD|yY-u~oJXz8jp6E8U4^JOgYpCM0uOf`kj`5p)DTeav^?gL%zEB<~RRL z9|@?x-S}dZ2~R7!UMt^vPA3xy8AgB*h!`2YiL%p4j)Yaeg2hjcO2%mE(S*2w=HlI{ z3O^h(jQnS6fun_Ilc|1FrXBFy$x&ulL4oiTLy~eqUg*jW;5kCjU3p>QfJ!W443UooO=4xOe+ zK2AfI_0E$j2((B@fV$f55xM}UoK6V?>gd>R?OF_tf9CnMfmB=3K7YP46Zo>+U00e+39J8$}k-g&(9Z)6$5&u zt+<6(U}BUg1VN`{o_AAL(l+?b0RsJkHU=jg?F?Vw8~HLK^ODP4a@|L`Gd&2RAzbhG z(&_h1cbJA?)VdK&sUQdvjOV>-BeTUb8H^c1Tb5S}=>s!wQ&1d1@u5%wt9;1}A`F0ji*j7Kb| z9@^Owx?gcd22%=CDI!d#f?u|`K0G?m&GcNi--#DqWYZ}u9Xbw6iY6rj2RDM1{wP@S zi@@sFnnnW_+O?j%3u3`xp$*?H<$>?qZnd?$w&wGjl@~aX9L|ui<=E(<9kz+LBC2SMXpOv0)1nu*#9PGN`OAx1%n$qPcinZc}sDc$Z z>aK630eM9T5FFNqx*8=YVQ+p{1e&dIQO^iz%gpc50mvIhWI^SnJ(n9#$_a3!lA`P{ zuNFxL1m>$Azz!EJ96Q}A&d*L7=2`?&We|r^0x;1zfRlQ2Pz}}y685%+a=^1d#L zkUIilq!%1Hvauut4g}&l*7KPb3(|o&U6b@ftO}ioVXWfS>(}Cc`XB#geD}?7#m+F| z=<)qnoFBytS9jz3OE1Ln*@?`qVh-BtfO+(sE0^gT_L~f`=CfNuZ7^h6o0$OhMR0>7 za8XZ>IB~x6h=4jt2~hjPZO!~d$|83&7#IB`aN@lK`Fa(ugN@qPySCA(RQ9{g|gLXVVK6QJrcZAAb?nGV6P8^4fKq_*pPemE0l{gAJazIKhsiSMZ@if zp96giC6QGpR>tf+O#c!s(^l<~d-@a*m-466iJl0FQi!UblZU+dFZFlu364t<0sSC(cPqAcuLS2&e02M6{HMS8&+#As z@4t*s?mUS8XeXW>Phz$V9dtFvB}=vgrjh8U(p%^qVh8olBy1X{o)WAY81Ti4I{b&e z0v(G-W*)RVX;5fsANCo5RxG5~F<;EprfRcZKTc0h?cY)>S{fzAf)pi$d`xqGpG+ok ze0(I@#PQM$y|?outbM_7)mbiux8u+#RTj^>iNiY$OJmhFfkY$p0x2==Z8G9hWR5xa>>8C=~|IPKHZ1Jkp2|r!|%V znt^m!#+W0P6-N}OFp{#w35^uTztrgTn{u?(G7_EgIVP!!XZL|lETR(+4$tDP5AUdB zf9*>z$BX;dV(aRa=q}lX?pW)z?M8w?Lipi*Z*P74QZSoqZdMboYGm&qiIXJCoqJjO2^BBQK2AGcy?Ry3 z!ui=Wj!$Q?!b2X#t-lq~8^lZ3Z^Zi_eiAp|dMAGQ)~)!-&u+$@2T$VJ$%?(1W7QpM z*)RKpXqm5C%N7m#AuUCn+gH;+`6k8Kafr*C=-u`zPhYD4m}kMuz?qfHuACmR*kLJf zzi>&@^J$ze&SHCKTS|!9p%lUvFr?uo4_S9|)ex&ob|T{0(LtP^oyOB=PjyHZ3c&XE zSW^~QGTwUYW*i(ojW2%j3sNv}!bHhHfIfZtG{)Pz%A5RGD=ZnniBH$Yf~Z>4)x_`U z*C>{oK_}mV5%{>EFN7|F+OYG^G{i#vPmzRqPlZsH(@|IG6Igt^Eb?`qDn62ArcKwd zDzUg5vKHxteHq|w{ekID)=YMIg&)Jid&wKtK0gDc0a%eY@CfijJv?}|)g3s=(}S1p zr5$2it3Rs$AjCwk78Zi2AmKs|J3!JM#1ySn)o(q!U60Jb8ZDC->A57#D=@!T7 zG_C`Vv=C4(>G=+^Gq=q}ICouqXC3nAU8-Mpu(E7a`J{sg$j8nG4JKSZL?mJ15vSs{ z;9vwMn3$_ecqh9~$8vs;e#D2rR8W$_qm)WBiVcliY~Qj?kko)iwsTO%+GE+f06 z`FXte!8DeW)99?e8CU=1H)7|?PMjYf#Nm^}*xQGNl+a*zL!XC$0s*nlz-Ob3Rp&A- zs9f5j%v6bJ*U?Op5xy_-L*rL=Vt5G2*=i=?4>?r3l7`>3Hy8EgTPcZjPRc-dus!&O zLJ_W3B=sG*l6fn?RI(Bv2-5U>V&3gAp@*qa>C2 zhATG2Vs+qR#C$$I_YSr>5Fzg-k#_cR!Xh+JgfBkDQ9={~` ziGwv2JaNI(oX*xN6pb2OiXyV#R^54`BovP7NqtGjlYUt5pHQhEWoAY{pf^_9`Pk)u@s&n+{k^ko>sXibD}X zJ^4;YQ@l$GK&7wzh*M$pP6?dXA%dyStlTng3Ml0PM@*QMo_{&_W+R0=zw$~m83g5M zWx7j-Uh`l5UU0w;!#!X#f#D#^jJWGxFbh}8ZG(Fh2AHRClx>0}W_FS(4UK^N-8ej+ z#>eaXvA44od%NS9FJFmKZykf}eT}-CQLq?u3r~p?!Eix=02hX%>X)GD0jvctb*hVe z==gM4-enY!l3;DTI-K!9#}tYkHH@bsS^w$VaZ*(TVq^uhcDMwl!MQd2eX??!%>Na!GWxVojGMnfl{oRU_ zpM~$qgl(5SqA$FFPx2~Z4OxKKa;{aI=d>0F>#2=EjVz+>kA#u_l~-zU zBCKngU^bh^!Qp|n#%79&cx-F^^2;x4B?nUqjHH>auvG%{yc>dkj&i`&wE3lXW5)jr zKRkht8wCcwP=cL&>O1&?|8Io-hPK+}5x?@Te0kE3Oh2|@5C=RuuBW{(!&iAxHi|K; z*T{prXc#Mr;l<}`+=varNDp3Q`DP@?}+my8Y1_u}gx?A0J1hb;m2!o_4*fV93kJFMqg>-hrSS?r)*NnWR*;IwB z6(o#;oSao1!MIVq)Wo0@)YGPzD!tP>J8%H=ro4gJF$bmQEwE7C$o6(gOB5< zzxYMm`sj9i|G)iXoZg^d+bdI`DSmMG>Zd(_6c?zy3Sz zj^a>o7k-LPP#&Ova1EZB7U<;ibyl4aPM_f-AJb8r$87{L(|i?&a@?$j*je*Xe)^Kg+Nhw`0!!ey?Za-eDlrt`q#fM#Si5H8lmk_NPwMwgJp#9`dx$q z&x8K!0+y<`>QOSG+Z8P2QQ;;0`AvB7@rt8}NpIxI_e#st@m(IppeWJ53Wmy`x>S4= zZd)|1SP)lu@Ab90p#3~x1zW1Ocl^XZqbmiA`l3Yn`0kB$>5ty>P)OyOgJB`H!a?@s zhHL*WZMYf&q1qPEr8MweWwf4zacGRLBp}|~`PXm48kmwXF^MI@y)-={0@6s#L`2$x zgFO75x$Yvelqgv?@e2l>`k0CfWmPzNz}Toi?|hS@(5eSvV!*l1pRz@?2rVoKt^AAx z|8MX_gJ{{NyCq%BN{g8qzh?`WZZ~G@bv!;iiL>)l?T$Cz-H+=pzoIqnT9B8P1olW^ z8bbD>^}>7pt25h|1j*_;f*Tr3Vpgn`a5FNu#Rle!zd?a-hkG<^e*(Lx&<1uEBoFfB zHj^T4O<|-D0-8ge(2YiS*RA2z!u^@+u!Qiv7h z{sMAD#C#5Uy=W45qqy5cJb2eeBTcz?SuWtF^kjBd;VY1*#1N^i;H0_^l=61;L z3C*H7h>pP{j1ED7(R->o70=OdB%FXxD^4C<5EuM&Y3irblW=DwPIygifWPu-S@$>n zjP#X9<->2vsjI@VPH@w|a00{(&$l=KK`!YQI=HdyRP-f9g!CiPN*sCsu(@IM^;#RuKx8l1j`&MARtFrk{ zT9hEtBJ{ySJ3Vn-j{6rD7njv-EG?91o$@3jWH&wj0 zW_3q4fD$Lc@ZN4j-W#h$5>^TH67~=gH|4j91>zL(WoN1Q#3LL>CYaXc^7u`?aN>e7 z5npw)^4t6-50sNWX0z65lEftst>4FTk{UVjRc_Xscvwa7Sf0#$(j@6%3RooYs$NVv zwJi&#{_b1KpSX;InWT_FF!D6VPZHQEDVYIhJvtH&fUN(*Vko6$d+r8GRNqRzgyt%=Vy;D0qyZ zHHD>-yPcst4dLaW!o&S(YE2;Fhsty7XaA7IMab4Z z_fHfKj;iM@3MsNMdUoCH4Rn~*V09i7GppL`fM-+5o>Q`~&#R($-)oj5vM$D(h= z07vEdjIE}bh8jh0IFe)KN)CWRwirJ!xW3f`veKXNDBOsrv^oLx=UXWZJh{OK-x#I3 zy*C*Pm5D2a8%tUzQ}#h#TMB3x%=uo3` z_`KR=(2K*vqquqVt+;pZethMtUyCn&=}Ym-E3XL9iB=n6{_n7De%&nIErMF`}>ZwWKrm(H6JWcwn115JLVB7{KvF zW=`32^B6^a)e|8{r}E|YK&VhZuFFkKcynV-(7|iaigAVMm^{T0!`r*cajolRS}+u{ z7B0XW1|BIBlt!7rSPBFp8ax13epUGhzMLNgR&DR=sRX765Pnija?L#0@M($UZ0iv1 zgyliXPtGN8>TDqhj5gf@8^R7|*~ZB_wze<{8*l0#V)oFs>sU*n(N))LM%GoQ#6dc? zmh!+#6YzmfCwjuf-*~wLKk6iw1LM2!$Wv1zi9aC5`XynX{sjulX&371WuO}tNErEW zQ#J|&c%rWm2IGg(@{Rs7Z<(&i+v%*RV1+@6kaCmXM3q|8PoD-}%EI9dr)p>yD+bFs zanjt<22dZ}eH8D1d?)_?M?Z-l{=<*s?OX51(HT2?c4D-%9S={=^IRKpL}?k@8EzSI zc6z3A=mnx8>v$VFt4;v$|HO-aPrZfDR4AZvo4&o79Q~=&LCLNSixBc-E&sdworNJmJZH+Z8=dhu2H{aPG)CXzJMq23!+nJ^X`?GwuEwKB599RoL<1d< zvb*u@=|Mbv_$dDT&;LCB6mZIrrl^4c$nH>iaPzx0}ATPRZqifK~9;j zzkMA@@4A_f*E?zH!}B>xLz~~2_J{{gx!V``uJYU;FUpa28t7DX+*nuJIr$x4r71GC zp%o2ih-*5vzY6cv9hl*3r9AXHo!*~0o8QfU1MdpDa3h}5c(XV4^S=`ZByNy!F<#|Y z2rI-Aj?ksE3;Cs?B@?Lpc-BEsq@k?R3=8gpfpETaK_ImcJMh!IC>P$XNzwj(v0}pvj<};-wp1hvVeUJ@|7v+L9z$_=ImO~zG#VtWs z9nlge<9qZ+dW{5YoiZ?>6s^{Ac5)W?Z-1;dyzzxE#@>}HG1s!Nh0Mtut^p4_3e98bX;0%FU_y!L}-!wW5NA!{=ROXWH{Ir1wCP*9TLSYe|Yz||> zBrwvbgHd%ZA;bi#K{0g{TN5*7B*bkKscO}nMygR$PQ@^~V=fz9055ofMzc#K4~~qqZ{dgZf=&vk;RKHQP6)68m!=$&HxP!2 zx|9R(PdjlLZ*E`Fa`Fnc#-??-No{w%l=Tf^1?_Po+;%u}dV4oI-GTOM zU`hhZ8e2w>_pZkF{?(W+I`QG{2l4Z_-;IC&AO9l$^1uE~{69bZhq!(JQB0PhbnMx% z;!KNGH&#+W*g%cZBfcOZs|d6UEgEKCQ;CpbXNAZ}y(s+K_#!PAcqN>>a09;JA!_5~ zQS}Zj7tVPChj`9tOFS0AbbNfG{V%+tj5c%{(LhdDu_ZOX!FBN`teRLX&c#MIIRF44 z07*naRL&*}V}v}NVb!xGggy^!zyiFaqkXGP6k;y;z`gtT;_>6hg7wCY8?rz^kHn>1 z>Iw~FN#W+5aBlJ@-}+s+BAhx`{rTO-A$f44JkUp_5~tDu-)BGzjNBEM^x%)WL8Dxx zXPSmShwmJ9CXVo&?>LTfiQd^+FXb2IAR~Oap5TM-!#8deh1qPXv}K(jKJ^6d-?{Qo z2u&z2Jj7JQdM^ZD`0;t^iP-*L?>zOF8gXT4Cg#pmX=w}yfExsh&{D_}W+b`;RsNNq zo*EK*KD`JEVv*oX;ZAs!M;>N>?vUh6d`3-m6)eDW`BL4oqoN?O^a)}CZcKV&7!uZo znY{Q$2j#ue^Molc*a)RX>=1k#UedI$N>5lC+LUj_QNEexLZ^~qP_Z^o2FYBoHL*4X zV}?n^5?c7z8uFt3s)g6Fg3wtCHl68kAe2GYj$;mHc^E{m`pA3R0s!fVrNYXW&8##L zLP$*|Sgr8DT-9E!k^csIMz40bqu#2AgcgjYZku<>w~agS%z;1JPbgOqz_i@SO^0f; zY-`$~?koxdN~IO$l`S7g=d_IY8L5#U!mru_G(tCgAIj96XH(GbwHhN239CGSi?X!e zM=CMEz+5#9OzwE9UnP`$i`Fp7(WuKKerC;X<|^10#N^;T<0JFCk3j?b3Y^;-0`eY7HJjMvU0c$RYB1OeX9f;782#3(;ndc zY;vwXy1#!dws-e6CBX(y?AOpAj^(e=8H}RaAH{STasSCd+`RQc{OIR5<7YQ-#V_Ce zKuW`tqf;Mfg*A)fncnCRW1r!SYg1KbL|;nt~Y^>aM&tHoL0LAK;TpaevQ@fN=4h z^deTCm%>0;zgtvW$S2tyPL2%umF)~W~Zbev@p2I2Ls%Bm-wiLz0OD8u(sP6iMg<)HnN zAHtmPl*^L~Sn8cTePgvT{uHVCmr_Ooo4p@s3^q5Ro!!>pX14Cc(PR~GeRx0aJ$@Q* zy!M57^Iv=;zWJ5cVt34(@m8EoakykVYZNQ!BViG)w5Sn;2tGc-@PUnsr|}(VI+=xDJ0h%2L5~*&+ITc*kWYvQT<@$Eqpx!L+OZE^u3%)R*%|Q za%s5a+`$&qnhW*_TqF)0IqDn?@INt*$(M^&J17pcS%>*nRTp@vi$~@#EtH4Vx}PJj zx&11VnWKPc%4a!OJym4UqWF^Ys>9qglOjz~g{d9*$Go>3T!l-U@*U0A1T!xSWt0^Q zzOXP!>jrgdw^_Z@S|uz9yL>C1DsR4_I>`Caeh#Hji2R_1(qD1b5h$w|kG9ii0pA7M z#XI#NltfGGPHgS$%A$aBd~!b3bjse|PK(&Qx z>%&jt;j_ayIiJPJWTBN4@Cc?P$&(wN1C3Wa+Kw=u&=XHCAR*q?R$sd~5~gWBEd^2(m0A44 zAug}pJw*lk*{s5;_M`lw8w4zL%7sHFb)hf$p2yaBB+J8(fBa*?1YF<#_M7qQt2d-b zOj>7C6duT{>Im=Ss(SN;R~GElzrO1wg*RMx2^jATQplEOO($ZU#8!D^6Rmg1eF%JSmSfh1aUbZOw)5tl1_9Y}H_!MQ@n?e|R1qmsR?6B;;FNRYohQVQ>~N#3VkRv47=h5xq#K|btd3FRhoA#g#%~Y=0t4-9z0zSo-Fks~hffgDF z2@MbU;RjVb)eqZl>9 znfZOUt;;b))WsGx;&VBjg$sF;2}?m$8uaTJVD-)hprWd)-wRrhPg&vZEd>eo!4`@#)2QXE!>7tvH>r zWR(M1wqt8Jj{f$3tOwii;NT=~-@6w-|HWH6I{TduK8^>EpT@~#B})T*0r4a{8Vsf6 zvSHhLweT*lR8I7_sh6?sS_2aoPr~&(Bj~p}V8wFWYA=43K;fObi*8zj5&ArF5M0n` z(Ku~V_%qH-!!@<0yqH$L;9t~++^`T2c#2Pyh1RN&{ZIz|k?2+1yldYZ1}-Sap0-BF zGDu`8CxajI;(O%{+=qvU@%Gzq%hEvnPUm068{;>cy4fDE5L~3= zs&MFuG(5?J!4uEA`9@x(2Y;k@-%4ez#Yf2#YY9VLlmIU3MxP+R#R5f!HsrTH>wCdX zJ>729#XcRhTlF13bC8`!6aZK8`9B)vp&F=-=n6C1F8;4Z2bsj%5 z*6xrnUM`dY@-)FaAAKn5*AI`JScfmBpJC)L;z?&oeoOOXl&n#w303hR2#BSbw{j*8 z;pM;tB2rytVor-e3Ja(N0%deaI_k>r!UtgxSA9z`qfe(nDPjo^9bj(dp>RcfZZ5*O zz>CDfB|Mm=5yOI63{5F=bY*s@5XS<)px9%n>AD+T){CjE1SmQsTCRIgl4m;@bjcn4v@O4sALF zXKW?j+bY;$4#|*LW?H1Fkzu>-pflj094iy{V{qB7tL9&G#Av!Knui8lcefX)bGZ#Y z2^YDHP}U*u=4yO`ch>Otv|>T!tDW3fC_Ch5z1g(ud`){*k7DBBfv~#joiil3fW7FR z-&hU!4gQ;c(u`<5il*i1zm=EA_$o*Wh0eL?Z^cB%S1w|I|7u*l_L7v@X9p+o(Sy73 zH-Gno_~h=Lc;~(M8;%LHBS1vRO?5HlCK$1HsrB_!%53!- zhnO&BTrqiw&N6n|FE%)7(zIT18sws`@P-l|gn={K9~^-L1fB4ue!o%Nz$3y59)@oY zaR@^pg1S#pH(q0``kK*CJ#IB!R zc1G-bkb@I7r*NWVFjaxC!MpFitN75~Y(9(EUVBY-qux?NTD}a_pR3xRXT7_ANk7R4 z`9>P*4_^gekRM@nlOJj80;cDcdnt6m zU*D-7?FF2+Vz_?L0Wkg1C=XR}5L6ApvmMTR`y2203<%MT+;W)>h$b#bYBS18+s?C? zPxVSE5n!EGN@c*!X}H{gW_HA>hEM|&Uz#zedG=zZ?QvP}%{G80QedcyG{ezW3a>UH z=Ui~7qn*}VZ6iS0cS{Ed?vW)48$i63<3D9+Mu!liQt2Ln%E>EP#ir^?gkk(>I*aYCQS6Kc5%XyroK54M5AJFe#L>aC z_+P&B?bsU+Vt;28Ta0qCR^(X?FclYkkxo>4;<;V_YWKnqLXp)Vc&S;)UIMU%Ll_1( zc|dBkJJt~LuU#6A6S9L2%usAr^hm-Ai<^(pK7xaNEo2apuHq4zXpkmkgjMEq&BsGT z2;6K}ktuENkq&KYTDdqnGQ&Y&ilkK!>H^)7U;8>{6Fj+K| zsrw`Ol)?>OfFGP-EmI}(2zSvfvQEsl`lw;9w&6+p@Z=Jm>h1ae_+E5g?W**tNK;R) z$`|-Z!_!+&TSOEDOes5qE$0?1gdG;^@k#bvaJ4P z3Z?Fj={i+Kvyz3jr+?!#%DxZh=TbmRL0E?m&zeqH4Y7>ndKo*zZ5^%!?3~Q` z)?05$QF!q1LHy~T{;BvG>C1nLK3gikEcJb+AY zBh8599c0#}@0*|cRz3o1Akt?(#08NER^CBY-IXWd+&YrB%1;g755rdw40 z%sq3Fr}Do9FKKCbE}PvqohlQmbBmeEjGaOOB9&w-g7ADTYUWUv^C>Y^K6wHM z@wkh~2?v%+Pg>Q1rAG8p9aiHdQxGe=y;1(z`FTUM#K)np^7nJ4d1AO%(z>dJ!0=$! zRsqeM3&%{16NT77t*v*oEiX&K29jdyI9qh$lRJ;%{P-xAvq`-C!j*XK3oq*w&h2d+ zWX0hxjD!m>Y@*RfqP9ACVnK6 z+4EyCWJ}3hL2)-e`s6{}eCxgV#m#r)?*04ncR=A_$u4`dEZIzH!I>$Gn91rPj^VaS zpA=S3X-jJfe*2cVPtac2p|F8eI;hMF!UYP{C;D8v!XCx0FBBh09l?oJB{=FFie)t9!Ie+)FoGI*76W5AFI= z7MolV#;OFKgrVTD0t1I;94Oh!nuE2jT-k5xM26s^;m<9lm3q2Ad$k<-)=fHaKsnqD zVA{X=UU7LA&UtbbFL5}qdeBB5Sm(SPdQ;wI%MO+ZF2T5Dv#vUL(QQ_+*AoRx%DvKX zz}c*U_cvA^KHao}t@-z>zBdtn3ojrLgmb9@#2i1Janm@lj`P{M5LxLU1{#RQA*=*t z`2Kw7kO*0i=}>~uX(ey zB8aTnv5fB1I1{)K({MJ&66c$p<}YjeE3EI{sF&{B7kDP6d@F*KxP-o~* zXgcoOqd$&Mr%pJ1YB6Ritj0m&BAKMpx+xP&)#R*r@g_Nh^kU$ppm?}~cShZ!^Te!H z4kZ0cIHKThSeW`=OA&>J8dPS#EE;zUA+V{VM`KE_4;wsV;-<}o69h9bt*mw-^l>&8 z?!wbWD+z>QbT~FO@O9|KGP?2T;5dGM^H%)ehd+vU-g!SxrVE+vnQ~)v4UHfO&M^_Q zx8!gXdpkRE%#qcCoqojB8&f3=XcnG2%nCwb?qR%Lya{)ID!iMXor1WZeIb0PJ9y(+ zID#L*BhJsxlCF~`Tm0AbQ~U~r21WDYfJ_Ra@}(Vf)ZEm?$F&39g?4LbiG$syJ`hV5 zH9HZ?sayU8E3LdjK(n+SUMg!A%5tw4Tm4?#c=1LY96Zwrn@j}n@9t}7PT1(-!BPD6 zUwuC~OpE$qZA9%H5k+~Q4g3%ukNjVSl}tn1KO!RZNXkslOAx; zPvOpd_|-x^{Yy@p)Iptx7g=JsBz`z@5)JdBp<} zT+IrICgDZ+X}l`K$aSLv7dLZlbG{wh zm=jYyv5Y<@^;pLkGw?Ek#TT!>d@cUPH@+I*`o`Ddi(hy(_IJmzUY}y96v9PW@7Xrq>(9V&>id5WX}D9nr{SwaFd*RMFrvwHs=ev?*4&!LFioR= zc^=oJ7utr6qkwNQvx%AZhqrmM8lB#k8-llb2#5zt@8*6D23 zC;V*aGY1OPi++rtD&bcB8lMf*>qbzB|0I8d7tmhCf0R#-ta;}=5Bdf|g$o)YKK+|E z-re0zp<~`i9KO>oHEcs7xGnJ zv_F=;^brCkF0fQ9+B6j;D=XF!1`(au+1-w-SFgzGz+NMa&R>4{dVKSn-;A$*?JL?C zkGz0mXS^-^xjr83vG)Q4J77dHfj1_-&GXmE@uFb(by9pfP7z%D3kbY?wd2)ykjYh@gJ-=H2LxAK zo|oUNamc$Gwc?O3@9pr)qhRqIT~0S7z?ak4@AgyaH42xp)W=HGXA+?*NBNmyIIRh5 zGtvsrFQ-YoU?N$)gNw@---H)BE(#MK&Uw1$9B#)g6SEb8720z#90?c$NyoNe;WzD- z%uiV`I$|`JVE}QdNma9K=M@$Wt;}Gw>XQlazJ|GJu5J-=@99A-Z+#pbvi0QXEM9); zT3p>7$Dp^CqJY=7mM+Fxj-YgQtwvxcZ<#+lGQ#6q3@cV%YA9DWJ6E!zgPj8f13L)v zr=1=_s^|U@f_0(zNKrtUWQ4@GE=q|Rot)#Czs2ct&1OSOZHP0|hBeDT0Ys>X8N!g6 z|HXVso5BF{Fe%YP3W1_;5US~j9KCA}Kb2ZdO@y7T(jQVxlBT5@=rx4f(!t?R#yj;D zz0-y;AqfeeNQsqz4VBdT(1(O5Q&ViG?gqBIMG5 zfk;89$3m3^1Ax{V)ED)d${me_f?b9GsrU*=&&ulhgMEi;#AeENa+1 zsTG&EpmTVUzn|_OH9fIO`Ppwxx(iVVby)-#otR&2e)Elf-@e5Ivi}uL)suMS0e>{V z*a$Y4;byUg%kNc&pD2?lAhGZz%OwOj`5K2-u-ortB_$mfZNhitS}6(%0uAWCiIS20 znAL_>_;Jo3#%PoSi!76A8=NLlY=8qC&`-F2bLBzV{QmxdsL#8o@bj(;2XWOnZn(`n zCxi#mxQNqkAbxXWBIC&gEOjd&|5bxly!JP1{>k7neZ^y>fL{c^E3BTE%PTxoTwvuL z0;;eo7Xl!@!Xdg#D5^T}RAiTIEQ<=x{(Dopl_ZuH*RhQ9OQj5ceNFjT_frh&Nt) zHLmP!$4f6)y@O3|K9@et4@7|6#y3_ZiutNuAM&+pI&ATF14nf^sD)J^T^cBkF2V5rv6W-Y7BHU@sBV{THOXh-2`0 zC+6L59Gy+${=>)d&ifz6yYGJ#x9{AGgOf$fp_N>2$y#BA0n=@Au7uGGir?KoaPYjV z!Bg@!;#62Y+hOEWH+{c&ny11%_)=S^5UaSQJQN({T{pDTPE+MoTFStx!PAPJg;uXM zg^GfS0;0635L9{;ZqX}Wm?Up+^%e?9Dxji<0M*AmpV$iqM znL3b$oAza=(b;SoC#T1W(~=!I=t>+=?(?p~4^ONP$#%rciC^_Yxv~yj`THAiXzE7$ zM|eAT(t#z?^1Uv#Pg;!Fr-vJyA@`=!Nel*8WDS|1WYo3;nfQ-Nc>vj5LVi|IVV63P zzGqw-p5Gv>2u*2Pja2a~yeT7zpwiJW#NkW_VEUeEhc)I@GZ&wSl!G#p|<~RF4gwIg zeZW(2s=KypXO`bf^B5U5;IoIbRu@H?8a=l(yADCmZUW(msVQS;G%~Xf&Z3Y zt53JHt#%g;w{TM7YL5)B^u-UV@7EK$7Y}GTQxdoGfdAB0{k^^s4*$J;6&#ddfn`Tc z;_(gZRmD+QDh-uCX@G(B>?@&x468EoFg4Oteb^@fE8bkwZ?ua2B3S8yl5pdO56ogp zkn=k3-+v&w!k6jklc(|J*I$o1l@fsqT!jzbQF?gds^479}4XRyeIEFrqxr z8{qK;b3F;i5(3);&(xbI>8sE3UhGnXh{T~_D>;x;o*Z(>P5z`iKX>`1;1yiTlPPi4 z=nwcG73BgM?W_IUjc0}>q$NX9BNqZ&iOq0rnyvgx{q=4o%K!i%07*naR3m*6DepB8 z#XDCaxZ;sledAg0)j&=DSqGRMSB2M;biCKI;!vJht&%nQ`6g|_#z@m0S1Ba ztzBNFtGvj=gtM87=?%PT2C6feE7A3NK-arpFc^q1bHa=l`gMf*MgVz0Z7-H{e*tAh&cR%d0DjADhT zkbj{RiBu9bil-|6&39QcN!0NgYLo~L*K_Z;FzS@U6~Z3N66s`aSLycKNDP7V9F(PX z2E2M3YUo)57oPI3@Hj~R7Sur}@v(k>V114)l~Gi+jC3>dl%=Km9$gW~O>E03AZd`1 zd@N;%<#D;PMAJA6;I<$|n68?ox$Xm9A;5GGoui0gZ2+y%Mj!MtMWec!S!eapP2?XT zMYdoRX$ep(R6P!I^ZYw!Ltt&d(%`#;CI-*&69{#uoMh?yF2PX z#GB6$&?qc^LhmOhr?Mn?nP%ub4HO6z36A&P-Px73;mVaO%7^I+d<5h>kcyR|+wkB{ z$4-Y(frY)Fz`zY&>PEg;aoF%&@&kS@lnV~mA|1+0DQiq4(kA?F(--vzcfzM|iNh~S zjh8GFA8QY*PmYd`q+MpEhxiGbkg-Qo}I1Y^pgki z@abWEeD`6z_Jteq`j>9Ri`TBi{`N?YZ8{VRX}g$ldYSU?cOs_qsYdgX`3WfESmjG# zdJh8>0?*HSTOV+X;B6agXiw7Clls8~8sQF8!|5tJGCpEDWGUw$XnJ-Xe(cZ zNSifO+JNn$6I)mb@P@~yfcEA9vSKQNeTi^4eXtUOayTdqe8b?RBv5hs9Rl8%(PXub z@lJmi=!A>!vdmEB)b>bM!a`5sLs^PB>$J)|Yognup6*AOu08e8R8sWw zli55bGq!`LABiJtkA~UgOx4mv41I(?NWV*M%Iew%-rvQW>YEu?AFgMW$8Tg^k}`Z#%Qbqikv4;w{+`f?YZdAc5qAl%>h4(pNlOi{b*eW6$@BS81v&;*q|7Q(nFEBo7!wSzt&{8tMgf z2s(aO9Bb0nv{^AA<*o8$1dJ4>17#iQ_*Elt%zNRQ@?jkQZ3d#zY=+Wxakyj@iBmnW zX@p8UfEUiLAF%cEJWdz0IDK{=2gi4%M0{}PZd}wu>OXf@3LQVjFVi2;s@YVTzJ2@|6lD+4)=g_nSo z1KJEnP)yg*HI|j4-HQTHwL^)NHG!JeZILa3LmfH;ol41+5*8{p5X0$rwhSo@PfiYF zx>&{0$yq#pdKizMJdHc|9>k-^Pvc-=tHcuFrj3e>H#U3H5;}SN=b?3JK~dkxJ`Me{ zankSd5*=m#YL`RV?Tg=aR~nx5W1e+aoZ<;s_MkDsi3=T3M=rvl!S+@8Y~pwcAmPL( zU+(Gyyqkv2v!G)w_sm`or$7lOeZf{w;tdCRFrMhuoCLm5aX7UTp1}&9&UjnC4dg|C zg}#(;^kTx9BzfFDbwYtadHDJ47h2MZ67c%#ugA{Lww%|q`%0k|Uq}UlE!#bnLBK`+ zT`+z6X+?l=-~q?n9|5ui{oY zoj8SGy{wf0#!fAt+mBCVbDw~?_ReNQp!s)GCY=J|Md5)g4xqtcXhBuuN5ZZ}el`L5cBn1yc(M z{~6AD%XR$YFK)`J@c7wbJbd&to*gkYVSkb6dvl72LEqN<{GpxqaOI&W!({Au; zoF=R6dYT8JnE#4>9>}OJD#6t}d2gABE8ai#+2ot$kWZC=`CI))1LM7Y3pv?1AOWNa zi7ANMam!(`@-yO%Y~IO>Z+cdPW@GT3eED98t@wq5g1>%WegYqRB(M^Ji{Io$IuwVt z@^LvWoP0Jt*Qg93L)oOQy6~*>dA4umwOYqM>#);w#&^;{G~DFHfiZQp)7LxOV;4bJ z`B2PkK2yE$S|%<6d}}m{aUOw=(u7uvuqdKM2v8>Vrd{P}jb))t59)VGhguO@ozYNk zgoNYRM9en}4htH`m4#sCGdg(py$Zw#sbK-SJDnJBMO@wA)h?AcUcMeLy?8D5x5u&D z@5T18AEVKhmU~(;z&F5~KFv9pOC!)+8K81<#DQs?jcd{g5n;(_2XiDs+onWzsq4jH zh~`gSX~#%khF;89C>t9_Q*8hp@ec06FSz8%Z*a`_POl#)Gxiy9|3QvXZ?!E#KH~~L zm@obcSd?1xvN)WPH_VkODssSwfSY_V;nD^u>Ed6h`~Vwf{1Ihqe^-b z7~7yj11zg_xHfhoU36pEXQ}N_^u=g@*6hgu4E^Y_Cqs`T=}{u+5B5ckPvhZ}r*ZfG!+3IV81H{@UkVJzmk-!#?H zBg{wZHzcj89F(yZeLJ7c|2FM!Lh~(^%o0R|(su0&JYNncjC{Gh6wmt$(2w~BeUJ~o zp%b2USKgIJKNZ*dez|<;gRAPn_v-JYdFiDWD@(;8U&G+33g+G!)pMhOdw0#UoGxQ~ zXGb(g+ru+Ri?xCBD5uTKpi|89D5Mn+-rMWgN(V237tWV?!sT)myL-FZ^o}N?Kb}v{ z6^B&`+uLI~CGYL+%4w3lAin$E@5Xn(`yJ8nojbSV+O?}OpL^v3&)J-P9Nf2o2Va;r ze&|Q=MFcCb<97f*fPUJtfwZ&PG^VpNDXG+#bcFLxUnMWB2xVzO8RA>rPzwAR9FRAA za?tkVLt3umWBeXQ=F2%Ch1ZQn<39|a2P*qn*X3`Qf0OPqLAUd2$0r_lyCZv&Vv|@hB4}QL}ijnDud3)I2Af zU#-?L)WKPHNLs1m8!GUz&>jP{8_O^@Moy8S1hhvu+V!x7b4L7{%8;jb`WCRXky9>< zCfG4f%iNgfcYA>tVG1cv9-2XNpU@W=yO2j-_?w^|L?4fMMTNwj1ws2NLS+vml?OUc?GB z0CYf$zjU`3=d+~_AL?_6Re#`Vmb8#8mK|9Wj!!4?^w~ii9398u@ktyUpXzyXb{?=$ zEt}>1!;Ysiz?bTTT3A*O)w$>lBtfgDvZ)ekpcEBH5gRzJU-NA**}t8emD zyEOd3sfrKqOMN%{Y&$J|o4Ypmsx;(Tccri2^(-Do8iW_u<@EMnab8SSw6DsC^4Uy@ zxYUDi!NvCJxuS`=d!{calQ=%r6TW5zsfQU$Rt@Y>=JgyT$5G?-)uV%B7oEN}{2=eM z^GTdfCbC2#?GN__{)c@jbE0&cv zcz|(09k``<$oFZp>m%vG0d)lf#H0P7Fv6dA5l$HlP`FUQxXBA#vPl{P8h9281^J=d zFerfg{C9n|D_!sH=kwm%6#{`J%s(qGh~gq{y8#KSG!=&?5P_yp#Q~42zQaJPJWV;2 z2|n|#JYnz>j#&l`NLl2~lSZoVD&RBzF|vZNL?~GXd2m%;my=eVU}naTV^lb0bGP%j zoLAuqCSU247m1RAK*ZDwVnn;;JMV;Z$y!34ODO<;ZPu6j734PAZXG4@eh7a375|%I z^rzw#TQ_sJ#eqo0>OE29QRY^EnLHVO^#(GqyaGGcsr zPYOGLIUh1--WLTz!Zh=Q{$))-;O2ZZbVA+L)@hl*U%{(PV2sd&O)4k~SQ+4Y?9d4~ zz^M(L@*6bQiGCcMf*&ia>U!ifU^-+gIMs5zjl=9ZrptAl&DJqrFbbT->DgJFO=j_n zx8INBv-3DOJc<(>#O7=HI>_$<8uf0}svm5aUIDb=u0+~~j#{Kfn~ATu?WFL5@1(L; z%-{NJ^~cK@3uh%@Q~1-*n|@2ZT8aYcix2Qldia2ZQ_{?WQ)-icUe2H2H4<*~58k=C z7#UZY7xOV6WZEIKZiEz(>K2H^*B58Y7O9} z41}=yW8aot=$bI<4jk1UIC29c@T^wI1LK+RCE$7T8(5sbEl0eo59e;er98CN2jN_J z#E-~+ImXva`SG20W)%tLuoEbktfDM;pH2V!R~`V^4K3K4_X=x2>z$ZXp5Hth>dU;^ z@j$*1SrqDG8Ua^%D4$mP>OgXjYgsEOt8IN?bd9}Mj0Q!9JhJmJB|*M4cHIR#zxmdN zH9>1VFl9lM7W6VFlcrUdHe+Zd)GK*kzA4k4$qES(FT}x#2rk{a>U*V=^1#MHIh9f{ z0N*s7PpKalVc-X$LPrsvQ%fdH-u+n?r8<=ZYKkI11F2qN&;?;JcK>d~pqMzZIab_p zoVMb5;-V90Gi&bM4kmCbHPj1dNvsp^etbX1!%l3E$8wh1+u4r&y`9+I8O3Ngh*w^I zDF!{v>%G_-u*?uBy)n_cvx@1uul4>b&MWA!oDWAz;G%Y`7;W!ad62~d{}Gr9ikF$- zf?;viTOXhs;f-2l`yy~tJku6pP$-Cu)^d75Y1P(^E1{2M^P@FHGnhE+mryDjW?*3h!K4vm3I?n#nl2isaj2kO<(Blt~Dw_k)cf0bqc7IgekY9I#bEWMR5}El` zIlv~Nx|rwL79Q0D(;$Vm`5ekCBY()#!dYb2?Rh6umM{+cG4Fc|c3}05@?rkWv@y<< zJKHPyS8!I#Mi!{J& zxJ`kD=c;evjwfNHAx=?5J^7|MvUD@0=XzNw*-ZZs532+DaFG|gP=ZI`{DZMPR0Zlu zWq7Y!wQCV2zp1>CcquMv3V|T3;u2mBBBaBJQ{Y$rm!G70?v>#nn!G@Em09Ho4tQd# zv$f-h*wexAxn+nMK}gv-s=h6}(1||lf~+W8&U~b4DF(t@>tHVOP#A{-wG<4@$XwJ# z^-01+T=BbI?_yLuU9QHlQXEFZE&Dp;+$C`kZs5RE4=%s-7Qq5c$=EN~QLR#nRMSMs z=oQ(F+{Sy=K-e_9PvNLdrfQR$b##}Aeb#Q60VpjFcGGp7EY6~LI*DQL;Q#CH&USRU zkvzeB>~R(?DXFrmF@r&0%mCBCY`O>RF*QeopWN382rrm|D56RMI0%W z%2YN3Uyx23jYgxtd>84udoiUHpN+j@b-vh=$v#J7>+yBp-S&W5nUj+Zx|f4MAmkhI@dcYXK8#ntlu z;{9@UbGv;1;JxwyPqE-!AD_xBHVNbZ5vQ+=ON()=NN z-jwl~D!jnWUf<|2UYZj4mP$)iv3JM!=5=vl*js_x31h+jQUfCWRC(!x3C9PMa0RA+ z(SL~wY~T%+TL)%_+osRYJ!p2{P5hj9rdhh@(hcM84NK*792og4Zk&PW1B%+E=~5?W zAROlY|s$rrzAfQJ!fs?hC1Ux}-;W~V31y&F&uyvo}jF1xvTx1)#QXz%~s z`*+KSix112@!f~_Cr5R*;_I)!UjFr8|Fz(qhj4blDuFW(TwXy%3w<~1N^yy=nvG|1 z>aJa!3p(;zaqgZOV@~PWaaV=9?j&w%x57URg2vT%LIi)xc15?zsZ|qj+S6)K(NMMc z4gW)AT*C3iW6n!XgOpO622}8H%#7ONprkCT*Jp7z9W#tA++%M^T&*|^no?%UBDDJ) zI;w$3JqypU{6AK=-~%_;WyXm{EA`GJE|2j!cAr@W-$L*X0; zABE9~2l99>0ay3&0UUxU{=oJI!(kXGZj&SZJKj$8qIAsViu_elk|L{0VL*Y5f1Pey z)1b`nA%M|PQ`>rK;VOZqMLeCzn;6nNOi@>`J1l8m`Q4j;{D)L4aOT8qX-yb-msu#!y7VNc@6esyRVdLwMB1b<&FtBs=XM- zb;rY4dMyK^4TbtH$DKDO`j*CeRa5)xi#8qV5-i&~WW(y4*E;*Gg29|hzjbksT@*KT zJ{2eYmVwE^DwhV7M(3 z?FXlewWZp3b}OWYW|y#Da`9O;cMFko8F3|2mWl9Gb zf4*PsFySWy>F3c6Rj(lvvrf>D!T51W6Aqr>5*Iw_$H8Bj_u%jI0KJ--yusV$wIP}O z{HCV|NwEFgD;dEN_AQdQDy+Qp&gyJibi0r}&K3e~px^j9@ZnkW zMZS7H^X9sE&>u)UTHd@qU%vU%AD2IU^QYzA*}LVdufAHo{OXG`6c{1@_HX}IOZ;Z= z;%#xD?b5-4VRnXgK9@T4#cA4^XK5?nV7Z&NG{A6$Z{BvE+HK~aaPyV{RaxtqE>>Sg z4j(W4oQv?roGlsoo|=`7<2Uy|jERrHIqZ36Oe!F5?e1%yz(%++sbDiu62{5EP*#<9ca#)msW4%2v6oR?Nm=ipz5vNqRNz$aDVcd{+S!u=5^Cn&QAGvT62xbPz%as9N=jiC0?oP_rwjBacHGd z7#`R6SHn0J1IM@;mLhUO|FZ8YJbHh#oE%-0Az`b@Y6QLY`KOGBqdI_Dud*H=)~dx> zecJqRS&rViU3)q427=kxfwM6NQ?v1d<+4tT_YyQd$B`Sn$HyISBg5${2mMydOU8p$ z26E1r5a#zDZR2<5feiVP-9F>sQ^{=r`dqrWzT$Zpq2r(?-hXm_UPi)0-OIhy2iENO z*5}?du>MuXU7r)F)eC)y>?{Y%AOH0Ia&diAd(X9^aCudqUpKkC9(}{=6dVr>0)4UW zWjJ0OmizGjX7qFYnuPVmW5*}p`tFDHG1ft(pp1ocii>X#<9bI^vBuyxQ?^x;#pp^yK3Q7rgSvpWCG4DyfY411l|cDAW0erRwIq zhx&8+I^2I};~`zK3E%&Jg~7sf1;npixpV3#VNd~%nLwSmG8~kC557vQLoofi%$N&^trs1%|P>|CqTb;-_mKVH304a)U8#F!T~@jgocqWDzN2 zZ5KT(*Ed$7>^(d9#b9b)-CA*|1E#$kn?WDGuRCuzB{*g>0E$Ie|8h}RM zO}P5H_8MDI(TDOSFO->-35Omy7`5~Q{X*x(0Oi-pSm{@J+R$JqlTYWZS})T@<6PE3 zzp2$9uX16RcB;F{m+PzRYBSq>Ro83(`VN#l`x-C27Hih7PW9%G z$;a*GG|n`SG-Jz|#jmUit?f7SSQzi|d7daRIAUCtcxjg*x$#x3!c&_u5a_Qu2<`RQ zp_AilA7xd0e(auyf_mm3(WRPR67OfSj%c&ewF8tuM$v6D?k0>=eD8O6#GF?Qtl|tr zy`0#_!Yt(AZmzBi1{{Yu8bm`7>^xWE_*Z2aCLKKaB4p5)YwdQ6$-{O|-0AAIA0 zvyT`WtAD!Acywa$@Yiq5E^-oB`Jt(27Tp0aFD|N+M(|T+aOiCKmDhxV9}bsHnSExV z*jAHtvyl3hz+IoRuCp9P{rEn_P_ngcVNY|gt-LZydl{M(F@gwFn+(O3!sK7e{aB+I zI1;y}H~5Nim%UamaP{e$QE)dbBjn`R{TpspJT9Yw!DiY0^_y4AneU67p43?iZS9qn z`!Y`NmVf#E@0Yg@aen$q-LX;II1Xgin+(Tw*-edKlM+fFVJJjys{O2_*t5O5s`hY6 zj`kx*Ru;TA$IvqPGaPJNU`v@;wk~XUNwdnw7<2!HtpO_&WdJzAZnk43qwkZ-icg#7 zL)i@$it{RE(!$x%6jipkwe8XhfpmDYe~mfuoojsx#u49*Jd(SPk6UcbnL%KsVNHVu zAA&CZ14P0-xUMtvq-p2s3kK-hehru=25(T*pTOX2^_B5O+uEio+3kKxzRM6E{dR|U zJd*|GL=J@0NBQ9AXW`Hozvzr!n0)E;0X%)2e6{Ntw(`~G?DVuIASs{Ut_L__u<9%A z^z^Lsx>q#~*7S(g0Wi)dp!4kHtmG9B#QVvsPPNK+cvw0cO@1bXRz<;iGv~wm_sb`r zz8x!%bVchlykg+@eF*1u9|WAnI=4{%;SYaUzWCyc<-^5~%l*S;-PPcgRrSvS(6qy8 z(b#WPT#vq?uF7CoTwMNG^k`#rt!X_@cx_Z&tA5*a6^y8p)4GR3zb!rw*@?{HA6GmX zTNm?SiETl-o?})AFTBYH;h^q02W5 zGRw!{41|oU8g$0{wJEdm)d94Xn#{7(ali`aS)P<9&2nh@)$w}fN3irew8+QzD=W0# zToy&)w$IiM)ZOTn*L-H83VGK_$#JzzpR;NuHjaE$=QqOf5glk#L#t-SkzF z=KF52skn(*yI}C(P7e-1N9+#jQ2@XWrXL=|4}d9Czfmz(a;Eq>Sh-wKbH6Odw};E2 z)rA`hQ}ynai$8u}+ZtAO9H6uU;q4WxI=+MPzrOjgl-O%4Ircxwu;|x-8NFwxuS)Lb zwwc?9QJwZgm+d+RBt<6t(D#0qq2OMMo#94dIS0asVO*4f*{e5YEI4;zrZ)x~xY4jW zZPynub=)dnX$bA;MN->~f03*5wDC?NoTkG}Nps7*EJ- z)+D_ezjT0AE%5c7kTKc7M}37aZEnv@_0qShanQHz`*yQk zqTlOAgt3}Y`fSYlYg}+o$i;`kM+>+b-n9^In4Hur*?;=eH$|iJy~*LGN^Igf_)ZloyTzQqxirQ#^Zp2m5u~^f2&CGP(yy~c& z!a0>4+S0kD3mZVeCmucUrlEr;_1fpBywq=>N(=ql{K-q8%BULeMc?1I@sfP;Lnoh; zKYWNUzP3C@TAd>qaoR;$gd0wS7$eQBSAMGuI_%MP4~U^JvM|$8H4H=_5)k~K|Lf2F8SkSWHk=-}GgiZoH#bgJjZ?fC z>W-6+tG;sOW*ws<9qHmyyDwhh7;KSF`GxW%rh?fwtwaFDURCNT2DCm%g! z>+9yaZ|!76piMpa+9JCApML+l<@79vG_CIRYEkjb>(Iw-_<7b|%0x#QT6H$0ji_lj ztE_2T56X%>gh!rR11xp@bmMMbGFqf7OT7B@gnFF}cmCU7f8_xI&pX|}EuiONUQWRf z+NS&gS_AZGZ51UR6*n3o0uHzZ8%FvkHOuIBNiQCdEtsA~ zQ`DmcuQfFk{cU|S@6fZa}HXs`;wM|10|)YMT+ztGlgR@i%n>TU!`o5@zO&H zrflVbw?$p&EXMbX?(Uj5jEQf)`KHo+nD2LAys0w=d8^CHO5<>d`gk{ag1c!o8SS?q zYQ>^fs+*WvH=pC@@&mig>p8RqCePXfzO73fKVdLBOYtaoGfWMJenPbe-3~qBl|SVtA!Wob z9*xcpCISn&!*ibDN@unr;n(*FWQ6L|59Sm#D3zgCw=$Ih(Z)p&Md*3Tg;4i5^zkzz z<(^_01mPV;AJ8_2U7FNyBWR1_bKOJH^>>z|?k%Y0U^(iOl%-4=76$r^hS7FaN(bGKR|wPYl`@TBkD-_ttsu7X=xJW0 z@IB1?2Z{?p#e1T<=2)#>zu^PKmX_=E;6v8t+3*K5Wm`Z>$c4 zfAHZM1DsxIy^I$=sNsRpR_X?7!I~(yitPQz<`@w>dMa#j4+>p zlQRr>apQ*7vE>y!&HGGd8Ar{pU)^{J@gd}~ucE7PKTi8;PsOxJAR~C?zkmYc0we6l zmC+DJQ<51OM|!Ow>}I*$2&ARrM|tr2sXGB81fDg5I33=z#y7L_lg5RPxxvsB9AJV6 z4h=o?SX^M>k~j5>FFkMtJpPH>{l;=8+{#N{e&Psl@8vZw12fY;mlHa{m791DPI?44 zuV~gv!}y4n^zd`X4|EdtTE^*h1T$Q36c~5pQCbF{n#k^k;JNmH`>;V)+rKpYF$!j< zE)Cx`a@N7hOKA`?y_=b}L3MT0Z!;Kz+o&4WdhyE*()88Y&FSJjr;L5DTl~Qloq?|4flD3YRF`~P(PYAu z-l)UQeO`m0@7ll4S9OFf%QzDV4qiGT`p(k6G-V#UP^4tf2l}%7PwyJMTlaSz={a=d zb3d}!kz3_%K10oNtV25E+R5FgGe7b0fEAxSJ6;W|m9pOV=fh1b>dZi^3|Ok+4(b$ix;Xs!#sEN{avf4q zrxv>I^r=JOrKOXBt!)XHvWyjnv;{vaA-g=on8`{*^}JE1x>QJ~C|b-Ix{2mNZq-hY zn(uG-P$y1bD2`#fAu>IR9DcaG+zj_Qf84`wy_PxTw+>TQdHwpRb(+3~;_(0yY9bGw z8(ZnbYTG(EQICVEH4O-5EfM(a-u#YTWyW*uW0Uhzw2fb%^-JGT?%XdulbN{L;7Qy+ znjbwCy7L@A{buIL+a4KJqpu4meU8fAI zCSJ*gSAY2O%P(t{qgOb(ywIdfVLaiAm!q!RI)mkuQM68zkl8}oWe5{CehXj=L}-Us{QOJ)G;nAM z_g2~y^VDbHWU#1JlH0WnS>bT9pnRJFe=s-oiy{k+=qUII{NP0f1*J<*hmubx@wy)v zOL)qta>nXSbs|e{!(tvspZcX8v}vChMbkmq%<^}lunRop!QUjN&S1PugqhOH{iZ6s zm2x+3_|(z0eZiJIm-ZM&UmJ~XlxaMF8tB{7 zs%@vb2abM7TjcdZY5I=0T?}S%DI@UW=l zveIp2Olp~cr{!?ygpb|xkbptRE@0$-H zDcJFO?9fo1(URXV9+ZV{>o8^qaOY%kci4UnNWQqxm1jOW#LxAHTYdaOvrbnlHx4|F zciH(-81mqWI|MGS`n&ceRb#oKX4%S_j6gN;-TQq8U%?HzO1GQyqP_BKqq#zxaPw&s zIUeEdVSRu4$70F-J@F|5R$@aBzIOi{%e@n&;w8GX9~FPOOKEdm)-{194op@aCVJ8L z5&peIR~rs>x%5k5&!_n=NPR?Ot-}_0pUloMFSRc?>2L&3ti!~XcCWBX=sHjtAe3j+Ds2R zJ*RJj3oN|hQT&vZH2C~D`IMj4TRI1B`k-N2AAl>H6#m|`?7XGNdJr_zFHLsq4wBZ7 zrzfX%9>5K$u9W`n`|k?xzx?yR6rJzhy<6VCb=Z;7(`72Zp6_j4T-BRlXvC`=p2VZ( zJDq*BeD?XL%h_2QNUvYNTK?OA`+t`|{Newr*HHic-~YV^Zgsr!0j{fysxSWGk-ECM z(z9~J!5_YN-CMUt9{Axedck@Yzy8*@TJTkTc%HI6|LQ9bRq8MJr-JF)@qZ3F4M%zi zPM8Fz@QfQy&+#j5)A1`$;j&i@zTU2mHmtlFEO~cf#?aKU;o*v=LR8b_imO@kz-UlI zf9UEweG6L7VpxjKPr3o_k$?T=y;zNIaje*GXeEjpyo#1=%pw zA@P#pD_s4?gYwKu@nCkTySNGuUIgY*T_>TIUUe7>v=r44Y6b(Rtg3t7eWy%xjllIm!)wB7L0^q0uxqcZZeMEgMo%}?e`1wU?2WQFA zB%k28C~n~`9&rYcz$z>9Dh*EQ35QmG2B37mIju5`{OFu%kmfmqw6ZgBr5rQ_pLF3o z^OK&ie5nK6!g-dKIt4yBrE&70GkE!_mw3YF9K+TzJ_8G9ZO;x};(mo}F(;pGYkG%E znfNeoB}jv_wnI)IYC?5sYtbsuw1SK-MhC|Tajyip|Nh_qN74RY{>wkt8yVk!|6S=~ zvo77yQCp;ywGd@U6lPCV6PTCTnz#=J0rjKJO4eB~bpt zQH=w`;|>OC_Rd(qV7pPBAy_R%Qs$zhUTGN$+j8+Z@FSo43?h38(_;&8ph6i9pk`dRi(-@5KpI(b)cEYRqh_1D>wX3IJC%9al4sDmsJ*a?Wels zvlXa=R0hJj1V&pP9WG}qa-DrJVYgcugJ*m-P&wgo%H-E?w0X5uw9+Fv2(?dr_4=6m zIK=Z9o@O~dg2HB1!Lr!Mswd`t`QskA6|HFnT z8JjcB;TIFTPBZvlI~-Z~C3t7q-pSOEty$j)Q~2N`i~QMnPMY}J+_ORp3@b1=`CH=w z?v%rK4e>0aGp+Ea{NxM$!5i9wgP%HV^9Of)=_N8HK-IfS7q%33-|IUKnlHV4o`ZdI zw|+w-eUMqP@)--^6{QpzRkk`vQ#PLUS%$U$!(4CRIc_#?);&KvU+#CGqwdLy)lddT z>6__*IlY4x^xF35?TX9di-VQulUMwA-+f=SS#_{2@%5z(qmkbUPo2~!vI>9NxM8}^(!nMU3@5KLV@QCJ2DJGk{MaCb>o>phP?b=_XSOY>_CMht zCiumLxeoMk7`FWdc4l~BI@4j@hu_nv?g^ABhq<+~FeyKI)4+VI1ck3ESJUJ1-1KO@ zC~|(~Exh9fK{#04@Meo+sOPK#H2$Wr!t+XiS%Wk9M=Vf=(5j599_li_IyWk{d#j-a zYS#Rq0d8gT<*l-+6Zh83T<`ScDh-N4zP7=Re}g~i489T4R~wHdHY*H^{mOpZBB!t! z2=dskKY#tII|l{B(jVVVh&;SH@At$92~EFxh!~wGX|u0BV0Q93Cr;tidy1NZZT6-9 zQ^HRQ_FEQk%os{iDu2qZx(tl@K1c*>&Ix3O-Alxjfq0~h&O0cHrY>wgNYFH{xD#SP z;NygJTj&ngHUY7_wTwN9f1N1p`;sH)FS%LgRG%2|+kBo&mPR_h$~*Hn;rNAPu+C(I z%x3^a6Sxcrp<^xs%v`_F6hGz~ec(A_jryE^bWlM!wdpO;bcH^aVG3^>?t;)&*Qvf^7v0d#l2o5fK5j6`!-x zd3acFP=Ey^T^XJk6~aIK@NRkk{-Orwv$NA$t!2>t@WT(w_uqeCJrca_rTYi7T@lfUS$nVd4BW8LouT$eyZ4rp#7?s zTy>reW72@NbjP5mU4#8fpadwLV=N11kj$9}!k0z}bJG}G+Ta5lxYR0f;^#7B;RnAo z^!tgMJ741X!4UyL&y2gvPX`4|InUudf%u! zI4(HUC+=t{uG*?_R)zAZLwUYt8K`A>@Np{mM%9GtfFWOb+BDl7qXVVf;vXI!9_-$^ zR+rEdAI_b8u0=lzg$Iu!pFA|ro<#qI2v_DthE@w(rNhI~?r`C2Da5weYL%wq)`G&X zHRfq3)XM68jltqpw9_6)!41Qq`q&dxa!!r*Bwa+XKTRxJL(J3Uze-H{&2z{;*1pa= z^#HW?DS47_AAa)XCvBUayzz&bTl#=LGf1Srz`+I2j8}Zpg+tHQk1m;UCJtWkd9K0+ zUbyL=Y`X?;%8XCHB`vs8mgg7`fthI)1`Ahy;a8sVq%@kD^DvF|>vq*L>-`Zl#H5SB zII94sS--T)u?3-CwkvX=Ir-GN4yxAqv87fQYL)cvuJSr7foAz#%;Z(c3!jU>x?Xlw zGMKT0wPM0xh(1@gpJ#ZxocrIt@qiJngjN-q%091F0?~&AGt(_xgPCb;3@QB-q0wmx zM$oIH7;sNx!E>(aHwwZqRuxUW^7l4X6ZA|xvbERMlL*>{lKK`ISp>{ zsds#F-u9@i%plgrKb&@gBec82A?{HhLowiw5PT&+-p(YzCpIf zpW(O3RN5%ZK2lZXi{j@wk11j?NTo!WjqAT{a{KB<`_e@6o z(r@5`{lr7A({TkFV8+FK6tnN6a2O;xWL72@$M@t zF!b2m2C0|yz(^O*MGub0K_|Yq@sK3By+h;@pIC*xLzkx^Ysv{042h8Qs1&b8&yUeE7hqSn5lhCnvUA@9GW-&1sfair;`oFqCf2-3eWSLdW$bQ>kH0n-5ahE#c&YEp+Ck0{&M&C|681S*e~E! z!)cH$=1k8KviejubvAWkv)N{FzxESc@`QQPX|1yp%ieuZQNTd6Gcd;Oh*m20HKP1& zytI&|ocMEti}O7H#IayGf)d)`>`t%_x~VU^=h=Ys3ikKpmnN?=A~^De4(WdD-YU3N z`2|j%f*TfZ!cidc(Vev96_>CyUs)`pZ7ANP@vR&jjrv!-Gb-bYlJcUXI=zJk`L)CD z)7h=a(UQ8$v!jhXjI$_DjD~2J8NOQKXZ{apGm+}o1dTar{y3Mzr<0x zC96Yb;EQbX^*4Uxjvqx`(zgHrAOJ~3K~x#vmK!|!rhL^$$3gHJNBTNk(L3qS;I_YQ zIi8g@9b< zf~~%BP#<~AE#*wRg8|U0%l3sF{b9~aT(%e7v zsb39CH6MGE0)16~oycHHF_}p(mC3P?nz3Ly)0q z)Op;}=4|D0o6E&a!%Y6dU>9w5uI7riXuSP=Gj55CK*z5(rWB5kmLmqkKysk@Sp1^_ zYl(8lGbgI=Yo9%xre|J^CrY*3wAvYussr`Pmsc7UfxB_ShY_?yZv43}o22m=uI*2K zDRvCoPe3ZZ__5B&0HM6|2odmsVQzpY*q)Cle2sJk8aNB(&Tt5&&B4b#`7bPdEpfGn z=D42}{&?BZ4g1kiw);~O>r07oWP#lE&(}tKIb3?_lai-a+9@|am@=XbN_Cq5sQU2j z-A(l^xXFB0OqBtr!76=*&lT)6m?utI(&CHXE^UhoO?>IW?|BZV9DeF8f9T+&PkLa` z3^s9$FRu7A8CexM{wdc_9&mnS%)klPZpCfb*!pdqNAqgqt*^sA)D|T{a@DlUy}SFc zoS(m0zWm~=dgJ25#rx&QAHQGTzyDD8I2<0nTK?ld{#bg+2kOwr2su4-e!&WfFX*=R z_0i7ee~%Xo8x&dDzys&Ptg^N-(E8uEHC#sxP4jS-z4TabTQpCdt+Pmex7>@v*T3dH z4+!Am&ka1suj#ABEsikpD_k?0A?h1AXa0!`on2;M)FjNwm!IV=!sCDpnz&jj)97R7;n1eC(d*83?)v(=zA7hQ z%90+39xj)Tc!s|PyDdsIoSl!iF$QhmLYo2Hb;fwOE2AZ;S5IosakY|X9#rSk+0IXE zu%6T4IzBnBJ0b8txI=sRY|qf(etmOYH&I#{I2#wZ;6Gun6V1bl*RDR4;}uY0ct2cR zR9^6$l?9xs{H*5PpVXEu`C8Vj32NXqURpttzp?D-S^eVg!WI`D!hFGifN$najE{8A ze7m8L@A((_JxNuc!?ORI=7woHpN7TEX@Phe*C{{k|I^&5+0*32s-$cw4~W zNtWwu&vXw&w^2sN=egC9O18*t6UjnbbtLLb;~zx%fI9Gwo2w=&cV+`IShmb@(oo-W6K zWqH%$vgki6o$YN42FAtZ`{liSr^m~upS`WCwa?Cvm(M=?WcjDxe^F;5-n@BT#)X0W z?%Mq~y>+dgCZozmi!v`Sud3S%mpM_q>~Ze?;cj_<`JptVbos+a(CGAb2wwX1J3fcU z%J@64JamP+Vu-D_9|EAxJ!ogyxU4%cHM=p8x~HIpD>WBuW$ zOF+tvK|^BCLMeo1R^{JVy`foNO!e#sHqJA~D`*!UjRHoTgEHM{xkmMVxxLZxScFzh znnxPmih(>_N;$}x4M*2%`(z|C2o9I!%Bxs=4nUS|{;(`3u4lz7%F6Yy58hm8?6`)u zE^y3{C0QwPyP^BpFRym9{`x}c5L!YOVcXRpvx7QlS9=L%Nn2998^&IYpLF8lUsF)L z^xSV+S6}EukL0A;QoIIkMWQZ>9qmyo5rHWd^(?IpYz`i$>F`+CZJ;@jix)a%8ygus zhO!@c=eD22gZ%RFjZ;S2a!!8|PD4LQ=yvY!xlR?^2e*sc2e&V7m*Jy3I! zEU&`Rc}45EoG56L9+(U`soR|HHc90aU&ka3p1_6&Til-MrdO|CS6+I-gbS|VS8ks1 zTDV3P<=p#jku4Yfuz4<@I~2r)lMYIzjZJnKJ8q*a8gGvlH%u~M&}l$Lx6Ak7JUi{z zGL_r&pc46PRU;y0q>V&V&Jdlgq<=wmYb$zu#9vx>t^ua}RTG2u#gTuP8 z^3g8s!B+BJUw)`&CS`FY6`qHDz-#qa{`%I(t$Gx*Dh@9guC}+WczNSZ8TkEoHXhc& za96n@K-JEg+Vc?Bs2Rk^X{;8C2uCk*Nf#g3!ZVPnxOhJTmv96&dHE4Q`RB5d2h1Fv zpT(E(-`@5Igj#}SsD^<1^5UW_)x5fMcVi~dvydu}a!th{A1-xfJZZ(<{SQuekC_zw z4(Ol*F0=9|<2ERUaWjmE67k7MN}W^Y);BXJr0P@jOiDn#l^OoY8=B)MZswn~IbB-f z;LNY$mcHjgoM+_)m-^{6NvkE@VE}-wct()*z72n+!^6d&!_wF1v4>MJLtdvkg#MAd z(l_v<<0Y4}o`YF?!gCP6?fA&!b5wq;{?Fz6sqr;14B)i&?5F+E;pZ96Eo(B4QG4JB zT*^0~Y+dk+w=GAU#OW(ZBVqcZ=iP6kYeLUH`Gs3L<0QB}N8S==Ih#|T6f0l;1QMAO)Ee84e7E|qE#_zcgsyY~XeRIEjxcE@N;~TGn zHjmK%;RD0+WVybvl6+HdHuVtluzd2#+vV)^csVYe*9MP?4m#=<;N`H|o?$b)W^LD- z(Qvk$EmqgkeyL}SS8Z8gD-T0P(~gfZ&!zm0!Wu0ujQ5<`Z-qxkAX0&!ec=c~a9{$b z5oeclaS6xohF3#UnZ}UhixY5VcZt;^IS`u$2Xb>XP6m?|FrQ3@gv3bB8 z=Wv1}erTP`2rZXamvtAxJkWyoHC9`T4kVkx28Voeze7`8()5Yom*%+wc?{SFUaEf06Mbrla>wm^>#kC#K|HV*qt1YV@R?USjY2dzdOo|c?-eY&p2 z>tUp!wN@#H92Ta0TG z2hS;l+Hx43SQ+^-2EfCIpIo((RgbZRC$7>df?cO?*#X^C$ooVWUunm%KPumUhhK9m5Z9fK=^!l5Oq(^iN zr4c+keop<#AQw94{wmI(nY?^DN_@&lUl%w3q)Rh+(Gj7y0^^@_#sgRN7QU#yh7n7@-h>BS3jHnoMYKR$eZ;HHre(!ae! za9kSSb7s2L*u!W@my(V;2$BK)>K#LbFwA2lZ zwe>KR$^6*N`=(C(=rOq9)o*uYj&Ijc=5wC_SKsRj!BN@+PISsD*fAIs{?YG3!}-{E zCx`j~HG+P>`>XCR`mgeXmk*aXx`}V_qf6kKVa@zK`xPxiuPT4m18_#S!U2{8!+9#3gwgPRX09P;ozJDezN07q-^paIJuG~ah_JFwD%FSu@QdSydA7reF@W;*FYZJGRF z^?C;+@scxu!&|%^Mo1-0{DkxFZq*6srsIx|-c;VZhnwZ@He(9C1Vj5bH$Faiwfyk? zyXEBgv_9(h#piFAH?LpUWmC$vQo$wMZ~HW_W?G8>Ue*|fSn5^$J3Oi{77N2;HP~vj zu`CY!Z^C$}iVUiR{T%S&Dm>!GYD>kZk@?BP-#U%y$0c3GlPBr5uQLQvTwpbJVC384 zQvTM-n=%|CEXyslF(BX{odCsV$)`uByq7yS6Hgx6KWn@Us8;0wV^ zoO&zMGkRA(b=w4PPER|F<0}6UVoJDpxlvff^LuAJ+VV%6a8@HcbGV5HA%4oJ#PRQF zXz`?@$FK5@3$$!sc;5b?pm39CTbF(1&1DO}2s0GRHqSrObK2rLnqRE{bD4fl{OFg} zo|BG%LLByf#uCCS$~O+=&Ytiid<%Vi?d4)Dx*X5K z&$ShU`S0K(d{?0;;n7i4CfzYU_&5~-GvkmJnD~KDIfZw32}WDVVG7v5VH_Ma7*6G; z(>d@ImpsW2re3ic9X8AFg>Q5|pM=gUJo2+deHPZhNDyZyADG#t^Hql&r@qs`2Y2?g zx|7#sP*dlE$3W~g(Z?9;WtKWfC_d*f>K+A$BkNKq*FX2$2$mhq@Moce`zZCxQsdxV z4fYcsuWxSZ)NtA`d`|nQ-`3$v@y53BbV&`k=B-zY+RWN16mqqhIWX(1+}hS#c?(Be z+CZFNWTde(pw@dT)H}cMBYtQL-jp$?C+(;EJtO()@V`CC@ZmYi@bj0rzchdH>5p;Z z=JsMA$2bT~`zy`lx%)CBWIfkFuHd`8zN&+C>9c%gWTF%}c;N|Mo{M+Wn;ws8=qLC% zepU~v-y5`jN;+GHqi$&rG$`Adfz+E1kHOMU-|{NDJmUF&Gdw&Qm_rL)1qLksR(;3H zL&^v~X?}5uPyXl!IKhP$c!N86(w74Vr#SS5#f0TV)2Et99nXnxq|8j6vpWt>r!sO6B5<7Q&w_JRdKe*WTn9$W&n zk`Pk%`v{Ah!*eBs>o-6(YVgO5nBgs@5FkJC5zIMmE=&2~B9I1du;~oNypaw@=fSM} zDxE+Nn9EChRNZlujb8Z-YPr85<%v(Z;Y0B+bv7`M*S3oO`}@WFzo9=%XYfUl1Rt29 zBm4TcCLUZWa@Mq4H5gyNOxa||$>G8`>XQLBWvEl}W^98HaA~$T(0J~h=D|PZhrfK~ z%OBo_Px3b}4(c2A$79)4I$WHaKk+g+;mR*~2nKl1XyI3yHn#OMlpTC!xD7!{eXVcR z65;foe-%DtL>S&@-R{8TYW#u?eql8K6qmXsPx7UG_u{B`?I_mtkf%_=Q+TugJ;9^( zB_};N;?KCUvL!9)sXw0~%#qjfBkQAF^-H_uEP%b(mXCF|TABC!OIhHBIdqg9WLs*? zM1wOvc<--=?$jZEa0PF{kM@LrcEKSIT<8%G)^l`I@>0eIZ!Y;$c8rJ06Pem4O0{jW z_6_Ak(F;2`7@XnB?%A0OH(-wb2i`CB4PE*nobe=hN~FsRmsx%2d>4 zb+3aw%5`_f+qZ9*IZaT+Wx;iTtzpTEmB zP$dss`-BPuIJgK?aLSi(=!n39gNu_NY<__?7!@sqeNs>}Jz(>!tO#)=^5>40Jpp)9wq(!hWR@JmLAv;M2eq8PD<56sz30HFC$?8J+WIfcwDTbi@Gqn(OXmwN&-vlE{QTSTt^4p)!j*l@+uOP{N*-|YugXx3iI>W$wv#y0LW{Jn zNn+M^5~B=mrgeU<#O=RW?}MFiR5_!bAI(3NJEIN_bKGAVeuQiEpE+(0?<*sG*`~!9 zke**)<~)H*IsAkJpSZ)?k?%GLO#HxZ{p8&jpSa)%oh^H#t@aoX@}&-7_qn9cxC2K9 z<&%~HBZH>6&=EiR_|ogQ(RGDyY)|Z9_Vo7|mvG8YS@EUWcC0%9rZ!1BKTcTre!|=G z69;}y^IZC8!WF(4Xq!)wpUPcD_RKwU!e`Jt9_Uk!K{+mZJ9;QE;yHf8sZ&Vv?8kMu zf;-*j3BLHPC&$)C(Kn~J0R|o|ekpsV3FQWIJmKO~Ubb<(#qs&)zpF!~l{PNsa7V@U zmDm68mXpI*wRPq!gs*dce)3tZL@WpQ^;J%3{?2^JwnGs; zlvkB86j0(*A1e$@5oO^UUmCm&6Jfk7BV~FGwCdvPZ$o)R_=}cGtV$K0l$m;YuJRv? zM1fU&G6ZgVejFUKJ-w}APp^X*zDDW zK1-JJ(7^Q>kHh8qrdM;|R+e<%tAW!S6@9IB-sotB<=zN~C-3iWmiLAk)EvC8II^YQ z@_|{F>l#DE*~;kGH0jf>xpEj5&5Na06woI={Og%xx8KZ*U)^{>NHKfr7-Cq2 zA4`kU3lCWJA4Z2faiKMS#gk7mI0mhx#ZTV&WhIw@mASB^RlM2#T%J7hbJ|CI@beQ6 zJf01eV{t>LooLPF|}t1eT)!tO}W-gxARrw%To4a!ee$7(B(BsV+s^ zU~A~-Q(&`Fo$IyIStLFE=c|r#XBp1`GX^2e${to;;2i~wm3ZpPr~!_4F6pG4D(!gn|GGwli%(9aN2drUZ{-_u68PwhqjAv9Ga1tkb^Gh2f26^i?H=?7w?1$%zSYw4 z(z<43o-5mv4jBpPNnhi8F1U?BkuvzHU*M`vqmIcBPB{65Tdw-DBptAH)TC!yQz33O z+{&03lcFNbO6a{UXJ-c1!H&*QRt|GY3tz?0b4 z8#Ch=j>pGstYWcx2cK{ZjoUlt=K8X_qM^R#*;^gp)Tb|(%C=G;T)ew==HjYsM{imD zc=)ciAL!2C|Ng7x^_%nM;^KWxd4013E_BqV1Kcb*wp8ji-f6qagw=|%pY06obAQnN z1bymF?*AsnLzwxO_$nNiAyoz9GT3+qo5o4HhUF>`;RH8X))6%6fe9{5D#o$IMwtfr zx+-?Smr!l2+RzMNb^5V%6-Au%8stX(s%eCkGZ_(qjh}jD1wws`-l2p-d*GZ=khkhK z25p@n`^skYvjaPq75ssj`5T;gEG(_~u{%M1*k7&Nv*g(w&Yq&BMt(u+IC&Rridr;@&$m_S? zepf3GM@L^2Ds-tUqoTHde3^5!yZSlvqOANJ0++`#dV!|h#3`fv5c+HS2XlFk5ao(!nb{a2D?1pAOBzm2xp64Agn<83kidFuM&b_`oG^&MbuXvgjuP4U_rY zES#RZ@mskDXM7U0%hx?AHo?wMx$&!z{HssLKOX#(6#v2O*dJx()y7fpgA&@cBT3Is z-joMEJQ1Jzse@lS7h%dE3@&`Ryu94ug;RX+$?vo>=@f@o1YB4-`IX@?j0Sma=v{3{(ap}>2Uw~`K!Y5?%lhZ zn0@t6U(_>t(C(URs}Rb!LagPiJg9SM3v6_8#;M2#zv@^2f5m@kkQ9NynaDXD7=D_( z1R@QSPBerC9LB3mDir*QldeI~K^*v25ire_#Ts}^BfQEjH(GgqhP&_$fuDsH!?SFk z)ru-J%lc>^`5OP=2f-%jI+l8tXt?aCIq@u?rq0m>NBH{*J#${P6#e5$TG*8vzVX#H zd5W(FSw@$%kzP2)-TX=lKZ2*?QpUhv^$TB%$C<_TV53|odBN>2*TNUeWJ6%#*QUK< z(zF(hLpG}1u6os@=)`YrHf?jjqiMT-tD!ow?!53}7x5?%DecJ6;R!#uo!m6Ylm9dR zg!u^v&y$QIYTa3&%i0G6&vQ8Da`xpFN4DcaQ+)BM-#%R8l7G%49Ga3p&vRLGp2Tl` zF!N9PjB6i`r1M8J721AoUIr$((J8Er6DL#RQ%-Pr76uQ-&$D<+d`=Ud9T-~?;w>BN z3-H*=h^~^seSIyW;xnSpUR+PfWwh956TEF%8{?i9pTUze4h2i)K9$p z$-|%Hf?HhwmVS$2=)Y{TWl)$-xPyXENkV0ruY^>TK;o@;1&npgDg(fw+) zs89He4l5^CzO1_7S?YqHzi8Wn>Qs4tUM&h!i&0afcvfKC97fP{&*BYSl|DKL`24Qx zv!<=!fytq^U&@sQapL(nin~>&mfNP3YUVftI{pbm77X-@{e@3iu zo|C@I@D~JvYtEXukKupRetX(qdgz^Th6m5#4=f){p3#_a{F&}2VU0gztIck@=&7m*jBot{J$~ZVTU=(HGp$LF-*9a(%s8Y+QKw#oN0mwy^gROf zi%-=bcn!Qhs&M2$F}z)eZm+Do-df6j7;jyTdkoMuJ4OpR zwrzr)rR&FX_FYX*RwEK$ynbFc5{}P-*A}VQZ^t2RD;<3fYFTa%`g}r_If_+}@H;## zdZbUJ8CcEM&F+%^lZcS-5uDCjwchc5YKFWka zMdzT`>Osy%5J+Xp%Z~uET$F{ct3E;BE){2Jn(>(o^bNkpf?TB>c4Y?w(v$g z_&i4_;q>!tKt>C{X6xN6cC(q(O}$cRZ#+Ay70XL0gfJ>*wE3hKM>zN@-~uhl+dcBlN5UFp;ET({5N?uIw`!YBCU6PG&7 zw2Mm}Zf>t@ITNg3_!M|JIq`7LzW6$@I*cdJaQiiVEgywo-@m$^T3dB{?E_Komt5-i z9L&rM^mAMKQrEyL(+~Xn_wTC@sJFJ`_dfADYkjV4@!_8^{Bgo`itEjNV!AKu@?o`J zNkrrAy>kLXeujY(TG8fr_UgR!P;e(b&-yL6xqW9Cv%R!?l{wW>J=J&a|G@(X_?r2R zePrcCJ_2`ndAXK9_%AQMghm$$!4*2gYvq3W>8HiAz;5|?VP#|5$CeIv^oIKc;Esbk zFyK7%!N8-=kvVZz`?hXpTf;Wv;nNYv@#;zP%c zn=Zp^G;!f0pOeQ=8Fb3=p|>SkR^`zi&J%!9hVq5gN!fUu`j$~~GA7-qda#q zgqO-hM{q=!8G{(1@CK$ow$(aGp7bd=0_|2unspV z&j?2FC4ZhVh=B1iB;VypS+(V`DNA1I=@h{QcN$zeCvGmY7(ER()uBecgnNeEGiUj& z2ynqiP%=GcB#6(i0H?vpbMOnJ!}ClJTw6TB2TnNf{NmB5Thfwl+edm_@OVy`kemIS z4h1YPo}laQPX0Eefw!76*y_<4;A(ydFLiyZ zsucY$hFW6Kz%3rHdhkwoTW56kN=euI;h_hsz|HjtA7)>;>NxW{6;9^CznS+_(i9|f z`AyMN5U+oU3$5|tN|+z{n&Se4e(8Q(Xo+m-hr%y8c;jZ+!eOSY{$$W9*SK=M;3#UZ z@maGnvj#Ku(L5LZqkwH4L{r2mH|cYo4R&)KGr-8B?-exPpoPfv0pG9gn{Z z=e|5oix#c=xa;tTl2xvH=7&a0_KklG=+&GskR7~p$yg8G2GN>*mySw5U3n26@~eGE zKPuv%`G>Zm+r>zWH@+UKo>kwP1k+Dl|I#6~DnbV}!pK6)c!I_&w?>(}+^Z+Z~@E}CM9y#H{uT;F`VeD&2A%khae zKUwY{4ws|jljZdMWH~-Ps{0=9O9w|^H{En@*ULd&?bl=F?Ret?KcxR6f> zcor@?bjg8dE~60a!IAjcpUVmEIWBZ3E(#P5G|xWcAm6?aFHia7fTwVjW-ZI^8LZ}I z$;v$8@tpR78?KoK;m`>-JWaWHW^mv_o3J`YW-4*wUHF`G!jCQ7{JgW4Mx?y*DRY}Y z`O1GVK(&&36hA%8bWhQ{;EVWoP^)~2+J{qI{qb*G=7KvsDVT9)1s?4Yn5n2o!ITw# z&TUlFhQTYDk{14n%i%WV_yu1TlJ=kKl=S!pcl7(AmoF{pbOITZCQM$GBhH`!F8Pa| zsXu#mJ7VHz{BvET!y`Rq&vbz0;wMZ-uV^&9Rnd~0_QntiJQySaB5@ z2ug&~vv`dv&a<%m!Uab$jFo|G9mq4g;0XS0dci7xG6(|0pMRk#zP!SzFPb6+QlMha5wOTUZbnfsXaPn2$Fy`b5O_hJp2|jeD%!=6jtF&Q!rcOYV z5&H8y;{h9Z@kvX(;&nhiJY3SE)W}cx8XsKn$uAy!;!HFxB z9{kB0oO9mleS}}1F8P&;ck3Wu-?kZNDd6DXL`xfH;LT`zhK!%iN7T86+Fne*8W%rJ zI4Jhaatra)ZlPB>>XP3KCoZ%^zsUDe-RJyZyWgsla(Vzy*(>ZASV#M(9l)jUZSy3r zcIVJp$GIkhK_2n^)Gu-3{cNL%BU^Csx%T_RWMCYuwd#;FAg47c9#>?$hX4M0`S9V# z<>K;3ryXiV;`H=Wofh^VgBJQ2erg)o69rVp?YS2+G>K znv9Q+fd8aq%+AlrQ}&GkFJ~CiFpxQvlII!}pD7_Q@qroqGLY`_j?R&RF-mJj3kMgW znA3#QP{Mf1ft~$&nBs#o^bFvDm7hbB!6h=`)GK%r{|LdJhZedXH10uMg?@Nahv1&mqTOg*;GiI1;UGh#*G<7vShXuMVc(k@Gw=9PmCg@ukhYAU{bLA3DV0 zq2HVjFXrdq3J!E}p8YJ#+YYrwa�!Wj*WEZP#s|eEgcF*Vh3b)8A<=QOf@D#~+Jk zldMd%;KVny(;w)V+fcs9&}=-2!w>m5d4$2k?Qr~Y$)ogjJJsse$;n}@K4@Ft^Knb% z`T3jLmV(!+NO%FpnG35L+PGz?>(sR3{qgeu1Eo_Hu(s0zkpKVy07*qoM6N<$g8E*Z Ar~m)} literal 0 HcmV?d00001 diff --git a/src/static/assets/tim.jpg b/src/static/assets/tim.jpg new file mode 100644 index 0000000000000000000000000000000000000000..51268e32911e32bd50e3055d6ea2b07eca53cdd9 GIT binary patch literal 244716 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�dqtG)?;EJcOyp{}PdMfb@S75gIu2Cii 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 F{{iMEO+o+w literal 0 HcmV?d00001 diff --git a/src/static/css/layout.css b/src/static/css/layout.css index 1f6cc3b..3aa49b5 100644 --- a/src/static/css/layout.css +++ b/src/static/css/layout.css @@ -22,6 +22,7 @@ main { padding-top: 14px; } + @media screen and (max-width: 800px) { body { grid-template-areas: "header" diff --git a/src/static/css/module.css b/src/static/css/module.css index 8357b78..f28dfa7 100644 --- a/src/static/css/module.css +++ b/src/static/css/module.css @@ -69,4 +69,7 @@ a.button { border: 1px solid #bbb; cursor: pointer; box-sizing: border-box; +} +img { + width:200px; } \ No newline at end of file diff --git a/src/static/css/style.css b/src/static/css/style.css index 2668ab9..e58ce6c 100644 --- a/src/static/css/style.css +++ b/src/static/css/style.css @@ -25,3 +25,4 @@ li { h1{ margin-top:5%; } + diff --git a/src/templates/about_us.html b/src/templates/about_us.html index c725329..6b1401b 100644 --- a/src/templates/about_us.html +++ b/src/templates/about_us.html @@ -8,8 +8,10 @@