diff --git a/.gitignore b/.gitignore index aabd730..36a7e85 100644 --- a/.gitignore +++ b/.gitignore @@ -1,20 +1,8 @@ -resumes*/ -resumes*.zip +resumes config_hackWPI.py -admin/*.json -admin/*.csv - -goathacks/config.py +config.py # Created by https://www.gitignore.io/api/web,vim,git,macos,linux,bower,grunt,python,pycharm,windows,eclipse,webstorm,intellij,jetbrains,virtualenv,visualstudio,visualstudiocode -# Dev ENV Stuff -*.sql -sqldmp -.vscode/ - -.DS_Store - - ### Bower ### bower_components .bower-cache diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 24175f7..0000000 --- a/.gitmodules +++ /dev/null @@ -1,4 +0,0 @@ -[submodule "goathacks/templates/home"] - path = goathacks/templates/home - url = https://github.com/WPI-ACM/Hack-WPI-Static - branch = master diff --git a/Makefile b/Makefile deleted file mode 100644 index 573975e..0000000 --- a/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -SHELL := /bin/bash -all: clean - -# Clean up temp files -#------------------------------------------------------------------ -clean: - @echo "Cleaning up temp files" - @find . -name '*~' -ls -delete - @find . -name '*.bak' -ls -delete - @echo "Cleaning up __pycache__ directories" - @find . -name __pycache__ -type d -not -path "./.venv/*" -ls -exec rm -r {} + - @echo "Cleaning up logfiles" - @find ./logs -name '*.log*' -ls -delete - @echo "Cleaning up flask_session" - @find . -name flask_session -type d -not -path "./.venv/*" -ls -exec rm -r {} + - -init_env: - python3 -m venv .venv - source .venv/bin/activate && pip3 install --upgrade pip - source .venv/bin/activate && pip3 install -r requirements.txt txt - -upgrade_env: - source .venv/bin/activate && pip3 install --upgrade -r requirements.txt - -make_migrations: - source .venv/bin/activate && flask db migrate - -run_migrations: - source .venv/bin/activate && flask db upgrade - -daemon: - @echo "--- STARTING UWSGI DAEMON ---" - @echo "" - @echo "" - source .venv/bin/activate && flask --debug run - @echo "" - @echo "" - @echo "--- STARTING UWSGI DAEMON ---" - -post_upgrade: upgrade_env run_migrations - # Make sure a tmp directory exists - @mkdir -p acmsite/tmp - # Create upload directory - @mkdir -p acmsite/uploads - diff --git a/README.md b/README.md index a2538f2..7f3de50 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,20 @@ -# GoatHacks Registration Management +# Hack@WPI 2018 Website +Used chronicel's registration system as a base but removed the need of mailchimp. -This is a rewrite of the original (commit 198f56f2c47831c2f8c192fbb45a47f7b1fb4e5b) -management system for Flask 2.1 and Postgres. The focus was on maintainability -in the future and easy modifications for future years. +Rest is from their repo: -## Setting up a development environment -The `Makefile` should have a bunch of useful recipes for you. Once you clone the -repo for the first time, run `make init_env`, which will set up the virtual -environment for development. If the dependencies ever change, you can run `make -upgrade_env` to install the new packages. - -To test your code, run `make daemon`, which will start a development server. It -will automatically reload after your changes. - -## Setting up for production - -You can use your choice of WSGI server. Instructions are provided below for -uWSGI. Please ensure a current (3.x) version of Python and Pip. - -1. pip install uwsgi # or the equivalent for your distribution's package manager -2. mkdir -p /etc/uwsgi/apps-available -3. mkdir -p /var/log/uwsgi -4. sudo chown -R nginx:nginx /var/log/uwsgi -5. mkdir -p /var/app -6. git clone https://github.com/WPI-ACM/Hack-WPI-Python /var/app/goathacks -7. cd /var/app/goathacks && make init_env -8. cp /var/app/goathacks/contrib/goathacks.ini /etc/uwsgi/apps-available/goathacks.ini -9. cp /var/app/goathacks/contrib/goathacks.service /etc/systemd/system/goathacks.service -10. cp /var/app/goathacks/goathacks/config.py.example /var/app/goathacks/goathacks/config.py -11. $EDITOR /var/app/goathacks/goathacks/config.py +## Setup: +- Clone repo +- `pip3 install -r requirements.txt` +- Fill in all config files! +- Database: +```sh +python3 +``` +```python +from flask_app import db +db.create_all() +``` +- Automatic waitlist management setup: Setup your favorite cron like tool to run `python3 manage_waitlist.py` nightly! +- `python3 flask_app.py` +- 🎉 🔥 🙌 💃 👌 💯 diff --git a/admin.png b/admin.png new file mode 100644 index 0000000..ddfa335 Binary files /dev/null and b/admin.png differ diff --git a/config.py b/config.py deleted file mode 100644 index 23e979a..0000000 --- a/config.py +++ /dev/null @@ -1,30 +0,0 @@ -import os - -from dotenv import load_dotenv, dotenv_values - -basedir = os.path.abspath(os.path.dirname(__file__)) -load_dotenv(os.path.join(basedir, '.env')) - -class Config(): - TESTING = dotenv_values().get("TESTING") or False - DEBUG = dotenv_values().get("DEBUG") or False - - SQLALCHEMY_DATABASE_URI = dotenv_values().get("SQLALCHEMY_DATABASE_URI") or "postgresql://localhost/goathacks" - - MAX_BEFORE_WAITLIST = int(dotenv_values().get("MAX_BEFORE_WAITLIST") or 1) - MCE_API_KEY = dotenv_values().get("MCE_API_KEY") - SECRET_KEY = dotenv_values().get("SECRET_KEY") or "bad-key-change-me" - - UPLOAD_FOLDER = dotenv_values().get("UPLOAD_FOLDER") or "./uploads/" - - DISCORD_LINK = dotenv_values().get("DISCORD_LINK") or None - - # Mail server settings - MAIL_SERVER = dotenv_values().get("MAIL_SERVER") or "localhost" - MAIL_PORT = dotenv_values().get("MAIL_PORT") or 25 - MAIL_USE_TLS = dotenv_values().get("MAIL_USE_TLS") or False - MAIL_USE_SSL = dotenv_values().get("MAIL_USE_SSL") or False - MAIL_USERNAME = dotenv_values().get("MAIL_USERNAME") or "dummy" - MAIL_PASSWORD = dotenv_values().get("MAIL_PASSWORD") or "dummy" - MAIL_DEFAULT_SENDER = dotenv_values().get("MAIL_DEFAULT_SENDER") or "GoatHacks Team " - MAIL_SUPPRESS_SEND = dotenv_values().get("MAIL_SUPPRESS_SEND") or TESTING diff --git a/contrib/goathacks.ini b/contrib/goathacks.ini deleted file mode 100644 index a651e93..0000000 --- a/contrib/goathacks.ini +++ /dev/null @@ -1,15 +0,0 @@ -[uwsgi] -base = /var/app/goathacks -wsgi-file = %(base)/goathacks.py -home = %(base)/.venv -pythonpath = %(base) - -socket = %(base)/%n.sock -chmod-socket=666 - -callable=app - -logto = /var/log/uwsgi/%n.log -touch-reload = %(base/.uwsgi-touch - -max-requests=1000 diff --git a/contrib/goathacks.service b/contrib/goathacks.service deleted file mode 100644 index 2535df3..0000000 --- a/contrib/goathacks.service +++ /dev/null @@ -1,15 +0,0 @@ -[Unit] -Description=%i uWSGI app -After=syslog.target - -[Service] -ExecStart=/usr/bin/uwsgi \ - --ini /etc/uwsgi/apps-available/%i.ini \ - --socket /var/run/uwsgi/%i.socket -User=www-data -Group=www-data -Restart=on-failure -KillSignal=SIGQUIT -Type=notify -StandardError=syslog -NotifyAccess=all diff --git a/contrib/goathacks.socket b/contrib/goathacks.socket deleted file mode 100644 index 65aff27..0000000 --- a/contrib/goathacks.socket +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Socket for uWSGI app %i - -[Socket] -ListenStream=/var/run/uwsgi/%i.socket -SocketUser=www-data -SocketGroup=www-data -SocketMode=0660 - -[Install] -WantedBy=sockets.target diff --git a/dependency_ubuntu b/dependency_ubuntu new file mode 100644 index 0000000..2dbf849 --- /dev/null +++ b/dependency_ubuntu @@ -0,0 +1 @@ +sudo apt-get install python-mysqldb diff --git a/flask_app.py b/flask_app.py new file mode 100644 index 0000000..a830d52 --- /dev/null +++ b/flask_app.py @@ -0,0 +1,526 @@ +import hashlib +import json +import os +import random +import string +import smtplib +import time +from datetime import datetime + +import requests +from email.mime.multipart import MIMEMultipart +from email.mime.text import MIMEText +from dateutil.relativedelta import relativedelta +from flask import Flask, render_template, redirect, url_for, request, session, jsonify +from flask_sqlalchemy import SQLAlchemy +from werkzeug.utils import secure_filename + +from config_hackWPI import api_keys, WAITLIST_LIMIT, HACKATHON_TIME, ALLOWED_EXTENSIONS + +app = Flask(__name__) +app.config.from_pyfile('config.py') + +db = SQLAlchemy(app) + + + + + +class Hacker(db.Model): + __tablename__ = 'hackers' + + mlh_id = db.Column(db.Integer, primary_key=True) + registration_time = db.Column(db.Integer) + checked_in = db.Column(db.Boolean) + waitlisted = db.Column(db.Boolean) + admin = db.Column(db.Boolean) + first_name = db.Column(db.String(100)) + last_name = db.Column(db.String(100)) + email = db.Column(db.String(100)) + + +class AutoPromoteKeys(db.Model): + __tablename__ = 'AutoPromoteKeys' + + id = db.Column(db.Integer, primary_key=True) + key = db.Column(db.String(4096)) + val = db.Column(db.String(4096)) + +@app.errorhandler(413) +def filesize_too_big(erro): + print("Someone tried to send something too big") + return "That file was too big, please go back and try a smaller resume pdf" + +@app.errorhandler(500) +def server_error(): + print("There was a server error... If you're having trouble registering, please email hack@wpi.edu with your details and what you did to break our site :P") + +@app.route('/') +def root(): + print("Someone visited!.") + return render_template('index.html') + + +@app.route('/register', methods=['GET', 'POST']) +def register(): + if request.method == 'GET': + # Register a hacker... + if is_logged_in() and db.session.query( + db.exists().where(Hacker.mlh_id == session['mymlh']['id'])).scalar(): + # Already logged in, take them to dashboard + return redirect(url_for('dashboard')) + + if request.args.get('code') is None: + # Get info from MyMLH + return redirect( + 'https://my.mlh.io/oauth/authorize?client_id=' + api_keys['mlh']['client_id'] + '&redirect_uri=' + + api_keys['mlh'][ + 'callback'] + '&response_type=code&scope=email+phone_number+demographics+birthday+education+event') + + if is_logged_in(): + return render_template('register.html', name=session['mymlh']['first_name']) + + code = request.args.get('code') + oauth_redirect = requests.post( + 'https://my.mlh.io/oauth/token?client_id=' + api_keys['mlh']['client_id'] + '&client_secret=' + + api_keys['mlh'][ + 'secret'] + '&code=' + code + '&redirect_uri=' + api_keys['mlh'][ + 'callback'] + '&grant_type=authorization_code') + + if oauth_redirect.status_code == 200: + access_token = json.loads(oauth_redirect.text)['access_token'] + user_info_request = requests.get('https://my.mlh.io/api/v2/user.json?access_token=' + access_token) + if user_info_request.status_code == 200: + user = json.loads(user_info_request.text)['data'] + session['mymlh'] = user + if db.session.query(db.exists().where(Hacker.mlh_id == user['id'])).scalar(): + # User already exists in db, log them in + return redirect(url_for('dashboard')) + + return render_template('register.html', name=user['first_name']) + + return redirect(url_for('register')) + + + if request.method == 'POST': + if not is_logged_in() or db.session.query( + db.exists().where(Hacker.mlh_id == session['mymlh']['id'])).scalar(): + # Request flow == messed up somehow, restart them + return redirect(url_for('register')) + + if 'resume' not in request.files: + # No file? + return redirect(url_for('register')) + + resume = request.files['resume'] + if resume.filename == '': + resume = False + # No file selected + #return redirect(url_for('register')) + + if resume and not allowed_file(resume.filename): + resume = False + #return jsonify( + # {'status': 'error', 'action': 'register', + # 'more_info': 'Invalid file type... Accepted types are txt pdf doc docx and rtf...'}) + + if resume and allowed_file(resume.filename): + # Good file! + filename = session['mymlh']['first_name'].lower() + '_' + session['mymlh']['last_name'].lower() + '_' + str( + session['mymlh']['id']) + '.' + resume.filename.split('.')[-1].lower() + filename = secure_filename(filename) + resume.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) + + # Determine if hacker should be placed on waitlist + waitlist = False + if db.session.query(Hacker).count() + 1 > WAITLIST_LIMIT: + print(session['mymlh']['first_name'] + " put on waitlist.") + waitlist = True + else: + print(session['mymlh']['first_name'] + " put on registered.") + + first_name = session['mymlh']['first_name'] + last_name = session['mymlh']['last_name'] + email = session['mymlh']['email'] + + # Add the user to the database + print(Hacker(mlh_id=session['mymlh']['id'], registration_time=int(time.time()), + checked_in=False, waitlisted=waitlist, admin=False)) + db.session.add( + Hacker(mlh_id=session['mymlh']['id'], registration_time=int(time.time()), + checked_in=False, waitlisted=waitlist, admin=False, + first_name=first_name, last_name=last_name, email=email)) + db.session.commit() + print(session['mymlh']['first_name'] + " put on database successfully.") + + # Send a welcome email + msg = 'Dear ' + session['mymlh']['first_name'] + '\n\n' + msg += 'Thanks for applying to Hack@WPI!\n' + if waitlist: + msg += 'Sorry! We have hit our registration capacity. You have been placed on the waitlist.\n' + msg += 'We will let you know if space opens up.\n' + else: + msg += 'You are fully registered! We will send you more info closer to the hackathon.\n' + send_email(session['mymlh']['email'], 'Hack@WPI - Thanks for applying', msg) + + # Finally, send them to their dashboard + return redirect(url_for('dashboard')) + + +@app.route('/admin', methods=['GET']) +def admin(): + # Displays total registration information... + # As Firebase could not be used with MyMLH, use PubNub to simulate the realtime database... + + if not is_admin(): + return redirect(url_for('register')) + + waitlist_count = 0 + total_count = 0 + check_in_count = 0 + shirt_count = {'xxs': 0, 'xs': 0, 's': 0, 'm': 0, 'l': 0, 'xl': 0, 'xxl': 0} + male_count = 0 + female_count = 0 + schools = {} + majors = {} + + mlh_info = get_mlh_users() + + hackers = [] + + result = db.session.query(Hacker) + + for hacker in mlh_info: + obj = result.filter(Hacker.mlh_id == hacker['id']).one_or_none() + + if obj is None: + continue + + if obj.waitlisted: + waitlist_count += 1 + + if obj.checked_in: + check_in_count += 1 + + if hacker['gender'] == 'Male': + male_count += 1 + else: + female_count += 1 + + total_count += 1 + + if hacker['school']['name'] not in schools: + schools[hacker['school']['name']] = 1 + else: + schools[hacker['school']['name']] += 1 + + if hacker['major'] not in majors: + majors[hacker['major']] = 1 + else: + majors[hacker['major']] += 1 + + shirt_count[hacker['shirt_size'].split(' - ')[1].lower()] += 1 + + hackers.append({ + 'checked_in': obj.checked_in, + 'waitlisted': obj.waitlisted, + 'admin': obj.admin, + 'registration_time': obj.registration_time, + 'id': hacker['id'], + 'email': hacker['email'], + 'first_name': hacker['first_name'], + 'last_name': hacker['last_name'], + 'phone_number': hacker['phone_number'], + 'dietary_restrictions': hacker['dietary_restrictions'], + 'special_needs': hacker['special_needs'], + 'school': hacker['school'] + }) + + return render_template('admin.html', hackers=hackers, total_count=total_count, waitlist_count=waitlist_count, + check_in_count=check_in_count, shirt_count=shirt_count, female_count=female_count, + male_count=male_count, schools=schools, majors=majors, + mlh_url='https://my.mlh.io/api/v2/users.json?client_id=' + api_keys['mlh'][ + 'client_id'] + '&secret=' + api_keys['mlh'][ + 'secret']) + + +@app.route('/change_admin', methods=['GET']) +def change_admin(): + # Promote or drop a given hacker to/from admin status... + if not is_admin(): + return jsonify({'status': 'error', 'action': 'modify_permissions', + 'more_info': 'You do not have permissions to perform this action...'}) + + if request.args.get('mlh_id') is None or request.args.get('action') is None: + return jsonify({'status': 'error', 'action': 'change_admin', 'more_info': 'Missing required field...'}) + + valid_actions = ['promote', 'demote'] + if request.args.get('action') not in valid_actions: + return jsonify({'status': 'error', 'action': 'change_admin', 'more_info': 'Invalid action...'}) + + if request.args.get('action') == 'promote': + db.session.query(Hacker).filter(Hacker.mlh_id == request.args.get('mlh_id')).update({'admin': True}) + elif request.args.get('action') == 'demote': + db.session.query(Hacker).filter(Hacker.mlh_id == request.args.get('mlh_id')).update({'admin': False}) + db.session.commit() + + + return jsonify({'status': 'success', 'action': 'change_admin:' + request.args.get('action'), 'more_info': '', + 'id': request.args.get('mlh_id')}) + + +@app.route('/check_in', methods=['GET']) +def check_in(): + # Check in a hacker... + if not is_admin(): + return jsonify({'status': 'error', 'action': 'check_in', + 'more_info': 'You do not have permissions to perform this action...'}) + + if request.args.get('mlh_id') is None: + return jsonify({'status': 'error', 'action': 'check_in', 'more_info': 'Missing required field...'}) + + # See if hacker was already checked in... + checked_in = db.session.query(Hacker.checked_in).filter( + Hacker.mlh_id == request.args.get('mlh_id')).one_or_none() + + print(db.session.query(Hacker.checked_in).filter(Hacker.mlh_id == request.args.get('mlh_id'))) + print(checked_in) + if checked_in and checked_in[0]: + return jsonify({'status': 'error', 'action': 'check_in', 'more_info': 'Hacker already checked in!'}) + + # Update db... + db.session.query(Hacker).filter(Hacker.mlh_id == request.args.get('mlh_id')).update({'checked_in': True}) + db.session.commit() + + mlh_info = get_mlh_user(request.args.get('mlh_id')) + + # Send a welcome email... + msg = 'Dear ' + mlh_info['first_name'] + ',\n\n' + msg += 'Thanks for checking in!\n' + msg += 'We will start shortly, please check your dashboard for updates!\n' + send_email(mlh_info['email'], 'HackWPI - Thanks for checking in', msg) + + return jsonify( + {'status': 'success', 'action': 'check_in', 'more_info': '', 'id': request.args.get('mlh_id')}) + + +@app.route('/drop', methods=['GET']) +def drop(): + # Drop a hacker's registration... + if request.args.get('mlh_id') is None: + return jsonify({'status': 'error', 'action': 'drop', 'more_info': 'Missing required field...'}) + + if not is_admin() and not is_self(request.args.get('mlh_id')): + return jsonify({'status': 'error', 'action': 'drop', + 'more_info': 'You do not have permissions to perform this action...'}) + + row = db.session.query(Hacker.checked_in, Hacker.waitlisted).filter( + Hacker.mlh_id == request.args.get('mlh_id')).one_or_none() + + if row is None: + return jsonify({'status': 'error', 'action': 'drop', + 'more_info': 'Could not find hacker...'}) + + (checked_in, waitlisted) = row + + if checked_in: + return jsonify({'status': 'error', 'action': 'drop', 'more_info': 'Cannot drop, already checked in...'}) + + mlh_info = get_mlh_user(request.args.get('mlh_id')) + print(mlh_info['first_name'] + " trying to drop.") + + + # Delete from db... + row = db.session.query(Hacker).filter(Hacker.mlh_id == request.args.get('mlh_id')).first() + db.session.delete(row) + db.session.commit() + + # Delete resume... + for ext in ALLOWED_EXTENSIONS: + filename = mlh_info['first_name'].lower() + '_' + mlh_info['last_name'].lower() + '_' + request.args.get( + 'mlh_id') + '.' + ext + try: + os.remove(app.config['UPLOAD_FOLDER'] + '/' + filename) + except OSError: + pass + + # Send a goodbye email... + msg = 'Dear ' + mlh_info['first_name'] + ',\n\n' + msg += 'Your application was dropped, sorry to see you go.\n If this was a mistake, you can re-register by going to hack.wpi.edu/register' + send_email(mlh_info['email'], 'Hack@WPI - Application Dropped', msg) + + + if is_self(request.args.get('mlh_id')): + session.clear() + + print(mlh_info['first_name'] + " dropped successfully.") + return jsonify({'status': 'success', 'action': 'drop', 'more_info': '', 'id': request.args.get('mlh_id')}) + + +@app.route('/promote_from_waitlist', methods=['GET']) +def promote_from_waitlist(): + # Promote a hacker from the waitlist... + if request.args.get('mlh_id') is None: + return jsonify({'status': 'error', 'action': 'promote_from_waitlist', 'more_info': 'Missing required field...'}) + + (key, val) = get_auto_promote_keys() + + if request.args.get(key) is None: + if not is_admin(): + return jsonify({'status': 'error', 'action': 'promote_from_waitlist', + 'more_info': 'You do not have permissions to perform this action...'}) + else: + if request.args.get(key) != val: + return jsonify({'status': 'error', 'action': 'promote_from_waitlist', + 'more_info': 'Invalid auto promote keys...'}) + + (checked_in, waitlisted) = db.session.query(Hacker.checked_in, Hacker.waitlisted).filter( + Hacker.mlh_id == request.args.get('mlh_id')).one_or_none() + + if checked_in: + return jsonify( + {'status': 'error', 'action': 'promote_from_waitlist', + 'more_info': 'Cannot promote, already checked in...'}) + + if not waitlisted: + return jsonify( + {'status': 'error', 'action': 'promote_from_waitlist', + 'more_info': 'Cannot promote, user is not waitlisted...'}) + + # Update db... + db.session.query(Hacker).filter(Hacker.mlh_id == request.args.get('mlh_id')).update({'waitlisted': False}) + db.session.commit() + + mlh_info = get_mlh_user(request.args.get('mlh_id')) + + # Send a welcome email... + msg = 'Dear ' + mlh_info['first_name'] + ',\n\n' + msg += 'You are off the waitlist!\n' + msg += 'Room has opened up, and you are now welcome to come, we look forward to seeing you!\n' + msg += 'If you cannot make it, please remove yourself at hack.wpi.edu\dashboard.\n' + send_email(mlh_info['email'], "Hack@WPI - You're off the Waitlist!", msg) + + + print(mlh_info['first_name'] + "is off the waitlist!") + + return jsonify( + {'status': 'success', 'action': 'promote_from_waitlist', 'more_info': '', 'id': request.args.get('mlh_id')}) + + +@app.route('/dashboard', methods=['GET']) +def dashboard(): + # Display's a hacker's options... + if not is_logged_in(): + return redirect(url_for('register')) + + return render_template('dashboard.html', name=session['mymlh']['first_name'], id=session['mymlh']['id'], + admin=is_admin()) + + +def is_logged_in(): + if session is None: + return False + if 'mymlh' not in session: + return False + return True + + +def is_admin(): + if not is_logged_in(): + return False + user_admin = db.session.query(Hacker.admin).filter(Hacker.mlh_id == session['mymlh']['id']).one_or_none() + if user_admin is None: + return False + if not user_admin[0]: + return False + return True + + +def is_self(mlh_id): + mlh_id = int(mlh_id) + if not is_logged_in(): + return False + if session['mymlh']['id'] != mlh_id: + return False + return True + + +def send_email(to, subject, body): + print("Email sent to: " + to) + body += '\nPlease let your friends know about the event as well!.\n' + body += 'To update your status, you can go to hack.wpi.edu/dashboard\n' + body += '\nAll the best!\nThe HackWPI Team\nhttps://twitter.com/hackwpi?lang=en' + + server = smtplib.SMTP('smtp.gmail.com', 587) + server.starttls() + sender = api_keys['smtp_email']['user'] + server.login(sender, api_keys['smtp_email']['pass']) + + msg = _create_MIMEMultipart(subject, sender, to, body) + + server.send_message(msg) + print("Sucess! (Email to " + to) + + +def _create_MIMEMultipart(subject, sender, to, body): + msg = MIMEMultipart() + msg['Subject'] = subject + msg['From'] = sender + if type(to) == list: + msg['To'] = ", ".join(to) + else: + msg['To'] = to + msg.attach(MIMEText(body, 'plain')) + return msg + + +def get_mlh_user(mlh_id): + if not isinstance(mlh_id, int): + mlh_id = int(mlh_id) + req = requests.get( + 'https://my.mlh.io/api/v2/users.json?client_id=' + api_keys['mlh']['client_id'] + '&secret=' + api_keys['mlh'][ + 'secret']) + if req.status_code == 200: + hackers = req.json()['data'] + for hacker in hackers: + if hacker['id'] == mlh_id: + return hacker + + +def get_mlh_users(): + req = requests.get( + 'https://my.mlh.io/api/v2/users.json?client_id=' + api_keys['mlh']['client_id'] + '&secret=' + api_keys['mlh'][ + 'secret']) + if req.status_code == 200: + return req.json()['data'] + + +def gen_new_auto_promote_keys(n=50): + key = new_key(n) + val = new_key(n) + db.session.add(AutoPromoteKeys(key=key, val=val)) + db.session.commit() + return (key, val) + + +def get_auto_promote_keys(): + row = db.session.query(AutoPromoteKeys).one_or_none() + if row is not None: + db.session.delete(row) + db.session.commit() + return (row.key, row.val) + else: + return ('', '') + + +def new_key(n): + return ''.join(random.SystemRandom().choice(string.ascii_letters + string.digits) for _ in range(n)) + + +def allowed_file(filename): + return '.' in filename and \ + filename.split('.')[-1].lower() in ALLOWED_EXTENSIONS + + +if __name__ == '__main__': + app.run(host='0.0.0.0', port=80, threaded=True) diff --git a/goathacks/__init__.py b/goathacks/__init__.py deleted file mode 100644 index b43a79c..0000000 --- a/goathacks/__init__.py +++ /dev/null @@ -1,103 +0,0 @@ -from flask import Flask, redirect, render_template, send_from_directory, url_for -from flask_sqlalchemy import SQLAlchemy -from flask_migrate import Migrate -from flask_login import LoginManager -from flask_assets import Bundle, Environment -from flask_cors import CORS -from flask_mail import Mail, email_dispatched -from flask_bootstrap import Bootstrap5 -from flask_font_awesome import FontAwesome -from flask_qrcode import QRcode - -from config import Config - - - -db = SQLAlchemy() -migrate = Migrate() -login = LoginManager() -environment = Environment() -cors = CORS() -mail = Mail() -bootstrap = Bootstrap5() -font_awesome = FontAwesome() -qrcode = QRcode() - -def create_app(config_class=Config): - app = Flask(__name__) - - app.config.from_object(config_class) - - db.init_app(app) - migrate.init_app(app, db) - login.init_app(app) - environment.init_app(app) - cors.init_app(app) - mail.init_app(app) - bootstrap.init_app(app) - qrcode.init_app(app) - font_awesome.init_app(app) - - scss = Bundle('css/style.scss', filters='scss', - output='css/style.css') - environment.register('scss', scss) - - from .models import User - - from . import registration - from . import dashboard - from . import admin - from . import events - - app.register_blueprint(registration.bp) - app.register_blueprint(dashboard.bp) - app.register_blueprint(admin.bp) - app.register_blueprint(events.bp) - - - from goathacks import cli - app.cli.add_command(cli.gr) - - - #Sponsor page - @app.route("/sponsor") - def sponsorindex(): - return render_template('home/sponsor/index.html') - - @app.route('/sponsor/') - def sponsor(path): - return send_from_directory('templates/home/sponsor', path) - - #Code of conduct - @app.route('/conduct') - def conductindex(): - return render_template('home/conduct/index.html') - @app.route('/conduct/') - def conduct(path): - return send_from_directory('templates/home/conduct', path) - - # Homepage - @app.route("/") - def index_redirect(): - return redirect("/index.html") - @app.route("/index.html") - def index(): - return render_template("home/index.html") - - @app.route("/index2.html") - def index2(): - return render_template("home/index2.html") - - # homepage assets - @app.route("/assets/") - def assets(path): - return send_from_directory('templates/home/assets', path) - - def log_message(message, app): - app.logger.debug(message) - - email_dispatched.connect(log_message) - - return app - - diff --git a/goathacks/admin/__init__.py b/goathacks/admin/__init__.py deleted file mode 100644 index 08ddf33..0000000 --- a/goathacks/admin/__init__.py +++ /dev/null @@ -1,261 +0,0 @@ -from flask import Blueprint, current_app, jsonify, redirect, render_template, request, url_for -from flask_login import current_user, login_required -from flask_mail import Message - -from goathacks.models import User - -bp = Blueprint("admin", __name__, url_prefix="/admin") - -from goathacks import db, mail as app_mail -from goathacks.admin import events - -# Helper function for admin.home and admin.admin_list to render list of users. -# This function was abstracted to promote code reuse. -def render_user_list(admin_list): - if not current_user.is_admin: - return redirect(url_for("dashboard.home")) - male_count = 0 - female_count = 0 - nb_count = 0 - check_in_count = 0 - waitlist_count = 0 - total_count = 0 - shirt_count = {'XS': 0, 'S': 0, 'M': 0, 'L': 0, 'XL': 0} - if(admin_list): - hackers = db.session.execute(db.select(User).where(User.is_admin)).scalars().all() - else: - hackers = db.session.execute(db.select(User).where(User.is_admin == False)).scalars().all() - schools = {} - - for h in hackers: - if h.waitlisted: - waitlist_count += 1 - - if h.checked_in: - check_in_count += 1 - - if h.gender == 'F': - female_count += 1 - elif h.gender == 'M': - male_count += 1 - else: - nb_count += 1 - - total_count += 1 - - if h.school not in schools: - schools[h.school] = 1 - else: - schools[h.school] += 1 - - if h.shirt_size not in shirt_count: - shirt_count[h.shirt_size] = 1 - else: - shirt_count[h.shirt_size] += 1 - return render_template("admin.html", waitlist_count=waitlist_count, - total_count=total_count, shirt_count=shirt_count, - hackers=hackers, male_count=male_count, - female_count=female_count, nb_count=nb_count, - check_in_count=check_in_count, schools=schools) - -@bp.route("/") -@login_required -def home(): - return render_user_list(False) # list users (not admins) - -@bp.route("/admin_list") -@login_required -def admin_list(): - return render_user_list(True) # list users (admins) - - -@bp.route("/mail") -@login_required -def mail(): - if not current_user.is_admin: - return redirect(url_for("dashboard.home")) - - total_count = len(db.session.execute(db.select(User)).scalars().all()) - api_key = current_app.config["MCE_API_KEY"] - - return render_template("mail.html", NUM_HACKERS=total_count, - MCE_API_KEY=api_key) - -@bp.route("/users") -@login_required -def users(): - if not current_user.is_admin: - return redirect(url_for("dashboard.home")) - - users = User.query.all() - - return render_template("users.html", users=users) - -@bp.route("/send", methods=["POST"]) -@login_required -def send(): - if not current_user.is_admin: - return {"status": "error"} - - json = request.json - - users = User.query.all() - - to = [] - if json["recipients"] == "org": - to = ["hack@wpi.edu"] - elif json['recipients'] == 'admin': - to = ["acm-sysadmin@wpi.edu"] - elif json['recipients'] == "all": - to = [x.email for x in users] - - with app_mail.connect() as conn: - for e in to: - msg = Message(json['subject']) - msg.add_recipient(e) - msg.html = json['html'] - msg.body = json['text'] - - conn.send(msg) - - return {"status": "success"} - -@bp.route("/check_in/") -@login_required -def check_in(id): - if not current_user.is_admin: - return redirect(url_for("dashboard.home")) - - user = User.query.filter_by(id=id).one() - if user is None: - return {"status": "error", "msg": "No user found"} - user.checked_in = True - db.session.commit() - return {"status": "success"} - -@bp.route("/drop/") -@login_required -def drop(id): - if not current_user.is_admin and not current_user.id == id: - return redirect(url_for("dashboard.home")) - - user = User.query.filter_by(id=id).one() - if user is None: - return {"status": "error", "msg": "user not found"} - - if user.checked_in: - return {"status": "error", "msg": "Hacker is already checked in"} - - msg = Message("Application Dropped") - msg.add_recipient(user.email) - msg.sender = ("GoatHacks Team", "hack@wpi.edu") - msg.body = render_template("emails/dropped.txt", user=user) - app_mail.send(msg) - - db.session.delete(user) - db.session.commit() - - return {"status": "success"} - -@bp.route("/change_admin//") -@login_required -def change_admin(id, action): - if not current_user.is_admin: - return redirect(url_for("dashboard.home")) - - user = User.query.filter_by(id=id).one() - if user is None: - return {"status": "error", "msg": "user not found"} - - - - valid_actions = ['promote', 'demote'] - if action not in valid_actions: - return {"status": "error", "msg": "invalid action"} - - if action == "promote": - user.is_admin = True - else: - user.is_admin = False - - db.session.commit() - - return {"status": "success"} - -@bp.route("/promote_from_waitlist/") -@login_required -def promote_waitlist(id): - if not current_user.is_admin: - return redirect(url_for("dashboard.home")) - - user = User.query.filter_by(id=id).one() - if user is None: - return {"status": "error", "msg": "user not found"} - - user.waitlisted = False - db.session.commit() - - msg = Message("Waitlist Promotion") - msg.add_recipient(user.email) - msg.sender = ("GoatHacks Team", "hack@wpi.edu") - msg.body = render_template("emails/waitlist_promotion.txt", user=user) - mail.send(msg) - - return {"status": "success"} - -@bp.route("/hackers.csv") -@login_required -def hackers_csv(): - if not current_user.is_admin: - return redirect(url_for("dashboard.home")) - - users = User.query.all() - return json_to_csv(User.create_json_output(users)) - -@bp.route("/hackers") -@login_required -def hackers(): - if not current_user.is_admin: - return redirect(url_for("dashboard.home")) - - users = User.query.all() - return User.create_json_output(users) - -import json -import csv -from io import StringIO - - -def json_to_csv(data): - # Opening JSON file and loading the data - # into the variable data - - json_data=[] - if(type(data) is json): - json_data=data - elif(type(data) is str): - json_data=json.loads(data) - else: - json_data = json.loads(json.dumps(data)) - # now we will open a file for writing - csv_out = StringIO("") - - # create the csv writer object - csv_writer = csv.writer(csv_out) - - # Counter variable used for writing - # headers to the CSV file - count = 0 - - for e in json_data: - if count == 0: - - # Writing headers of CSV file - header = e.keys() - csv_writer.writerow(header) - count += 1 - - # Writing data of CSV file - csv_writer.writerow(e.values()) - csv_out.seek(0) - return csv_out.read() diff --git a/goathacks/admin/events.py b/goathacks/admin/events.py deleted file mode 100644 index 5c0c1ad..0000000 --- a/goathacks/admin/events.py +++ /dev/null @@ -1,173 +0,0 @@ -import flask -from flask import Response, render_template, redirect, request, url_for, flash, current_app -from flask_login import current_user, login_required -from goathacks.admin import bp, forms -from goathacks import db -from goathacks.models import Event - -import io, qrcode, datetime -import qrcode.image.pure - -@bp.route("/events") -@login_required -def list_events(): - if not current_user.is_admin: - return redirect(url_for("dashboard.home")) - - events = Event.query.all() - - form = forms.EventForm() - - return render_template("events/list.html", events=events, form=form) - -@bp.route("/event//delete") -@login_required -def delete_event(id): - if not current_user.is_admin: - return {"status": "error", "message": "Unauthorized"} - - event = Event.query.filter_by(id=id).first() - - if event is None: - return {"status": "error", "message": "Invalid event ID"} - - db.session.delete(event) - db.session.commit() - - return {"status": "success"} - -@bp.route("/event/") -@login_required -def event(id): - if not current_user.is_admin: - return {"status": "error", "message": "Unauthorized"} - - event = Event.query.filter_by(id=id).first() - - if event is None: - return {"status": "error", "message": "Invalid event ID"} - - return event.create_json() - -@bp.route("/event/", methods=["POST"]) -@login_required -def update_create_event(id): - if not current_user.is_admin: - flash("Unauthorized") - return redirect(url_for("dashboard.home")) - - name = request.form.get('name') - description = request.form.get('description') - location = request.form.get('location') - start_day = request.form.get('start_day') - start_time = request.form.get('start_time') - end_day = request.form.get('end_day') - end_time = request.form.get('end_time') - start = datetime.datetime.combine(datetime.date.fromisoformat(start_day), - datetime.time.fromisoformat(start_time)) - end = datetime.datetime.combine(datetime.date.fromisoformat(end_day), - datetime.time.fromisoformat(end_time)) - category = request.form.get("category") - - if id == 0: - # new event - e = Event( - name=name, - description=description, - location=location, - start_time=start, - category=category, - end_time=end) - db.session.add(e) - db.session.commit() - current_app.logger.info(f"{current_user} is creating a new event: {e.name}") - else: - e = Event.query.filter_by(id=id).first() - if e is None: - return {"status": "error", "message": "Invalid event ID"} - e.name = name - e.description = description - e.location = location - e.start_time = start - e.end_time = end - e.category=category - db.session.commit() - current_app.logger.info(f"{current_user} is updating an existing event: {e.name}") - - - return redirect(url_for("admin.list_events")) - -@bp.route("/events/events.json") -@login_required -def events_json(): - if not current_user.is_admin: - return redirect(url_for("dashboard.home")) - events = Event.query.all() - return Event.create_json_output(events) - -@bp.route("/events/new", methods=["GET", "POST"]) -@login_required -def new_event(): - if not current_user.is_admin: - return redirect(url_for("dashboard.home")) - - form = forms.EventForm(request.form) - if request.method == 'POST': - name = request.form.get("name") - description = request.form.get("description") - location = request.form.get("location") - start_time = request.form.get("start_time") - end_time = request.form.get("end_time") - category = request.form.get("category") - - event = Event( - name = name, - description = description, - location = location, - start_time = start_time, - end_time = end_time, - category = category - ) - - db.session.add(event) - db.session.commit() - flash("Created event") - return redirect(url_for("admin.list_events")) - - - return render_template("events/new_event.html", form=form) - -@bp.route("/events/edit/", methods=["GET", "POST"]) -@login_required -def edit_event(id): - if not current_user.is_admin: - return redirect(url_for("dashboard.home")) - - event = Event.query.filter_by(id=id).one() - if event is None: - flash("Event does not exist") - return redirect(url_for("admin.list_events")) - - form = forms.EventForm(request.form) - if request.method == 'POST': - form.populate_obj(event) - db.session.commit() - flash("Updated event") - return redirect(url_for("admin.list_events")) - else: - form = forms.EventForm(obj=event) - - return render_template("events/new_event.html", form=form) - -@bp.route("/events/qrcode/") -@login_required -def qrcode_event(id): - if not current_user.is_admin: - return redirect(url_for("dashboard.home")) - - event = Event.query.filter_by(id=id).first() - if event is None: - flash("Event does not exist") - return redirect(url_for("admin.list_events")) - - return render_template("events/qrcode.html", event=event) diff --git a/goathacks/admin/forms.py b/goathacks/admin/forms.py deleted file mode 100644 index 5520327..0000000 --- a/goathacks/admin/forms.py +++ /dev/null @@ -1,14 +0,0 @@ -from flask_wtf import FlaskForm -from wtforms import StringField, DateField, TimeField, SubmitField, TextAreaField -from wtforms.validators import DataRequired - -class EventForm(FlaskForm): - name = StringField("Name", validators=[DataRequired()]) - description = TextAreaField("Description") - location = StringField("Location", validators=[DataRequired()]) - start_day = DateField("Start Day", validators=[DataRequired()]) - start_time = TimeField("Start Time", validators=[DataRequired()]) - end_day = DateField("End Day", validators=[DataRequired()]) - end_time = TimeField("End Time", validators=[DataRequired()]) - category = StringField("Category") - submit = SubmitField("Submit") diff --git a/goathacks/cli.py b/goathacks/cli.py deleted file mode 100644 index a87b506..0000000 --- a/goathacks/cli.py +++ /dev/null @@ -1,183 +0,0 @@ -from datetime import datetime -import click -from flask import current_app, render_template -from flask.cli import AppGroup -from flask_mail import Message -from werkzeug.security import generate_password_hash - -from goathacks.registration import bp -from goathacks import db, mail -from goathacks.models import User - -from tabulate import tabulate - -gr = AppGroup("user") - -@gr.command('create') -@click.option("--email", prompt=True, help="User's Email") -@click.option("--first_name", prompt=True) -@click.option("--last_name", prompt=True) -@click.option("--admin/--no-admin", prompt=True, default=False) -@click.option("--password", prompt=True, hide_input=True, - confirmation_prompt=True) -@click.option("--school", prompt=True) -@click.option("--phone", prompt=True) -@click.option("--gender", prompt=True) -@click.option("--country", prompt=True) -@click.option("--age", prompt=True) -def create_user(email, first_name, last_name, password, school, phone, gender, - admin,age, country): - """ - Creates a user - """ - - if gender not in ['F', 'M', 'NB']: - click.echo("Invalid gender. Must be one of F, M, NB") - return - - num_not_waitlisted = len(User.query.filter_by(waitlisted=False).all()) - waitlisted = False - if num_not_waitlisted >= current_app.config['MAX_BEFORE_WAITLIST']: - waitlisted = True - - user = User( - email=email, - password=generate_password_hash(password), - first_name=first_name, - last_name=last_name, - last_login=datetime.now(), - waitlisted=waitlisted, - school=school, - phone=phone, - gender=gender, - is_admin=admin, - country=country, - age=age - ) - db.session.add(user) - db.session.commit() - - click.echo("Created user") - -@gr.command("promote") -@click.option("--email", prompt=True) -def promote_user(email): - """ - Promotes a user to administrator - """ - user = User.query.filter_by(email=email).one() - - user.is_admin = True - - db.session.commit() - - click.echo(f"Promoted {user.first_name} to admin") - - -@gr.command("demote") -@click.option("--email", prompt=True) -def demote_user(email): - """ - Demotes a user from administrator - """ - user = User.query.filter_by(email=email).one() - - user.is_admin = False - - db.session.commit() - - click.echo(f"Demoted {user.first_name} from admin") - -@gr.command("waitlist") -@click.option("--email", prompt=True) -def waitlist_user(email): - """ - Toggles the waitlist status of a user - """ - user = User.query.filter_by(email=email).one() - - user.waitlisted = not user.waitlisted - - db.session.commit() - - if user.waitlisted: - click.echo(f"Sent {user.first_name} to the waitlist") - else: - msg = Message("Waitlist Promotion") - msg.add_recipient(user.email) - msg.body = render_template("emails/waitlist_promotion.txt", user=user) - mail.send(msg) - click.echo(f"Promoted {user.first_name} from the waitlist") - -@gr.command("drop") -@click.option("--email", prompt=True) -@click.option("--confirm/--noconfirm", prompt=False, default=True) -def drop_user(email, confirm): - """ - Drops a user's registration - """ - user = User.query.filter_by(email=email).one() - if not confirm: - pass - else: - if click.confirm(f"Are you sure you want to drop {user.first_name} {user.last_name}'s registration? **THIS IS IRREVERSIBLE**"): - pass - else: - return - db.session.delete(user) - db.session.commit() - click.echo(f"Dropped {user.first_name}'s registration") - -@gr.command("list") -def list_users(): - """ - Gets a list of all users - """ - users = User.query.all() - - def make_table_content(user): - return [user.email, f"{user.first_name} {user.last_name}", user.waitlisted, user.is_admin] - - table = map(make_table_content, users) - - print(tabulate(table, headers=["Email", "Name", "Waitlisted", "Admin"])) - - -@gr.command("autopromote") -def autopromote_users(): - """ - Runs through and automatically promotes users up to the waitlist limit - """ - WAITLIST_LIMIT = current_app.config['MAX_BEFORE_WAITLIST'] - num_confirmed = db.session.query(User).filter(User.waitlisted == False).count() - click.echo(f"Got {num_confirmed} confirmed attendees") - num_waitlisted = db.session.query(User).filter(User.waitlisted == True).count() - click.echo(f"Got {num_waitlisted} waitlisted attendees") - - num_to_promote = WAITLIST_LIMIT - num_confirmed - - if num_to_promote > num_waitlisted: - num_to_promote = num_waitlisted - - click.echo(f"About to promote {str(num_to_promote)} attendees from waitlist") - - users = db.session.query(User).filter(User.waitlisted == True).all() - - num_promoted = 0 - num_to_promote_orig = num_to_promote - - for u in users: - if num_to_promote > 0: - click.echo(f"Attempting to promote {u.email} ({u.id})") - u.waitlisted = False - db.session.commit() - msg = Message("Waitlist Promotion") - msg.add_recipient(u.email) - msg.sender = ("GoatHacks Team", "hack@wpi.edu") - msg.body = render_template("emails/waitlist_promotion.txt", user=u) - mail.send(msg) - num_promoted += 1 - num_to_promote -= 1 - - click.echo(f"Promoted {num_promoted}/{num_to_promote_orig} attendees off the waitlist!") - diff --git a/goathacks/dashboard/__init__.py b/goathacks/dashboard/__init__.py deleted file mode 100644 index c6dc7fb..0000000 --- a/goathacks/dashboard/__init__.py +++ /dev/null @@ -1,66 +0,0 @@ -from flask import Blueprint, current_app, flash, jsonify, redirect, render_template, request, url_for -from flask_login import current_user, login_required -from werkzeug.utils import secure_filename - -import os - -bp = Blueprint("dashboard", __name__, url_prefix="/dashboard") - -from goathacks.dashboard import forms -from goathacks import db - -@bp.route("/", methods=["GET", "POST"]) -@login_required -def home(): - form = forms.ShirtAndAccomForm(request.form) - resform = forms.ResumeForm(request.form) - if request.method == "POST" and form.validate(): - current_user.shirt_size = request.form.get('shirt_size') - current_user.accomodations = request.form.get('accomodations') - db.session.commit() - flash("Updated successfully") - else: - form = forms.ShirtAndAccomForm(obj=current_user) - return render_template("dashboard.html", form=form, resform=resform) - -@bp.route("/resume", methods=["POST"]) -@login_required -def resume(): - form = forms.ResumeForm(request.form) - - """A last minute hack to let people post their resume after they've already registered""" - if request.method == 'POST': - if 'resume' not in request.files: - return "You tried to submit a resume with no file" - - resume = request.files['resume'] - if resume.filename == '': - return "You tried to submit a resume with no file" - - if resume and not allowed_file(resume.filename): - return jsonify( - {'status': 'error', 'action': 'register', - 'more_info': 'Invalid file type... Accepted types are txt pdf doc docx and rtf...'}) - - if resume and allowed_file(resume.filename): - # Good file! - filename = current_user.first_name.lower() + '_' + current_user.last_name.lower() + '_' + str( - current_user.id) + '.' + resume.filename.split('.')[-1].lower() - filename = secure_filename(filename) - if not os.path.exists(current_app.config['UPLOAD_FOLDER']): - try: - os.makedirs(current_app.config['UPLOAD_FOLDER']) - except Exception: - flash("Error saving resume. Contact acm-sysadmin@wpi.edu") - return redirect(url_for("dashboard.home")) - resume.save(os.path.join(current_app.config['UPLOAD_FOLDER'], filename)) - flash("Resume uploaded!") - return redirect(url_for("dashboard.home")) - flash("Something went wrong. If this keeps happening, contact hack@wpi.edu for assistance") - return redirect(url_for("dashboard.home")) - - -def allowed_file(filename): - return '.' in filename and \ - filename.split('.')[-1].lower() in ['pdf', 'docx', 'doc', 'txt', - 'rtf'] diff --git a/goathacks/dashboard/forms.py b/goathacks/dashboard/forms.py deleted file mode 100644 index cdf0969..0000000 --- a/goathacks/dashboard/forms.py +++ /dev/null @@ -1,19 +0,0 @@ -from flask_wtf import FlaskForm -from flask_wtf.file import FileField, FileRequired, FileAllowed -from wtforms import SelectField, TextAreaField, SubmitField -from wtforms.validators import DataRequired - -class ShirtAndAccomForm(FlaskForm): - shirt_size = SelectField("Shirt size", choices=["XS", "S", "M", "L", "XL", - "None"], - validators=[DataRequired()]) - accomodations = TextAreaField("Special needs and/or Accomodations") - submit = SubmitField("Save") - -class ResumeForm(FlaskForm): - resume = FileField("Resume", validators=[FileRequired(), - FileAllowed(['pdf', 'docx', 'doc', - 'txt', 'rtf'], - "Documents only!")]) - - submit = SubmitField("Submit") diff --git a/goathacks/database.py b/goathacks/database.py deleted file mode 100644 index f5fba56..0000000 --- a/goathacks/database.py +++ /dev/null @@ -1,14 +0,0 @@ - - -from flask_login import UserMixin -from sqlalchemy import Boolean, Column, DateTime, Integer, String -from . import db - -class User(db.Model, UserMixin): - id = Column(Integer, primary_key=True) - email = Column(String, unique=True, nullable=False) - password = Column(String, nullable=False) - first_name = Column(String, nullable=False) - last_login = Column(DateTime, nullable=False) - active = Column(Boolean, nullable=False) - is_admin = Column(Boolean, nullable=False, default=False) diff --git a/goathacks/events/__init__.py b/goathacks/events/__init__.py deleted file mode 100644 index 81007e1..0000000 --- a/goathacks/events/__init__.py +++ /dev/null @@ -1,31 +0,0 @@ -from flask import Blueprint, current_app, flash, redirect, url_for -from flask_login import current_user, login_required - -from goathacks.models import Event, EventCheckins -from goathacks import db - -bp = Blueprint("events", __name__, url_prefix="/events") - -@bp.route("/checkin/") -@login_required -def workshop_checkin(id): - event = Event.query.filter_by(id=id).one() - if event is None: - flash("That event does not exist!") - return redirect(url_for("dashboard.home")) - - checkin = EventCheckins.query.filter_by(event_id=id, - user_id=current_user.id).first() - if checkin is not None: - flash("You've already checked into this event!") - return redirect(url_for("dashboard.home")) - - checkin = EventCheckins( - user_id=current_user.id, - event_id=id - ) - db.session.add(checkin) - db.session.commit() - - flash("You've successfully checked in!") - return redirect(url_for("dashboard.home")) diff --git a/goathacks/models.py b/goathacks/models.py deleted file mode 100644 index 9f48d0a..0000000 --- a/goathacks/models.py +++ /dev/null @@ -1,108 +0,0 @@ -from flask import flash, redirect, url_for -from flask_login import UserMixin -from sqlalchemy import Boolean, Column, Date, DateTime, ForeignKey, Integer, String -from . import db -from . import login - -class User(db.Model, UserMixin): - id = Column(Integer, primary_key=True) - email = Column(String, unique=True, nullable=False) - password = Column(String, nullable=False) - first_name = Column(String, nullable=False) - last_name = Column(String, nullable=False) - last_login = Column(DateTime, nullable=False) - active = Column(Boolean, nullable=False, default=True) - is_admin = Column(Boolean, nullable=False, default=False) - waitlisted = Column(Boolean, nullable=False, default=False) - shirt_size = Column(String, nullable=True) - accomodations = Column(String, nullable=True) - checked_in = Column(Boolean, nullable=False, default=False) - school = Column(String, nullable=True) - phone = Column(String, nullable=True) - gender = Column(String, nullable=True) - newsletter = Column(Boolean, nullable=False, default=False) - country = Column(String, nullable=False) - age = Column(Integer, nullable=False) - dietary_restrictions = Column(String, nullable=True) - - def __str__(self): - return f"{self.first_name} {self.last_name} ({self.email})" - def create_json_output(lis): - hackers = [] - - for u in lis: - hackers.append({ - 'checked_in': u.checked_in, - 'waitlisted': u.waitlisted, - 'admin': u.is_admin, - 'id': u.id, - 'email': u.email, - 'first_name': u.first_name, - 'last_name': u.last_name, - 'phone_number': u.phone, - 'shirt_size': u.shirt_size, - 'special_needs': u.accomodations, - 'school': u.school - }) - - return hackers - -@login.user_loader -def user_loader(user_id): - return User.query.filter_by(id=user_id).first() - -@login.unauthorized_handler -def unauth(): - flash("Please login first") - return redirect(url_for("registration.login")) - - -class PwResetRequest(db.Model): - id = Column(String, primary_key=True) - user_id = Column(Integer, ForeignKey('user.id'), nullable=False) - expires = Column(DateTime, nullable=False) - - -""" -Represents an event within the hackathon, that can be checked into -""" -class Event(db.Model): - id = Column(Integer, primary_key=True) - name = Column(String, nullable=False) - description = Column(String, nullable=True) - location = Column(String, nullable=False) - start_time = Column(DateTime, nullable=False) - end_time = Column(DateTime, nullable=False) - category = Column(String, nullable=True) - - def create_json_output(lis): - events = [] - - for e in lis: - events.append(e.create_json()) - - return events - - def create_json(self): - return { - "id": self.id, - "name": self.name, - "description": self.description, - "location": self.location, - "start_time": self.start_time.isoformat(), - "end_time": self.end_time.isoformat(), - "category": self.category - } - - def get_checkins(self): - checkins = EventCheckins.query.filter_by(event_id=self.id).all() - - return checkins - - - -class EventCheckins(db.Model): - __tablename__ = "event_checkins" - id = Column(Integer, primary_key=True) - event_id = Column(Integer, ForeignKey('event.id'), nullable=False) - user_id = Column(Integer, ForeignKey('user.id'), nullable=False) diff --git a/goathacks/registration/__init__.py b/goathacks/registration/__init__.py deleted file mode 100644 index 0585489..0000000 --- a/goathacks/registration/__init__.py +++ /dev/null @@ -1,178 +0,0 @@ -from datetime import datetime, timedelta -from flask import Blueprint, abort, config, current_app, flash, redirect, render_template, request, url_for -import flask_login -from flask_login import current_user, login_required -from goathacks.registration.forms import LoginForm, PwResetForm, RegisterForm, ResetForm -from werkzeug.security import check_password_hash, generate_password_hash -from flask_mail import Message -import ulid - -from goathacks import db, mail as app_mail -from goathacks.models import PwResetRequest, User - -bp = Blueprint('registration', __name__, url_prefix="/registration") - -@bp.route("/", methods=["GET", "POST"]) -def register(): - if current_user.is_authenticated: - flash("You are already registered and logged in!") - - print("got register") - form = RegisterForm(request.form) - print(vars(form.gender)) - if request.method == 'POST': - print("Got form") - email = request.form.get('email') - first_name = request.form.get('first_name') - last_name = request.form.get('last_name') - password = request.form.get('password') - password_c = request.form.get('password_confirm') - school = request.form.get('school') - phone = request.form.get('phone_number') - gender = request.form.get('gender') - country = request.form.get('country') - age = request.form.get('age') - dietary_restrictions = request.form.get('dietary_restrictions') - newsletter = request.form.get('newsletter') - - if password == password_c: - # Passwords match! - - # Count of all non-waitlisted hackers - num_not_waitlisted = len(User.query.filter_by(waitlisted=False).all()) - waitlisted = False - print(num_not_waitlisted) - print(current_app.config['MAX_BEFORE_WAITLIST']) - if num_not_waitlisted >= current_app.config['MAX_BEFORE_WAITLIST']: - waitlisted = True - user = User( - email=email, - password=generate_password_hash(password), - first_name=first_name, - last_name=last_name, - last_login=datetime.now(), - waitlisted=waitlisted, - school=school, - phone=phone, - gender=gender, - country=country, - age=age, - dietary_restrictions=dietary_restrictions, - newsletter=newsletter - ) - db.session.add(user) - db.session.commit() - flask_login.login_user(user) - - if waitlisted: - msg = Message("Goathacks - Waitlist Confirmation") - else: - msg = Message("GoatHacks - Registration Confirmation") - - msg.add_recipient(user.email) - msg.sender = ("GoatHacks Team", "hack@wpi.edu") - msg.body = render_template("emails/registration.txt", user=user) - app_mail.send(msg) - - return redirect(url_for("dashboard.home")) - else: - flash("Passwords do not match") - - return render_template("register.html", form=form) - -@bp.route("/login", methods=["GET", "POST"]) -def login(): - form = LoginForm(request.form) - - if request.method == 'POST': - email = request.form.get('email') - password = request.form.get('password') - - user = User.query.filter_by(email=email).first() - if user == None: - flash("Email or password incorrect") - return render_template("login.html", form=form) - - if check_password_hash(user.password, password): - flask_login.login_user(user) - - flash("Welcome back!") - - return redirect(url_for("dashboard.home")) - else: - flash("Incorrect password") - - return render_template("login.html", form=form) - -@bp.route("/logout") -@login_required -def logout(): - flask_login.logout_user() - flash("See you later!") - return redirect(url_for("registration.login")) - -@bp.route("/reset", methods=["GET", "POST"]) -def reset(): - form = ResetForm(request.form) - - if request.method == 'POST': - email = request.form.get('email') - - user = User.query.filter_by(email=email).first() - - if user == None: - flash("If that email has an account here, we've just sent it a link to reset your password.") - return redirect(url_for("registration.login")) - else: - r = PwResetRequest( - id=str(ulid.ulid()), - user_id=user.id, - expires=datetime.now() + timedelta(minutes=30) - ) - db.session.add(r) - db.session.commit() - - msg = Message("GoatHacks - Password Reset Request") - msg.add_recipient(user.email) - msg.body = render_template("emails/password_reset.txt", code=r.id) - app_mail.send(msg) - flash("If that email has an account here, we've just sent it a link to reset your password.") - return redirect(url_for("registration.login")) - - else: - return render_template("pw_reset.html", form=form) - -@bp.route("/reset/complete/", methods=["GET", "POST"]) -def do_reset(id): - form = PwResetForm(request.form) - req = PwResetRequest.query.filter_by(id=id).first() - - if req == None: - flash("Invalid request") - return redirect(url_for("registration.login")) - - if req.expires < datetime.now(): - db.session.delete(req) - db.session.commit() - flash("Invalid request") - return redirect(url_for("registration.login")) - - if request.method == "POST": - password = request.form.get("password") - password_c = request.form.get("password_confirm") - - if password == password_c: - user = User.query.filter_by(id=req.user_id).first() - if user == None: - flash("Invalid user") - return redirect(url_for("registration.login")) - user.password = generate_password_hash(password) - db.session.delete(req) - db.session.commit() - flash("Password successfully reset") - return redirect(url_for("registration.login")) - else: - flash("Passwords do not match!") - return render_template("password_reset.html", form=form) - else: - return render_template("password_reset.html", form=form) diff --git a/goathacks/registration/countries.csv b/goathacks/registration/countries.csv deleted file mode 100644 index 54c73e3..0000000 --- a/goathacks/registration/countries.csv +++ /dev/null @@ -1,249 +0,0 @@ -United States of America,US,USA,840,ISO 3166-2:US,Americas,Northern America,"",019,021,"" -Afghanistan,AF,AFG,004,ISO 3166-2:AF,Asia,Southern Asia,"",142,034,"" -Åland Islands,AX,ALA,248,ISO 3166-2:AX,Europe,Northern Europe,"",150,154,"" -Albania,AL,ALB,008,ISO 3166-2:AL,Europe,Southern Europe,"",150,039,"" -Algeria,DZ,DZA,012,ISO 3166-2:DZ,Africa,Northern Africa,"",002,015,"" -American Samoa,AS,ASM,016,ISO 3166-2:AS,Oceania,Polynesia,"",009,061,"" -Andorra,AD,AND,020,ISO 3166-2:AD,Europe,Southern Europe,"",150,039,"" -Angola,AO,AGO,024,ISO 3166-2:AO,Africa,Sub-Saharan Africa,Middle Africa,002,202,017 -Anguilla,AI,AIA,660,ISO 3166-2:AI,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Antarctica,AQ,ATA,010,ISO 3166-2:AQ,"","","","","","" -Antigua and Barbuda,AG,ATG,028,ISO 3166-2:AG,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Argentina,AR,ARG,032,ISO 3166-2:AR,Americas,Latin America and the Caribbean,South America,019,419,005 -Armenia,AM,ARM,051,ISO 3166-2:AM,Asia,Western Asia,"",142,145,"" -Aruba,AW,ABW,533,ISO 3166-2:AW,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Australia,AU,AUS,036,ISO 3166-2:AU,Oceania,Australia and New Zealand,"",009,053,"" -Austria,AT,AUT,040,ISO 3166-2:AT,Europe,Western Europe,"",150,155,"" -Azerbaijan,AZ,AZE,031,ISO 3166-2:AZ,Asia,Western Asia,"",142,145,"" -Bahamas,BS,BHS,044,ISO 3166-2:BS,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Bahrain,BH,BHR,048,ISO 3166-2:BH,Asia,Western Asia,"",142,145,"" -Bangladesh,BD,BGD,050,ISO 3166-2:BD,Asia,Southern Asia,"",142,034,"" -Barbados,BB,BRB,052,ISO 3166-2:BB,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Belarus,BY,BLR,112,ISO 3166-2:BY,Europe,Eastern Europe,"",150,151,"" -Belgium,BE,BEL,056,ISO 3166-2:BE,Europe,Western Europe,"",150,155,"" -Belize,BZ,BLZ,084,ISO 3166-2:BZ,Americas,Latin America and the Caribbean,Central America,019,419,013 -Benin,BJ,BEN,204,ISO 3166-2:BJ,Africa,Sub-Saharan Africa,Western Africa,002,202,011 -Bermuda,BM,BMU,060,ISO 3166-2:BM,Americas,Northern America,"",019,021,"" -Bhutan,BT,BTN,064,ISO 3166-2:BT,Asia,Southern Asia,"",142,034,"" -"Bolivia, Plurinational State of",BO,BOL,068,ISO 3166-2:BO,Americas,Latin America and the Caribbean,South America,019,419,005 -"Bonaire, Sint Eustatius and Saba",BQ,BES,535,ISO 3166-2:BQ,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Bosnia and Herzegovina,BA,BIH,070,ISO 3166-2:BA,Europe,Southern Europe,"",150,039,"" -Botswana,BW,BWA,072,ISO 3166-2:BW,Africa,Sub-Saharan Africa,Southern Africa,002,202,018 -Bouvet Island,BV,BVT,074,ISO 3166-2:BV,Americas,Latin America and the Caribbean,South America,019,419,005 -Brazil,BR,BRA,076,ISO 3166-2:BR,Americas,Latin America and the Caribbean,South America,019,419,005 -British Indian Ocean Territory,IO,IOT,086,ISO 3166-2:IO,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Brunei Darussalam,BN,BRN,096,ISO 3166-2:BN,Asia,South-eastern Asia,"",142,035,"" -Bulgaria,BG,BGR,100,ISO 3166-2:BG,Europe,Eastern Europe,"",150,151,"" -Burkina Faso,BF,BFA,854,ISO 3166-2:BF,Africa,Sub-Saharan Africa,Western Africa,002,202,011 -Burundi,BI,BDI,108,ISO 3166-2:BI,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Cabo Verde,CV,CPV,132,ISO 3166-2:CV,Africa,Sub-Saharan Africa,Western Africa,002,202,011 -Cambodia,KH,KHM,116,ISO 3166-2:KH,Asia,South-eastern Asia,"",142,035,"" -Cameroon,CM,CMR,120,ISO 3166-2:CM,Africa,Sub-Saharan Africa,Middle Africa,002,202,017 -Canada,CA,CAN,124,ISO 3166-2:CA,Americas,Northern America,"",019,021,"" -Cayman Islands,KY,CYM,136,ISO 3166-2:KY,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Central African Republic,CF,CAF,140,ISO 3166-2:CF,Africa,Sub-Saharan Africa,Middle Africa,002,202,017 -Chad,TD,TCD,148,ISO 3166-2:TD,Africa,Sub-Saharan Africa,Middle Africa,002,202,017 -Chile,CL,CHL,152,ISO 3166-2:CL,Americas,Latin America and the Caribbean,South America,019,419,005 -China,CN,CHN,156,ISO 3166-2:CN,Asia,Eastern Asia,"",142,030,"" -Christmas Island,CX,CXR,162,ISO 3166-2:CX,Oceania,Australia and New Zealand,"",009,053,"" -Cocos (Keeling) Islands,CC,CCK,166,ISO 3166-2:CC,Oceania,Australia and New Zealand,"",009,053,"" -Colombia,CO,COL,170,ISO 3166-2:CO,Americas,Latin America and the Caribbean,South America,019,419,005 -Comoros,KM,COM,174,ISO 3166-2:KM,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Congo,CG,COG,178,ISO 3166-2:CG,Africa,Sub-Saharan Africa,Middle Africa,002,202,017 -"Congo, Democratic Republic of the",CD,COD,180,ISO 3166-2:CD,Africa,Sub-Saharan Africa,Middle Africa,002,202,017 -Cook Islands,CK,COK,184,ISO 3166-2:CK,Oceania,Polynesia,"",009,061,"" -Costa Rica,CR,CRI,188,ISO 3166-2:CR,Americas,Latin America and the Caribbean,Central America,019,419,013 -Côte d'Ivoire,CI,CIV,384,ISO 3166-2:CI,Africa,Sub-Saharan Africa,Western Africa,002,202,011 -Croatia,HR,HRV,191,ISO 3166-2:HR,Europe,Southern Europe,"",150,039,"" -Cuba,CU,CUB,192,ISO 3166-2:CU,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Curaçao,CW,CUW,531,ISO 3166-2:CW,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Cyprus,CY,CYP,196,ISO 3166-2:CY,Asia,Western Asia,"",142,145,"" -Czechia,CZ,CZE,203,ISO 3166-2:CZ,Europe,Eastern Europe,"",150,151,"" -Denmark,DK,DNK,208,ISO 3166-2:DK,Europe,Northern Europe,"",150,154,"" -Djibouti,DJ,DJI,262,ISO 3166-2:DJ,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Dominica,DM,DMA,212,ISO 3166-2:DM,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Dominican Republic,DO,DOM,214,ISO 3166-2:DO,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Ecuador,EC,ECU,218,ISO 3166-2:EC,Americas,Latin America and the Caribbean,South America,019,419,005 -Egypt,EG,EGY,818,ISO 3166-2:EG,Africa,Northern Africa,"",002,015,"" -El Salvador,SV,SLV,222,ISO 3166-2:SV,Americas,Latin America and the Caribbean,Central America,019,419,013 -Equatorial Guinea,GQ,GNQ,226,ISO 3166-2:GQ,Africa,Sub-Saharan Africa,Middle Africa,002,202,017 -Eritrea,ER,ERI,232,ISO 3166-2:ER,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Estonia,EE,EST,233,ISO 3166-2:EE,Europe,Northern Europe,"",150,154,"" -Eswatini,SZ,SWZ,748,ISO 3166-2:SZ,Africa,Sub-Saharan Africa,Southern Africa,002,202,018 -Ethiopia,ET,ETH,231,ISO 3166-2:ET,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Falkland Islands (Malvinas),FK,FLK,238,ISO 3166-2:FK,Americas,Latin America and the Caribbean,South America,019,419,005 -Faroe Islands,FO,FRO,234,ISO 3166-2:FO,Europe,Northern Europe,"",150,154,"" -Fiji,FJ,FJI,242,ISO 3166-2:FJ,Oceania,Melanesia,"",009,054,"" -Finland,FI,FIN,246,ISO 3166-2:FI,Europe,Northern Europe,"",150,154,"" -France,FR,FRA,250,ISO 3166-2:FR,Europe,Western Europe,"",150,155,"" -French Guiana,GF,GUF,254,ISO 3166-2:GF,Americas,Latin America and the Caribbean,South America,019,419,005 -French Polynesia,PF,PYF,258,ISO 3166-2:PF,Oceania,Polynesia,"",009,061,"" -French Southern Territories,TF,ATF,260,ISO 3166-2:TF,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Gabon,GA,GAB,266,ISO 3166-2:GA,Africa,Sub-Saharan Africa,Middle Africa,002,202,017 -Gambia,GM,GMB,270,ISO 3166-2:GM,Africa,Sub-Saharan Africa,Western Africa,002,202,011 -Georgia,GE,GEO,268,ISO 3166-2:GE,Asia,Western Asia,"",142,145,"" -Germany,DE,DEU,276,ISO 3166-2:DE,Europe,Western Europe,"",150,155,"" -Ghana,GH,GHA,288,ISO 3166-2:GH,Africa,Sub-Saharan Africa,Western Africa,002,202,011 -Gibraltar,GI,GIB,292,ISO 3166-2:GI,Europe,Southern Europe,"",150,039,"" -Greece,GR,GRC,300,ISO 3166-2:GR,Europe,Southern Europe,"",150,039,"" -Greenland,GL,GRL,304,ISO 3166-2:GL,Americas,Northern America,"",019,021,"" -Grenada,GD,GRD,308,ISO 3166-2:GD,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Guadeloupe,GP,GLP,312,ISO 3166-2:GP,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Guam,GU,GUM,316,ISO 3166-2:GU,Oceania,Micronesia,"",009,057,"" -Guatemala,GT,GTM,320,ISO 3166-2:GT,Americas,Latin America and the Caribbean,Central America,019,419,013 -Guernsey,GG,GGY,831,ISO 3166-2:GG,Europe,Northern Europe,"",150,154,"" -Guinea,GN,GIN,324,ISO 3166-2:GN,Africa,Sub-Saharan Africa,Western Africa,002,202,011 -Guinea-Bissau,GW,GNB,624,ISO 3166-2:GW,Africa,Sub-Saharan Africa,Western Africa,002,202,011 -Guyana,GY,GUY,328,ISO 3166-2:GY,Americas,Latin America and the Caribbean,South America,019,419,005 -Haiti,HT,HTI,332,ISO 3166-2:HT,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Heard Island and McDonald Islands,HM,HMD,334,ISO 3166-2:HM,Oceania,Australia and New Zealand,"",009,053,"" -Holy See,VA,VAT,336,ISO 3166-2:VA,Europe,Southern Europe,"",150,039,"" -Honduras,HN,HND,340,ISO 3166-2:HN,Americas,Latin America and the Caribbean,Central America,019,419,013 -Hong Kong,HK,HKG,344,ISO 3166-2:HK,Asia,Eastern Asia,"",142,030,"" -Hungary,HU,HUN,348,ISO 3166-2:HU,Europe,Eastern Europe,"",150,151,"" -Iceland,IS,ISL,352,ISO 3166-2:IS,Europe,Northern Europe,"",150,154,"" -India,IN,IND,356,ISO 3166-2:IN,Asia,Southern Asia,"",142,034,"" -Indonesia,ID,IDN,360,ISO 3166-2:ID,Asia,South-eastern Asia,"",142,035,"" -"Iran, Islamic Republic of",IR,IRN,364,ISO 3166-2:IR,Asia,Southern Asia,"",142,034,"" -Iraq,IQ,IRQ,368,ISO 3166-2:IQ,Asia,Western Asia,"",142,145,"" -Ireland,IE,IRL,372,ISO 3166-2:IE,Europe,Northern Europe,"",150,154,"" -Isle of Man,IM,IMN,833,ISO 3166-2:IM,Europe,Northern Europe,"",150,154,"" -Israel,IL,ISR,376,ISO 3166-2:IL,Asia,Western Asia,"",142,145,"" -Italy,IT,ITA,380,ISO 3166-2:IT,Europe,Southern Europe,"",150,039,"" -Jamaica,JM,JAM,388,ISO 3166-2:JM,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Japan,JP,JPN,392,ISO 3166-2:JP,Asia,Eastern Asia,"",142,030,"" -Jersey,JE,JEY,832,ISO 3166-2:JE,Europe,Northern Europe,"",150,154,"" -Jordan,JO,JOR,400,ISO 3166-2:JO,Asia,Western Asia,"",142,145,"" -Kazakhstan,KZ,KAZ,398,ISO 3166-2:KZ,Asia,Central Asia,"",142,143,"" -Kenya,KE,KEN,404,ISO 3166-2:KE,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Kiribati,KI,KIR,296,ISO 3166-2:KI,Oceania,Micronesia,"",009,057,"" -"Korea, Democratic People's Republic of",KP,PRK,408,ISO 3166-2:KP,Asia,Eastern Asia,"",142,030,"" -"Korea, Republic of",KR,KOR,410,ISO 3166-2:KR,Asia,Eastern Asia,"",142,030,"" -Kuwait,KW,KWT,414,ISO 3166-2:KW,Asia,Western Asia,"",142,145,"" -Kyrgyzstan,KG,KGZ,417,ISO 3166-2:KG,Asia,Central Asia,"",142,143,"" -Lao People's Democratic Republic,LA,LAO,418,ISO 3166-2:LA,Asia,South-eastern Asia,"",142,035,"" -Latvia,LV,LVA,428,ISO 3166-2:LV,Europe,Northern Europe,"",150,154,"" -Lebanon,LB,LBN,422,ISO 3166-2:LB,Asia,Western Asia,"",142,145,"" -Lesotho,LS,LSO,426,ISO 3166-2:LS,Africa,Sub-Saharan Africa,Southern Africa,002,202,018 -Liberia,LR,LBR,430,ISO 3166-2:LR,Africa,Sub-Saharan Africa,Western Africa,002,202,011 -Libya,LY,LBY,434,ISO 3166-2:LY,Africa,Northern Africa,"",002,015,"" -Liechtenstein,LI,LIE,438,ISO 3166-2:LI,Europe,Western Europe,"",150,155,"" -Lithuania,LT,LTU,440,ISO 3166-2:LT,Europe,Northern Europe,"",150,154,"" -Luxembourg,LU,LUX,442,ISO 3166-2:LU,Europe,Western Europe,"",150,155,"" -Macao,MO,MAC,446,ISO 3166-2:MO,Asia,Eastern Asia,"",142,030,"" -Madagascar,MG,MDG,450,ISO 3166-2:MG,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Malawi,MW,MWI,454,ISO 3166-2:MW,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Malaysia,MY,MYS,458,ISO 3166-2:MY,Asia,South-eastern Asia,"",142,035,"" -Maldives,MV,MDV,462,ISO 3166-2:MV,Asia,Southern Asia,"",142,034,"" -Mali,ML,MLI,466,ISO 3166-2:ML,Africa,Sub-Saharan Africa,Western Africa,002,202,011 -Malta,MT,MLT,470,ISO 3166-2:MT,Europe,Southern Europe,"",150,039,"" -Marshall Islands,MH,MHL,584,ISO 3166-2:MH,Oceania,Micronesia,"",009,057,"" -Martinique,MQ,MTQ,474,ISO 3166-2:MQ,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Mauritania,MR,MRT,478,ISO 3166-2:MR,Africa,Sub-Saharan Africa,Western Africa,002,202,011 -Mauritius,MU,MUS,480,ISO 3166-2:MU,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Mayotte,YT,MYT,175,ISO 3166-2:YT,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Mexico,MX,MEX,484,ISO 3166-2:MX,Americas,Latin America and the Caribbean,Central America,019,419,013 -"Micronesia, Federated States of",FM,FSM,583,ISO 3166-2:FM,Oceania,Micronesia,"",009,057,"" -"Moldova, Republic of",MD,MDA,498,ISO 3166-2:MD,Europe,Eastern Europe,"",150,151,"" -Monaco,MC,MCO,492,ISO 3166-2:MC,Europe,Western Europe,"",150,155,"" -Mongolia,MN,MNG,496,ISO 3166-2:MN,Asia,Eastern Asia,"",142,030,"" -Montenegro,ME,MNE,499,ISO 3166-2:ME,Europe,Southern Europe,"",150,039,"" -Montserrat,MS,MSR,500,ISO 3166-2:MS,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Morocco,MA,MAR,504,ISO 3166-2:MA,Africa,Northern Africa,"",002,015,"" -Mozambique,MZ,MOZ,508,ISO 3166-2:MZ,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Myanmar,MM,MMR,104,ISO 3166-2:MM,Asia,South-eastern Asia,"",142,035,"" -Namibia,NA,NAM,516,ISO 3166-2:NA,Africa,Sub-Saharan Africa,Southern Africa,002,202,018 -Nauru,NR,NRU,520,ISO 3166-2:NR,Oceania,Micronesia,"",009,057,"" -Nepal,NP,NPL,524,ISO 3166-2:NP,Asia,Southern Asia,"",142,034,"" -"Netherlands, Kingdom of the",NL,NLD,528,ISO 3166-2:NL,Europe,Western Europe,"",150,155,"" -New Caledonia,NC,NCL,540,ISO 3166-2:NC,Oceania,Melanesia,"",009,054,"" -New Zealand,NZ,NZL,554,ISO 3166-2:NZ,Oceania,Australia and New Zealand,"",009,053,"" -Nicaragua,NI,NIC,558,ISO 3166-2:NI,Americas,Latin America and the Caribbean,Central America,019,419,013 -Niger,NE,NER,562,ISO 3166-2:NE,Africa,Sub-Saharan Africa,Western Africa,002,202,011 -Nigeria,NG,NGA,566,ISO 3166-2:NG,Africa,Sub-Saharan Africa,Western Africa,002,202,011 -Niue,NU,NIU,570,ISO 3166-2:NU,Oceania,Polynesia,"",009,061,"" -Norfolk Island,NF,NFK,574,ISO 3166-2:NF,Oceania,Australia and New Zealand,"",009,053,"" -North Macedonia,MK,MKD,807,ISO 3166-2:MK,Europe,Southern Europe,"",150,039,"" -Northern Mariana Islands,MP,MNP,580,ISO 3166-2:MP,Oceania,Micronesia,"",009,057,"" -Norway,NO,NOR,578,ISO 3166-2:NO,Europe,Northern Europe,"",150,154,"" -Oman,OM,OMN,512,ISO 3166-2:OM,Asia,Western Asia,"",142,145,"" -Pakistan,PK,PAK,586,ISO 3166-2:PK,Asia,Southern Asia,"",142,034,"" -Palau,PW,PLW,585,ISO 3166-2:PW,Oceania,Micronesia,"",009,057,"" -"Palestine, State of",PS,PSE,275,ISO 3166-2:PS,Asia,Western Asia,"",142,145,"" -Panama,PA,PAN,591,ISO 3166-2:PA,Americas,Latin America and the Caribbean,Central America,019,419,013 -Papua New Guinea,PG,PNG,598,ISO 3166-2:PG,Oceania,Melanesia,"",009,054,"" -Paraguay,PY,PRY,600,ISO 3166-2:PY,Americas,Latin America and the Caribbean,South America,019,419,005 -Peru,PE,PER,604,ISO 3166-2:PE,Americas,Latin America and the Caribbean,South America,019,419,005 -Philippines,PH,PHL,608,ISO 3166-2:PH,Asia,South-eastern Asia,"",142,035,"" -Pitcairn,PN,PCN,612,ISO 3166-2:PN,Oceania,Polynesia,"",009,061,"" -Poland,PL,POL,616,ISO 3166-2:PL,Europe,Eastern Europe,"",150,151,"" -Portugal,PT,PRT,620,ISO 3166-2:PT,Europe,Southern Europe,"",150,039,"" -Puerto Rico,PR,PRI,630,ISO 3166-2:PR,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Qatar,QA,QAT,634,ISO 3166-2:QA,Asia,Western Asia,"",142,145,"" -Réunion,RE,REU,638,ISO 3166-2:RE,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Romania,RO,ROU,642,ISO 3166-2:RO,Europe,Eastern Europe,"",150,151,"" -Russian Federation,RU,RUS,643,ISO 3166-2:RU,Europe,Eastern Europe,"",150,151,"" -Rwanda,RW,RWA,646,ISO 3166-2:RW,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Saint Barthélemy,BL,BLM,652,ISO 3166-2:BL,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -"Saint Helena, Ascension and Tristan da Cunha",SH,SHN,654,ISO 3166-2:SH,Africa,Sub-Saharan Africa,Western Africa,002,202,011 -Saint Kitts and Nevis,KN,KNA,659,ISO 3166-2:KN,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Saint Lucia,LC,LCA,662,ISO 3166-2:LC,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Saint Martin (French part),MF,MAF,663,ISO 3166-2:MF,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Saint Pierre and Miquelon,PM,SPM,666,ISO 3166-2:PM,Americas,Northern America,"",019,021,"" -Saint Vincent and the Grenadines,VC,VCT,670,ISO 3166-2:VC,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Samoa,WS,WSM,882,ISO 3166-2:WS,Oceania,Polynesia,"",009,061,"" -San Marino,SM,SMR,674,ISO 3166-2:SM,Europe,Southern Europe,"",150,039,"" -Sao Tome and Principe,ST,STP,678,ISO 3166-2:ST,Africa,Sub-Saharan Africa,Middle Africa,002,202,017 -Saudi Arabia,SA,SAU,682,ISO 3166-2:SA,Asia,Western Asia,"",142,145,"" -Senegal,SN,SEN,686,ISO 3166-2:SN,Africa,Sub-Saharan Africa,Western Africa,002,202,011 -Serbia,RS,SRB,688,ISO 3166-2:RS,Europe,Southern Europe,"",150,039,"" -Seychelles,SC,SYC,690,ISO 3166-2:SC,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Sierra Leone,SL,SLE,694,ISO 3166-2:SL,Africa,Sub-Saharan Africa,Western Africa,002,202,011 -Singapore,SG,SGP,702,ISO 3166-2:SG,Asia,South-eastern Asia,"",142,035,"" -Sint Maarten (Dutch part),SX,SXM,534,ISO 3166-2:SX,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Slovakia,SK,SVK,703,ISO 3166-2:SK,Europe,Eastern Europe,"",150,151,"" -Slovenia,SI,SVN,705,ISO 3166-2:SI,Europe,Southern Europe,"",150,039,"" -Solomon Islands,SB,SLB,090,ISO 3166-2:SB,Oceania,Melanesia,"",009,054,"" -Somalia,SO,SOM,706,ISO 3166-2:SO,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -South Africa,ZA,ZAF,710,ISO 3166-2:ZA,Africa,Sub-Saharan Africa,Southern Africa,002,202,018 -South Georgia and the South Sandwich Islands,GS,SGS,239,ISO 3166-2:GS,Americas,Latin America and the Caribbean,South America,019,419,005 -South Sudan,SS,SSD,728,ISO 3166-2:SS,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Spain,ES,ESP,724,ISO 3166-2:ES,Europe,Southern Europe,"",150,039,"" -Sri Lanka,LK,LKA,144,ISO 3166-2:LK,Asia,Southern Asia,"",142,034,"" -Sudan,SD,SDN,729,ISO 3166-2:SD,Africa,Northern Africa,"",002,015,"" -Suriname,SR,SUR,740,ISO 3166-2:SR,Americas,Latin America and the Caribbean,South America,019,419,005 -Svalbard and Jan Mayen,SJ,SJM,744,ISO 3166-2:SJ,Europe,Northern Europe,"",150,154,"" -Sweden,SE,SWE,752,ISO 3166-2:SE,Europe,Northern Europe,"",150,154,"" -Switzerland,CH,CHE,756,ISO 3166-2:CH,Europe,Western Europe,"",150,155,"" -Syrian Arab Republic,SY,SYR,760,ISO 3166-2:SY,Asia,Western Asia,"",142,145,"" -"Taiwan, Province of China",TW,TWN,158,ISO 3166-2:TW,,,,,, -Tajikistan,TJ,TJK,762,ISO 3166-2:TJ,Asia,Central Asia,"",142,143,"" -"Tanzania, United Republic of",TZ,TZA,834,ISO 3166-2:TZ,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Thailand,TH,THA,764,ISO 3166-2:TH,Asia,South-eastern Asia,"",142,035,"" -Timor-Leste,TL,TLS,626,ISO 3166-2:TL,Asia,South-eastern Asia,"",142,035,"" -Togo,TG,TGO,768,ISO 3166-2:TG,Africa,Sub-Saharan Africa,Western Africa,002,202,011 -Tokelau,TK,TKL,772,ISO 3166-2:TK,Oceania,Polynesia,"",009,061,"" -Tonga,TO,TON,776,ISO 3166-2:TO,Oceania,Polynesia,"",009,061,"" -Trinidad and Tobago,TT,TTO,780,ISO 3166-2:TT,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Tunisia,TN,TUN,788,ISO 3166-2:TN,Africa,Northern Africa,"",002,015,"" -Türkiye,TR,TUR,792,ISO 3166-2:TR,Asia,Western Asia,"",142,145,"" -Turkmenistan,TM,TKM,795,ISO 3166-2:TM,Asia,Central Asia,"",142,143,"" -Turks and Caicos Islands,TC,TCA,796,ISO 3166-2:TC,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Tuvalu,TV,TUV,798,ISO 3166-2:TV,Oceania,Polynesia,"",009,061,"" -Uganda,UG,UGA,800,ISO 3166-2:UG,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Ukraine,UA,UKR,804,ISO 3166-2:UA,Europe,Eastern Europe,"",150,151,"" -United Arab Emirates,AE,ARE,784,ISO 3166-2:AE,Asia,Western Asia,"",142,145,"" -United Kingdom of Great Britain and Northern Ireland,GB,GBR,826,ISO 3166-2:GB,Europe,Northern Europe,"",150,154,"" -United States Minor Outlying Islands,UM,UMI,581,ISO 3166-2:UM,Oceania,Micronesia,"",009,057,"" -Uruguay,UY,URY,858,ISO 3166-2:UY,Americas,Latin America and the Caribbean,South America,019,419,005 -Uzbekistan,UZ,UZB,860,ISO 3166-2:UZ,Asia,Central Asia,"",142,143,"" -Vanuatu,VU,VUT,548,ISO 3166-2:VU,Oceania,Melanesia,"",009,054,"" -"Venezuela, Bolivarian Republic of",VE,VEN,862,ISO 3166-2:VE,Americas,Latin America and the Caribbean,South America,019,419,005 -Viet Nam,VN,VNM,704,ISO 3166-2:VN,Asia,South-eastern Asia,"",142,035,"" -Virgin Islands (British),VG,VGB,092,ISO 3166-2:VG,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Virgin Islands (U.S.),VI,VIR,850,ISO 3166-2:VI,Americas,Latin America and the Caribbean,Caribbean,019,419,029 -Wallis and Futuna,WF,WLF,876,ISO 3166-2:WF,Oceania,Polynesia,"",009,061,"" -Western Sahara,EH,ESH,732,ISO 3166-2:EH,Africa,Northern Africa,"",002,015,"" -Yemen,YE,YEM,887,ISO 3166-2:YE,Asia,Western Asia,"",142,145,"" -Zambia,ZM,ZMB,894,ISO 3166-2:ZM,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 -Zimbabwe,ZW,ZWE,716,ISO 3166-2:ZW,Africa,Sub-Saharan Africa,Eastern Africa,002,202,014 diff --git a/goathacks/registration/forms.py b/goathacks/registration/forms.py deleted file mode 100644 index 10ff19a..0000000 --- a/goathacks/registration/forms.py +++ /dev/null @@ -1,44 +0,0 @@ -from flask_wtf import FlaskForm -from wtforms import BooleanField, IntegerField, PasswordField, SelectField, StringField, SubmitField, widgets -from wtforms.validators import DataRequired -import os - -class RegisterForm(FlaskForm): - __location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__))) - schools_list = open(os.path.join(__location__, 'schools.txt')).read().split("\n") - countries_list = open(os.path.join(__location__, 'countries.csv')).read().split("\n") - - email = StringField("Email", validators=[DataRequired()]) - first_name = StringField("Preferred First Name", - validators=[DataRequired()]) - last_name = StringField("Last Name", validators=[DataRequired()]) - password = PasswordField("Password", validators=[DataRequired()]) - password_confirm = PasswordField("Confirm Password", - validators=[DataRequired()]) - school = SelectField("School", choices=[(school, school) for school in schools_list], widget=widgets.Select()) - phone_number = StringField("Phone number", validators=[DataRequired()]) - age = IntegerField("Age", validators=[DataRequired()]) - dietary_restrictions = StringField("Dietary Restrictions (Optional)") - gender = SelectField("Gender", choices=[("F", "Female"), ("M", "Male"), - ("NB", "Non-binary/Other")], - widget=widgets.Select()) - country = SelectField("Country", choices=[(country.split(",")[0], country.split(",")[0]) for country in countries_list], widget=widgets.Select()) - newsletter = BooleanField("Subscribe to the MLH newsletter?") - agree_coc = BooleanField("I confirm that I have read and agree to the Code of Conduct", validators=[DataRequired()]) - logistics = BooleanField("I authorize you to share my application/registration with Major League Hacking for event administration, ranking, and MLH administration in-line with the MLH privacy policy.I further agree to the terms of both the MLH Contest Terms and Conditions and the MLH Privacy Policy.", validators=[DataRequired()]) - - submit = SubmitField("Register") - -class LoginForm(FlaskForm): - email = StringField("Email", validators=[DataRequired()]) - password = PasswordField("Password", validators=[DataRequired()]) - submit = SubmitField("Sign in") - -class ResetForm(FlaskForm): - email = StringField("Email", validators=[DataRequired()]) - submit = SubmitField("Request reset") - -class PwResetForm(FlaskForm): - password = PasswordField("Password") - password_confirm = PasswordField("Confirm Password") - submit = SubmitField("Submit") diff --git a/goathacks/registration/schools.txt b/goathacks/registration/schools.txt deleted file mode 100644 index e039da8..0000000 --- a/goathacks/registration/schools.txt +++ /dev/null @@ -1,2225 +0,0 @@ - -21st Century Cyber Charter School -Aalto University -Aarhus University -Abbey Park High School -Abbey Park Middle School -Abertay University -ABES Engineering College -Abington Senior High School -Abraham Lincoln High School -Abraham Lincoln High School - Philadelphia -Academy at Palumbo -Academy of Technology -"Acardia High School, Arizona" -Achariya College of Engineering Technology -Acharya Institute of Technology -Acharya Institute of Technology (AIT) -"Acharya Narendra Dev College, University Of Delhi" -Achievement House Charter School - Online -Acropolis Institute of Technology & Research -ACT Academy Cyber Charter School -Acton-Boxborough Regional High School -Adelphi University -"Aditya Institute of Technology and Management (AITAM College, Tekkali)" -Adlai E. Stevenson High School -Advanced Math and Science Academy Charter School -AGH University of Science and Technology -Agnes Scott College -Agora Cyber Charter School -Alagappa Chettiar Government College of Engineering and Technology -"Alagappa College of Technology, Anna University" -Alameda High School -Albany Medical College -Albany State University (GA) -Albertian Institute of Science and Technology (AISAT) -Albright College -Alfa College -Aligarh Muslim University -Allen High School -Alwar Institute of Engineering and Technology (AIET) -Ambala College of Engineering and Applied Research -Ambedkar Institute of Advanced Communication Technologies and Research (AIACTR) -AMC Engineering College -American Heritage School -American High School -"American River College, California" -American University in Dubai -"American University, Washington, D.C." -Amherst College -Amity School of Engineering and Technology -Amity University -Amrita School of Engineering -Amritsar College of Engineering & Technology -Anand Institute of Higher Technology -Ancaster High School -Anchor Bay High School -Andhra University College of Engineering -Andover Central High School -Angadi Institute of Technology & Management (AITM) -Anil Neerukonda Institute of Technology and Sciences -Anjalai Ammal Mahalingam Engineering College -Anna University -"Ansal Technical Campus, Dr. A.P.J Abdul Kalam Technical University" -"Anurag University, Ghatkesar" -Apeejay Stya University -APPA Institute of Engineering and Technology -Appalachian State University -APS College of Engineering -Aravali Institute of Technical Studies -"Arcadia High School, California" -Arcadia University -Arizona State University -"Army Institute Of Technology, Pune" -Art Institute of Philadelphia -Arya College of Engineering & I.T. -Asansol Engineering College -Ashoka Institute of Technology and Management -"Asia Pacific Institute of Information Technology, Panipat" -"Asia Pacific University of Information & Technology, Kuala Lumpur" -Asian School of Business Management (ASBM University) -ASPIRA Bilingual Cyber Charter School -Assam Downtown University -Assam Engineering College -"Assam University, Silchar" -Aston University -"Atal Bihari Vajpayee Indian Institute of Information Technology and Management, Gwalior (ABV-IIITM Gwalior)" -Atlanta Metropolitan State College -Atlantic Cape Community College -Atma Ram Sanatan Dharma College -ATME College of Engineering -Atria Institute of Technology -Auburn University -Audisankara College of Engineering and Technology -Aurora Group of Institutions -Austin Community College District -Aviation Career & Technical Education High School -Avon High School -B. P. Poddar Institute of Management and Technology -B. V. Bhoomaraddi College of Engineering and Technology (KLE Tech) -B.M.S College Of Engineering -B.N.M Institute of Technology -Babaria Institute of Technology -Babson College -Babu Banarasi Das National Institute of Technology and Management -Babu Banarasi Das Northern India Institute of Technology -Babu Banarsi Das Institute of Technology -Badruka Educational Society -Bahria University Lahore Campus -Ball State University -Baltimore Polytechnic Institute -Bangalore Institute of Technology -Bangalore University -Bannari Amman Institute of Technology -Bapuji Institute Of Engineering & Technology (BIET) -Bard College -Barnard College -Barton College -"Baruch College, CUNY" -Basaveshwar Engineering College -Baton Rouge Community College -Battlefield High School -Bauman Moscow State Technical University -Bayside High School -Bayview Secondary School -Beihang University -"Bellevue College, Washington" -Benedictine College -Benha University -Benjamin Franklin High School - Baltimore -Benjamin Franklin High School - Philadelphia -Bennett College -Bennett University (Times of India Group) -Bentley University -Berea College -Bergen Catholic High School -Bergen Community College -Bergen County Academies -Bergen County Technical High School - Teterboro -Berkshire Community College -Bhagalpur College of Engineering -Bhagwan Parshuram Institute of Technology -Bharat Institute of Engineering and Technology (BIET) -Bharathiar University -Bharati Vidyapeeth's College of Engineering -Bilkent University -Bineswar Brahma Engineering College (BBEC) -Binghamton University -"Birkbeck, University of London" -"Birla Institute of Technology and Science, Pilani" -"Birla Institute Of Technology, Mesra" -"Birla Institute of Technology, Patna" -Birla Vishvakarma Mahavidyalaya Engineering College -Birmingham City University -"Birsa Institute of Technology (BIT), SINDRI" -"BITS Pilani, Hyderabad Campus" -"BITS Pilani, K K Birla Goa Campus" -BLDEA’s V.P. Dr P. G. Halakatti College of Engineering & Technology -Blinn College -Bloomfield Hills High School -Bloomsburg University of Pennsylvania -Blue Mountain Academy -BlueCrest University College -Bluevale Collegiate Institute -"BMIET, Sonipat" -"BMIIT, Uka Tarsadia University, Bardoli, Surat" -BML Munjal University (BMU) -BMS Institute of Technology and Management -Boca Raton Community High School -Boise State University -Bordentown Regional High School -"Borough of Manhattan Community College, CUNY" -Boston College -Boston Latin School -Boston University -Boston University Metropolitan College -Bourne Grammar School -Bournemouth University -Bowdoin College -Bowie State University -Boys Latin of Philadelphia Charter School -Brampton Centennial Secondary School -Brandeis University -Brentsville High School -Briar Cliff University -Briarcliff High School -Bridgewater State University -Brigham Young University -British Columbia Institute of Technology -Brno University of Technology -Brock University -"Bronx Community College, CUNY" -Brookdale Community College -"Brooklyn College, CUNY" -Brooklyn Technical High School -Brookwood High School -Brown University -Brunel University London -Bryn Athyn College -Bryn Mawr College -Bucknell University -Bucks County Community College -Bundelkhand Institute Of Engineering & Technology (BIET Jhansi) -Burlington Township High School -Business Academy Aarhus -BVRIT Hyderabad College of Engineering for Women -C. Abdul Hakeem College of Engineering & Technology -C. D. Hylton High School -C. K. Pithawala College of Engineering and Technology -C.V. Raman College of Engineering -Cabrini University -Cadbury Sixth Form College -Cairn University -Caldwell University -California High School -California Institute of Technology -"California Polytechnic State University, San Luis Obispo" -"California State Polytechnic University, Pomona" -"California State University, Bakersfield" -"California State University, Channel Islands" -"California State University, Chico" -"California State University, Dominguez Hills" -"California State University, East Bay" -"California State University, Fresno" -"California State University, Fullerton" -"California State University, Humboldt" -"California State University, Long Beach" -"California State University, Los Angeles" -"California State University, Maritime" -"California State University, Monterey Bay" -"California State University, Northridge" -"California State University, Sacramento" -"California State University, San Bernardino" -"California State University, San Diego" -"California State University, San Francisco" -"California State University, San Jose" -"California State University, San Luis Obispo" -"California State University, San Marcos" -"California State University, Sonoma" -"California State University, Stanislaus" -California University of Pennsylvania -Calvin College -Camden County College -Cameron Heights Collegiate Institute -Canada (Cañada) College -Canara Engineering College (CEC) -Canyon Crest Academy -CAPA - Philadelphia High School for Creative and Performing Arts -Cardiff Metropolitan University -Carleton College -Carleton University -Carnegie Mellon University -Carteret High School -Carthage College -Cascadia College -Case Western Reserve University -"Cathedral High School, Los Angeles" -Catholic University of America -Cedar Creek High School -Cedar Ridge High School -Cedarville University -Cégep André-Laurendeau -Cégep de Saint-Laurent -Cégep du Vieux Montréal -Cégep Marie-Victorin -Centennial Collegiate Vocational Institute -Centennial High School -Central Connecticut State University -Central High School - Philadelphia -Central Institute of Plastics Engineering & Technology (CIPET) -Central PA Digital Learning Foundation Charter School -Central Peel Secondary School -Central Texas College -"Centro de Enseñanza Técnica y Superior (CETYS), Campus Ensenada" -"Centro de Enseñanza Técnica y Superior (CETYS), Campus Mexicali" -Cerritos College -Chaitanya Bharathi Institute of Technology -Chalmers University of Technology -Champlain College -Chandigarh College Of Engineering & Technology (CCET) -Chandigarh University -Channabasaveshwara Institute of Technology -Chaparral Star Academy -Chapel Hill High School -Charotar University Of Science And Technology (CHAURSAT) -Charter High School for Architecture and Design - Philadelphia -Chattahoochee Technical College -Cherokee High School -Cherry Hill High School East -Cherry Hill High School West -Chestnut Hill College -Cheyney University -Chinguacousy Secondary School -Chitkara Institute of Engineering & Technology (CIET) -Chitkara University -Christ College of Engineering and Technology -Christ Knowledge City -Christ University -Christ University Faculty of Engineering -Cincinnati State Technical and Community College -Citrus College -City College of San Francisco -City Engineering College -City Neighbors High School -City University London -Claremont McKenna College -Clarion University of Pennsylvania -Clark Atlanta University -Clark University -Clarksburg High School -Clarkson University -Clayton State University -Clemson University -Cleveland State University -Clifton Public Highschool -"Cluster Innovation Centre, University of Delhi" -"CMR College of Engineering and Technology, Hyderabad" -CMR Engineering College -CMR Institute of Technology (CMRIT) -CMR Technical Campus -Cochin College of Engineering and Technology -Cochin University College of Engineering Kuttanad -Cochin University of Science and Technology -Cochin University of Science And Technology -CODE University of Applied Sciences Berlin -Coe College -Coimbatore Institute of Engineering and Technology (CIET) -Coimbatore Institute of Technology (CIT) -Colegio Simón Bolívar -Colgate University -Collège Ahuntsic -Collège André-Grasset -Collège de Bois-de-Boulogne -Collège de Maisonneuve -Collège de Montréal -Collège de Rosemont -Collège Français -Collège Jean-de-Brébeuf -Collège Jean-Eudes -Collège Lionel-Groulx -College of Agricultural Engineering and Post Harvest Technology (CAEPHT) -"College of Agriculture, Central Agricultural University" -College of Charleston -College of DuPage -College of Engineering & Management Punnapra -"College of Engineering and Management, Kolaghat" -College of Engineering Chengannur -"College of Engineering, Pune" -"College of Staten Island, CUNY" -"College of Technology & Engineering, Udaipur" -College of Westchester -Collège Regina Assumpta -Colleyville Heritage High School -Collins Hill High School -Colorado School of Mines -Colts Neck High School -Columbia Secondary School -Columbia University -Columbus College of Art and Design -Columbus State Community College -Comenius University -Commonwealth Charter Academy Charter School -Community Academy of Philadelphia Charter School -Community College of Allegheny County -Community College of Baltimore County -Community College of Philadelphia -Community College of Rhode Island -COMSATS Institute of Information Technology -Concord Academy -Concordia University -Concordia University Ann Arbor -Concordia University Chicago -Concordia University Irvine -Concordia University Nebraska -Concordia University St. Paul -Concordia University Texas -Concordia University Wisconsin -Conestoga College -Conestoga High School -Connecticut College -"Conroe ISD Academy of Science and Technology, Texas" -Constitution High School - Philadelphia -Cooch Behar Government Engineering College -Cooper Union -Coral Glades High School -Cornell College -Cornell University -Council Rock High School North -Council Rock High School South -County College of Morris -Covenant University -Coventry University -Cranbrook Schools -Cranfield University -Creekview High School -Cumberland County College -"Cummins College of Engineering for Women, Pune" -Cupertino High School -D.J. College of Engineering & Technology -D.K.T.E Society's Textile and Engineering Institute -Dalhousie University -Dalmia Institute of Scientific & Industrial Research -Dartmouth College -Davidson College -Dawson College -Dayalbagh Educational Institute -Dayananda Sagar University -"DCS, Ganpat University" -De Anza College -"Deenbandhu Chhotu Ram University of Science and Technology, Murthal" -Deerfield High School -Del Norte High School -Delaware County Community College - Downingtown -Delaware County Community College - Exton -Delaware County Community College - Main Campus (Marple) -Delaware County Community College - Phoenixville -Delaware County Community College - Sharon Hill -Delaware County Community College - Upper Darby -Delaware County Community College - West Grove -Delaware State University -Delaware Technical Community College -Delaware Valley Academy of Medical and Dental Assistants -Delaware Valley University -Delft University of Technology -Delhi Technological University -Denison University -"Department of Human Resource Management and OB, Central University of Jammu" -DePaul University -DePauw University -Des Moines Area Community College -DeSales University -Devry University - Philadelphia Center City -Dharmsinh Desai University -Dhirubhai Ambani Institute of Information and Communication Technology (DA-IICT) -Diablo Valley College -Dickinson College -Digital Harbor High School -DIT University -Don Bosco College of Engineering -Don Bosco College of Engineering and Technology -Don Bosco Institute of Technology -Doon College of Engineering & Technology -Dougherty Valley High School -"Dr B. R. Ambedkar Institute of Technology, Port Blair" -"Dr. A.P.J. Abdul Kalam Technical University, Lucknow" -Dr. Akhilesh Das Gupta Institute of Technology & Management -Dr. B. R. Ambedkar National Institute of Technology Jalandhar -"Dr. B.C. Roy Engineering College, Durgapur" -Dr. Babasaheb Ambedkar Marathwada University -"Dr. Harisingh Gour University, Sagar University" -Dr. K.N. Modi Engineering College -Dr. MGR Educational Research Institute University -Dr. SJS Paul Memorial College of Engineering and Technology (CIT) -Dr. T. Thimmaiah Institute of Technology -Drake University -Drew University -Drexel University -Dublin High School -Dublin Jerome High School -Duke University -Dulaney High School -Duquesne University -Durant High School -Durham College -Durham University -Dwarkadas J. Sanghvi College of Engineering -Dwight-Englewood School -Earl of March Secondary School -Earlham College -East Brunswick High School -East Central University -East Chapel Hill High Schoo -East Los Angeles College -East Point College of Engineering and Technology -East Stroudsburg High School -East West Institute of Technology -EASTERN Center for Arts and Technology -Eastern High School - Louisville -Eastern Michigan University -Eastern Regional High School -Eastern University - St. Davids -Eastern University Academy Charter School -Eastern Washington University -Eckerd College -ecole centrale marseille -École Centrale Paris -École de technologie supérieure -"École nationale supérieure d’électronique, informatique, télécommunications, mathématique et mécanique de Bordeaux (ENSEIRB-MATMECA)" -École Polytechnique de Montréal -Edina High School -Edinburgh Napier University -Edison Academy -Edison High School -Edward R. Murrow High School -Egg Harbor Township High School -Eidgenössische Technische Hochschule (ETH) Zürich -"Ekta Incubation Center, West Bengal" -El Camino College -El Centro College -El Centro de Estudiantes -Elgin Academy -Elizabeth High School -Elon University -Embry-Riddle Aeronautical University -Emory University -"Entrepreneurship Development Center, MIT, Pune" -"Entreprpeneurship Development Cell, University of Kerala" -EPFL | École polytechnique fédérale de Lausanne -Episcopal Academy -EPITECH Bordeaux -Er.Perumal Manimekalai College of Engineering -Erasmus Hogeschool Brussel -Erie Community College -Ernest Manning High School -Esperanza Academy Charter School -Esperanza Cyber Charter School -Evergreen Valley College -Evergreen Valley High School -Fachhochschule Dortmund -"Faculty Of Engineering & Technology, Gurukula Kangri Vishwavidyalaya" -Faculty of science / Ibn Tofail University -Fahaheel Al-Watanieh Indian Private School -Fairfield University -Fairleigh Dickinson University -Fairview High School -Farmingdale State College -FernUniversität in Hagen -Finolex Academy of Management and Technology -First Philadelphia Preparatory Charter School -Fitchburg State University -Florida Agricultural & Mechanical (A&M) University -Florida Atlantic University -Florida Gulf Coast University -Florida Institute Of Technology -Florida International University -Florida Polytechnic University -Florida State University -Fontys Hogeschool -Foothill College -Fordham University -Forest Heights Collegiate Institute -Forest Park High School - Baltimore -"Forest Park High School - Forest Park, GA" -Forest Park High School - Woodbridge -Fort Scott Community College -Foundation Collegiate Academy -"Foundation for Innovation and Technology Transfer, IIT Delhi" -Fr. Conceicao Rodrigues College of Engineering -Francis Holland School -Francis Lewis High School -Frankford High School - Philadelphia -Franklin High School -Franklin Learning Center - Philadelphia -Franklin Towne Charter High School -Franklin W. Olin College of Engineering -Frederick Community College -Freedom High School - Bethlehem -Freedom High School - Woodbridge -Freehold High School -Freire Charter High School -Fremont High School -Full Sail University -Fullerton College -G. H. Patel College of Engineering & Technology -G. Narayanamma Institute of Technology Science (For Women) -G.H. Raisoni College of Engineering -Galgotias College of Engineering & Technology -Gandhi Institute of Technical Advancement (GITA) -"Gandhi Institute of Technology and Management, Bengaluru" -"Gandhi Institute of Technology and Management, Hyderabad" -"Gandhi Institute of Technology and Management, Visakhapatnam" -Gandhi Institution of Management Studies -Ganga International School -Ganpat University -Gar-Field Senior High School -Garnet Valley High School -Gautam Buddha University -Gaya College Of Engineering -Gayatri Vidya Parishad College of Engineering -"GEC, Gandhinagar" -"GEC, Patan" -Geetanjali Institute of Technical Studies (GITS) -Geethanjali College of Engineering and Technology -George C. Marshall High School -George Heriot's School -George Mason University -George Washington High School - Philadelphia -Georgetown University -Georgia Institute of Technology -Georgia State University -Germantown Friends School -Geroge Washington Carver High School - Philadelphia -Ghent University -Ghousia College of Engineering -GIDC Degree Engineering College -Girijananda Chowdhury Institute of Management and Technology (GIMT) -GITAM Centre for Integrated Rural Development -Gitam School of Technology -GL Bajaj Institute of Technology and Management -Glassboro High School -Glenaeon Rudolf Steiner School -Glenbrook North High School -Glenbrook South High School -Glendale Community College -Glenforest Secondary School -Global Academy of Technology -GMR Institute of Technology -Goa College of Engineering -GOA IT INNOVATION CENTRE -Gokaraju Rangaraju Institute of Engineering and Technology (GRIET) -"Goldsmiths, University of London" -Gopalan College of Engineering and Management -Gordon Graydon Memorial Secondary School -Gottfried Wilhelm Leibniz Universität Hannover -"Government College of Engineering & Technology, Jammu" -"Government College Of Engineering, Amravati" -"Government College Of Engineering, Aurangabad" -"Government College of Engineering, Bargur" -"Government College of Engineering, Kalahandi" -"Government College of Engineering, Kannur" -"Government College Of Engineering, Karad" -"Government College of Engineering, Salem" -"Government College of Technology, Coimbatore" -"Government Engineering College Palakkad, Sreekrishnapuram" -"Government Engineering College, Ajmer" -"Government Engineering College, Banswara" -"Government Engineering College, Hassan" -"Government Engineering College, Kozhikode" -"Government Engineering College, Thrissur" -"Government Model Engineering College, Thrikkakara" -Government Polytechnic Gandhinagar -Government Sri Krishnarajendra Silver Jubilee Technological Institute -Governor's School for Science & Technology -Govind Ballabh Pant Institute of Engineering & Technology -Grady High School -Grand Rapids Community College -Grand Valley State University -Graphic Era University -Great Neck South High School -Greater Lowell Technical High School -Green River College -Greenwood College School -Grinnell College -GSSS Institute of Engineering & Technology for Women -Guelph Collegiate Vocational Institute -Gujarat Energy Research and Management Institute (GERMI) -Gujarat Technological University -Gujarat University -"Guru Ghasidas Vishwavidyalaya, Bilaspur" -Guru Gobind Singh Indraprastha University -"Guru Jambheshwar University of Science and Technology (GJUS&T), HISAR" -"Guru Jambheshwar University of Science and Technology, Hisar" -Guru Nanak Dev Engineering College -Guru Nanak Institutions -Guru Tegh Bahadur Institute of Technology (GTBIT) -Gurukula Kangri University -"Guttman Community College, CUNY" -Gwalior Engineering College -Gwinnett Technical College -Gwynedd Mercy University -GZS Campus College of Engineering & Technology -H.N. Werkman College -Haaga-Helia University of Applied Sciences -Haldia Institute of Technology -Hamilton College -Hamline University -Hampshire College -Hampton University -HAN University of Applied Sciences -Hanze University of Applied Sciences -"Harcourt Butler Technical University, Kanpur" -Harcum College -Harper College -Harrisburg Area Community College -Harrisburg University - Harrisburg Campus -Harrisburg University - Philadelphia Campus -Harrison Career Institute -Harvard Medical School -Harvard University -Harvey Mudd University -Haryana Engineering College -Hasso-Plattner-Institut Academy -Haverford College -Hazleton Area High School -Head-Royce School -Health Careers High School -Heartland Community College -Helwan University -Henry M. Gunn High School -Herguan University -Heritage Institute of Technology -Het Baarnsch Lyceum -Hi-Tech Institute of Engineering & Technology -Hi-Tech Institute of Technology -High Technology High School -Highland Park High School -Hightstown High School -Hillsborough Community College -Hillsborough High School -Hindustan College of Science & Technology -Hindustan Institute of Technology & Science -Hinsdale Central High School -Hiram College -"Hirasugar Institute of Technology, Nidasoshi" -HKBK College of Engineering -"HMR Institute of Technology & Management, GGSIPU" -HMS Institute of Technology -Hofstra University -Hogeschool Thomas More -Hogeschool van Amsterdam -Holton-Arms School -Holy Family University -Homestead High School -Hong Kong University of Science and Technology -Hood College -Horace Furness High School -Horace Mann School -"Hostos Community College, CUNY" -Houghton High School -Houston Community College -Howard University -Hudson County Community College -Hudson Valley Community College -Hunter College High School -"Hunter College, CUNY" -Huron Heights Secondary School -Hussian School of Art -I.K. Gujral Punjab Technical University Jalandhar (IKGPTU) -I.T.S Engineering College -IAN Mentoring and Incubation Services -"IIMT College of Engineering, Greater Noida" -"IIMT College Of Medical Sciences, Meerut" -"IIMT College of Pharmacy, Greater Noida" -"IIMT Engineering College, Meerut" -IKP Knowledge Park Erstwhile ICICI Knowledge Park -Iliria College -Illinois Institute of Technology -Illinois State University -Imhotep Institute Charter High School -Immaculata University -Impact College of Engineering and Applied Science -Imperial College London -IMS Engineering College -Inderprastha Engineering College (IPEC) -Indian Hills Community College -"Indian Institute of Engineering Science and Technology (IIEST), Shibpur" -"Indian Institute of Information Technology Design & Manufacturing, Jabalpur" -"Indian Institute of Information Technology, Allahabad" -"Indian Institute of Information Technology, Kalyani" -"Indian Institute of Information Technology, Kottayam" -"Indian Institute of Information Technology, Pune" -"Indian Institute of Information Technology, Sri City" -"Indian Institute of Information Technology, Una" -"Indian Institute of Information Technology, Vadodara" -Indian Institute of Space Science and Technology (IIST) -"Indian Institute of Technology (ISM), Dhanbad" -"Indian Institute of Technology, BHU" -"Indian Institute of Technology, Bhubaneswar" -"Indian Institute of Technology, Bombay" -"Indian Institute of Technology, Gandhinagar" -"Indian Institute of Technology, Guwahati" -"Indian Institute of Technology, Gwalior" -"Indian Institute of Technology, Hyderabad" -"Indian Institute of Technology, Jabalpur" -"Indian Institute of Technology, Jodhpur" -"Indian Institute of Technology, Kanpur" -"Indian Institute of Technology, Kharagpur" -"Indian Institute of Technology, Kota" -"Indian Institute of Technology, Madras" -"Indian Institute of Technology, Patna" -"Indian Institute of Technology, Roorkee" -"Indian Institute of Technology, Ropar" -Indiana State University -Indiana University -Indiana University of Pennsylvania -Indiana University-Purdue University Fort Wayne -Indiana University–Purdue University Indianapolis -Indira Gandhi Delhi Technical University for Women -"Indira Gandhi Engineering College, Sagar" -"Indira Gandhi Institute of Technology, Sarang" -Indira Gandhi National Open University -Indraprastha Institute of Information Technology -"Indus University, Ahmedabad" -Insight PA Cyber Charter School -Institut polytechnique de Bordeaux (INP) -Institute for Auto Parts and Hand Tools Technology -"Institute of Aeronautical Engineering (IARE), Hyderabad" -Institute of Engineering & Management (IEM) -Institute of Engineering and Rural Technology Allahabad -"Institute of Engineering and Technology, DAVV" -"Institute of Infrastructure Technology Research and Management, Ahmedabad" -"Institute of Technical Education and Research (ITER), Bhubaneswar" -"Institute of Technology, Banaras Hindu University" -"Institute Of Technology, Nirma University" -Instituto Politécnico Nacional -Instituto Tecnológico Autónomo de México (ITAM) -Instituto Tecnólogico de La Laguna (ITL) -Instituto Tecnológico Superior de Cintalapa -Instituto Tecnológico Superior de El Mante -Instituto Tecnológico Superior de los Ríos -Instituto Tecnologico Superior de San Martin Texmelucan -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Aguascalientes -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Chiapas -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Chihuahua -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Ciudad de Mexico -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Ciudad Juárez -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Cuernavaca -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Cumbres -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Eugenio Garza Lagüera -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Eugenio Garza Sada -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Guadalajara -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Hidalgo -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Irapuato -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Laguna -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus León -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Morelia -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Obregón -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Puebla -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Querétaro -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Saltillo -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus San Luis Potosí -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Santa Catarina -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Santa Fe -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Sinaloa -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Sonora -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Tampico -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Toluca -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Valle Alto -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Veracruz -Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) Campus Zacatecas -Instituto Tecnológico y de Estudios Superiores de Occidente (ITESO) -Instytut Pamięci Narodowej -"International Institute of Information Technology, Hyderabad" -"International Institute of Information Technology, Bangalore" -"International Institute Of Information Technology, Naya Raipur" -International Leadership Charter High School -International School of Choueifat -Iowa Central Community College -Iowa State University -Iowa Western Community College -"Islamic University of Science and Technology, Pulwama" -Istanbul University -IT University of Copenhagen -Ithaca College -"ITM University, Gwalior" -"ITM University, Vadodara" -ITMO University -"J.C. Bose University of Science and Technology, YMCA" -J.N.N College of Engineering -Jabalpur Engineering College -Jackson Memorial High School -Jackson State University -Jacobs University Bremen -Jadavpur University -Jagiellonian University -Jai Narain Vyas University -Jaipur Engineering College & Research Centre (JECRC) -Jaipur National University -Jalpaiguri Government Engineering College -James Gillespie's High School -James Madison High School -James Madison University -Jamia Hamdard -"Jamia Millia Islamia - JMI, Jamia Nagar" -Jawaharlal Nehru Government Engineering College (JNGEC) -Jawaharlal Nehru Technological University -"Jaypee Institute of Technology, Noida" -Jaypee University of Engineering and Technology -Jerusalem College of Engineering -JK Institute of Applied Physics and Technology -JK Lakshmipat University (JKLU) -Jnanavikas Institute of Technology -"JNTUA College of Engineering, Pulivendula" -"JNTUH College of Engineering, HYDERABAD" -"JNTUK University College of Engineering, Vizianagaram" -Jodhpur Institute of Engineering and Technology (JIET) -John A. Ferguson Senior High School -John Abbott College -John Bartram High School -John F. Kennedy Memorial High School -"John Jay College of Criminal Justice, CUNY" -John Leggott College -John P. Stevens High School -Johns Hopkins University -Johnson & Wales University -Johnson C. Smith University -Jorhat Engineering College -Jorhat Institute of Science and Technology -JSS Academy of Technical Education -Jules E. Mastbaum Technical High School -Julia R. Masterman School -Jyothy Institute of Technology -K S School of Engineering and Management -K. J. Somaiya College of Engineering -"K. S Institute of Technology (KSIT), Bengaluru" -K.L. College of Engineering -K.L.S Gogte Institute of Technology -K.M.E.A Engineering College -K.S Rangasamy College Of Technology -K.S. School of Business Management -Kamla Nehru Institute of Technology -Kansai University -Kansas State University -Kantipur Engineering College -Karlsruhe Institute of Technology -Karmaveer Bhaurao Patil College of Engineering -Karpagam College of Engineering (KCE) -Karunya Institute of Technology and Sciences -Kashi Institute of Technology -Kathmandu BernHardt College -Kaunas University of Technology -KCG College of Engineering -Kean University -Keele University -"Kendriya Vidyalaya, AFS, Begumpet" -Kennesaw State University -Kennett High School -Kensington High School Complex -Kent State University -Kent State University at Stark -"Keshav Memorial Institute of Technology, Hyderabad" -Khan Lab School -King Edward VI Five Ways School -King's College London -"Kingsborough Community College, CUNY" -Kingsway Regional High School -KIPP DuBois Charter School -Kitchener-Waterloo Collegiate & Vocational School -"KJ's Educational Institutes, Pune" -KLE Dr. M.S. Sheshgiri College of Engineering and Technology -KLN College of Engineering -KLS Gogte Institute of Technology -Knox College -KNSIT -Konark Institute of Science and Technology -Kongu Engineering College -Koustuv Group Of Institutions (KISD & COEB) -Kraków University of Economics -"Krishi Vigyan Kendra, Durgapur" -Krishna Engineering College -Kristu Jayanti College -Kshatriya College of Engineering -KTH Royal Institute of Technology -Kumaraguru College Of Technology -Kutztown University of Pennsylvania -L D College Of Engineering Library -L. D. College of Engineering -La Roche College -La Salle University - Philadelphia -La Sierra University -Lady Doak College -Lafayette College -"LaGuardia Community College, CUNY" -Lake Braddock Secondary School -Lakeside High School -Lakshmi Narayan College of Technology (LNCT) -Lampeter-Strasburg High School -Lancaster University -Lankenau High School -Laval University -Lawrence Technological University -Lawrence University -LBS Institute of Technology for Women (LBSITW) -Lehigh University -"Lehman College, CUNY" -Leiden University -Lewis & Clark College -Lewis University -Lexington High School -LICET -Lick Wilmerding High School -LIM College -Lincoln Christian University -Lincoln Technical Institute - Center City Philadelphia -Lincoln Technical Institute - Northeast Philadelphia -Lincoln University -Lindenwood University -Linn-Mar High School -Lisgar Collegiate Institute -Little Flowers Public Sr Secondary School -Livingston High School -Loch Raven High School -Lodz University of Technology -"Loknayak Jai Prakash Institute of Technology, Chhapra" -London Metropolitan University -London School of Economics and Political Science -Lone Star College System -Lord Krishna College of Engineering -Lords Institute of Engineering & Technology -Los Altos High School -Loughborough University -Louisiana State University -Lovely Professional University -Lowell High School -Loyola Marymount University -"Luleå University of Technology, LTU" -Luther College -"Lyallpur Khalsa College of Engineering, Jalandhar" -Lynbrook High School -M.J.P. Rohilkhand University -M.S. Ramaiah School of Advance Studies -M.V.Jayaraman College of Engineering -Macalester College -MacArthur High School -"Macaulay Honors College, CUNY" -MacEwan University -Macomb Community College -"Madan Mohan Malaviya University of Technology, Gorakhpur" -Madhav Institute of Technology & Science (MITS) -Madison College -Madison West High School -Madras Institute Of Technology -Maggie L. Walker Governor's School -Mahakal Institute Of Technology -Maharaj Vijayaram Gajapathi Raj College of Engineering (MVGRCE) -Maharaja Agrasen Institute of Technology -Maharaja Surajmal Institute of Technology -"Maharashtra Institute of Technology, Pune" -Mahatma Gandhi Institute for Rural Industrialization (MGIRI) -Mahatma Gandhi Institute of Technology (MGIT) -Mahendra Engineering College -Mailam Engineering College -Maine South High School -"Maitreyi College, University of Delhi" -Majhighariani Institute Of technology & Science (MITS) -Malaviya National Institute of Technology Jaipur -Malineni Lakshmaiah Women's Engineering College -Malla Reddy College of Engineering Technology -Malla Reddy Engineering College (MREC) -Malla Reddy Institute Of Engineering And Technology (MRIET) -Malnad College of Engineering -Malvern Preparatory School -Malvern Preparatory School -Manakula Vinayagar Institute of Techology -Manalapan High School -Manav Rachna International -Manchester Metropolitan University -Manhattan College -Manhattan High School -Manipal Institute of Technology -Manipal University -"Manipal University, Jaipur" -Manor College -Mar Athanasius College of Engineering -Marc Garneau Collegiate Institute -Marcellus High School -Mariana Bracetti Academy Charter School -Marianopolis College -Marist College -Maritime Academy Charter School (MACHS) -Markham District High School -Markville Secondary School -Marlboro High School -Marquette University -Marshall High School -Martin Luther King High School -Marymount University -Masaryk University -Massachusetts Institute of Technology -Mastery Charter School - Hardy Williams Academy -Mastery Charter School - Thomas Campus -Mastery Charter School at Lenfest Campus -Mastery Charter School at Pickett Campus -Mastery Charter School at Shoemaker Campus -Mata Gujri College -Mater Academy High School -"Math, Civics and Sciences Charter School - Philadelphia" -"Mathematics, Science, and Technology Community Charter School (MaST)" -"Matrusri Engineering College, Hyderabad" -Maulana Abul Kalam Azad University of Technology -Maulana Azad National Institute of Technology -Maulana Azad National Institute of Technology Bhopal -Maumee Valley Country Day School -"MBM Engineering College, Jodhpur" -McGill University -McMaster University -"Medgar Evers College, CUNY" -Medical University of Silesia -Meerut Institute of Engineering and Technology (MIET) -Menlo School -Mepco Schlenk Engineering College -Merced College -Mercer County Community College -Mercer University -Meredith College -Messiah College -Metas Adventist School -Metropolia University of Applied Sciences -Metropolitan State University -Metuchen High School -Mewar University Chittorgarh -Miami Dade College -Miami Lakes Educational Center -Miami University -Michigan State University -Michigan Technological University -Microsoft School of the Future High School -Middle Tennessee State University -Middlebury College -Middlesex County Academy -Middlesex County Academy For Allied Health And Biomedical Sciences -"Middlesex County Academy for Science, Mathematics & Engineering Technologies" -Middlesex County College -Middlesex University -Middleton High School -Middletown High School South -Midwood -Miles College -Millburn High School -Millburn Middle School -Millville Senior High School -Milwaukee School of Engineering -Minerva University -"Minnesota State University, Mankato" -Misrimal Navajee Munoth Jain Engineering College -Mission College Boulevard -Mission San Jose High School -Mississippi State University -Mississippi University for Women -Missouri State University -Missouri University of Science and Technology -Model Institute of Engineering and Technology (MIET) -Modern Engineering and Management Studies -Mody University -Mohammed V University -Molloy College -Monmouth College -Monmouth University -Monroe Community College -Monroe Township High School -Monta Vista High School -Montana State University -Montclair High School -Montclair State University -Montgomery Blair High School -Montgomery College -Montgomery County Community College - Central Campus (Blue Bell) -Montgomery County Community College - West Campus (Pottstown) -Montgomery High School -Montville Township High School -Moore College of Art and Design -Moore Middle School -Moorestown High School -Moraine Valley Community College -Morehouse College -Morgan State University -Morris County School of Technology -Morris Hills High School -Morton College -Moscow Institute of Physics and Technology -Moscrop Secondary School -Motilal Nehru National Institute of Technology Allahabad -Motivation High School (formerly John Bartram High School) -Mount Holyoke College -Mountain Lakes High School -Mountain View High School -MSME TDC PPDC Agra -Mt. San Antonio College -Muhlenberg college -Multi-Cultural Academy Charter School -Murrell Dobbins Technical High School -Muthoot Institute of Technology & Science -Muzaffarpur Institute of Technology -MVJ College of Engineering -"Nagaland University, Dimapur Campus" -"Nalla Malla Reddy Engineering College, Ghatkesar" -Nanyang Technological University -Narsee Monjee College of Commerce and Economics -Narsihma Reddy Engineering College -Nashua High School South -National Engineering College -"National Institute of Engineering, Mysore" -"National Institute of Science and Technology, Odisha" -"National Institute of Technology, Agartala" -"National Institute of Technology, Calicut" -"National Institute of Technology, Delhi" -"National Institute of Technology, Durgapur" -"National Institute of Technology, Goa" -"National Institute of Technology, Hamirpur" -"National Institute of Technology, Jamshedpur" -"National Institute of Technology, Karnataka" -"National Institute of Technology, Kurukshetra" -"National Institute of Technology, Patna" -"National Institute of Technology, Raipur" -"National Institute of Technology, Rourkela" -"National Institute of Technology, Silchar" -"National Institute of Technology, Srinagar" -"National Institute of Technology, Surat" -"National Institute of Technology, Tiruchirappalli" -"National Institute of Technology, Trichy" -"National Institute of Technology, Uttarakhand" -"National Institute of Technology, Warangal" -"National Institute of Technology, Warangal" -National Research University Higher School Of Economics -National University of Singapore -Neotia Institute Of Technology Management and Science (NITMAS) -Netaji Subhas Institute of Technology -Netaji Subhash Engineering College -Neumann University -New Albany High School -New Foundations Charter School - Philadelphia -New Horizon College of Engineering -New Jersey City University -New Jersey Institute of Technology -New Providence High School -New River Community College -"New York City College of Technology, CUNY" -New York Institute of Technology -New York University -New York University Abu Dhabi -Newark Charter High School -Newark Charter Junior/Senior High School -Newcastle University -Newton South High School -Niagara College -NIFT-TEA College of Knitwear Fashion -NIIT University -Nipissing University -Nirma University -NITK Science & Technology Entrepreneurs' Park (NITK-STEP) -Nitte Meenakshi Institute of Technology -Nizam College of Engineering Technology -NMAM Institute of Technology -Noakhali Science and Technology University -Noida Institute of Engineering and Technology -Noor-ul-Iman -Norco College -Norfolk State University -North American University -North Andover High School -North Brunswick Township High School -North Carolina Agricultural and Technical (A&T) State University -North Carolina Central University -North Carolina School of Science and Mathematics -North Carolina State University -North Dakota State University -North Hunterdon High School -North Park Secondary School -North Penn High School -North Shore Community College -Northeast High School - Philadelphia -Northeastern University -Northern Alberta Institute of Technology (NAIT) -Northern Arizona University -Northern Illinois University -Northern Kentucky University -Northern Michigan University -Northern Secondary School -Northern Virginia Community College -Northumbria University -Northview High School -Northwest Missouri State University -Northwest Parkway High School -Northwest Vista College -Northwestern Oklahoma State University -Northwestern University -Northwood Academy/Arts School -Nottingham Trent University -Novi High School -NRI Institute of information Science and Technology (NIIST) -NSS College of Engineering -Oakland Community College -Oakland University -Obafemi Awolowo University Ile-Ife -Oberlin College -Ocean City High School -Ocean County College -Oglethorpe University -Ohio Christian University -Ohio University -Okemos High School -Oklahoma State University -Old Dominion University -"Old Westbury, SUNY" -Olney High School -Onalaska High School -Onondaga Community College -Ontario Tech University -Opolska University of Technology -Oratary Prep School At Summit -Oregon State University -Oriental Group of Institutes -Orissa Engineering College -Orleans Technical Institute -Osbourn Park High School -Ostbayerische Technische Hochschule Regensburg -Otterbein University -Overbrook High School - Philadelphia -Oxford Academy High School -Oxford Brookes University -P.D.A. College of Engineering -Pace University -"Pacific University, Udaipur" -Palo Alto High School -Palomar College -Pandit Deendayal Petroleum University -"Panjab University, SSG Regional Centre" -"Parala Maharaja Engineering College, Berhampur" -Paramount International School -Park College of Engineering and Technology -Parkview High School -Parkway Center City High School -Parkway West High School -Parsippany High School -Parsons School of Design -Parul Institute of Engineering & Technology -Pasadena City College -"Pascal English School, Cyprus" -Pathways School Noida -Patriot High School - Nokesville -Patriot High School - Riverside -Paul Robeson High School (formerly John Bartram High School) -PDM College of Engineering -Peirce College -"Penn State Erie, The Behrend College" -Penncrest High School -Pennington School -Pennsylvania Academy of the Fine Arts -Pennsylvania Cyber Charter School -Pennsylvania Distance Learning Charter School - Online -Pennsylvania Institute of Technology - Center City Philadelphia -Pennsylvania Institute of Technology - Media -Pennsylvania Leadership Charter School - Online -Pennsylvania Virtual Charter School -Periyar Maniammai Institute of Science & Technology (PMU) -Perth Amboy High School -Perth Amboy Vocational Technical School -"PES College of Engineering, Mandya" -PES University -"PESIT, Bangalore South Campus" -PGP College of Engineering Technology -Philadelphia Academy Charter School -Philadelphia Electrical and Technology Charter School -Philadelphia High School for Girls -Philadelphia Performing Arts Charter School (String Theory High School) - Vine Street Campus -Piedmont High School -Pierre Elliott Trudeau High School -Pima Community College -Pingree School -Piscataway Township High School -Pittsburgh Technical College - Philadelphia -Pittsburgh Technical Institute -Plaksha University -Plano East Senior High School -Plovdiv Medical University -Point Pleasant Beach High School -Pokhara University -Politecnico di Milano -Polsko-Japońska Akademia Technik Komputerowych -Pomona College -Pondicherry Engineering College -Poolesville High School -Poornima College of Engineering -Poornima Group of Institutions -Poornima Institute Of Engineering And Technology -Pope John Paul II High School -Port Credit Secondary School -Porter-Gaud School -Portland State University -Potomac Senior High School -"Potsdam, SUNY" -Poznań University of Technology -Pranveer Singh Institute of Technology -Prathyusha Engineering College -"Presidency School, Surat." -Preston High School -Preston University -Princeton Day School -Princeton High School -Princeton International School Of Mathematics And Science -Princeton University -"Priyadarshini College Of Engineering (PEC), Nagpur" -Proudhadevaraya Institute Of Technology -"PSG College of Technology, Coimbatore" -PSG-Science & Technology Entrepreneurial Park (PSG-STEP) -Pune Institute of Computer Technology -Punjab Engineering College (PEC) -Punjab Institute of Management & Technology -Punjab Institute Of Medical Sciences (PIMS) -"Punjab Institute of Technology, Rajpura" -"Punjab University, Patiala" -Purdue University -Queen Mary University of London -Queen's University -"Queens College, CUNY" -"Queensborough Community College, CUNY" -R N S Institute of Technology (RNSIT) -R. R. Institute of Technology -R.L.Jalappa Institute of technology -R.V. College Of Engineering -R.V. College of Engineering (RVCE) -R.V.R. & J.C. College of Engineering -"Radharaman Institute of Research Technology (RIRT), Radharaman Group" -"Radharaman Institute of Technology & Science (RITS), Bhopal" -Radnor High School -Raj Kumar Goel Engineering College -Rajagiri School of Engineering and Technology -Rajarajeswari College of Engineering (RRCE) -Rajasthan Institute Of Engineering and Technology -Rajdhani College of Engineering & Management -Rajendra Mane College of Engineering and Technology (RMCET) -Rajiv Gandhi College of Engineering and Technology -"Rajiv Gandhi Institute of Technology (RIT), Kottayam" -"Rajiv Gandhi University of Knowledge Technologies (RGUKT), Basar" -"Rajkiya Engineering College, Ambedkar Nagar" -Raksha Shakti University -RAM-EESH INSTITUTE OF ENGINEERING TECHNOLOGY -Ramaiah Institute of Technology -Ramapo College of New Jersey -Ramapo High School -"Ramrao Adik Institute of Technology (RAIT), DY Patil University" -Randolph-Macon College -Rani Laxmi Bai Public School -Raritan High School -Raritan Valley Community College -Rasmussen University -Ravenscroft School -Ravenwood High School -Reach Cyber Charter School -Red Bank Regional High School -Reed College -"Regional College For Education Research and Technology, Jaipur" -Regis High School -Rensselaer Polytechnic Institute -REVA University -Rheinisch-Westfälische Technische Hochschule Aachen (RWTH) -Rhode Island College -Rhode Island School of Design -Rhodes College -Rice University -Richard Montgomery High School -Richard Stockton University -Richardson High School -Richland College -Richmond Hill High School -Rider University -Ridge High School -Ridgewood High School -Riga Technical University -RIMT Institute of Engineering and Technology -River Dell High School -RMK College of Engineering -RNS Institute of Technology -Robbinsville High School -Robert Gordon University -Rochester Institute of Technology -Rock Ridge High School -Roger Williams University -Rollins College -Roosevelt High School -Rosa Parks Middle School -Rose-Hulman Institute of Technology -Rosemont College -Rowan College at Burlington County - Mount Holly -Rowan College at Burlington County - Pemberton -Rowan College at Burlington County - Willingboro -Rowan College at Gloucester County - Mount Laurel -Rowan University -Roxborough High School -Roxbury High School -"Royal Holloway, University of London" -RPIIT Technical Campus -Rudbecksgymnasiet -"Rungta College of Engineering and Technology, Bhilai" -Rustamji Institute of Technology -Rutgers Preparatory School -Rutgers University - Newark -Rutgers University – Camden -"Rutgers, The State University of New Jersey" -Ryde School -Rye High School -Ryerson University -S A Engineering College -S G Balekundri Institute of Technology -Sachdeva Institute of Technology -Sagar Institute of Science & Technology (SISTec) -Saginaw Valley State University -Sahrdaya College of Engineering and Technology -Sai Vidya Institute of Technology -Saint Joseph High School -Saint Joseph's College of Maine -Saint Joseph's Preparatory School - Philadelphia -Saint Joseph's University - Philadelphia -Saint Paul College -Saint Peter's Preparatory School -Saint Peter's University -SAL Engineering and Technical Institute -Salem Community College -Salem State University -Sambalpur University Institute of Information Technology (SUIIT) -Sambhram Institute of Technology -Samrat Ashok Technological Institute (S.A.I.T) -Samuel Fels High School - Philadelphia -San Diego State University -San Francisco State University -San Jose State University -San Marcos High School -San Marin High School -San Mateo High School -Sankofa Freedom Academy Charter School -Sant Longowal Institute of Engineering and Technology -Santa Barbara City College -Santa Clara University -Santa Margarita Catholic High School -Santa Rosa Junior College -Sapthagiri College of Engineering -Saratoga High School -Sardar Patel Institute Of Technology -Sardar Patel University -"Sardar Vallabhbhai National Institute of Technology, Surat" -"Sardar Vallabhbhai Patel Institute of Technology, Vasad" -Sarvajanik College of Engineering & Technology -SASTRA University -Saurashtra University Rajkot -Savannah State University -Savitribai Phule Pune University -"School of Engineering and Technology, Mizoram University" -"School of Engineering, Cochin University of Science and Technology" -"School of Professional Studies, CUNY" -"School of Visual Arts, New York" -"Science and Technology Entrepreneurs Park (STEP), Harcourt" -"Science and TechnologyEntrepreneurs Park, Indian Institute of Technology" -Science Leadership Academy -Scranton High School -Seneca College -Seton Hall University -Seven Lakes High School -Seventh Day Adventist High School -Shaker High School -Shankersinh Vaghela Bapu Institute of Technology -Sharda University -Sheffield Hallam University -Shelton High School -Sheridan College -Sherwood Convent School -Sherwood High School -Shiv Nadar University -Shri Dharmasthala Manjunatheshwara College of Engineering and Technology (SDM) -Shri Govindram Seksaria Institute of Technology and Science -Shri Guru Gobind Singhji Institute of Engineering and Technology (SGGS) -Shri Guru Ram Rai Public School -Shri Mata Vaishno Devi University(SMVDU) -Shri Ramswaroop College Of Engineering and Management -Shri Ramswaroop Memorial Group of Professional Colleges (SRMGPC) -"Shri Sant Gajanan Maharaj College of Engineering, Shegaon (SSGMCE)" -Shri Shankaracharya Technical Campus -Shri Vaishnav Institute of Technology and Science -Shri Venkateshwara College of Engineering -Shridevi Institute of Engineering & Technology -Shriram Institute for Industrial Research -"Siddaganga Institute Of Technology, Tumakuru" -Siena College -Sikkim Manipal Institute of Technology -Silesian University of Technology -Silicon Institute of Technology -Siliguri Institute of Technology -Silver Oak College of Engineering & Technology -Simmons College -Simón Bolívar University -Simon Fraser University -Simon Gratz High School -Simpson College -Simsbury High School -Sinclair Community College -Singapore University of Technology and Design -Sinhgad Institute of Technology -Sir John A. Macdonald Secondary School -Sir M Visvesvaraya Institute of Technology (Sir MVIT) -Sir Padampat Singhania University -Sitarambhai Naranji Patel Institute of Technology & Research Centre -SJB Institute of Technology -Skidmore College -SKR Engineering College -Slippery Rock University of Pennsylvania -Slovak University of Technology in Bratislava (STU) -Smith College -SOAS University of London -Society for Development of Composites -Solebury School -Sona College of Technology -Souderton Area High School -South Brunswick High School -South Carolina State University -South Dakota School of Mines and Technology -South Hills School of Business & Technology -South Lakes High School -South Philadelphia High School -South Texas College -Southeastern Louisiana University -Southern Connecticut State University -Southern Illinois University Carbondale -Southern Illinois University Edwardsville -Southern Methodist University -Southern Oregon University -Southern University and A&M College -Southern Utah University -Southwestern College -Spelman College -Spelman College -Spotswood High School -Spring Arbor University -Springside Chestnut Hill Academy -Sree Chitra Thirunal College of Engineering -Sreenidhi Institute of Science & Technology -Sri Jayachamarajendra College of Engineering -Sri Krishna College of Engineering and Technology (SKCET) -"Sri Krishna College of Technology, Coimbatore" -Sri Lanka Institute of Information Technology (SLIIT) -Sri Manakula Vinayagar Engineering -Sri Ramakrishna Engineering College (SREC) -Sri Revana Siddeshwara Institute of Technology -Sri Siddhartha Institute of Technology -Sri Sivasubramaniya Nadar College of Engineering -Sri Venkateshwara College of Engineering -Sri Vishnu Educational Society -Srinivas Institute of Technology (SIT) -"SRM Easwari Engineering College, Chennai" -SRM University -"SRM University, Sonepat" -SS College of Engineering -St Brendan High School -St Edwards University -St Joseph Engineering College -St Mary's Catholic High School – Croydon -St Mary's CE High School – Cheshunt -St Paul's Catholic College – Sunbury-on-Thames -St. Charles Borromeo Seminary -St. Cloud State University -St. David Catholic Secondary School -"St. John's University, New York" -"St. Joseph's College of Engineering and Technology, Palai" -"St. Mark's School, Hong Kong" -St. Mary's Convent School -St. Mary's Ryken High School -St. Michael College of Engineering & Technology -St. Peter's Institute of Higher Education and Research -St. Pious X Degree & PG College for women -St. Raymond High School for Boys And Girls -St. Theresa of Lisieux Catholic High School -"St. Xavier's Senior Secondary School, Jaipur" -St.Martin's Engineering College -Stanford University -Stanley College of Engineering and Technology for Women -Star Technical Institute -"Startup Incubation and Innovation Centre, IIT Kanpur" -Staten Island Technical High School -Steinert High School -Stephen F. Austin State University -Stetson University -Stevens Institute of Technology -Stevenson University -Stockholm University -Stockton University -Stonehill College -Stonewall Jackson High School - Manassas -Stonewall Jackson High School - Quicksburg -"Stony Brook University, SUNY" -Strawberry Mansion High School -Strayer University - Bensalem -Strayer University - Philadelphia Center City -Stuyvesant High School -Sulphur High School -SUNY Polytechnic Institute -SUPINFO International University -Susq-Cyber Charter School -Susquehanna University -Sussex County Community College -Suyash Institute of Information Technology -SVS College of Engineering -"Swami Keshvanand Institute of Technology, Management & Gramothan (SKIT)" -Swansea University -Swarthmore College -Syed Ammal Engineering College -Symbiosis International University -Synergy Institute of Engineering and Technology -Syracuse University -T K M College of Engineering -Tacoma Community College -Tacony Academy Charter School -Tadeusz Kościuszko University of Technology -Tallinn University -Tallinn University of Technology -Talmudical Yeshiva of Philadelphia -Tamil Nadu Agricultural University (TNAU) -Tamilnadu College of Engineering -Tampere University of Applied Sciences -Tampere University of Technology -Tarleton State University -TECH Freire Charter High School -Technische Universität München -Techno India College of Technology -Techno India University -Tecnológico de Estudio Superiores de Ixtapaluca -Tecnológico de Estudios Superiores de Ecatepec -Tecnológico de Estudios Superiores de Jilotepec -Teesside University -Temple University -Temple University - Ambler -Temple University - Harrisburg -Temple University - Health Sciences Campus -Temple University - Rome -Temple University - Tokyo -Tenafly High School -Tennessee State University -Texas A&M University -Texas A&M University – Central Texas -Texas A&M University – Corpus Christi -Texas A&M University – Kingsville -Texas Christian University -Texas Southern University -Texas Southmost College -Texas State University -Texas Tech University -Tezpur University -Thadomal Shahani Engineering College -Thakur College of Engineering and Technology -Thanthai Periyar Government Institute of Technology -Thapar Institute of Engineering and Technology -"THDC Institute of Hydropower Engineering and Technology, Tehri" -The Arts Academy at Benjamin Rush -The British University In Egypt -The Bronx High School of Science -"The City College of New York, CUNY" -"The College at Brockport, SUNY" -The College of New Jersey -The College of Saint Rose -The Curtis Institute of Music -"The Federal University of Technology, Akure" -The George Washington University -The Governor's School @ Innovation Park -The Harker School -The Hill School -The Katholieke Universiteit Leuven -The Lawrenceville School -The LNM Institute of Information Technology -The Maharaja Sayajirao University of Baroda -The Mount Tabor Training College -The Ohio State University -The Open University -The Oxford College of Engineering -The Pennsylvania State University -The Pennsylvania State University – Abington Campus -The Pennsylvania State University – Berks -The Pennsylvania State University – Brandywine -The Pennsylvania State University – Harrisburg -The Pennsylvania State University – York Campus -The Roxbury Latin School -The Savannah College of Art and Design -The SRM University -The Technical University of Denmark -The Technische Universität Berlin -The Université de Sherbrooke -The University of Aberdeen -The University of Akron -The University of Alabama -The University of Alabama at Birmingham -The University of Alberta -The University of Applied Sciences Upper Austria -The University of Arizona -The University of Arkansas -The University of Bath -The University of Bedfordshire -The University of Birmingham -The University of Bolton -The University of Bonn -The University of Bristol -The University of British Columbia -The University of Calgary -The University of Calicut -"The University of California, Berkeley" -"The University of California, Davis" -"The University of California, Irvine" -"The University of California, Los Angeles" -"The University of California, Merced" -"The University of California, Riverside" -"The University of California, San Diego" -"The University of California, Santa Barbara" -"The University of California, Santa Cruz" -The University of Cambridge -The University of Central Florida -The University of Chicago -The University of Colorado Boulder -The University of Colorado Colorado Springs -The University of Connecticut -The University of Dallas -The University of Delaware -The University of Denver -The University of Derby -The University of Dundee -The University of Edinburgh -The University of Essex -The University of Evansville -The University of Exeter -The University of Falmouth -The University of Florida -The University of Gdańsk -The University of Georgia -The University of Glasgow -The University of Groningen -The University of Guelph -The University of Houston -The University of Houston – Clear Lake -The University of Houston – Downtown -The University of Huddersfield -The University of Idaho -The University of Illinois at Chicago -The University of Illinois at Urbana-Champaign -The University of Information Technology and Management in Rzeszow -The University of Iowa -The University of Kansas -The University of Kent -The University of Kentucky -The University of La Verne -The University of Leeds -The University of Leicester -The University of Lincoln -The University of Liverpool -The University of Ljubljana -The University of Louisiana at Lafayette -The University of Louisiana at Monroe -The University of Louisville -The University of Málaga -The University of Manchester -The University of Manitoba -"The University of Maryland, Baltimore County" -"The University of Maryland, College Park" -The University of Massachusetts Amherst -The University of Massachusetts Boston -The University of Massachusetts Dartmouth -The University of Massachusetts Lowell -The University of Miami -The University of Michigan -The University of Michigan-Dearborn -The University of Michigan-Flint -The University of Minnesota -The University of Mississippi -The University of Missouri -The University of Missouri-Kansas City -The University of Missouri-St. Louis -The University of Nebraska-Lincoln -The University of New Brunswick -The University of New Hampshire -The University of New Haven -The University of North Carolina at Chapel Hill -The University of North Carolina at Charlotte -The University of North Carolina at Greensboro -The University of North Texas -The University of Northampton -The University of Notre Dame -The University of Nottingham -The University of Oklahoma -The University of Oregon -The University of Ottawa -The University of Oulu -The University of Oxford -The University of Pennsylvania -The University of Petroleum and Energy Studies -The University of Phoenix -The University of Pittsburgh -The University of Portland -The University of Portsmouth -"The University of Puerto Rico, Mayagüez Campus" -"The University of Puerto Rico, Río Piedras Campus" -The University of Richmond -The University of Rochester -The University of Salford -The University of San Francisco -The University of Sharjah -The University of Sheffield -The University of Silesia in Katowice -The University of South Carolina -The University of South Florida -The University of Southampton -The University of Southern California -The University of Southern Denmark -The University of St Andrews -The University of St. Gallen -The University of St. Thomas -The University of Stirling -The University of Strathclyde -The University of Stuttgart -The University of Surrey -The University of Sussex -The University of Tampa -The University of Tennessee -The University of Texas – Pan American -The University of Texas at Arlington -The University of Texas at Austin -The University of Texas at Dallas -The University of Texas at El Paso -The University of Texas at San Antonio -The University of Texas at Tyler -The University of Texas of the Permian Basin -The University of Texas Rio Grande Valley -The University of the District of Columbia -The University of the District of Columbia -The University of the Pacific -The University of the South - Sewanee -The University of the West Indies -The University of Toledo -The University of Toronto -The University of Toronto Mississauga -The University of Toronto Scarborough -The University of Tulsa -The University of Utah -The University of Vermont -The University of Victoria -The University of Virginia -The University of Warsaw -The University of Warwick -The University of Washington -The University of Washington Bothell -The University of Waterloo -The University of West Georgia -The University of Western Ontario -The University of Westminster -The University of Windsor -The University of Wisconsin-Eau Claire -The University of Wisconsin-Green Bay -The University of Wisconsin-La Crosse -The University of Wisconsin-Madison -The University of Wisconsin-Milwaukee -The University of Wisconsin-Oshkosh -The University of Wisconsin-Parkside -The University of Wisconsin-Platteville -The University of Wisconsin-River Falls -The University of Wisconsin-Stevens Point -The University of Wisconsin-Stout -The University of Wisconsin-Superior -The University of Wisconsin-Whitewater -The University of Wolverhampton -The University of Wrocław -The University of York -The University of Zagreb -The Workshop School - Philadelphia -"Thiagarajar College of Engineering (TCE), Madurai" -Thomas A. Edison High School - Philadelphia -Thomas Edison State College -Thomas Jefferson High School for Science and Technology -Thomas Jefferson University - East Falls (formerly Philadelphia University) -Thomas Jefferson University - Philadelphia Center City -Thomas Nelson Community College -Thomas S. Wootton High School -Thompson Institute - Philadelphia -Tiruchirappalli Regional Engineering College Science Technology -Tongji University -Towson High School -Towson University -Trent University -Trident Academy of Technology -Trinity College -Trinity International University -Trinity Valley School -Troy Athens High School -Troy High School -Troy University -Truman State University -Tshwane University of Technology -TU/e Technische Universiteit Eindhoven University of Technology -Tufts University -Tulane University -Tunis El Manar University -Turner Fenton Secondary School -Ulster University -UNAM FES Aragón -Union County College -Union County Magnet High School -Union County Vocational-Technical Schools -Union University -Unionville High School -United College of Engineering and Research -United Institute of Technology -"Universidad Autónoma de Baja California (UABC), Tijuana" -Universidad Autónoma de Coahuila -Universidad Autónoma de Madrid -Universidad Autónoma de Nuevo León -Universidad Autónoma de San Luis Potosí -Universidad Autónoma de Tlaxcala -Universidad Autónoma del Estado de México -Universidad Autónoma del Estado de Morelos -Universidad Autónoma del Perú -Universidad Autónoma Metropolitana -Universidad Centro de Estudios Cortazar -Universidad de Guadalajara -Universidad de Guanajuato -Universidad de La Laguna -Universidad de La Salle Bajío -Universidad de Monterrey -Universidad del Desarrollo -Universidad del Valle de México -"Universidad en Línea, Mexico" -Universidad Iberoamericana -Universidad Interamericana de Puerto Rico -Universidad Nacional Autónoma de México -Universidad Panamericana -Universidad Politécnica de Guanajuato -Universidad Politécnica de Querétaro -Universidad TecMilenio -Universidad Tecnológica de México -Universidad Tecnológica de Puebla -Universidad Tecnológica de Torreón -Universidad Tecnológica Nacional -Universidad Veracruzana -"Universitat Autònoma de Barcelona, UAB" -Universitat de Barcelona -"Universitat Oberta de Catalunya, UOC" -Universitat Politècnica de Catalunya -"Universitat Politècnica de Catalunya, UPC" -Universitat Pompeu Fabra -Universität Regensburg -Universität Zürich -Universitatea Politehnica Timişoara -Université de Bordeaux -Université de Mons -Université du Québec à Montréal -"University at Albany, SUNY" -"University at Binghamton, SUNY" -"University at Buffalo, SUNY" -"University at New Paltz, SUNY" -"University at Oneonta, SUNY" -"University at Orange, SUNY" -"University at Oswego, SUNY" -"University at Plattsburgh, SUNY" -University Campus Suffolk -University College London -"University College of Engineering and Technology, Bikaner" -"University Institute of Engineering and Technology CSJMU, Kanpur" -"University Institute of Information Technology, Shimla" -"University Institute of Technology, Burdwan" -"University Institute of Technology, RGPV" -University of Basel -University of Białystok -"University of Cape Coast, Ghana" -University of Cincinnati -University of Cincinnati Clermont College -University of Duisburg-Essen -University of Gothenburg -University of Helsinki -University of Hull -University of London -University of Mary Washington -University of Maryland University College -University of North America -University of North Florida -University of North Georgia -"University of Petroleum and Energy Studies (UPES), Dehradun" -University of Pikeville -University of Queensland -University of Regina -University of Roehampton -University of Saskatchewan -University of Science and Technology Houari Boumediene -University of Southampton -University of Southern Indiana -University of Sunderland -University of Tartu -"University of Technology, Jamaica" -University of the Arts - Philadelphia -University of the People -University of the Sciences in Philadelphia -University of Trento -University of Udaipur -University of Valley Forge -University of Washington Tacoma -University of West Florida -"University School of Information, Communication and Technology" -University Visvesvaraya College of Engineering (UVCE) -Upper Canada College -Upper Darby High School -Upper Iowa University -Upper Moreland High School -Urbana High School -Ursinus College -Utah State University -Utica College -Utkal University -Uttaranchal Institute of Technology -Vadodara Institute of Engineering -Valencia College -Valley Christian High School -Valley High School -Vallurupalli Nageswara Rao Vignana Jyothi Institute of Engg. Technology (VNRVJIET) -Vanderbilt University -Vanier College -vardhaman college of engineering -Vasavi College Of Engineering -Vassar College -Veer Narmad South Gujarat University -Veer Surendra Sai University of Technology -"Veer Surendra Sai University of Technology, Burla" -Vel Tech Multi Tech Dr.Rangarajan Dr.Sakunthala Engineering College -Vel Tech Rangarajan Dr.Sagunthala R&D Institute of Science and Technology -Velammal College of Engineering and Technology -Velammal Institute of Technology -Vellore Institute of Technology -"Vellore Institute of Technology, Chennai" -Vemana Institute Of Technology -Veterans Memorial Early College High School -VIA University College -Victoria Park Collegiate Institute -Vidya College of Engineering -Vidyakunj International School -Vidyavardhaka College of Engineering -Vignan Institute of Technology and Science -"Vikas College of Engineering & Technology, Vijayawada" -Villanova University -Villgro Innovations Foundation IITM Research Park -Vinayaka Mission's Kirupananda Variyar Engineering College -Vincennes University -Vincent Massey Secondary School -Virginia Commonwealth University -Virginia State University -Virginia Tech -Virginia Union University -Virginia University of Lynchburg -Virtual High School @ PWCS -Vishwakarma Government Engineering College -Vishwakarma Institute of Technology -Visvesvaraya National Institute of Technology -Visvesvaraya Technological University -Vivekanand Education Society's Institute of Technology (VESIT) -Vivekanand Institute of Technology & Sciences -Vivekananda College for BCA -Vivekananda Institute of Biotechnology -Vivekananda Institute of Technology -Vizag Institute of Technology -VNS Group of Institutions -Vrije Universiteit Amsterdam -Wake Forest University -Wake Technical Community College -Walchand College of Engineering -Walnut Hill College -Walt Whitman High School -Walter Biddle Saul High School -Ward Melville High School -Wardlaw + Hartridge School -Warren County Technical High School -Warsaw School of Economics -Warsaw University of Technology -Wartburg College -Washington and Lee University -Washington State University -Washington Township High School -Washington University in St. Louis -Waterloo Collegiate Institute -Waunakee High School -Wayne State University -Webb Bridge Middle School -Wellesley College -Wellington C. Mepham Highschool -Wells College -Wentworth Institute of Technology -Wesleyan University -West Chester University -West Essex Regional High School -West Morris Mendham High School -West Philadelphia High School -West Potomac High School -West Scranton High School -West Windsor-Plainsboro High School North -West Windsor-Plainsboro High School South -Westdale Secondary School -Western Carolina University -Western Connecticut State University -Western Governors University -Western Kentucky University -Western Michigan University -Western New England University -Western Technical College -Western University -Western Washington University -Westfield High School -Westminster College -Westminster School -Westwood High School -Whitefish Bay High School -Whitworth University -Wichita State University -Widener University -Wilbert Tucker Woodson High School -Wilfrid Laurier University -Wilkes University -William & Mary -William L. Sayre High School -William Lyon Mackenzie Collegiate Institute -William Paterson University -William W. Bodine High School -Williams College -Williamson Free School of Mechanical Trades -Wilmington University -Wiltshire College -Winona State University -Winston Churchill High School -Winthrop University -Woodbridge High School - Bridgeville -Woodbridge High School - Irvine -Woodbridge High School - London -"Woodbridge High School - Woodbridge, NJ" -"Woodbridge High School - Woodbridge, ON" -"Woodbridge High School - Woodbridge, VA" -Worcester Polytechnic Institute -Worcester State University -World Communications Charter School -Wright State University -Wrocław University of Economics -Wrocław University of Technology -Wuhan University -Wyższa Szkoła Biznesu – National-Louis University -Xavier Institute of Management Entrepreneurship Development (XIME) -Xavier Research Foundation Loyola Centre for Research and Development St Xavier's College -Xavier University -Yale University -Yale-NUS College -Yeshiva University -York College of Pennsylvania -"York College, CUNY" -York University -Youngstown State University -YouthBuild Philadelphia Charter School -"Zakir Hussain College of Engineering and Technology, AMU" -Zespół Szkół im. Jana Pawła II w Niepołomicach -"Zespół Szkół Łączności, Monte Cassino 31" -Zespół Szkół nr 1 im. Jana Pawła II w Przysusze -Zespół szkół nr 1 im. Stanisława Staszica w Bochni -Zespół Szkół Nr.2 im. Jana Pawła II w Miechowie \ No newline at end of file diff --git a/goathacks/static/css/materialize.min.css b/goathacks/static/css/materialize.min.css deleted file mode 100644 index 87d1b5d..0000000 --- a/goathacks/static/css/materialize.min.css +++ /dev/null @@ -1,16 +0,0 @@ -/*! - * Materialize v0.97.3 (http://materializecss.com) - * Copyright 2014-2015 Materialize - * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) - */ - .materialize-red.lighten-5{background-color:#fdeaeb !important}.materialize-red-text.text-lighten-5{color:#fdeaeb !important}.materialize-red.lighten-4{background-color:#f8c1c3 !important}.materialize-red-text.text-lighten-4{color:#f8c1c3 !important}.materialize-red.lighten-3{background-color:#f3989b !important}.materialize-red-text.text-lighten-3{color:#f3989b !important}.materialize-red.lighten-2{background-color:#780000 !important}.materialize-red-text.text-lighten-2{color:#780000 !important}.materialize-red.lighten-1{background-color:#ea454b !important}.materialize-red-text.text-lighten-1{color:#ea454b !important}.materialize-red{background-color:#e51c23 !important}.materialize-red-text{color:#e51c23 !important}.materialize-red.darken-1{background-color:#d0181e !important}.materialize-red-text.text-darken-1{color:#d0181e !important}.materialize-red.darken-2{background-color:#b9151b !important}.materialize-red-text.text-darken-2{color:#b9151b !important}.materialize-red.darken-3{background-color:#a21318 !important}.materialize-red-text.text-darken-3{color:#a21318 !important}.materialize-red.darken-4{background-color:#8b1014 !important}.materialize-red-text.text-darken-4{color:#8b1014 !important}.red.lighten-5{background-color:#FFEBEE !important}.red-text.text-lighten-5{color:#FFEBEE !important}.red.lighten-4{background-color:#FFCDD2 !important}.red-text.text-lighten-4{color:#FFCDD2 !important}.red.lighten-3{background-color:#EF9A9A !important}.red-text.text-lighten-3{color:#EF9A9A !important}.red.lighten-2{background-color:#E57373 !important}.red-text.text-lighten-2{color:#E57373 !important}.red.lighten-1{background-color:#EF5350 !important}.red-text.text-lighten-1{color:#EF5350 !important}.red{background-color:#F44336 !important}.red-text{color:#F44336 !important}.red.darken-1{background-color:#E53935 !important}.red-text.text-darken-1{color:#E53935 !important}.red.darken-2{background-color:#D32F2F !important}.red-text.text-darken-2{color:#D32F2F !important}.red.darken-3{background-color:#C62828 !important}.red-text.text-darken-3{color:#C62828 !important}.red.darken-4{background-color:#B71C1C !important}.red-text.text-darken-4{color:#B71C1C !important}.red.accent-1{background-color:#FF8A80 !important}.red-text.text-accent-1{color:#FF8A80 !important}.red.accent-2{background-color:#FF5252 !important}.red-text.text-accent-2{color:#FF5252 !important}.red.accent-3{background-color:#FF1744 !important}.red-text.text-accent-3{color:#FF1744 !important}.red.accent-4{background-color:#D50000 !important}.red-text.text-accent-4{color:#D50000 !important}.pink.lighten-5{background-color:#fce4ec !important}.pink-text.text-lighten-5{color:#fce4ec !important}.pink.lighten-4{background-color:#f8bbd0 !important}.pink-text.text-lighten-4{color:#f8bbd0 !important}.pink.lighten-3{background-color:#f48fb1 !important}.pink-text.text-lighten-3{color:#f48fb1 !important}.pink.lighten-2{background-color:#f06292 !important}.pink-text.text-lighten-2{color:#f06292 !important}.pink.lighten-1{background-color:#ec407a !important}.pink-text.text-lighten-1{color:#ec407a !important}.pink{background-color:#e91e63 !important}.pink-text{color:#e91e63 !important}.pink.darken-1{background-color:#d81b60 !important}.pink-text.text-darken-1{color:#d81b60 !important}.pink.darken-2{background-color:#c2185b !important}.pink-text.text-darken-2{color:#c2185b !important}.pink.darken-3{background-color:#ad1457 !important}.pink-text.text-darken-3{color:#ad1457 !important}.pink.darken-4{background-color:#880e4f !important}.pink-text.text-darken-4{color:#880e4f !important}.pink.accent-1{background-color:#ff80ab !important}.pink-text.text-accent-1{color:#ff80ab !important}.pink.accent-2{background-color:#ff4081 !important}.pink-text.text-accent-2{color:#ff4081 !important}.pink.accent-3{background-color:#f50057 !important}.pink-text.text-accent-3{color:#f50057 !important}.pink.accent-4{background-color:#c51162 !important}.pink-text.text-accent-4{color:#c51162 !important}.purple.lighten-5{background-color:#f3e5f5 !important}.purple-text.text-lighten-5{color:#f3e5f5 !important}.purple.lighten-4{background-color:#e1bee7 !important}.purple-text.text-lighten-4{color:#e1bee7 !important}.purple.lighten-3{background-color:#ce93d8 !important}.purple-text.text-lighten-3{color:#ce93d8 !important}.purple.lighten-2{background-color:#ba68c8 !important}.purple-text.text-lighten-2{color:#ba68c8 !important}.purple.lighten-1{background-color:#ab47bc !important}.purple-text.text-lighten-1{color:#ab47bc !important}.purple{background-color:#9c27b0 !important}.purple-text{color:#9c27b0 !important}.purple.darken-1{background-color:#8e24aa !important}.purple-text.text-darken-1{color:#8e24aa !important}.purple.darken-2{background-color:#7b1fa2 !important}.purple-text.text-darken-2{color:#7b1fa2 !important}.purple.darken-3{background-color:#6a1b9a !important}.purple-text.text-darken-3{color:#6a1b9a !important}.purple.darken-4{background-color:#4a148c !important}.purple-text.text-darken-4{color:#4a148c !important}.purple.accent-1{background-color:#ea80fc !important}.purple-text.text-accent-1{color:#ea80fc !important}.purple.accent-2{background-color:#e040fb !important}.purple-text.text-accent-2{color:#e040fb !important}.purple.accent-3{background-color:#d500f9 !important}.purple-text.text-accent-3{color:#d500f9 !important}.purple.accent-4{background-color:#aa00ff !important}.purple-text.text-accent-4{color:#aa00ff !important}.deep-purple.lighten-5{background-color:#ede7f6 !important}.deep-purple-text.text-lighten-5{color:#ede7f6 !important}.deep-purple.lighten-4{background-color:#d1c4e9 !important}.deep-purple-text.text-lighten-4{color:#d1c4e9 !important}.deep-purple.lighten-3{background-color:#b39ddb !important}.deep-purple-text.text-lighten-3{color:#b39ddb !important}.deep-purple.lighten-2{background-color:#9575cd !important}.deep-purple-text.text-lighten-2{color:#9575cd !important}.deep-purple.lighten-1{background-color:#7e57c2 !important}.deep-purple-text.text-lighten-1{color:#7e57c2 !important}.deep-purple{background-color:#673ab7 !important}.deep-purple-text{color:#673ab7 !important}.deep-purple.darken-1{background-color:#5e35b1 !important}.deep-purple-text.text-darken-1{color:#5e35b1 !important}.deep-purple.darken-2{background-color:#512da8 !important}.deep-purple-text.text-darken-2{color:#512da8 !important}.deep-purple.darken-3{background-color:#4527a0 !important}.deep-purple-text.text-darken-3{color:#4527a0 !important}.deep-purple.darken-4{background-color:#311b92 !important}.deep-purple-text.text-darken-4{color:#311b92 !important}.deep-purple.accent-1{background-color:#b388ff !important}.deep-purple-text.text-accent-1{color:#b388ff !important}.deep-purple.accent-2{background-color:#7c4dff !important}.deep-purple-text.text-accent-2{color:#7c4dff !important}.deep-purple.accent-3{background-color:#651fff !important}.deep-purple-text.text-accent-3{color:#651fff !important}.deep-purple.accent-4{background-color:#6200ea !important}.deep-purple-text.text-accent-4{color:#6200ea !important}.indigo.lighten-5{background-color:#e8eaf6 !important}.indigo-text.text-lighten-5{color:#e8eaf6 !important}.indigo.lighten-4{background-color:#c5cae9 !important}.indigo-text.text-lighten-4{color:#c5cae9 !important}.indigo.lighten-3{background-color:#9fa8da !important}.indigo-text.text-lighten-3{color:#9fa8da !important}.indigo.lighten-2{background-color:#7986cb !important}.indigo-text.text-lighten-2{color:#7986cb !important}.indigo.lighten-1{background-color:#5c6bc0 !important}.indigo-text.text-lighten-1{color:#5c6bc0 !important}.indigo{background-color:#3f51b5 !important}.indigo-text{color:#3f51b5 !important}.indigo.darken-1{background-color:#3949ab !important}.indigo-text.text-darken-1{color:#3949ab !important}.indigo.darken-2{background-color:#303f9f !important}.indigo-text.text-darken-2{color:#303f9f !important}.indigo.darken-3{background-color:#283593 !important}.indigo-text.text-darken-3{color:#283593 !important}.indigo.darken-4{background-color:#1a237e !important}.indigo-text.text-darken-4{color:#1a237e !important}.indigo.accent-1{background-color:#8c9eff !important}.indigo-text.text-accent-1{color:#8c9eff !important}.indigo.accent-2{background-color:#536dfe !important}.indigo-text.text-accent-2{color:#536dfe !important}.indigo.accent-3{background-color:#3d5afe !important}.indigo-text.text-accent-3{color:#3d5afe !important}.indigo.accent-4{background-color:#304ffe !important}.indigo-text.text-accent-4{color:#304ffe !important}.blue.lighten-5{background-color:#E3F2FD !important}.blue-text.text-lighten-5{color:#E3F2FD !important}.blue.lighten-4{background-color:#BBDEFB !important}.blue-text.text-lighten-4{color:#BBDEFB !important}.blue.lighten-3{background-color:#90CAF9 !important}.blue-text.text-lighten-3{color:#90CAF9 !important}.blue.lighten-2{background-color:#64B5F6 !important}.blue-text.text-lighten-2{color:#64B5F6 !important}.blue.lighten-1{background-color:#42A5F5 !important}.blue-text.text-lighten-1{color:#42A5F5 !important}.blue{background-color:#2196F3 !important}.blue-text{color:#2196F3 !important}.blue.darken-1{background-color:#1E88E5 !important}.blue-text.text-darken-1{color:#1E88E5 !important}.blue.darken-2{background-color:#1976D2 !important}.blue-text.text-darken-2{color:#1976D2 !important}.blue.darken-3{background-color:#1565C0 !important}.blue-text.text-darken-3{color:#1565C0 !important}.blue.darken-4{background-color:#0D47A1 !important}.blue-text.text-darken-4{color:#0D47A1 !important}.blue.accent-1{background-color:#82B1FF !important}.blue-text.text-accent-1{color:#82B1FF !important}.blue.accent-2{background-color:#448AFF !important}.blue-text.text-accent-2{color:#448AFF !important}.blue.accent-3{background-color:#2979FF !important}.blue-text.text-accent-3{color:#2979FF !important}.blue.accent-4{background-color:#2962FF !important}.blue-text.text-accent-4{color:#2962FF !important}.light-blue.lighten-5{background-color:#e1f5fe !important}.light-blue-text.text-lighten-5{color:#e1f5fe !important}.light-blue.lighten-4{background-color:#b3e5fc !important}.light-blue-text.text-lighten-4{color:#b3e5fc !important}.light-blue.lighten-3{background-color:#81d4fa !important}.light-blue-text.text-lighten-3{color:#81d4fa !important}.light-blue.lighten-2{background-color:#4fc3f7 !important}.light-blue-text.text-lighten-2{color:#4fc3f7 !important}.light-blue.lighten-1{background-color:#29b6f6 !important}.light-blue-text.text-lighten-1{color:#29b6f6 !important}.light-blue{background-color:#03a9f4 !important}.light-blue-text{color:#03a9f4 !important}.light-blue.darken-1{background-color:#039be5 !important}.light-blue-text.text-darken-1{color:#039be5 !important}.light-blue.darken-2{background-color:#0288d1 !important}.light-blue-text.text-darken-2{color:#0288d1 !important}.light-blue.darken-3{background-color:#0277bd !important}.light-blue-text.text-darken-3{color:#0277bd !important}.light-blue.darken-4{background-color:#01579b !important}.light-blue-text.text-darken-4{color:#01579b !important}.light-blue.accent-1{background-color:#80d8ff !important}.light-blue-text.text-accent-1{color:#80d8ff !important}.light-blue.accent-2{background-color:#40c4ff !important}.light-blue-text.text-accent-2{color:#40c4ff !important}.light-blue.accent-3{background-color:#00b0ff !important}.light-blue-text.text-accent-3{color:#00b0ff !important}.light-blue.accent-4{background-color:#0091ea !important}.light-blue-text.text-accent-4{color:#0091ea !important}.cyan.lighten-5{background-color:#e0f7fa !important}.cyan-text.text-lighten-5{color:#e0f7fa !important}.cyan.lighten-4{background-color:#b2ebf2 !important}.cyan-text.text-lighten-4{color:#b2ebf2 !important}.cyan.lighten-3{background-color:#80deea !important}.cyan-text.text-lighten-3{color:#80deea !important}.cyan.lighten-2{background-color:#4dd0e1 !important}.cyan-text.text-lighten-2{color:#4dd0e1 !important}.cyan.lighten-1{background-color:#26c6da !important}.cyan-text.text-lighten-1{color:#26c6da !important}.cyan{background-color:#00bcd4 !important}.cyan-text{color:#00bcd4 !important}.cyan.darken-1{background-color:#00acc1 !important}.cyan-text.text-darken-1{color:#00acc1 !important}.cyan.darken-2{background-color:#0097a7 !important}.cyan-text.text-darken-2{color:#0097a7 !important}.cyan.darken-3{background-color:#00838f !important}.cyan-text.text-darken-3{color:#00838f !important}.cyan.darken-4{background-color:#006064 !important}.cyan-text.text-darken-4{color:#006064 !important}.cyan.accent-1{background-color:#84ffff !important}.cyan-text.text-accent-1{color:#84ffff !important}.cyan.accent-2{background-color:#18ffff !important}.cyan-text.text-accent-2{color:#18ffff !important}.cyan.accent-3{background-color:#00e5ff !important}.cyan-text.text-accent-3{color:#00e5ff !important}.cyan.accent-4{background-color:#00b8d4 !important}.cyan-text.text-accent-4{color:#00b8d4 !important}.teal.lighten-5{background-color:#e0f2f1 !important}.teal-text.text-lighten-5{color:#e0f2f1 !important}.teal.lighten-4{background-color:#b2dfdb !important}.teal-text.text-lighten-4{color:#b2dfdb !important}.teal.lighten-3{background-color:#80cbc4 !important}.teal-text.text-lighten-3{color:#80cbc4 !important}.teal.lighten-2{background-color:#4db6ac !important}.teal-text.text-lighten-2{color:#4db6ac !important}.teal.lighten-1{background-color:#669BBD !important}.teal-text.text-lighten-1{color:#669BBD !important}.teal{background-color:#009688 !important}.teal-text{color:#009688 !important}.teal.darken-1{background-color:#00897b !important}.teal-text.text-darken-1{color:#00897b !important}.teal.darken-2{background-color:#00796b !important}.teal-text.text-darken-2{color:#00796b !important}.teal.darken-3{background-color:#00695c !important}.teal-text.text-darken-3{color:#00695c !important}.teal.darken-4{background-color:#004d40 !important}.teal-text.text-darken-4{color:#004d40 !important}.teal.accent-1{background-color:#a7ffeb !important}.teal-text.text-accent-1{color:#a7ffeb !important}.teal.accent-2{background-color:#64ffda !important}.teal-text.text-accent-2{color:#64ffda !important}.teal.accent-3{background-color:#1de9b6 !important}.teal-text.text-accent-3{color:#1de9b6 !important}.teal.accent-4{background-color:#00bfa5 !important}.teal-text.text-accent-4{color:#00bfa5 !important}.green.lighten-5{background-color:#E8F5E9 !important}.green-text.text-lighten-5{color:#E8F5E9 !important}.green.lighten-4{background-color:#C8E6C9 !important}.green-text.text-lighten-4{color:#C8E6C9 !important}.green.lighten-3{background-color:#A5D6A7 !important}.green-text.text-lighten-3{color:#A5D6A7 !important}.green.lighten-2{background-color:#81C784 !important}.green-text.text-lighten-2{color:#81C784 !important}.green.lighten-1{background-color:#66BB6A !important}.green-text.text-lighten-1{color:#66BB6A !important}.green{background-color:#4CAF50 !important}.green-text{color:#4CAF50 !important}.green.darken-1{background-color:#43A047 !important}.green-text.text-darken-1{color:#43A047 !important}.green.darken-2{background-color:#388E3C !important}.green-text.text-darken-2{color:#388E3C !important}.green.darken-3{background-color:#2E7D32 !important}.green-text.text-darken-3{color:#2E7D32 !important}.green.darken-4{background-color:#1B5E20 !important}.green-text.text-darken-4{color:#1B5E20 !important}.green.accent-1{background-color:#B9F6CA !important}.green-text.text-accent-1{color:#B9F6CA !important}.green.accent-2{background-color:#69F0AE !important}.green-text.text-accent-2{color:#69F0AE !important}.green.accent-3{background-color:#00E676 !important}.green-text.text-accent-3{color:#00E676 !important}.green.accent-4{background-color:#00C853 !important}.green-text.text-accent-4{color:#00C853 !important}.light-green.lighten-5{background-color:#f1f8e9 !important}.light-green-text.text-lighten-5{color:#f1f8e9 !important}.light-green.lighten-4{background-color:#dcedc8 !important}.light-green-text.text-lighten-4{color:#dcedc8 !important}.light-green.lighten-3{background-color:#c5e1a5 !important}.light-green-text.text-lighten-3{color:#c5e1a5 !important}.light-green.lighten-2{background-color:#aed581 !important}.light-green-text.text-lighten-2{color:#aed581 !important}.light-green.lighten-1{background-color:#9ccc65 !important}.light-green-text.text-lighten-1{color:#9ccc65 !important}.light-green{background-color:#8bc34a !important}.light-green-text{color:#8bc34a !important}.light-green.darken-1{background-color:#7cb342 !important}.light-green-text.text-darken-1{color:#7cb342 !important}.light-green.darken-2{background-color:#689f38 !important}.light-green-text.text-darken-2{color:#689f38 !important}.light-green.darken-3{background-color:#558b2f !important}.light-green-text.text-darken-3{color:#558b2f !important}.light-green.darken-4{background-color:#33691e !important}.light-green-text.text-darken-4{color:#33691e !important}.light-green.accent-1{background-color:#ccff90 !important}.light-green-text.text-accent-1{color:#ccff90 !important}.light-green.accent-2{background-color:#b2ff59 !important}.light-green-text.text-accent-2{color:#b2ff59 !important}.light-green.accent-3{background-color:#76ff03 !important}.light-green-text.text-accent-3{color:#76ff03 !important}.light-green.accent-4{background-color:#64dd17 !important}.light-green-text.text-accent-4{color:#64dd17 !important}.lime.lighten-5{background-color:#f9fbe7 !important}.lime-text.text-lighten-5{color:#f9fbe7 !important}.lime.lighten-4{background-color:#f0f4c3 !important}.lime-text.text-lighten-4{color:#f0f4c3 !important}.lime.lighten-3{background-color:#e6ee9c !important}.lime-text.text-lighten-3{color:#e6ee9c !important}.lime.lighten-2{background-color:#dce775 !important}.lime-text.text-lighten-2{color:#dce775 !important}.lime.lighten-1{background-color:#d4e157 !important}.lime-text.text-lighten-1{color:#d4e157 !important}.lime{background-color:#cddc39 !important}.lime-text{color:#cddc39 !important}.lime.darken-1{background-color:#c0ca33 !important}.lime-text.text-darken-1{color:#c0ca33 !important}.lime.darken-2{background-color:#afb42b !important}.lime-text.text-darken-2{color:#afb42b !important}.lime.darken-3{background-color:#9e9d24 !important}.lime-text.text-darken-3{color:#9e9d24 !important}.lime.darken-4{background-color:#827717 !important}.lime-text.text-darken-4{color:#827717 !important}.lime.accent-1{background-color:#f4ff81 !important}.lime-text.text-accent-1{color:#f4ff81 !important}.lime.accent-2{background-color:#eeff41 !important}.lime-text.text-accent-2{color:#eeff41 !important}.lime.accent-3{background-color:#c6ff00 !important}.lime-text.text-accent-3{color:#c6ff00 !important}.lime.accent-4{background-color:#aeea00 !important}.lime-text.text-accent-4{color:#aeea00 !important}.yellow.lighten-5{background-color:#fffde7 !important}.yellow-text.text-lighten-5{color:#fffde7 !important}.yellow.lighten-4{background-color:#fff9c4 !important}.yellow-text.text-lighten-4{color:#fff9c4 !important}.yellow.lighten-3{background-color:#fff59d !important}.yellow-text.text-lighten-3{color:#fff59d !important}.yellow.lighten-2{background-color:#fff176 !important}.yellow-text.text-lighten-2{color:#fff176 !important}.yellow.lighten-1{background-color:#ffee58 !important}.yellow-text.text-lighten-1{color:#ffee58 !important}.yellow{background-color:#ffeb3b !important}.yellow-text{color:#ffeb3b !important}.yellow.darken-1{background-color:#fdd835 !important}.yellow-text.text-darken-1{color:#fdd835 !important}.yellow.darken-2{background-color:#fbc02d !important}.yellow-text.text-darken-2{color:#fbc02d !important}.yellow.darken-3{background-color:#f9a825 !important}.yellow-text.text-darken-3{color:#f9a825 !important}.yellow.darken-4{background-color:#f57f17 !important}.yellow-text.text-darken-4{color:#f57f17 !important}.yellow.accent-1{background-color:#ffff8d !important}.yellow-text.text-accent-1{color:#ffff8d !important}.yellow.accent-2{background-color:#ffff00 !important}.yellow-text.text-accent-2{color:#ffff00 !important}.yellow.accent-3{background-color:#ffea00 !important}.yellow-text.text-accent-3{color:#ffea00 !important}.yellow.accent-4{background-color:#ffd600 !important}.yellow-text.text-accent-4{color:#ffd600 !important}.amber.lighten-5{background-color:#fff8e1 !important}.amber-text.text-lighten-5{color:#fff8e1 !important}.amber.lighten-4{background-color:#ffecb3 !important}.amber-text.text-lighten-4{color:#ffecb3 !important}.amber.lighten-3{background-color:#ffe082 !important}.amber-text.text-lighten-3{color:#ffe082 !important}.amber.lighten-2{background-color:#ffd54f !important}.amber-text.text-lighten-2{color:#ffd54f !important}.amber.lighten-1{background-color:#ffca28 !important}.amber-text.text-lighten-1{color:#ffca28 !important}.amber{background-color:#ffc107 !important}.amber-text{color:#ffc107 !important}.amber.darken-1{background-color:#ffb300 !important}.amber-text.text-darken-1{color:#ffb300 !important}.amber.darken-2{background-color:#ffa000 !important}.amber-text.text-darken-2{color:#ffa000 !important}.amber.darken-3{background-color:#ff8f00 !important}.amber-text.text-darken-3{color:#ff8f00 !important}.amber.darken-4{background-color:#ff6f00 !important}.amber-text.text-darken-4{color:#ff6f00 !important}.amber.accent-1{background-color:#ffe57f !important}.amber-text.text-accent-1{color:#ffe57f !important}.amber.accent-2{background-color:#ffd740 !important}.amber-text.text-accent-2{color:#ffd740 !important}.amber.accent-3{background-color:#ffc400 !important}.amber-text.text-accent-3{color:#ffc400 !important}.amber.accent-4{background-color:#ffab00 !important}.amber-text.text-accent-4{color:#ffab00 !important}.orange.lighten-5{background-color:#fff3e0 !important}.orange-text.text-lighten-5{color:#fff3e0 !important}.orange.lighten-4{background-color:#ffe0b2 !important}.orange-text.text-lighten-4{color:#ffe0b2 !important}.orange.lighten-3{background-color:#ffcc80 !important}.orange-text.text-lighten-3{color:#ffcc80 !important}.orange.lighten-2{background-color:#ffb74d !important}.orange-text.text-lighten-2{color:#ffb74d !important}.orange.lighten-1{background-color:#ffa726 !important}.orange-text.text-lighten-1{color:#ffa726 !important}.orange{background-color:#ff9800 !important}.orange-text{color:#ff9800 !important}.orange.darken-1{background-color:#fb8c00 !important}.orange-text.text-darken-1{color:#fb8c00 !important}.orange.darken-2{background-color:#f57c00 !important}.orange-text.text-darken-2{color:#f57c00 !important}.orange.darken-3{background-color:#ef6c00 !important}.orange-text.text-darken-3{color:#ef6c00 !important}.orange.darken-4{background-color:#e65100 !important}.orange-text.text-darken-4{color:#e65100 !important}.orange.accent-1{background-color:#ffd180 !important}.orange-text.text-accent-1{color:#ffd180 !important}.orange.accent-2{background-color:#ffab40 !important}.orange-text.text-accent-2{color:#ffab40 !important}.orange.accent-3{background-color:#ff9100 !important}.orange-text.text-accent-3{color:#ff9100 !important}.orange.accent-4{background-color:#ff6d00 !important}.orange-text.text-accent-4{color:#ff6d00 !important}.deep-orange.lighten-5{background-color:#fbe9e7 !important}.deep-orange-text.text-lighten-5{color:#fbe9e7 !important}.deep-orange.lighten-4{background-color:#ffccbc !important}.deep-orange-text.text-lighten-4{color:#ffccbc !important}.deep-orange.lighten-3{background-color:#ffab91 !important}.deep-orange-text.text-lighten-3{color:#ffab91 !important}.deep-orange.lighten-2{background-color:#ff8a65 !important}.deep-orange-text.text-lighten-2{color:#ff8a65 !important}.deep-orange.lighten-1{background-color:#ff7043 !important}.deep-orange-text.text-lighten-1{color:#ff7043 !important}.deep-orange{background-color:#ff5722 !important}.deep-orange-text{color:#ff5722 !important}.deep-orange.darken-1{background-color:#f4511e !important}.deep-orange-text.text-darken-1{color:#f4511e !important}.deep-orange.darken-2{background-color:#e64a19 !important}.deep-orange-text.text-darken-2{color:#e64a19 !important}.deep-orange.darken-3{background-color:#d84315 !important}.deep-orange-text.text-darken-3{color:#d84315 !important}.deep-orange.darken-4{background-color:#bf360c !important}.deep-orange-text.text-darken-4{color:#bf360c !important}.deep-orange.accent-1{background-color:#ff9e80 !important}.deep-orange-text.text-accent-1{color:#ff9e80 !important}.deep-orange.accent-2{background-color:#ff6e40 !important}.deep-orange-text.text-accent-2{color:#ff6e40 !important}.deep-orange.accent-3{background-color:#ff3d00 !important}.deep-orange-text.text-accent-3{color:#ff3d00 !important}.deep-orange.accent-4{background-color:#dd2c00 !important}.deep-orange-text.text-accent-4{color:#dd2c00 !important}.brown.lighten-5{background-color:#efebe9 !important}.brown-text.text-lighten-5{color:#efebe9 !important}.brown.lighten-4{background-color:#d7ccc8 !important}.brown-text.text-lighten-4{color:#d7ccc8 !important}.brown.lighten-3{background-color:#bcaaa4 !important}.brown-text.text-lighten-3{color:#bcaaa4 !important}.brown.lighten-2{background-color:#a1887f !important}.brown-text.text-lighten-2{color:#a1887f !important}.brown.lighten-1{background-color:#8d6e63 !important}.brown-text.text-lighten-1{color:#8d6e63 !important}.brown{background-color:#795548 !important}.brown-text{color:#795548 !important}.brown.darken-1{background-color:#6d4c41 !important}.brown-text.text-darken-1{color:#6d4c41 !important}.brown.darken-2{background-color:#5d4037 !important}.brown-text.text-darken-2{color:#5d4037 !important}.brown.darken-3{background-color:#4e342e !important}.brown-text.text-darken-3{color:#4e342e !important}.brown.darken-4{background-color:#3e2723 !important}.brown-text.text-darken-4{color:#3e2723 !important}.blue-grey.lighten-5{background-color:#eceff1 !important}.blue-grey-text.text-lighten-5{color:#eceff1 !important}.blue-grey.lighten-4{background-color:#cfd8dc !important}.blue-grey-text.text-lighten-4{color:#cfd8dc !important}.blue-grey.lighten-3{background-color:#b0bec5 !important}.blue-grey-text.text-lighten-3{color:#b0bec5 !important}.blue-grey.lighten-2{background-color:#90a4ae !important}.blue-grey-text.text-lighten-2{color:#90a4ae !important}.blue-grey.lighten-1{background-color:#78909c !important}.blue-grey-text.text-lighten-1{color:#78909c !important}.blue-grey{background-color:#607d8b !important}.blue-grey-text{color:#607d8b !important}.blue-grey.darken-1{background-color:#546e7a !important}.blue-grey-text.text-darken-1{color:#546e7a !important}.blue-grey.darken-2{background-color:#455a64 !important}.blue-grey-text.text-darken-2{color:#455a64 !important}.blue-grey.darken-3{background-color:#37474f !important}.blue-grey-text.text-darken-3{color:#37474f !important}.blue-grey.darken-4{background-color:#263238 !important}.blue-grey-text.text-darken-4{color:#263238 !important}.grey.lighten-5{background-color:#fafafa !important}.grey-text.text-lighten-5{color:#fafafa !important}.grey.lighten-4{background-color:#f5f5f5 !important}.grey-text.text-lighten-4{color:#f5f5f5 !important}.grey.lighten-3{background-color:#eeeeee !important}.grey-text.text-lighten-3{color:#eeeeee !important}.grey.lighten-2{background-color:#e0e0e0 !important}.grey-text.text-lighten-2{color:#e0e0e0 !important}.grey.lighten-1{background-color:#bdbdbd !important}.grey-text.text-lighten-1{color:#bdbdbd !important}.grey{background-color:#9e9e9e !important}.grey-text{color:#9e9e9e !important}.grey.darken-1{background-color:#757575 !important}.grey-text.text-darken-1{color:#757575 !important}.grey.darken-2{background-color:#616161 !important}.grey-text.text-darken-2{color:#616161 !important}.grey.darken-3{background-color:#424242 !important}.grey-text.text-darken-3{color:#424242 !important}.grey.darken-4{background-color:#212121 !important}.grey-text.text-darken-4{color:#212121 !important}.shades.black{background-color:#000000 !important}.shades-text.text-black{color:#000000 !important}.shades.white{background-color:#FFFFFF !important}.shades-text.text-white{color:#FFFFFF !important}.shades.transparent{background-color:transparent !important}.shades-text.text-transparent{color:transparent !important}.black{background-color:#000000 !important}.black-text{color:#000000 !important}.white{background-color:#FFFFFF !important}.white-text{color:#FFFFFF !important}.transparent{background-color:transparent !important}.transparent-text{color:transparent !important}/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}html input[type="button"],button,input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}ul{list-style-type:none}a{color:#039be5;text-decoration:none;-webkit-tap-highlight-color:transparent}.valign-wrapper{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center}.valign-wrapper .valign{display:block}ul{padding:0}ul li{list-style-type:none}.clearfix{clear:both}.z-depth-0{box-shadow:none !important}.z-depth-1,nav,.card-panel,.card,.toast,.btn,.btn-large,.btn-floating,.dropdown-content,.collapsible,.side-nav{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)}.z-depth-1-half,.btn:hover,.btn-large:hover,.btn-floating:hover{box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15)}.z-depth-2{box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.z-depth-3{box-shadow:0 12px 15px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19)}.z-depth-4,.modal{box-shadow:0 16px 28px 0 rgba(0,0,0,0.22),0 25px 55px 0 rgba(0,0,0,0.21)}.z-depth-5{box-shadow:0 27px 24px 0 rgba(0,0,0,0.2),0 40px 77px 0 rgba(0,0,0,0.22)}.hoverable:hover{transition:box-shadow .25s;box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.divider{height:1px;overflow:hidden;background-color:#e0e0e0}blockquote{margin:20px 0;padding-left:1.5rem;border-left:5px solid #780000}i{line-height:inherit}i.left{float:left;margin-right:15px}i.right{float:right;margin-left:15px}i.tiny{font-size:1rem}i.small{font-size:2rem}i.medium{font-size:4rem}i.large{font-size:6rem}img.responsive-img,video.responsive-video{max-width:100%;height:auto}.pagination li{display:inline-block;font-size:1.2rem;padding:0 10px;line-height:30px;border-radius:2px;text-align:center}.pagination li a{color:#444}.pagination li.active a{color:#fff}.pagination li.active{background-color:#780000}.pagination li.disabled a{cursor:default;color:#999}.pagination li i{font-size:2.2rem;vertical-align:middle}.pagination li.pages ul li{display:inline-block;float:none}@media only screen and (max-width : 992px){.pagination{width:100%}.pagination li.prev,.pagination li.next{width:10%}.pagination li.pages{width:80%;overflow:hidden;white-space:nowrap}}.breadcrumb{font-size:18px;color:rgba(255,255,255,0.7)}.breadcrumb:before{content:'\E5CC';color:rgba(255,255,255,0.7);vertical-align:top;display:inline-block;font-family:'Material Icons';font-weight:normal;font-style:normal;font-size:25px;margin:0 10px 0 8px;-webkit-font-smoothing:antialiased}.breadcrumb:first-child:before{display:none}.breadcrumb:last-child{color:#fff}.parallax-container{position:relative;overflow:hidden;height:500px}.parallax{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1}.parallax img{display:none;position:absolute;left:50%;bottom:0;min-width:100%;min-height:100%;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);transform:translateX(-50%)}.pin-top,.pin-bottom{position:relative}.pinned{position:fixed !important}ul.staggered-list li{opacity:0}.fade-in{opacity:0;transform-origin:0 50%}@media only screen and (max-width : 600px){.hide-on-small-only,.hide-on-small-and-down{display:none !important;}}@media only screen and (max-width : 992px){.hide-on-med-and-down{display:none !important;}}@media only screen and (min-width : 601px){.hide-on-med-and-up{display:none !important;}}@media only screen and (min-width: 600px) and (max-width: 992px){.hide-on-med-only{display:none !important;}}@media only screen and (min-width : 993px){.hide-on-large-only{display:none !important;}}@media only screen and (min-width : 993px){.show-on-large{display:initial !important;}}@media only screen and (min-width: 600px) and (max-width: 992px){.show-on-medium{display:initial !important;}}@media only screen and (max-width : 600px){.show-on-small{display:initial !important;}}@media only screen and (min-width : 601px){.show-on-medium-and-up{display:initial !important;}}@media only screen and (max-width : 992px){.show-on-medium-and-down{display:initial !important;}}@media only screen and (max-width : 600px){.center-on-small-only{text-align:center;}}footer.page-footer{margin-top:20px;padding-top:20px;background-color:#780000}footer.page-footer .footer-copyright{overflow:hidden;height:50px;line-height:50px;color:rgba(255,255,255,0.8);background-color:rgba(51,51,51,0.08)}table,th,td{border:none}table{width:100%;display:table}table.bordered>thead>tr,table.bordered>tbody>tr{border-bottom:1px solid #d0d0d0}table.striped>tbody>tr:nth-child(odd){background-color:#f2f2f2}table.striped>tbody>tr>td{border-radius:0px}table.highlight>tbody>tr{-webkit-transition:background-color .25s ease;-moz-transition:background-color .25s ease;-o-transition:background-color .25s ease;-ms-transition:background-color .25s ease;transition:background-color .25s ease}table.highlight>tbody>tr:hover{background-color:#f2f2f2}table.centered thead tr th,table.centered tbody tr td{text-align:center}thead{border-bottom:1px solid #d0d0d0}td,th{padding:15px 5px;display:table-cell;text-align:left;vertical-align:middle;border-radius:2px}@media only screen and (max-width : 992px){table.responsive-table{width:100%;border-collapse:collapse;border-spacing:0;display:block;position:relative}table.responsive-table th,table.responsive-table td{margin:0;vertical-align:top}table.responsive-table th{text-align:left}table.responsive-table thead{display:block;float:left}table.responsive-table thead tr{display:block;padding:0 10px 0 0}table.responsive-table thead tr th::before{content:"\00a0"}table.responsive-table tbody{display:block;width:auto;position:relative;overflow-x:auto;white-space:nowrap}table.responsive-table tbody tr{display:inline-block;vertical-align:top}table.responsive-table th{display:block;text-align:right}table.responsive-table td{display:block;min-height:1.25em;text-align:left}table.responsive-table tr{padding:0 10px}table.responsive-table thead{border:0;border-right:1px solid #d0d0d0}table.responsive-table.bordered th{border-bottom:0;border-left:0}table.responsive-table.bordered td{border-left:0;border-right:0;border-bottom:0}table.responsive-table.bordered tr{border:0}table.responsive-table.bordered tbody tr{border-right:1px solid #d0d0d0}}.collection{margin:0.5rem 0 1rem 0;border:1px solid #e0e0e0;border-radius:2px;overflow:hidden;position:relative}.collection .collection-item{background-color:#fff;line-height:1.5rem;padding:10px 20px;margin:0;border-bottom:1px solid #e0e0e0}.collection .collection-item.avatar{min-height:84px;padding-left:72px;position:relative}.collection .collection-item.avatar .circle{position:absolute;width:42px;height:42px;overflow:hidden;left:15px;display:inline-block;vertical-align:middle}.collection .collection-item.avatar i.circle{font-size:18px;line-height:42px;color:#fff;background-color:#999;text-align:center}.collection .collection-item.avatar .title{font-size:16px}.collection .collection-item.avatar p{margin:0}.collection .collection-item.avatar .secondary-content{position:absolute;top:16px;right:16px}.collection .collection-item:last-child{border-bottom:none}.collection .collection-item.active{background-color:#669BBD;color:#eafaf9}.collection .collection-item.active .secondary-content{color:#fff}.collection a.collection-item{display:block;-webkit-transition:0.25s;-moz-transition:0.25s;-o-transition:0.25s;-ms-transition:0.25s;transition:0.25s;color:#669BBD}.collection a.collection-item:not(.active):hover{background-color:#ddd}.collection.with-header .collection-header{background-color:#fff;border-bottom:1px solid #e0e0e0;padding:10px 20px}.collection.with-header .collection-item{padding-left:30px}.collection.with-header .collection-item.avatar{padding-left:72px}.secondary-content{float:right;color:#669BBD}.collapsible .collection{margin:0;border:none}span.badge{min-width:3rem;padding:0 6px;text-align:center;font-size:1rem;line-height:inherit;color:#757575;position:absolute;right:15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}span.badge.new{font-weight:300;font-size:0.8rem;color:#fff;background-color:#669BBD;border-radius:2px}span.badge.new:after{content:" new"}nav ul a span.badge{position:static;margin-left:4px;line-height:0}.video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.video-container iframe,.video-container object,.video-container embed{position:absolute;top:0;left:0;width:100%;height:100%}.progress{position:relative;height:4px;display:block;width:100%;background-color:#acece6;border-radius:2px;margin:0.5rem 0 1rem 0;overflow:hidden}.progress .determinate{position:absolute;background-color:inherit;top:0;left:0;bottom:0;background-color:#669BBD;-webkit-transition:width .3s linear;-moz-transition:width .3s linear;-o-transition:width .3s linear;-ms-transition:width .3s linear;transition:width .3s linear}.progress .indeterminate{background-color:#669BBD}.progress .indeterminate:before{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;-moz-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;-ms-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;-o-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite}.progress .indeterminate:after{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-moz-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-ms-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-o-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-webkit-animation-delay:1.15s;-moz-animation-delay:1.15s;-ms-animation-delay:1.15s;-o-animation-delay:1.15s;animation-delay:1.15s}@-webkit-keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@-moz-keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@-webkit-keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}@-moz-keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}.hide{display:none !important}.left-align{text-align:left}.right-align{text-align:right}.center,.center-align{text-align:center}.left{float:left !important}.right{float:right !important}.no-select,input[type=range],input[type=range]+.thumb{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.circle{border-radius:50%}.center-block{display:block;margin-left:auto;margin-right:auto}.truncate{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.no-padding{padding:0 !important}@font-face{font-family:"Material-Design-Icons";src:url("../font/material-design-icons/Material-Design-Icons.eot?#iefix") format("embedded-opentype"),url("../font/material-design-icons/Material-Design-Icons.woff2") format("woff2"),url("../font/material-design-icons/Material-Design-Icons.woff") format("woff"),url("../font/material-design-icons/Material-Design-Icons.ttf") format("truetype"),url("../font/material-design-icons/Material-Design-Icons.svg#Material-Design-Icons") format("svg");font-weight:normal;font-style:normal;}[class^="mdi-"],[class*="mdi-"]{speak:none;display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;font-variant:normal;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}[class^="mdi-"]:before,[class*="mdi-"]:before{display:inline-block;speak:none;text-decoration:inherit}[class^="mdi-"].pull-left,[class*="mdi-"].pull-left{margin-right:.3em}[class^="mdi-"].pull-right,[class*="mdi-"].pull-right{margin-left:.3em}[class^="mdi-"].mdi-lg:before,[class^="mdi-"].mdi-lg:after,[class*="mdi-"].mdi-lg:before,[class*="mdi-"].mdi-lg:after{font-size:1.33333333em;line-height:0.75em;vertical-align:-15%}[class^="mdi-"].mdi-2x:before,[class^="mdi-"].mdi-2x:after,[class*="mdi-"].mdi-2x:before,[class*="mdi-"].mdi-2x:after{font-size:2em}[class^="mdi-"].mdi-3x:before,[class^="mdi-"].mdi-3x:after,[class*="mdi-"].mdi-3x:before,[class*="mdi-"].mdi-3x:after{font-size:3em}[class^="mdi-"].mdi-4x:before,[class^="mdi-"].mdi-4x:after,[class*="mdi-"].mdi-4x:before,[class*="mdi-"].mdi-4x:after{font-size:4em}[class^="mdi-"].mdi-5x:before,[class^="mdi-"].mdi-5x:after,[class*="mdi-"].mdi-5x:before,[class*="mdi-"].mdi-5x:after{font-size:5em}[class^="mdi-device-signal-cellular-"]:after,[class^="mdi-device-battery-"]:after,[class^="mdi-device-battery-charging-"]:after,[class^="mdi-device-signal-cellular-connected-no-internet-"]:after,[class^="mdi-device-signal-wifi-"]:after,[class^="mdi-device-signal-wifi-statusbar-not-connected"]:after,.mdi-device-network-wifi:after{opacity:.3;position:absolute;left:0;top:0;z-index:1;display:inline-block;speak:none;text-decoration:inherit}[class^="mdi-device-signal-cellular-"]:after{content:"\e758"}[class^="mdi-device-battery-"]:after{content:"\e735"}[class^="mdi-device-battery-charging-"]:after{content:"\e733"}[class^="mdi-device-signal-cellular-connected-no-internet-"]:after{content:"\e75d"}[class^="mdi-device-signal-wifi-"]:after,.mdi-device-network-wifi:after{content:"\e765"}[class^="mdi-device-signal-wifi-statusbasr-not-connected"]:after{content:"\e8f7"}.mdi-device-signal-cellular-off:after,.mdi-device-signal-cellular-null:after,.mdi-device-signal-cellular-no-sim:after,.mdi-device-signal-wifi-off:after,.mdi-device-signal-wifi-4-bar:after,.mdi-device-signal-cellular-4-bar:after,.mdi-device-battery-alert:after,.mdi-device-signal-cellular-connected-no-internet-4-bar:after,.mdi-device-battery-std:after,.mdi-device-battery-full .mdi-device-battery-unknown:after{content:""}.mdi-fw{width:1.28571429em;text-align:center}.mdi-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.mdi-ul>li{position:relative}.mdi-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:0.14285714em;text-align:center}.mdi-li.mdi-lg{left:-1.85714286em}.mdi-border{padding:.2em .25em .15em;border:solid 0.08em #eeeeee;border-radius:.1em}.mdi-spin{-webkit-animation:mdi-spin 2s infinite linear;animation:mdi-spin 2s infinite linear;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-o-transform-origin:50% 50%;transform-origin:50% 50%}.mdi-pulse{-webkit-animation:mdi-spin 1s steps(8) infinite;animation:mdi-spin 1s steps(8) infinite;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-o-transform-origin:50% 50%;transform-origin:50% 50%}@-webkit-keyframes mdi-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes mdi-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.mdi-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.mdi-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.mdi-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.mdi-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.mdi-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .mdi-rotate-90,:root .mdi-rotate-180,:root .mdi-rotate-270,:root .mdi-flip-horizontal,:root .mdi-flip-vertical{filter:none}.mdi-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.mdi-stack-1x,.mdi-stack-2x{position:absolute;left:0;width:100%;text-align:center}.mdi-stack-1x{line-height:inherit}.mdi-stack-2x{font-size:2em}.mdi-inverse{color:#ffffff}.mdi-action-3d-rotation:before{content:"\e600"}.mdi-action-accessibility:before{content:"\e601"}.mdi-action-account-balance-wallet:before{content:"\e602"}.mdi-action-account-balance:before{content:"\e603"}.mdi-action-account-box:before{content:"\e604"}.mdi-action-account-child:before{content:"\e605"}.mdi-action-account-circle:before{content:"\e606"}.mdi-action-add-shopping-cart:before{content:"\e607"}.mdi-action-alarm-add:before{content:"\e608"}.mdi-action-alarm-off:before{content:"\e609"}.mdi-action-alarm-on:before{content:"\e60a"}.mdi-action-alarm:before{content:"\e60b"}.mdi-action-android:before{content:"\e60c"}.mdi-action-announcement:before{content:"\e60d"}.mdi-action-aspect-ratio:before{content:"\e60e"}.mdi-action-assessment:before{content:"\e60f"}.mdi-action-assignment-ind:before{content:"\e610"}.mdi-action-assignment-late:before{content:"\e611"}.mdi-action-assignment-return:before{content:"\e612"}.mdi-action-assignment-returned:before{content:"\e613"}.mdi-action-assignment-turned-in:before{content:"\e614"}.mdi-action-assignment:before{content:"\e615"}.mdi-action-autorenew:before{content:"\e616"}.mdi-action-backup:before{content:"\e617"}.mdi-action-book:before{content:"\e618"}.mdi-action-bookmark-outline:before{content:"\e619"}.mdi-action-bookmark:before{content:"\e61a"}.mdi-action-bug-report:before{content:"\e61b"}.mdi-action-cached:before{content:"\e61c"}.mdi-action-check-circle:before{content:"\e61d"}.mdi-action-class:before{content:"\e61e"}.mdi-action-credit-card:before{content:"\e61f"}.mdi-action-dashboard:before{content:"\e620"}.mdi-action-delete:before{content:"\e621"}.mdi-action-description:before{content:"\e622"}.mdi-action-dns:before{content:"\e623"}.mdi-action-done-all:before{content:"\e624"}.mdi-action-done:before{content:"\e625"}.mdi-action-event:before{content:"\e626"}.mdi-action-exit-to-app:before{content:"\e627"}.mdi-action-explore:before{content:"\e628"}.mdi-action-extension:before{content:"\e629"}.mdi-action-face-unlock:before{content:"\e62a"}.mdi-action-favorite-outline:before{content:"\e62b"}.mdi-action-favorite:before{content:"\e62c"}.mdi-action-find-in-page:before{content:"\e62d"}.mdi-action-find-replace:before{content:"\e62e"}.mdi-action-flip-to-back:before{content:"\e62f"}.mdi-action-flip-to-front:before{content:"\e630"}.mdi-action-get-app:before{content:"\e631"}.mdi-action-grade:before{content:"\e632"}.mdi-action-group-work:before{content:"\e633"}.mdi-action-help:before{content:"\e634"}.mdi-action-highlight-remove:before{content:"\e635"}.mdi-action-history:before{content:"\e636"}.mdi-action-home:before{content:"\e637"}.mdi-action-https:before{content:"\e638"}.mdi-action-info-outline:before{content:"\e639"}.mdi-action-info:before{content:"\e63a"}.mdi-action-input:before{content:"\e63b"}.mdi-action-invert-colors:before{content:"\e63c"}.mdi-action-label-outline:before{content:"\e63d"}.mdi-action-label:before{content:"\e63e"}.mdi-action-language:before{content:"\e63f"}.mdi-action-launch:before{content:"\e640"}.mdi-action-list:before{content:"\e641"}.mdi-action-lock-open:before{content:"\e642"}.mdi-action-lock-outline:before{content:"\e643"}.mdi-action-lock:before{content:"\e644"}.mdi-action-loyalty:before{content:"\e645"}.mdi-action-markunread-mailbox:before{content:"\e646"}.mdi-action-note-add:before{content:"\e647"}.mdi-action-open-in-browser:before{content:"\e648"}.mdi-action-open-in-new:before{content:"\e649"}.mdi-action-open-with:before{content:"\e64a"}.mdi-action-pageview:before{content:"\e64b"}.mdi-action-payment:before{content:"\e64c"}.mdi-action-perm-camera-mic:before{content:"\e64d"}.mdi-action-perm-contact-cal:before{content:"\e64e"}.mdi-action-perm-data-setting:before{content:"\e64f"}.mdi-action-perm-device-info:before{content:"\e650"}.mdi-action-perm-identity:before{content:"\e651"}.mdi-action-perm-media:before{content:"\e652"}.mdi-action-perm-phone-msg:before{content:"\e653"}.mdi-action-perm-scan-wifi:before{content:"\e654"}.mdi-action-picture-in-picture:before{content:"\e655"}.mdi-action-polymer:before{content:"\e656"}.mdi-action-print:before{content:"\e657"}.mdi-action-query-builder:before{content:"\e658"}.mdi-action-question-answer:before{content:"\e659"}.mdi-action-receipt:before{content:"\e65a"}.mdi-action-redeem:before{content:"\e65b"}.mdi-action-reorder:before{content:"\e65c"}.mdi-action-report-problem:before{content:"\e65d"}.mdi-action-restore:before{content:"\e65e"}.mdi-action-room:before{content:"\e65f"}.mdi-action-schedule:before{content:"\e660"}.mdi-action-search:before{content:"\e661"}.mdi-action-settings-applications:before{content:"\e662"}.mdi-action-settings-backup-restore:before{content:"\e663"}.mdi-action-settings-bluetooth:before{content:"\e664"}.mdi-action-settings-cell:before{content:"\e665"}.mdi-action-settings-display:before{content:"\e666"}.mdi-action-settings-ethernet:before{content:"\e667"}.mdi-action-settings-input-antenna:before{content:"\e668"}.mdi-action-settings-input-component:before{content:"\e669"}.mdi-action-settings-input-composite:before{content:"\e66a"}.mdi-action-settings-input-hdmi:before{content:"\e66b"}.mdi-action-settings-input-svideo:before{content:"\e66c"}.mdi-action-settings-overscan:before{content:"\e66d"}.mdi-action-settings-phone:before{content:"\e66e"}.mdi-action-settings-power:before{content:"\e66f"}.mdi-action-settings-remote:before{content:"\e670"}.mdi-action-settings-voice:before{content:"\e671"}.mdi-action-settings:before{content:"\e672"}.mdi-action-shop-two:before{content:"\e673"}.mdi-action-shop:before{content:"\e674"}.mdi-action-shopping-basket:before{content:"\e675"}.mdi-action-shopping-cart:before{content:"\e676"}.mdi-action-speaker-notes:before{content:"\e677"}.mdi-action-spellcheck:before{content:"\e678"}.mdi-action-star-rate:before{content:"\e679"}.mdi-action-stars:before{content:"\e67a"}.mdi-action-store:before{content:"\e67b"}.mdi-action-subject:before{content:"\e67c"}.mdi-action-supervisor-account:before{content:"\e67d"}.mdi-action-swap-horiz:before{content:"\e67e"}.mdi-action-swap-vert-circle:before{content:"\e67f"}.mdi-action-swap-vert:before{content:"\e680"}.mdi-action-system-update-tv:before{content:"\e681"}.mdi-action-tab-unselected:before{content:"\e682"}.mdi-action-tab:before{content:"\e683"}.mdi-action-theaters:before{content:"\e684"}.mdi-action-thumb-down:before{content:"\e685"}.mdi-action-thumb-up:before{content:"\e686"}.mdi-action-thumbs-up-down:before{content:"\e687"}.mdi-action-toc:before{content:"\e688"}.mdi-action-today:before{content:"\e689"}.mdi-action-track-changes:before{content:"\e68a"}.mdi-action-translate:before{content:"\e68b"}.mdi-action-trending-down:before{content:"\e68c"}.mdi-action-trending-neutral:before{content:"\e68d"}.mdi-action-trending-up:before{content:"\e68e"}.mdi-action-turned-in-not:before{content:"\e68f"}.mdi-action-turned-in:before{content:"\e690"}.mdi-action-verified-user:before{content:"\e691"}.mdi-action-view-agenda:before{content:"\e692"}.mdi-action-view-array:before{content:"\e693"}.mdi-action-view-carousel:before{content:"\e694"}.mdi-action-view-column:before{content:"\e695"}.mdi-action-view-day:before{content:"\e696"}.mdi-action-view-headline:before{content:"\e697"}.mdi-action-view-list:before{content:"\e698"}.mdi-action-view-module:before{content:"\e699"}.mdi-action-view-quilt:before{content:"\e69a"}.mdi-action-view-stream:before{content:"\e69b"}.mdi-action-view-week:before{content:"\e69c"}.mdi-action-visibility-off:before{content:"\e69d"}.mdi-action-visibility:before{content:"\e69e"}.mdi-action-wallet-giftcard:before{content:"\e69f"}.mdi-action-wallet-membership:before{content:"\e6a0"}.mdi-action-wallet-travel:before{content:"\e6a1"}.mdi-action-work:before{content:"\e6a2"}.mdi-alert-error:before{content:"\e6a3"}.mdi-alert-warning:before{content:"\e6a4"}.mdi-av-album:before{content:"\e6a5"}.mdi-av-closed-caption:before{content:"\e6a6"}.mdi-av-equalizer:before{content:"\e6a7"}.mdi-av-explicit:before{content:"\e6a8"}.mdi-av-fast-forward:before{content:"\e6a9"}.mdi-av-fast-rewind:before{content:"\e6aa"}.mdi-av-games:before{content:"\e6ab"}.mdi-av-hearing:before{content:"\e6ac"}.mdi-av-high-quality:before{content:"\e6ad"}.mdi-av-loop:before{content:"\e6ae"}.mdi-av-mic-none:before{content:"\e6af"}.mdi-av-mic-off:before{content:"\e6b0"}.mdi-av-mic:before{content:"\e6b1"}.mdi-av-movie:before{content:"\e6b2"}.mdi-av-my-library-add:before{content:"\e6b3"}.mdi-av-my-library-books:before{content:"\e6b4"}.mdi-av-my-library-music:before{content:"\e6b5"}.mdi-av-new-releases:before{content:"\e6b6"}.mdi-av-not-interested:before{content:"\e6b7"}.mdi-av-pause-circle-fill:before{content:"\e6b8"}.mdi-av-pause-circle-outline:before{content:"\e6b9"}.mdi-av-pause:before{content:"\e6ba"}.mdi-av-play-arrow:before{content:"\e6bb"}.mdi-av-play-circle-fill:before{content:"\e6bc"}.mdi-av-play-circle-outline:before{content:"\e6bd"}.mdi-av-play-shopping-bag:before{content:"\e6be"}.mdi-av-playlist-add:before{content:"\e6bf"}.mdi-av-queue-music:before{content:"\e6c0"}.mdi-av-queue:before{content:"\e6c1"}.mdi-av-radio:before{content:"\e6c2"}.mdi-av-recent-actors:before{content:"\e6c3"}.mdi-av-repeat-one:before{content:"\e6c4"}.mdi-av-repeat:before{content:"\e6c5"}.mdi-av-replay:before{content:"\e6c6"}.mdi-av-shuffle:before{content:"\e6c7"}.mdi-av-skip-next:before{content:"\e6c8"}.mdi-av-skip-previous:before{content:"\e6c9"}.mdi-av-snooze:before{content:"\e6ca"}.mdi-av-stop:before{content:"\e6cb"}.mdi-av-subtitles:before{content:"\e6cc"}.mdi-av-surround-sound:before{content:"\e6cd"}.mdi-av-timer:before{content:"\e6ce"}.mdi-av-video-collection:before{content:"\e6cf"}.mdi-av-videocam-off:before{content:"\e6d0"}.mdi-av-videocam:before{content:"\e6d1"}.mdi-av-volume-down:before{content:"\e6d2"}.mdi-av-volume-mute:before{content:"\e6d3"}.mdi-av-volume-off:before{content:"\e6d4"}.mdi-av-volume-up:before{content:"\e6d5"}.mdi-av-web:before{content:"\e6d6"}.mdi-communication-business:before{content:"\e6d7"}.mdi-communication-call-end:before{content:"\e6d8"}.mdi-communication-call-made:before{content:"\e6d9"}.mdi-communication-call-merge:before{content:"\e6da"}.mdi-communication-call-missed:before{content:"\e6db"}.mdi-communication-call-received:before{content:"\e6dc"}.mdi-communication-call-split:before{content:"\e6dd"}.mdi-communication-call:before{content:"\e6de"}.mdi-communication-chat:before{content:"\e6df"}.mdi-communication-clear-all:before{content:"\e6e0"}.mdi-communication-comment:before{content:"\e6e1"}.mdi-communication-contacts:before{content:"\e6e2"}.mdi-communication-dialer-sip:before{content:"\e6e3"}.mdi-communication-dialpad:before{content:"\e6e4"}.mdi-communication-dnd-on:before{content:"\e6e5"}.mdi-communication-email:before{content:"\e6e6"}.mdi-communication-forum:before{content:"\e6e7"}.mdi-communication-import-export:before{content:"\e6e8"}.mdi-communication-invert-colors-off:before{content:"\e6e9"}.mdi-communication-invert-colors-on:before{content:"\e6ea"}.mdi-communication-live-help:before{content:"\e6eb"}.mdi-communication-location-off:before{content:"\e6ec"}.mdi-communication-location-on:before{content:"\e6ed"}.mdi-communication-message:before{content:"\e6ee"}.mdi-communication-messenger:before{content:"\e6ef"}.mdi-communication-no-sim:before{content:"\e6f0"}.mdi-communication-phone:before{content:"\e6f1"}.mdi-communication-portable-wifi-off:before{content:"\e6f2"}.mdi-communication-quick-contacts-dialer:before{content:"\e6f3"}.mdi-communication-quick-contacts-mail:before{content:"\e6f4"}.mdi-communication-ring-volume:before{content:"\e6f5"}.mdi-communication-stay-current-landscape:before{content:"\e6f6"}.mdi-communication-stay-current-portrait:before{content:"\e6f7"}.mdi-communication-stay-primary-landscape:before{content:"\e6f8"}.mdi-communication-stay-primary-portrait:before{content:"\e6f9"}.mdi-communication-swap-calls:before{content:"\e6fa"}.mdi-communication-textsms:before{content:"\e6fb"}.mdi-communication-voicemail:before{content:"\e6fc"}.mdi-communication-vpn-key:before{content:"\e6fd"}.mdi-content-add-box:before{content:"\e6fe"}.mdi-content-add-circle-outline:before{content:"\e6ff"}.mdi-content-add-circle:before{content:"\e700"}.mdi-content-add:before{content:"\e701"}.mdi-content-archive:before{content:"\e702"}.mdi-content-backspace:before{content:"\e703"}.mdi-content-block:before{content:"\e704"}.mdi-content-clear:before{content:"\e705"}.mdi-content-content-copy:before{content:"\e706"}.mdi-content-content-cut:before{content:"\e707"}.mdi-content-content-paste:before{content:"\e708"}.mdi-content-create:before{content:"\e709"}.mdi-content-drafts:before{content:"\e70a"}.mdi-content-filter-list:before{content:"\e70b"}.mdi-content-flag:before{content:"\e70c"}.mdi-content-forward:before{content:"\e70d"}.mdi-content-gesture:before{content:"\e70e"}.mdi-content-inbox:before{content:"\e70f"}.mdi-content-link:before{content:"\e710"}.mdi-content-mail:before{content:"\e711"}.mdi-content-markunread:before{content:"\e712"}.mdi-content-redo:before{content:"\e713"}.mdi-content-remove-circle-outline:before{content:"\e714"}.mdi-content-remove-circle:before{content:"\e715"}.mdi-content-remove:before{content:"\e716"}.mdi-content-reply-all:before{content:"\e717"}.mdi-content-reply:before{content:"\e718"}.mdi-content-report:before{content:"\e719"}.mdi-content-save:before{content:"\e71a"}.mdi-content-select-all:before{content:"\e71b"}.mdi-content-send:before{content:"\e71c"}.mdi-content-sort:before{content:"\e71d"}.mdi-content-text-format:before{content:"\e71e"}.mdi-content-undo:before{content:"\e71f"}.mdi-editor-attach-file:before{content:"\e776"}.mdi-editor-attach-money:before{content:"\e777"}.mdi-editor-border-all:before{content:"\e778"}.mdi-editor-border-bottom:before{content:"\e779"}.mdi-editor-border-clear:before{content:"\e77a"}.mdi-editor-border-color:before{content:"\e77b"}.mdi-editor-border-horizontal:before{content:"\e77c"}.mdi-editor-border-inner:before{content:"\e77d"}.mdi-editor-border-left:before{content:"\e77e"}.mdi-editor-border-outer:before{content:"\e77f"}.mdi-editor-border-right:before{content:"\e780"}.mdi-editor-border-style:before{content:"\e781"}.mdi-editor-border-top:before{content:"\e782"}.mdi-editor-border-vertical:before{content:"\e783"}.mdi-editor-format-align-center:before{content:"\e784"}.mdi-editor-format-align-justify:before{content:"\e785"}.mdi-editor-format-align-left:before{content:"\e786"}.mdi-editor-format-align-right:before{content:"\e787"}.mdi-editor-format-bold:before{content:"\e788"}.mdi-editor-format-clear:before{content:"\e789"}.mdi-editor-format-color-fill:before{content:"\e78a"}.mdi-editor-format-color-reset:before{content:"\e78b"}.mdi-editor-format-color-text:before{content:"\e78c"}.mdi-editor-format-indent-decrease:before{content:"\e78d"}.mdi-editor-format-indent-increase:before{content:"\e78e"}.mdi-editor-format-italic:before{content:"\e78f"}.mdi-editor-format-line-spacing:before{content:"\e790"}.mdi-editor-format-list-bulleted:before{content:"\e791"}.mdi-editor-format-list-numbered:before{content:"\e792"}.mdi-editor-format-paint:before{content:"\e793"}.mdi-editor-format-quote:before{content:"\e794"}.mdi-editor-format-size:before{content:"\e795"}.mdi-editor-format-strikethrough:before{content:"\e796"}.mdi-editor-format-textdirection-l-to-r:before{content:"\e797"}.mdi-editor-format-textdirection-r-to-l:before{content:"\e798"}.mdi-editor-format-underline:before{content:"\e799"}.mdi-editor-functions:before{content:"\e79a"}.mdi-editor-insert-chart:before{content:"\e79b"}.mdi-editor-insert-comment:before{content:"\e79c"}.mdi-editor-insert-drive-file:before{content:"\e79d"}.mdi-editor-insert-emoticon:before{content:"\e79e"}.mdi-editor-insert-invitation:before{content:"\e79f"}.mdi-editor-insert-link:before{content:"\e7a0"}.mdi-editor-insert-photo:before{content:"\e7a1"}.mdi-editor-merge-type:before{content:"\e7a2"}.mdi-editor-mode-comment:before{content:"\e7a3"}.mdi-editor-mode-edit:before{content:"\e7a4"}.mdi-editor-publish:before{content:"\e7a5"}.mdi-editor-vertical-align-bottom:before{content:"\e7a6"}.mdi-editor-vertical-align-center:before{content:"\e7a7"}.mdi-editor-vertical-align-top:before{content:"\e7a8"}.mdi-editor-wrap-text:before{content:"\e7a9"}.mdi-file-attachment:before{content:"\e7aa"}.mdi-file-cloud-circle:before{content:"\e7ab"}.mdi-file-cloud-done:before{content:"\e7ac"}.mdi-file-cloud-download:before{content:"\e7ad"}.mdi-file-cloud-off:before{content:"\e7ae"}.mdi-file-cloud-queue:before{content:"\e7af"}.mdi-file-cloud-upload:before{content:"\e7b0"}.mdi-file-cloud:before{content:"\e7b1"}.mdi-file-file-download:before{content:"\e7b2"}.mdi-file-file-upload:before{content:"\e7b3"}.mdi-file-folder-open:before{content:"\e7b4"}.mdi-file-folder-shared:before{content:"\e7b5"}.mdi-file-folder:before{content:"\e7b6"}.mdi-device-access-alarm:before{content:"\e720"}.mdi-device-access-alarms:before{content:"\e721"}.mdi-device-access-time:before{content:"\e722"}.mdi-device-add-alarm:before{content:"\e723"}.mdi-device-airplanemode-off:before{content:"\e724"}.mdi-device-airplanemode-on:before{content:"\e725"}.mdi-device-battery-20:before{content:"\e726"}.mdi-device-battery-30:before{content:"\e727"}.mdi-device-battery-50:before{content:"\e728"}.mdi-device-battery-60:before{content:"\e729"}.mdi-device-battery-80:before{content:"\e72a"}.mdi-device-battery-90:before{content:"\e72b"}.mdi-device-battery-alert:before{content:"\e72c"}.mdi-device-battery-charging-20:before{content:"\e72d"}.mdi-device-battery-charging-30:before{content:"\e72e"}.mdi-device-battery-charging-50:before{content:"\e72f"}.mdi-device-battery-charging-60:before{content:"\e730"}.mdi-device-battery-charging-80:before{content:"\e731"}.mdi-device-battery-charging-90:before{content:"\e732"}.mdi-device-battery-charging-full:before{content:"\e733"}.mdi-device-battery-full:before{content:"\e734"}.mdi-device-battery-std:before{content:"\e735"}.mdi-device-battery-unknown:before{content:"\e736"}.mdi-device-bluetooth-connected:before{content:"\e737"}.mdi-device-bluetooth-disabled:before{content:"\e738"}.mdi-device-bluetooth-searching:before{content:"\e739"}.mdi-device-bluetooth:before{content:"\e73a"}.mdi-device-brightness-auto:before{content:"\e73b"}.mdi-device-brightness-high:before{content:"\e73c"}.mdi-device-brightness-low:before{content:"\e73d"}.mdi-device-brightness-medium:before{content:"\e73e"}.mdi-device-data-usage:before{content:"\e73f"}.mdi-device-developer-mode:before{content:"\e740"}.mdi-device-devices:before{content:"\e741"}.mdi-device-dvr:before{content:"\e742"}.mdi-device-gps-fixed:before{content:"\e743"}.mdi-device-gps-not-fixed:before{content:"\e744"}.mdi-device-gps-off:before{content:"\e745"}.mdi-device-location-disabled:before{content:"\e746"}.mdi-device-location-searching:before{content:"\e747"}.mdi-device-multitrack-audio:before{content:"\e748"}.mdi-device-network-cell:before{content:"\e749"}.mdi-device-network-wifi:before{content:"\e74a"}.mdi-device-nfc:before{content:"\e74b"}.mdi-device-now-wallpaper:before{content:"\e74c"}.mdi-device-now-widgets:before{content:"\e74d"}.mdi-device-screen-lock-landscape:before{content:"\e74e"}.mdi-device-screen-lock-portrait:before{content:"\e74f"}.mdi-device-screen-lock-rotation:before{content:"\e750"}.mdi-device-screen-rotation:before{content:"\e751"}.mdi-device-sd-storage:before{content:"\e752"}.mdi-device-settings-system-daydream:before{content:"\e753"}.mdi-device-signal-cellular-0-bar:before{content:"\e754"}.mdi-device-signal-cellular-1-bar:before{content:"\e755"}.mdi-device-signal-cellular-2-bar:before{content:"\e756"}.mdi-device-signal-cellular-3-bar:before{content:"\e757"}.mdi-device-signal-cellular-4-bar:before{content:"\e758"}.mdi-signal-wifi-statusbar-connected-no-internet-after:before{content:"\e8f6"}.mdi-device-signal-cellular-connected-no-internet-0-bar:before{content:"\e759"}.mdi-device-signal-cellular-connected-no-internet-1-bar:before{content:"\e75a"}.mdi-device-signal-cellular-connected-no-internet-2-bar:before{content:"\e75b"}.mdi-device-signal-cellular-connected-no-internet-3-bar:before{content:"\e75c"}.mdi-device-signal-cellular-connected-no-internet-4-bar:before{content:"\e75d"}.mdi-device-signal-cellular-no-sim:before{content:"\e75e"}.mdi-device-signal-cellular-null:before{content:"\e75f"}.mdi-device-signal-cellular-off:before{content:"\e760"}.mdi-device-signal-wifi-0-bar:before{content:"\e761"}.mdi-device-signal-wifi-1-bar:before{content:"\e762"}.mdi-device-signal-wifi-2-bar:before{content:"\e763"}.mdi-device-signal-wifi-3-bar:before{content:"\e764"}.mdi-device-signal-wifi-4-bar:before{content:"\e765"}.mdi-device-signal-wifi-off:before{content:"\e766"}.mdi-device-signal-wifi-statusbar-1-bar:before{content:"\e767"}.mdi-device-signal-wifi-statusbar-2-bar:before{content:"\e768"}.mdi-device-signal-wifi-statusbar-3-bar:before{content:"\e769"}.mdi-device-signal-wifi-statusbar-4-bar:before{content:"\e76a"}.mdi-device-signal-wifi-statusbar-connected-no-internet-:before{content:"\e76b"}.mdi-device-signal-wifi-statusbar-connected-no-internet:before{content:"\e76f"}.mdi-device-signal-wifi-statusbar-connected-no-internet-2:before{content:"\e76c"}.mdi-device-signal-wifi-statusbar-connected-no-internet-3:before{content:"\e76d"}.mdi-device-signal-wifi-statusbar-connected-no-internet-4:before{content:"\e76e"}.mdi-signal-wifi-statusbar-not-connected-after:before{content:"\e8f7"}.mdi-device-signal-wifi-statusbar-not-connected:before{content:"\e770"}.mdi-device-signal-wifi-statusbar-null:before{content:"\e771"}.mdi-device-storage:before{content:"\e772"}.mdi-device-usb:before{content:"\e773"}.mdi-device-wifi-lock:before{content:"\e774"}.mdi-device-wifi-tethering:before{content:"\e775"}.mdi-hardware-cast-connected:before{content:"\e7b7"}.mdi-hardware-cast:before{content:"\e7b8"}.mdi-hardware-computer:before{content:"\e7b9"}.mdi-hardware-desktop-mac:before{content:"\e7ba"}.mdi-hardware-desktop-windows:before{content:"\e7bb"}.mdi-hardware-dock:before{content:"\e7bc"}.mdi-hardware-gamepad:before{content:"\e7bd"}.mdi-hardware-headset-mic:before{content:"\e7be"}.mdi-hardware-headset:before{content:"\e7bf"}.mdi-hardware-keyboard-alt:before{content:"\e7c0"}.mdi-hardware-keyboard-arrow-down:before{content:"\e7c1"}.mdi-hardware-keyboard-arrow-left:before{content:"\e7c2"}.mdi-hardware-keyboard-arrow-right:before{content:"\e7c3"}.mdi-hardware-keyboard-arrow-up:before{content:"\e7c4"}.mdi-hardware-keyboard-backspace:before{content:"\e7c5"}.mdi-hardware-keyboard-capslock:before{content:"\e7c6"}.mdi-hardware-keyboard-control:before{content:"\e7c7"}.mdi-hardware-keyboard-hide:before{content:"\e7c8"}.mdi-hardware-keyboard-return:before{content:"\e7c9"}.mdi-hardware-keyboard-tab:before{content:"\e7ca"}.mdi-hardware-keyboard-voice:before{content:"\e7cb"}.mdi-hardware-keyboard:before{content:"\e7cc"}.mdi-hardware-laptop-chromebook:before{content:"\e7cd"}.mdi-hardware-laptop-mac:before{content:"\e7ce"}.mdi-hardware-laptop-windows:before{content:"\e7cf"}.mdi-hardware-laptop:before{content:"\e7d0"}.mdi-hardware-memory:before{content:"\e7d1"}.mdi-hardware-mouse:before{content:"\e7d2"}.mdi-hardware-phone-android:before{content:"\e7d3"}.mdi-hardware-phone-iphone:before{content:"\e7d4"}.mdi-hardware-phonelink-off:before{content:"\e7d5"}.mdi-hardware-phonelink:before{content:"\e7d6"}.mdi-hardware-security:before{content:"\e7d7"}.mdi-hardware-sim-card:before{content:"\e7d8"}.mdi-hardware-smartphone:before{content:"\e7d9"}.mdi-hardware-speaker:before{content:"\e7da"}.mdi-hardware-tablet-android:before{content:"\e7db"}.mdi-hardware-tablet-mac:before{content:"\e7dc"}.mdi-hardware-tablet:before{content:"\e7dd"}.mdi-hardware-tv:before{content:"\e7de"}.mdi-hardware-watch:before{content:"\e7df"}.mdi-image-add-to-photos:before{content:"\e7e0"}.mdi-image-adjust:before{content:"\e7e1"}.mdi-image-assistant-photo:before{content:"\e7e2"}.mdi-image-audiotrack:before{content:"\e7e3"}.mdi-image-blur-circular:before{content:"\e7e4"}.mdi-image-blur-linear:before{content:"\e7e5"}.mdi-image-blur-off:before{content:"\e7e6"}.mdi-image-blur-on:before{content:"\e7e7"}.mdi-image-brightness-1:before{content:"\e7e8"}.mdi-image-brightness-2:before{content:"\e7e9"}.mdi-image-brightness-3:before{content:"\e7ea"}.mdi-image-brightness-4:before{content:"\e7eb"}.mdi-image-brightness-5:before{content:"\e7ec"}.mdi-image-brightness-6:before{content:"\e7ed"}.mdi-image-brightness-7:before{content:"\e7ee"}.mdi-image-brush:before{content:"\e7ef"}.mdi-image-camera-alt:before{content:"\e7f0"}.mdi-image-camera-front:before{content:"\e7f1"}.mdi-image-camera-rear:before{content:"\e7f2"}.mdi-image-camera-roll:before{content:"\e7f3"}.mdi-image-camera:before{content:"\e7f4"}.mdi-image-center-focus-strong:before{content:"\e7f5"}.mdi-image-center-focus-weak:before{content:"\e7f6"}.mdi-image-collections:before{content:"\e7f7"}.mdi-image-color-lens:before{content:"\e7f8"}.mdi-image-colorize:before{content:"\e7f9"}.mdi-image-compare:before{content:"\e7fa"}.mdi-image-control-point-duplicate:before{content:"\e7fb"}.mdi-image-control-point:before{content:"\e7fc"}.mdi-image-crop-3-2:before{content:"\e7fd"}.mdi-image-crop-5-4:before{content:"\e7fe"}.mdi-image-crop-7-5:before{content:"\e7ff"}.mdi-image-crop-16-9:before{content:"\e800"}.mdi-image-crop-din:before{content:"\e801"}.mdi-image-crop-free:before{content:"\e802"}.mdi-image-crop-landscape:before{content:"\e803"}.mdi-image-crop-original:before{content:"\e804"}.mdi-image-crop-portrait:before{content:"\e805"}.mdi-image-crop-square:before{content:"\e806"}.mdi-image-crop:before{content:"\e807"}.mdi-image-dehaze:before{content:"\e808"}.mdi-image-details:before{content:"\e809"}.mdi-image-edit:before{content:"\e80a"}.mdi-image-exposure-minus-1:before{content:"\e80b"}.mdi-image-exposure-minus-2:before{content:"\e80c"}.mdi-image-exposure-plus-1:before{content:"\e80d"}.mdi-image-exposure-plus-2:before{content:"\e80e"}.mdi-image-exposure-zero:before{content:"\e80f"}.mdi-image-exposure:before{content:"\e810"}.mdi-image-filter-1:before{content:"\e811"}.mdi-image-filter-2:before{content:"\e812"}.mdi-image-filter-3:before{content:"\e813"}.mdi-image-filter-4:before{content:"\e814"}.mdi-image-filter-5:before{content:"\e815"}.mdi-image-filter-6:before{content:"\e816"}.mdi-image-filter-7:before{content:"\e817"}.mdi-image-filter-8:before{content:"\e818"}.mdi-image-filter-9-plus:before{content:"\e819"}.mdi-image-filter-9:before{content:"\e81a"}.mdi-image-filter-b-and-w:before{content:"\e81b"}.mdi-image-filter-center-focus:before{content:"\e81c"}.mdi-image-filter-drama:before{content:"\e81d"}.mdi-image-filter-frames:before{content:"\e81e"}.mdi-image-filter-hdr:before{content:"\e81f"}.mdi-image-filter-none:before{content:"\e820"}.mdi-image-filter-tilt-shift:before{content:"\e821"}.mdi-image-filter-vintage:before{content:"\e822"}.mdi-image-filter:before{content:"\e823"}.mdi-image-flare:before{content:"\e824"}.mdi-image-flash-auto:before{content:"\e825"}.mdi-image-flash-off:before{content:"\e826"}.mdi-image-flash-on:before{content:"\e827"}.mdi-image-flip:before{content:"\e828"}.mdi-image-gradient:before{content:"\e829"}.mdi-image-grain:before{content:"\e82a"}.mdi-image-grid-off:before{content:"\e82b"}.mdi-image-grid-on:before{content:"\e82c"}.mdi-image-hdr-off:before{content:"\e82d"}.mdi-image-hdr-on:before{content:"\e82e"}.mdi-image-hdr-strong:before{content:"\e82f"}.mdi-image-hdr-weak:before{content:"\e830"}.mdi-image-healing:before{content:"\e831"}.mdi-image-image-aspect-ratio:before{content:"\e832"}.mdi-image-image:before{content:"\e833"}.mdi-image-iso:before{content:"\e834"}.mdi-image-landscape:before{content:"\e835"}.mdi-image-leak-add:before{content:"\e836"}.mdi-image-leak-remove:before{content:"\e837"}.mdi-image-lens:before{content:"\e838"}.mdi-image-looks-3:before{content:"\e839"}.mdi-image-looks-4:before{content:"\e83a"}.mdi-image-looks-5:before{content:"\e83b"}.mdi-image-looks-6:before{content:"\e83c"}.mdi-image-looks-one:before{content:"\e83d"}.mdi-image-looks-two:before{content:"\e83e"}.mdi-image-looks:before{content:"\e83f"}.mdi-image-loupe:before{content:"\e840"}.mdi-image-movie-creation:before{content:"\e841"}.mdi-image-nature-people:before{content:"\e842"}.mdi-image-nature:before{content:"\e843"}.mdi-image-navigate-before:before{content:"\e844"}.mdi-image-navigate-next:before{content:"\e845"}.mdi-image-palette:before{content:"\e846"}.mdi-image-panorama-fisheye:before{content:"\e847"}.mdi-image-panorama-horizontal:before{content:"\e848"}.mdi-image-panorama-vertical:before{content:"\e849"}.mdi-image-panorama-wide-angle:before{content:"\e84a"}.mdi-image-panorama:before{content:"\e84b"}.mdi-image-photo-album:before{content:"\e84c"}.mdi-image-photo-camera:before{content:"\e84d"}.mdi-image-photo-library:before{content:"\e84e"}.mdi-image-photo:before{content:"\e84f"}.mdi-image-portrait:before{content:"\e850"}.mdi-image-remove-red-eye:before{content:"\e851"}.mdi-image-rotate-left:before{content:"\e852"}.mdi-image-rotate-right:before{content:"\e853"}.mdi-image-slideshow:before{content:"\e854"}.mdi-image-straighten:before{content:"\e855"}.mdi-image-style:before{content:"\e856"}.mdi-image-switch-camera:before{content:"\e857"}.mdi-image-switch-video:before{content:"\e858"}.mdi-image-tag-faces:before{content:"\e859"}.mdi-image-texture:before{content:"\e85a"}.mdi-image-timelapse:before{content:"\e85b"}.mdi-image-timer-3:before{content:"\e85c"}.mdi-image-timer-10:before{content:"\e85d"}.mdi-image-timer-auto:before{content:"\e85e"}.mdi-image-timer-off:before{content:"\e85f"}.mdi-image-timer:before{content:"\e860"}.mdi-image-tonality:before{content:"\e861"}.mdi-image-transform:before{content:"\e862"}.mdi-image-tune:before{content:"\e863"}.mdi-image-wb-auto:before{content:"\e864"}.mdi-image-wb-cloudy:before{content:"\e865"}.mdi-image-wb-incandescent:before{content:"\e866"}.mdi-image-wb-irradescent:before{content:"\e867"}.mdi-image-wb-sunny:before{content:"\e868"}.mdi-maps-beenhere:before{content:"\e869"}.mdi-maps-directions-bike:before{content:"\e86a"}.mdi-maps-directions-bus:before{content:"\e86b"}.mdi-maps-directions-car:before{content:"\e86c"}.mdi-maps-directions-ferry:before{content:"\e86d"}.mdi-maps-directions-subway:before{content:"\e86e"}.mdi-maps-directions-train:before{content:"\e86f"}.mdi-maps-directions-transit:before{content:"\e870"}.mdi-maps-directions-walk:before{content:"\e871"}.mdi-maps-directions:before{content:"\e872"}.mdi-maps-flight:before{content:"\e873"}.mdi-maps-hotel:before{content:"\e874"}.mdi-maps-layers-clear:before{content:"\e875"}.mdi-maps-layers:before{content:"\e876"}.mdi-maps-local-airport:before{content:"\e877"}.mdi-maps-local-atm:before{content:"\e878"}.mdi-maps-local-attraction:before{content:"\e879"}.mdi-maps-local-bar:before{content:"\e87a"}.mdi-maps-local-cafe:before{content:"\e87b"}.mdi-maps-local-car-wash:before{content:"\e87c"}.mdi-maps-local-convenience-store:before{content:"\e87d"}.mdi-maps-local-drink:before{content:"\e87e"}.mdi-maps-local-florist:before{content:"\e87f"}.mdi-maps-local-gas-station:before{content:"\e880"}.mdi-maps-local-grocery-store:before{content:"\e881"}.mdi-maps-local-hospital:before{content:"\e882"}.mdi-maps-local-hotel:before{content:"\e883"}.mdi-maps-local-laundry-service:before{content:"\e884"}.mdi-maps-local-library:before{content:"\e885"}.mdi-maps-local-mall:before{content:"\e886"}.mdi-maps-local-movies:before{content:"\e887"}.mdi-maps-local-offer:before{content:"\e888"}.mdi-maps-local-parking:before{content:"\e889"}.mdi-maps-local-pharmacy:before{content:"\e88a"}.mdi-maps-local-phone:before{content:"\e88b"}.mdi-maps-local-pizza:before{content:"\e88c"}.mdi-maps-local-play:before{content:"\e88d"}.mdi-maps-local-post-office:before{content:"\e88e"}.mdi-maps-local-print-shop:before{content:"\e88f"}.mdi-maps-local-restaurant:before{content:"\e890"}.mdi-maps-local-see:before{content:"\e891"}.mdi-maps-local-shipping:before{content:"\e892"}.mdi-maps-local-taxi:before{content:"\e893"}.mdi-maps-location-history:before{content:"\e894"}.mdi-maps-map:before{content:"\e895"}.mdi-maps-my-location:before{content:"\e896"}.mdi-maps-navigation:before{content:"\e897"}.mdi-maps-pin-drop:before{content:"\e898"}.mdi-maps-place:before{content:"\e899"}.mdi-maps-rate-review:before{content:"\e89a"}.mdi-maps-restaurant-menu:before{content:"\e89b"}.mdi-maps-satellite:before{content:"\e89c"}.mdi-maps-store-mall-directory:before{content:"\e89d"}.mdi-maps-terrain:before{content:"\e89e"}.mdi-maps-traffic:before{content:"\e89f"}.mdi-navigation-apps:before{content:"\e8a0"}.mdi-navigation-arrow-back:before{content:"\e8a1"}.mdi-navigation-arrow-drop-down-circle:before{content:"\e8a2"}.mdi-navigation-arrow-drop-down:before{content:"\e8a3"}.mdi-navigation-arrow-drop-up:before{content:"\e8a4"}.mdi-navigation-arrow-forward:before{content:"\e8a5"}.mdi-navigation-cancel:before{content:"\e8a6"}.mdi-navigation-check:before{content:"\e8a7"}.mdi-navigation-chevron-left:before{content:"\e8a8"}.mdi-navigation-chevron-right:before{content:"\e8a9"}.mdi-navigation-close:before{content:"\e8aa"}.mdi-navigation-expand-less:before{content:"\e8ab"}.mdi-navigation-expand-more:before{content:"\e8ac"}.mdi-navigation-fullscreen-exit:before{content:"\e8ad"}.mdi-navigation-fullscreen:before{content:"\e8ae"}.mdi-navigation-menu:before{content:"\e8af"}.mdi-navigation-more-horiz:before{content:"\e8b0"}.mdi-navigation-more-vert:before{content:"\e8b1"}.mdi-navigation-refresh:before{content:"\e8b2"}.mdi-navigation-unfold-less:before{content:"\e8b3"}.mdi-navigation-unfold-more:before{content:"\e8b4"}.mdi-notification-adb:before{content:"\e8b5"}.mdi-notification-bluetooth-audio:before{content:"\e8b6"}.mdi-notification-disc-full:before{content:"\e8b7"}.mdi-notification-dnd-forwardslash:before{content:"\e8b8"}.mdi-notification-do-not-disturb:before{content:"\e8b9"}.mdi-notification-drive-eta:before{content:"\e8ba"}.mdi-notification-event-available:before{content:"\e8bb"}.mdi-notification-event-busy:before{content:"\e8bc"}.mdi-notification-event-note:before{content:"\e8bd"}.mdi-notification-folder-special:before{content:"\e8be"}.mdi-notification-mms:before{content:"\e8bf"}.mdi-notification-more:before{content:"\e8c0"}.mdi-notification-network-locked:before{content:"\e8c1"}.mdi-notification-phone-bluetooth-speaker:before{content:"\e8c2"}.mdi-notification-phone-forwarded:before{content:"\e8c3"}.mdi-notification-phone-in-talk:before{content:"\e8c4"}.mdi-notification-phone-locked:before{content:"\e8c5"}.mdi-notification-phone-missed:before{content:"\e8c6"}.mdi-notification-phone-paused:before{content:"\e8c7"}.mdi-notification-play-download:before{content:"\e8c8"}.mdi-notification-play-install:before{content:"\e8c9"}.mdi-notification-sd-card:before{content:"\e8ca"}.mdi-notification-sim-card-alert:before{content:"\e8cb"}.mdi-notification-sms-failed:before{content:"\e8cc"}.mdi-notification-sms:before{content:"\e8cd"}.mdi-notification-sync-disabled:before{content:"\e8ce"}.mdi-notification-sync-problem:before{content:"\e8cf"}.mdi-notification-sync:before{content:"\e8d0"}.mdi-notification-system-update:before{content:"\e8d1"}.mdi-notification-tap-and-play:before{content:"\e8d2"}.mdi-notification-time-to-leave:before{content:"\e8d3"}.mdi-notification-vibration:before{content:"\e8d4"}.mdi-notification-voice-chat:before{content:"\e8d5"}.mdi-notification-vpn-lock:before{content:"\e8d6"}.mdi-social-cake:before{content:"\e8d7"}.mdi-social-domain:before{content:"\e8d8"}.mdi-social-group-add:before{content:"\e8d9"}.mdi-social-group:before{content:"\e8da"}.mdi-social-location-city:before{content:"\e8db"}.mdi-social-mood:before{content:"\e8dc"}.mdi-social-notifications-none:before{content:"\e8dd"}.mdi-social-notifications-off:before{content:"\e8de"}.mdi-social-notifications-on:before{content:"\e8df"}.mdi-social-notifications-paused:before{content:"\e8e0"}.mdi-social-notifications:before{content:"\e8e1"}.mdi-social-pages:before{content:"\e8e2"}.mdi-social-party-mode:before{content:"\e8e3"}.mdi-social-people-outline:before{content:"\e8e4"}.mdi-social-people:before{content:"\e8e5"}.mdi-social-person-add:before{content:"\e8e6"}.mdi-social-person-outline:before{content:"\e8e7"}.mdi-social-person:before{content:"\e8e8"}.mdi-social-plus-one:before{content:"\e8e9"}.mdi-social-poll:before{content:"\e8ea"}.mdi-social-public:before{content:"\e8eb"}.mdi-social-school:before{content:"\e8ec"}.mdi-social-share:before{content:"\e8ed"}.mdi-social-whatshot:before{content:"\e8ee"}.mdi-toggle-check-box-outline-blank:before{content:"\e8ef"}.mdi-toggle-check-box:before{content:"\e8f0"}.mdi-toggle-radio-button-off:before{content:"\e8f1"}.mdi-toggle-radio-button-on:before{content:"\e8f2"}.mdi-toggle-star-half:before{content:"\e8f3"}.mdi-toggle-star-outline:before{content:"\e8f4"}.mdi-toggle-star:before{content:"\e8f5"}.container{margin:0 auto;max-width:1280px;width:90%}@media only screen and (min-width : 601px){.container{width:85%}}@media only screen and (min-width : 993px){.container{width:70%}}.container .row{margin-left:-0.75rem;margin-right:-0.75rem}.section{padding-top:1rem;padding-bottom:1rem}.section.no-pad{padding:0}.section.no-pad-bot{padding-bottom:0}.section.no-pad-top{padding-top:0}.row{margin-left:auto;margin-right:auto;margin-bottom:10px}.row:after{content:"";display:table;clear:both}.row .col{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 0.75rem}.row .col[class*="push-"],.row .col[class*="pull-"]{position:relative}.row .col.s1{width:8.33333%;margin-left:0}.row .col.offset-s1{margin-left:8.33333%}.row .col.pull-s1{right:8.33333%}.row .col.push-s1{left:8.33333%}.row .col.s2{width:16.66667%;margin-left:0}.row .col.offset-s2{margin-left:16.66667%}.row .col.pull-s2{right:16.66667%}.row .col.push-s2{left:16.66667%}.row .col.s3{width:25%;margin-left:0}.row .col.offset-s3{margin-left:25%}.row .col.pull-s3{right:25%}.row .col.push-s3{left:25%}.row .col.s4{width:33.33333%;margin-left:0}.row .col.offset-s4{margin-left:33.33333%}.row .col.pull-s4{right:33.33333%}.row .col.push-s4{left:33.33333%}.row .col.s5{width:41.66667%;margin-left:0}.row .col.offset-s5{margin-left:41.66667%}.row .col.pull-s5{right:41.66667%}.row .col.push-s5{left:41.66667%}.row .col.s6{width:50%;margin-left:0}.row .col.offset-s6{margin-left:50%}.row .col.pull-s6{right:50%}.row .col.push-s6{left:50%}.row .col.s7{width:58.33333%;margin-left:0}.row .col.offset-s7{margin-left:58.33333%}.row .col.pull-s7{right:58.33333%}.row .col.push-s7{left:58.33333%}.row .col.s8{width:66.66667%;margin-left:0}.row .col.offset-s8{margin-left:66.66667%}.row .col.pull-s8{right:66.66667%}.row .col.push-s8{left:66.66667%}.row .col.s9{width:75%;margin-left:0}.row .col.offset-s9{margin-left:75%}.row .col.pull-s9{right:75%}.row .col.push-s9{left:75%}.row .col.s10{width:83.33333%;margin-left:0}.row .col.offset-s10{margin-left:83.33333%}.row .col.pull-s10{right:83.33333%}.row .col.push-s10{left:83.33333%}.row .col.s11{width:91.66667%;margin-left:0}.row .col.offset-s11{margin-left:91.66667%}.row .col.pull-s11{right:91.66667%}.row .col.push-s11{left:91.66667%}.row .col.s12{width:100%;margin-left:0}.row .col.offset-s12{margin-left:100%}.row .col.pull-s12{right:100%}.row .col.push-s12{left:100%}@media only screen and (min-width : 601px){.row .col.m1{width:8.33333%;margin-left:0}.row .col.offset-m1{margin-left:8.33333%}.row .col.pull-m1{right:8.33333%}.row .col.push-m1{left:8.33333%}.row .col.m2{width:16.66667%;margin-left:0}.row .col.offset-m2{margin-left:16.66667%}.row .col.pull-m2{right:16.66667%}.row .col.push-m2{left:16.66667%}.row .col.m3{width:25%;margin-left:0}.row .col.offset-m3{margin-left:25%}.row .col.pull-m3{right:25%}.row .col.push-m3{left:25%}.row .col.m4{width:33.33333%;margin-left:0}.row .col.offset-m4{margin-left:33.33333%}.row .col.pull-m4{right:33.33333%}.row .col.push-m4{left:33.33333%}.row .col.m5{width:41.66667%;margin-left:0}.row .col.offset-m5{margin-left:41.66667%}.row .col.pull-m5{right:41.66667%}.row .col.push-m5{left:41.66667%}.row .col.m6{width:50%;margin-left:0}.row .col.offset-m6{margin-left:50%}.row .col.pull-m6{right:50%}.row .col.push-m6{left:50%}.row .col.m7{width:58.33333%;margin-left:0}.row .col.offset-m7{margin-left:58.33333%}.row .col.pull-m7{right:58.33333%}.row .col.push-m7{left:58.33333%}.row .col.m8{width:66.66667%;margin-left:0}.row .col.offset-m8{margin-left:66.66667%}.row .col.pull-m8{right:66.66667%}.row .col.push-m8{left:66.66667%}.row .col.m9{width:75%;margin-left:0}.row .col.offset-m9{margin-left:75%}.row .col.pull-m9{right:75%}.row .col.push-m9{left:75%}.row .col.m10{width:83.33333%;margin-left:0}.row .col.offset-m10{margin-left:83.33333%}.row .col.pull-m10{right:83.33333%}.row .col.push-m10{left:83.33333%}.row .col.m11{width:91.66667%;margin-left:0}.row .col.offset-m11{margin-left:91.66667%}.row .col.pull-m11{right:91.66667%}.row .col.push-m11{left:91.66667%}.row .col.m12{width:100%;margin-left:0}.row .col.offset-m12{margin-left:100%}.row .col.pull-m12{right:100%}.row .col.push-m12{left:100%}}@media only screen and (min-width : 993px){.row .col.l1{width:8.33333%;margin-left:0}.row .col.offset-l1{margin-left:8.33333%}.row .col.pull-l1{right:8.33333%}.row .col.push-l1{left:8.33333%}.row .col.l2{width:16.66667%;margin-left:0}.row .col.offset-l2{margin-left:16.66667%}.row .col.pull-l2{right:16.66667%}.row .col.push-l2{left:16.66667%}.row .col.l3{width:25%;margin-left:0}.row .col.offset-l3{margin-left:25%}.row .col.pull-l3{right:25%}.row .col.push-l3{left:25%}.row .col.l4{width:33.33333%;margin-left:0}.row .col.offset-l4{margin-left:33.33333%}.row .col.pull-l4{right:33.33333%}.row .col.push-l4{left:33.33333%}.row .col.l5{width:41.66667%;margin-left:0}.row .col.offset-l5{margin-left:41.66667%}.row .col.pull-l5{right:41.66667%}.row .col.push-l5{left:41.66667%}.row .col.l6{width:50%;margin-left:0}.row .col.offset-l6{margin-left:50%}.row .col.pull-l6{right:50%}.row .col.push-l6{left:50%}.row .col.l7{width:58.33333%;margin-left:0}.row .col.offset-l7{margin-left:58.33333%}.row .col.pull-l7{right:58.33333%}.row .col.push-l7{left:58.33333%}.row .col.l8{width:66.66667%;margin-left:0}.row .col.offset-l8{margin-left:66.66667%}.row .col.pull-l8{right:66.66667%}.row .col.push-l8{left:66.66667%}.row .col.l9{width:75%;margin-left:0}.row .col.offset-l9{margin-left:75%}.row .col.pull-l9{right:75%}.row .col.push-l9{left:75%}.row .col.l10{width:83.33333%;margin-left:0}.row .col.offset-l10{margin-left:83.33333%}.row .col.pull-l10{right:83.33333%}.row .col.push-l10{left:83.33333%}.row .col.l11{width:91.66667%;margin-left:0}.row .col.offset-l11{margin-left:91.66667%}.row .col.pull-l11{right:91.66667%}.row .col.push-l11{left:91.66667%}.row .col.l12{width:100%;margin-left:0}.row .col.offset-l12{margin-left:100%}.row .col.pull-l12{right:100%}.row .col.push-l12{left:100%}}nav{color:#fff;background-color:#780000;width:100%;height:56px;line-height:56px}nav a{color:#fff}nav .nav-wrapper{position:relative;height:100%}nav .nav-wrapper i{display:block;font-size:2rem}@media only screen and (min-width : 993px){nav a.button-collapse{display:none}}nav .button-collapse{float:left;position:relative;z-index:1;height:56px}nav .button-collapse i{font-size:2.7rem;height:56px;line-height:56px}nav .brand-logo{position:absolute;color:#fff;display:inline-block;font-size:2.1rem;padding:0;white-space:nowrap}nav .brand-logo.center{left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%)}@media only screen and (max-width : 992px){nav .brand-logo{left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%);}nav .brand-logo.left,nav .brand-logo.right{padding:0;-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none}nav .brand-logo.left{left:0.5rem}nav .brand-logo.right{right:0.5rem;left:auto}}nav .brand-logo.right{right:0.5rem;padding:0}nav ul{margin:0}nav ul li{-webkit-transition:background-color .3s;-moz-transition:background-color .3s;-o-transition:background-color .3s;-ms-transition:background-color .3s;transition:background-color .3s;float:left;padding:0}nav ul li:hover,nav ul li.active{background-color:rgba(0,0,0,0.1)}nav ul a{font-size:1rem;color:#fff;display:block;padding:0 15px}nav ul.left{float:left}nav .input-field{margin:0}nav .input-field input{height:100%;font-size:1.2rem;border:none;padding-left:2rem}nav .input-field input:focus,nav .input-field input[type=text]:valid,nav .input-field input[type=password]:valid,nav .input-field input[type=email]:valid,nav .input-field input[type=url]:valid,nav .input-field input[type=date]:valid{border:none;box-shadow:none}nav .input-field label{top:0;left:0}nav .input-field label i{color:rgba(255,255,255,0.7);-webkit-transition:color .3s;-moz-transition:color .3s;-o-transition:color .3s;-ms-transition:color .3s;transition:color .3s}nav .input-field label.active i{color:#fff}nav .input-field label.active{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}.navbar-fixed{position:relative;height:56px;z-index:998}.navbar-fixed nav{position:fixed}@media only screen and (min-width : 601px){nav,nav .nav-wrapper i,nav a.button-collapse,nav a.button-collapse i{height:64px;line-height:64px}.navbar-fixed{height:64px}}@font-face{font-family:"Roboto";src:local(Roboto Thin),url("../font/roboto/Roboto-Thin.woff2") format("woff2"),url("../font/roboto/Roboto-Thin.woff") format("woff"),url("../font/roboto/Roboto-Thin.ttf") format("truetype");font-weight:200;}@font-face{font-family:"Roboto";src:local(Roboto Light),url("../font/roboto/Roboto-Light.woff2") format("woff2"),url("../font/roboto/Roboto-Light.woff") format("woff"),url("../font/roboto/Roboto-Light.ttf") format("truetype");font-weight:300;}@font-face{font-family:"Roboto";src:local(Roboto Regular),url("../font/roboto/Roboto-Regular.woff2") format("woff2"),url("../font/roboto/Roboto-Regular.woff") format("woff"),url("../font/roboto/Roboto-Regular.ttf") format("truetype");font-weight:400;}@font-face{font-family:"Roboto";src:url("../font/roboto/Roboto-Medium.woff2") format("woff2"),url("../font/roboto/Roboto-Medium.woff") format("woff"),url("../font/roboto/Roboto-Medium.ttf") format("truetype");font-weight:500;}@font-face{font-family:"Roboto";src:url("../font/roboto/Roboto-Bold.woff2") format("woff2"),url("../font/roboto/Roboto-Bold.woff") format("woff"),url("../font/roboto/Roboto-Bold.ttf") format("truetype");font-weight:700;}a{text-decoration:none}html{line-height:1.5;font-family:"Roboto", sans-serif;font-weight:normal;color:rgba(0,0,0,0.87)}@media only screen and (min-width: 0){html{font-size:14px;}}@media only screen and (min-width: 992px){html{font-size:14.5px;}}@media only screen and (min-width: 1200px){html{font-size:15px;}}h1,h2,h3,h4,h5,h6{font-weight:400;line-height:1.1}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit}h1{font-size:4.2rem;line-height:110%;margin:2.1rem 0 1.68rem 0}h2{font-size:3.56rem;line-height:110%;margin:1.78rem 0 1.424rem 0}h3{font-size:2.92rem;line-height:110%;margin:1.46rem 0 1.168rem 0}h4{font-size:2.28rem;line-height:110%;margin:1.14rem 0 0.912rem 0}h5{font-size:1.64rem;line-height:110%;margin:0.82rem 0 0.656rem 0}h6{font-size:1rem;line-height:110%;margin:0.5rem 0 0.4rem 0}em{font-style:italic}strong{font-weight:500}small{font-size:75%}.light,footer.page-footer .footer-copyright{font-weight:300}.thin{font-weight:200}.flow-text{font-weight:300}@media only screen and (min-width: 360px){.flow-text{font-size:1.2rem;}}@media only screen and (min-width: 390px){.flow-text{font-size:1.224rem;}}@media only screen and (min-width: 420px){.flow-text{font-size:1.248rem;}}@media only screen and (min-width: 450px){.flow-text{font-size:1.272rem;}}@media only screen and (min-width: 480px){.flow-text{font-size:1.296rem;}}@media only screen and (min-width: 510px){.flow-text{font-size:1.32rem;}}@media only screen and (min-width: 540px){.flow-text{font-size:1.344rem;}}@media only screen and (min-width: 570px){.flow-text{font-size:1.368rem;}}@media only screen and (min-width: 600px){.flow-text{font-size:1.392rem;}}@media only screen and (min-width: 630px){.flow-text{font-size:1.416rem;}}@media only screen and (min-width: 660px){.flow-text{font-size:1.44rem;}}@media only screen and (min-width: 690px){.flow-text{font-size:1.464rem;}}@media only screen and (min-width: 720px){.flow-text{font-size:1.488rem;}}@media only screen and (min-width: 750px){.flow-text{font-size:1.512rem;}}@media only screen and (min-width: 780px){.flow-text{font-size:1.536rem;}}@media only screen and (min-width: 810px){.flow-text{font-size:1.56rem;}}@media only screen and (min-width: 840px){.flow-text{font-size:1.584rem;}}@media only screen and (min-width: 870px){.flow-text{font-size:1.608rem;}}@media only screen and (min-width: 900px){.flow-text{font-size:1.632rem;}}@media only screen and (min-width: 930px){.flow-text{font-size:1.656rem;}}@media only screen and (min-width: 960px){.flow-text{font-size:1.68rem;}}@media only screen and (max-width: 360px){.flow-text{font-size:1.2rem;}}.card-panel{transition:box-shadow .25s;padding:20px;margin:0.5rem 0 1rem 0;border-radius:2px;background-color:#fff}.card{position:relative;margin:0.5rem 0 1rem 0;background-color:#fff;transition:box-shadow .25s;border-radius:2px}.card .card-title{font-size:24px;font-weight:300}.card .card-title.activator{cursor:pointer}.card.small,.card.medium,.card.large{position:relative}.card.small .card-image,.card.medium .card-image,.card.large .card-image{max-height:60%;overflow:hidden}.card.small .card-content,.card.medium .card-content,.card.large .card-content{max-height:40%;overflow:hidden}.card.small .card-action,.card.medium .card-action,.card.large .card-action{position:absolute;bottom:0;left:0;right:0;z-index:1;background-color:inherit}.card.small{height:300px}.card.medium{height:400px}.card.large{height:500px}.card .card-image{position:relative}.card .card-image img{display:block;border-radius:2px 2px 0 0;position:relative;left:0;right:0;top:0;bottom:0;width:100%}.card .card-image .card-title{color:#fff;position:absolute;bottom:0;left:0;padding:20px}.card .card-content{padding:20px;border-radius:0 0 2px 2px}.card .card-content p{margin:0;color:inherit}.card .card-content .card-title{line-height:48px}.card .card-action{border-top:1px solid rgba(160,160,160,0.2);padding:20px}.card .card-action a{color:#ffab40;margin-right:20px;-webkit-transition:color .3s ease;-moz-transition:color .3s ease;-o-transition:color .3s ease;-ms-transition:color .3s ease;transition:color .3s ease;text-transform:uppercase}.card .card-action a:hover{color:#ffd8a6}.card .card-reveal{padding:20px;position:absolute;background-color:#fff;width:100%;overflow-y:auto;top:100%;height:100%;z-index:1;display:none}.card .card-reveal .card-title{cursor:pointer;display:block}#toast-container{display:block;position:fixed;z-index:10000}@media only screen and (max-width : 600px){#toast-container{min-width:100%;bottom:0%;}}@media only screen and (min-width : 601px) and (max-width : 992px){#toast-container{min-width:30%;left:5%;right:5%;bottom:7%;}}@media only screen and (min-width : 993px){#toast-container{min-width:8%;top:10%;right:7%;left:7%;}}.toast{border-radius:2px;top:0;width:auto;clear:both;margin-top:10px;position:relative;max-width:100%;height:auto;min-height:48px;line-height:1.5em;word-break:break-all;background-color:#323232;padding:10px 25px;font-size:1.1rem;font-weight:300;color:#fff;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}.toast .btn,.toast .btn-large,.toast .btn-flat{margin:0;margin-left:3rem}.toast.rounded{border-radius:24px}@media only screen and (max-width : 600px){.toast{width:100%;border-radius:0;}}@media only screen and (min-width : 601px) and (max-width : 992px){.toast{float:left;}}@media only screen and (min-width : 993px){.toast{float:right;}}.tabs{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;position:relative;height:48px;background-color:#fff;margin:0 auto;width:100%;white-space:nowrap}.tabs .tab{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;display:block;float:left;text-align:center;line-height:48px;height:48px;padding:0;margin:0;text-transform:uppercase;text-overflow:ellipsis;overflow:hidden;letter-spacing:.8px;width:15%;min-width:80px}.tabs .tab a{color:#780000;display:block;width:100%;height:100%;text-overflow:ellipsis;overflow:hidden;-webkit-transition:color .28s ease;-moz-transition:color .28s ease;-o-transition:color .28s ease;-ms-transition:color .28s ease;transition:color .28s ease}.tabs .tab a:hover{color:#f9c9cb}.tabs .tab.disabled a{color:#f9c9cb;cursor:default}.tabs .indicator{position:absolute;bottom:0;height:2px;background-color:#f6b2b5;will-change:left, right}.hide-tab-scrollbar{position:relative;height:48px;overflow:hidden}.hide-tab-scrollbar .tabs{overflow-x:scroll;overflow-y:hidden}.scrollbar-measure{width:100px;height:100px;overflow:scroll;position:absolute;top:-9999px}.material-tooltip{padding:10px 8px;font-size:1rem;z-index:2000;background-color:transparent;border-radius:2px;color:#fff;min-height:36px;line-height:120%;opacity:0;display:none;position:absolute;text-align:center;max-width:calc(100% - 4px);overflow:hidden;left:0;top:0;will-change:top, left}.backdrop{position:absolute;opacity:0;display:none;height:7px;width:14px;border-radius:0 0 14px 14px;background-color:#323232;z-index:-1;-webkit-transform-origin:50% 10%;-moz-transform-origin:50% 10%;-ms-transform-origin:50% 10%;-o-transform-origin:50% 10%;transform-origin:50% 10%;will-change:transform, opacity}.btn,.btn-large,.btn-flat{border:none;border-radius:2px;display:inline-block;height:36px;line-height:36px;outline:0;padding:0 2rem;text-transform:uppercase;vertical-align:middle;-webkit-tap-highlight-color:transparent}.btn.disabled,.disabled.btn-large,.btn-floating.disabled,.btn-large.disabled,.btn:disabled,.btn-large:disabled,.btn-large:disabled,.btn-floating:disabled{background-color:#DFDFDF !important;box-shadow:none;color:#9F9F9F !important;cursor:default}.btn.disabled *,.disabled.btn-large *,.btn-floating.disabled *,.btn-large.disabled *,.btn:disabled *,.btn-large:disabled *,.btn-large:disabled *,.btn-floating:disabled *{pointer-events:none}.btn.disabled:hover,.disabled.btn-large:hover,.btn-floating.disabled:hover,.btn-large.disabled:hover,.btn:disabled:hover,.btn-large:disabled:hover,.btn-large:disabled:hover,.btn-floating:disabled:hover{background-color:#DFDFDF;color:#9F9F9F}.btn i,.btn-large i,.btn-floating i,.btn-large i,.btn-flat i{font-size:1.3rem;line-height:inherit}.btn,.btn-large{text-decoration:none;color:#fff;background-color:#669BBD;text-align:center;letter-spacing:.5px;-webkit-transition:.2s ease-out;-moz-transition:.2s ease-out;-o-transition:.2s ease-out;-ms-transition:.2s ease-out;transition:.2s ease-out;cursor:pointer}.btn:hover,.btn-large:hover{background-color:#2bbbad}.btn-floating{display:inline-block;color:#fff;position:relative;overflow:hidden;z-index:1;width:37px;height:37px;line-height:37px;padding:0;background-color:#669BBD;border-radius:50%;transition:.3s;cursor:pointer;vertical-align:middle}.btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:37px}.btn-floating:before{border-radius:0}.btn-floating.btn-large{width:55.5px;height:55.5px}.btn-floating.btn-large i{line-height:55.5px}button.btn-floating{border:none}.fixed-action-btn{position:fixed;right:23px;bottom:23px;padding-top:15px;margin-bottom:0;z-index:998}.fixed-action-btn.active ul{visibility:visible}.fixed-action-btn.horizontal{padding:0 0 0 15px}.fixed-action-btn.horizontal ul{text-align:right;right:64px;top:50%;transform:translateY(-50%);height:100%;left:initial;width:500px}.fixed-action-btn.horizontal ul li{display:inline-block;margin:15px 15px 0 0}.fixed-action-btn ul{left:0;right:0;text-align:center;position:absolute;bottom:64px;margin:0;visibility:hidden}.fixed-action-btn ul li{margin-bottom:15px}.fixed-action-btn ul a.btn-floating{opacity:0}.btn-flat{box-shadow:none;background-color:transparent;color:#343434;cursor:pointer}.btn-flat.disabled{color:#b3b3b3;cursor:default}.btn-large{height:54px;line-height:56px}.btn-large i{font-size:1.6rem}.btn-block{display:block}.dropdown-content{background-color:#fff;margin:0;display:none;min-width:100px;max-height:650px;overflow-y:auto;opacity:0;position:absolute;z-index:999;will-change:width, height}.dropdown-content li{clear:both;color:rgba(0,0,0,0.87);cursor:pointer;min-height:50px;line-height:1.5rem;width:100%;text-align:left;text-transform:none}.dropdown-content li:hover,.dropdown-content li.active,.dropdown-content li.selected{background-color:#eee}.dropdown-content li.active.selected{background-color:#e1e1e1}.dropdown-content li.divider{min-height:0;height:1px}.dropdown-content li>a,.dropdown-content li>span{font-size:16px;color:#669BBD;display:block;line-height:22px;padding:14px 16px}.dropdown-content li>span>label{top:1px;left:3px;height:18px}.dropdown-content li>a>i{height:inherit;line-height:inherit}/*! - * Waves v0.6.0 - * http://fian.my.id/Waves - * - * Copyright 2014 Alfiana E. Sibuea and other contributors - * Released under the MIT license - * https://github.com/fians/Waves/blob/master/LICENSE - */.waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle;z-index:1;will-change:opacity, transform;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;-ms-transition:all .3s ease-out;transition:all .3s ease-out}.waves-effect .waves-ripple{position:absolute;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;opacity:0;background:rgba(0,0,0,0.2);-webkit-transition:all 0.7s ease-out;-moz-transition:all 0.7s ease-out;-o-transition:all 0.7s ease-out;-ms-transition:all 0.7s ease-out;transition:all 0.7s ease-out;-webkit-transition-property:-webkit-transform, opacity;-moz-transition-property:-moz-transform, opacity;-o-transition-property:-o-transform, opacity;transition-property:transform, opacity;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);pointer-events:none}.waves-effect.waves-light .waves-ripple{background-color:rgba(255,255,255,0.45)}.waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,0.7)}.waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,0.7)}.waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,0.7)}.waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,0.7)}.waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,0.7)}.waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,0.7)}.waves-effect input[type="button"],.waves-effect input[type="reset"],.waves-effect input[type="submit"]{border:0;font-style:normal;font-size:inherit;text-transform:inherit;background:none}.waves-notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;-ms-transition:none !important;transition:none !important}.waves-circle{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(circle, white 100%, black 100%)}.waves-input-wrapper{border-radius:0.2em;vertical-align:bottom}.waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.waves-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%;-webkit-mask-image:none}.waves-block{display:block}a.waves-effect .waves-ripple{z-index:-1}.modal{display:none;position:fixed;left:0;right:0;background-color:#fafafa;padding:0;max-height:70%;width:55%;margin:auto;overflow-y:auto;border-radius:2px;will-change:top, opacity}@media only screen and (max-width : 992px){.modal{width:80%;}}.modal h1,.modal h2,.modal h3,.modal h4{margin-top:0}.modal .modal-content{padding:24px}.modal .modal-close{cursor:pointer}.modal .modal-footer{border-radius:0 0 2px 2px;background-color:#fafafa;padding:4px 6px;height:56px;width:100%}.modal .modal-footer .btn,.modal .modal-footer .btn-large,.modal .modal-footer .btn-flat{float:right;margin:6px 0}.lean-overlay{position:fixed;z-index:999;top:-100px;left:0;bottom:0;right:0;height:125%;width:100%;background:#000;display:none;will-change:opacity}.modal.modal-fixed-footer{padding:0;height:70%}.modal.modal-fixed-footer .modal-content{position:absolute;height:calc(100% - 56px);max-height:100%;width:100%;overflow-y:auto}.modal.modal-fixed-footer .modal-footer{border-top:1px solid rgba(0,0,0,0.1);position:absolute;bottom:0}.modal.bottom-sheet{top:auto;bottom:-100%;margin:0;width:100%;max-height:45%;border-radius:0;will-change:bottom, opacity}.collapsible{border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;margin:0.5rem 0 1rem 0}.collapsible-header{display:block;cursor:pointer;min-height:3rem;line-height:3rem;padding:0 1rem;background-color:#fff;border-bottom:1px solid #ddd}.collapsible-header i{width:2rem;font-size:1.6rem;line-height:3rem;display:block;float:left;text-align:center;margin-right:1rem}.collapsible-body{display:none;border-bottom:1px solid #ddd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.collapsible-body p{margin:0;padding:2rem}.side-nav .collapsible{border:none;box-shadow:none}.side-nav .collapsible li{padding:0}.side-nav .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;margin:0 1rem}.side-nav .collapsible-header i{line-height:inherit}.side-nav .collapsible-body{border:0;background-color:#fff}.side-nav .collapsible-body li a{margin:0 1rem 0 2rem}.collapsible.popout{border:none;box-shadow:none}.collapsible.popout>li{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);margin:0 24px;transition:margin .35s cubic-bezier(0.25, 0.46, 0.45, 0.94)}.collapsible.popout>li.active{box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);margin:16px 0}.chip{display:inline-block;height:32px;font-size:13px;font-weight:500;color:rgba(0,0,0,0.6);line-height:32px;padding:0 12px;border-radius:16px;background-color:#e4e4e4}.chip img{float:left;margin:0 8px 0 -12px;height:32px;width:32px;border-radius:50%}.chip i.material-icons{cursor:pointer;float:right;font-size:16px;line-height:32px;padding-left:8px}.materialboxed{display:block;cursor:zoom-in;position:relative;-webkit-transition:opacity .4s;-moz-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s;transition:opacity .4s}.materialboxed:hover{will-change:left, top, width, height}.materialboxed:hover:not(.active){opacity:.8}.materialboxed.active{cursor:zoom-out}#materialbox-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#292929;z-index:999;will-change:opacity}.materialbox-caption{position:fixed;display:none;color:#fff;line-height:50px;bottom:0;width:100%;text-align:center;padding:0% 15%;height:50px;z-index:1000;-webkit-font-smoothing:antialiased}select:focus{outline:1px solid #c9f3ef}button:focus{outline:none;background-color:#2ab7a9}label{font-size:0.8rem;color:#9e9e9e}::-webkit-input-placeholder{color:#d1d1d1}:-moz-placeholder{color:#d1d1d1}::-moz-placeholder{color:#d1d1d1}:-ms-input-placeholder{color:#d1d1d1}input[type=text],input[type=password],input[type=email],input[type=url],input[type=time],input[type=date],input[type=datetime-local],input[type=tel],input[type=number],input[type=search],textarea.materialize-textarea{background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;border-radius:0;outline:none;height:3rem;width:100%;font-size:1rem;margin:0 0 15px 0;padding:0;box-shadow:none;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;transition:all .3s}input[type=text]:disabled,input[type=text][readonly="readonly"],input[type=password]:disabled,input[type=password][readonly="readonly"],input[type=email]:disabled,input[type=email][readonly="readonly"],input[type=url]:disabled,input[type=url][readonly="readonly"],input[type=time]:disabled,input[type=time][readonly="readonly"],input[type=date]:disabled,input[type=date][readonly="readonly"],input[type=datetime-local]:disabled,input[type=datetime-local][readonly="readonly"],input[type=tel]:disabled,input[type=tel][readonly="readonly"],input[type=number]:disabled,input[type=number][readonly="readonly"],input[type=search]:disabled,input[type=search][readonly="readonly"],textarea.materialize-textarea:disabled,textarea.materialize-textarea[readonly="readonly"]{color:rgba(0,0,0,0.26);border-bottom:1px dotted rgba(0,0,0,0.26)}input[type=text]:disabled+label,input[type=text][readonly="readonly"]+label,input[type=password]:disabled+label,input[type=password][readonly="readonly"]+label,input[type=email]:disabled+label,input[type=email][readonly="readonly"]+label,input[type=url]:disabled+label,input[type=url][readonly="readonly"]+label,input[type=time]:disabled+label,input[type=time][readonly="readonly"]+label,input[type=date]:disabled+label,input[type=date][readonly="readonly"]+label,input[type=datetime-local]:disabled+label,input[type=datetime-local][readonly="readonly"]+label,input[type=tel]:disabled+label,input[type=tel][readonly="readonly"]+label,input[type=number]:disabled+label,input[type=number][readonly="readonly"]+label,input[type=search]:disabled+label,input[type=search][readonly="readonly"]+label,textarea.materialize-textarea:disabled+label,textarea.materialize-textarea[readonly="readonly"]+label{color:rgba(0,0,0,0.26)}input[type=text]:focus:not([readonly]),input[type=password]:focus:not([readonly]),input[type=email]:focus:not([readonly]),input[type=url]:focus:not([readonly]),input[type=time]:focus:not([readonly]),input[type=date]:focus:not([readonly]),input[type=datetime-local]:focus:not([readonly]),input[type=tel]:focus:not([readonly]),input[type=number]:focus:not([readonly]),input[type=search]:focus:not([readonly]),textarea.materialize-textarea:focus:not([readonly]){border-bottom:1px solid #669BBD;box-shadow:0 1px 0 0 #669BBD}input[type=text]:focus:not([readonly])+label,input[type=password]:focus:not([readonly])+label,input[type=email]:focus:not([readonly])+label,input[type=url]:focus:not([readonly])+label,input[type=time]:focus:not([readonly])+label,input[type=date]:focus:not([readonly])+label,input[type=datetime-local]:focus:not([readonly])+label,input[type=tel]:focus:not([readonly])+label,input[type=number]:focus:not([readonly])+label,input[type=search]:focus:not([readonly])+label,textarea.materialize-textarea:focus:not([readonly])+label{color:#669BBD}input[type=text].valid,input[type=text]:focus.valid,input[type=password].valid,input[type=password]:focus.valid,input[type=email].valid,input[type=email]:focus.valid,input[type=url].valid,input[type=url]:focus.valid,input[type=time].valid,input[type=time]:focus.valid,input[type=date].valid,input[type=date]:focus.valid,input[type=datetime-local].valid,input[type=datetime-local]:focus.valid,input[type=tel].valid,input[type=tel]:focus.valid,input[type=number].valid,input[type=number]:focus.valid,input[type=search].valid,input[type=search]:focus.valid,textarea.materialize-textarea.valid,textarea.materialize-textarea:focus.valid{border-bottom:1px solid #4CAF50;box-shadow:0 1px 0 0 #4CAF50}input[type=text].valid+label:after,input[type=text]:focus.valid+label:after,input[type=password].valid+label:after,input[type=password]:focus.valid+label:after,input[type=email].valid+label:after,input[type=email]:focus.valid+label:after,input[type=url].valid+label:after,input[type=url]:focus.valid+label:after,input[type=time].valid+label:after,input[type=time]:focus.valid+label:after,input[type=date].valid+label:after,input[type=date]:focus.valid+label:after,input[type=datetime-local].valid+label:after,input[type=datetime-local]:focus.valid+label:after,input[type=tel].valid+label:after,input[type=tel]:focus.valid+label:after,input[type=number].valid+label:after,input[type=number]:focus.valid+label:after,input[type=search].valid+label:after,input[type=search]:focus.valid+label:after,textarea.materialize-textarea.valid+label:after,textarea.materialize-textarea:focus.valid+label:after{content:attr(data-success);color:#4CAF50;opacity:1}input[type=text].invalid,input[type=text]:focus.invalid,input[type=password].invalid,input[type=password]:focus.invalid,input[type=email].invalid,input[type=email]:focus.invalid,input[type=url].invalid,input[type=url]:focus.invalid,input[type=time].invalid,input[type=time]:focus.invalid,input[type=date].invalid,input[type=date]:focus.invalid,input[type=datetime-local].invalid,input[type=datetime-local]:focus.invalid,input[type=tel].invalid,input[type=tel]:focus.invalid,input[type=number].invalid,input[type=number]:focus.invalid,input[type=search].invalid,input[type=search]:focus.invalid,textarea.materialize-textarea.invalid,textarea.materialize-textarea:focus.invalid{border-bottom:1px solid #F44336;box-shadow:0 1px 0 0 #F44336}input[type=text].invalid+label:after,input[type=text]:focus.invalid+label:after,input[type=password].invalid+label:after,input[type=password]:focus.invalid+label:after,input[type=email].invalid+label:after,input[type=email]:focus.invalid+label:after,input[type=url].invalid+label:after,input[type=url]:focus.invalid+label:after,input[type=time].invalid+label:after,input[type=time]:focus.invalid+label:after,input[type=date].invalid+label:after,input[type=date]:focus.invalid+label:after,input[type=datetime-local].invalid+label:after,input[type=datetime-local]:focus.invalid+label:after,input[type=tel].invalid+label:after,input[type=tel]:focus.invalid+label:after,input[type=number].invalid+label:after,input[type=number]:focus.invalid+label:after,input[type=search].invalid+label:after,input[type=search]:focus.invalid+label:after,textarea.materialize-textarea.invalid+label:after,textarea.materialize-textarea:focus.invalid+label:after{content:attr(data-error);color:#F44336;opacity:1}input[type=text]+label:after,input[type=password]+label:after,input[type=email]+label:after,input[type=url]+label:after,input[type=time]+label:after,input[type=date]+label:after,input[type=datetime-local]+label:after,input[type=tel]+label:after,input[type=number]+label:after,input[type=search]+label:after,textarea.materialize-textarea+label:after{display:block;content:"";position:absolute;top:65px;opacity:0;transition:.2s opacity ease-out,.2s color ease-out}.input-field{position:relative;margin-top:1rem}.input-field label{color:#9e9e9e;position:absolute;top:0.8rem;left:0.75rem;font-size:1rem;cursor:text;-webkit-transition:.2s ease-out;-moz-transition:.2s ease-out;-o-transition:.2s ease-out;-ms-transition:.2s ease-out;transition:.2s ease-out}.input-field label.active{font-size:0.8rem;-webkit-transform:translateY(-140%);-moz-transform:translateY(-140%);-ms-transform:translateY(-140%);-o-transform:translateY(-140%);transform:translateY(-140%)}.input-field .prefix{position:absolute;width:3rem;font-size:2rem;-webkit-transition:color .2s;-moz-transition:color .2s;-o-transition:color .2s;-ms-transition:color .2s;transition:color .2s}.input-field .prefix.active{color:#669BBD}.input-field .prefix ~ input,.input-field .prefix ~ textarea{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.input-field .prefix ~ textarea{padding-top:.8rem}.input-field .prefix ~ label{margin-left:3rem}@media only screen and (max-width : 992px){.input-field .prefix ~ input{width:86%;width:calc(100% - 3rem)}}@media only screen and (max-width : 600px){.input-field .prefix ~ input{width:80%;width:calc(100% - 3rem)}}.input-field input[type=search]{display:block;line-height:inherit;padding-left:4rem;width:calc(100% - 4rem)}.input-field input[type=search]:focus{background-color:#fff;border:0;box-shadow:none;color:#444}.input-field input[type=search]:focus+label i,.input-field input[type=search]:focus ~ .mdi-navigation-close,.input-field input[type=search]:focus ~ .material-icons{color:#444}.input-field input[type=search]+label{left:1rem}.input-field input[type=search] ~ .mdi-navigation-close,.input-field input[type=search] ~ .material-icons{position:absolute;top:0;right:1rem;color:transparent;cursor:pointer;font-size:2rem;transition:.3s color}textarea{width:100%;height:3rem;background-color:transparent}textarea.materialize-textarea{overflow-y:hidden;padding:1.6rem 0;resize:none;min-height:3rem}.hiddendiv{display:none;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;padding-top:1.2rem}[type="radio"]:not(:checked),[type="radio"]:checked{position:absolute;left:-9999px;visibility:hidden}[type="radio"]:not(:checked)+label,[type="radio"]:checked+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-transition:.28s ease;-moz-transition:.28s ease;-o-transition:.28s ease;-ms-transition:.28s ease;transition:.28s ease;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}[type="radio"]+label:before,[type="radio"]+label:after{content:'';position:absolute;left:0;top:0;margin:4px;width:16px;height:16px;z-index:0;-webkit-transition:.28s ease;-moz-transition:.28s ease;-o-transition:.28s ease;-ms-transition:.28s ease;transition:.28s ease}[type="radio"]:not(:checked)+label:before{border-radius:50%;border:2px solid #669BBC}[type="radio"]:not(:checked)+label:after{border-radius:50%;border:2px solid #669BBC;z-index:-1;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}[type="radio"]:checked+label:before{border-radius:50%;border:2px solid transparent}[type="radio"]:checked+label:after{border-radius:50%;border:2px solid #669BBD;background-color:#669BBD;z-index:0;-webkit-transform:scale(1.02);-moz-transform:scale(1.02);-ms-transform:scale(1.02);-o-transform:scale(1.02);transform:scale(1.02)}[type="radio"].with-gap:checked+label:before{border-radius:50%;border:2px solid #669BBD}[type="radio"].with-gap:checked+label:after{border-radius:50%;border:2px solid #669BBD;background-color:#669BBD;z-index:0;-webkit-transform:scale(.5);-moz-transform:scale(.5);-ms-transform:scale(.5);-o-transform:scale(.5);transform:scale(.5)}[type="radio"].with-gap:disabled:checked+label:before{border:2px solid rgba(0,0,0,0.26)}[type="radio"].with-gap:disabled:checked+label:after{border:none;background-color:rgba(0,0,0,0.26)}[type="radio"]:disabled:not(:checked)+label:before,[type="radio"]:disabled:checked+label:before{background-color:transparent;border-color:rgba(0,0,0,0.26)}[type="radio"]:disabled+label{color:rgba(0,0,0,0.26)}[type="radio"]:disabled:not(:checked)+label:before{border-color:rgba(0,0,0,0.26)}[type="radio"]:disabled:checked+label:after{background-color:rgba(0,0,0,0.26);border-color:#BDBDBD}form p{margin-bottom:10px;text-align:left}form p:last-child{margin-bottom:0}[type="checkbox"]:not(:checked),[type="checkbox"]:checked{position:absolute;left:-9999px;visibility:hidden}[type="checkbox"]{}[type="checkbox"]+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}[type="checkbox"]+label:before{content:'';position:absolute;top:0;left:0;width:18px;height:18px;z-index:0;border:2px solid #669BBC;border-radius:1px;margin-top:2px;-webkit-transition:0.2s;-moz-transition:0.2s;-o-transition:0.2s;-ms-transition:0.2s;transition:0.2s}[type="checkbox"]:not(:checked):disabled+label:before{border:none;background-color:rgba(0,0,0,0.26)}[type="checkbox"]:checked+label:before{top:-4px;left:-3px;width:12px;height:22px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #669BBD;border-bottom:2px solid #669BBD;-webkit-transform:rotate(40deg);-moz-transform:rotate(40deg);-ms-transform:rotate(40deg);-o-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:checked:disabled+label:before{border-right:2px solid rgba(0,0,0,0.26);border-bottom:2px solid rgba(0,0,0,0.26)}[type="checkbox"]:indeterminate+label:before{left:-10px;top:-11px;width:10px;height:22px;border-top:none;border-left:none;border-right:2px solid #669BBD;border-bottom:none;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:indeterminate:disabled+label:before{border-right:2px solid rgba(0,0,0,0.26);background-color:transparent}[type="checkbox"].filled-in+label:after{border-radius:2px}[type="checkbox"].filled-in+label:before,[type="checkbox"].filled-in+label:after{content:'';left:0;position:absolute;transition:border .25s,background-color .25s,width .2s .1s,height .2s .1s,top .2s .1s,left .2s .1s;z-index:1}[type="checkbox"].filled-in:not(:checked)+label:before{width:0;height:0;border:3px solid transparent;left:6px;top:10px;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:20% 40%;transform-origin:100% 100%}[type="checkbox"].filled-in:not(:checked)+label:after{height:20px;width:20px;background-color:transparent;border:2px solid #669BBC;top:0px;z-index:0}[type="checkbox"].filled-in:checked+label:before{top:0;left:1px;width:8px;height:13px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #fff;border-bottom:2px solid #fff;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"].filled-in:checked+label:after{top:0px;width:20px;height:20px;border:2px solid #669BBD;background-color:#669BBD;z-index:0}[type="checkbox"].filled-in:disabled:not(:checked)+label:before{background-color:transparent;border:2px solid transparent}[type="checkbox"].filled-in:disabled:not(:checked)+label:after{border-color:transparent;background-color:#BDBDBD}[type="checkbox"].filled-in:disabled:checked+label:before{background-color:transparent}[type="checkbox"].filled-in:disabled:checked+label:after{background-color:#BDBDBD;border-color:#BDBDBD}.switch,.switch *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.switch label{cursor:pointer}.switch label input[type=checkbox]{opacity:0;width:0;height:0}.switch label input[type=checkbox]:checked+.lever{background-color:#84c7c1}.switch label input[type=checkbox]:checked+.lever:after{background-color:#669BBD}.switch label .lever{content:"";display:inline-block;position:relative;width:40px;height:15px;background-color:#818181;border-radius:15px;margin-right:10px;transition:background 0.3s ease;vertical-align:middle;margin:0 16px}.switch label .lever:after{content:"";position:absolute;display:inline-block;width:21px;height:21px;background-color:#F1F1F1;border-radius:21px;box-shadow:0 1px 3px 1px rgba(0,0,0,0.4);left:-5px;top:-3px;transition:left 0.3s ease,background .3s ease,box-shadow 0.1s ease}input[type=checkbox]:checked:not(:disabled) ~ .lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,0.4),0 0 0 15px rgba(38,166,154,0.1)}input[type=checkbox]:not(:disabled) ~ .lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,0.4),0 0 0 15px rgba(0,0,0,0.08)}.switch label input[type=checkbox]:checked+.lever:after{left:24px}.switch input[type=checkbox][disabled]+.lever{cursor:default}.switch label input[type=checkbox][disabled]+.lever:after,.switch label input[type=checkbox][disabled]:checked+.lever:after{background-color:#BDBDBD}.select-label{position:absolute}.select-wrapper{position:relative}.select-wrapper input.select-dropdown{position:relative;cursor:pointer;background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;outline:none;height:3rem;line-height:3rem;width:100%;font-size:1rem;margin:0 0 15px 0;padding:0;display:block}.select-wrapper span.caret{color:initial;position:absolute;right:0;top:16px;font-size:10px}.select-wrapper span.caret.disabled{color:rgba(0,0,0,0.26)}.select-wrapper+label{position:absolute;top:-14px;font-size:0.8rem}select{display:none}select.browser-default{display:block}select:disabled{color:rgba(0,0,0,0.3)}.select-wrapper input.select-dropdown:disabled{color:rgba(0,0,0,0.3);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;border-bottom:1px solid rgba(0,0,0,0.3)}.select-wrapper i{color:rgba(0,0,0,0.3)}.select-dropdown li.disabled,.select-dropdown li.disabled>span,.select-dropdown li.optgroup{color:rgba(0,0,0,0.3);background-color:transparent}.select-dropdown li img{height:40px;width:40px;margin:5px 15px;float:right}.select-dropdown li.optgroup{border-top:1px solid #eee}.select-dropdown li.optgroup.selected>span{color:rgba(0,0,0,0.7)}.select-dropdown li.optgroup>span{color:rgba(0,0,0,0.4)}.select-dropdown li.optgroup ~ li:not(.optgroup){padding-left:1rem}.file-field{position:relative}.file-field .file-path-wrapper{overflow:hidden;padding-left:10px}.file-field input.file-path{width:100%}.file-field .btn,.file-field .btn-large{float:left;height:3rem;line-height:3rem}.file-field span{cursor:pointer}.file-field input[type=file]{position:absolute;top:0;right:0;left:0;bottom:0;width:100%;margin:0;padding:0;font-size:20px;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.range-field{position:relative}input[type=range],input[type=range]+.thumb{cursor:pointer}input[type=range]{position:relative;background-color:transparent;border:none;outline:none;width:100%;margin:15px 0px;padding:0}input[type=range]+.thumb{position:absolute;border:none;height:0;width:0;border-radius:50%;background-color:#669BBD;top:10px;margin-left:-6px;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-ms-transform-origin:50% 50%;-o-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}input[type=range]+.thumb .value{display:block;width:30px;text-align:center;color:#669BBD;font-size:0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}input[type=range]+.thumb.active{border-radius:50% 50% 50% 0}input[type=range]+.thumb.active .value{color:#fff;margin-left:-1px;margin-top:8px;font-size:10px}input[type=range]:focus{outline:none}input[type=range]{-webkit-appearance:none}input[type=range]::-webkit-slider-runnable-track{height:3px;background:#c2c0c2;border:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:14px;width:14px;border-radius:50%;background-color:#669BBD;transform-origin:50% 50%;margin:-5px 0 0 0;-webkit-transition:0.3s;-moz-transition:0.3s;-o-transition:0.3s;-ms-transition:0.3s;transition:0.3s}input[type=range]:focus::-webkit-slider-runnable-track{background:#ccc}input[type=range]{border:1px solid white}input[type=range]::-moz-range-track{height:3px;background:#ddd;border:none}input[type=range]::-moz-range-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#669BBD;margin-top:-5px}input[type=range]:-moz-focusring{outline:1px solid white;outline-offset:-1px}input[type=range]:focus::-moz-range-track{background:#ccc}input[type=range]::-ms-track{height:3px;background:transparent;border-color:transparent;border-width:6px 0;color:transparent}input[type=range]::-ms-fill-lower{background:#777}input[type=range]::-ms-fill-upper{background:#ddd}input[type=range]::-ms-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#669BBD}input[type=range]:focus::-ms-fill-lower{background:#888}input[type=range]:focus::-ms-fill-upper{background:#ccc}select{background-color:rgba(255,255,255,0.9);width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.table-of-contents.fixed{position:fixed}.table-of-contents li{padding:2px 0}.table-of-contents a{display:inline-block;font-weight:300;color:#757575;padding-left:20px;height:1.5rem;line-height:1.5rem;letter-spacing:.4;display:inline-block}.table-of-contents a:hover{color:#a8a8a8;padding-left:19px;border-left:1px solid #ea4a4f}.table-of-contents a.active{font-weight:500;padding-left:18px;border-left:2px solid #ea4a4f}.side-nav{position:fixed;width:240px;left:-105%;top:0;margin:0;height:100%;height:calc(100% + 60px);height:-moz-calc(100%);padding-bottom:60px;background-color:#fff;z-index:999;overflow-y:auto;will-change:left}.side-nav.right-aligned{will-change:right;right:-105%;left:auto}.side-nav .collapsible{margin:0}.side-nav li{float:none;padding:0 15px}.side-nav li:hover,.side-nav li.active{background-color:#ddd}.side-nav a{color:#444;display:block;font-size:1rem;height:64px;line-height:64px;padding:0 15px}.drag-target{height:100%;width:10px;position:fixed;top:0;z-index:998}.side-nav.fixed a{display:block;padding:0 15px;color:#444}.side-nav.fixed{left:0;position:fixed}.side-nav.fixed.right-aligned{right:0;left:auto}@media only screen and (max-width : 992px){.side-nav.fixed{left:-105%}.side-nav.fixed.right-aligned{right:-105%;left:auto}}.side-nav .collapsible-body li.active,.side-nav.fixed .collapsible-body li.active{background-color:#780000}.side-nav .collapsible-body li.active a,.side-nav.fixed .collapsible-body li.active a{color:#fff}#sidenav-overlay{position:fixed;top:0;left:0;right:0;height:120vh;background-color:rgba(0,0,0,0.5);z-index:997;will-change:opacity}.preloader-wrapper{display:inline-block;position:relative;width:48px;height:48px}.preloader-wrapper.small{width:36px;height:36px}.preloader-wrapper.big{width:64px;height:64px}.preloader-wrapper.active{-webkit-animation:container-rotate 1568ms linear infinite;animation:container-rotate 1568ms linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{transform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0;border-color:#669BBD}.spinner-blue,.spinner-blue-only{border-color:#4285f4}.spinner-red,.spinner-red-only{border-color:#db4437}.spinner-yellow,.spinner-yellow-only{border-color:#f4b400}.spinner-green,.spinner-green-only{border-color:#0f9d58}.active .spinner-layer.spinner-blue{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-red{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-yellow{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-green{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer,.active .spinner-layer.spinner-blue-only,.active .spinner-layer.spinner-red-only,.active .spinner-layer.spinner-yellow-only,.active .spinner-layer.spinner-green-only{opacity:1;-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@-webkit-keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@-webkit-keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@-webkit-keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@-webkit-keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}@keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}.gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.gap-patch .circle{width:1000%;left:-450%}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.circle-clipper .circle{width:200%;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent !important;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0}.circle-clipper.left .circle{left:0;border-right-color:transparent !important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right .circle{left:-100%;border-left-color:transparent !important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper.left .circle{-webkit-animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .circle-clipper.right .circle{-webkit-animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes left-spin{from{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{from{transform:rotate(130deg)}50%{transform:rotate(-5deg)}to{transform:rotate(130deg)}}@-webkit-keyframes right-spin{from{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{from{transform:rotate(-130deg)}50%{transform:rotate(5deg)}to{transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1)}@-webkit-keyframes fade-out{from{opacity:1}to{opacity:0}}@keyframes fade-out{from{opacity:1}to{opacity:0}}.slider{position:relative;height:400px;width:100%}.slider.fullscreen{height:100%;width:100%;position:absolute;top:0;left:0;right:0;bottom:0}.slider.fullscreen ul.slides{height:100%}.slider.fullscreen ul.indicators{z-index:2;bottom:30px}.slider .slides{background-color:#9e9e9e;margin:0;height:400px}.slider .slides li{opacity:0;position:absolute;top:0;left:0;z-index:1;width:100%;height:inherit;overflow:hidden}.slider .slides li img{height:100%;width:100%;background-size:cover;background-position:center}.slider .slides li .caption{color:#fff;position:absolute;top:15%;left:15%;width:70%;opacity:0}.slider .slides li .caption p{color:#e0e0e0}.slider .slides li.active{z-index:2}.slider .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.slider .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:16px;width:16px;margin:0 12px;background-color:#e0e0e0;-webkit-transition:background-color .3s;-moz-transition:background-color .3s;-o-transition:background-color .3s;-ms-transition:background-color .3s;transition:background-color .3s;border-radius:50%}.slider .indicators .indicator-item.active{background-color:#4CAF50}.picker{font-size:16px;text-align:left;line-height:1.2;color:#000000;position:absolute;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}/*! - * Default mobile-first, responsive styling for pickadate.js - * Demo: http://amsul.github.io/pickadate.js - */.picker__holder,.picker__frame{bottom:0;left:0;right:0;top:100%}.picker__holder{position:fixed;-webkit-transition:background 0.15s ease-out,top 0s 0.15s;-moz-transition:background 0.15s ease-out,top 0s 0.15s;transition:background 0.15s ease-out,top 0s 0.15s;-webkit-backface-visibility:hidden}.picker__frame{position:absolute;margin:0 auto;min-width:256px;width:300px;max-height:350px;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;-webkit-transition:all 0.15s ease-out;-moz-transition:all 0.15s ease-out;transition:all 0.15s ease-out}@media (min-height: 28.875em){.picker__frame{overflow:visible;top:auto;bottom:-100%;max-height:80%}}@media (min-height: 40.125em){.picker__frame{margin-bottom:7.5%}}.picker__wrap{display:table;width:100%;height:100%}@media (min-height: 28.875em){.picker__wrap{display:block}}.picker__box{background:#ffffff;display:table-cell;vertical-align:middle}@media (min-height: 28.875em){.picker__box{display:block;border:1px solid #777777;border-top-color:#898989;border-bottom-width:0;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;-webkit-box-shadow:0 12px 36px 16px rgba(0,0,0,0.24);-moz-box-shadow:0 12px 36px 16px rgba(0,0,0,0.24);box-shadow:0 12px 36px 16px rgba(0,0,0,0.24)}}.picker--opened .picker__holder{top:0;background:transparent;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)";zoom:1;background:rgba(0,0,0,0.32);-webkit-transition:background 0.15s ease-out;-moz-transition:background 0.15s ease-out;transition:background 0.15s ease-out}.picker--opened .picker__frame{top:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1;opacity:1}@media (min-height: 35.875em){.picker--opened .picker__frame{top:10%;bottom:20% auto}}.picker__input.picker__input--active{border-color:#E3F2FD}.picker__frame{margin:0 auto;max-width:325px}@media (min-height: 38.875em){.picker--opened .picker__frame{top:10%;bottom:auto}}.picker__box{padding:0 1em}.picker__header{text-align:center;position:relative;margin-top:.75em}.picker__month,.picker__year{display:inline-block;margin-left:.25em;margin-right:.25em}.picker__select--month,.picker__select--year{height:2em;padding:0;margin-left:.25em;margin-right:.25em}.picker__select--month.browser-default{display:inline;background-color:#FFFFFF;width:40%}.picker__select--year.browser-default{display:inline;background-color:#FFFFFF;width:25%}.picker__select--month:focus,.picker__select--year:focus{border-color:rgba(0,0,0,0.05)}.picker__nav--prev,.picker__nav--next{position:absolute;padding:.5em 1.25em;width:1em;height:1em;box-sizing:content-box;top:-0.25em}.picker__nav--prev{left:-1em;padding-right:1.25em}.picker__nav--next{right:-1em;padding-left:1.25em}.picker__nav--disabled,.picker__nav--disabled:hover,.picker__nav--disabled:before,.picker__nav--disabled:before:hover{cursor:default;background:none;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{text-align:center;border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:1rem;width:100%;margin-top:.75em;margin-bottom:.5em}.picker__table th,.picker__table td{text-align:center}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999999;font-weight:500}@media (min-height: 33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day--today{position:relative;color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day--disabled:before{border-top-color:#aaaaaa}.picker__day--infocus:hover{cursor:pointer;color:#000;font-weight:500}.picker__day--outfocus{display:none;padding:.75rem 0;color:#fff}.picker__day--outfocus:hover{cursor:pointer;color:#dddddd;font-weight:500}.picker__day--highlighted:hover,.picker--focused .picker__day--highlighted{cursor:pointer}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(.75);-moz-transform:scale(.75);-ms-transform:scale(.75);-o-transform:scale(.75);transform:scale(.75);background:#0089ec;color:#ffffff}.picker__day--disabled,.picker__day--disabled:hover,.picker--focused .picker__day--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbbbbb}.picker__footer{text-align:center;display:flex;align-items:center;justify-content:space-between}.picker__button--today,.picker__button--clear,.picker__button--close{border:1px solid #ffffff;background:#ffffff;font-size:.8em;padding:.66em 0;font-weight:bold;width:33%;display:inline-block;vertical-align:bottom}.picker__button--today:hover,.picker__button--clear:hover,.picker__button--close:hover{cursor:pointer;color:#000000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--today:focus,.picker__button--clear:focus,.picker__button--close:focus{background:#b1dcfb;border-color:rgba(0,0,0,0.05);outline:none}.picker__button--today:before,.picker__button--clear:before,.picker__button--close:before{position:relative;display:inline-block;height:0}.picker__button--today:before,.picker__button--clear:before{content:" ";margin-right:.45em}.picker__button--today:before{top:-0.05em;width:0;border-top:0.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{top:-0.25em;width:.66em;border-top:3px solid #ee2200}.picker__button--close:before{content:"\D7";top:-0.1em;vertical-align:top;font-size:1.1em;margin-right:.35em;color:#777777}.picker__button--today[disabled],.picker__button--today[disabled]:hover{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default}.picker__button--today[disabled]:before{border-top-color:#aaaaaa}.picker__box{border-radius:2px;overflow:hidden}.picker__date-display{text-align:center;background-color:#669BBD;color:#fff;padding-bottom:15px;font-weight:300}.picker__nav--prev:hover,.picker__nav--next:hover{cursor:pointer;color:#000000;background:#a1ded8}.picker__weekday-display{background-color:#1f897f;padding:10px;font-weight:200;letter-spacing:.5;font-size:1rem;margin-bottom:15px}.picker__month-display{text-transform:uppercase;font-size:2rem}.picker__day-display{font-size:4.5rem;font-weight:400}.picker__year-display{font-size:1.8rem;color:rgba(255,255,255,0.4)}.picker__box{padding:0}.picker__calendar-container{padding:0 1rem}.picker__calendar-container thead{border:none}.picker__table{margin-top:0;margin-bottom:.5em}.picker__day--infocus{color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day.picker__day--today{color:#669BBD}.picker__day.picker__day--today.picker__day--selected{color:#fff}.picker__weekday{font-size:.9rem}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(.9);-moz-transform:scale(.9);-ms-transform:scale(.9);-o-transform:scale(.9);transform:scale(.9);background-color:#669BBD;color:#ffffff}.picker__day--selected.picker__day--outfocus,.picker__day--selected:hover.picker__day--outfocus,.picker--focused .picker__day--selected.picker__day--outfocus{background-color:#a1ded8}.picker__footer{text-align:right;padding:5px 10px}.picker__close,.picker__today{font-size:1.1rem;padding:0 1rem;color:#669BBD}.picker__nav--prev:before,.picker__nav--next:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:0.75em solid #676767;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:0.75em solid #676767}button.picker__today:focus,button.picker__clear:focus,button.picker__close:focus{background-color:#a1ded8}.picker__list{list-style:none;padding:0.75em 0 4.2em;margin:0}.picker__list-item{border-bottom:1px solid #dddddd;border-top:1px solid #dddddd;margin-bottom:-1px;position:relative;background:#ffffff;padding:.75em 1.25em}@media (min-height: 46.75em){.picker__list-item{padding:.5em 1em}}.picker__list-item:hover{cursor:pointer;color:#000000;background:#b1dcfb;border-color:#0089ec;z-index:10}.picker__list-item--highlighted{border-color:#0089ec;z-index:10}.picker__list-item--highlighted:hover,.picker--focused .picker__list-item--highlighted{cursor:pointer;color:#000000;background:#b1dcfb}.picker__list-item--selected,.picker__list-item--selected:hover,.picker--focused .picker__list-item--selected{background:#0089ec;color:#ffffff;z-index:10}.picker__list-item--disabled,.picker__list-item--disabled:hover,.picker--focused .picker__list-item--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default;border-color:#dddddd;z-index:auto}.picker--time .picker__button--clear{display:block;width:80%;margin:1em auto 0;padding:1em 1.25em;background:none;border:0;font-weight:500;font-size:.67em;text-align:center;text-transform:uppercase;color:#666}.picker--time .picker__button--clear:hover,.picker--time .picker__button--clear:focus{color:#000000;background:#b1dcfb;background:#ee2200;border-color:#ee2200;cursor:pointer;color:#ffffff;outline:none}.picker--time .picker__button--clear:before{top:-0.25em;color:#666;font-size:1.25em;font-weight:bold}.picker--time .picker__button--clear:hover:before,.picker--time .picker__button--clear:focus:before{color:#ffffff}.picker--time .picker__frame{min-width:256px;max-width:320px}.picker--time .picker__box{font-size:1em;background:#f2f2f2;padding:0}@media (min-height: 40.125em){.picker--time .picker__box{margin-bottom:5em}} diff --git a/goathacks/static/css/style.css b/goathacks/static/css/style.css deleted file mode 100644 index 52ba4a7..0000000 --- a/goathacks/static/css/style.css +++ /dev/null @@ -1,18 +0,0 @@ -.navbar-dark, .modal-header, .table-header { - background-color: #974355; - color: #FFFFFF; -} - -.modal-header, .table-header { - color: #FFFFFF; -} - -.container { - min-height: 100vh; - position: relative; -} - -body { - min-height: 100vh; - background-color: #000000; -} diff --git a/goathacks/static/css/style.scss b/goathacks/static/css/style.scss deleted file mode 100644 index abfff51..0000000 --- a/goathacks/static/css/style.scss +++ /dev/null @@ -1,21 +0,0 @@ -$color-nav-bg: #974355; -$color-bg: #000000; - -.navbar-dark, .modal-header, .table-header { - background-color: $color-nav-bg; - color: #FFFFFF; -} - -.modal-header, .table-header { - color: #FFFFFF; -} - -.container { - min-height: 100vh; - position: relative; -} - -body { - min-height: 100vh; - background-color: $color-bg; -} diff --git a/goathacks/static/img/banner.png b/goathacks/static/img/banner.png deleted file mode 100644 index d9df529..0000000 Binary files a/goathacks/static/img/banner.png and /dev/null differ diff --git a/goathacks/static/img/favicon.png b/goathacks/static/img/favicon.png deleted file mode 100644 index 39a081f..0000000 Binary files a/goathacks/static/img/favicon.png and /dev/null differ diff --git a/goathacks/static/img/hackwpilogo.png b/goathacks/static/img/hackwpilogo.png deleted file mode 100644 index b080e23..0000000 Binary files a/goathacks/static/img/hackwpilogo.png and /dev/null differ diff --git a/goathacks/static/img/logo.png b/goathacks/static/img/logo.png deleted file mode 100644 index 3ac23a0..0000000 Binary files a/goathacks/static/img/logo.png and /dev/null differ diff --git a/goathacks/static/js/jquery-3.6.3.min.js b/goathacks/static/js/jquery-3.6.3.min.js deleted file mode 100644 index b5329e9..0000000 --- a/goathacks/static/js/jquery-3.6.3.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.6.3 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},S=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||S).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.3",E=function(e,t){return new E.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,S)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=E)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{if(d.cssSupportsSelector&&!CSS.supports("selector(:is("+c+"))"))throw new Error;return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===E&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[E]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,S=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.cssSupportsSelector=ce(function(){return CSS.supports("selector(*)")&&C.querySelectorAll(":is(:jqfake)")&&!CSS.supports("selector(:is(*,:jqfake))")}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=E,!C.getElementsByName||!C.getElementsByName(E).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&S)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+E+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+E+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),d.cssSupportsSelector||y.push(":has"),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType&&e.documentElement||e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&S&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:S,!0)),N.test(r[1])&&E.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=S.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,D=E(S);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=S.createDocumentFragment().appendChild(S.createElement("div")),(fe=S.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),S.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;E.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||E.expando+"_"+Ct.guid++;return this[e]=!0,e}}),E.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||E.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?E(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=S.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=S.implementation.createHTMLDocument("")).createElement("base")).href=S.location.href,t.head.appendChild(r)):t=S),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(E.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0 -
- - - -
- -{% endblock %} diff --git a/goathacks/templates/admin.html b/goathacks/templates/admin.html deleted file mode 100644 index 410c36a..0000000 --- a/goathacks/templates/admin.html +++ /dev/null @@ -1,94 +0,0 @@ -{% extends 'admin-layout.html' %} - -{% block head %} -{{super()}} - - - - - - - -{% endblock %} - -{% block app_content %} -
-
-

Registered Users

- - - - - - - - - - - - - - - - - - - {% for hacker in hackers %} - - - - - - - - - - - - - - - {% endfor %} - -
OptionsChecked In?Waitlisted?AdminUser IDRegistration TimeEmailNamePhoneShirtSpecialSchool
- - {{ hacker.checked_in }}{{ hacker.waitlisted }}{{ hacker.is_admin }}{{ hacker.id }}{{ hacker.last_login }}{{ hacker.email }}{{ hacker.first_name + ' ' + hacker.last_name }}{{ hacker.phone }}{{ hacker.shirt_size }}{{ hacker.accomodations }}{{ hacker.school }}
-
-
-{% endblock %} - diff --git a/goathacks/templates/bootstrap-base.html b/goathacks/templates/bootstrap-base.html deleted file mode 100644 index 04b47e6..0000000 --- a/goathacks/templates/bootstrap-base.html +++ /dev/null @@ -1,44 +0,0 @@ - -{% from 'bootstrap5/nav.html' import render_nav_item %} -{% from 'bootstrap5/utils.html' import render_messages %} - - - - - {% block head %} - {% if title %} - {{ title }} - GoatHacks - {% else %} - GoatHacks - {% endif %} - - - - {% block styles %} - - {{ bootstrap.load_css() }} - {% endblock %} - - {% endblock %} - - - - {% block navbar %}{% endblock %} - - -
-
- {{ render_messages(container=False, dismissible=True, dismiss_animate=True) }} -
- - {% block app_content %}{% endblock %} - -
- - {% block scripts %} - - {{ bootstrap.load_js() }} - {% endblock %} - - - diff --git a/goathacks/templates/dashboard.html b/goathacks/templates/dashboard.html deleted file mode 100644 index d080b5b..0000000 --- a/goathacks/templates/dashboard.html +++ /dev/null @@ -1,56 +0,0 @@ -{% extends 'layout.html' %} -{% from 'bootstrap5/form.html' import render_field %} - -{% block app_content %} -
-
-

Hi {{current_user.first_name}}!

- {% if current_user.waitlisted %} -

You're currently waitlisted. If space - opens up, we'll let you know!

- {% else %} -

You are fully registered! We look forward to seeing you!

- {% endif %} - -

Let us know if you have any questions by sending - them to hack@wpi.edu

- - {% if not current_user.waitlisted and config['DISCORD_LINK'] %} -

Make sure to join our Discord to get the latest updates!

- - {% endif %} - -
-
- {{ form.csrf_token() }} -

Optional Info

-
- {{ form.shirt_size(class="form-control", selected=current_user.shirt_size) }} - {{ form.shirt_size.label() }} -
-
- {{ form.accomodations(class="form-control") }} - {{ form.accomodations.label() }} -
- {{ render_field(form.submit) }} - -
-
-
-
-
- {{ resform.csrf_token() }} -

If you'd like, add your resume to send to - sponsors...

-
- {{ resform.resume(class="form-control") }} -
- {{ render_field(resform.submit) }} -
-
- -
-
-{% endblock %} diff --git a/goathacks/templates/emails/dropped.txt b/goathacks/templates/emails/dropped.txt deleted file mode 100644 index 95eebe1..0000000 --- a/goathacks/templates/emails/dropped.txt +++ /dev/null @@ -1,13 +0,0 @@ -Dear {{ user.first_name }}, - -Your application has been dropped. We're sorry to see you go! - -If this was done in error, you can re-register by going to -https://hack.wpi.edu/registration. - -Happy Hacking! - -GoatHacks Team - -This is an automated message. Please email hack@wpi.edu with any questions or -concerns. diff --git a/goathacks/templates/emails/password_reset.txt b/goathacks/templates/emails/password_reset.txt deleted file mode 100644 index a669997..0000000 --- a/goathacks/templates/emails/password_reset.txt +++ /dev/null @@ -1,15 +0,0 @@ -Hello! - -Someone just requested a password reset for your GoatHacks account. If this -wasn't you, don't worry. Just ignore this request, and nothing will happen. - -If this was you, please follow this link: {{url_for("registration.do_reset", id=code, _external=True)}} - -This link will expire in 30 minutes. - -Happy Hacking! - -GoatHacks Team - -This is an automated message. Please email hack@wpi.edu with any questions or -concerns diff --git a/goathacks/templates/emails/registration.txt b/goathacks/templates/emails/registration.txt deleted file mode 100644 index e686e80..0000000 --- a/goathacks/templates/emails/registration.txt +++ /dev/null @@ -1,19 +0,0 @@ -Dear {{ user.first_name }}, - -Your application for GoatHacks has been confirmed! {% if user.waitlisted -%}You're on the waitlist right now, but we'll send you another email if a spot -opens up.{% else %}You've got a confirmed spot this year! Make sure to look at -the schedule at https://hack.wpi.edu.{% endif %} - -{% if not user.waitlisted %} -We'll send another email with more details closer to the event. In the -meantime, visit your Dashboard (https://hack.wpi.edu/dashboard) to tell us about -your shirt size and any accomodations you may need. -{% endif %} - -Happy Hacking! - -GoatHacks Team - -This is an automated message. Please email hack@wpi.edu with any questions or -concerns. diff --git a/goathacks/templates/emails/waitlist_promotion.txt b/goathacks/templates/emails/waitlist_promotion.txt deleted file mode 100644 index eb84edb..0000000 --- a/goathacks/templates/emails/waitlist_promotion.txt +++ /dev/null @@ -1,18 +0,0 @@ -Hello {{ user.first_name }}! - -We're writing to let you know that a spot has opened up in our registrations, -and you've been promoted off of the waitlist! Please visit our website -(https://hack.wpi.edu/dashboard) to complete your registration information and -join our Discord. - -If you can no longer make the event, please visit your dashboard and use the -"Drop my registration" link. - -Happy Hacking! - -GoatHacks Team - - - -This is an automated message. Please email hack@wpi.edu with any questions or -concerns. diff --git a/goathacks/templates/events/list.html b/goathacks/templates/events/list.html deleted file mode 100644 index f7124a5..0000000 --- a/goathacks/templates/events/list.html +++ /dev/null @@ -1,199 +0,0 @@ -{% extends 'admin-layout.html' %} - -{% block app_content %} -
- -
-

Events

- Get a JSON readout of events here - - - - - - - - - - - - - - - - {% for event in events %} - - - - - - - - - - - - {% endfor %} - -
IDNameLocationStartEndCategoryChecked inQR CodeNew
{{ event.id }}{{ event.name }}{{ event.location }}{{ event.start_time }}{{ event.end_time }}{{ event.category }}{{ event.get_checkins()|length }}QR CodeEdit
-
-
- - - - - - -{% endblock %} diff --git a/goathacks/templates/events/new_event.html b/goathacks/templates/events/new_event.html deleted file mode 100644 index a4930d6..0000000 --- a/goathacks/templates/events/new_event.html +++ /dev/null @@ -1,49 +0,0 @@ -{% extends 'admin-layout.html' %} - -{% block app_content %} -
-
-
-
-

Create/Edit Event

-
-
-
-
-
- {{ form.csrf_token }} -
- {{ form.name(class="form-control") }} - {{ form.name.label }} -
-
- {{ form.description(class="form-control") }} - {{form.description.label}} -
-
- {{ form.location(class="form-control")}} - {{form.location.label}} -
-
-
-
- {{form.start_time(class="form-control")}} - {{form.start_time.label}} -
-
-
-
- {{form.end_time(class="form-control")}} - {{form.end_time.label}} -
-
-
-
- {{form.category(class="form-control")}} - {{form.category.label}} -
- {{form.submit}} -
-
-
-{% endblock %} diff --git a/goathacks/templates/events/qrcode.html b/goathacks/templates/events/qrcode.html deleted file mode 100644 index 7c0d035..0000000 --- a/goathacks/templates/events/qrcode.html +++ /dev/null @@ -1,7 +0,0 @@ - - QR Code for {{ event.name }} - - - - diff --git a/goathacks/templates/home b/goathacks/templates/home deleted file mode 160000 index db2a7a8..0000000 --- a/goathacks/templates/home +++ /dev/null @@ -1 +0,0 @@ -Subproject commit db2a7a865f9b3865fa2180b1b53b1c2d2640be81 diff --git a/goathacks/templates/layout.html b/goathacks/templates/layout.html deleted file mode 100644 index e346a1d..0000000 --- a/goathacks/templates/layout.html +++ /dev/null @@ -1,56 +0,0 @@ -{% extends 'bootstrap-base.html' %} - -{% block html_attribs %} lang="en"{% endblock %} - -{% block title %}{% if title %}{{ title }} - GoatHacks{% else %}GoatHacks{% -endif %}{% endblock %} - -{% block head %} -{{super()}} -{{ font_awesome.load_css() }} -{% endblock %} - -{% block styles %} -{{super()}} -{% assets 'scss' %} - -{% endassets %} -{% endblock %} - -{% block navbar %} - -{% endblock %} diff --git a/goathacks/templates/login.html b/goathacks/templates/login.html deleted file mode 100644 index a59533f..0000000 --- a/goathacks/templates/login.html +++ /dev/null @@ -1,34 +0,0 @@ -{% extends 'layout.html' %} -{% from 'bootstrap5/form.html' import render_field %} - -{% block app_content %} -
-
- GoatHacks 2024 Banner -

Welcome back to GoatHacks!

-

If you've already registered, please use this page - to access your participant dashboard. Otherwise, please use the - registration page to register!

- -
-
- {{ form.csrf_token() }} -
- {{ form.email(class="form-control") }} - {{ form.email.label() }} -
-
- {{ form.password(class="form-control") }} - {{ form.password.label() }} -
- {{ render_field(form.submit) }} -
-
-
-
-{% endblock %} diff --git a/goathacks/templates/mail.html b/goathacks/templates/mail.html deleted file mode 100644 index a85567f..0000000 --- a/goathacks/templates/mail.html +++ /dev/null @@ -1,101 +0,0 @@ -{% extends 'admin-layout.html' %} - - {% block head %} - {{super()}} - - - - - - {% endblock %} - {% block app_content %} -
-
-

🍪CookieMailer

- -
- -
- -
- -
-
- -
-
- -
-
- - - - - -{% endblock %} - diff --git a/goathacks/templates/register.html b/goathacks/templates/register.html deleted file mode 100644 index 10bd53b..0000000 --- a/goathacks/templates/register.html +++ /dev/null @@ -1,112 +0,0 @@ -{% extends 'layout.html' %} -{% from 'bootstrap5/form.html' import render_field %} - -{% block app_content %} -
-
- GoatHacks Banner -

Welcome to GoatHacks!

-

Please use this page to register for this year's - Hackathon. Accounts from prior years are not carried over!

- -
-
- {{ form.csrf_token() }} -
- {{ form.email(class="form-control") }} - {{ form.email.label() }} -
-
-
-
- {{ form.password(class="form-control") }} - {{ form.password.label() }} -
-
-
-
- {{ form.password_confirm(class="form-control") }} - {{ form.password_confirm.label() }} -
-
-
-
-
-
- {{ form.first_name(class="form-control") }} - {{ form.first_name.label() }} -
-
-
-
- {{ form.last_name(class="form-control") }} - {{ form.last_name.label() }} -
-
-
-
-
-
- {{ form.school(class="form-control") }} - {{ form.school.label() }} -
-
-
-
- {{ form.country(class="form-control") }} - {{ form.country.label() }} -
-
-
- -
-
-
- {{ form.phone_number(class="form-control") }} - {{ form.phone_number.label() }} -
-
-
-
- {{ form.age(class="form-control") }} - {{ form.age.label() }} -
-
-
-
- {{ form.gender(class="form-control") }} - {{ form.gender.label() }} -
-
- {{ form.dietary_restrictions(class="form-control") }} - {{ form.dietary_restrictions.label() }} -
-
- {{ form.agree_coc }} - I confirm that I have read and agree to the MLH Code of Conduct -
-
- {{ form.logistics }} -I authorize you to share my application/registration with Major League Hacking -for event administration, ranking, and MLH administration in-line with the MLH -privacy policy. I further agree to the terms of both the MLH - Contest Terms - and - Conditions - and the MLH - Privacy - Policy. -
-
- {{ form.newsletter }} - Subscribe to the MLH newsletter? -
- {{ render_field(form.submit) }} -
-
-
-
-{% endblock %} diff --git a/hacker.png b/hacker.png new file mode 100644 index 0000000..399c366 Binary files /dev/null and b/hacker.png differ diff --git a/manage_waitlist.py b/manage_waitlist.py new file mode 100644 index 0000000..9710c71 --- /dev/null +++ b/manage_waitlist.py @@ -0,0 +1,54 @@ +import requests +from flask_app import db, Hacker, send_email, gen_new_auto_promote_keys +from config_hackWPI import WAITLIST_LIMIT + +num_attendees = db.session.query(Hacker).filter(Hacker.waitlisted == False).count() +num_waitlisted = db.session.query(Hacker).filter(Hacker.waitlisted == True).count() +num_to_promote = WAITLIST_LIMIT - num_attendees + +if num_to_promote > num_waitlisted: + num_to_promote = num_waitlisted + +num_to_promote_copy = num_to_promote +num_promoted = 0 +errs = [] + +mlh_ids = db.session.query(Hacker.mlh_id).filter(Hacker.waitlisted == True).order_by(Hacker.registration_time) + +for id in mlh_ids: + if num_to_promote > 0: + print('Attempting to promote: ' + str(id[0])) + (key, val) = gen_new_auto_promote_keys() + url = 'http://75.136.89.196:5000/promote_from_waitlist' + '?mlh_id=' + str(id[0]) + '&' + key + '=' + val + print(url) + req = requests.get(url) + if req.status_code == 500: + errs.append('Server 500') + if not req.status_code == 200 or not req.json()['status'] == 'success': + print(req.status_code) + errs.append(req.json()) + + num_promoted += 1 + num_to_promote -= 1 + else: + break + +print('\n') + +msg = 'Hi, here is your daily waitlist report:\n' +msg += '\nBefore Promotion:\n' +msg += ' Reg Cap: ' + str(WAITLIST_LIMIT) + '\n' +msg += ' Num Attendees: ' + str(num_attendees) + '\n' +msg += ' Num Waitlisted: ' + str(num_waitlisted) + '\n' +msg += ' Num to Promote: ' + str(num_to_promote_copy) + '\n' +msg += '\nAfter Promotion:\n' +msg += ' Num Promoted (Attempted): ' + str(num_promoted) + '\n' +msg += ' Error Count: ' + str(len(errs)) + '\n' +msg += ' Num To Promote: ' + str(num_to_promote) + '\n' +msg += '\nPromotion Error Messages:\n' +msg += ' ' + str(errs) + '\n' + +print(msg) + +#send_email('hack@wpi.edu', 'HackWPI - Daily Waitlist Report!', msg) +send_email('bkayastha@wpi.edu', 'HackWPI - Daily Waitlist Report!', msg) diff --git a/migrations/README b/migrations/README deleted file mode 100644 index 0e04844..0000000 --- a/migrations/README +++ /dev/null @@ -1 +0,0 @@ -Single-database configuration for Flask. diff --git a/migrations/alembic.ini b/migrations/alembic.ini deleted file mode 100644 index ec9d45c..0000000 --- a/migrations/alembic.ini +++ /dev/null @@ -1,50 +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,flask_migrate - -[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 - -[logger_flask_migrate] -level = INFO -handlers = -qualname = flask_migrate - -[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 55e9df9..0000000 --- a/migrations/env.py +++ /dev/null @@ -1,97 +0,0 @@ -from __future__ import with_statement - -import logging -from logging.config import fileConfig - -from flask import current_app - -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 -config.set_main_option( - 'sqlalchemy.url', - str(current_app.extensions['migrate'].db.get_engine().url).replace( - '%', '%%')) -target_db = current_app.extensions['migrate'].db - -# 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 get_metadata(): - if hasattr(target_db, 'metadatas'): - return target_db.metadatas[None] - return target_db.metadata - - -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=get_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 = current_app.extensions['migrate'].db.get_engine() - - with connectable.connect() as connection: - context.configure( - connection=connection, - target_metadata=get_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/261c004968a4_.py b/migrations/versions/261c004968a4_.py deleted file mode 100644 index bfddb2b..0000000 --- a/migrations/versions/261c004968a4_.py +++ /dev/null @@ -1,32 +0,0 @@ -"""empty message - -Revision ID: 261c004968a4 -Revises: 8a0c9c00f04c -Create Date: 2023-01-03 17:58:35.801660 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '261c004968a4' -down_revision = '8a0c9c00f04c' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('pw_reset_request', schema=None) as batch_op: - batch_op.add_column(sa.Column('expires', sa.DateTime(), nullable=False)) - - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('pw_reset_request', schema=None) as batch_op: - batch_op.drop_column('expires') - - # ### end Alembic commands ### diff --git a/migrations/versions/311c62fe5f49_.py b/migrations/versions/311c62fe5f49_.py deleted file mode 100644 index b00a6fb..0000000 --- a/migrations/versions/311c62fe5f49_.py +++ /dev/null @@ -1,32 +0,0 @@ -"""empty message - -Revision ID: 311c62fe5f49 -Revises: 3f427be4ce8a -Create Date: 2022-12-06 11:08:18.571528 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '311c62fe5f49' -down_revision = '3f427be4ce8a' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('user', schema=None) as batch_op: - batch_op.add_column(sa.Column('school', sa.String(), nullable=True)) - - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('user', schema=None) as batch_op: - batch_op.drop_column('school') - - # ### end Alembic commands ### diff --git a/migrations/versions/3f427be4ce8a_.py b/migrations/versions/3f427be4ce8a_.py deleted file mode 100644 index 8c29441..0000000 --- a/migrations/versions/3f427be4ce8a_.py +++ /dev/null @@ -1,33 +0,0 @@ -"""empty message - -Revision ID: 3f427be4ce8a -Revises: 55d77cdbbb49 -Create Date: 2022-12-06 10:18:07.322064 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '3f427be4ce8a' -down_revision = '55d77cdbbb49' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('user', schema=None) as batch_op: - batch_op.add_column(sa.Column('checked_in', sa.Boolean(), - nullable=False, default=False)) - - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('user', schema=None) as batch_op: - batch_op.drop_column('checked_in') - - # ### end Alembic commands ### diff --git a/migrations/versions/55d77cdbbb49_.py b/migrations/versions/55d77cdbbb49_.py deleted file mode 100644 index b807369..0000000 --- a/migrations/versions/55d77cdbbb49_.py +++ /dev/null @@ -1,34 +0,0 @@ -"""empty message - -Revision ID: 55d77cdbbb49 -Revises: d210860eb46a -Create Date: 2022-12-06 10:09:50.254449 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '55d77cdbbb49' -down_revision = 'd210860eb46a' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('user', schema=None) as batch_op: - batch_op.add_column(sa.Column('shirt_size', sa.String(), nullable=True)) - batch_op.add_column(sa.Column('accomodations', sa.String(), nullable=True)) - - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('user', schema=None) as batch_op: - batch_op.drop_column('accomodations') - batch_op.drop_column('shirt_size') - - # ### end Alembic commands ### diff --git a/migrations/versions/858e0d45876f_create_event_table.py b/migrations/versions/858e0d45876f_create_event_table.py deleted file mode 100644 index 736364a..0000000 --- a/migrations/versions/858e0d45876f_create_event_table.py +++ /dev/null @@ -1,46 +0,0 @@ -"""create_event_table - -Revision ID: 858e0d45876f -Revises: 261c004968a4 -Create Date: 2023-12-01 13:31:00.955470 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '858e0d45876f' -down_revision = '261c004968a4' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table('event', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('name', sa.String(), nullable=False), - sa.Column('description', sa.String(), nullable=True), - sa.Column('location', sa.String(), nullable=False), - sa.Column('start_time', sa.DateTime(), nullable=False), - sa.Column('end_time', sa.DateTime(), nullable=False), - sa.Column('category', sa.String(), nullable=True), - sa.PrimaryKeyConstraint('id') - ) - op.create_table('event_checkins', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('event_id', sa.Integer(), nullable=False), - sa.Column('user_id', sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(['event_id'], ['event.id'], ), - sa.ForeignKeyConstraint(['user_id'], ['user.id'], ), - sa.PrimaryKeyConstraint('id') - ) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_table('event_checkins') - op.drop_table('event') - # ### end Alembic commands ### diff --git a/migrations/versions/8a0c9c00f04c_.py b/migrations/versions/8a0c9c00f04c_.py deleted file mode 100644 index dd7524f..0000000 --- a/migrations/versions/8a0c9c00f04c_.py +++ /dev/null @@ -1,34 +0,0 @@ -"""empty message - -Revision ID: 8a0c9c00f04c -Revises: db38c3deb0b9 -Create Date: 2023-01-03 16:59:23.201953 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '8a0c9c00f04c' -down_revision = 'db38c3deb0b9' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('pw_reset_request', schema=None) as batch_op: - batch_op.add_column(sa.Column('user_id', sa.Integer(), nullable=False)) - batch_op.create_foreign_key(None, 'user', ['user_id'], ['id']) - - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('pw_reset_request', schema=None) as batch_op: - batch_op.drop_constraint(None, type_='foreignkey') - batch_op.drop_column('user_id') - - # ### end Alembic commands ### diff --git a/migrations/versions/8d6ae751ec62_.py b/migrations/versions/8d6ae751ec62_.py deleted file mode 100644 index dcc381a..0000000 --- a/migrations/versions/8d6ae751ec62_.py +++ /dev/null @@ -1,32 +0,0 @@ -"""empty message - -Revision ID: 8d6ae751ec62 -Revises: 311c62fe5f49 -Create Date: 2022-12-06 11:08:55.896919 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '8d6ae751ec62' -down_revision = '311c62fe5f49' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('user', schema=None) as batch_op: - batch_op.add_column(sa.Column('phone', sa.String(), nullable=True)) - - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('user', schema=None) as batch_op: - batch_op.drop_column('phone') - - # ### end Alembic commands ### diff --git a/migrations/versions/a14a95ec57b0_.py b/migrations/versions/a14a95ec57b0_.py deleted file mode 100644 index 0d930a5..0000000 --- a/migrations/versions/a14a95ec57b0_.py +++ /dev/null @@ -1,32 +0,0 @@ -"""empty message - -Revision ID: a14a95ec57b0 -Revises: 8d6ae751ec62 -Create Date: 2022-12-06 11:12:30.581556 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'a14a95ec57b0' -down_revision = '8d6ae751ec62' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('user', schema=None) as batch_op: - batch_op.add_column(sa.Column('gender', sa.String(), nullable=True)) - - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('user', schema=None) as batch_op: - batch_op.drop_column('gender') - - # ### end Alembic commands ### diff --git a/migrations/versions/afb7433de2f3_create_user.py b/migrations/versions/afb7433de2f3_create_user.py deleted file mode 100644 index 3966df1..0000000 --- a/migrations/versions/afb7433de2f3_create_user.py +++ /dev/null @@ -1,39 +0,0 @@ -"""create user - -Revision ID: afb7433de2f3 -Revises: -Create Date: 2022-12-05 16:33:45.070436 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'afb7433de2f3' -down_revision = None -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table('user', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('email', sa.String(), nullable=False), - sa.Column('password', sa.String(), nullable=False), - sa.Column('first_name', sa.String(), nullable=False), - sa.Column('last_name', sa.String(), nullable=False), - sa.Column('last_login', sa.DateTime(), nullable=False), - sa.Column('active', sa.Boolean(), nullable=False), - sa.Column('is_admin', sa.Boolean(), nullable=False), - sa.PrimaryKeyConstraint('id'), - sa.UniqueConstraint('email') - ) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_table('user') - # ### end Alembic commands ### diff --git a/migrations/versions/d210860eb46a_add_waitlist_field.py b/migrations/versions/d210860eb46a_add_waitlist_field.py deleted file mode 100644 index e60a7e5..0000000 --- a/migrations/versions/d210860eb46a_add_waitlist_field.py +++ /dev/null @@ -1,32 +0,0 @@ -"""add waitlist field - -Revision ID: d210860eb46a -Revises: afb7433de2f3 -Create Date: 2022-12-05 17:12:08.061473 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'd210860eb46a' -down_revision = 'afb7433de2f3' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('user', schema=None) as batch_op: - batch_op.add_column(sa.Column('waitlisted', sa.Boolean(), nullable=False)) - - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('user', schema=None) as batch_op: - batch_op.drop_column('waitlisted') - - # ### end Alembic commands ### diff --git a/migrations/versions/db38c3deb0b9_.py b/migrations/versions/db38c3deb0b9_.py deleted file mode 100644 index bdb87c2..0000000 --- a/migrations/versions/db38c3deb0b9_.py +++ /dev/null @@ -1,31 +0,0 @@ -"""empty message - -Revision ID: db38c3deb0b9 -Revises: a14a95ec57b0 -Create Date: 2022-12-30 14:35:27.652423 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'db38c3deb0b9' -down_revision = 'a14a95ec57b0' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table('pw_reset_request', - sa.Column('id', sa.String(), nullable=False), - sa.PrimaryKeyConstraint('id') - ) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_table('pw_reset_request') - # ### end Alembic commands ### diff --git a/migrations/versions/f5b70c6e73eb_.py b/migrations/versions/f5b70c6e73eb_.py deleted file mode 100644 index 42d0b86..0000000 --- a/migrations/versions/f5b70c6e73eb_.py +++ /dev/null @@ -1,38 +0,0 @@ -"""empty message - -Revision ID: f5b70c6e73eb -Revises: 858e0d45876f -Create Date: 2024-10-31 13:04:48.500263 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'f5b70c6e73eb' -down_revision = '858e0d45876f' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('user', schema=None) as batch_op: - batch_op.add_column(sa.Column('newsletter', sa.Boolean(), nullable=False)) - batch_op.add_column(sa.Column('country', sa.String(), nullable=False)) - batch_op.add_column(sa.Column('age', sa.Integer(), nullable=False)) - batch_op.add_column(sa.Column('dietary_restrictions', sa.String(), nullable=True)) - - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - with op.batch_alter_table('user', schema=None) as batch_op: - batch_op.drop_column('dietary_restrictions') - batch_op.drop_column('age') - batch_op.drop_column('country') - batch_op.drop_column('newsletter') - - # ### end Alembic commands ### diff --git a/options.png b/options.png new file mode 100644 index 0000000..6ed6496 Binary files /dev/null and b/options.png differ diff --git a/requirements.txt b/requirements.txt index c638071..5ee67c2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,29 +1,9 @@ -alembic==1.8.1 -click==8.1.3 -Flask==2.2.2 -Flask-QRCode -Flask-Assets -Flask-CORS -Flask-Mail -Flask-Login==0.6.2 -Flask-Migrate==4.0.0 -Flask-SQLAlchemy==3.0.2 -Flask-WTF==1.0.1 -greenlet -itsdangerous==2.1.2 -Jinja2==3.1.2 -Mako==1.2.4 -MarkupSafe==2.1.1 -msgpack==1.0.4 -psycopg2==2.9.5 -pynvim==0.4.3 -python-dotenv==0.21.0 -SQLAlchemy==1.4.44 -uWSGI -Werkzeug==2.2.2 -WTForms==3.0.1 -ulid -bootstrap-flask -Font-Awesome-Flask -tabulate -markupsafe +Flask==0.12 +Flask_SQLAlchemy==2.1 +mailchimp3==2.0.7 +pubnub==4.0.6 +requests==2.13.0 +Werkzeug==0.11.15 +python_dateutil==2.6.0 +mysql-connector-python==8.0.5 +mysqlclient==1.3.12 diff --git a/resumes/binam_kayastha_42001.pdf b/resumes/binam_kayastha_42001.pdf new file mode 100644 index 0000000..363db11 Binary files /dev/null and b/resumes/binam_kayastha_42001.pdf differ diff --git a/resumes/hack_wpi_78137.pdf b/resumes/hack_wpi_78137.pdf new file mode 100644 index 0000000..363db11 Binary files /dev/null and b/resumes/hack_wpi_78137.pdf differ diff --git a/static/assets/MinorParticipationWaiverHACKTCNJ2017.doc.docx b/static/assets/MinorParticipationWaiverHACKTCNJ2017.doc.docx new file mode 100644 index 0000000..302cb85 Binary files /dev/null and b/static/assets/MinorParticipationWaiverHACKTCNJ2017.doc.docx differ diff --git a/static/css/materialize.min.css b/static/css/materialize.min.css new file mode 100644 index 0000000..3525439 --- /dev/null +++ b/static/css/materialize.min.css @@ -0,0 +1,16 @@ +/*! + * Materialize v0.97.3 (http://materializecss.com) + * Copyright 2014-2015 Materialize + * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) + */ +.materialize-red.lighten-5{background-color:#fdeaeb !important}.materialize-red-text.text-lighten-5{color:#fdeaeb !important}.materialize-red.lighten-4{background-color:#f8c1c3 !important}.materialize-red-text.text-lighten-4{color:#f8c1c3 !important}.materialize-red.lighten-3{background-color:#f3989b !important}.materialize-red-text.text-lighten-3{color:#f3989b !important}.materialize-red.lighten-2{background-color:#ee6e73 !important}.materialize-red-text.text-lighten-2{color:#ee6e73 !important}.materialize-red.lighten-1{background-color:#ea454b !important}.materialize-red-text.text-lighten-1{color:#ea454b !important}.materialize-red{background-color:#e51c23 !important}.materialize-red-text{color:#e51c23 !important}.materialize-red.darken-1{background-color:#d0181e !important}.materialize-red-text.text-darken-1{color:#d0181e !important}.materialize-red.darken-2{background-color:#b9151b !important}.materialize-red-text.text-darken-2{color:#b9151b !important}.materialize-red.darken-3{background-color:#a21318 !important}.materialize-red-text.text-darken-3{color:#a21318 !important}.materialize-red.darken-4{background-color:#8b1014 !important}.materialize-red-text.text-darken-4{color:#8b1014 !important}.red.lighten-5{background-color:#FFEBEE !important}.red-text.text-lighten-5{color:#FFEBEE !important}.red.lighten-4{background-color:#FFCDD2 !important}.red-text.text-lighten-4{color:#FFCDD2 !important}.red.lighten-3{background-color:#EF9A9A !important}.red-text.text-lighten-3{color:#EF9A9A !important}.red.lighten-2{background-color:#E57373 !important}.red-text.text-lighten-2{color:#E57373 !important}.red.lighten-1{background-color:#EF5350 !important}.red-text.text-lighten-1{color:#EF5350 !important}.red{background-color:#F44336 !important}.red-text{color:#F44336 !important}.red.darken-1{background-color:#E53935 !important}.red-text.text-darken-1{color:#E53935 !important}.red.darken-2{background-color:#D32F2F !important}.red-text.text-darken-2{color:#D32F2F !important}.red.darken-3{background-color:#C62828 !important}.red-text.text-darken-3{color:#C62828 !important}.red.darken-4{background-color:#B71C1C !important}.red-text.text-darken-4{color:#B71C1C !important}.red.accent-1{background-color:#FF8A80 !important}.red-text.text-accent-1{color:#FF8A80 !important}.red.accent-2{background-color:#FF5252 !important}.red-text.text-accent-2{color:#FF5252 !important}.red.accent-3{background-color:#FF1744 !important}.red-text.text-accent-3{color:#FF1744 !important}.red.accent-4{background-color:#D50000 !important}.red-text.text-accent-4{color:#D50000 !important}.pink.lighten-5{background-color:#fce4ec !important}.pink-text.text-lighten-5{color:#fce4ec !important}.pink.lighten-4{background-color:#f8bbd0 !important}.pink-text.text-lighten-4{color:#f8bbd0 !important}.pink.lighten-3{background-color:#f48fb1 !important}.pink-text.text-lighten-3{color:#f48fb1 !important}.pink.lighten-2{background-color:#f06292 !important}.pink-text.text-lighten-2{color:#f06292 !important}.pink.lighten-1{background-color:#ec407a !important}.pink-text.text-lighten-1{color:#ec407a !important}.pink{background-color:#e91e63 !important}.pink-text{color:#e91e63 !important}.pink.darken-1{background-color:#d81b60 !important}.pink-text.text-darken-1{color:#d81b60 !important}.pink.darken-2{background-color:#c2185b !important}.pink-text.text-darken-2{color:#c2185b !important}.pink.darken-3{background-color:#ad1457 !important}.pink-text.text-darken-3{color:#ad1457 !important}.pink.darken-4{background-color:#880e4f !important}.pink-text.text-darken-4{color:#880e4f !important}.pink.accent-1{background-color:#ff80ab !important}.pink-text.text-accent-1{color:#ff80ab !important}.pink.accent-2{background-color:#ff4081 !important}.pink-text.text-accent-2{color:#ff4081 !important}.pink.accent-3{background-color:#f50057 !important}.pink-text.text-accent-3{color:#f50057 !important}.pink.accent-4{background-color:#c51162 !important}.pink-text.text-accent-4{color:#c51162 !important}.purple.lighten-5{background-color:#f3e5f5 !important}.purple-text.text-lighten-5{color:#f3e5f5 !important}.purple.lighten-4{background-color:#e1bee7 !important}.purple-text.text-lighten-4{color:#e1bee7 !important}.purple.lighten-3{background-color:#ce93d8 !important}.purple-text.text-lighten-3{color:#ce93d8 !important}.purple.lighten-2{background-color:#ba68c8 !important}.purple-text.text-lighten-2{color:#ba68c8 !important}.purple.lighten-1{background-color:#ab47bc !important}.purple-text.text-lighten-1{color:#ab47bc !important}.purple{background-color:#9c27b0 !important}.purple-text{color:#9c27b0 !important}.purple.darken-1{background-color:#8e24aa !important}.purple-text.text-darken-1{color:#8e24aa !important}.purple.darken-2{background-color:#7b1fa2 !important}.purple-text.text-darken-2{color:#7b1fa2 !important}.purple.darken-3{background-color:#6a1b9a !important}.purple-text.text-darken-3{color:#6a1b9a !important}.purple.darken-4{background-color:#4a148c !important}.purple-text.text-darken-4{color:#4a148c !important}.purple.accent-1{background-color:#ea80fc !important}.purple-text.text-accent-1{color:#ea80fc !important}.purple.accent-2{background-color:#e040fb !important}.purple-text.text-accent-2{color:#e040fb !important}.purple.accent-3{background-color:#d500f9 !important}.purple-text.text-accent-3{color:#d500f9 !important}.purple.accent-4{background-color:#aa00ff !important}.purple-text.text-accent-4{color:#aa00ff !important}.deep-purple.lighten-5{background-color:#ede7f6 !important}.deep-purple-text.text-lighten-5{color:#ede7f6 !important}.deep-purple.lighten-4{background-color:#d1c4e9 !important}.deep-purple-text.text-lighten-4{color:#d1c4e9 !important}.deep-purple.lighten-3{background-color:#b39ddb !important}.deep-purple-text.text-lighten-3{color:#b39ddb !important}.deep-purple.lighten-2{background-color:#9575cd !important}.deep-purple-text.text-lighten-2{color:#9575cd !important}.deep-purple.lighten-1{background-color:#7e57c2 !important}.deep-purple-text.text-lighten-1{color:#7e57c2 !important}.deep-purple{background-color:#673ab7 !important}.deep-purple-text{color:#673ab7 !important}.deep-purple.darken-1{background-color:#5e35b1 !important}.deep-purple-text.text-darken-1{color:#5e35b1 !important}.deep-purple.darken-2{background-color:#512da8 !important}.deep-purple-text.text-darken-2{color:#512da8 !important}.deep-purple.darken-3{background-color:#4527a0 !important}.deep-purple-text.text-darken-3{color:#4527a0 !important}.deep-purple.darken-4{background-color:#311b92 !important}.deep-purple-text.text-darken-4{color:#311b92 !important}.deep-purple.accent-1{background-color:#b388ff !important}.deep-purple-text.text-accent-1{color:#b388ff !important}.deep-purple.accent-2{background-color:#7c4dff !important}.deep-purple-text.text-accent-2{color:#7c4dff !important}.deep-purple.accent-3{background-color:#651fff !important}.deep-purple-text.text-accent-3{color:#651fff !important}.deep-purple.accent-4{background-color:#6200ea !important}.deep-purple-text.text-accent-4{color:#6200ea !important}.indigo.lighten-5{background-color:#e8eaf6 !important}.indigo-text.text-lighten-5{color:#e8eaf6 !important}.indigo.lighten-4{background-color:#c5cae9 !important}.indigo-text.text-lighten-4{color:#c5cae9 !important}.indigo.lighten-3{background-color:#9fa8da !important}.indigo-text.text-lighten-3{color:#9fa8da !important}.indigo.lighten-2{background-color:#7986cb !important}.indigo-text.text-lighten-2{color:#7986cb !important}.indigo.lighten-1{background-color:#5c6bc0 !important}.indigo-text.text-lighten-1{color:#5c6bc0 !important}.indigo{background-color:#3f51b5 !important}.indigo-text{color:#3f51b5 !important}.indigo.darken-1{background-color:#3949ab !important}.indigo-text.text-darken-1{color:#3949ab !important}.indigo.darken-2{background-color:#303f9f !important}.indigo-text.text-darken-2{color:#303f9f !important}.indigo.darken-3{background-color:#283593 !important}.indigo-text.text-darken-3{color:#283593 !important}.indigo.darken-4{background-color:#1a237e !important}.indigo-text.text-darken-4{color:#1a237e !important}.indigo.accent-1{background-color:#8c9eff !important}.indigo-text.text-accent-1{color:#8c9eff !important}.indigo.accent-2{background-color:#536dfe !important}.indigo-text.text-accent-2{color:#536dfe !important}.indigo.accent-3{background-color:#3d5afe !important}.indigo-text.text-accent-3{color:#3d5afe !important}.indigo.accent-4{background-color:#304ffe !important}.indigo-text.text-accent-4{color:#304ffe !important}.blue.lighten-5{background-color:#E3F2FD !important}.blue-text.text-lighten-5{color:#E3F2FD !important}.blue.lighten-4{background-color:#BBDEFB !important}.blue-text.text-lighten-4{color:#BBDEFB !important}.blue.lighten-3{background-color:#90CAF9 !important}.blue-text.text-lighten-3{color:#90CAF9 !important}.blue.lighten-2{background-color:#64B5F6 !important}.blue-text.text-lighten-2{color:#64B5F6 !important}.blue.lighten-1{background-color:#42A5F5 !important}.blue-text.text-lighten-1{color:#42A5F5 !important}.blue{background-color:#2196F3 !important}.blue-text{color:#2196F3 !important}.blue.darken-1{background-color:#1E88E5 !important}.blue-text.text-darken-1{color:#1E88E5 !important}.blue.darken-2{background-color:#1976D2 !important}.blue-text.text-darken-2{color:#1976D2 !important}.blue.darken-3{background-color:#1565C0 !important}.blue-text.text-darken-3{color:#1565C0 !important}.blue.darken-4{background-color:#0D47A1 !important}.blue-text.text-darken-4{color:#0D47A1 !important}.blue.accent-1{background-color:#82B1FF !important}.blue-text.text-accent-1{color:#82B1FF !important}.blue.accent-2{background-color:#448AFF !important}.blue-text.text-accent-2{color:#448AFF !important}.blue.accent-3{background-color:#2979FF !important}.blue-text.text-accent-3{color:#2979FF !important}.blue.accent-4{background-color:#2962FF !important}.blue-text.text-accent-4{color:#2962FF !important}.light-blue.lighten-5{background-color:#e1f5fe !important}.light-blue-text.text-lighten-5{color:#e1f5fe !important}.light-blue.lighten-4{background-color:#b3e5fc !important}.light-blue-text.text-lighten-4{color:#b3e5fc !important}.light-blue.lighten-3{background-color:#81d4fa !important}.light-blue-text.text-lighten-3{color:#81d4fa !important}.light-blue.lighten-2{background-color:#4fc3f7 !important}.light-blue-text.text-lighten-2{color:#4fc3f7 !important}.light-blue.lighten-1{background-color:#29b6f6 !important}.light-blue-text.text-lighten-1{color:#29b6f6 !important}.light-blue{background-color:#03a9f4 !important}.light-blue-text{color:#03a9f4 !important}.light-blue.darken-1{background-color:#039be5 !important}.light-blue-text.text-darken-1{color:#039be5 !important}.light-blue.darken-2{background-color:#0288d1 !important}.light-blue-text.text-darken-2{color:#0288d1 !important}.light-blue.darken-3{background-color:#0277bd !important}.light-blue-text.text-darken-3{color:#0277bd !important}.light-blue.darken-4{background-color:#01579b !important}.light-blue-text.text-darken-4{color:#01579b !important}.light-blue.accent-1{background-color:#80d8ff !important}.light-blue-text.text-accent-1{color:#80d8ff !important}.light-blue.accent-2{background-color:#40c4ff !important}.light-blue-text.text-accent-2{color:#40c4ff !important}.light-blue.accent-3{background-color:#00b0ff !important}.light-blue-text.text-accent-3{color:#00b0ff !important}.light-blue.accent-4{background-color:#0091ea !important}.light-blue-text.text-accent-4{color:#0091ea !important}.cyan.lighten-5{background-color:#e0f7fa !important}.cyan-text.text-lighten-5{color:#e0f7fa !important}.cyan.lighten-4{background-color:#b2ebf2 !important}.cyan-text.text-lighten-4{color:#b2ebf2 !important}.cyan.lighten-3{background-color:#80deea !important}.cyan-text.text-lighten-3{color:#80deea !important}.cyan.lighten-2{background-color:#4dd0e1 !important}.cyan-text.text-lighten-2{color:#4dd0e1 !important}.cyan.lighten-1{background-color:#26c6da !important}.cyan-text.text-lighten-1{color:#26c6da !important}.cyan{background-color:#00bcd4 !important}.cyan-text{color:#00bcd4 !important}.cyan.darken-1{background-color:#00acc1 !important}.cyan-text.text-darken-1{color:#00acc1 !important}.cyan.darken-2{background-color:#0097a7 !important}.cyan-text.text-darken-2{color:#0097a7 !important}.cyan.darken-3{background-color:#00838f !important}.cyan-text.text-darken-3{color:#00838f !important}.cyan.darken-4{background-color:#006064 !important}.cyan-text.text-darken-4{color:#006064 !important}.cyan.accent-1{background-color:#84ffff !important}.cyan-text.text-accent-1{color:#84ffff !important}.cyan.accent-2{background-color:#18ffff !important}.cyan-text.text-accent-2{color:#18ffff !important}.cyan.accent-3{background-color:#00e5ff !important}.cyan-text.text-accent-3{color:#00e5ff !important}.cyan.accent-4{background-color:#00b8d4 !important}.cyan-text.text-accent-4{color:#00b8d4 !important}.teal.lighten-5{background-color:#e0f2f1 !important}.teal-text.text-lighten-5{color:#e0f2f1 !important}.teal.lighten-4{background-color:#b2dfdb !important}.teal-text.text-lighten-4{color:#b2dfdb !important}.teal.lighten-3{background-color:#80cbc4 !important}.teal-text.text-lighten-3{color:#80cbc4 !important}.teal.lighten-2{background-color:#4db6ac !important}.teal-text.text-lighten-2{color:#4db6ac !important}.teal.lighten-1{background-color:#26a69a !important}.teal-text.text-lighten-1{color:#26a69a !important}.teal{background-color:#009688 !important}.teal-text{color:#009688 !important}.teal.darken-1{background-color:#00897b !important}.teal-text.text-darken-1{color:#00897b !important}.teal.darken-2{background-color:#00796b !important}.teal-text.text-darken-2{color:#00796b !important}.teal.darken-3{background-color:#00695c !important}.teal-text.text-darken-3{color:#00695c !important}.teal.darken-4{background-color:#004d40 !important}.teal-text.text-darken-4{color:#004d40 !important}.teal.accent-1{background-color:#a7ffeb !important}.teal-text.text-accent-1{color:#a7ffeb !important}.teal.accent-2{background-color:#64ffda !important}.teal-text.text-accent-2{color:#64ffda !important}.teal.accent-3{background-color:#1de9b6 !important}.teal-text.text-accent-3{color:#1de9b6 !important}.teal.accent-4{background-color:#00bfa5 !important}.teal-text.text-accent-4{color:#00bfa5 !important}.green.lighten-5{background-color:#E8F5E9 !important}.green-text.text-lighten-5{color:#E8F5E9 !important}.green.lighten-4{background-color:#C8E6C9 !important}.green-text.text-lighten-4{color:#C8E6C9 !important}.green.lighten-3{background-color:#A5D6A7 !important}.green-text.text-lighten-3{color:#A5D6A7 !important}.green.lighten-2{background-color:#81C784 !important}.green-text.text-lighten-2{color:#81C784 !important}.green.lighten-1{background-color:#66BB6A !important}.green-text.text-lighten-1{color:#66BB6A !important}.green{background-color:#4CAF50 !important}.green-text{color:#4CAF50 !important}.green.darken-1{background-color:#43A047 !important}.green-text.text-darken-1{color:#43A047 !important}.green.darken-2{background-color:#388E3C !important}.green-text.text-darken-2{color:#388E3C !important}.green.darken-3{background-color:#2E7D32 !important}.green-text.text-darken-3{color:#2E7D32 !important}.green.darken-4{background-color:#1B5E20 !important}.green-text.text-darken-4{color:#1B5E20 !important}.green.accent-1{background-color:#B9F6CA !important}.green-text.text-accent-1{color:#B9F6CA !important}.green.accent-2{background-color:#69F0AE !important}.green-text.text-accent-2{color:#69F0AE !important}.green.accent-3{background-color:#00E676 !important}.green-text.text-accent-3{color:#00E676 !important}.green.accent-4{background-color:#00C853 !important}.green-text.text-accent-4{color:#00C853 !important}.light-green.lighten-5{background-color:#f1f8e9 !important}.light-green-text.text-lighten-5{color:#f1f8e9 !important}.light-green.lighten-4{background-color:#dcedc8 !important}.light-green-text.text-lighten-4{color:#dcedc8 !important}.light-green.lighten-3{background-color:#c5e1a5 !important}.light-green-text.text-lighten-3{color:#c5e1a5 !important}.light-green.lighten-2{background-color:#aed581 !important}.light-green-text.text-lighten-2{color:#aed581 !important}.light-green.lighten-1{background-color:#9ccc65 !important}.light-green-text.text-lighten-1{color:#9ccc65 !important}.light-green{background-color:#8bc34a !important}.light-green-text{color:#8bc34a !important}.light-green.darken-1{background-color:#7cb342 !important}.light-green-text.text-darken-1{color:#7cb342 !important}.light-green.darken-2{background-color:#689f38 !important}.light-green-text.text-darken-2{color:#689f38 !important}.light-green.darken-3{background-color:#558b2f !important}.light-green-text.text-darken-3{color:#558b2f !important}.light-green.darken-4{background-color:#33691e !important}.light-green-text.text-darken-4{color:#33691e !important}.light-green.accent-1{background-color:#ccff90 !important}.light-green-text.text-accent-1{color:#ccff90 !important}.light-green.accent-2{background-color:#b2ff59 !important}.light-green-text.text-accent-2{color:#b2ff59 !important}.light-green.accent-3{background-color:#76ff03 !important}.light-green-text.text-accent-3{color:#76ff03 !important}.light-green.accent-4{background-color:#64dd17 !important}.light-green-text.text-accent-4{color:#64dd17 !important}.lime.lighten-5{background-color:#f9fbe7 !important}.lime-text.text-lighten-5{color:#f9fbe7 !important}.lime.lighten-4{background-color:#f0f4c3 !important}.lime-text.text-lighten-4{color:#f0f4c3 !important}.lime.lighten-3{background-color:#e6ee9c !important}.lime-text.text-lighten-3{color:#e6ee9c !important}.lime.lighten-2{background-color:#dce775 !important}.lime-text.text-lighten-2{color:#dce775 !important}.lime.lighten-1{background-color:#d4e157 !important}.lime-text.text-lighten-1{color:#d4e157 !important}.lime{background-color:#cddc39 !important}.lime-text{color:#cddc39 !important}.lime.darken-1{background-color:#c0ca33 !important}.lime-text.text-darken-1{color:#c0ca33 !important}.lime.darken-2{background-color:#afb42b !important}.lime-text.text-darken-2{color:#afb42b !important}.lime.darken-3{background-color:#9e9d24 !important}.lime-text.text-darken-3{color:#9e9d24 !important}.lime.darken-4{background-color:#827717 !important}.lime-text.text-darken-4{color:#827717 !important}.lime.accent-1{background-color:#f4ff81 !important}.lime-text.text-accent-1{color:#f4ff81 !important}.lime.accent-2{background-color:#eeff41 !important}.lime-text.text-accent-2{color:#eeff41 !important}.lime.accent-3{background-color:#c6ff00 !important}.lime-text.text-accent-3{color:#c6ff00 !important}.lime.accent-4{background-color:#aeea00 !important}.lime-text.text-accent-4{color:#aeea00 !important}.yellow.lighten-5{background-color:#fffde7 !important}.yellow-text.text-lighten-5{color:#fffde7 !important}.yellow.lighten-4{background-color:#fff9c4 !important}.yellow-text.text-lighten-4{color:#fff9c4 !important}.yellow.lighten-3{background-color:#fff59d !important}.yellow-text.text-lighten-3{color:#fff59d !important}.yellow.lighten-2{background-color:#fff176 !important}.yellow-text.text-lighten-2{color:#fff176 !important}.yellow.lighten-1{background-color:#ffee58 !important}.yellow-text.text-lighten-1{color:#ffee58 !important}.yellow{background-color:#ffeb3b !important}.yellow-text{color:#ffeb3b !important}.yellow.darken-1{background-color:#fdd835 !important}.yellow-text.text-darken-1{color:#fdd835 !important}.yellow.darken-2{background-color:#fbc02d !important}.yellow-text.text-darken-2{color:#fbc02d !important}.yellow.darken-3{background-color:#f9a825 !important}.yellow-text.text-darken-3{color:#f9a825 !important}.yellow.darken-4{background-color:#f57f17 !important}.yellow-text.text-darken-4{color:#f57f17 !important}.yellow.accent-1{background-color:#ffff8d !important}.yellow-text.text-accent-1{color:#ffff8d !important}.yellow.accent-2{background-color:#ffff00 !important}.yellow-text.text-accent-2{color:#ffff00 !important}.yellow.accent-3{background-color:#ffea00 !important}.yellow-text.text-accent-3{color:#ffea00 !important}.yellow.accent-4{background-color:#ffd600 !important}.yellow-text.text-accent-4{color:#ffd600 !important}.amber.lighten-5{background-color:#fff8e1 !important}.amber-text.text-lighten-5{color:#fff8e1 !important}.amber.lighten-4{background-color:#ffecb3 !important}.amber-text.text-lighten-4{color:#ffecb3 !important}.amber.lighten-3{background-color:#ffe082 !important}.amber-text.text-lighten-3{color:#ffe082 !important}.amber.lighten-2{background-color:#ffd54f !important}.amber-text.text-lighten-2{color:#ffd54f !important}.amber.lighten-1{background-color:#ffca28 !important}.amber-text.text-lighten-1{color:#ffca28 !important}.amber{background-color:#ffc107 !important}.amber-text{color:#ffc107 !important}.amber.darken-1{background-color:#ffb300 !important}.amber-text.text-darken-1{color:#ffb300 !important}.amber.darken-2{background-color:#ffa000 !important}.amber-text.text-darken-2{color:#ffa000 !important}.amber.darken-3{background-color:#ff8f00 !important}.amber-text.text-darken-3{color:#ff8f00 !important}.amber.darken-4{background-color:#ff6f00 !important}.amber-text.text-darken-4{color:#ff6f00 !important}.amber.accent-1{background-color:#ffe57f !important}.amber-text.text-accent-1{color:#ffe57f !important}.amber.accent-2{background-color:#ffd740 !important}.amber-text.text-accent-2{color:#ffd740 !important}.amber.accent-3{background-color:#ffc400 !important}.amber-text.text-accent-3{color:#ffc400 !important}.amber.accent-4{background-color:#ffab00 !important}.amber-text.text-accent-4{color:#ffab00 !important}.orange.lighten-5{background-color:#fff3e0 !important}.orange-text.text-lighten-5{color:#fff3e0 !important}.orange.lighten-4{background-color:#ffe0b2 !important}.orange-text.text-lighten-4{color:#ffe0b2 !important}.orange.lighten-3{background-color:#ffcc80 !important}.orange-text.text-lighten-3{color:#ffcc80 !important}.orange.lighten-2{background-color:#ffb74d !important}.orange-text.text-lighten-2{color:#ffb74d !important}.orange.lighten-1{background-color:#ffa726 !important}.orange-text.text-lighten-1{color:#ffa726 !important}.orange{background-color:#ff9800 !important}.orange-text{color:#ff9800 !important}.orange.darken-1{background-color:#fb8c00 !important}.orange-text.text-darken-1{color:#fb8c00 !important}.orange.darken-2{background-color:#f57c00 !important}.orange-text.text-darken-2{color:#f57c00 !important}.orange.darken-3{background-color:#ef6c00 !important}.orange-text.text-darken-3{color:#ef6c00 !important}.orange.darken-4{background-color:#e65100 !important}.orange-text.text-darken-4{color:#e65100 !important}.orange.accent-1{background-color:#ffd180 !important}.orange-text.text-accent-1{color:#ffd180 !important}.orange.accent-2{background-color:#ffab40 !important}.orange-text.text-accent-2{color:#ffab40 !important}.orange.accent-3{background-color:#ff9100 !important}.orange-text.text-accent-3{color:#ff9100 !important}.orange.accent-4{background-color:#ff6d00 !important}.orange-text.text-accent-4{color:#ff6d00 !important}.deep-orange.lighten-5{background-color:#fbe9e7 !important}.deep-orange-text.text-lighten-5{color:#fbe9e7 !important}.deep-orange.lighten-4{background-color:#ffccbc !important}.deep-orange-text.text-lighten-4{color:#ffccbc !important}.deep-orange.lighten-3{background-color:#ffab91 !important}.deep-orange-text.text-lighten-3{color:#ffab91 !important}.deep-orange.lighten-2{background-color:#ff8a65 !important}.deep-orange-text.text-lighten-2{color:#ff8a65 !important}.deep-orange.lighten-1{background-color:#ff7043 !important}.deep-orange-text.text-lighten-1{color:#ff7043 !important}.deep-orange{background-color:#ff5722 !important}.deep-orange-text{color:#ff5722 !important}.deep-orange.darken-1{background-color:#f4511e !important}.deep-orange-text.text-darken-1{color:#f4511e !important}.deep-orange.darken-2{background-color:#e64a19 !important}.deep-orange-text.text-darken-2{color:#e64a19 !important}.deep-orange.darken-3{background-color:#d84315 !important}.deep-orange-text.text-darken-3{color:#d84315 !important}.deep-orange.darken-4{background-color:#bf360c !important}.deep-orange-text.text-darken-4{color:#bf360c !important}.deep-orange.accent-1{background-color:#ff9e80 !important}.deep-orange-text.text-accent-1{color:#ff9e80 !important}.deep-orange.accent-2{background-color:#ff6e40 !important}.deep-orange-text.text-accent-2{color:#ff6e40 !important}.deep-orange.accent-3{background-color:#ff3d00 !important}.deep-orange-text.text-accent-3{color:#ff3d00 !important}.deep-orange.accent-4{background-color:#dd2c00 !important}.deep-orange-text.text-accent-4{color:#dd2c00 !important}.brown.lighten-5{background-color:#efebe9 !important}.brown-text.text-lighten-5{color:#efebe9 !important}.brown.lighten-4{background-color:#d7ccc8 !important}.brown-text.text-lighten-4{color:#d7ccc8 !important}.brown.lighten-3{background-color:#bcaaa4 !important}.brown-text.text-lighten-3{color:#bcaaa4 !important}.brown.lighten-2{background-color:#a1887f !important}.brown-text.text-lighten-2{color:#a1887f !important}.brown.lighten-1{background-color:#8d6e63 !important}.brown-text.text-lighten-1{color:#8d6e63 !important}.brown{background-color:#795548 !important}.brown-text{color:#795548 !important}.brown.darken-1{background-color:#6d4c41 !important}.brown-text.text-darken-1{color:#6d4c41 !important}.brown.darken-2{background-color:#5d4037 !important}.brown-text.text-darken-2{color:#5d4037 !important}.brown.darken-3{background-color:#4e342e !important}.brown-text.text-darken-3{color:#4e342e !important}.brown.darken-4{background-color:#3e2723 !important}.brown-text.text-darken-4{color:#3e2723 !important}.blue-grey.lighten-5{background-color:#eceff1 !important}.blue-grey-text.text-lighten-5{color:#eceff1 !important}.blue-grey.lighten-4{background-color:#cfd8dc !important}.blue-grey-text.text-lighten-4{color:#cfd8dc !important}.blue-grey.lighten-3{background-color:#b0bec5 !important}.blue-grey-text.text-lighten-3{color:#b0bec5 !important}.blue-grey.lighten-2{background-color:#90a4ae !important}.blue-grey-text.text-lighten-2{color:#90a4ae !important}.blue-grey.lighten-1{background-color:#78909c !important}.blue-grey-text.text-lighten-1{color:#78909c !important}.blue-grey{background-color:#607d8b !important}.blue-grey-text{color:#607d8b !important}.blue-grey.darken-1{background-color:#546e7a !important}.blue-grey-text.text-darken-1{color:#546e7a !important}.blue-grey.darken-2{background-color:#455a64 !important}.blue-grey-text.text-darken-2{color:#455a64 !important}.blue-grey.darken-3{background-color:#37474f !important}.blue-grey-text.text-darken-3{color:#37474f !important}.blue-grey.darken-4{background-color:#263238 !important}.blue-grey-text.text-darken-4{color:#263238 !important}.grey.lighten-5{background-color:#fafafa !important}.grey-text.text-lighten-5{color:#fafafa !important}.grey.lighten-4{background-color:#f5f5f5 !important}.grey-text.text-lighten-4{color:#f5f5f5 !important}.grey.lighten-3{background-color:#eeeeee !important}.grey-text.text-lighten-3{color:#eeeeee !important}.grey.lighten-2{background-color:#e0e0e0 !important}.grey-text.text-lighten-2{color:#e0e0e0 !important}.grey.lighten-1{background-color:#bdbdbd !important}.grey-text.text-lighten-1{color:#bdbdbd !important}.grey{background-color:#9e9e9e !important}.grey-text{color:#9e9e9e !important}.grey.darken-1{background-color:#757575 !important}.grey-text.text-darken-1{color:#757575 !important}.grey.darken-2{background-color:#616161 !important}.grey-text.text-darken-2{color:#616161 !important}.grey.darken-3{background-color:#424242 !important}.grey-text.text-darken-3{color:#424242 !important}.grey.darken-4{background-color:#212121 !important}.grey-text.text-darken-4{color:#212121 !important}.shades.black{background-color:#000000 !important}.shades-text.text-black{color:#000000 !important}.shades.white{background-color:#FFFFFF !important}.shades-text.text-white{color:#FFFFFF !important}.shades.transparent{background-color:transparent !important}.shades-text.text-transparent{color:transparent !important}.black{background-color:#000000 !important}.black-text{color:#000000 !important}.white{background-color:#FFFFFF !important}.white-text{color:#FFFFFF !important}.transparent{background-color:transparent !important}.transparent-text{color:transparent !important}/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}html input[type="button"],button,input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}ul{list-style-type:none}a{color:#039be5;text-decoration:none;-webkit-tap-highlight-color:transparent}.valign-wrapper{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center}.valign-wrapper .valign{display:block}ul{padding:0}ul li{list-style-type:none}.clearfix{clear:both}.z-depth-0{box-shadow:none !important}.z-depth-1,nav,.card-panel,.card,.toast,.btn,.btn-large,.btn-floating,.dropdown-content,.collapsible,.side-nav{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)}.z-depth-1-half,.btn:hover,.btn-large:hover,.btn-floating:hover{box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15)}.z-depth-2{box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.z-depth-3{box-shadow:0 12px 15px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19)}.z-depth-4,.modal{box-shadow:0 16px 28px 0 rgba(0,0,0,0.22),0 25px 55px 0 rgba(0,0,0,0.21)}.z-depth-5{box-shadow:0 27px 24px 0 rgba(0,0,0,0.2),0 40px 77px 0 rgba(0,0,0,0.22)}.hoverable:hover{transition:box-shadow .25s;box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.divider{height:1px;overflow:hidden;background-color:#e0e0e0}blockquote{margin:20px 0;padding-left:1.5rem;border-left:5px solid #ee6e73}i{line-height:inherit}i.left{float:left;margin-right:15px}i.right{float:right;margin-left:15px}i.tiny{font-size:1rem}i.small{font-size:2rem}i.medium{font-size:4rem}i.large{font-size:6rem}img.responsive-img,video.responsive-video{max-width:100%;height:auto}.pagination li{display:inline-block;font-size:1.2rem;padding:0 10px;line-height:30px;border-radius:2px;text-align:center}.pagination li a{color:#444}.pagination li.active a{color:#fff}.pagination li.active{background-color:#ee6e73}.pagination li.disabled a{cursor:default;color:#999}.pagination li i{font-size:2.2rem;vertical-align:middle}.pagination li.pages ul li{display:inline-block;float:none}@media only screen and (max-width : 992px){.pagination{width:100%}.pagination li.prev,.pagination li.next{width:10%}.pagination li.pages{width:80%;overflow:hidden;white-space:nowrap}}.breadcrumb{font-size:18px;color:rgba(255,255,255,0.7)}.breadcrumb:before{content:'\E5CC';color:rgba(255,255,255,0.7);vertical-align:top;display:inline-block;font-family:'Material Icons';font-weight:normal;font-style:normal;font-size:25px;margin:0 10px 0 8px;-webkit-font-smoothing:antialiased}.breadcrumb:first-child:before{display:none}.breadcrumb:last-child{color:#fff}.parallax-container{position:relative;overflow:hidden;height:500px}.parallax{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1}.parallax img{display:none;position:absolute;left:50%;bottom:0;min-width:100%;min-height:100%;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);transform:translateX(-50%)}.pin-top,.pin-bottom{position:relative}.pinned{position:fixed !important}ul.staggered-list li{opacity:0}.fade-in{opacity:0;transform-origin:0 50%}@media only screen and (max-width : 600px){.hide-on-small-only,.hide-on-small-and-down{display:none !important;}}@media only screen and (max-width : 992px){.hide-on-med-and-down{display:none !important;}}@media only screen and (min-width : 601px){.hide-on-med-and-up{display:none !important;}}@media only screen and (min-width: 600px) and (max-width: 992px){.hide-on-med-only{display:none !important;}}@media only screen and (min-width : 993px){.hide-on-large-only{display:none !important;}}@media only screen and (min-width : 993px){.show-on-large{display:initial !important;}}@media only screen and (min-width: 600px) and (max-width: 992px){.show-on-medium{display:initial !important;}}@media only screen and (max-width : 600px){.show-on-small{display:initial !important;}}@media only screen and (min-width : 601px){.show-on-medium-and-up{display:initial !important;}}@media only screen and (max-width : 992px){.show-on-medium-and-down{display:initial !important;}}@media only screen and (max-width : 600px){.center-on-small-only{text-align:center;}}footer.page-footer{margin-top:20px;padding-top:20px;background-color:#ee6e73}footer.page-footer .footer-copyright{overflow:hidden;height:50px;line-height:50px;color:rgba(255,255,255,0.8);background-color:rgba(51,51,51,0.08)}table,th,td{border:none}table{width:100%;display:table}table.bordered>thead>tr,table.bordered>tbody>tr{border-bottom:1px solid #d0d0d0}table.striped>tbody>tr:nth-child(odd){background-color:#f2f2f2}table.striped>tbody>tr>td{border-radius:0px}table.highlight>tbody>tr{-webkit-transition:background-color .25s ease;-moz-transition:background-color .25s ease;-o-transition:background-color .25s ease;-ms-transition:background-color .25s ease;transition:background-color .25s ease}table.highlight>tbody>tr:hover{background-color:#f2f2f2}table.centered thead tr th,table.centered tbody tr td{text-align:center}thead{border-bottom:1px solid #d0d0d0}td,th{padding:15px 5px;display:table-cell;text-align:left;vertical-align:middle;border-radius:2px}@media only screen and (max-width : 992px){table.responsive-table{width:100%;border-collapse:collapse;border-spacing:0;display:block;position:relative}table.responsive-table th,table.responsive-table td{margin:0;vertical-align:top}table.responsive-table th{text-align:left}table.responsive-table thead{display:block;float:left}table.responsive-table thead tr{display:block;padding:0 10px 0 0}table.responsive-table thead tr th::before{content:"\00a0"}table.responsive-table tbody{display:block;width:auto;position:relative;overflow-x:auto;white-space:nowrap}table.responsive-table tbody tr{display:inline-block;vertical-align:top}table.responsive-table th{display:block;text-align:right}table.responsive-table td{display:block;min-height:1.25em;text-align:left}table.responsive-table tr{padding:0 10px}table.responsive-table thead{border:0;border-right:1px solid #d0d0d0}table.responsive-table.bordered th{border-bottom:0;border-left:0}table.responsive-table.bordered td{border-left:0;border-right:0;border-bottom:0}table.responsive-table.bordered tr{border:0}table.responsive-table.bordered tbody tr{border-right:1px solid #d0d0d0}}.collection{margin:0.5rem 0 1rem 0;border:1px solid #e0e0e0;border-radius:2px;overflow:hidden;position:relative}.collection .collection-item{background-color:#fff;line-height:1.5rem;padding:10px 20px;margin:0;border-bottom:1px solid #e0e0e0}.collection .collection-item.avatar{min-height:84px;padding-left:72px;position:relative}.collection .collection-item.avatar .circle{position:absolute;width:42px;height:42px;overflow:hidden;left:15px;display:inline-block;vertical-align:middle}.collection .collection-item.avatar i.circle{font-size:18px;line-height:42px;color:#fff;background-color:#999;text-align:center}.collection .collection-item.avatar .title{font-size:16px}.collection .collection-item.avatar p{margin:0}.collection .collection-item.avatar .secondary-content{position:absolute;top:16px;right:16px}.collection .collection-item:last-child{border-bottom:none}.collection .collection-item.active{background-color:#26a69a;color:#eafaf9}.collection .collection-item.active .secondary-content{color:#fff}.collection a.collection-item{display:block;-webkit-transition:0.25s;-moz-transition:0.25s;-o-transition:0.25s;-ms-transition:0.25s;transition:0.25s;color:#26a69a}.collection a.collection-item:not(.active):hover{background-color:#ddd}.collection.with-header .collection-header{background-color:#fff;border-bottom:1px solid #e0e0e0;padding:10px 20px}.collection.with-header .collection-item{padding-left:30px}.collection.with-header .collection-item.avatar{padding-left:72px}.secondary-content{float:right;color:#26a69a}.collapsible .collection{margin:0;border:none}span.badge{min-width:3rem;padding:0 6px;text-align:center;font-size:1rem;line-height:inherit;color:#757575;position:absolute;right:15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}span.badge.new{font-weight:300;font-size:0.8rem;color:#fff;background-color:#26a69a;border-radius:2px}span.badge.new:after{content:" new"}nav ul a span.badge{position:static;margin-left:4px;line-height:0}.video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.video-container iframe,.video-container object,.video-container embed{position:absolute;top:0;left:0;width:100%;height:100%}.progress{position:relative;height:4px;display:block;width:100%;background-color:#acece6;border-radius:2px;margin:0.5rem 0 1rem 0;overflow:hidden}.progress .determinate{position:absolute;background-color:inherit;top:0;left:0;bottom:0;background-color:#26a69a;-webkit-transition:width .3s linear;-moz-transition:width .3s linear;-o-transition:width .3s linear;-ms-transition:width .3s linear;transition:width .3s linear}.progress .indeterminate{background-color:#26a69a}.progress .indeterminate:before{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;-moz-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;-ms-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;-o-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite}.progress .indeterminate:after{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-moz-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-ms-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-o-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-webkit-animation-delay:1.15s;-moz-animation-delay:1.15s;-ms-animation-delay:1.15s;-o-animation-delay:1.15s;animation-delay:1.15s}@-webkit-keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@-moz-keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@-webkit-keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}@-moz-keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}.hide{display:none !important}.left-align{text-align:left}.right-align{text-align:right}.center,.center-align{text-align:center}.left{float:left !important}.right{float:right !important}.no-select,input[type=range],input[type=range]+.thumb{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.circle{border-radius:50%}.center-block{display:block;margin-left:auto;margin-right:auto}.truncate{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.no-padding{padding:0 !important}@font-face{font-family:"Material-Design-Icons";src:url("../font/material-design-icons/Material-Design-Icons.eot?#iefix") format("embedded-opentype"),url("../font/material-design-icons/Material-Design-Icons.woff2") format("woff2"),url("../font/material-design-icons/Material-Design-Icons.woff") format("woff"),url("../font/material-design-icons/Material-Design-Icons.ttf") format("truetype"),url("../font/material-design-icons/Material-Design-Icons.svg#Material-Design-Icons") format("svg");font-weight:normal;font-style:normal;}[class^="mdi-"],[class*="mdi-"]{speak:none;display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;font-variant:normal;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}[class^="mdi-"]:before,[class*="mdi-"]:before{display:inline-block;speak:none;text-decoration:inherit}[class^="mdi-"].pull-left,[class*="mdi-"].pull-left{margin-right:.3em}[class^="mdi-"].pull-right,[class*="mdi-"].pull-right{margin-left:.3em}[class^="mdi-"].mdi-lg:before,[class^="mdi-"].mdi-lg:after,[class*="mdi-"].mdi-lg:before,[class*="mdi-"].mdi-lg:after{font-size:1.33333333em;line-height:0.75em;vertical-align:-15%}[class^="mdi-"].mdi-2x:before,[class^="mdi-"].mdi-2x:after,[class*="mdi-"].mdi-2x:before,[class*="mdi-"].mdi-2x:after{font-size:2em}[class^="mdi-"].mdi-3x:before,[class^="mdi-"].mdi-3x:after,[class*="mdi-"].mdi-3x:before,[class*="mdi-"].mdi-3x:after{font-size:3em}[class^="mdi-"].mdi-4x:before,[class^="mdi-"].mdi-4x:after,[class*="mdi-"].mdi-4x:before,[class*="mdi-"].mdi-4x:after{font-size:4em}[class^="mdi-"].mdi-5x:before,[class^="mdi-"].mdi-5x:after,[class*="mdi-"].mdi-5x:before,[class*="mdi-"].mdi-5x:after{font-size:5em}[class^="mdi-device-signal-cellular-"]:after,[class^="mdi-device-battery-"]:after,[class^="mdi-device-battery-charging-"]:after,[class^="mdi-device-signal-cellular-connected-no-internet-"]:after,[class^="mdi-device-signal-wifi-"]:after,[class^="mdi-device-signal-wifi-statusbar-not-connected"]:after,.mdi-device-network-wifi:after{opacity:.3;position:absolute;left:0;top:0;z-index:1;display:inline-block;speak:none;text-decoration:inherit}[class^="mdi-device-signal-cellular-"]:after{content:"\e758"}[class^="mdi-device-battery-"]:after{content:"\e735"}[class^="mdi-device-battery-charging-"]:after{content:"\e733"}[class^="mdi-device-signal-cellular-connected-no-internet-"]:after{content:"\e75d"}[class^="mdi-device-signal-wifi-"]:after,.mdi-device-network-wifi:after{content:"\e765"}[class^="mdi-device-signal-wifi-statusbasr-not-connected"]:after{content:"\e8f7"}.mdi-device-signal-cellular-off:after,.mdi-device-signal-cellular-null:after,.mdi-device-signal-cellular-no-sim:after,.mdi-device-signal-wifi-off:after,.mdi-device-signal-wifi-4-bar:after,.mdi-device-signal-cellular-4-bar:after,.mdi-device-battery-alert:after,.mdi-device-signal-cellular-connected-no-internet-4-bar:after,.mdi-device-battery-std:after,.mdi-device-battery-full .mdi-device-battery-unknown:after{content:""}.mdi-fw{width:1.28571429em;text-align:center}.mdi-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.mdi-ul>li{position:relative}.mdi-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:0.14285714em;text-align:center}.mdi-li.mdi-lg{left:-1.85714286em}.mdi-border{padding:.2em .25em .15em;border:solid 0.08em #eeeeee;border-radius:.1em}.mdi-spin{-webkit-animation:mdi-spin 2s infinite linear;animation:mdi-spin 2s infinite linear;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-o-transform-origin:50% 50%;transform-origin:50% 50%}.mdi-pulse{-webkit-animation:mdi-spin 1s steps(8) infinite;animation:mdi-spin 1s steps(8) infinite;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-o-transform-origin:50% 50%;transform-origin:50% 50%}@-webkit-keyframes mdi-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes mdi-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.mdi-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.mdi-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.mdi-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.mdi-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.mdi-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .mdi-rotate-90,:root .mdi-rotate-180,:root .mdi-rotate-270,:root .mdi-flip-horizontal,:root .mdi-flip-vertical{filter:none}.mdi-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.mdi-stack-1x,.mdi-stack-2x{position:absolute;left:0;width:100%;text-align:center}.mdi-stack-1x{line-height:inherit}.mdi-stack-2x{font-size:2em}.mdi-inverse{color:#ffffff}.mdi-action-3d-rotation:before{content:"\e600"}.mdi-action-accessibility:before{content:"\e601"}.mdi-action-account-balance-wallet:before{content:"\e602"}.mdi-action-account-balance:before{content:"\e603"}.mdi-action-account-box:before{content:"\e604"}.mdi-action-account-child:before{content:"\e605"}.mdi-action-account-circle:before{content:"\e606"}.mdi-action-add-shopping-cart:before{content:"\e607"}.mdi-action-alarm-add:before{content:"\e608"}.mdi-action-alarm-off:before{content:"\e609"}.mdi-action-alarm-on:before{content:"\e60a"}.mdi-action-alarm:before{content:"\e60b"}.mdi-action-android:before{content:"\e60c"}.mdi-action-announcement:before{content:"\e60d"}.mdi-action-aspect-ratio:before{content:"\e60e"}.mdi-action-assessment:before{content:"\e60f"}.mdi-action-assignment-ind:before{content:"\e610"}.mdi-action-assignment-late:before{content:"\e611"}.mdi-action-assignment-return:before{content:"\e612"}.mdi-action-assignment-returned:before{content:"\e613"}.mdi-action-assignment-turned-in:before{content:"\e614"}.mdi-action-assignment:before{content:"\e615"}.mdi-action-autorenew:before{content:"\e616"}.mdi-action-backup:before{content:"\e617"}.mdi-action-book:before{content:"\e618"}.mdi-action-bookmark-outline:before{content:"\e619"}.mdi-action-bookmark:before{content:"\e61a"}.mdi-action-bug-report:before{content:"\e61b"}.mdi-action-cached:before{content:"\e61c"}.mdi-action-check-circle:before{content:"\e61d"}.mdi-action-class:before{content:"\e61e"}.mdi-action-credit-card:before{content:"\e61f"}.mdi-action-dashboard:before{content:"\e620"}.mdi-action-delete:before{content:"\e621"}.mdi-action-description:before{content:"\e622"}.mdi-action-dns:before{content:"\e623"}.mdi-action-done-all:before{content:"\e624"}.mdi-action-done:before{content:"\e625"}.mdi-action-event:before{content:"\e626"}.mdi-action-exit-to-app:before{content:"\e627"}.mdi-action-explore:before{content:"\e628"}.mdi-action-extension:before{content:"\e629"}.mdi-action-face-unlock:before{content:"\e62a"}.mdi-action-favorite-outline:before{content:"\e62b"}.mdi-action-favorite:before{content:"\e62c"}.mdi-action-find-in-page:before{content:"\e62d"}.mdi-action-find-replace:before{content:"\e62e"}.mdi-action-flip-to-back:before{content:"\e62f"}.mdi-action-flip-to-front:before{content:"\e630"}.mdi-action-get-app:before{content:"\e631"}.mdi-action-grade:before{content:"\e632"}.mdi-action-group-work:before{content:"\e633"}.mdi-action-help:before{content:"\e634"}.mdi-action-highlight-remove:before{content:"\e635"}.mdi-action-history:before{content:"\e636"}.mdi-action-home:before{content:"\e637"}.mdi-action-https:before{content:"\e638"}.mdi-action-info-outline:before{content:"\e639"}.mdi-action-info:before{content:"\e63a"}.mdi-action-input:before{content:"\e63b"}.mdi-action-invert-colors:before{content:"\e63c"}.mdi-action-label-outline:before{content:"\e63d"}.mdi-action-label:before{content:"\e63e"}.mdi-action-language:before{content:"\e63f"}.mdi-action-launch:before{content:"\e640"}.mdi-action-list:before{content:"\e641"}.mdi-action-lock-open:before{content:"\e642"}.mdi-action-lock-outline:before{content:"\e643"}.mdi-action-lock:before{content:"\e644"}.mdi-action-loyalty:before{content:"\e645"}.mdi-action-markunread-mailbox:before{content:"\e646"}.mdi-action-note-add:before{content:"\e647"}.mdi-action-open-in-browser:before{content:"\e648"}.mdi-action-open-in-new:before{content:"\e649"}.mdi-action-open-with:before{content:"\e64a"}.mdi-action-pageview:before{content:"\e64b"}.mdi-action-payment:before{content:"\e64c"}.mdi-action-perm-camera-mic:before{content:"\e64d"}.mdi-action-perm-contact-cal:before{content:"\e64e"}.mdi-action-perm-data-setting:before{content:"\e64f"}.mdi-action-perm-device-info:before{content:"\e650"}.mdi-action-perm-identity:before{content:"\e651"}.mdi-action-perm-media:before{content:"\e652"}.mdi-action-perm-phone-msg:before{content:"\e653"}.mdi-action-perm-scan-wifi:before{content:"\e654"}.mdi-action-picture-in-picture:before{content:"\e655"}.mdi-action-polymer:before{content:"\e656"}.mdi-action-print:before{content:"\e657"}.mdi-action-query-builder:before{content:"\e658"}.mdi-action-question-answer:before{content:"\e659"}.mdi-action-receipt:before{content:"\e65a"}.mdi-action-redeem:before{content:"\e65b"}.mdi-action-reorder:before{content:"\e65c"}.mdi-action-report-problem:before{content:"\e65d"}.mdi-action-restore:before{content:"\e65e"}.mdi-action-room:before{content:"\e65f"}.mdi-action-schedule:before{content:"\e660"}.mdi-action-search:before{content:"\e661"}.mdi-action-settings-applications:before{content:"\e662"}.mdi-action-settings-backup-restore:before{content:"\e663"}.mdi-action-settings-bluetooth:before{content:"\e664"}.mdi-action-settings-cell:before{content:"\e665"}.mdi-action-settings-display:before{content:"\e666"}.mdi-action-settings-ethernet:before{content:"\e667"}.mdi-action-settings-input-antenna:before{content:"\e668"}.mdi-action-settings-input-component:before{content:"\e669"}.mdi-action-settings-input-composite:before{content:"\e66a"}.mdi-action-settings-input-hdmi:before{content:"\e66b"}.mdi-action-settings-input-svideo:before{content:"\e66c"}.mdi-action-settings-overscan:before{content:"\e66d"}.mdi-action-settings-phone:before{content:"\e66e"}.mdi-action-settings-power:before{content:"\e66f"}.mdi-action-settings-remote:before{content:"\e670"}.mdi-action-settings-voice:before{content:"\e671"}.mdi-action-settings:before{content:"\e672"}.mdi-action-shop-two:before{content:"\e673"}.mdi-action-shop:before{content:"\e674"}.mdi-action-shopping-basket:before{content:"\e675"}.mdi-action-shopping-cart:before{content:"\e676"}.mdi-action-speaker-notes:before{content:"\e677"}.mdi-action-spellcheck:before{content:"\e678"}.mdi-action-star-rate:before{content:"\e679"}.mdi-action-stars:before{content:"\e67a"}.mdi-action-store:before{content:"\e67b"}.mdi-action-subject:before{content:"\e67c"}.mdi-action-supervisor-account:before{content:"\e67d"}.mdi-action-swap-horiz:before{content:"\e67e"}.mdi-action-swap-vert-circle:before{content:"\e67f"}.mdi-action-swap-vert:before{content:"\e680"}.mdi-action-system-update-tv:before{content:"\e681"}.mdi-action-tab-unselected:before{content:"\e682"}.mdi-action-tab:before{content:"\e683"}.mdi-action-theaters:before{content:"\e684"}.mdi-action-thumb-down:before{content:"\e685"}.mdi-action-thumb-up:before{content:"\e686"}.mdi-action-thumbs-up-down:before{content:"\e687"}.mdi-action-toc:before{content:"\e688"}.mdi-action-today:before{content:"\e689"}.mdi-action-track-changes:before{content:"\e68a"}.mdi-action-translate:before{content:"\e68b"}.mdi-action-trending-down:before{content:"\e68c"}.mdi-action-trending-neutral:before{content:"\e68d"}.mdi-action-trending-up:before{content:"\e68e"}.mdi-action-turned-in-not:before{content:"\e68f"}.mdi-action-turned-in:before{content:"\e690"}.mdi-action-verified-user:before{content:"\e691"}.mdi-action-view-agenda:before{content:"\e692"}.mdi-action-view-array:before{content:"\e693"}.mdi-action-view-carousel:before{content:"\e694"}.mdi-action-view-column:before{content:"\e695"}.mdi-action-view-day:before{content:"\e696"}.mdi-action-view-headline:before{content:"\e697"}.mdi-action-view-list:before{content:"\e698"}.mdi-action-view-module:before{content:"\e699"}.mdi-action-view-quilt:before{content:"\e69a"}.mdi-action-view-stream:before{content:"\e69b"}.mdi-action-view-week:before{content:"\e69c"}.mdi-action-visibility-off:before{content:"\e69d"}.mdi-action-visibility:before{content:"\e69e"}.mdi-action-wallet-giftcard:before{content:"\e69f"}.mdi-action-wallet-membership:before{content:"\e6a0"}.mdi-action-wallet-travel:before{content:"\e6a1"}.mdi-action-work:before{content:"\e6a2"}.mdi-alert-error:before{content:"\e6a3"}.mdi-alert-warning:before{content:"\e6a4"}.mdi-av-album:before{content:"\e6a5"}.mdi-av-closed-caption:before{content:"\e6a6"}.mdi-av-equalizer:before{content:"\e6a7"}.mdi-av-explicit:before{content:"\e6a8"}.mdi-av-fast-forward:before{content:"\e6a9"}.mdi-av-fast-rewind:before{content:"\e6aa"}.mdi-av-games:before{content:"\e6ab"}.mdi-av-hearing:before{content:"\e6ac"}.mdi-av-high-quality:before{content:"\e6ad"}.mdi-av-loop:before{content:"\e6ae"}.mdi-av-mic-none:before{content:"\e6af"}.mdi-av-mic-off:before{content:"\e6b0"}.mdi-av-mic:before{content:"\e6b1"}.mdi-av-movie:before{content:"\e6b2"}.mdi-av-my-library-add:before{content:"\e6b3"}.mdi-av-my-library-books:before{content:"\e6b4"}.mdi-av-my-library-music:before{content:"\e6b5"}.mdi-av-new-releases:before{content:"\e6b6"}.mdi-av-not-interested:before{content:"\e6b7"}.mdi-av-pause-circle-fill:before{content:"\e6b8"}.mdi-av-pause-circle-outline:before{content:"\e6b9"}.mdi-av-pause:before{content:"\e6ba"}.mdi-av-play-arrow:before{content:"\e6bb"}.mdi-av-play-circle-fill:before{content:"\e6bc"}.mdi-av-play-circle-outline:before{content:"\e6bd"}.mdi-av-play-shopping-bag:before{content:"\e6be"}.mdi-av-playlist-add:before{content:"\e6bf"}.mdi-av-queue-music:before{content:"\e6c0"}.mdi-av-queue:before{content:"\e6c1"}.mdi-av-radio:before{content:"\e6c2"}.mdi-av-recent-actors:before{content:"\e6c3"}.mdi-av-repeat-one:before{content:"\e6c4"}.mdi-av-repeat:before{content:"\e6c5"}.mdi-av-replay:before{content:"\e6c6"}.mdi-av-shuffle:before{content:"\e6c7"}.mdi-av-skip-next:before{content:"\e6c8"}.mdi-av-skip-previous:before{content:"\e6c9"}.mdi-av-snooze:before{content:"\e6ca"}.mdi-av-stop:before{content:"\e6cb"}.mdi-av-subtitles:before{content:"\e6cc"}.mdi-av-surround-sound:before{content:"\e6cd"}.mdi-av-timer:before{content:"\e6ce"}.mdi-av-video-collection:before{content:"\e6cf"}.mdi-av-videocam-off:before{content:"\e6d0"}.mdi-av-videocam:before{content:"\e6d1"}.mdi-av-volume-down:before{content:"\e6d2"}.mdi-av-volume-mute:before{content:"\e6d3"}.mdi-av-volume-off:before{content:"\e6d4"}.mdi-av-volume-up:before{content:"\e6d5"}.mdi-av-web:before{content:"\e6d6"}.mdi-communication-business:before{content:"\e6d7"}.mdi-communication-call-end:before{content:"\e6d8"}.mdi-communication-call-made:before{content:"\e6d9"}.mdi-communication-call-merge:before{content:"\e6da"}.mdi-communication-call-missed:before{content:"\e6db"}.mdi-communication-call-received:before{content:"\e6dc"}.mdi-communication-call-split:before{content:"\e6dd"}.mdi-communication-call:before{content:"\e6de"}.mdi-communication-chat:before{content:"\e6df"}.mdi-communication-clear-all:before{content:"\e6e0"}.mdi-communication-comment:before{content:"\e6e1"}.mdi-communication-contacts:before{content:"\e6e2"}.mdi-communication-dialer-sip:before{content:"\e6e3"}.mdi-communication-dialpad:before{content:"\e6e4"}.mdi-communication-dnd-on:before{content:"\e6e5"}.mdi-communication-email:before{content:"\e6e6"}.mdi-communication-forum:before{content:"\e6e7"}.mdi-communication-import-export:before{content:"\e6e8"}.mdi-communication-invert-colors-off:before{content:"\e6e9"}.mdi-communication-invert-colors-on:before{content:"\e6ea"}.mdi-communication-live-help:before{content:"\e6eb"}.mdi-communication-location-off:before{content:"\e6ec"}.mdi-communication-location-on:before{content:"\e6ed"}.mdi-communication-message:before{content:"\e6ee"}.mdi-communication-messenger:before{content:"\e6ef"}.mdi-communication-no-sim:before{content:"\e6f0"}.mdi-communication-phone:before{content:"\e6f1"}.mdi-communication-portable-wifi-off:before{content:"\e6f2"}.mdi-communication-quick-contacts-dialer:before{content:"\e6f3"}.mdi-communication-quick-contacts-mail:before{content:"\e6f4"}.mdi-communication-ring-volume:before{content:"\e6f5"}.mdi-communication-stay-current-landscape:before{content:"\e6f6"}.mdi-communication-stay-current-portrait:before{content:"\e6f7"}.mdi-communication-stay-primary-landscape:before{content:"\e6f8"}.mdi-communication-stay-primary-portrait:before{content:"\e6f9"}.mdi-communication-swap-calls:before{content:"\e6fa"}.mdi-communication-textsms:before{content:"\e6fb"}.mdi-communication-voicemail:before{content:"\e6fc"}.mdi-communication-vpn-key:before{content:"\e6fd"}.mdi-content-add-box:before{content:"\e6fe"}.mdi-content-add-circle-outline:before{content:"\e6ff"}.mdi-content-add-circle:before{content:"\e700"}.mdi-content-add:before{content:"\e701"}.mdi-content-archive:before{content:"\e702"}.mdi-content-backspace:before{content:"\e703"}.mdi-content-block:before{content:"\e704"}.mdi-content-clear:before{content:"\e705"}.mdi-content-content-copy:before{content:"\e706"}.mdi-content-content-cut:before{content:"\e707"}.mdi-content-content-paste:before{content:"\e708"}.mdi-content-create:before{content:"\e709"}.mdi-content-drafts:before{content:"\e70a"}.mdi-content-filter-list:before{content:"\e70b"}.mdi-content-flag:before{content:"\e70c"}.mdi-content-forward:before{content:"\e70d"}.mdi-content-gesture:before{content:"\e70e"}.mdi-content-inbox:before{content:"\e70f"}.mdi-content-link:before{content:"\e710"}.mdi-content-mail:before{content:"\e711"}.mdi-content-markunread:before{content:"\e712"}.mdi-content-redo:before{content:"\e713"}.mdi-content-remove-circle-outline:before{content:"\e714"}.mdi-content-remove-circle:before{content:"\e715"}.mdi-content-remove:before{content:"\e716"}.mdi-content-reply-all:before{content:"\e717"}.mdi-content-reply:before{content:"\e718"}.mdi-content-report:before{content:"\e719"}.mdi-content-save:before{content:"\e71a"}.mdi-content-select-all:before{content:"\e71b"}.mdi-content-send:before{content:"\e71c"}.mdi-content-sort:before{content:"\e71d"}.mdi-content-text-format:before{content:"\e71e"}.mdi-content-undo:before{content:"\e71f"}.mdi-editor-attach-file:before{content:"\e776"}.mdi-editor-attach-money:before{content:"\e777"}.mdi-editor-border-all:before{content:"\e778"}.mdi-editor-border-bottom:before{content:"\e779"}.mdi-editor-border-clear:before{content:"\e77a"}.mdi-editor-border-color:before{content:"\e77b"}.mdi-editor-border-horizontal:before{content:"\e77c"}.mdi-editor-border-inner:before{content:"\e77d"}.mdi-editor-border-left:before{content:"\e77e"}.mdi-editor-border-outer:before{content:"\e77f"}.mdi-editor-border-right:before{content:"\e780"}.mdi-editor-border-style:before{content:"\e781"}.mdi-editor-border-top:before{content:"\e782"}.mdi-editor-border-vertical:before{content:"\e783"}.mdi-editor-format-align-center:before{content:"\e784"}.mdi-editor-format-align-justify:before{content:"\e785"}.mdi-editor-format-align-left:before{content:"\e786"}.mdi-editor-format-align-right:before{content:"\e787"}.mdi-editor-format-bold:before{content:"\e788"}.mdi-editor-format-clear:before{content:"\e789"}.mdi-editor-format-color-fill:before{content:"\e78a"}.mdi-editor-format-color-reset:before{content:"\e78b"}.mdi-editor-format-color-text:before{content:"\e78c"}.mdi-editor-format-indent-decrease:before{content:"\e78d"}.mdi-editor-format-indent-increase:before{content:"\e78e"}.mdi-editor-format-italic:before{content:"\e78f"}.mdi-editor-format-line-spacing:before{content:"\e790"}.mdi-editor-format-list-bulleted:before{content:"\e791"}.mdi-editor-format-list-numbered:before{content:"\e792"}.mdi-editor-format-paint:before{content:"\e793"}.mdi-editor-format-quote:before{content:"\e794"}.mdi-editor-format-size:before{content:"\e795"}.mdi-editor-format-strikethrough:before{content:"\e796"}.mdi-editor-format-textdirection-l-to-r:before{content:"\e797"}.mdi-editor-format-textdirection-r-to-l:before{content:"\e798"}.mdi-editor-format-underline:before{content:"\e799"}.mdi-editor-functions:before{content:"\e79a"}.mdi-editor-insert-chart:before{content:"\e79b"}.mdi-editor-insert-comment:before{content:"\e79c"}.mdi-editor-insert-drive-file:before{content:"\e79d"}.mdi-editor-insert-emoticon:before{content:"\e79e"}.mdi-editor-insert-invitation:before{content:"\e79f"}.mdi-editor-insert-link:before{content:"\e7a0"}.mdi-editor-insert-photo:before{content:"\e7a1"}.mdi-editor-merge-type:before{content:"\e7a2"}.mdi-editor-mode-comment:before{content:"\e7a3"}.mdi-editor-mode-edit:before{content:"\e7a4"}.mdi-editor-publish:before{content:"\e7a5"}.mdi-editor-vertical-align-bottom:before{content:"\e7a6"}.mdi-editor-vertical-align-center:before{content:"\e7a7"}.mdi-editor-vertical-align-top:before{content:"\e7a8"}.mdi-editor-wrap-text:before{content:"\e7a9"}.mdi-file-attachment:before{content:"\e7aa"}.mdi-file-cloud-circle:before{content:"\e7ab"}.mdi-file-cloud-done:before{content:"\e7ac"}.mdi-file-cloud-download:before{content:"\e7ad"}.mdi-file-cloud-off:before{content:"\e7ae"}.mdi-file-cloud-queue:before{content:"\e7af"}.mdi-file-cloud-upload:before{content:"\e7b0"}.mdi-file-cloud:before{content:"\e7b1"}.mdi-file-file-download:before{content:"\e7b2"}.mdi-file-file-upload:before{content:"\e7b3"}.mdi-file-folder-open:before{content:"\e7b4"}.mdi-file-folder-shared:before{content:"\e7b5"}.mdi-file-folder:before{content:"\e7b6"}.mdi-device-access-alarm:before{content:"\e720"}.mdi-device-access-alarms:before{content:"\e721"}.mdi-device-access-time:before{content:"\e722"}.mdi-device-add-alarm:before{content:"\e723"}.mdi-device-airplanemode-off:before{content:"\e724"}.mdi-device-airplanemode-on:before{content:"\e725"}.mdi-device-battery-20:before{content:"\e726"}.mdi-device-battery-30:before{content:"\e727"}.mdi-device-battery-50:before{content:"\e728"}.mdi-device-battery-60:before{content:"\e729"}.mdi-device-battery-80:before{content:"\e72a"}.mdi-device-battery-90:before{content:"\e72b"}.mdi-device-battery-alert:before{content:"\e72c"}.mdi-device-battery-charging-20:before{content:"\e72d"}.mdi-device-battery-charging-30:before{content:"\e72e"}.mdi-device-battery-charging-50:before{content:"\e72f"}.mdi-device-battery-charging-60:before{content:"\e730"}.mdi-device-battery-charging-80:before{content:"\e731"}.mdi-device-battery-charging-90:before{content:"\e732"}.mdi-device-battery-charging-full:before{content:"\e733"}.mdi-device-battery-full:before{content:"\e734"}.mdi-device-battery-std:before{content:"\e735"}.mdi-device-battery-unknown:before{content:"\e736"}.mdi-device-bluetooth-connected:before{content:"\e737"}.mdi-device-bluetooth-disabled:before{content:"\e738"}.mdi-device-bluetooth-searching:before{content:"\e739"}.mdi-device-bluetooth:before{content:"\e73a"}.mdi-device-brightness-auto:before{content:"\e73b"}.mdi-device-brightness-high:before{content:"\e73c"}.mdi-device-brightness-low:before{content:"\e73d"}.mdi-device-brightness-medium:before{content:"\e73e"}.mdi-device-data-usage:before{content:"\e73f"}.mdi-device-developer-mode:before{content:"\e740"}.mdi-device-devices:before{content:"\e741"}.mdi-device-dvr:before{content:"\e742"}.mdi-device-gps-fixed:before{content:"\e743"}.mdi-device-gps-not-fixed:before{content:"\e744"}.mdi-device-gps-off:before{content:"\e745"}.mdi-device-location-disabled:before{content:"\e746"}.mdi-device-location-searching:before{content:"\e747"}.mdi-device-multitrack-audio:before{content:"\e748"}.mdi-device-network-cell:before{content:"\e749"}.mdi-device-network-wifi:before{content:"\e74a"}.mdi-device-nfc:before{content:"\e74b"}.mdi-device-now-wallpaper:before{content:"\e74c"}.mdi-device-now-widgets:before{content:"\e74d"}.mdi-device-screen-lock-landscape:before{content:"\e74e"}.mdi-device-screen-lock-portrait:before{content:"\e74f"}.mdi-device-screen-lock-rotation:before{content:"\e750"}.mdi-device-screen-rotation:before{content:"\e751"}.mdi-device-sd-storage:before{content:"\e752"}.mdi-device-settings-system-daydream:before{content:"\e753"}.mdi-device-signal-cellular-0-bar:before{content:"\e754"}.mdi-device-signal-cellular-1-bar:before{content:"\e755"}.mdi-device-signal-cellular-2-bar:before{content:"\e756"}.mdi-device-signal-cellular-3-bar:before{content:"\e757"}.mdi-device-signal-cellular-4-bar:before{content:"\e758"}.mdi-signal-wifi-statusbar-connected-no-internet-after:before{content:"\e8f6"}.mdi-device-signal-cellular-connected-no-internet-0-bar:before{content:"\e759"}.mdi-device-signal-cellular-connected-no-internet-1-bar:before{content:"\e75a"}.mdi-device-signal-cellular-connected-no-internet-2-bar:before{content:"\e75b"}.mdi-device-signal-cellular-connected-no-internet-3-bar:before{content:"\e75c"}.mdi-device-signal-cellular-connected-no-internet-4-bar:before{content:"\e75d"}.mdi-device-signal-cellular-no-sim:before{content:"\e75e"}.mdi-device-signal-cellular-null:before{content:"\e75f"}.mdi-device-signal-cellular-off:before{content:"\e760"}.mdi-device-signal-wifi-0-bar:before{content:"\e761"}.mdi-device-signal-wifi-1-bar:before{content:"\e762"}.mdi-device-signal-wifi-2-bar:before{content:"\e763"}.mdi-device-signal-wifi-3-bar:before{content:"\e764"}.mdi-device-signal-wifi-4-bar:before{content:"\e765"}.mdi-device-signal-wifi-off:before{content:"\e766"}.mdi-device-signal-wifi-statusbar-1-bar:before{content:"\e767"}.mdi-device-signal-wifi-statusbar-2-bar:before{content:"\e768"}.mdi-device-signal-wifi-statusbar-3-bar:before{content:"\e769"}.mdi-device-signal-wifi-statusbar-4-bar:before{content:"\e76a"}.mdi-device-signal-wifi-statusbar-connected-no-internet-:before{content:"\e76b"}.mdi-device-signal-wifi-statusbar-connected-no-internet:before{content:"\e76f"}.mdi-device-signal-wifi-statusbar-connected-no-internet-2:before{content:"\e76c"}.mdi-device-signal-wifi-statusbar-connected-no-internet-3:before{content:"\e76d"}.mdi-device-signal-wifi-statusbar-connected-no-internet-4:before{content:"\e76e"}.mdi-signal-wifi-statusbar-not-connected-after:before{content:"\e8f7"}.mdi-device-signal-wifi-statusbar-not-connected:before{content:"\e770"}.mdi-device-signal-wifi-statusbar-null:before{content:"\e771"}.mdi-device-storage:before{content:"\e772"}.mdi-device-usb:before{content:"\e773"}.mdi-device-wifi-lock:before{content:"\e774"}.mdi-device-wifi-tethering:before{content:"\e775"}.mdi-hardware-cast-connected:before{content:"\e7b7"}.mdi-hardware-cast:before{content:"\e7b8"}.mdi-hardware-computer:before{content:"\e7b9"}.mdi-hardware-desktop-mac:before{content:"\e7ba"}.mdi-hardware-desktop-windows:before{content:"\e7bb"}.mdi-hardware-dock:before{content:"\e7bc"}.mdi-hardware-gamepad:before{content:"\e7bd"}.mdi-hardware-headset-mic:before{content:"\e7be"}.mdi-hardware-headset:before{content:"\e7bf"}.mdi-hardware-keyboard-alt:before{content:"\e7c0"}.mdi-hardware-keyboard-arrow-down:before{content:"\e7c1"}.mdi-hardware-keyboard-arrow-left:before{content:"\e7c2"}.mdi-hardware-keyboard-arrow-right:before{content:"\e7c3"}.mdi-hardware-keyboard-arrow-up:before{content:"\e7c4"}.mdi-hardware-keyboard-backspace:before{content:"\e7c5"}.mdi-hardware-keyboard-capslock:before{content:"\e7c6"}.mdi-hardware-keyboard-control:before{content:"\e7c7"}.mdi-hardware-keyboard-hide:before{content:"\e7c8"}.mdi-hardware-keyboard-return:before{content:"\e7c9"}.mdi-hardware-keyboard-tab:before{content:"\e7ca"}.mdi-hardware-keyboard-voice:before{content:"\e7cb"}.mdi-hardware-keyboard:before{content:"\e7cc"}.mdi-hardware-laptop-chromebook:before{content:"\e7cd"}.mdi-hardware-laptop-mac:before{content:"\e7ce"}.mdi-hardware-laptop-windows:before{content:"\e7cf"}.mdi-hardware-laptop:before{content:"\e7d0"}.mdi-hardware-memory:before{content:"\e7d1"}.mdi-hardware-mouse:before{content:"\e7d2"}.mdi-hardware-phone-android:before{content:"\e7d3"}.mdi-hardware-phone-iphone:before{content:"\e7d4"}.mdi-hardware-phonelink-off:before{content:"\e7d5"}.mdi-hardware-phonelink:before{content:"\e7d6"}.mdi-hardware-security:before{content:"\e7d7"}.mdi-hardware-sim-card:before{content:"\e7d8"}.mdi-hardware-smartphone:before{content:"\e7d9"}.mdi-hardware-speaker:before{content:"\e7da"}.mdi-hardware-tablet-android:before{content:"\e7db"}.mdi-hardware-tablet-mac:before{content:"\e7dc"}.mdi-hardware-tablet:before{content:"\e7dd"}.mdi-hardware-tv:before{content:"\e7de"}.mdi-hardware-watch:before{content:"\e7df"}.mdi-image-add-to-photos:before{content:"\e7e0"}.mdi-image-adjust:before{content:"\e7e1"}.mdi-image-assistant-photo:before{content:"\e7e2"}.mdi-image-audiotrack:before{content:"\e7e3"}.mdi-image-blur-circular:before{content:"\e7e4"}.mdi-image-blur-linear:before{content:"\e7e5"}.mdi-image-blur-off:before{content:"\e7e6"}.mdi-image-blur-on:before{content:"\e7e7"}.mdi-image-brightness-1:before{content:"\e7e8"}.mdi-image-brightness-2:before{content:"\e7e9"}.mdi-image-brightness-3:before{content:"\e7ea"}.mdi-image-brightness-4:before{content:"\e7eb"}.mdi-image-brightness-5:before{content:"\e7ec"}.mdi-image-brightness-6:before{content:"\e7ed"}.mdi-image-brightness-7:before{content:"\e7ee"}.mdi-image-brush:before{content:"\e7ef"}.mdi-image-camera-alt:before{content:"\e7f0"}.mdi-image-camera-front:before{content:"\e7f1"}.mdi-image-camera-rear:before{content:"\e7f2"}.mdi-image-camera-roll:before{content:"\e7f3"}.mdi-image-camera:before{content:"\e7f4"}.mdi-image-center-focus-strong:before{content:"\e7f5"}.mdi-image-center-focus-weak:before{content:"\e7f6"}.mdi-image-collections:before{content:"\e7f7"}.mdi-image-color-lens:before{content:"\e7f8"}.mdi-image-colorize:before{content:"\e7f9"}.mdi-image-compare:before{content:"\e7fa"}.mdi-image-control-point-duplicate:before{content:"\e7fb"}.mdi-image-control-point:before{content:"\e7fc"}.mdi-image-crop-3-2:before{content:"\e7fd"}.mdi-image-crop-5-4:before{content:"\e7fe"}.mdi-image-crop-7-5:before{content:"\e7ff"}.mdi-image-crop-16-9:before{content:"\e800"}.mdi-image-crop-din:before{content:"\e801"}.mdi-image-crop-free:before{content:"\e802"}.mdi-image-crop-landscape:before{content:"\e803"}.mdi-image-crop-original:before{content:"\e804"}.mdi-image-crop-portrait:before{content:"\e805"}.mdi-image-crop-square:before{content:"\e806"}.mdi-image-crop:before{content:"\e807"}.mdi-image-dehaze:before{content:"\e808"}.mdi-image-details:before{content:"\e809"}.mdi-image-edit:before{content:"\e80a"}.mdi-image-exposure-minus-1:before{content:"\e80b"}.mdi-image-exposure-minus-2:before{content:"\e80c"}.mdi-image-exposure-plus-1:before{content:"\e80d"}.mdi-image-exposure-plus-2:before{content:"\e80e"}.mdi-image-exposure-zero:before{content:"\e80f"}.mdi-image-exposure:before{content:"\e810"}.mdi-image-filter-1:before{content:"\e811"}.mdi-image-filter-2:before{content:"\e812"}.mdi-image-filter-3:before{content:"\e813"}.mdi-image-filter-4:before{content:"\e814"}.mdi-image-filter-5:before{content:"\e815"}.mdi-image-filter-6:before{content:"\e816"}.mdi-image-filter-7:before{content:"\e817"}.mdi-image-filter-8:before{content:"\e818"}.mdi-image-filter-9-plus:before{content:"\e819"}.mdi-image-filter-9:before{content:"\e81a"}.mdi-image-filter-b-and-w:before{content:"\e81b"}.mdi-image-filter-center-focus:before{content:"\e81c"}.mdi-image-filter-drama:before{content:"\e81d"}.mdi-image-filter-frames:before{content:"\e81e"}.mdi-image-filter-hdr:before{content:"\e81f"}.mdi-image-filter-none:before{content:"\e820"}.mdi-image-filter-tilt-shift:before{content:"\e821"}.mdi-image-filter-vintage:before{content:"\e822"}.mdi-image-filter:before{content:"\e823"}.mdi-image-flare:before{content:"\e824"}.mdi-image-flash-auto:before{content:"\e825"}.mdi-image-flash-off:before{content:"\e826"}.mdi-image-flash-on:before{content:"\e827"}.mdi-image-flip:before{content:"\e828"}.mdi-image-gradient:before{content:"\e829"}.mdi-image-grain:before{content:"\e82a"}.mdi-image-grid-off:before{content:"\e82b"}.mdi-image-grid-on:before{content:"\e82c"}.mdi-image-hdr-off:before{content:"\e82d"}.mdi-image-hdr-on:before{content:"\e82e"}.mdi-image-hdr-strong:before{content:"\e82f"}.mdi-image-hdr-weak:before{content:"\e830"}.mdi-image-healing:before{content:"\e831"}.mdi-image-image-aspect-ratio:before{content:"\e832"}.mdi-image-image:before{content:"\e833"}.mdi-image-iso:before{content:"\e834"}.mdi-image-landscape:before{content:"\e835"}.mdi-image-leak-add:before{content:"\e836"}.mdi-image-leak-remove:before{content:"\e837"}.mdi-image-lens:before{content:"\e838"}.mdi-image-looks-3:before{content:"\e839"}.mdi-image-looks-4:before{content:"\e83a"}.mdi-image-looks-5:before{content:"\e83b"}.mdi-image-looks-6:before{content:"\e83c"}.mdi-image-looks-one:before{content:"\e83d"}.mdi-image-looks-two:before{content:"\e83e"}.mdi-image-looks:before{content:"\e83f"}.mdi-image-loupe:before{content:"\e840"}.mdi-image-movie-creation:before{content:"\e841"}.mdi-image-nature-people:before{content:"\e842"}.mdi-image-nature:before{content:"\e843"}.mdi-image-navigate-before:before{content:"\e844"}.mdi-image-navigate-next:before{content:"\e845"}.mdi-image-palette:before{content:"\e846"}.mdi-image-panorama-fisheye:before{content:"\e847"}.mdi-image-panorama-horizontal:before{content:"\e848"}.mdi-image-panorama-vertical:before{content:"\e849"}.mdi-image-panorama-wide-angle:before{content:"\e84a"}.mdi-image-panorama:before{content:"\e84b"}.mdi-image-photo-album:before{content:"\e84c"}.mdi-image-photo-camera:before{content:"\e84d"}.mdi-image-photo-library:before{content:"\e84e"}.mdi-image-photo:before{content:"\e84f"}.mdi-image-portrait:before{content:"\e850"}.mdi-image-remove-red-eye:before{content:"\e851"}.mdi-image-rotate-left:before{content:"\e852"}.mdi-image-rotate-right:before{content:"\e853"}.mdi-image-slideshow:before{content:"\e854"}.mdi-image-straighten:before{content:"\e855"}.mdi-image-style:before{content:"\e856"}.mdi-image-switch-camera:before{content:"\e857"}.mdi-image-switch-video:before{content:"\e858"}.mdi-image-tag-faces:before{content:"\e859"}.mdi-image-texture:before{content:"\e85a"}.mdi-image-timelapse:before{content:"\e85b"}.mdi-image-timer-3:before{content:"\e85c"}.mdi-image-timer-10:before{content:"\e85d"}.mdi-image-timer-auto:before{content:"\e85e"}.mdi-image-timer-off:before{content:"\e85f"}.mdi-image-timer:before{content:"\e860"}.mdi-image-tonality:before{content:"\e861"}.mdi-image-transform:before{content:"\e862"}.mdi-image-tune:before{content:"\e863"}.mdi-image-wb-auto:before{content:"\e864"}.mdi-image-wb-cloudy:before{content:"\e865"}.mdi-image-wb-incandescent:before{content:"\e866"}.mdi-image-wb-irradescent:before{content:"\e867"}.mdi-image-wb-sunny:before{content:"\e868"}.mdi-maps-beenhere:before{content:"\e869"}.mdi-maps-directions-bike:before{content:"\e86a"}.mdi-maps-directions-bus:before{content:"\e86b"}.mdi-maps-directions-car:before{content:"\e86c"}.mdi-maps-directions-ferry:before{content:"\e86d"}.mdi-maps-directions-subway:before{content:"\e86e"}.mdi-maps-directions-train:before{content:"\e86f"}.mdi-maps-directions-transit:before{content:"\e870"}.mdi-maps-directions-walk:before{content:"\e871"}.mdi-maps-directions:before{content:"\e872"}.mdi-maps-flight:before{content:"\e873"}.mdi-maps-hotel:before{content:"\e874"}.mdi-maps-layers-clear:before{content:"\e875"}.mdi-maps-layers:before{content:"\e876"}.mdi-maps-local-airport:before{content:"\e877"}.mdi-maps-local-atm:before{content:"\e878"}.mdi-maps-local-attraction:before{content:"\e879"}.mdi-maps-local-bar:before{content:"\e87a"}.mdi-maps-local-cafe:before{content:"\e87b"}.mdi-maps-local-car-wash:before{content:"\e87c"}.mdi-maps-local-convenience-store:before{content:"\e87d"}.mdi-maps-local-drink:before{content:"\e87e"}.mdi-maps-local-florist:before{content:"\e87f"}.mdi-maps-local-gas-station:before{content:"\e880"}.mdi-maps-local-grocery-store:before{content:"\e881"}.mdi-maps-local-hospital:before{content:"\e882"}.mdi-maps-local-hotel:before{content:"\e883"}.mdi-maps-local-laundry-service:before{content:"\e884"}.mdi-maps-local-library:before{content:"\e885"}.mdi-maps-local-mall:before{content:"\e886"}.mdi-maps-local-movies:before{content:"\e887"}.mdi-maps-local-offer:before{content:"\e888"}.mdi-maps-local-parking:before{content:"\e889"}.mdi-maps-local-pharmacy:before{content:"\e88a"}.mdi-maps-local-phone:before{content:"\e88b"}.mdi-maps-local-pizza:before{content:"\e88c"}.mdi-maps-local-play:before{content:"\e88d"}.mdi-maps-local-post-office:before{content:"\e88e"}.mdi-maps-local-print-shop:before{content:"\e88f"}.mdi-maps-local-restaurant:before{content:"\e890"}.mdi-maps-local-see:before{content:"\e891"}.mdi-maps-local-shipping:before{content:"\e892"}.mdi-maps-local-taxi:before{content:"\e893"}.mdi-maps-location-history:before{content:"\e894"}.mdi-maps-map:before{content:"\e895"}.mdi-maps-my-location:before{content:"\e896"}.mdi-maps-navigation:before{content:"\e897"}.mdi-maps-pin-drop:before{content:"\e898"}.mdi-maps-place:before{content:"\e899"}.mdi-maps-rate-review:before{content:"\e89a"}.mdi-maps-restaurant-menu:before{content:"\e89b"}.mdi-maps-satellite:before{content:"\e89c"}.mdi-maps-store-mall-directory:before{content:"\e89d"}.mdi-maps-terrain:before{content:"\e89e"}.mdi-maps-traffic:before{content:"\e89f"}.mdi-navigation-apps:before{content:"\e8a0"}.mdi-navigation-arrow-back:before{content:"\e8a1"}.mdi-navigation-arrow-drop-down-circle:before{content:"\e8a2"}.mdi-navigation-arrow-drop-down:before{content:"\e8a3"}.mdi-navigation-arrow-drop-up:before{content:"\e8a4"}.mdi-navigation-arrow-forward:before{content:"\e8a5"}.mdi-navigation-cancel:before{content:"\e8a6"}.mdi-navigation-check:before{content:"\e8a7"}.mdi-navigation-chevron-left:before{content:"\e8a8"}.mdi-navigation-chevron-right:before{content:"\e8a9"}.mdi-navigation-close:before{content:"\e8aa"}.mdi-navigation-expand-less:before{content:"\e8ab"}.mdi-navigation-expand-more:before{content:"\e8ac"}.mdi-navigation-fullscreen-exit:before{content:"\e8ad"}.mdi-navigation-fullscreen:before{content:"\e8ae"}.mdi-navigation-menu:before{content:"\e8af"}.mdi-navigation-more-horiz:before{content:"\e8b0"}.mdi-navigation-more-vert:before{content:"\e8b1"}.mdi-navigation-refresh:before{content:"\e8b2"}.mdi-navigation-unfold-less:before{content:"\e8b3"}.mdi-navigation-unfold-more:before{content:"\e8b4"}.mdi-notification-adb:before{content:"\e8b5"}.mdi-notification-bluetooth-audio:before{content:"\e8b6"}.mdi-notification-disc-full:before{content:"\e8b7"}.mdi-notification-dnd-forwardslash:before{content:"\e8b8"}.mdi-notification-do-not-disturb:before{content:"\e8b9"}.mdi-notification-drive-eta:before{content:"\e8ba"}.mdi-notification-event-available:before{content:"\e8bb"}.mdi-notification-event-busy:before{content:"\e8bc"}.mdi-notification-event-note:before{content:"\e8bd"}.mdi-notification-folder-special:before{content:"\e8be"}.mdi-notification-mms:before{content:"\e8bf"}.mdi-notification-more:before{content:"\e8c0"}.mdi-notification-network-locked:before{content:"\e8c1"}.mdi-notification-phone-bluetooth-speaker:before{content:"\e8c2"}.mdi-notification-phone-forwarded:before{content:"\e8c3"}.mdi-notification-phone-in-talk:before{content:"\e8c4"}.mdi-notification-phone-locked:before{content:"\e8c5"}.mdi-notification-phone-missed:before{content:"\e8c6"}.mdi-notification-phone-paused:before{content:"\e8c7"}.mdi-notification-play-download:before{content:"\e8c8"}.mdi-notification-play-install:before{content:"\e8c9"}.mdi-notification-sd-card:before{content:"\e8ca"}.mdi-notification-sim-card-alert:before{content:"\e8cb"}.mdi-notification-sms-failed:before{content:"\e8cc"}.mdi-notification-sms:before{content:"\e8cd"}.mdi-notification-sync-disabled:before{content:"\e8ce"}.mdi-notification-sync-problem:before{content:"\e8cf"}.mdi-notification-sync:before{content:"\e8d0"}.mdi-notification-system-update:before{content:"\e8d1"}.mdi-notification-tap-and-play:before{content:"\e8d2"}.mdi-notification-time-to-leave:before{content:"\e8d3"}.mdi-notification-vibration:before{content:"\e8d4"}.mdi-notification-voice-chat:before{content:"\e8d5"}.mdi-notification-vpn-lock:before{content:"\e8d6"}.mdi-social-cake:before{content:"\e8d7"}.mdi-social-domain:before{content:"\e8d8"}.mdi-social-group-add:before{content:"\e8d9"}.mdi-social-group:before{content:"\e8da"}.mdi-social-location-city:before{content:"\e8db"}.mdi-social-mood:before{content:"\e8dc"}.mdi-social-notifications-none:before{content:"\e8dd"}.mdi-social-notifications-off:before{content:"\e8de"}.mdi-social-notifications-on:before{content:"\e8df"}.mdi-social-notifications-paused:before{content:"\e8e0"}.mdi-social-notifications:before{content:"\e8e1"}.mdi-social-pages:before{content:"\e8e2"}.mdi-social-party-mode:before{content:"\e8e3"}.mdi-social-people-outline:before{content:"\e8e4"}.mdi-social-people:before{content:"\e8e5"}.mdi-social-person-add:before{content:"\e8e6"}.mdi-social-person-outline:before{content:"\e8e7"}.mdi-social-person:before{content:"\e8e8"}.mdi-social-plus-one:before{content:"\e8e9"}.mdi-social-poll:before{content:"\e8ea"}.mdi-social-public:before{content:"\e8eb"}.mdi-social-school:before{content:"\e8ec"}.mdi-social-share:before{content:"\e8ed"}.mdi-social-whatshot:before{content:"\e8ee"}.mdi-toggle-check-box-outline-blank:before{content:"\e8ef"}.mdi-toggle-check-box:before{content:"\e8f0"}.mdi-toggle-radio-button-off:before{content:"\e8f1"}.mdi-toggle-radio-button-on:before{content:"\e8f2"}.mdi-toggle-star-half:before{content:"\e8f3"}.mdi-toggle-star-outline:before{content:"\e8f4"}.mdi-toggle-star:before{content:"\e8f5"}.container{margin:0 auto;max-width:1280px;width:90%}@media only screen and (min-width : 601px){.container{width:85%}}@media only screen and (min-width : 993px){.container{width:70%}}.container .row{margin-left:-0.75rem;margin-right:-0.75rem}.section{padding-top:1rem;padding-bottom:1rem}.section.no-pad{padding:0}.section.no-pad-bot{padding-bottom:0}.section.no-pad-top{padding-top:0}.row{margin-left:auto;margin-right:auto;margin-bottom:10px}.row:after{content:"";display:table;clear:both}.row .col{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 0.75rem}.row .col[class*="push-"],.row .col[class*="pull-"]{position:relative}.row .col.s1{width:8.33333%;margin-left:0}.row .col.offset-s1{margin-left:8.33333%}.row .col.pull-s1{right:8.33333%}.row .col.push-s1{left:8.33333%}.row .col.s2{width:16.66667%;margin-left:0}.row .col.offset-s2{margin-left:16.66667%}.row .col.pull-s2{right:16.66667%}.row .col.push-s2{left:16.66667%}.row .col.s3{width:25%;margin-left:0}.row .col.offset-s3{margin-left:25%}.row .col.pull-s3{right:25%}.row .col.push-s3{left:25%}.row .col.s4{width:33.33333%;margin-left:0}.row .col.offset-s4{margin-left:33.33333%}.row .col.pull-s4{right:33.33333%}.row .col.push-s4{left:33.33333%}.row .col.s5{width:41.66667%;margin-left:0}.row .col.offset-s5{margin-left:41.66667%}.row .col.pull-s5{right:41.66667%}.row .col.push-s5{left:41.66667%}.row .col.s6{width:50%;margin-left:0}.row .col.offset-s6{margin-left:50%}.row .col.pull-s6{right:50%}.row .col.push-s6{left:50%}.row .col.s7{width:58.33333%;margin-left:0}.row .col.offset-s7{margin-left:58.33333%}.row .col.pull-s7{right:58.33333%}.row .col.push-s7{left:58.33333%}.row .col.s8{width:66.66667%;margin-left:0}.row .col.offset-s8{margin-left:66.66667%}.row .col.pull-s8{right:66.66667%}.row .col.push-s8{left:66.66667%}.row .col.s9{width:75%;margin-left:0}.row .col.offset-s9{margin-left:75%}.row .col.pull-s9{right:75%}.row .col.push-s9{left:75%}.row .col.s10{width:83.33333%;margin-left:0}.row .col.offset-s10{margin-left:83.33333%}.row .col.pull-s10{right:83.33333%}.row .col.push-s10{left:83.33333%}.row .col.s11{width:91.66667%;margin-left:0}.row .col.offset-s11{margin-left:91.66667%}.row .col.pull-s11{right:91.66667%}.row .col.push-s11{left:91.66667%}.row .col.s12{width:100%;margin-left:0}.row .col.offset-s12{margin-left:100%}.row .col.pull-s12{right:100%}.row .col.push-s12{left:100%}@media only screen and (min-width : 601px){.row .col.m1{width:8.33333%;margin-left:0}.row .col.offset-m1{margin-left:8.33333%}.row .col.pull-m1{right:8.33333%}.row .col.push-m1{left:8.33333%}.row .col.m2{width:16.66667%;margin-left:0}.row .col.offset-m2{margin-left:16.66667%}.row .col.pull-m2{right:16.66667%}.row .col.push-m2{left:16.66667%}.row .col.m3{width:25%;margin-left:0}.row .col.offset-m3{margin-left:25%}.row .col.pull-m3{right:25%}.row .col.push-m3{left:25%}.row .col.m4{width:33.33333%;margin-left:0}.row .col.offset-m4{margin-left:33.33333%}.row .col.pull-m4{right:33.33333%}.row .col.push-m4{left:33.33333%}.row .col.m5{width:41.66667%;margin-left:0}.row .col.offset-m5{margin-left:41.66667%}.row .col.pull-m5{right:41.66667%}.row .col.push-m5{left:41.66667%}.row .col.m6{width:50%;margin-left:0}.row .col.offset-m6{margin-left:50%}.row .col.pull-m6{right:50%}.row .col.push-m6{left:50%}.row .col.m7{width:58.33333%;margin-left:0}.row .col.offset-m7{margin-left:58.33333%}.row .col.pull-m7{right:58.33333%}.row .col.push-m7{left:58.33333%}.row .col.m8{width:66.66667%;margin-left:0}.row .col.offset-m8{margin-left:66.66667%}.row .col.pull-m8{right:66.66667%}.row .col.push-m8{left:66.66667%}.row .col.m9{width:75%;margin-left:0}.row .col.offset-m9{margin-left:75%}.row .col.pull-m9{right:75%}.row .col.push-m9{left:75%}.row .col.m10{width:83.33333%;margin-left:0}.row .col.offset-m10{margin-left:83.33333%}.row .col.pull-m10{right:83.33333%}.row .col.push-m10{left:83.33333%}.row .col.m11{width:91.66667%;margin-left:0}.row .col.offset-m11{margin-left:91.66667%}.row .col.pull-m11{right:91.66667%}.row .col.push-m11{left:91.66667%}.row .col.m12{width:100%;margin-left:0}.row .col.offset-m12{margin-left:100%}.row .col.pull-m12{right:100%}.row .col.push-m12{left:100%}}@media only screen and (min-width : 993px){.row .col.l1{width:8.33333%;margin-left:0}.row .col.offset-l1{margin-left:8.33333%}.row .col.pull-l1{right:8.33333%}.row .col.push-l1{left:8.33333%}.row .col.l2{width:16.66667%;margin-left:0}.row .col.offset-l2{margin-left:16.66667%}.row .col.pull-l2{right:16.66667%}.row .col.push-l2{left:16.66667%}.row .col.l3{width:25%;margin-left:0}.row .col.offset-l3{margin-left:25%}.row .col.pull-l3{right:25%}.row .col.push-l3{left:25%}.row .col.l4{width:33.33333%;margin-left:0}.row .col.offset-l4{margin-left:33.33333%}.row .col.pull-l4{right:33.33333%}.row .col.push-l4{left:33.33333%}.row .col.l5{width:41.66667%;margin-left:0}.row .col.offset-l5{margin-left:41.66667%}.row .col.pull-l5{right:41.66667%}.row .col.push-l5{left:41.66667%}.row .col.l6{width:50%;margin-left:0}.row .col.offset-l6{margin-left:50%}.row .col.pull-l6{right:50%}.row .col.push-l6{left:50%}.row .col.l7{width:58.33333%;margin-left:0}.row .col.offset-l7{margin-left:58.33333%}.row .col.pull-l7{right:58.33333%}.row .col.push-l7{left:58.33333%}.row .col.l8{width:66.66667%;margin-left:0}.row .col.offset-l8{margin-left:66.66667%}.row .col.pull-l8{right:66.66667%}.row .col.push-l8{left:66.66667%}.row .col.l9{width:75%;margin-left:0}.row .col.offset-l9{margin-left:75%}.row .col.pull-l9{right:75%}.row .col.push-l9{left:75%}.row .col.l10{width:83.33333%;margin-left:0}.row .col.offset-l10{margin-left:83.33333%}.row .col.pull-l10{right:83.33333%}.row .col.push-l10{left:83.33333%}.row .col.l11{width:91.66667%;margin-left:0}.row .col.offset-l11{margin-left:91.66667%}.row .col.pull-l11{right:91.66667%}.row .col.push-l11{left:91.66667%}.row .col.l12{width:100%;margin-left:0}.row .col.offset-l12{margin-left:100%}.row .col.pull-l12{right:100%}.row .col.push-l12{left:100%}}nav{color:#fff;background-color:#ee6e73;width:100%;height:56px;line-height:56px}nav a{color:#fff}nav .nav-wrapper{position:relative;height:100%}nav .nav-wrapper i{display:block;font-size:2rem}@media only screen and (min-width : 993px){nav a.button-collapse{display:none}}nav .button-collapse{float:left;position:relative;z-index:1;height:56px}nav .button-collapse i{font-size:2.7rem;height:56px;line-height:56px}nav .brand-logo{position:absolute;color:#fff;display:inline-block;font-size:2.1rem;padding:0;white-space:nowrap}nav .brand-logo.center{left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%)}@media only screen and (max-width : 992px){nav .brand-logo{left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%);}nav .brand-logo.left,nav .brand-logo.right{padding:0;-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none}nav .brand-logo.left{left:0.5rem}nav .brand-logo.right{right:0.5rem;left:auto}}nav .brand-logo.right{right:0.5rem;padding:0}nav ul{margin:0}nav ul li{-webkit-transition:background-color .3s;-moz-transition:background-color .3s;-o-transition:background-color .3s;-ms-transition:background-color .3s;transition:background-color .3s;float:left;padding:0}nav ul li:hover,nav ul li.active{background-color:rgba(0,0,0,0.1)}nav ul a{font-size:1rem;color:#fff;display:block;padding:0 15px}nav ul.left{float:left}nav .input-field{margin:0}nav .input-field input{height:100%;font-size:1.2rem;border:none;padding-left:2rem}nav .input-field input:focus,nav .input-field input[type=text]:valid,nav .input-field input[type=password]:valid,nav .input-field input[type=email]:valid,nav .input-field input[type=url]:valid,nav .input-field input[type=date]:valid{border:none;box-shadow:none}nav .input-field label{top:0;left:0}nav .input-field label i{color:rgba(255,255,255,0.7);-webkit-transition:color .3s;-moz-transition:color .3s;-o-transition:color .3s;-ms-transition:color .3s;transition:color .3s}nav .input-field label.active i{color:#fff}nav .input-field label.active{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}.navbar-fixed{position:relative;height:56px;z-index:998}.navbar-fixed nav{position:fixed}@media only screen and (min-width : 601px){nav,nav .nav-wrapper i,nav a.button-collapse,nav a.button-collapse i{height:64px;line-height:64px}.navbar-fixed{height:64px}}@font-face{font-family:"Roboto";src:local(Roboto Thin),url("../font/roboto/Roboto-Thin.woff2") format("woff2"),url("../font/roboto/Roboto-Thin.woff") format("woff"),url("../font/roboto/Roboto-Thin.ttf") format("truetype");font-weight:200;}@font-face{font-family:"Roboto";src:local(Roboto Light),url("../font/roboto/Roboto-Light.woff2") format("woff2"),url("../font/roboto/Roboto-Light.woff") format("woff"),url("../font/roboto/Roboto-Light.ttf") format("truetype");font-weight:300;}@font-face{font-family:"Roboto";src:local(Roboto Regular),url("../font/roboto/Roboto-Regular.woff2") format("woff2"),url("../font/roboto/Roboto-Regular.woff") format("woff"),url("../font/roboto/Roboto-Regular.ttf") format("truetype");font-weight:400;}@font-face{font-family:"Roboto";src:url("../font/roboto/Roboto-Medium.woff2") format("woff2"),url("../font/roboto/Roboto-Medium.woff") format("woff"),url("../font/roboto/Roboto-Medium.ttf") format("truetype");font-weight:500;}@font-face{font-family:"Roboto";src:url("../font/roboto/Roboto-Bold.woff2") format("woff2"),url("../font/roboto/Roboto-Bold.woff") format("woff"),url("../font/roboto/Roboto-Bold.ttf") format("truetype");font-weight:700;}a{text-decoration:none}html{line-height:1.5;font-family:"Roboto", sans-serif;font-weight:normal;color:rgba(0,0,0,0.87)}@media only screen and (min-width: 0){html{font-size:14px;}}@media only screen and (min-width: 992px){html{font-size:14.5px;}}@media only screen and (min-width: 1200px){html{font-size:15px;}}h1,h2,h3,h4,h5,h6{font-weight:400;line-height:1.1}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit}h1{font-size:4.2rem;line-height:110%;margin:2.1rem 0 1.68rem 0}h2{font-size:3.56rem;line-height:110%;margin:1.78rem 0 1.424rem 0}h3{font-size:2.92rem;line-height:110%;margin:1.46rem 0 1.168rem 0}h4{font-size:2.28rem;line-height:110%;margin:1.14rem 0 0.912rem 0}h5{font-size:1.64rem;line-height:110%;margin:0.82rem 0 0.656rem 0}h6{font-size:1rem;line-height:110%;margin:0.5rem 0 0.4rem 0}em{font-style:italic}strong{font-weight:500}small{font-size:75%}.light,footer.page-footer .footer-copyright{font-weight:300}.thin{font-weight:200}.flow-text{font-weight:300}@media only screen and (min-width: 360px){.flow-text{font-size:1.2rem;}}@media only screen and (min-width: 390px){.flow-text{font-size:1.224rem;}}@media only screen and (min-width: 420px){.flow-text{font-size:1.248rem;}}@media only screen and (min-width: 450px){.flow-text{font-size:1.272rem;}}@media only screen and (min-width: 480px){.flow-text{font-size:1.296rem;}}@media only screen and (min-width: 510px){.flow-text{font-size:1.32rem;}}@media only screen and (min-width: 540px){.flow-text{font-size:1.344rem;}}@media only screen and (min-width: 570px){.flow-text{font-size:1.368rem;}}@media only screen and (min-width: 600px){.flow-text{font-size:1.392rem;}}@media only screen and (min-width: 630px){.flow-text{font-size:1.416rem;}}@media only screen and (min-width: 660px){.flow-text{font-size:1.44rem;}}@media only screen and (min-width: 690px){.flow-text{font-size:1.464rem;}}@media only screen and (min-width: 720px){.flow-text{font-size:1.488rem;}}@media only screen and (min-width: 750px){.flow-text{font-size:1.512rem;}}@media only screen and (min-width: 780px){.flow-text{font-size:1.536rem;}}@media only screen and (min-width: 810px){.flow-text{font-size:1.56rem;}}@media only screen and (min-width: 840px){.flow-text{font-size:1.584rem;}}@media only screen and (min-width: 870px){.flow-text{font-size:1.608rem;}}@media only screen and (min-width: 900px){.flow-text{font-size:1.632rem;}}@media only screen and (min-width: 930px){.flow-text{font-size:1.656rem;}}@media only screen and (min-width: 960px){.flow-text{font-size:1.68rem;}}@media only screen and (max-width: 360px){.flow-text{font-size:1.2rem;}}.card-panel{transition:box-shadow .25s;padding:20px;margin:0.5rem 0 1rem 0;border-radius:2px;background-color:#fff}.card{position:relative;margin:0.5rem 0 1rem 0;background-color:#fff;transition:box-shadow .25s;border-radius:2px}.card .card-title{font-size:24px;font-weight:300}.card .card-title.activator{cursor:pointer}.card.small,.card.medium,.card.large{position:relative}.card.small .card-image,.card.medium .card-image,.card.large .card-image{max-height:60%;overflow:hidden}.card.small .card-content,.card.medium .card-content,.card.large .card-content{max-height:40%;overflow:hidden}.card.small .card-action,.card.medium .card-action,.card.large .card-action{position:absolute;bottom:0;left:0;right:0;z-index:1;background-color:inherit}.card.small{height:300px}.card.medium{height:400px}.card.large{height:500px}.card .card-image{position:relative}.card .card-image img{display:block;border-radius:2px 2px 0 0;position:relative;left:0;right:0;top:0;bottom:0;width:100%}.card .card-image .card-title{color:#fff;position:absolute;bottom:0;left:0;padding:20px}.card .card-content{padding:20px;border-radius:0 0 2px 2px}.card .card-content p{margin:0;color:inherit}.card .card-content .card-title{line-height:48px}.card .card-action{border-top:1px solid rgba(160,160,160,0.2);padding:20px}.card .card-action a{color:#ffab40;margin-right:20px;-webkit-transition:color .3s ease;-moz-transition:color .3s ease;-o-transition:color .3s ease;-ms-transition:color .3s ease;transition:color .3s ease;text-transform:uppercase}.card .card-action a:hover{color:#ffd8a6}.card .card-reveal{padding:20px;position:absolute;background-color:#fff;width:100%;overflow-y:auto;top:100%;height:100%;z-index:1;display:none}.card .card-reveal .card-title{cursor:pointer;display:block}#toast-container{display:block;position:fixed;z-index:10000}@media only screen and (max-width : 600px){#toast-container{min-width:100%;bottom:0%;}}@media only screen and (min-width : 601px) and (max-width : 992px){#toast-container{min-width:30%;left:5%;right:5%;bottom:7%;}}@media only screen and (min-width : 993px){#toast-container{min-width:8%;top:10%;right:7%;left:7%;}}.toast{border-radius:2px;top:0;width:auto;clear:both;margin-top:10px;position:relative;max-width:100%;height:auto;min-height:48px;line-height:1.5em;word-break:break-all;background-color:#323232;padding:10px 25px;font-size:1.1rem;font-weight:300;color:#fff;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}.toast .btn,.toast .btn-large,.toast .btn-flat{margin:0;margin-left:3rem}.toast.rounded{border-radius:24px}@media only screen and (max-width : 600px){.toast{width:100%;border-radius:0;}}@media only screen and (min-width : 601px) and (max-width : 992px){.toast{float:left;}}@media only screen and (min-width : 993px){.toast{float:right;}}.tabs{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;position:relative;height:48px;background-color:#fff;margin:0 auto;width:100%;white-space:nowrap}.tabs .tab{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;display:block;float:left;text-align:center;line-height:48px;height:48px;padding:0;margin:0;text-transform:uppercase;text-overflow:ellipsis;overflow:hidden;letter-spacing:.8px;width:15%;min-width:80px}.tabs .tab a{color:#ee6e73;display:block;width:100%;height:100%;text-overflow:ellipsis;overflow:hidden;-webkit-transition:color .28s ease;-moz-transition:color .28s ease;-o-transition:color .28s ease;-ms-transition:color .28s ease;transition:color .28s ease}.tabs .tab a:hover{color:#f9c9cb}.tabs .tab.disabled a{color:#f9c9cb;cursor:default}.tabs .indicator{position:absolute;bottom:0;height:2px;background-color:#f6b2b5;will-change:left, right}.hide-tab-scrollbar{position:relative;height:48px;overflow:hidden}.hide-tab-scrollbar .tabs{overflow-x:scroll;overflow-y:hidden}.scrollbar-measure{width:100px;height:100px;overflow:scroll;position:absolute;top:-9999px}.material-tooltip{padding:10px 8px;font-size:1rem;z-index:2000;background-color:transparent;border-radius:2px;color:#fff;min-height:36px;line-height:120%;opacity:0;display:none;position:absolute;text-align:center;max-width:calc(100% - 4px);overflow:hidden;left:0;top:0;will-change:top, left}.backdrop{position:absolute;opacity:0;display:none;height:7px;width:14px;border-radius:0 0 14px 14px;background-color:#323232;z-index:-1;-webkit-transform-origin:50% 10%;-moz-transform-origin:50% 10%;-ms-transform-origin:50% 10%;-o-transform-origin:50% 10%;transform-origin:50% 10%;will-change:transform, opacity}.btn,.btn-large,.btn-flat{border:none;border-radius:2px;display:inline-block;height:36px;line-height:36px;outline:0;padding:0 2rem;text-transform:uppercase;vertical-align:middle;-webkit-tap-highlight-color:transparent}.btn.disabled,.disabled.btn-large,.btn-floating.disabled,.btn-large.disabled,.btn:disabled,.btn-large:disabled,.btn-large:disabled,.btn-floating:disabled{background-color:#DFDFDF !important;box-shadow:none;color:#9F9F9F !important;cursor:default}.btn.disabled *,.disabled.btn-large *,.btn-floating.disabled *,.btn-large.disabled *,.btn:disabled *,.btn-large:disabled *,.btn-large:disabled *,.btn-floating:disabled *{pointer-events:none}.btn.disabled:hover,.disabled.btn-large:hover,.btn-floating.disabled:hover,.btn-large.disabled:hover,.btn:disabled:hover,.btn-large:disabled:hover,.btn-large:disabled:hover,.btn-floating:disabled:hover{background-color:#DFDFDF;color:#9F9F9F}.btn i,.btn-large i,.btn-floating i,.btn-large i,.btn-flat i{font-size:1.3rem;line-height:inherit}.btn,.btn-large{text-decoration:none;color:#fff;background-color:#26a69a;text-align:center;letter-spacing:.5px;-webkit-transition:.2s ease-out;-moz-transition:.2s ease-out;-o-transition:.2s ease-out;-ms-transition:.2s ease-out;transition:.2s ease-out;cursor:pointer}.btn:hover,.btn-large:hover{background-color:#2bbbad}.btn-floating{display:inline-block;color:#fff;position:relative;overflow:hidden;z-index:1;width:37px;height:37px;line-height:37px;padding:0;background-color:#26a69a;border-radius:50%;transition:.3s;cursor:pointer;vertical-align:middle}.btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:37px}.btn-floating:before{border-radius:0}.btn-floating.btn-large{width:55.5px;height:55.5px}.btn-floating.btn-large i{line-height:55.5px}button.btn-floating{border:none}.fixed-action-btn{position:fixed;right:23px;bottom:23px;padding-top:15px;margin-bottom:0;z-index:998}.fixed-action-btn.active ul{visibility:visible}.fixed-action-btn.horizontal{padding:0 0 0 15px}.fixed-action-btn.horizontal ul{text-align:right;right:64px;top:50%;transform:translateY(-50%);height:100%;left:initial;width:500px}.fixed-action-btn.horizontal ul li{display:inline-block;margin:15px 15px 0 0}.fixed-action-btn ul{left:0;right:0;text-align:center;position:absolute;bottom:64px;margin:0;visibility:hidden}.fixed-action-btn ul li{margin-bottom:15px}.fixed-action-btn ul a.btn-floating{opacity:0}.btn-flat{box-shadow:none;background-color:transparent;color:#343434;cursor:pointer}.btn-flat.disabled{color:#b3b3b3;cursor:default}.btn-large{height:54px;line-height:56px}.btn-large i{font-size:1.6rem}.btn-block{display:block}.dropdown-content{background-color:#fff;margin:0;display:none;min-width:100px;max-height:650px;overflow-y:auto;opacity:0;position:absolute;z-index:999;will-change:width, height}.dropdown-content li{clear:both;color:rgba(0,0,0,0.87);cursor:pointer;min-height:50px;line-height:1.5rem;width:100%;text-align:left;text-transform:none}.dropdown-content li:hover,.dropdown-content li.active,.dropdown-content li.selected{background-color:#eee}.dropdown-content li.active.selected{background-color:#e1e1e1}.dropdown-content li.divider{min-height:0;height:1px}.dropdown-content li>a,.dropdown-content li>span{font-size:16px;color:#26a69a;display:block;line-height:22px;padding:14px 16px}.dropdown-content li>span>label{top:1px;left:3px;height:18px}.dropdown-content li>a>i{height:inherit;line-height:inherit}/*! + * Waves v0.6.0 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */.waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle;z-index:1;will-change:opacity, transform;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;-ms-transition:all .3s ease-out;transition:all .3s ease-out}.waves-effect .waves-ripple{position:absolute;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;opacity:0;background:rgba(0,0,0,0.2);-webkit-transition:all 0.7s ease-out;-moz-transition:all 0.7s ease-out;-o-transition:all 0.7s ease-out;-ms-transition:all 0.7s ease-out;transition:all 0.7s ease-out;-webkit-transition-property:-webkit-transform, opacity;-moz-transition-property:-moz-transform, opacity;-o-transition-property:-o-transform, opacity;transition-property:transform, opacity;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);pointer-events:none}.waves-effect.waves-light .waves-ripple{background-color:rgba(255,255,255,0.45)}.waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,0.7)}.waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,0.7)}.waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,0.7)}.waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,0.7)}.waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,0.7)}.waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,0.7)}.waves-effect input[type="button"],.waves-effect input[type="reset"],.waves-effect input[type="submit"]{border:0;font-style:normal;font-size:inherit;text-transform:inherit;background:none}.waves-notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;-ms-transition:none !important;transition:none !important}.waves-circle{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(circle, white 100%, black 100%)}.waves-input-wrapper{border-radius:0.2em;vertical-align:bottom}.waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.waves-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%;-webkit-mask-image:none}.waves-block{display:block}a.waves-effect .waves-ripple{z-index:-1}.modal{display:none;position:fixed;left:0;right:0;background-color:#fafafa;padding:0;max-height:70%;width:55%;margin:auto;overflow-y:auto;border-radius:2px;will-change:top, opacity}@media only screen and (max-width : 992px){.modal{width:80%;}}.modal h1,.modal h2,.modal h3,.modal h4{margin-top:0}.modal .modal-content{padding:24px}.modal .modal-close{cursor:pointer}.modal .modal-footer{border-radius:0 0 2px 2px;background-color:#fafafa;padding:4px 6px;height:56px;width:100%}.modal .modal-footer .btn,.modal .modal-footer .btn-large,.modal .modal-footer .btn-flat{float:right;margin:6px 0}.lean-overlay{position:fixed;z-index:999;top:-100px;left:0;bottom:0;right:0;height:125%;width:100%;background:#000;display:none;will-change:opacity}.modal.modal-fixed-footer{padding:0;height:70%}.modal.modal-fixed-footer .modal-content{position:absolute;height:calc(100% - 56px);max-height:100%;width:100%;overflow-y:auto}.modal.modal-fixed-footer .modal-footer{border-top:1px solid rgba(0,0,0,0.1);position:absolute;bottom:0}.modal.bottom-sheet{top:auto;bottom:-100%;margin:0;width:100%;max-height:45%;border-radius:0;will-change:bottom, opacity}.collapsible{border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;margin:0.5rem 0 1rem 0}.collapsible-header{display:block;cursor:pointer;min-height:3rem;line-height:3rem;padding:0 1rem;background-color:#fff;border-bottom:1px solid #ddd}.collapsible-header i{width:2rem;font-size:1.6rem;line-height:3rem;display:block;float:left;text-align:center;margin-right:1rem}.collapsible-body{display:none;border-bottom:1px solid #ddd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.collapsible-body p{margin:0;padding:2rem}.side-nav .collapsible{border:none;box-shadow:none}.side-nav .collapsible li{padding:0}.side-nav .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;margin:0 1rem}.side-nav .collapsible-header i{line-height:inherit}.side-nav .collapsible-body{border:0;background-color:#fff}.side-nav .collapsible-body li a{margin:0 1rem 0 2rem}.collapsible.popout{border:none;box-shadow:none}.collapsible.popout>li{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);margin:0 24px;transition:margin .35s cubic-bezier(0.25, 0.46, 0.45, 0.94)}.collapsible.popout>li.active{box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);margin:16px 0}.chip{display:inline-block;height:32px;font-size:13px;font-weight:500;color:rgba(0,0,0,0.6);line-height:32px;padding:0 12px;border-radius:16px;background-color:#e4e4e4}.chip img{float:left;margin:0 8px 0 -12px;height:32px;width:32px;border-radius:50%}.chip i.material-icons{cursor:pointer;float:right;font-size:16px;line-height:32px;padding-left:8px}.materialboxed{display:block;cursor:zoom-in;position:relative;-webkit-transition:opacity .4s;-moz-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s;transition:opacity .4s}.materialboxed:hover{will-change:left, top, width, height}.materialboxed:hover:not(.active){opacity:.8}.materialboxed.active{cursor:zoom-out}#materialbox-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#292929;z-index:999;will-change:opacity}.materialbox-caption{position:fixed;display:none;color:#fff;line-height:50px;bottom:0;width:100%;text-align:center;padding:0% 15%;height:50px;z-index:1000;-webkit-font-smoothing:antialiased}select:focus{outline:1px solid #c9f3ef}button:focus{outline:none;background-color:#2ab7a9}label{font-size:0.8rem;color:#9e9e9e}::-webkit-input-placeholder{color:#d1d1d1}:-moz-placeholder{color:#d1d1d1}::-moz-placeholder{color:#d1d1d1}:-ms-input-placeholder{color:#d1d1d1}input[type=text],input[type=password],input[type=email],input[type=url],input[type=time],input[type=date],input[type=datetime-local],input[type=tel],input[type=number],input[type=search],textarea.materialize-textarea{background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;border-radius:0;outline:none;height:3rem;width:100%;font-size:1rem;margin:0 0 15px 0;padding:0;box-shadow:none;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;transition:all .3s}input[type=text]:disabled,input[type=text][readonly="readonly"],input[type=password]:disabled,input[type=password][readonly="readonly"],input[type=email]:disabled,input[type=email][readonly="readonly"],input[type=url]:disabled,input[type=url][readonly="readonly"],input[type=time]:disabled,input[type=time][readonly="readonly"],input[type=date]:disabled,input[type=date][readonly="readonly"],input[type=datetime-local]:disabled,input[type=datetime-local][readonly="readonly"],input[type=tel]:disabled,input[type=tel][readonly="readonly"],input[type=number]:disabled,input[type=number][readonly="readonly"],input[type=search]:disabled,input[type=search][readonly="readonly"],textarea.materialize-textarea:disabled,textarea.materialize-textarea[readonly="readonly"]{color:rgba(0,0,0,0.26);border-bottom:1px dotted rgba(0,0,0,0.26)}input[type=text]:disabled+label,input[type=text][readonly="readonly"]+label,input[type=password]:disabled+label,input[type=password][readonly="readonly"]+label,input[type=email]:disabled+label,input[type=email][readonly="readonly"]+label,input[type=url]:disabled+label,input[type=url][readonly="readonly"]+label,input[type=time]:disabled+label,input[type=time][readonly="readonly"]+label,input[type=date]:disabled+label,input[type=date][readonly="readonly"]+label,input[type=datetime-local]:disabled+label,input[type=datetime-local][readonly="readonly"]+label,input[type=tel]:disabled+label,input[type=tel][readonly="readonly"]+label,input[type=number]:disabled+label,input[type=number][readonly="readonly"]+label,input[type=search]:disabled+label,input[type=search][readonly="readonly"]+label,textarea.materialize-textarea:disabled+label,textarea.materialize-textarea[readonly="readonly"]+label{color:rgba(0,0,0,0.26)}input[type=text]:focus:not([readonly]),input[type=password]:focus:not([readonly]),input[type=email]:focus:not([readonly]),input[type=url]:focus:not([readonly]),input[type=time]:focus:not([readonly]),input[type=date]:focus:not([readonly]),input[type=datetime-local]:focus:not([readonly]),input[type=tel]:focus:not([readonly]),input[type=number]:focus:not([readonly]),input[type=search]:focus:not([readonly]),textarea.materialize-textarea:focus:not([readonly]){border-bottom:1px solid #26a69a;box-shadow:0 1px 0 0 #26a69a}input[type=text]:focus:not([readonly])+label,input[type=password]:focus:not([readonly])+label,input[type=email]:focus:not([readonly])+label,input[type=url]:focus:not([readonly])+label,input[type=time]:focus:not([readonly])+label,input[type=date]:focus:not([readonly])+label,input[type=datetime-local]:focus:not([readonly])+label,input[type=tel]:focus:not([readonly])+label,input[type=number]:focus:not([readonly])+label,input[type=search]:focus:not([readonly])+label,textarea.materialize-textarea:focus:not([readonly])+label{color:#26a69a}input[type=text].valid,input[type=text]:focus.valid,input[type=password].valid,input[type=password]:focus.valid,input[type=email].valid,input[type=email]:focus.valid,input[type=url].valid,input[type=url]:focus.valid,input[type=time].valid,input[type=time]:focus.valid,input[type=date].valid,input[type=date]:focus.valid,input[type=datetime-local].valid,input[type=datetime-local]:focus.valid,input[type=tel].valid,input[type=tel]:focus.valid,input[type=number].valid,input[type=number]:focus.valid,input[type=search].valid,input[type=search]:focus.valid,textarea.materialize-textarea.valid,textarea.materialize-textarea:focus.valid{border-bottom:1px solid #4CAF50;box-shadow:0 1px 0 0 #4CAF50}input[type=text].valid+label:after,input[type=text]:focus.valid+label:after,input[type=password].valid+label:after,input[type=password]:focus.valid+label:after,input[type=email].valid+label:after,input[type=email]:focus.valid+label:after,input[type=url].valid+label:after,input[type=url]:focus.valid+label:after,input[type=time].valid+label:after,input[type=time]:focus.valid+label:after,input[type=date].valid+label:after,input[type=date]:focus.valid+label:after,input[type=datetime-local].valid+label:after,input[type=datetime-local]:focus.valid+label:after,input[type=tel].valid+label:after,input[type=tel]:focus.valid+label:after,input[type=number].valid+label:after,input[type=number]:focus.valid+label:after,input[type=search].valid+label:after,input[type=search]:focus.valid+label:after,textarea.materialize-textarea.valid+label:after,textarea.materialize-textarea:focus.valid+label:after{content:attr(data-success);color:#4CAF50;opacity:1}input[type=text].invalid,input[type=text]:focus.invalid,input[type=password].invalid,input[type=password]:focus.invalid,input[type=email].invalid,input[type=email]:focus.invalid,input[type=url].invalid,input[type=url]:focus.invalid,input[type=time].invalid,input[type=time]:focus.invalid,input[type=date].invalid,input[type=date]:focus.invalid,input[type=datetime-local].invalid,input[type=datetime-local]:focus.invalid,input[type=tel].invalid,input[type=tel]:focus.invalid,input[type=number].invalid,input[type=number]:focus.invalid,input[type=search].invalid,input[type=search]:focus.invalid,textarea.materialize-textarea.invalid,textarea.materialize-textarea:focus.invalid{border-bottom:1px solid #F44336;box-shadow:0 1px 0 0 #F44336}input[type=text].invalid+label:after,input[type=text]:focus.invalid+label:after,input[type=password].invalid+label:after,input[type=password]:focus.invalid+label:after,input[type=email].invalid+label:after,input[type=email]:focus.invalid+label:after,input[type=url].invalid+label:after,input[type=url]:focus.invalid+label:after,input[type=time].invalid+label:after,input[type=time]:focus.invalid+label:after,input[type=date].invalid+label:after,input[type=date]:focus.invalid+label:after,input[type=datetime-local].invalid+label:after,input[type=datetime-local]:focus.invalid+label:after,input[type=tel].invalid+label:after,input[type=tel]:focus.invalid+label:after,input[type=number].invalid+label:after,input[type=number]:focus.invalid+label:after,input[type=search].invalid+label:after,input[type=search]:focus.invalid+label:after,textarea.materialize-textarea.invalid+label:after,textarea.materialize-textarea:focus.invalid+label:after{content:attr(data-error);color:#F44336;opacity:1}input[type=text]+label:after,input[type=password]+label:after,input[type=email]+label:after,input[type=url]+label:after,input[type=time]+label:after,input[type=date]+label:after,input[type=datetime-local]+label:after,input[type=tel]+label:after,input[type=number]+label:after,input[type=search]+label:after,textarea.materialize-textarea+label:after{display:block;content:"";position:absolute;top:65px;opacity:0;transition:.2s opacity ease-out,.2s color ease-out}.input-field{position:relative;margin-top:1rem}.input-field label{color:#9e9e9e;position:absolute;top:0.8rem;left:0.75rem;font-size:1rem;cursor:text;-webkit-transition:.2s ease-out;-moz-transition:.2s ease-out;-o-transition:.2s ease-out;-ms-transition:.2s ease-out;transition:.2s ease-out}.input-field label.active{font-size:0.8rem;-webkit-transform:translateY(-140%);-moz-transform:translateY(-140%);-ms-transform:translateY(-140%);-o-transform:translateY(-140%);transform:translateY(-140%)}.input-field .prefix{position:absolute;width:3rem;font-size:2rem;-webkit-transition:color .2s;-moz-transition:color .2s;-o-transition:color .2s;-ms-transition:color .2s;transition:color .2s}.input-field .prefix.active{color:#26a69a}.input-field .prefix ~ input,.input-field .prefix ~ textarea{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.input-field .prefix ~ textarea{padding-top:.8rem}.input-field .prefix ~ label{margin-left:3rem}@media only screen and (max-width : 992px){.input-field .prefix ~ input{width:86%;width:calc(100% - 3rem)}}@media only screen and (max-width : 600px){.input-field .prefix ~ input{width:80%;width:calc(100% - 3rem)}}.input-field input[type=search]{display:block;line-height:inherit;padding-left:4rem;width:calc(100% - 4rem)}.input-field input[type=search]:focus{background-color:#fff;border:0;box-shadow:none;color:#444}.input-field input[type=search]:focus+label i,.input-field input[type=search]:focus ~ .mdi-navigation-close,.input-field input[type=search]:focus ~ .material-icons{color:#444}.input-field input[type=search]+label{left:1rem}.input-field input[type=search] ~ .mdi-navigation-close,.input-field input[type=search] ~ .material-icons{position:absolute;top:0;right:1rem;color:transparent;cursor:pointer;font-size:2rem;transition:.3s color}textarea{width:100%;height:3rem;background-color:transparent}textarea.materialize-textarea{overflow-y:hidden;padding:1.6rem 0;resize:none;min-height:3rem}.hiddendiv{display:none;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;padding-top:1.2rem}[type="radio"]:not(:checked),[type="radio"]:checked{position:absolute;left:-9999px;visibility:hidden}[type="radio"]:not(:checked)+label,[type="radio"]:checked+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-transition:.28s ease;-moz-transition:.28s ease;-o-transition:.28s ease;-ms-transition:.28s ease;transition:.28s ease;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}[type="radio"]+label:before,[type="radio"]+label:after{content:'';position:absolute;left:0;top:0;margin:4px;width:16px;height:16px;z-index:0;-webkit-transition:.28s ease;-moz-transition:.28s ease;-o-transition:.28s ease;-ms-transition:.28s ease;transition:.28s ease}[type="radio"]:not(:checked)+label:before{border-radius:50%;border:2px solid #5a5a5a}[type="radio"]:not(:checked)+label:after{border-radius:50%;border:2px solid #5a5a5a;z-index:-1;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}[type="radio"]:checked+label:before{border-radius:50%;border:2px solid transparent}[type="radio"]:checked+label:after{border-radius:50%;border:2px solid #26a69a;background-color:#26a69a;z-index:0;-webkit-transform:scale(1.02);-moz-transform:scale(1.02);-ms-transform:scale(1.02);-o-transform:scale(1.02);transform:scale(1.02)}[type="radio"].with-gap:checked+label:before{border-radius:50%;border:2px solid #26a69a}[type="radio"].with-gap:checked+label:after{border-radius:50%;border:2px solid #26a69a;background-color:#26a69a;z-index:0;-webkit-transform:scale(.5);-moz-transform:scale(.5);-ms-transform:scale(.5);-o-transform:scale(.5);transform:scale(.5)}[type="radio"].with-gap:disabled:checked+label:before{border:2px solid rgba(0,0,0,0.26)}[type="radio"].with-gap:disabled:checked+label:after{border:none;background-color:rgba(0,0,0,0.26)}[type="radio"]:disabled:not(:checked)+label:before,[type="radio"]:disabled:checked+label:before{background-color:transparent;border-color:rgba(0,0,0,0.26)}[type="radio"]:disabled+label{color:rgba(0,0,0,0.26)}[type="radio"]:disabled:not(:checked)+label:before{border-color:rgba(0,0,0,0.26)}[type="radio"]:disabled:checked+label:after{background-color:rgba(0,0,0,0.26);border-color:#BDBDBD}form p{margin-bottom:10px;text-align:left}form p:last-child{margin-bottom:0}[type="checkbox"]:not(:checked),[type="checkbox"]:checked{position:absolute;left:-9999px;visibility:hidden}[type="checkbox"]{}[type="checkbox"]+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}[type="checkbox"]+label:before{content:'';position:absolute;top:0;left:0;width:18px;height:18px;z-index:0;border:2px solid #5a5a5a;border-radius:1px;margin-top:2px;-webkit-transition:0.2s;-moz-transition:0.2s;-o-transition:0.2s;-ms-transition:0.2s;transition:0.2s}[type="checkbox"]:not(:checked):disabled+label:before{border:none;background-color:rgba(0,0,0,0.26)}[type="checkbox"]:checked+label:before{top:-4px;left:-3px;width:12px;height:22px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #26a69a;border-bottom:2px solid #26a69a;-webkit-transform:rotate(40deg);-moz-transform:rotate(40deg);-ms-transform:rotate(40deg);-o-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:checked:disabled+label:before{border-right:2px solid rgba(0,0,0,0.26);border-bottom:2px solid rgba(0,0,0,0.26)}[type="checkbox"]:indeterminate+label:before{left:-10px;top:-11px;width:10px;height:22px;border-top:none;border-left:none;border-right:2px solid #26a69a;border-bottom:none;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:indeterminate:disabled+label:before{border-right:2px solid rgba(0,0,0,0.26);background-color:transparent}[type="checkbox"].filled-in+label:after{border-radius:2px}[type="checkbox"].filled-in+label:before,[type="checkbox"].filled-in+label:after{content:'';left:0;position:absolute;transition:border .25s,background-color .25s,width .2s .1s,height .2s .1s,top .2s .1s,left .2s .1s;z-index:1}[type="checkbox"].filled-in:not(:checked)+label:before{width:0;height:0;border:3px solid transparent;left:6px;top:10px;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:20% 40%;transform-origin:100% 100%}[type="checkbox"].filled-in:not(:checked)+label:after{height:20px;width:20px;background-color:transparent;border:2px solid #5a5a5a;top:0px;z-index:0}[type="checkbox"].filled-in:checked+label:before{top:0;left:1px;width:8px;height:13px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #fff;border-bottom:2px solid #fff;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"].filled-in:checked+label:after{top:0px;width:20px;height:20px;border:2px solid #26a69a;background-color:#26a69a;z-index:0}[type="checkbox"].filled-in:disabled:not(:checked)+label:before{background-color:transparent;border:2px solid transparent}[type="checkbox"].filled-in:disabled:not(:checked)+label:after{border-color:transparent;background-color:#BDBDBD}[type="checkbox"].filled-in:disabled:checked+label:before{background-color:transparent}[type="checkbox"].filled-in:disabled:checked+label:after{background-color:#BDBDBD;border-color:#BDBDBD}.switch,.switch *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.switch label{cursor:pointer}.switch label input[type=checkbox]{opacity:0;width:0;height:0}.switch label input[type=checkbox]:checked+.lever{background-color:#84c7c1}.switch label input[type=checkbox]:checked+.lever:after{background-color:#26a69a}.switch label .lever{content:"";display:inline-block;position:relative;width:40px;height:15px;background-color:#818181;border-radius:15px;margin-right:10px;transition:background 0.3s ease;vertical-align:middle;margin:0 16px}.switch label .lever:after{content:"";position:absolute;display:inline-block;width:21px;height:21px;background-color:#F1F1F1;border-radius:21px;box-shadow:0 1px 3px 1px rgba(0,0,0,0.4);left:-5px;top:-3px;transition:left 0.3s ease,background .3s ease,box-shadow 0.1s ease}input[type=checkbox]:checked:not(:disabled) ~ .lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,0.4),0 0 0 15px rgba(38,166,154,0.1)}input[type=checkbox]:not(:disabled) ~ .lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,0.4),0 0 0 15px rgba(0,0,0,0.08)}.switch label input[type=checkbox]:checked+.lever:after{left:24px}.switch input[type=checkbox][disabled]+.lever{cursor:default}.switch label input[type=checkbox][disabled]+.lever:after,.switch label input[type=checkbox][disabled]:checked+.lever:after{background-color:#BDBDBD}.select-label{position:absolute}.select-wrapper{position:relative}.select-wrapper input.select-dropdown{position:relative;cursor:pointer;background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;outline:none;height:3rem;line-height:3rem;width:100%;font-size:1rem;margin:0 0 15px 0;padding:0;display:block}.select-wrapper span.caret{color:initial;position:absolute;right:0;top:16px;font-size:10px}.select-wrapper span.caret.disabled{color:rgba(0,0,0,0.26)}.select-wrapper+label{position:absolute;top:-14px;font-size:0.8rem}select{display:none}select.browser-default{display:block}select:disabled{color:rgba(0,0,0,0.3)}.select-wrapper input.select-dropdown:disabled{color:rgba(0,0,0,0.3);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;border-bottom:1px solid rgba(0,0,0,0.3)}.select-wrapper i{color:rgba(0,0,0,0.3)}.select-dropdown li.disabled,.select-dropdown li.disabled>span,.select-dropdown li.optgroup{color:rgba(0,0,0,0.3);background-color:transparent}.select-dropdown li img{height:40px;width:40px;margin:5px 15px;float:right}.select-dropdown li.optgroup{border-top:1px solid #eee}.select-dropdown li.optgroup.selected>span{color:rgba(0,0,0,0.7)}.select-dropdown li.optgroup>span{color:rgba(0,0,0,0.4)}.select-dropdown li.optgroup ~ li:not(.optgroup){padding-left:1rem}.file-field{position:relative}.file-field .file-path-wrapper{overflow:hidden;padding-left:10px}.file-field input.file-path{width:100%}.file-field .btn,.file-field .btn-large{float:left;height:3rem;line-height:3rem}.file-field span{cursor:pointer}.file-field input[type=file]{position:absolute;top:0;right:0;left:0;bottom:0;width:100%;margin:0;padding:0;font-size:20px;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.range-field{position:relative}input[type=range],input[type=range]+.thumb{cursor:pointer}input[type=range]{position:relative;background-color:transparent;border:none;outline:none;width:100%;margin:15px 0px;padding:0}input[type=range]+.thumb{position:absolute;border:none;height:0;width:0;border-radius:50%;background-color:#26a69a;top:10px;margin-left:-6px;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-ms-transform-origin:50% 50%;-o-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}input[type=range]+.thumb .value{display:block;width:30px;text-align:center;color:#26a69a;font-size:0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}input[type=range]+.thumb.active{border-radius:50% 50% 50% 0}input[type=range]+.thumb.active .value{color:#fff;margin-left:-1px;margin-top:8px;font-size:10px}input[type=range]:focus{outline:none}input[type=range]{-webkit-appearance:none}input[type=range]::-webkit-slider-runnable-track{height:3px;background:#c2c0c2;border:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:14px;width:14px;border-radius:50%;background-color:#26a69a;transform-origin:50% 50%;margin:-5px 0 0 0;-webkit-transition:0.3s;-moz-transition:0.3s;-o-transition:0.3s;-ms-transition:0.3s;transition:0.3s}input[type=range]:focus::-webkit-slider-runnable-track{background:#ccc}input[type=range]{border:1px solid white}input[type=range]::-moz-range-track{height:3px;background:#ddd;border:none}input[type=range]::-moz-range-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a;margin-top:-5px}input[type=range]:-moz-focusring{outline:1px solid white;outline-offset:-1px}input[type=range]:focus::-moz-range-track{background:#ccc}input[type=range]::-ms-track{height:3px;background:transparent;border-color:transparent;border-width:6px 0;color:transparent}input[type=range]::-ms-fill-lower{background:#777}input[type=range]::-ms-fill-upper{background:#ddd}input[type=range]::-ms-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a}input[type=range]:focus::-ms-fill-lower{background:#888}input[type=range]:focus::-ms-fill-upper{background:#ccc}select{background-color:rgba(255,255,255,0.9);width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.table-of-contents.fixed{position:fixed}.table-of-contents li{padding:2px 0}.table-of-contents a{display:inline-block;font-weight:300;color:#757575;padding-left:20px;height:1.5rem;line-height:1.5rem;letter-spacing:.4;display:inline-block}.table-of-contents a:hover{color:#a8a8a8;padding-left:19px;border-left:1px solid #ea4a4f}.table-of-contents a.active{font-weight:500;padding-left:18px;border-left:2px solid #ea4a4f}.side-nav{position:fixed;width:240px;left:-105%;top:0;margin:0;height:100%;height:calc(100% + 60px);height:-moz-calc(100%);padding-bottom:60px;background-color:#fff;z-index:999;overflow-y:auto;will-change:left}.side-nav.right-aligned{will-change:right;right:-105%;left:auto}.side-nav .collapsible{margin:0}.side-nav li{float:none;padding:0 15px}.side-nav li:hover,.side-nav li.active{background-color:#ddd}.side-nav a{color:#444;display:block;font-size:1rem;height:64px;line-height:64px;padding:0 15px}.drag-target{height:100%;width:10px;position:fixed;top:0;z-index:998}.side-nav.fixed a{display:block;padding:0 15px;color:#444}.side-nav.fixed{left:0;position:fixed}.side-nav.fixed.right-aligned{right:0;left:auto}@media only screen and (max-width : 992px){.side-nav.fixed{left:-105%}.side-nav.fixed.right-aligned{right:-105%;left:auto}}.side-nav .collapsible-body li.active,.side-nav.fixed .collapsible-body li.active{background-color:#ee6e73}.side-nav .collapsible-body li.active a,.side-nav.fixed .collapsible-body li.active a{color:#fff}#sidenav-overlay{position:fixed;top:0;left:0;right:0;height:120vh;background-color:rgba(0,0,0,0.5);z-index:997;will-change:opacity}.preloader-wrapper{display:inline-block;position:relative;width:48px;height:48px}.preloader-wrapper.small{width:36px;height:36px}.preloader-wrapper.big{width:64px;height:64px}.preloader-wrapper.active{-webkit-animation:container-rotate 1568ms linear infinite;animation:container-rotate 1568ms linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{transform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0;border-color:#26a69a}.spinner-blue,.spinner-blue-only{border-color:#4285f4}.spinner-red,.spinner-red-only{border-color:#db4437}.spinner-yellow,.spinner-yellow-only{border-color:#f4b400}.spinner-green,.spinner-green-only{border-color:#0f9d58}.active .spinner-layer.spinner-blue{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-red{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-yellow{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-green{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer,.active .spinner-layer.spinner-blue-only,.active .spinner-layer.spinner-red-only,.active .spinner-layer.spinner-yellow-only,.active .spinner-layer.spinner-green-only{opacity:1;-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@-webkit-keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@-webkit-keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@-webkit-keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@-webkit-keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}@keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}.gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.gap-patch .circle{width:1000%;left:-450%}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.circle-clipper .circle{width:200%;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent !important;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0}.circle-clipper.left .circle{left:0;border-right-color:transparent !important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right .circle{left:-100%;border-left-color:transparent !important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper.left .circle{-webkit-animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .circle-clipper.right .circle{-webkit-animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes left-spin{from{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{from{transform:rotate(130deg)}50%{transform:rotate(-5deg)}to{transform:rotate(130deg)}}@-webkit-keyframes right-spin{from{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{from{transform:rotate(-130deg)}50%{transform:rotate(5deg)}to{transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1)}@-webkit-keyframes fade-out{from{opacity:1}to{opacity:0}}@keyframes fade-out{from{opacity:1}to{opacity:0}}.slider{position:relative;height:400px;width:100%}.slider.fullscreen{height:100%;width:100%;position:absolute;top:0;left:0;right:0;bottom:0}.slider.fullscreen ul.slides{height:100%}.slider.fullscreen ul.indicators{z-index:2;bottom:30px}.slider .slides{background-color:#9e9e9e;margin:0;height:400px}.slider .slides li{opacity:0;position:absolute;top:0;left:0;z-index:1;width:100%;height:inherit;overflow:hidden}.slider .slides li img{height:100%;width:100%;background-size:cover;background-position:center}.slider .slides li .caption{color:#fff;position:absolute;top:15%;left:15%;width:70%;opacity:0}.slider .slides li .caption p{color:#e0e0e0}.slider .slides li.active{z-index:2}.slider .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.slider .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:16px;width:16px;margin:0 12px;background-color:#e0e0e0;-webkit-transition:background-color .3s;-moz-transition:background-color .3s;-o-transition:background-color .3s;-ms-transition:background-color .3s;transition:background-color .3s;border-radius:50%}.slider .indicators .indicator-item.active{background-color:#4CAF50}.picker{font-size:16px;text-align:left;line-height:1.2;color:#000000;position:absolute;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}/*! + * Default mobile-first, responsive styling for pickadate.js + * Demo: http://amsul.github.io/pickadate.js + */.picker__holder,.picker__frame{bottom:0;left:0;right:0;top:100%}.picker__holder{position:fixed;-webkit-transition:background 0.15s ease-out,top 0s 0.15s;-moz-transition:background 0.15s ease-out,top 0s 0.15s;transition:background 0.15s ease-out,top 0s 0.15s;-webkit-backface-visibility:hidden}.picker__frame{position:absolute;margin:0 auto;min-width:256px;width:300px;max-height:350px;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;-webkit-transition:all 0.15s ease-out;-moz-transition:all 0.15s ease-out;transition:all 0.15s ease-out}@media (min-height: 28.875em){.picker__frame{overflow:visible;top:auto;bottom:-100%;max-height:80%}}@media (min-height: 40.125em){.picker__frame{margin-bottom:7.5%}}.picker__wrap{display:table;width:100%;height:100%}@media (min-height: 28.875em){.picker__wrap{display:block}}.picker__box{background:#ffffff;display:table-cell;vertical-align:middle}@media (min-height: 28.875em){.picker__box{display:block;border:1px solid #777777;border-top-color:#898989;border-bottom-width:0;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;-webkit-box-shadow:0 12px 36px 16px rgba(0,0,0,0.24);-moz-box-shadow:0 12px 36px 16px rgba(0,0,0,0.24);box-shadow:0 12px 36px 16px rgba(0,0,0,0.24)}}.picker--opened .picker__holder{top:0;background:transparent;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)";zoom:1;background:rgba(0,0,0,0.32);-webkit-transition:background 0.15s ease-out;-moz-transition:background 0.15s ease-out;transition:background 0.15s ease-out}.picker--opened .picker__frame{top:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1;opacity:1}@media (min-height: 35.875em){.picker--opened .picker__frame{top:10%;bottom:20% auto}}.picker__input.picker__input--active{border-color:#E3F2FD}.picker__frame{margin:0 auto;max-width:325px}@media (min-height: 38.875em){.picker--opened .picker__frame{top:10%;bottom:auto}}.picker__box{padding:0 1em}.picker__header{text-align:center;position:relative;margin-top:.75em}.picker__month,.picker__year{display:inline-block;margin-left:.25em;margin-right:.25em}.picker__select--month,.picker__select--year{height:2em;padding:0;margin-left:.25em;margin-right:.25em}.picker__select--month.browser-default{display:inline;background-color:#FFFFFF;width:40%}.picker__select--year.browser-default{display:inline;background-color:#FFFFFF;width:25%}.picker__select--month:focus,.picker__select--year:focus{border-color:rgba(0,0,0,0.05)}.picker__nav--prev,.picker__nav--next{position:absolute;padding:.5em 1.25em;width:1em;height:1em;box-sizing:content-box;top:-0.25em}.picker__nav--prev{left:-1em;padding-right:1.25em}.picker__nav--next{right:-1em;padding-left:1.25em}.picker__nav--disabled,.picker__nav--disabled:hover,.picker__nav--disabled:before,.picker__nav--disabled:before:hover{cursor:default;background:none;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{text-align:center;border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:1rem;width:100%;margin-top:.75em;margin-bottom:.5em}.picker__table th,.picker__table td{text-align:center}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999999;font-weight:500}@media (min-height: 33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day--today{position:relative;color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day--disabled:before{border-top-color:#aaaaaa}.picker__day--infocus:hover{cursor:pointer;color:#000;font-weight:500}.picker__day--outfocus{display:none;padding:.75rem 0;color:#fff}.picker__day--outfocus:hover{cursor:pointer;color:#dddddd;font-weight:500}.picker__day--highlighted:hover,.picker--focused .picker__day--highlighted{cursor:pointer}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(.75);-moz-transform:scale(.75);-ms-transform:scale(.75);-o-transform:scale(.75);transform:scale(.75);background:#0089ec;color:#ffffff}.picker__day--disabled,.picker__day--disabled:hover,.picker--focused .picker__day--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbbbbb}.picker__footer{text-align:center;display:flex;align-items:center;justify-content:space-between}.picker__button--today,.picker__button--clear,.picker__button--close{border:1px solid #ffffff;background:#ffffff;font-size:.8em;padding:.66em 0;font-weight:bold;width:33%;display:inline-block;vertical-align:bottom}.picker__button--today:hover,.picker__button--clear:hover,.picker__button--close:hover{cursor:pointer;color:#000000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--today:focus,.picker__button--clear:focus,.picker__button--close:focus{background:#b1dcfb;border-color:rgba(0,0,0,0.05);outline:none}.picker__button--today:before,.picker__button--clear:before,.picker__button--close:before{position:relative;display:inline-block;height:0}.picker__button--today:before,.picker__button--clear:before{content:" ";margin-right:.45em}.picker__button--today:before{top:-0.05em;width:0;border-top:0.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{top:-0.25em;width:.66em;border-top:3px solid #ee2200}.picker__button--close:before{content:"\D7";top:-0.1em;vertical-align:top;font-size:1.1em;margin-right:.35em;color:#777777}.picker__button--today[disabled],.picker__button--today[disabled]:hover{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default}.picker__button--today[disabled]:before{border-top-color:#aaaaaa}.picker__box{border-radius:2px;overflow:hidden}.picker__date-display{text-align:center;background-color:#26a69a;color:#fff;padding-bottom:15px;font-weight:300}.picker__nav--prev:hover,.picker__nav--next:hover{cursor:pointer;color:#000000;background:#a1ded8}.picker__weekday-display{background-color:#1f897f;padding:10px;font-weight:200;letter-spacing:.5;font-size:1rem;margin-bottom:15px}.picker__month-display{text-transform:uppercase;font-size:2rem}.picker__day-display{font-size:4.5rem;font-weight:400}.picker__year-display{font-size:1.8rem;color:rgba(255,255,255,0.4)}.picker__box{padding:0}.picker__calendar-container{padding:0 1rem}.picker__calendar-container thead{border:none}.picker__table{margin-top:0;margin-bottom:.5em}.picker__day--infocus{color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day.picker__day--today{color:#26a69a}.picker__day.picker__day--today.picker__day--selected{color:#fff}.picker__weekday{font-size:.9rem}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(.9);-moz-transform:scale(.9);-ms-transform:scale(.9);-o-transform:scale(.9);transform:scale(.9);background-color:#26a69a;color:#ffffff}.picker__day--selected.picker__day--outfocus,.picker__day--selected:hover.picker__day--outfocus,.picker--focused .picker__day--selected.picker__day--outfocus{background-color:#a1ded8}.picker__footer{text-align:right;padding:5px 10px}.picker__close,.picker__today{font-size:1.1rem;padding:0 1rem;color:#26a69a}.picker__nav--prev:before,.picker__nav--next:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:0.75em solid #676767;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:0.75em solid #676767}button.picker__today:focus,button.picker__clear:focus,button.picker__close:focus{background-color:#a1ded8}.picker__list{list-style:none;padding:0.75em 0 4.2em;margin:0}.picker__list-item{border-bottom:1px solid #dddddd;border-top:1px solid #dddddd;margin-bottom:-1px;position:relative;background:#ffffff;padding:.75em 1.25em}@media (min-height: 46.75em){.picker__list-item{padding:.5em 1em}}.picker__list-item:hover{cursor:pointer;color:#000000;background:#b1dcfb;border-color:#0089ec;z-index:10}.picker__list-item--highlighted{border-color:#0089ec;z-index:10}.picker__list-item--highlighted:hover,.picker--focused .picker__list-item--highlighted{cursor:pointer;color:#000000;background:#b1dcfb}.picker__list-item--selected,.picker__list-item--selected:hover,.picker--focused .picker__list-item--selected{background:#0089ec;color:#ffffff;z-index:10}.picker__list-item--disabled,.picker__list-item--disabled:hover,.picker--focused .picker__list-item--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default;border-color:#dddddd;z-index:auto}.picker--time .picker__button--clear{display:block;width:80%;margin:1em auto 0;padding:1em 1.25em;background:none;border:0;font-weight:500;font-size:.67em;text-align:center;text-transform:uppercase;color:#666}.picker--time .picker__button--clear:hover,.picker--time .picker__button--clear:focus{color:#000000;background:#b1dcfb;background:#ee2200;border-color:#ee2200;cursor:pointer;color:#ffffff;outline:none}.picker--time .picker__button--clear:before{top:-0.25em;color:#666;font-size:1.25em;font-weight:bold}.picker--time .picker__button--clear:hover:before,.picker--time .picker__button--clear:focus:before{color:#ffffff}.picker--time .picker__frame{min-width:256px;max-width:320px}.picker--time .picker__box{font-size:1em;background:#f2f2f2;padding:0}@media (min-height: 40.125em){.picker--time .picker__box{margin-bottom:5em}} diff --git a/static/css/style.css b/static/css/style.css new file mode 100644 index 0000000..15a6b44 --- /dev/null +++ b/static/css/style.css @@ -0,0 +1,100 @@ +/* Custom Stylesheet */ +/** + * Use this file to override Materialize files so you can update + * the core Materialize files in the future + * + * Made By MaterializeCSS.com + */ + +nav ul a, +nav .brand-logo { + color: #444; +} + +p { + line-height: 2rem; +} + +#logo-container { + padding-top: 5px; + padding-bottom: 5px; + height: 100%; + left: 50%; + transform: translateX(-50%); +} + +.button-collapse { + color: #26a69a; +} + +.sub-button { + margin-top: 5px; +} + +.parallax-container { + min-height: 380px; + line-height: 0; + height: auto; + color: rgba(255,255,255,.9); +} + .parallax-container .section { + width: 100%; + } + +@media only screen and (max-width : 992px) { + .parallax-container .section { + top: 40%; + } + #index-banner .section { + top: 10%; + } +} + +@media only screen and (max-width : 600px) { + .parallax-container .section { + height: auto; + overflow: auto; + } + .container { + height: auto; + } + #index-banner .section { + top: 0; + } +} + +#registration-banner { + min-height: 100px; + max-height: 150px; +} + +#registration-banner .section{ + top: auto; +} + +.icon-block { + padding: 0 15px; +} +.icon-block .material-icons { + font-size: inherit; +} + +footer.page-footer { + margin: 0; +} + + +.parallax img { + display: inherit +} + +#mlh-trust-badge { + display: block; + max-width: 100px; + min-width: 60px; + position: fixed; + right: 50px; + top: 0; + width: 10%; + z-index: 10000; +} \ No newline at end of file diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000..721b62a Binary files /dev/null and b/static/favicon.png differ diff --git a/static/img/HackWPILogo.svg b/static/img/HackWPILogo.svg new file mode 100644 index 0000000..4eb4f70 --- /dev/null +++ b/static/img/HackWPILogo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/background1.jpg b/static/img/background1.jpg new file mode 100644 index 0000000..624cf79 Binary files /dev/null and b/static/img/background1.jpg differ diff --git a/static/img/background2.png b/static/img/background2.png new file mode 100644 index 0000000..ebde372 Binary files /dev/null and b/static/img/background2.png differ diff --git a/static/img/background3.png b/static/img/background3.png new file mode 100644 index 0000000..a7beb66 Binary files /dev/null and b/static/img/background3.png differ diff --git a/static/img/contact_bg.png b/static/img/contact_bg.png new file mode 100755 index 0000000..7298462 Binary files /dev/null and b/static/img/contact_bg.png differ diff --git a/static/img/cosponsors.jpg b/static/img/cosponsors.jpg new file mode 100644 index 0000000..baf9b3e Binary files /dev/null and b/static/img/cosponsors.jpg differ diff --git a/static/img/cosponsors.png b/static/img/cosponsors.png new file mode 100644 index 0000000..283e31b Binary files /dev/null and b/static/img/cosponsors.png differ diff --git a/static/img/cover.png b/static/img/cover.png new file mode 100644 index 0000000..7a5d451 Binary files /dev/null and b/static/img/cover.png differ diff --git a/static/img/hackwpi_longlogo.png b/static/img/hackwpi_longlogo.png new file mode 100644 index 0000000..c16c22e Binary files /dev/null and b/static/img/hackwpi_longlogo.png differ diff --git a/static/img/nosponsors.png b/static/img/nosponsors.png new file mode 100644 index 0000000..c959073 Binary files /dev/null and b/static/img/nosponsors.png differ diff --git a/static/img/sponsors.png b/static/img/sponsors.png new file mode 100644 index 0000000..db9573c Binary files /dev/null and b/static/img/sponsors.png differ diff --git a/static/img/sponsors.xcf b/static/img/sponsors.xcf new file mode 100644 index 0000000..1f1c0cb Binary files /dev/null and b/static/img/sponsors.xcf differ diff --git a/static/img/sponsors/Carbon_Black_Logo.png b/static/img/sponsors/Carbon_Black_Logo.png new file mode 100644 index 0000000..4dcfba2 Binary files /dev/null and b/static/img/sponsors/Carbon_Black_Logo.png differ diff --git a/static/img/sponsors/Orange Wakefly Logo 2015 Stacked.png b/static/img/sponsors/Orange Wakefly Logo 2015 Stacked.png new file mode 100644 index 0000000..35a105e Binary files /dev/null and b/static/img/sponsors/Orange Wakefly Logo 2015 Stacked.png differ diff --git a/static/img/sponsors/Vistaprint.jpg b/static/img/sponsors/Vistaprint.jpg new file mode 100644 index 0000000..ac9836d Binary files /dev/null and b/static/img/sponsors/Vistaprint.jpg differ diff --git a/goathacks/static/js/admin.js b/static/js/admin.js similarity index 92% rename from goathacks/static/js/admin.js rename to static/js/admin.js index 45b2515..9e61ede 100644 --- a/goathacks/static/js/admin.js +++ b/static/js/admin.js @@ -82,7 +82,7 @@ const promoteFromWaitlist = (id) => { confirmButtonText: 'Yes, promote!', confirmButtonColor: successColor }, () => { - $.get('/admin/promote_from_waitlist/' + id, (data) => { + $.get('/promote_from_waitlist?mlh_id=' + id, (data) => { let title = '' let msg = '' let type = '' @@ -110,7 +110,7 @@ const changeAdmin = (id, action) => { confirmButtonText: 'Yes, ' + action + '!', confirmButtonColor: errColor }, () => { - $.get('/admin/change_admin/' + id + '/' + action, (data) => { + $.get('/change_admin?mlh_id=' + id + '&action=' + action, (data) => { let title = '' let msg = '' let type = '' @@ -138,7 +138,7 @@ const drop = (id) => { confirmButtonText: 'Yes, drop!', confirmButtonColor: errColor }, () => { - $.get('/admin/drop/' + id, (data) => { + $.get('/drop?mlh_id=' + id, (data) => { let title = '' let msg = '' let type = '' @@ -166,7 +166,7 @@ const checkIn = (id) => { confirmButtonText: 'Yes, check in!', confirmButtonColor: successColor }, () => { - $.get('/admin/check_in/' + id, (data) => { + $.get('/check_in?mlh_id=' + id, (data) => { let title = '' let msg = '' let type = '' @@ -174,8 +174,6 @@ const checkIn = (id) => { title = 'Checked in!' msg = 'The hacker was checked in!' type = 'success' - // Update table in admin.html (This is a hack, and a terrible one, but at least there's feedback on the change. - document.getElementById(id + '-checked_in').innerHTML = "True" } else { title = 'Error!' msg = JSON.stringify(data) diff --git a/goathacks/static/js/init.js b/static/js/init.js similarity index 100% rename from goathacks/static/js/init.js rename to static/js/init.js diff --git a/goathacks/static/js/jquery-2.2.4.min.js b/static/js/jquery-2.2.4.min.js similarity index 100% rename from goathacks/static/js/jquery-2.2.4.min.js rename to static/js/jquery-2.2.4.min.js diff --git a/goathacks/static/js/jquery.easing.min.js b/static/js/jquery.easing.min.js similarity index 100% rename from goathacks/static/js/jquery.easing.min.js rename to static/js/jquery.easing.min.js diff --git a/goathacks/static/js/materialize.js b/static/js/materialize.js similarity index 100% rename from goathacks/static/js/materialize.js rename to static/js/materialize.js diff --git a/goathacks/static/js/materialize.min.js b/static/js/materialize.min.js similarity index 100% rename from goathacks/static/js/materialize.min.js rename to static/js/materialize.min.js diff --git a/templates/admin.html b/templates/admin.html new file mode 100644 index 0000000..6bb82d6 --- /dev/null +++ b/templates/admin.html @@ -0,0 +1,275 @@ + + + + + Hack @ WPI + + + + + + + + + + + + + + + + + +
+
+ +
+
+

Gender:

+ + +
+
+

Schools:

+ + +
+
+

Majors:

+ + +
+
+
+

Counts:

+ + + + + + + + + + + + + + + + + +
TotalAttendeesWaitlistChecked In
{{ total_count }}{{ (total_count - waitlist_count) }}{{ waitlist_count }}{{ check_in_count }}
+ +

Shirts:

+ + + + + + + + + + + + + + + + + + + + + + +
XXSXSSMLXXL
{{ shirt_count['xxs'] }}{{ shirt_count['xs'] }}{{ shirt_count['s'] }}{{ shirt_count['m'] }}{{ shirt_count['l'] }}{{ shirt_count['xl'] }}{{ shirt_count['xxl'] }}
+ +

Hackers:

+ + + + + + + + + + + + + + + + + + + {% for hacker in hackers %} + + + + + + + + + + + + + + + {% endfor %} + +
OptionsChecked In?Waitlisted?AdminMLH IDTime RegisteredEmailNamePhoneDietSpecialSchool
+
+ + +
+
{{ hacker['checked_in'] }}{{ hacker['waitlisted'] }}{{ hacker['admin'] }}{{ hacker['id'] }}{{ hacker['registration_time'] }}{{ hacker['email'] }}{{ hacker['first_name'] + ' ' + hacker['last_name'] }}{{ hacker['phone_number'] }}{{ hacker['dietary_restrictions'] }}{{ hacker['special_needs'] }}{{ hacker['school']['name'] }}
+
+
+
+ + + + + + diff --git a/templates/dashboard.html b/templates/dashboard.html new file mode 100644 index 0000000..0f41977 --- /dev/null +++ b/templates/dashboard.html @@ -0,0 +1,77 @@ +{% include 'header.html' %} + + + +
+
+
+

Hi {{ name }}!

+ {% if waitlisted %} +

You are waitlisted, if space opens up we ill let you know...

+ {% else %} +

You are fully registered! We look forward to seeing you!

+ {% endif %} +
+

Drop Application :(

+ {% if admin %} +

Admin Dashboard

+ {% endif %} +
+ Please sit tight, while we improve the UI of this page :P +
+
+
+ + + +{% include 'footer.html' %} diff --git a/templates/footer.html b/templates/footer.html new file mode 100644 index 0000000..028a60b --- /dev/null +++ b/templates/footer.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/templates/header.html b/templates/header.html new file mode 100644 index 0000000..fa1dc97 --- /dev/null +++ b/templates/header.html @@ -0,0 +1,22 @@ + + + + + + Hack @ WPI + + + + + + + + + + diff --git a/templates/index.html b/templates/index.html new file mode 100755 index 0000000..29d6d29 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,157 @@ +{% include 'header.html' %} +
+
+
+
+

+

Learn. Hack. Compete.

+
+
An open for all WPI Hackathon, for both hardware and software!
+
+
+
+ today Jan. 12 - 14th +
+
+ room WPI Odeum +
+ Register Here! +
+ +
+ Code +
+
+
+ +
+
+ +
+
+
+
+
+
background image
+
+ + +
+
+ + +
+
+
+

grade

+
Learn
+

Participate in the workshops taught by experienced students and learn everything you need to take your project from idea to reality. Ask currently employed Mentors for help when needed.

+
+
+ +
+
+

settings

+
Hack
+

Work all weekend long to build and hack your project together. We provide food, snacks, drinks, and entertainment; everything you need to stay focused and have fun for the whole event.

+
+
+ +
+
+

group

+
Compete
+

Present your project at the end of the hackathon to our panel of judges, and win various prizes! Grand prizes are available for the top three teams, the best overall, the best software, and the best hardware project. Additionally, smaller prizes will also be available for various categories.

+
+
+
+
+
+ + +
+
+
+
+ cosponsors +
+
+
+
+ background image +
+
+ +
+
+
+
+
+

+
Organizing Club
+

Hack @ WPI is run by the local ACM chapter. The event would not be possible without their support!

+
+
Sponsoring Companies
+

Hack @ WPI is proud to announce that the companies below are all part of making the event a reality.

+

+
+
+
+
+
+ + +
+
+
+
+ sponsors +
+
+
+
+ background +
+
+ +
+
+
+
Interested in Sponsoring or Co-Sponsoring?
+
+

For any inquiries regarding sponsoring the event as a company or co-sponsoring the event as an on campus club, please email hack@wpi.edu, and we will happily discuss it with you!

+
+
+
+

FAQ

+
+
When does registration close?
+

Registration officially closes on Monday, January 10th, 11:59pm.

+
+
+
Will there be travel reimbursements?
+

We are attempting to partner with some nearby schools to run a bus from their's to ours, but may not have the budget. If you're interested in providing a bus to our hackathon, let us know. At the moment we cannot provide travel reimbursments.

+
+
+
How do I know I'm registered?
+

You should be automatically notified whether or not you're registered. If you're on the waitlist and a spot opens, you will get an email saying you got in.

+
+
+
I am officially registered but now I want to unregister, how do I do that?
+

Go to hack.wpi.edu/dashboard. There is a link on the bottom to drop your registration.

+
+
+
+ +
+
+{% include 'footer.html' %} diff --git a/templates/register.html b/templates/register.html new file mode 100644 index 0000000..a9a1ba9 --- /dev/null +++ b/templates/register.html @@ -0,0 +1,51 @@ +{% include 'header.html' %} + +
+
+
+

Registration

+
+
background
+
+
+ Major League Hacking 2017 Hackathon Season + +
+

Hi {{ name }}, just a few more steps!

+
+
+
+

If you'd like, add your resume to send to sponsors...

+
+
+ File + +
+
+ +
+
+
+

By registering & attending, you agree to the following policies (We are no longer MLH afilliated, but we agree with their policies):

+

+ MLH's Data Sharing Notice +

+

+ MLH's Privacy Policy +

+

+ MLH's + Contest Terms and Conditions +

+

+ MLH's Code of Conduct +

+
+ +

+ +
+
+
+
+{% include 'footer.html' %} diff --git a/wsgi.py b/wsgi.py deleted file mode 100644 index 1613992..0000000 --- a/wsgi.py +++ /dev/null @@ -1,3 +0,0 @@ -from goathacks import create_app - -application = create_app()