* Changing to a new plugin oriented challenge type plugin and fixing extra width on admin chal description
* Add window.challenge.submit, renderSubmissionResponse, and csrf_nonce
* Update admin side renderer calls
* Updating to Flask 1.0 and adding files for flask run
* Adding a preliminary case-insensitive key
* Adding case insensitive keys
* Adding CTF Logo
* Reducing the amount of team information shown on the main page
* Add better base64 helpers
* Switch from button to badge
* Rudimentary solve checking from admin panel
* Refine admin chals solves view & fix PEP8
* Compare base64 encoded data with bytestring
* Removing need to urlencode/urldecode in base64 wrappers
* Adding decorator documentation
* Randomly order tests & add test for case_insensitive flags
* Add regex flag case_insensitive test
* Add tests for /admin/chal/1/solves and ctf_logo
* Chals endpoint seperation (#572)
* Separate the logic of ctftime and email confirmations and admin checking into decorators
* Separate the chals endpoint into /chals and /chals/:id. Closes#552, #435.
* Challenges are now loaded directly from the server before being displayed to the user.
* Challenge modals now use `{{ description }}` instead of `{{ desc }}`.
* 403 is now a more common status code and can indicate that a CTF has not begun or that you are not logged in. This is in addition to CSRF failures.
* Update tests to new behavior
* Fixing glitch if an entry chal or team id isn't defined
* Markdown it (#574)
* Replace Marked with Markdown-It
* Update modal change (#576)
* Switch update modals to use nunjucks instead of JS to load in data.
* Fix previewing challenges after hitting the challenge update button.
* Fix edit-files issue with an unnecessary request.
* Fix solves button
* Closes#592