From 17d188027fdea14a9d1032a52250100c96313e28 Mon Sep 17 00:00:00 2001 From: Pedro Abbud Date: Wed, 23 Oct 2019 16:33:43 -0300 Subject: [PATCH 01/11] Fetching user data from github on users route --- api/__init__.py | 5 +++- api/views/__init__.py | 4 ++- api/views/users.py | 69 +++++++++++++++++++++++++++++++++++++++++++ models/user.py | 8 +++-- requirements.txt | 1 + 5 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 api/views/users.py diff --git a/api/__init__.py b/api/__init__.py index 5b9ea48..13fdada 100644 --- a/api/__init__.py +++ b/api/__init__.py @@ -1,15 +1,18 @@ from flask import Flask, request from .views import (create_exercises_blueprint, create_topics_blueprint, - create_health_check_blueprint) + create_health_check_blueprint, create_users_blueprint) def create_app(session): exercises = create_exercises_blueprint(session, request) topics = create_topics_blueprint(session, request) + users = create_users_blueprint(session, request) + healthcheck = create_health_check_blueprint(session) app = Flask(__name__) app.register_blueprint(healthcheck, url_prefix='/api/healthcheck') app.register_blueprint(exercises, url_prefix='/api/exercises') app.register_blueprint(topics, url_prefix='/api/topics') + app.register_blueprint(users, url_prefix='/api/users') return app diff --git a/api/views/__init__.py b/api/views/__init__.py index 021cdda..d9916ba 100644 --- a/api/views/__init__.py +++ b/api/views/__init__.py @@ -1,8 +1,10 @@ from .exercises import create_exercises_blueprint from .topics import create_topics_blueprint +from .users import create_users_blueprint from .health_check import create_health_check_blueprint __all__ = ['create_exercises_blueprint', 'create_topics_blueprint', - 'create_health_check_blueprint'] + 'create_health_check_blueprint', + 'create_users_blueprint'] diff --git a/api/views/users.py b/api/views/users.py new file mode 100644 index 0000000..f4f9252 --- /dev/null +++ b/api/views/users.py @@ -0,0 +1,69 @@ +from datetime import datetime +from flask import Blueprint, Response +from flask_cors import CORS +import requests +from models import User +from uuid import uuid4 + +GITHUB_URI_OAUTH = "https://github.com/login/oauth/access_token" +GITHUB_URI_USER = "https://api.github.com/user" +GITHUB_CLIENT_ID = "36689cf871668e2b775e" +GITHUB_CLIENT_SECRET = "0865b1550f1725689b5a2239f5d596d5194b6960" + +def fetch_access_token(code): + params = { + "code":code, + "client_id": GITHUB_CLIENT_ID, + "client_secret": GITHUB_CLIENT_SECRET, + } + headers = { + 'Accept': 'application/json' + } + github_response = requests.get(GITHUB_URI_OAUTH, params=params, + headers=headers) + return github_response.json().get('access_token') + + +def fetch_user_data(access_token): + headers = {'Authorization': f"token {access_token}"} + params = { + "client_id": GITHUB_CLIENT_ID, + "client_secret": GITHUB_CLIENT_SECRET, + } + github_response = requests.get(GITHUB_URI_USER, + headers=headers, + params=params) + + return github_response.json() + + +def create_users_blueprint(session, request, default_limit=100): + users = Blueprint('users', __name__) + CORS(users) + @users.route('/', methods=['POST']) + def new_user(): + data = request.get_json(force=True) + code = data.get('code') + if code: + access_token = fetch_access_token(code) + print(access_token) + if access_token: + user_data = fetch_user_data(access_token) + new_user = User( + email=user_data['email'], + name=user_data['name'], + nickname=user_data['login'], + avatar_url=user_data['avatar_url'], + token=uuid4(), + github_token=access_token, + created_at=datetime.now(), + ) + session.add(new_user) + session.commit() + + return Response(status=200) + return Response(status=400) + + + return users + diff --git a/models/user.py b/models/user.py index bebd0a1..cfc54a4 100644 --- a/models/user.py +++ b/models/user.py @@ -1,5 +1,5 @@ from .base import Base -from sqlalchemy import Column, String, Boolean +from sqlalchemy import Column, String, Boolean, DateTime class User(Base): @@ -7,9 +7,13 @@ class User(Base): email = Column(String, primary_key=True) name = Column(String, nullable=False) - nickname = Column(String) + nickname = Column(String, nullable=False) is_teacher = Column(Boolean, default=False) + token = Column(String, nullable=False) + avatar_url = Column(String, nullable=True) github_token = Column(String, nullable=False) + github_repositories = Column(String, nullable=False) + created_at = Column(DateTime, nullable=False) def __repr__(self): return "" % (self.name, self.email) diff --git a/requirements.txt b/requirements.txt index 20d88ff..9705281 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,3 +8,4 @@ flask tqdm uwsgi google-python-cloud-debugger +flask-cors From 78d79a3cc5c1ffd0c37df6abbffe8bcab6f06e83 Mon Sep 17 00:00:00 2001 From: Pedro Morello Abbud Date: Fri, 25 Oct 2019 12:49:34 -0300 Subject: [PATCH 02/11] User authentication completed --- .github/workflows/cd-workflow.yml | 6 +- api/__init__.py | 18 ----- api/views/users.py | 69 ------------------- app.yaml | 2 +- connectors/exercism/populate.py | 22 +++--- models/user.py | 4 +- server/__init__.py | 24 +++++++ server/templates/index.html | 29 ++++++++ {api => server}/utils/__init__.py | 0 {api => server}/utils/validators.py | 0 {api => server}/views/__init__.py | 4 +- {api => server}/views/exercises.py | 2 +- {api => server}/views/health_check.py | 0 server/views/interface.py | 18 +++++ {api => server}/views/topics.py | 2 +- server/views/users.py | 98 +++++++++++++++++++++++++++ sharpener-admin.py | 33 +++++---- 17 files changed, 214 insertions(+), 117 deletions(-) delete mode 100644 api/__init__.py delete mode 100644 api/views/users.py create mode 100644 server/__init__.py create mode 100644 server/templates/index.html rename {api => server}/utils/__init__.py (100%) rename {api => server}/utils/validators.py (100%) rename {api => server}/views/__init__.py (71%) rename {api => server}/views/exercises.py (97%) rename {api => server}/views/health_check.py (100%) create mode 100644 server/views/interface.py rename {api => server}/views/topics.py (96%) create mode 100644 server/views/users.py diff --git a/.github/workflows/cd-workflow.yml b/.github/workflows/cd-workflow.yml index 8e61192..156df99 100644 --- a/.github/workflows/cd-workflow.yml +++ b/.github/workflows/cd-workflow.yml @@ -33,7 +33,11 @@ jobs: DYNACONF_DB_API: ${{ secrets.db_api }} DYNACONF_DB_NAME: ${{ secrets.db_name }} DYNACONF_DB_CONN_NAME: ${{ secrets.db_conn_name }} - run: env | grep DYNACONF_ > .env + DYNACONF_GITHUB_CLIENT_SECRET: ${{ client_secret }} + DYNACONF_GITHUB_CLIENT_ID: ${{ client_id } + DYNACONF_GITHUB_URI_USER: "https://github.com/login/oauth/access_token" + DYNACONF_GITHUB_URI_OAUTH: "https://api.github.com/user" + run: env | grep DYNACONF_ > .env - name: Deploy to GCP AppEngine uses: actions/gcloud/cli@master with: diff --git a/api/__init__.py b/api/__init__.py deleted file mode 100644 index 13fdada..0000000 --- a/api/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -from flask import Flask, request -from .views import (create_exercises_blueprint, create_topics_blueprint, - create_health_check_blueprint, create_users_blueprint) - - -def create_app(session): - exercises = create_exercises_blueprint(session, request) - topics = create_topics_blueprint(session, request) - users = create_users_blueprint(session, request) - - healthcheck = create_health_check_blueprint(session) - - app = Flask(__name__) - app.register_blueprint(healthcheck, url_prefix='/api/healthcheck') - app.register_blueprint(exercises, url_prefix='/api/exercises') - app.register_blueprint(topics, url_prefix='/api/topics') - app.register_blueprint(users, url_prefix='/api/users') - return app diff --git a/api/views/users.py b/api/views/users.py deleted file mode 100644 index f4f9252..0000000 --- a/api/views/users.py +++ /dev/null @@ -1,69 +0,0 @@ -from datetime import datetime -from flask import Blueprint, Response -from flask_cors import CORS -import requests -from models import User -from uuid import uuid4 - -GITHUB_URI_OAUTH = "https://github.com/login/oauth/access_token" -GITHUB_URI_USER = "https://api.github.com/user" -GITHUB_CLIENT_ID = "36689cf871668e2b775e" -GITHUB_CLIENT_SECRET = "0865b1550f1725689b5a2239f5d596d5194b6960" - -def fetch_access_token(code): - params = { - "code":code, - "client_id": GITHUB_CLIENT_ID, - "client_secret": GITHUB_CLIENT_SECRET, - } - headers = { - 'Accept': 'application/json' - } - github_response = requests.get(GITHUB_URI_OAUTH, params=params, - headers=headers) - return github_response.json().get('access_token') - - -def fetch_user_data(access_token): - headers = {'Authorization': f"token {access_token}"} - params = { - "client_id": GITHUB_CLIENT_ID, - "client_secret": GITHUB_CLIENT_SECRET, - } - github_response = requests.get(GITHUB_URI_USER, - headers=headers, - params=params) - - return github_response.json() - - -def create_users_blueprint(session, request, default_limit=100): - users = Blueprint('users', __name__) - CORS(users) - @users.route('/', methods=['POST']) - def new_user(): - data = request.get_json(force=True) - code = data.get('code') - if code: - access_token = fetch_access_token(code) - print(access_token) - if access_token: - user_data = fetch_user_data(access_token) - new_user = User( - email=user_data['email'], - name=user_data['name'], - nickname=user_data['login'], - avatar_url=user_data['avatar_url'], - token=uuid4(), - github_token=access_token, - created_at=datetime.now(), - ) - session.add(new_user) - session.commit() - - return Response(status=200) - return Response(status=400) - - - return users - diff --git a/app.yaml b/app.yaml index 11f5d27..6a3fdd5 100644 --- a/app.yaml +++ b/app.yaml @@ -3,7 +3,7 @@ runtime: python37 entrypoint: uwsgi --http-socket :8080 --wsgi-file sharpener-admin.py --callable app liveness_check: - path: "api/healthcheck" + path: "/api/healthcheck" check_interval_sec: 30 timeout_sec: 4 failure_threshold: 2 diff --git a/connectors/exercism/populate.py b/connectors/exercism/populate.py index 68e394d..2b21425 100644 --- a/connectors/exercism/populate.py +++ b/connectors/exercism/populate.py @@ -8,8 +8,8 @@ from models import User, Exercise, Artifact -def get_or_create_default_user(session): - default_user = session.query(User).filter( +def get_or_create_default_user(db_session): + default_user = db_session.query(User).filter( User.email == 'hello@exercism.io').first() if not default_user: exercism_user = User(email="hello@exercism.io", @@ -17,8 +17,8 @@ def get_or_create_default_user(session): nickname="exercism", is_teacher=True, github_token="") - session.add(exercism_user) - session.flush() + db_session.add(exercism_user) + db_session.flush() return exercism_user return default_user @@ -70,7 +70,7 @@ def process_exercise(name, starting_path, clone_dir, def populate_exercises(mapper): - def populate_language(session, storage_client, bucket_name): + def populate_language(db_session, storage_client, bucket_name): print(f"Populating {mapper.language} language") clone_dir = f"/tmp/{uuid1()}" starting_path = f"{clone_dir}/exercises" @@ -80,7 +80,7 @@ def populate_language(session, storage_client, bucket_name): print(f"Cloning {mapper.repo}") Repo.clone_from(mapper.repo, clone_dir) all_exercises = listdir(f"{starting_path}") - exercism_user = get_or_create_default_user(session) + exercism_user = get_or_create_default_user(db_session) exercises, files = zip(*[ process_exercise(name, starting_path, clone_dir, blob_prefix, @@ -88,13 +88,13 @@ def populate_language(session, storage_client, bucket_name): for name in tqdm(all_exercises, unit='exercise') ]) - session.add_all(files) - session.commit() - session.expire_all() + db_session.add_all(files) + db_session.commit() + db_session.expire_all() for (exercise, file_) in zip(exercises, files): exercise.artifact_id = file_.id - session.add_all(exercises) - session.commit() + db_session.add_all(exercises) + db_session.commit() return populate_language diff --git a/models/user.py b/models/user.py index cfc54a4..b435bb5 100644 --- a/models/user.py +++ b/models/user.py @@ -10,9 +10,9 @@ class User(Base): nickname = Column(String, nullable=False) is_teacher = Column(Boolean, default=False) token = Column(String, nullable=False) - avatar_url = Column(String, nullable=True) github_token = Column(String, nullable=False) - github_repositories = Column(String, nullable=False) + avatar_url = Column(String, nullable=True) + github_repositories = Column(String, nullable=True) created_at = Column(DateTime, nullable=False) def __repr__(self): diff --git a/server/__init__.py b/server/__init__.py new file mode 100644 index 0000000..80f2b08 --- /dev/null +++ b/server/__init__.py @@ -0,0 +1,24 @@ +from flask import Flask, request +from .views import (create_exercises_blueprint, create_topics_blueprint, + create_health_check_blueprint, create_users_blueprint, + create_interface_blueprint) + + +def create_app(db_session, github_config, flask_secret, debug=True): + exercises = create_exercises_blueprint(db_session, request) + topics = create_topics_blueprint(db_session, request) + users = create_users_blueprint(db_session, request, github_config) + interface = create_interface_blueprint(db_session, debug) + + healthcheck = create_health_check_blueprint(db_session) + + app = Flask(__name__) + app.secret_key = flask_secret + + app.register_blueprint(interface) + app.register_blueprint(healthcheck, url_prefix='/api/healthcheck') + app.register_blueprint(exercises, url_prefix='/api/exercises') + app.register_blueprint(topics, url_prefix='/api/topics') + app.register_blueprint(users, url_prefix='/authenticate') + + return app diff --git a/server/templates/index.html b/server/templates/index.html new file mode 100644 index 0000000..0d4147c --- /dev/null +++ b/server/templates/index.html @@ -0,0 +1,29 @@ + + + + Sharpener + + + + + +
+ + {% if debug %} + + + + {% else %} + + {% endif %} + + diff --git a/api/utils/__init__.py b/server/utils/__init__.py similarity index 100% rename from api/utils/__init__.py rename to server/utils/__init__.py diff --git a/api/utils/validators.py b/server/utils/validators.py similarity index 100% rename from api/utils/validators.py rename to server/utils/validators.py diff --git a/api/views/__init__.py b/server/views/__init__.py similarity index 71% rename from api/views/__init__.py rename to server/views/__init__.py index d9916ba..2ff2644 100644 --- a/api/views/__init__.py +++ b/server/views/__init__.py @@ -2,9 +2,11 @@ from .topics import create_topics_blueprint from .users import create_users_blueprint from .health_check import create_health_check_blueprint +from .interface import create_interface_blueprint __all__ = ['create_exercises_blueprint', 'create_topics_blueprint', 'create_health_check_blueprint', - 'create_users_blueprint'] + 'create_users_blueprint', + 'create_interface_blueprint'] diff --git a/api/views/exercises.py b/server/views/exercises.py similarity index 97% rename from api/views/exercises.py rename to server/views/exercises.py index cb62f6f..5b6ded0 100644 --- a/api/views/exercises.py +++ b/server/views/exercises.py @@ -1,7 +1,7 @@ from flask import Blueprint, jsonify from sqlalchemy import asc from models import Exercise, Artifact, Language -from api.utils import extract_int_arg, handle_validation_error +from server.utils import extract_int_arg, handle_validation_error def exercise_to_dict(exercise): diff --git a/api/views/health_check.py b/server/views/health_check.py similarity index 100% rename from api/views/health_check.py rename to server/views/health_check.py diff --git a/server/views/interface.py b/server/views/interface.py new file mode 100644 index 0000000..92d4bcc --- /dev/null +++ b/server/views/interface.py @@ -0,0 +1,18 @@ +from flask import Blueprint, session, render_template + + +def create_interface_blueprint(db_session, debug): + interface = Blueprint('interface', __name__) + + @interface.route('/', defaults={'path': ''}, methods=['GET']) + @interface.route('/', methods=['GET']) + def serve_template(path): + return render_template('index.html', + email=session.get('email'), + name=session.get('name'), + nickname=session.get('nickname'), + token=session.get('token'), + avatar=session.get('avatar'), + is_logged_in='email' in session, + debug=debug) + return interface diff --git a/api/views/topics.py b/server/views/topics.py similarity index 96% rename from api/views/topics.py rename to server/views/topics.py index 2df9115..f1e2b21 100644 --- a/api/views/topics.py +++ b/server/views/topics.py @@ -2,7 +2,7 @@ from sqlalchemy.sql.expression import func from sqlalchemy import asc from models import Exercise, Language -from api.utils import extract_int_arg, handle_validation_error +from server.utils import extract_int_arg, handle_validation_error def pluck_first_column(results): diff --git a/server/views/users.py b/server/views/users.py new file mode 100644 index 0000000..b7ee936 --- /dev/null +++ b/server/views/users.py @@ -0,0 +1,98 @@ +from datetime import datetime +from flask import Blueprint, jsonify, session, Response +import requests +from models import User +from uuid import uuid4 + + +def fetch_access_token(code, github_config): + params = { + "code": code, + "client_id": github_config['client_id'], + "client_secret": github_config['client_secret'], + } + headers = {'Accept': 'application/json'} + + github_response = requests.get(github_config['oauth_uri'], params=params, + headers=headers) + return github_response.json().get('access_token') + + +def fetch_user_data(access_token, github_config): + headers = {'Authorization': f"token {access_token}"} + params = { + "client_id": github_config['client_id'], + "client_secret": github_config['client_secret'], + } + github_response = requests.get(github_config['user_uri'], + headers=headers, + params=params) + + return github_response.json() + + +def create_user(db_session, user_data, access_token): + token = uuid4() + new_user = User( + email=user_data.get('email'), + name=user_data.get('name'), + nickname=user_data.get('login'), + avatar_url=user_data.get('avatar_url'), + github_repositories=user_data.get('repos_url'), + token=token, + github_token=access_token, + created_at=datetime.now(), + ) + db_session.add(new_user) + db_session.commit() + return new_user + + +def update_user_info(db_session, existing_user, user_data, access_token): + existing_user.name = user_data.get('name') + existing_user.nickname = user_data.get('login') + existing_user.avatar_url = user_data.get('avatar_url') + existing_user.github_repositories = user_data.get('repos_url') + existing_user.github_token = access_token + db_session.commit() + + +def update_session_info(user): + session['email'] = user.email + session['name'] = user.name + session['token'] = user.token + session['avatar'] = user.avatar_url + session['nickname'] = user.nickname + + +def create_users_blueprint(db_session, request, github_config): + users = Blueprint('users', __name__) + @users.route('/', methods=['GET']) + def authenticate_user(code): + access_token = fetch_access_token(code, github_config) + + if access_token: + user_data = fetch_user_data(access_token, github_config) + existing_user = db_session.query(User)\ + .filter_by(email=user_data['email'])\ + .first() + + if existing_user: + update_user_info(db_session, existing_user, + user_data, access_token) + update_session_info(existing_user) + else: + new_user = create_user(db_session, user_data, access_token) + update_session_info(new_user) + + response = { + "token": session['token'], + "email": session['email'], + "name": session['name'], + "nickname": session['nickname'], + "avatar": session['avatar'], + } + return jsonify(response) + return Response(status=400) + + return users diff --git a/sharpener-admin.py b/sharpener-admin.py index 8b49a8a..125199e 100755 --- a/sharpener-admin.py +++ b/sharpener-admin.py @@ -11,7 +11,7 @@ from dynaconf import settings from google.cloud import storage from connectors import exercism -from api import create_app +from server import create_app from db import database_setup, create_schema @@ -20,16 +20,25 @@ googleclouddebugger.enable() echo = False if is_production else True -session = database_setup(settings.DB_API, - settings.DB_USERNAME, - settings.DB_PASSWORD, - settings.DB_NAME, - settings.DB_CONN_NAME, - echo=echo) +db_session = database_setup(settings.DB_API, + settings.DB_USERNAME, + settings.DB_PASSWORD, + settings.DB_NAME, + settings.DB_CONN_NAME, + echo=echo) -app = create_app(session) +local = __name__ == "__main__" -if __name__ == "__main__": +github_config = { + "oauth_uri": settings.GITHUB_URI_OAUTH, + "user_uri": settings.GITHUB_URI_USER, + "client_id": settings.GITHUB_CLIENT_ID, + "client_secret": settings.GITHUB_CLIENT_SECRET, +} + +app = create_app(db_session, github_config, settings.FLASK_SECRET, debug=local) + +if local: args = docopt(__doc__) if args["create_schema"]: create_schema(settings.DB_API, @@ -41,13 +50,13 @@ if args["populate"]: storage_client = storage.Client() - exercism.populate_python(session, + exercism.populate_python(db_session, storage_client, settings.BUCKET_EXERCISES) - exercism.populate_rust(session, + exercism.populate_rust(db_session, storage_client, settings.BUCKET_EXERCISES) if args["start_server"]: - app.run() + app.run(debug=local) From 5f41347235adee35cfc8b3753cce12511a3a18f3 Mon Sep 17 00:00:00 2001 From: Pedro Morello Abbud Date: Fri, 25 Oct 2019 18:12:34 -0300 Subject: [PATCH 03/11] Modeling the submission system --- models/__init__.py | 8 +++++++- models/classroom.py | 24 ++++++++++++++++++++++ models/enrollment.py | 25 +++++++++++++++++++++++ models/exercise.py | 6 +++++- models/{languages.py => language.py} | 0 models/track.py | 22 ++++++++++++++++++++ models/track_classroom.py | 17 ++++++++++++++++ models/track_exercise.py | 30 ++++++++++++++++++++++++++++ models/user.py | 5 +++++ models/user_classroom.py | 10 ++++++++++ 10 files changed, 145 insertions(+), 2 deletions(-) create mode 100644 models/classroom.py create mode 100644 models/enrollment.py rename models/{languages.py => language.py} (100%) create mode 100644 models/track.py create mode 100644 models/track_classroom.py create mode 100644 models/track_exercise.py create mode 100644 models/user_classroom.py diff --git a/models/__init__.py b/models/__init__.py index c9c3deb..bb866f7 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -2,4 +2,10 @@ from .artifact import Artifact from .exercise import Exercise from .base import Base -from .languages import Language +from .language import Language +from .track import Track +from .classroom import Class +from .enrollment import Enrollment + +__all__ = ['User', 'Artifact', 'Exercise', 'Base', 'Language', + 'Track', 'Class', 'Enrollment'] diff --git a/models/classroom.py b/models/classroom.py new file mode 100644 index 0000000..46ae0e9 --- /dev/null +++ b/models/classroom.py @@ -0,0 +1,24 @@ +from .base import Base +from .language import Language +from sqlalchemy import Column, String, Integer, ForeignKey, Enum +from sqlalchemy.orm import relationship +from .user_classroom import user_class_association +from .track_classroom import track_class_association + + +class Class(Base): + __tablename__ = 'classes' + + id = Column(Integer, primary_key=True) + owner = Column(String, ForeignKey('users.email')) + name = Column(String, nullable=False) + invite_token = Column(String, nullable=False) + language = Column(Enum(Language)) + users = relationship("User", secondary=user_class_association, + back_populates="classes") + tracks = relationship("Track", secondary=track_class_association, + back_populates="classes") + + def __repr__(self): + return ("" + % (self.id, self.name, self.owner)) diff --git a/models/enrollment.py b/models/enrollment.py new file mode 100644 index 0000000..4ecd356 --- /dev/null +++ b/models/enrollment.py @@ -0,0 +1,25 @@ +from .base import Base +from sqlalchemy import (Column, String, Integer, ForeignKey, + ForeignKeyConstraint) + + +class Enrollment(Base): + __tablename__ = 'enrollments' + + user = Column(String, ForeignKey('users.email'), primary_key=True) + class_id = Column('class_id', Integer, primary_key=True) + track_name = Column('track_name', String, primary_key=True) + track_owner = Column('track_owner', String, primary_key=True) + + track_class_composite_key = ForeignKeyConstraint( + ['class_id', 'track_name', 'track_owner'], + [ + 'tracks_classes_association.class_id', + 'tracks_classes_association.name', + 'tracks_classes_association.owner', + ]) + + def __repr__(self): + return ("" % + (self.user, self.class_id, self.track, self.classroom)) diff --git a/models/exercise.py b/models/exercise.py index 74feb3f..98118ca 100644 --- a/models/exercise.py +++ b/models/exercise.py @@ -1,7 +1,8 @@ from .base import Base -from .languages import Language +from .language import Language from sqlalchemy.orm import relationship from sqlalchemy import ForeignKey, Column, Integer, String, Text, ARRAY, Enum +from .track_exercise import track_exercise_association class Exercise(Base): @@ -17,3 +18,6 @@ class Exercise(Base): artifact = relationship("Artifact", back_populates="exercise", uselist=False) + exercises = relationship("Track", + secondary=track_exercise_association, + back_populates="exercises") diff --git a/models/languages.py b/models/language.py similarity index 100% rename from models/languages.py rename to models/language.py diff --git a/models/track.py b/models/track.py new file mode 100644 index 0000000..c6194a8 --- /dev/null +++ b/models/track.py @@ -0,0 +1,22 @@ +from .base import Base +from sqlalchemy import Column, String, ForeignKey +from sqlalchemy.orm import relationship +from .track_classroom import track_class_association +from .track_exercise import track_exercise_association + + +class Track(Base): + __tablename__ = 'tracks' + + name = Column(String, primary_key=True) + owner = Column(String, ForeignKey('users.email'), primary_key=True) + + classes = relationship("Class", secondary=track_class_association, + back_populates="tracks") + + exercises = relationship("Exercise", + secondary=track_exercise_association, + back_populates="tracks") + + def __repr__(self): + return "" % (self.name, self.creator) diff --git a/models/track_classroom.py b/models/track_classroom.py new file mode 100644 index 0000000..363b00a --- /dev/null +++ b/models/track_classroom.py @@ -0,0 +1,17 @@ +from .base import Base +from sqlalchemy import (Column, String, ForeignKey, Table, + Integer, ForeignKeyConstraint) + +class_id = Column('class_id', Integer, ForeignKey('classes.id'), + primary_key=True) + +track_name = Column('track_name', String, primary_key=True) + +track_owner = Column('track_owner', String, primary_key=True) + +track_composite_key = ForeignKeyConstraint(['track_name', 'track_owner'], + ['tracks.name', 'tracks.owner']) + +track_class_association = Table('tracks_classes_association', Base.metadata, + class_id, track_name, track_owner, + track_composite_key) diff --git a/models/track_exercise.py b/models/track_exercise.py new file mode 100644 index 0000000..7f6dcdb --- /dev/null +++ b/models/track_exercise.py @@ -0,0 +1,30 @@ +from .base import Base +from .language import Language +from sqlalchemy import (Column, String, Table, + Integer, ForeignKeyConstraint, Enum) + +track_name = Column('track_name', String, primary_key=True) + +track_owner = Column('track_owner', String, primary_key=True) + +exercise_name = Column('exercise_name', String, primary_key=True) + +exercise_language = Column('exercise_language', + Enum(Language), primary_key=True) + +step = Column('step', Integer) + +exercise_composite_key = ForeignKeyConstraint( + ['exercise_name', 'exercise_language'], + ['exercises.name', 'exercises.language'] +) + +track_composite_key = ForeignKeyConstraint(['track_name', 'track_owner'], + ['tracks.name', 'tracks.owner']) + + +track_exercise_association = Table('tracks_exercises_association', + Base.metadata, + exercise_name, exercise_language, + track_name, track_owner, step, + track_composite_key, exercise_composite_key) diff --git a/models/user.py b/models/user.py index b435bb5..b3f2535 100644 --- a/models/user.py +++ b/models/user.py @@ -1,5 +1,7 @@ from .base import Base from sqlalchemy import Column, String, Boolean, DateTime +from sqlalchemy.orm import relationship +from .user_classroom import user_class_association class User(Base): @@ -14,6 +16,9 @@ class User(Base): avatar_url = Column(String, nullable=True) github_repositories = Column(String, nullable=True) created_at = Column(DateTime, nullable=False) + creator = relationship('Track') + classes = relationship("Class", secondary=user_class_association, + back_populates="users") def __repr__(self): return "" % (self.name, self.email) diff --git a/models/user_classroom.py b/models/user_classroom.py new file mode 100644 index 0000000..f27e744 --- /dev/null +++ b/models/user_classroom.py @@ -0,0 +1,10 @@ +from .base import Base +from sqlalchemy import Column, String, ForeignKey, Table, Integer + +user_email = Column('user_email', String, ForeignKey('users.email'), + primary_key=True) +class_id = Column('class_id', Integer, ForeignKey('classes.id'), + primary_key=True) + +user_class_association = Table('users_classes_association', Base.metadata, + class_id, user_email) From a2f973a093890c9c72b9211024e27ac84513309e Mon Sep 17 00:00:00 2001 From: Pedro Morello Abbud Date: Fri, 25 Oct 2019 18:12:34 -0300 Subject: [PATCH 04/11] Modeling the submission system --- .github/workflows/cd-workflow.yml | 2 +- models/__init__.py | 8 +++++++- models/classroom.py | 24 ++++++++++++++++++++++ models/enrollment.py | 25 +++++++++++++++++++++++ models/exercise.py | 6 +++++- models/{languages.py => language.py} | 0 models/track.py | 22 ++++++++++++++++++++ models/track_classroom.py | 17 ++++++++++++++++ models/track_exercise.py | 30 ++++++++++++++++++++++++++++ models/user.py | 5 +++++ models/user_classroom.py | 10 ++++++++++ 11 files changed, 146 insertions(+), 3 deletions(-) create mode 100644 models/classroom.py create mode 100644 models/enrollment.py rename models/{languages.py => language.py} (100%) create mode 100644 models/track.py create mode 100644 models/track_classroom.py create mode 100644 models/track_exercise.py create mode 100644 models/user_classroom.py diff --git a/.github/workflows/cd-workflow.yml b/.github/workflows/cd-workflow.yml index 156df99..773fa57 100644 --- a/.github/workflows/cd-workflow.yml +++ b/.github/workflows/cd-workflow.yml @@ -37,7 +37,7 @@ jobs: DYNACONF_GITHUB_CLIENT_ID: ${{ client_id } DYNACONF_GITHUB_URI_USER: "https://github.com/login/oauth/access_token" DYNACONF_GITHUB_URI_OAUTH: "https://api.github.com/user" - run: env | grep DYNACONF_ > .env + run: env | grep DYNACONF_ > .env - name: Deploy to GCP AppEngine uses: actions/gcloud/cli@master with: diff --git a/models/__init__.py b/models/__init__.py index c9c3deb..bb866f7 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -2,4 +2,10 @@ from .artifact import Artifact from .exercise import Exercise from .base import Base -from .languages import Language +from .language import Language +from .track import Track +from .classroom import Class +from .enrollment import Enrollment + +__all__ = ['User', 'Artifact', 'Exercise', 'Base', 'Language', + 'Track', 'Class', 'Enrollment'] diff --git a/models/classroom.py b/models/classroom.py new file mode 100644 index 0000000..46ae0e9 --- /dev/null +++ b/models/classroom.py @@ -0,0 +1,24 @@ +from .base import Base +from .language import Language +from sqlalchemy import Column, String, Integer, ForeignKey, Enum +from sqlalchemy.orm import relationship +from .user_classroom import user_class_association +from .track_classroom import track_class_association + + +class Class(Base): + __tablename__ = 'classes' + + id = Column(Integer, primary_key=True) + owner = Column(String, ForeignKey('users.email')) + name = Column(String, nullable=False) + invite_token = Column(String, nullable=False) + language = Column(Enum(Language)) + users = relationship("User", secondary=user_class_association, + back_populates="classes") + tracks = relationship("Track", secondary=track_class_association, + back_populates="classes") + + def __repr__(self): + return ("" + % (self.id, self.name, self.owner)) diff --git a/models/enrollment.py b/models/enrollment.py new file mode 100644 index 0000000..4ecd356 --- /dev/null +++ b/models/enrollment.py @@ -0,0 +1,25 @@ +from .base import Base +from sqlalchemy import (Column, String, Integer, ForeignKey, + ForeignKeyConstraint) + + +class Enrollment(Base): + __tablename__ = 'enrollments' + + user = Column(String, ForeignKey('users.email'), primary_key=True) + class_id = Column('class_id', Integer, primary_key=True) + track_name = Column('track_name', String, primary_key=True) + track_owner = Column('track_owner', String, primary_key=True) + + track_class_composite_key = ForeignKeyConstraint( + ['class_id', 'track_name', 'track_owner'], + [ + 'tracks_classes_association.class_id', + 'tracks_classes_association.name', + 'tracks_classes_association.owner', + ]) + + def __repr__(self): + return ("" % + (self.user, self.class_id, self.track, self.classroom)) diff --git a/models/exercise.py b/models/exercise.py index 74feb3f..98118ca 100644 --- a/models/exercise.py +++ b/models/exercise.py @@ -1,7 +1,8 @@ from .base import Base -from .languages import Language +from .language import Language from sqlalchemy.orm import relationship from sqlalchemy import ForeignKey, Column, Integer, String, Text, ARRAY, Enum +from .track_exercise import track_exercise_association class Exercise(Base): @@ -17,3 +18,6 @@ class Exercise(Base): artifact = relationship("Artifact", back_populates="exercise", uselist=False) + exercises = relationship("Track", + secondary=track_exercise_association, + back_populates="exercises") diff --git a/models/languages.py b/models/language.py similarity index 100% rename from models/languages.py rename to models/language.py diff --git a/models/track.py b/models/track.py new file mode 100644 index 0000000..c6194a8 --- /dev/null +++ b/models/track.py @@ -0,0 +1,22 @@ +from .base import Base +from sqlalchemy import Column, String, ForeignKey +from sqlalchemy.orm import relationship +from .track_classroom import track_class_association +from .track_exercise import track_exercise_association + + +class Track(Base): + __tablename__ = 'tracks' + + name = Column(String, primary_key=True) + owner = Column(String, ForeignKey('users.email'), primary_key=True) + + classes = relationship("Class", secondary=track_class_association, + back_populates="tracks") + + exercises = relationship("Exercise", + secondary=track_exercise_association, + back_populates="tracks") + + def __repr__(self): + return "" % (self.name, self.creator) diff --git a/models/track_classroom.py b/models/track_classroom.py new file mode 100644 index 0000000..363b00a --- /dev/null +++ b/models/track_classroom.py @@ -0,0 +1,17 @@ +from .base import Base +from sqlalchemy import (Column, String, ForeignKey, Table, + Integer, ForeignKeyConstraint) + +class_id = Column('class_id', Integer, ForeignKey('classes.id'), + primary_key=True) + +track_name = Column('track_name', String, primary_key=True) + +track_owner = Column('track_owner', String, primary_key=True) + +track_composite_key = ForeignKeyConstraint(['track_name', 'track_owner'], + ['tracks.name', 'tracks.owner']) + +track_class_association = Table('tracks_classes_association', Base.metadata, + class_id, track_name, track_owner, + track_composite_key) diff --git a/models/track_exercise.py b/models/track_exercise.py new file mode 100644 index 0000000..7f6dcdb --- /dev/null +++ b/models/track_exercise.py @@ -0,0 +1,30 @@ +from .base import Base +from .language import Language +from sqlalchemy import (Column, String, Table, + Integer, ForeignKeyConstraint, Enum) + +track_name = Column('track_name', String, primary_key=True) + +track_owner = Column('track_owner', String, primary_key=True) + +exercise_name = Column('exercise_name', String, primary_key=True) + +exercise_language = Column('exercise_language', + Enum(Language), primary_key=True) + +step = Column('step', Integer) + +exercise_composite_key = ForeignKeyConstraint( + ['exercise_name', 'exercise_language'], + ['exercises.name', 'exercises.language'] +) + +track_composite_key = ForeignKeyConstraint(['track_name', 'track_owner'], + ['tracks.name', 'tracks.owner']) + + +track_exercise_association = Table('tracks_exercises_association', + Base.metadata, + exercise_name, exercise_language, + track_name, track_owner, step, + track_composite_key, exercise_composite_key) diff --git a/models/user.py b/models/user.py index b435bb5..b3f2535 100644 --- a/models/user.py +++ b/models/user.py @@ -1,5 +1,7 @@ from .base import Base from sqlalchemy import Column, String, Boolean, DateTime +from sqlalchemy.orm import relationship +from .user_classroom import user_class_association class User(Base): @@ -14,6 +16,9 @@ class User(Base): avatar_url = Column(String, nullable=True) github_repositories = Column(String, nullable=True) created_at = Column(DateTime, nullable=False) + creator = relationship('Track') + classes = relationship("Class", secondary=user_class_association, + back_populates="users") def __repr__(self): return "" % (self.name, self.email) diff --git a/models/user_classroom.py b/models/user_classroom.py new file mode 100644 index 0000000..f27e744 --- /dev/null +++ b/models/user_classroom.py @@ -0,0 +1,10 @@ +from .base import Base +from sqlalchemy import Column, String, ForeignKey, Table, Integer + +user_email = Column('user_email', String, ForeignKey('users.email'), + primary_key=True) +class_id = Column('class_id', Integer, ForeignKey('classes.id'), + primary_key=True) + +user_class_association = Table('users_classes_association', Base.metadata, + class_id, user_email) From 34d282d7f6610a4606e2ae1ee13de08d6e070694 Mon Sep 17 00:00:00 2001 From: Pedro Morello Abbud Date: Sat, 26 Oct 2019 09:08:33 -0300 Subject: [PATCH 05/11] Submission and attempt models --- models/__init__.py | 4 ++- models/attempt.py | 44 ++++++++++++++++++++++++++++++ models/enrollment.py | 3 +++ models/exercise.py | 6 ++--- models/submission.py | 55 ++++++++++++++++++++++++++++++++++++++ models/submission_state.py | 17 ++++++++++++ models/track.py | 5 +++- models/user.py | 4 ++- 8 files changed, 132 insertions(+), 6 deletions(-) create mode 100644 models/attempt.py create mode 100644 models/submission.py create mode 100644 models/submission_state.py diff --git a/models/__init__.py b/models/__init__.py index bb866f7..5a297e8 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -6,6 +6,8 @@ from .track import Track from .classroom import Class from .enrollment import Enrollment +from .attempt import Attempt +from .submission import Submission __all__ = ['User', 'Artifact', 'Exercise', 'Base', 'Language', - 'Track', 'Class', 'Enrollment'] + 'Track', 'Class', 'Enrollment', 'Attempt', 'Submission'] diff --git a/models/attempt.py b/models/attempt.py new file mode 100644 index 0000000..f94faeb --- /dev/null +++ b/models/attempt.py @@ -0,0 +1,44 @@ +from datetime import datetime +from .base import Base +from sqlalchemy import (Column, String, Integer, + ForeignKeyConstraint, DateTime, Enum) +from .language import Language + + +class Attempt(Base): + __tablename__ = 'attempts' + + user = Column('user', String, primary_key=True) + class_id = Column('class_id', Integer, + primary_key=True) + track_name = Column('track_name', String, primary_key=True) + track_owner = Column('track_owner', String, primary_key=True) + exercise_name = Column('exercise_name', String, primary_key=True) + exercise_language = Column('exercise_language', Enum(Language), + primary_key=True) + attempt_number = Column('attempt_number', Integer, primary_key=True) + + solution_file = Column(String, nullable=False) + test_coverage = Column(String, nullable=False) + test_ouput = Column(String, nullable=False) + tests_checksum = Column(String, nullable=False) + submitted_at = Column(DateTime, default=datetime.utcnow, + nullable=False) + + submission_composite_key = ForeignKeyConstraint( + ['user', 'class_id', 'track_name', 'track_owner', + 'exercise_name', 'exercise_language'], + [ + 'submissions.user', + 'submissions.class_id', + 'submissions.track_name', + 'submissions.track_owner', + 'submissions.exercise_name', + 'submissions.exercise_language', + ]) + + def __repr__(self): + return ("" % + (self.user, self.class_id, self.track, self.classroom, + self.exercise, self.attempt_number)) diff --git a/models/enrollment.py b/models/enrollment.py index 4ecd356..c8e1384 100644 --- a/models/enrollment.py +++ b/models/enrollment.py @@ -1,6 +1,7 @@ from .base import Base from sqlalchemy import (Column, String, Integer, ForeignKey, ForeignKeyConstraint) +from sqlalchemy.orm import relationship class Enrollment(Base): @@ -19,6 +20,8 @@ class Enrollment(Base): 'tracks_classes_association.owner', ]) + submissions = relationship('Submission') + def __repr__(self): return ("" % diff --git a/models/exercise.py b/models/exercise.py index 98118ca..2fcdd71 100644 --- a/models/exercise.py +++ b/models/exercise.py @@ -18,6 +18,6 @@ class Exercise(Base): artifact = relationship("Artifact", back_populates="exercise", uselist=False) - exercises = relationship("Track", - secondary=track_exercise_association, - back_populates="exercises") + tracks = relationship("Track", + secondary=track_exercise_association, + back_populates="exercises") diff --git a/models/submission.py b/models/submission.py new file mode 100644 index 0000000..41ca11c --- /dev/null +++ b/models/submission.py @@ -0,0 +1,55 @@ +from .base import Base +from sqlalchemy import (Column, String, Integer, ForeignKey, + ForeignKeyConstraint, Enum) +from sqlalchemy.orm import relationship +from .submission_state import SubmissionState +from .language import Language + + +class Submission(Base): + __tablename__ = 'submissions' + + user = Column('user', String, primary_key=True) + class_id = Column('class_id', Integer, primary_key=True) + track_name = Column('track_name', String, primary_key=True) + track_owner = Column('track_owner', String, primary_key=True) + exercise_name = Column('exercise_name', String, primary_key=True) + exercise_language = Column('exercise_language', Enum(Language), + primary_key=True) + attempt_number = Column('attempt_number', Integer) + attempts = relationship('Attempt') + state = Column('state', Enum(SubmissionState), + default=SubmissionState('pending')) + + exercise_composite_key = ForeignKeyConstraint( + ['exercise_name', 'exercise_language'], + ['exercises.name', 'exercises.language'] + ) + + enrollment_composite_key = ForeignKeyConstraint( + ['user', 'class_id', 'track_name', 'track_owner'], + [ + 'enrollments.user', + 'enrollments.class_id', + 'enrollments.track_name', + 'enrollments.track_owner', + ]) + + def __repr__(self): + return ("" % + (self.user, self.class_id, self.track, self.classroom, + self.exercise)) + # attempt_composite_key = ForeignKeyConstraint( + # ['user', 'class_id', 'track_name', 'track_owner', + # 'exercise_name', 'exercise_language', 'attempt_number'], + # [ + # 'attempts.user', + # 'attempts.class_id', + # 'attempts.track_name', + # 'attempts.track_owner', + # 'attempts.exercise_name', + # 'attempts.exercise_language', + # 'attempts.attempt_number', + # ]) + diff --git a/models/submission_state.py b/models/submission_state.py new file mode 100644 index 0000000..a643354 --- /dev/null +++ b/models/submission_state.py @@ -0,0 +1,17 @@ +from enum import Enum, unique + + +@unique +class SubmissionState(Enum): + skipped = 'skipped' + submitted = 'submitted' + pending = 'pending' + + @classmethod + def get(cls, value, default=None): + known_values = {item.value for item in cls} + lowercased_value = value.lower() + + if lowercased_value in known_values: + return lowercased_value + return default diff --git a/models/track.py b/models/track.py index c6194a8..b02e426 100644 --- a/models/track.py +++ b/models/track.py @@ -1,5 +1,6 @@ +from datetime import datetime from .base import Base -from sqlalchemy import Column, String, ForeignKey +from sqlalchemy import Column, String, ForeignKey, DateTime from sqlalchemy.orm import relationship from .track_classroom import track_class_association from .track_exercise import track_exercise_association @@ -17,6 +18,8 @@ class Track(Base): exercises = relationship("Exercise", secondary=track_exercise_association, back_populates="tracks") + created_at = Column(DateTime, default=datetime.utcnow, + nullable=False) def __repr__(self): return "" % (self.name, self.creator) diff --git a/models/user.py b/models/user.py index b3f2535..57aee44 100644 --- a/models/user.py +++ b/models/user.py @@ -1,3 +1,4 @@ +from datetime import datetime from .base import Base from sqlalchemy import Column, String, Boolean, DateTime from sqlalchemy.orm import relationship @@ -15,7 +16,8 @@ class User(Base): github_token = Column(String, nullable=False) avatar_url = Column(String, nullable=True) github_repositories = Column(String, nullable=True) - created_at = Column(DateTime, nullable=False) + created_at = Column(DateTime, default=datetime.utcnow, + nullable=False) creator = relationship('Track') classes = relationship("Class", secondary=user_class_association, back_populates="users") From 6fdc64fd23ad28b2fa8855ea81b5b6ace7c23b24 Mon Sep 17 00:00:00 2001 From: Pedro Morello Abbud Date: Sat, 26 Oct 2019 20:26:10 -0300 Subject: [PATCH 06/11] Schema for exercise submition workflow --- .gitignore | 1 + connectors/exercism/populate.py | 4 +- docs/img/db_schema.png | Bin 0 -> 290158 bytes models/__init__.py | 6 +- models/attempt.py | 30 +++------ models/classroom.py | 10 +-- models/enrollment.py | 15 ++--- models/exercise.py | 5 +- models/submission.py | 57 ++++++------------ models/track.py | 8 +-- models/track_classroom.py | 29 +++++---- models/track_exercise.py | 41 ++++++------- models/user.py | 8 ++- models/user_classroom.py | 14 ++--- server/static/js/2.c9ea58f0.chunk.js | 2 + server/static/js/2.c9ea58f0.chunk.js.map | 1 + server/static/js/main.71351dde.chunk.js | 2 + server/static/js/main.71351dde.chunk.js.map | 1 + server/static/js/runtime-main.dee1a991.js | 2 + server/static/js/runtime-main.dee1a991.js.map | 1 + server/templates/index.html | 46 +++++++------- 21 files changed, 132 insertions(+), 151 deletions(-) create mode 100644 docs/img/db_schema.png create mode 100644 server/static/js/2.c9ea58f0.chunk.js create mode 100644 server/static/js/2.c9ea58f0.chunk.js.map create mode 100644 server/static/js/main.71351dde.chunk.js create mode 100644 server/static/js/main.71351dde.chunk.js.map create mode 100644 server/static/js/runtime-main.dee1a991.js create mode 100644 server/static/js/runtime-main.dee1a991.js.map diff --git a/.gitignore b/.gitignore index 471db4c..d61ad75 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ # Byte-compiled / optimized / DLL files +dev_helpers/ settings.local.toml __pycache__/ *.py[cod] diff --git a/connectors/exercism/populate.py b/connectors/exercism/populate.py index 2b21425..1b83813 100644 --- a/connectors/exercism/populate.py +++ b/connectors/exercism/populate.py @@ -16,7 +16,8 @@ def get_or_create_default_user(db_session): name="exercism.io", nickname="exercism", is_teacher=True, - github_token="") + github_token="", + token="") db_session.add(exercism_user) db_session.flush() return exercism_user @@ -97,4 +98,3 @@ def populate_language(db_session, storage_client, bucket_name): db_session.commit() return populate_language - diff --git a/docs/img/db_schema.png b/docs/img/db_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..cec4100a65935cb218fb4c78556f6530f3561592 GIT binary patch literal 290158 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%0Dw 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%0At&cfBKnW!Wh8E3H;+ijonNTqy$BDei@h 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 literal 0 HcmV?d00001 diff --git a/models/__init__.py b/models/__init__.py index 5a297e8..917589c 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -8,6 +8,10 @@ from .enrollment import Enrollment from .attempt import Attempt from .submission import Submission +from .track_exercise import TrackExerciseAssociation +from .track_classroom import TrackClassAssociation +from .user_classroom import UserClassAssociation __all__ = ['User', 'Artifact', 'Exercise', 'Base', 'Language', - 'Track', 'Class', 'Enrollment', 'Attempt', 'Submission'] + 'Track', 'Class', 'Enrollment', 'Attempt', 'Submission', + 'TrackExercise', 'TrackClassroom'] diff --git a/models/attempt.py b/models/attempt.py index f94faeb..15fa326 100644 --- a/models/attempt.py +++ b/models/attempt.py @@ -1,42 +1,26 @@ from datetime import datetime from .base import Base -from sqlalchemy import (Column, String, Integer, - ForeignKeyConstraint, DateTime, Enum) +from sqlalchemy import (Column, String, Integer, UniqueConstraint, + ForeignKey, DateTime, Enum) +from sqlalchemy.orm import relationship from .language import Language class Attempt(Base): __tablename__ = 'attempts' - user = Column('user', String, primary_key=True) - class_id = Column('class_id', Integer, - primary_key=True) - track_name = Column('track_name', String, primary_key=True) - track_owner = Column('track_owner', String, primary_key=True) - exercise_name = Column('exercise_name', String, primary_key=True) - exercise_language = Column('exercise_language', Enum(Language), - primary_key=True) + id = Column('id', Integer, autoincrement=True, primary_key=True) + submission_id = Column(ForeignKey('submissions.id'), nullable=False) + submission = relationship('Submission') attempt_number = Column('attempt_number', Integer, primary_key=True) solution_file = Column(String, nullable=False) test_coverage = Column(String, nullable=False) test_ouput = Column(String, nullable=False) - tests_checksum = Column(String, nullable=False) + test_checksum = Column(String, nullable=False) submitted_at = Column(DateTime, default=datetime.utcnow, nullable=False) - submission_composite_key = ForeignKeyConstraint( - ['user', 'class_id', 'track_name', 'track_owner', - 'exercise_name', 'exercise_language'], - [ - 'submissions.user', - 'submissions.class_id', - 'submissions.track_name', - 'submissions.track_owner', - 'submissions.exercise_name', - 'submissions.exercise_language', - ]) - def __repr__(self): return ("" % diff --git a/models/classroom.py b/models/classroom.py index 46ae0e9..7acbe72 100644 --- a/models/classroom.py +++ b/models/classroom.py @@ -2,8 +2,8 @@ from .language import Language from sqlalchemy import Column, String, Integer, ForeignKey, Enum from sqlalchemy.orm import relationship -from .user_classroom import user_class_association -from .track_classroom import track_class_association +from .user_classroom import UserClassAssociation +from .track_classroom import TrackClassAssociation class Class(Base): @@ -14,11 +14,13 @@ class Class(Base): name = Column(String, nullable=False) invite_token = Column(String, nullable=False) language = Column(Enum(Language)) - users = relationship("User", secondary=user_class_association, + users = relationship("User", secondary='users_classes_association', back_populates="classes") - tracks = relationship("Track", secondary=track_class_association, + tracks = relationship("Track", secondary='tracks_classes_association', back_populates="classes") + tracks_classes = relationship("TrackClassAssociation") + def __repr__(self): return ("" % (self.id, self.name, self.owner)) diff --git a/models/enrollment.py b/models/enrollment.py index c8e1384..a720cb1 100644 --- a/models/enrollment.py +++ b/models/enrollment.py @@ -8,18 +8,11 @@ class Enrollment(Base): __tablename__ = 'enrollments' user = Column(String, ForeignKey('users.email'), primary_key=True) - class_id = Column('class_id', Integer, primary_key=True) - track_name = Column('track_name', String, primary_key=True) - track_owner = Column('track_owner', String, primary_key=True) - - track_class_composite_key = ForeignKeyConstraint( - ['class_id', 'track_name', 'track_owner'], - [ - 'tracks_classes_association.class_id', - 'tracks_classes_association.name', - 'tracks_classes_association.owner', - ]) + track_class_id = Column('track_class_id', + ForeignKey('tracks_classes_association.id'), + primary_key=True) + track_class = relationship('TrackClassAssociation', uselist=False) submissions = relationship('Submission') def __repr__(self): diff --git a/models/exercise.py b/models/exercise.py index 2fcdd71..04a787c 100644 --- a/models/exercise.py +++ b/models/exercise.py @@ -2,7 +2,6 @@ from .language import Language from sqlalchemy.orm import relationship from sqlalchemy import ForeignKey, Column, Integer, String, Text, ARRAY, Enum -from .track_exercise import track_exercise_association class Exercise(Base): @@ -19,5 +18,7 @@ class Exercise(Base): back_populates="exercise", uselist=False) tracks = relationship("Track", - secondary=track_exercise_association, + secondary="tracks_exercises_association", back_populates="exercises") + created_by = relationship("User", uselist=False, + back_populates="created_exercises") diff --git a/models/submission.py b/models/submission.py index 41ca11c..52684a5 100644 --- a/models/submission.py +++ b/models/submission.py @@ -1,6 +1,6 @@ from .base import Base -from sqlalchemy import (Column, String, Integer, ForeignKey, - ForeignKeyConstraint, Enum) +from sqlalchemy import (Column, String, Integer, ForeignKeyConstraint, + UniqueConstraint, Enum) from sqlalchemy.orm import relationship from .submission_state import SubmissionState from .language import Language @@ -8,48 +8,31 @@ class Submission(Base): __tablename__ = 'submissions' + __table_args__ = ( + ForeignKeyConstraint( + ['exercise_name', 'exercise_language'], + ['exercises.name', 'exercises.language'] + ), + ForeignKeyConstraint( + ['user', 'track_class_id'], + ['enrollments.user', 'enrollments.track_class_id']), + UniqueConstraint('user', 'track_class_id', 'exercise_name', + 'exercise_language') + ) - user = Column('user', String, primary_key=True) - class_id = Column('class_id', Integer, primary_key=True) - track_name = Column('track_name', String, primary_key=True) - track_owner = Column('track_owner', String, primary_key=True) - exercise_name = Column('exercise_name', String, primary_key=True) - exercise_language = Column('exercise_language', Enum(Language), - primary_key=True) - attempt_number = Column('attempt_number', Integer) + id = Column('id', Integer, primary_key=True) + user = Column('user', String) + track_class_id = Column('track_class_id', Integer) + enrollment = relationship('Enrollment', uselist=False) + exercise_name = Column('exercise_name', String) + exercise_language = Column('exercise_language', Enum(Language)) + exercise = relationship('Exercise') attempts = relationship('Attempt') state = Column('state', Enum(SubmissionState), default=SubmissionState('pending')) - exercise_composite_key = ForeignKeyConstraint( - ['exercise_name', 'exercise_language'], - ['exercises.name', 'exercises.language'] - ) - - enrollment_composite_key = ForeignKeyConstraint( - ['user', 'class_id', 'track_name', 'track_owner'], - [ - 'enrollments.user', - 'enrollments.class_id', - 'enrollments.track_name', - 'enrollments.track_owner', - ]) - def __repr__(self): return ("" % (self.user, self.class_id, self.track, self.classroom, self.exercise)) - # attempt_composite_key = ForeignKeyConstraint( - # ['user', 'class_id', 'track_name', 'track_owner', - # 'exercise_name', 'exercise_language', 'attempt_number'], - # [ - # 'attempts.user', - # 'attempts.class_id', - # 'attempts.track_name', - # 'attempts.track_owner', - # 'attempts.exercise_name', - # 'attempts.exercise_language', - # 'attempts.attempt_number', - # ]) - diff --git a/models/track.py b/models/track.py index b02e426..d6bcf2f 100644 --- a/models/track.py +++ b/models/track.py @@ -2,8 +2,6 @@ from .base import Base from sqlalchemy import Column, String, ForeignKey, DateTime from sqlalchemy.orm import relationship -from .track_classroom import track_class_association -from .track_exercise import track_exercise_association class Track(Base): @@ -12,14 +10,16 @@ class Track(Base): name = Column(String, primary_key=True) owner = Column(String, ForeignKey('users.email'), primary_key=True) - classes = relationship("Class", secondary=track_class_association, + classes = relationship("Class", secondary="tracks_classes_association", back_populates="tracks") exercises = relationship("Exercise", - secondary=track_exercise_association, + secondary="tracks_exercises_association", back_populates="tracks") created_at = Column(DateTime, default=datetime.utcnow, nullable=False) + tracks_classes = relationship("TrackClassAssociation") + def __repr__(self): return "" % (self.name, self.creator) diff --git a/models/track_classroom.py b/models/track_classroom.py index 363b00a..c00a05c 100644 --- a/models/track_classroom.py +++ b/models/track_classroom.py @@ -1,17 +1,22 @@ from .base import Base -from sqlalchemy import (Column, String, ForeignKey, Table, - Integer, ForeignKeyConstraint) +from sqlalchemy import (Column, String, ForeignKey, Integer, + ForeignKeyConstraint, UniqueConstraint, + ) +from sqlalchemy.orm import relationship -class_id = Column('class_id', Integer, ForeignKey('classes.id'), - primary_key=True) -track_name = Column('track_name', String, primary_key=True) +class TrackClassAssociation(Base): + __tablename__ = 'tracks_classes_association' + __table_args__ = ( + ForeignKeyConstraint(['track_name', 'track_owner'], + ['tracks.name', 'tracks.owner']), + UniqueConstraint('class_id', 'track_name', 'track_owner') + ) -track_owner = Column('track_owner', String, primary_key=True) + id = Column('id', Integer, primary_key=True) + class_id = Column('class_id', Integer, ForeignKey('classes.id')) + track_name = Column('track_name', String) + track_owner = Column('track_owner', String) -track_composite_key = ForeignKeyConstraint(['track_name', 'track_owner'], - ['tracks.name', 'tracks.owner']) - -track_class_association = Table('tracks_classes_association', Base.metadata, - class_id, track_name, track_owner, - track_composite_key) + track = relationship('Track', uselist=False) + class_ref = relationship('Class', uselist=False) diff --git a/models/track_exercise.py b/models/track_exercise.py index 7f6dcdb..3f5552b 100644 --- a/models/track_exercise.py +++ b/models/track_exercise.py @@ -3,28 +3,21 @@ from sqlalchemy import (Column, String, Table, Integer, ForeignKeyConstraint, Enum) -track_name = Column('track_name', String, primary_key=True) -track_owner = Column('track_owner', String, primary_key=True) - -exercise_name = Column('exercise_name', String, primary_key=True) - -exercise_language = Column('exercise_language', - Enum(Language), primary_key=True) - -step = Column('step', Integer) - -exercise_composite_key = ForeignKeyConstraint( - ['exercise_name', 'exercise_language'], - ['exercises.name', 'exercises.language'] -) - -track_composite_key = ForeignKeyConstraint(['track_name', 'track_owner'], - ['tracks.name', 'tracks.owner']) - - -track_exercise_association = Table('tracks_exercises_association', - Base.metadata, - exercise_name, exercise_language, - track_name, track_owner, step, - track_composite_key, exercise_composite_key) +class TrackExerciseAssociation(Base): + __tablename__ = 'tracks_exercises_association' + __table_args__ = ( + ForeignKeyConstraint( + ['exercise_name', 'exercise_language'], + ['exercises.name', 'exercises.language'] + ), + ForeignKeyConstraint(['track_name', 'track_owner'], + ['tracks.name', 'tracks.owner']) + ) + + id = Column('id', Integer, primary_key=True) + track_name = Column('track_name', String) + track_owner = Column('track_owner', String) + exercise_name = Column('exercise_name', String) + exercise_language = Column('exercise_language', Enum(Language)) + step = Column('step', Integer) diff --git a/models/user.py b/models/user.py index 57aee44..b099d3e 100644 --- a/models/user.py +++ b/models/user.py @@ -2,7 +2,6 @@ from .base import Base from sqlalchemy import Column, String, Boolean, DateTime from sqlalchemy.orm import relationship -from .user_classroom import user_class_association class User(Base): @@ -19,7 +18,12 @@ class User(Base): created_at = Column(DateTime, default=datetime.utcnow, nullable=False) creator = relationship('Track') - classes = relationship("Class", secondary=user_class_association, + + class_owner = relationship('Class', uselist=False) + created_exercises = relationship('Exercise', back_populates="created_by") + enrolled_in = relationship('Enrollment') + + classes = relationship('Class', secondary="users_classes_association", back_populates="users") def __repr__(self): diff --git a/models/user_classroom.py b/models/user_classroom.py index f27e744..d3d511b 100644 --- a/models/user_classroom.py +++ b/models/user_classroom.py @@ -1,10 +1,10 @@ from .base import Base -from sqlalchemy import Column, String, ForeignKey, Table, Integer +from sqlalchemy import Column, String, ForeignKey, Integer -user_email = Column('user_email', String, ForeignKey('users.email'), - primary_key=True) -class_id = Column('class_id', Integer, ForeignKey('classes.id'), - primary_key=True) -user_class_association = Table('users_classes_association', Base.metadata, - class_id, user_email) +class UserClassAssociation(Base): + __tablename__ = 'users_classes_association' + user_email = Column('user_email', String, ForeignKey('users.email'), + primary_key=True) + class_id = Column('class_id', Integer, ForeignKey('classes.id'), + primary_key=True) diff --git a/server/static/js/2.c9ea58f0.chunk.js b/server/static/js/2.c9ea58f0.chunk.js new file mode 100644 index 0000000..169fa12 --- /dev/null +++ b/server/static/js/2.c9ea58f0.chunk.js @@ -0,0 +1,2 @@ +(this["webpackJsonpsharpener-frontend"]=this["webpackJsonpsharpener-frontend"]||[]).push([[2],[function(e,t,n){"use strict";e.exports=n(33)},function(e,t,n){"use strict";var r=n(16),o=n(40),i=Object.prototype.toString;function a(e){return"[object Array]"===i.call(e)}function u(e){return null!==e&&"object"===typeof e}function l(e){return"[object Function]"===i.call(e)}function c(e,t){if(null!==e&&"undefined"!==typeof e)if("object"!==typeof e&&(e=[e]),a(e))for(var n=0,r=e.length;n=0||(o[n]=e[n]);return o}var v=n(14),g=n.n(v),b=n(2),w=n.n(b),x=n(13),E=[],k=[null,null];function S(e,t){var n=e[1];return[t.payload,n+1]}var T=function(){return[null,0]},C="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement?r.useLayoutEffect:r.useEffect;function P(e,t){void 0===t&&(t={});var n=t,i=n.getDisplayName,a=void 0===i?function(e){return"ConnectAdvanced("+e+")"}:i,l=n.methodName,c=void 0===l?"connectAdvanced":l,s=n.renderCountProp,f=void 0===s?void 0:s,p=n.shouldHandleStateChanges,h=void 0===p||p,v=n.storeKey,b=void 0===v?"store":v,P=n.withRef,_=void 0!==P&&P,O=n.forwardRef,N=void 0!==O&&O,R=n.context,j=void 0===R?u:R,M=y(n,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"]);w()(void 0===f,"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension"),w()(!_,"withRef is removed. To access the wrapped instance, use a ref on the connected component");w()("store"===b,"storeKey has been removed and does not do anything. To use a custom Redux store for specific components, create a custom React context with React.createContext(), and pass the context object to React Redux's Provider and specific components like: . You may also pass a {context : MyContext} option to connect");var L=j;return function(t){var n=t.displayName||t.name||"Component",i=a(n),u=m({},M,{getDisplayName:a,methodName:c,renderCountProp:f,shouldHandleStateChanges:h,storeKey:b,displayName:i,wrappedComponentName:n,WrappedComponent:t}),l=M.pure;var s=l?r.useMemo:function(e){return e()};function p(n){var a=Object(r.useMemo)((function(){var e=n.forwardedRef,t=y(n,["forwardedRef"]);return[n.context,e,t]}),[n]),l=a[0],c=a[1],f=a[2],p=Object(r.useMemo)((function(){return l&&l.Consumer&&Object(x.isContextConsumer)(o.a.createElement(l.Consumer,null))?l:L}),[l,L]),v=Object(r.useContext)(p),g=Boolean(n.store),b=Boolean(v)&&Boolean(v.store);w()(g||b,'Could not find "store" in the context of "'+i+'". Either wrap the root component in a , or pass a custom React context provider to and the corresponding React context consumer to '+i+" in connect options.");var P=n.store||v.store,_=Object(r.useMemo)((function(){return function(t){return e(t.dispatch,u)}(P)}),[P]),O=Object(r.useMemo)((function(){if(!h)return k;var e=new d(P,g?null:v.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]}),[P,g,v]),N=O[0],R=O[1],j=Object(r.useMemo)((function(){return g?v:m({},v,{subscription:N})}),[g,v,N]),M=Object(r.useReducer)(S,E,T),U=M[0][0],A=M[1];if(U&&U.error)throw U.error;var I=Object(r.useRef)(),D=Object(r.useRef)(f),z=Object(r.useRef)(),F=Object(r.useRef)(!1),B=s((function(){return z.current&&f===D.current?z.current:_(P.getState(),f)}),[P,U,f]);C((function(){D.current=f,I.current=B,F.current=!1,z.current&&(z.current=null,R())})),C((function(){if(h){var e=!1,t=null,n=function(){if(!e){var n,r,o=P.getState();try{n=_(o,D.current)}catch(i){r=i,t=i}r||(t=null),n===I.current?F.current||R():(I.current=n,z.current=n,F.current=!0,A({type:"STORE_UPDATED",payload:{latestStoreState:o,error:r}}))}};N.onStateChange=n,N.trySubscribe(),n();return function(){if(e=!0,N.tryUnsubscribe(),N.onStateChange=null,t)throw t}}}),[P,N,_]);var $=Object(r.useMemo)((function(){return o.a.createElement(t,m({},B,{ref:c}))}),[c,t,B]);return Object(r.useMemo)((function(){return h?o.a.createElement(p.Provider,{value:j},$):$}),[p,$,j])}var v=l?o.a.memo(p):p;if(v.WrappedComponent=t,v.displayName=i,N){var P=o.a.forwardRef((function(e,t){return o.a.createElement(v,m({},e,{forwardedRef:t}))}));return P.displayName=i,P.WrappedComponent=t,g()(P,t)}return g()(v,t)}}var _=Object.prototype.hasOwnProperty;function O(e,t){return e===t?0!==e||0!==t||1/e===1/t:e!==e&&t!==t}function N(e,t){if(O(e,t))return!0;if("object"!==typeof e||null===e||"object"!==typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=0;o=0;r--){var o=t[r](e);if(o)return o}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function q(e,t){return e===t}var H=function(e){var t=void 0===e?{}:e,n=t.connectHOC,r=void 0===n?P:n,o=t.mapStateToPropsFactories,i=void 0===o?A:o,a=t.mapDispatchToPropsFactories,u=void 0===a?U:a,l=t.mergePropsFactories,c=void 0===l?D:l,s=t.selectorFactory,f=void 0===s?B:s;return function(e,t,n,o){void 0===o&&(o={});var a=o,l=a.pure,s=void 0===l||l,d=a.areStatesEqual,p=void 0===d?q:d,h=a.areOwnPropsEqual,v=void 0===h?N:h,g=a.areStatePropsEqual,b=void 0===g?N:g,w=a.areMergedPropsEqual,x=void 0===w?N:w,E=y(a,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),k=$(e,i,"mapStateToProps"),S=$(t,u,"mapDispatchToProps"),T=$(n,c,"mergeProps");return r(f,m({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:k,initMapDispatchToProps:S,initMergeProps:T,pure:s,areStatesEqual:p,areOwnPropsEqual:v,areStatePropsEqual:b,areMergedPropsEqual:x},E))}}();function W(){var e=Object(r.useContext)(u);return w()(e,"could not find react-redux context value; please ensure the component is wrapped in a "),e}function V(e){void 0===e&&(e=u);var t=e===u?W:function(){return Object(r.useContext)(e)};return function(){return t().store}}var Q=V();!function(e){void 0===e&&(e=u);var t=e===u?Q:V(e)}();var K="undefined"!==typeof window?r.useLayoutEffect:r.useEffect,Y=function(e,t){return e===t};!function(e){void 0===e&&(e=u);var t=e===u?W:function(){return Object(r.useContext)(e)}}();var X,G=n(9);n.d(t,"a",(function(){return h})),n.d(t,"b",(function(){return H})),X=G.unstable_batchedUpdates,l=X},function(e,t,n){"use strict";var r=n(28),o=n.n(r),i=n(29),a=n.n(i),u=n(4),l=n(10),c=function(e){return Object.keys(e).map((function(t){return e[t]}))},s=Object.assign||function(e){for(var t=1;t3&&void 0!==arguments[3]?arguments[3]:oe().basename,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:oe().strict,i=e.split("?"),a=i[1],d=a&&n&&n.parse(a),h=c(t),m=Object.keys(t);e=r?Object(u.stripBasename)(i[0],r):i[0];for(var y=0,v=void 0,g=void 0;!v&&y1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(t).reduce((function(n,r){var o=t[r];return n[r]=$(o,e,r),n}),{})},$=function(e,t,n){return"function"===typeof t.toPath?t.toPath(e,n):"string"===typeof e?e.includes("/")?e.split("/"):!0===t.capitalizedWords?e.replace(/ /g,"-").toLowerCase():e:"number"===typeof e?e:void 0},q=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:e,r=arguments[1],o=(t=n.routesMap||t)[r.type];if(r.type===ie||!(!o||r.error||"string"!==typeof o&&!o.path||r.meta.location.current.pathname===n.pathname&&r.meta.location.current.search===n.search&&"load"!==r.meta.location.kind)){var i=r.meta.location.current.query,a=r.meta.location.current.search;return Y({pathname:r.meta.location.current.pathname,type:r.type,payload:Y({},r.payload)},i&&{query:i,search:a},{prev:r.meta.location.prev,kind:r.meta.location.kind,history:r.meta.location.history,hasSSR:n.hasSSR,routesMap:t})}return!o||r.error||"string"!==typeof o&&!o.path||r.meta.location.current.pathname!==n.pathname||r.meta.location.current.search!==n.search||r.meta.location.kind===n.kind?r.type===ae?Y({},n,{routesMap:Y({},n.routesMap,r.payload.routes)}):n:Y({},n,{kind:r.meta.location.kind})}},G=function(e,t,n,r,o,i){return Y({search:e.split("?")[1],pathname:e.split("?")[0],type:n,payload:r},t,{prev:{pathname:"",type:"",payload:{}},kind:void 0,history:y(i),hasSSR:!!b()||void 0,routesMap:o})},J="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Z=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};var n=t.notFoundPath,r=void 0===n?"/not-found":n,i=t.scrollTop,l=void 0!==i&&i,c=t.location,s=t.title,f=t.onBeforeChange,p=t.onAfterChange,h=t.onBackNext,m=t.restoreScroll,P=t.initialDispatch,_=void 0===P||P,O=t.querySerializer,R=t.displayConfirmLeave,I=t.extra;ne=t,U(R),t.basename&&(t.basename=Object(u.stripTrailingSlash)(Object(u.addLeadingSlash)(t.basename)));var D=C&&!0,z=D?o.a:a.a,F=t.createHistory||z,B=t.initialEntries||"/",$="string"===typeof B?[B]:B,q=F({basename:t.basename,initialEntries:$,getUserConfirmation:L}),W=T(q.location),V={pathname:"",type:"",payload:{}},Q="function"===typeof c?c:c?function(e){return e[c]}:function(e){return e.location},Y="function"===typeof s?s:s?function(e){return e[s]}:function(e){return e.title},ee=m&&m(q),re=d(W,e,O),oe=re.type,ue=re.payload,le=re.meta,ce=G(W,le,oe,ue,e,q),se=ce,fe={},de=1,pe=X(ce,e),he={action:re,extra:I},me=S(e,Q,he),ye=function(){return Oe&&Oe()},ve=E(),ge=void 0,be=void 0,we=void 0,xe=void 0,Ee=void 0;t.navigators&&(ge=t.navigators.navigators,be=t.navigators.patchNavigators,we=t.navigators.actionToNavigation,xe=t.navigators.navigationToAction,be(ge));var ke=function(t){return function(n){return function(o){if(o.error)return n(o);if(o.type===ae){var i=Q(t.getState()).type,a=e[i];e=Z({},e,o.payload.routes);var u=n(o),l=e[i];return a!==l&&(null!==Ne&&N(),"object"===("undefined"===typeof l?"undefined":J(l))&&l.confirmLeave&&(Ne=j(l.confirmLeave,t,Q,q,O,(function(){return Ne=null})))),u}var c=void 0;if(ge&&0===o.type.indexOf("Navigation/")){var s=xe(ge,t,e,o);c=s.navigationAction,o=s.action}var f=e[o.type];if("object"===("undefined"===typeof f?"undefined":J(f))&&!f.path){var d=n(o);return k(t.dispatch,t.getState,f,Q,{action:d,extra:I}),d}o.type!==ie||v(o)?f&&!v(o)&&(o=H(o,e,V,q,r,O)):o=K(o,Q(t.getState()),V,0,r),ge&&(o=we(ge,o,c,f));var p=void 0;if((f||o.type===ie)&&o.meta&&(p=Se(t,q,o)),!p){var h=n(o);return(f||o.type===ie)&&Te(t,f,h),h}}}},Se=function(e,t,n){var r=n.meta.location;if(Ne){var o=Ne(r.current);if(o)return M(o,e,n),!0;Ne=null}if(f){var i=void 0,a={action:n,extra:I};if(f((function(t){g(t)&&(i=!0,V=r.current,T(r.current)===W||b()||(Ee="onBeforeChange"));return e.dispatch(t)}),e.getState,a),i)return!0}se=Q(e.getState()),V=r.current,de=t.length,Ce(r,t),w()&&(r.history=y(t))},Te=function(e,t,n){var r=e.dispatch,o=e.getState(),i=Q(o).kind,a=Y(o),u={action:n,extra:I};if(fe=Q(o),"object"===("undefined"===typeof t?"undefined":J(t))){var c=!1;if(k((function(t){return g(t)&&(c=!0),e.dispatch(t)}),e.getState,t,Q,u),c)return}p&&p(r,e.getState,u),b()||(i&&("function"===typeof h&&/back|next|pop/.test(i)&&h(r,e.getState,u),setTimeout((function(){if(x(ve,a),l)return window.scrollTo(0,0);te(!1)}))),"object"===("undefined"===typeof t?"undefined":J(t))&&t.confirmLeave&&(Ne=j(t.confirmLeave,e,Q,q,O,(function(){return Ne=null}))))},Ce=function(e,t){var n=T(e.current);if(n!==W){W=n;var r=e.kind;if(!(r&&/back|next|pop|stealth/.test(r)))t["redirect"===r&&"onBeforeChange"!==Ee?"replace":"push"](W)}},Pe=function(t){return function(n,r,o){!b()&&r&&Q(r)&&(Q(r).routesMap=e);var i=t(n,r,o),a=i.getState(),u=a&&Q(a);if(!u||!u.pathname)throw new Error("[redux-first-router] you must provide the key of the location\n reducer state and properly assigned the location reducer to that key.");if(q.listen(_e.bind(null,i)),!u.hasSSR||b())Oe=function(){var t=A(W,e,V,q,"load",O);i.dispatch(t)},!1!==_&&Oe();else{V=u;var l=e[u.type];"object"===("undefined"===typeof l?"undefined":J(l))&&l.confirmLeave&&(Ne=j(l.confirmLeave,i,Q,q,O,(function(){return Ne=null})))}return b()||setTimeout((function(){return te(!1)})),i}},_e=function(t,n,r){var o=T(n);if(o!==W){var i=A(o,e,V,q,("REPLACE"===r?"redirect":r).toLowerCase(),O,W,de);W=o,t.dispatch(i)}};q,ee,Q;var Oe=void 0,Ne=null;return te=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];ee&&(!e&&ee.manual||ee.updateScroll(se,fe))},{reducer:pe,middleware:ke,enhancer:Pe,thunk:me,initialDispatch:ye,_middlewareAttemptChangeUrl:Ce,_afterRouteChange:Te,_historyAttemptDispatchAction:_e,windowDocument:ve,history:q}},te=void 0,ne=void 0,re=function(){return te&&te()},oe=function(){return ne||{}};n.d(t,"b",(function(){return ie})),n.d(t,"a",(function(){return ae})),n.d(t,"c",(function(){return ee})),n.d(t,"d",(function(){return oe}));var ie="@@redux-first-router/NOT_FOUND",ae="@@redux-first-router/ADD_ROUTES"},function(e,t,n){"use strict";!function e(){if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}}(),e.exports=n(34)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.compileParamsToPath=t.compilePath=void 0;var r,o=n(62),i=(r=o)&&r.__esModule?r:{default:r};function a(e){return Array.isArray(e)?e:Array.from(e)}var u={},l=0,c=t.compilePath=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.end,r=void 0===n||n,o=t.strict,a=void 0!==o&&o,c=(r?"t":"f")+(a?"t":"f"),s=u[c]||(u[c]={});if(s[e])return s[e];var f=[],d=(0,i.default)(e,f,t),p={re:d,keys:f};return l<1e4&&(s[e]=p,l++),p},s={};t.compileParamsToPath=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=s[e]||i.default.compile(e);return s[e]=n,n(t)};t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"===typeof t&&(t={path:t,exact:!1,strict:!1});var n=t,r=n.path,o=void 0===r?"/":r,i=n.exact,u=void 0!==i&&i,l=n.strict,s=void 0!==l&&l,f=c(o,{end:u,strict:s}),d=f.re,p=f.keys,h=d.exec(e);if(!h)return null;var m=a(h),y=m[0],v=m.slice(1),g=e===y;return u&&!g?null:{path:o,url:"/"===o&&""===y?"/":y,isExact:g,params:p.reduce((function(e,t,n){return e[t.name]=v[n],e}),{})}}},function(e,t,n){"use strict";var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(o){return!1}}()?Object.assign:function(e,t){for(var n,u,l=a(e),c=1;c=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(e){u.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){u.headers[e]=r.merge(i)})),e.exports=u}).call(this,n(45))},function(e,t,n){"use strict";var r=n(1),o=n(47),i=n(17),a=n(49),u=n(50),l=n(21);e.exports=function(e){return new Promise((function(t,c){var s=e.data,f=e.headers;r.isFormData(s)&&delete f["Content-Type"];var d=new XMLHttpRequest;if(e.auth){var p=e.auth.username||"",h=e.auth.password||"";f.Authorization="Basic "+btoa(p+":"+h)}if(d.open(e.method.toUpperCase(),i(e.url,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,d.onreadystatechange=function(){if(d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in d?a(d.getAllResponseHeaders()):null,r={data:e.responseType&&"text"!==e.responseType?d.response:d.responseText,status:d.status,statusText:d.statusText,headers:n,config:e,request:d};o(t,c,r),d=null}},d.onabort=function(){d&&(c(l("Request aborted",e,"ECONNABORTED",d)),d=null)},d.onerror=function(){c(l("Network Error",e,null,d)),d=null},d.ontimeout=function(){c(l("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED",d)),d=null},r.isStandardBrowserEnv()){var m=n(51),y=(e.withCredentials||u(e.url))&&e.xsrfCookieName?m.read(e.xsrfCookieName):void 0;y&&(f[e.xsrfHeaderName]=y)}if("setRequestHeader"in d&&r.forEach(f,(function(e,t){"undefined"===typeof s&&"content-type"===t.toLowerCase()?delete f[t]:d.setRequestHeader(t,e)})),e.withCredentials&&(d.withCredentials=!0),e.responseType)try{d.responseType=e.responseType}catch(v){if("json"!==e.responseType)throw v}"function"===typeof e.onDownloadProgress&&d.addEventListener("progress",e.onDownloadProgress),"function"===typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){d&&(d.abort(),c(e),d=null)})),void 0===s&&(s=null),d.send(s)}))}},function(e,t,n){"use strict";var r=n(48);e.exports=function(e,t,n,o,i){var a=new Error(e);return r(a,t,n,o,i)}},function(e,t,n){"use strict";var r=n(1);e.exports=function(e,t){t=t||{};var n={};return r.forEach(["url","method","params","data"],(function(e){"undefined"!==typeof t[e]&&(n[e]=t[e])})),r.forEach(["headers","auth","proxy"],(function(o){r.isObject(t[o])?n[o]=r.deepMerge(e[o],t[o]):"undefined"!==typeof t[o]?n[o]=t[o]:r.isObject(e[o])?n[o]=r.deepMerge(e[o]):"undefined"!==typeof e[o]&&(n[o]=e[o])})),r.forEach(["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"],(function(r){"undefined"!==typeof t[r]?n[r]=t[r]:"undefined"!==typeof e[r]&&(n[r]=e[r])})),n}},function(e,t,n){"use strict";function r(e){this.message=e}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,e.exports=r},function(e,t,n){"use strict";t.__esModule=!0,t.locationsAreEqual=t.createLocation=void 0;var r=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};(0,a.default)(s.canUseDOM,"Browser history needs a DOM");var t=window.history,n=(0,s.supportsHistory)(),f=!(0,s.supportsPopStateOnHashChange)(),p=e.forceRefresh,h=void 0!==p&&p,m=e.getUserConfirmation,y=void 0===m?s.getConfirmation:m,v=e.keyLength,g=void 0===v?6:v,b=e.basename?(0,l.stripTrailingSlash)((0,l.addLeadingSlash)(e.basename)):"",w=function(e){var t=e||{},n=t.key,r=t.state,o=window.location,a=o.pathname+o.search+o.hash;return(0,i.default)(!b||(0,l.hasBasename)(a,b),'You are attempting to use a basename on a page whose URL path does not begin with the basename. Expected path "'+a+'" to begin with "'+b+'".'),b&&(a=(0,l.stripBasename)(a,b)),(0,u.createLocation)(a,r,n)},x=function(){return Math.random().toString(36).substr(2,g)},E=(0,c.default)(),k=function(e){o($,e),$.length=t.length,E.notifyListeners($.location,$.action)},S=function(e){(0,s.isExtraneousPopstateEvent)(e)||P(w(e.state))},T=function(){P(w(d()))},C=!1,P=function(e){if(C)C=!1,k();else{E.confirmTransitionTo(e,"POP",y,(function(t){t?k({action:"POP",location:e}):_(e)}))}},_=function(e){var t=$.location,n=N.indexOf(t.key);-1===n&&(n=0);var r=N.indexOf(e.key);-1===r&&(r=0);var o=n-r;o&&(C=!0,L(o))},O=w(d()),N=[O.key],R=function(e){return b+(0,l.createPath)(e)},j=function(e,o){(0,i.default)(!("object"===("undefined"===typeof e?"undefined":r(e))&&void 0!==e.state&&void 0!==o),"You should avoid providing a 2nd state argument to push when the 1st argument is a location-like object that already has state; it is ignored");var a=(0,u.createLocation)(e,o,x(),$.location);E.confirmTransitionTo(a,"PUSH",y,(function(e){if(e){var r=R(a),o=a.key,u=a.state;if(n)if(t.pushState({key:o,state:u},null,r),h)window.location.href=r;else{var l=N.indexOf($.location.key),c=N.slice(0,-1===l?0:l+1);c.push(a.key),N=c,k({action:"PUSH",location:a})}else(0,i.default)(void 0===u,"Browser history cannot push state in browsers that do not support HTML5 history"),window.location.href=r}}))},M=function(e,o){(0,i.default)(!("object"===("undefined"===typeof e?"undefined":r(e))&&void 0!==e.state&&void 0!==o),"You should avoid providing a 2nd state argument to replace when the 1st argument is a location-like object that already has state; it is ignored");var a=(0,u.createLocation)(e,o,x(),$.location);E.confirmTransitionTo(a,"REPLACE",y,(function(e){if(e){var r=R(a),o=a.key,u=a.state;if(n)if(t.replaceState({key:o,state:u},null,r),h)window.location.replace(r);else{var l=N.indexOf($.location.key);-1!==l&&(N[l]=a.key),k({action:"REPLACE",location:a})}else(0,i.default)(void 0===u,"Browser history cannot replace state in browsers that do not support HTML5 history"),window.location.replace(r)}}))},L=function(e){t.go(e)},U=function(){return L(-1)},A=function(){return L(1)},I=0,D=function(e){1===(I+=e)?((0,s.addEventListener)(window,"popstate",S),f&&(0,s.addEventListener)(window,"hashchange",T)):0===I&&((0,s.removeEventListener)(window,"popstate",S),f&&(0,s.removeEventListener)(window,"hashchange",T))},z=!1,F=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=E.setPrompt(e);return z||(D(1),z=!0),function(){return z&&(z=!1,D(-1)),t()}},B=function(e){var t=E.appendListener(e);return D(1),function(){D(-1),t()}},$={length:t.length,action:"POP",location:O,createHref:R,push:j,replace:M,go:L,goBack:U,goForward:A,block:F,listen:B};return $}},function(e,t,n){"use strict";t.__esModule=!0;var r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.getUserConfirmation,n=void 0===t?p:t,a=e.initialEntries,s=void 0===a?["/"]:a,d=e.initialIndex,h=void 0===d?0:d,m=e.keyLength,y=void 0===m?6:m,v=e.basename?(0,u.stripTrailingSlash)((0,u.addLeadingSlash)(e.basename)):"",g=(0,c.default)(),b=function(e){o(M,e),M.length=M.entries.length,g.notifyListeners(M.location,M.action)},w=function(){return Math.random().toString(36).substr(2,y)},x=f(h,0,s.length-1),E=function(e){return v?(0,u.stripBasename)(e,v):e},k=s.map((function(e){return"string"===typeof e?(0,l.createLocation)(E(e),void 0,w()):(0,l.createLocation)(E(e),void 0,e.key||w())})),S=function(e){return v+(0,u.createPath)(e)},T=function(e,t){(0,i.default)(!("object"===("undefined"===typeof e?"undefined":r(e))&&void 0!==e.state&&void 0!==t),"You should avoid providing a 2nd state argument to push when the 1st argument is a location-like object that already has state; it is ignored");var o=(0,l.createLocation)(E(e),t,w(),M.location);g.confirmTransitionTo(o,"PUSH",n,(function(e){if(e){var t=M.index+1,n=M.entries.slice(0);n.length>t?n.splice(t,n.length-t,o):n.push(o),b({action:"PUSH",location:o,index:t,entries:n})}}))},C=function(e,t){(0,i.default)(!("object"===("undefined"===typeof e?"undefined":r(e))&&void 0!==e.state&&void 0!==t),"You should avoid providing a 2nd state argument to replace when the 1st argument is a location-like object that already has state; it is ignored");var o=(0,l.createLocation)(E(e),t,w(),M.location);g.confirmTransitionTo(o,"REPLACE",n,(function(e){e&&(M.entries[M.index]=o,b({action:"REPLACE",location:o}))}))},P=function(e){var t=f(M.index+e,0,M.entries.length-1),r=M.entries[t];g.confirmTransitionTo(r,"POP",n,(function(e){e?b({action:"POP",location:r,index:t}):b()}))},_=function(){return P(-1)},O=function(){return P(1)},N=function(e){var t=M.index+e;return t>=0&&t0&&void 0!==arguments[0]&&arguments[0];return g.setPrompt(e)},j=function(e){return g.appendListener(e)},M={length:k.length,action:"POP",location:k[x],index:x,entries:k,createHref:S,push:T,replace:C,go:P,goBack:_,goForward:O,canGo:N,block:R,listen:j};return M}},function(e,t,n){"use strict";var r=n(6).compose;t.__esModule=!0,t.composeWithDevTools="undefined"!==typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"===typeof arguments[0]?r:r.apply(null,arguments)},t.devToolsEnhancer="undefined"!==typeof window&&window.__REDUX_DEVTOOLS_EXTENSION__?window.__REDUX_DEVTOOLS_EXTENSION__:function(){return function(e){return e}}},function(e,t,n){"use strict";var r=n(64),o=n(11);function i(e,t){return t.encode?t.strict?r(e):encodeURIComponent(e):e}t.extract=function(e){return e.split("?")[1]||""},t.parse=function(e,t){var n=function(e){var t;switch(e.arrayFormat){case"index":return function(e,n,r){t=/\[(\d*)\]$/.exec(e),e=e.replace(/\[\d*\]$/,""),t?(void 0===r[e]&&(r[e]={}),r[e][t[1]]=n):r[e]=n};case"bracket":return function(e,n,r){t=/(\[\])$/.exec(e),e=e.replace(/\[\]$/,""),t?void 0!==r[e]?r[e]=[].concat(r[e],n):r[e]=[n]:r[e]=n};default:return function(e,t,n){void 0!==n[e]?n[e]=[].concat(n[e],t):n[e]=t}}}(t=o({arrayFormat:"none"},t)),r=Object.create(null);return"string"!==typeof e?r:(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach((function(e){var t=e.replace(/\+/g," ").split("="),o=t.shift(),i=t.length>0?t.join("="):void 0;i=void 0===i?null:decodeURIComponent(i),n(decodeURIComponent(o),i,r)})),Object.keys(r).sort().reduce((function(e,t){var n=r[t];return Boolean(n)&&"object"===typeof n&&!Array.isArray(n)?e[t]=function e(t){return Array.isArray(t)?t.sort():"object"===typeof t?e(Object.keys(t)).sort((function(e,t){return Number(e)-Number(t)})).map((function(e){return t[e]})):t}(n):e[t]=n,e}),Object.create(null))):r},t.stringify=function(e,t){var n=function(e){switch(e.arrayFormat){case"index":return function(t,n,r){return null===n?[i(t,e),"[",r,"]"].join(""):[i(t,e),"[",i(r,e),"]=",i(n,e)].join("")};case"bracket":return function(t,n){return null===n?i(t,e):[i(t,e),"[]=",i(n,e)].join("")};default:return function(t,n){return null===n?i(t,e):[i(t,e),"=",i(n,e)].join("")}}}(t=o({encode:!0,strict:!0,arrayFormat:"none"},t));return e?Object.keys(e).sort().map((function(r){var o=e[r];if(void 0===o)return"";if(null===o)return i(r,t);if(Array.isArray(o)){var a=[];return o.slice().forEach((function(e){void 0!==e&&a.push(n(r,e,a.length))})),a.join("&")}return i(r,t)+"="+i(o,t)})).filter((function(e){return e.length>0})).join("&"):""}},,function(e,t,n){"use strict";var r=n(11),o="function"===typeof Symbol&&Symbol.for,i=o?Symbol.for("react.element"):60103,a=o?Symbol.for("react.portal"):60106,u=o?Symbol.for("react.fragment"):60107,l=o?Symbol.for("react.strict_mode"):60108,c=o?Symbol.for("react.profiler"):60114,s=o?Symbol.for("react.provider"):60109,f=o?Symbol.for("react.context"):60110,d=o?Symbol.for("react.forward_ref"):60112,p=o?Symbol.for("react.suspense"):60113,h=o?Symbol.for("react.suspense_list"):60120,m=o?Symbol.for("react.memo"):60115,y=o?Symbol.for("react.lazy"):60116;o&&Symbol.for("react.fundamental"),o&&Symbol.for("react.responder"),o&&Symbol.for("react.scope");var v="function"===typeof Symbol&&Symbol.iterator;function g(e){for(var t=e.message,n="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;rM.length&&M.push(e)}function A(e,t,n){return null==e?0:function e(t,n,r,o){var u=typeof t;"undefined"!==u&&"boolean"!==u||(t=null);var l=!1;if(null===t)l=!0;else switch(u){case"string":case"number":l=!0;break;case"object":switch(t.$$typeof){case i:case a:l=!0}}if(l)return r(o,t,""===n?"."+I(t,0):n),1;if(l=0,n=""===n?".":n+":",Array.isArray(t))for(var c=0;c
+ + {% if debug %} + + + + {% else %} + + + + {% endif %} From f79b50260b21db816c737dbecc6365b3d400313f Mon Sep 17 00:00:00 2001 From: Pedro Morello Abbud Date: Sun, 27 Oct 2019 09:02:56 -0300 Subject: [PATCH 07/11] Cleanup on dev/prod environment --- .github/workflows/cd-workflow.yml | 10 ++-- connectors/exercism/populate.py | 4 +- db/helpers.py | 50 ++++++++-------- server/static/js/main.71351dde.chunk.js | 2 - server/static/js/main.71351dde.chunk.js.map | 1 - server/static/js/main.d13865bf.chunk.js | 2 + server/static/js/main.d13865bf.chunk.js.map | 1 + server/templates/index.html | 5 +- server/views/users.py | 66 +++++++++++++++------ settings.toml | 8 +-- sharpener-admin.py | 34 ++++++----- 11 files changed, 108 insertions(+), 75 deletions(-) delete mode 100644 server/static/js/main.71351dde.chunk.js delete mode 100644 server/static/js/main.71351dde.chunk.js.map create mode 100644 server/static/js/main.d13865bf.chunk.js create mode 100644 server/static/js/main.d13865bf.chunk.js.map diff --git a/.github/workflows/cd-workflow.yml b/.github/workflows/cd-workflow.yml index 773fa57..d31cb3f 100644 --- a/.github/workflows/cd-workflow.yml +++ b/.github/workflows/cd-workflow.yml @@ -3,6 +3,7 @@ on: push: branches: - "master" + - "submission" jobs: lint: runs-on: ubuntu-latest @@ -33,10 +34,11 @@ jobs: DYNACONF_DB_API: ${{ secrets.db_api }} DYNACONF_DB_NAME: ${{ secrets.db_name }} DYNACONF_DB_CONN_NAME: ${{ secrets.db_conn_name }} - DYNACONF_GITHUB_CLIENT_SECRET: ${{ client_secret }} - DYNACONF_GITHUB_CLIENT_ID: ${{ client_id } - DYNACONF_GITHUB_URI_USER: "https://github.com/login/oauth/access_token" - DYNACONF_GITHUB_URI_OAUTH: "https://api.github.com/user" + DYNACONF_GITHUB_CLIENT_SECRET: ${{ secrets.client_secret }} + DYNACONF_GITHUB_CLIENT_ID: ${{ secrets.client_id }} + DYNACONF_GITHUB_URI_OAUTH: https://github.com/login/oauth/access_token + DYNACONF_GITHUB_URI_USER: https://api.github.com/user + DYNACONF_FLASK_SECRET: ${{ secrets.flask_secret }} run: env | grep DYNACONF_ > .env - name: Deploy to GCP AppEngine uses: actions/gcloud/cli@master diff --git a/connectors/exercism/populate.py b/connectors/exercism/populate.py index 1b83813..e4fb40e 100644 --- a/connectors/exercism/populate.py +++ b/connectors/exercism/populate.py @@ -16,8 +16,8 @@ def get_or_create_default_user(db_session): name="exercism.io", nickname="exercism", is_teacher=True, - github_token="", - token="") + github_token="sample-github-token", + token="sample-github-token") db_session.add(exercism_user) db_session.flush() return exercism_user diff --git a/db/helpers.py b/db/helpers.py index ab673bd..afd08a8 100644 --- a/db/helpers.py +++ b/db/helpers.py @@ -3,36 +3,34 @@ from models import Base -def create_schema(api, username, password, name, conn_name=None, echo=False): - unix_socket = f'/cloudsql/{conn_name}' - engine = create_engine( - url.URL( - drivername=api, - username=username, - password=password, - database=name, - query={ - 'host': unix_socket - }), - client_encoding="utf8", - echo=echo) +def create_db_uri(api, username, password, name, conn_name, + production): + if production: + unix_socket = f'/cloudsql/{conn_name}' + db_uri = url.URL(drivername=api, username=username, password=password, + database=name, query={'host': unix_socket}) + else: + db_uri = url.URL(drivername=api, username=username, host="localhost", + password=password, database=name) + + return db_uri + + +def create_schema(api, username, password, name, + conn_name=None, echo=False, production=False): + db_uri = create_db_uri(api, username, password, + name, conn_name, production) + + engine = create_engine(db_uri, client_encoding="utf8", echo=echo) return Base.metadata.create_all(engine) -def database_setup(api, username, password, name, conn_name=None, echo=False): - unix_socket = f'/cloudsql/{conn_name}' - engine = create_engine( - url.URL( - drivername=api, - username=username, - password=password, - database=name, - query={ - 'host': unix_socket - }), - client_encoding="utf8", - echo=echo) +def database_setup(api, username, password, name, conn_name=None, + echo=False, production=False): + db_uri = create_db_uri(api, username, password, + name, conn_name, production) + engine = create_engine(db_uri, client_encoding="utf8", echo=echo) sess = orm.sessionmaker(bind=engine) return sess() diff --git a/server/static/js/main.71351dde.chunk.js b/server/static/js/main.71351dde.chunk.js deleted file mode 100644 index d5a7f70..0000000 --- a/server/static/js/main.71351dde.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(this["webpackJsonpsharpener-frontend"]=this["webpackJsonpsharpener-frontend"]||[]).push([[0],{32:function(e,t,r){e.exports=r(65)},65:function(e,t,r){"use strict";r.r(t);var n={};r.r(n),r.d(n,"userData",(function(){return G})),r.d(n,"loginSuccess",(function(){return C}));var o=r(0),c=r.n(o),a=r(9),i=r.n(a),u=r(5),s=r(3),l=r.n(s),p=r(26),O=r.n(p).a.create({baseURL:"",responseType:"json"}),f="".concat("https://github.com/login/oauth/authorize","?client_id=").concat("36689cf871668e2b775e","&scope=user&redirect_uri=").concat("http://localhost:3000"),b=function(){window.location=f},y=function(){return c.a.createElement("div",null,c.a.createElement("button",{onClick:b}," Login"))},d=function(e){var t=e.token;return e.loading?c.a.createElement("div",null," Loading your user data..."):c.a.createElement("div",null," Your CLI token is: ",t)},g=r(7),j=Object(g.b)((function(e){var t=e.user;return{token:t.token,loading:t.isLoadingData}}))(d),v=r(8),h=Object(u.a)({LANDING:c.a.createElement(y,null),HOME:c.a.createElement(j,null)},v.b,c.a.createElement("div",null,"Not found")),m=function(e){var t=e.location;return h[t]||h[v.b]};m.propTypes={location:l.a.string.isRequired};var w=Object(g.b)((function(e){return{location:e.location.type}}))(m),P=r(6),D=r(30),E=r(31),L=r.n(E);function k(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function S(e){for(var t=1;t0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1?arguments[1]:void 0,r=t.payload,n=t.type;switch(n){case"LOGIN_DATA":var o=r.avatar,c=r.email,a=r.token,i=r.name,u=r.nickname;return S({},e,{avatar:o,email:c,token:a,name:i,nickname:u,isLoadingData:!1});case"LOGIN_SUCCESS":return S({},e,{isLoadingData:!0,isLoggedIn:!0});default:return e}}};function N(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function A(e){for(var t=1;t {\n window.location = loginURI;\n};\n\nconst authenticateUser = code => client.get(`${AUTH_URI}/${code}`)\n\nexport {\n redirectToGithub,\n authenticateUser,\n};\n","import React from 'react';\nimport { redirectToGithub } from 'api';\n\nconst Landing = () => (\n
\n \n
\n);\n\nexport default Landing;\n","import React from 'react';\n\nconst Home = ({ token, loading }) =>(\n loading \n ?(
Loading your user data...
)\n :
Your CLI token is: {token}
\n)\n\n export default Home;\n","import Home from './Home';\nimport { connect } from 'react-redux';\n\nconst mapStateToProps = ({ user }) => ({\n token: user.token,\n loading: user.isLoadingData,\n});\n\nconst ConnectedHome = connect(mapStateToProps)(Home);\n\nexport default ConnectedHome;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Landing from 'Landing';\nimport Home from 'Home';\nimport { NOT_FOUND } from 'redux-first-router';\nimport { connect } from 'react-redux'\n\nconst componentsMap = {\n LANDING: ,\n HOME: ,\n [NOT_FOUND]:
Not found
,\n}; \n\nconst App = ({ location }) => componentsMap[location] || componentsMap[NOT_FOUND];\n\nconst mapStateToProps = state => ({\n location: state.location.type,\n});\n\nApp.propTypes = {\n location: PropTypes.string.isRequired,\n};\n\nexport default connect(mapStateToProps)(App);\n","import { LOGIN_SUCCESS, LOGIN_DATA } from 'store/constants';\n\nconst loginReducer = (state = false, action) => {\n const { payload, type } = action;\n switch (type) {\n case LOGIN_DATA:\n const { avatar, email, token,\n name, nickname } = payload;\n return {\n ...state,\n avatar,\n email,\n token,\n name,\n nickname,\n isLoadingData: false,\n };\n case LOGIN_SUCCESS:\n return {\n ...state,\n isLoadingData: true,\n isLoggedIn: true \n };\n default:\n return state;\n }\n};\n\nexport default loginReducer;\n","import user from './userReducer';\nconst appReducers = {\nuser,\n}\n\nexport default appReducers;\n","export const LOGIN_SUCCESS = \"LOGIN_SUCCESS\";\nexport const LOGIN_DATA = \"LOGIN_DATA\";\n","import { LOGIN_SUCCESS, LOGIN_DATA } from \"store/constants\";\n\n\nexport const userData = (data) => ({\n type: LOGIN_DATA,\n payload: {\n ...data\n }\n})\n\nexport const loginSuccess = () => ({\n type: LOGIN_SUCCESS,\n})\n","import { loginActions } from 'store/actions';\nimport { authenticateUser } from 'api';\n\nconst { userData, loginSuccess } = loginActions;\n\nconst landingThunk = (dispatch, getState) => {\n const { location, user } = getState();\n if(user.isLoggedIn){\n dispatch({\n type:'HOME'\n });\n }\n const code = location.query? location.query.code: \"\";\n if(code) {\n dispatch(loginSuccess());\n dispatch({\n type:'HOME'\n });\n authenticateUser(code).then( ({ data }) =>{\n dispatch(userData(data));\n })\n }\n}\n\nconst homeThunk = (dispatch, getState) => {\n const { user } = getState();\n if(!user.isLoggedIn){\n dispatch({\n type:'LANDING'\n });\n }\n}\n\nconst routesMap = {\n LANDING: { \n path:'/',\n thunk: landingThunk,\n },\n HOME: {\n path:'/home',\n thunk: homeThunk,\n },\n}\n\nexport default routesMap;\n","import { connectRoutes } from 'redux-first-router';\nimport { applyMiddleware, combineReducers, createStore } from 'redux';\nimport { composeWithDevTools } from 'redux-devtools-extension';\nimport queryString from 'query-string';\nimport appReducers from 'store/reducers';\nimport routesMap from './routes'\n\nconst configureStore = (...args) => {\n const { middleware, enhancer, reducer } = connectRoutes(\n routesMap,\n {\n scrollTop: true,\n querySerializer: queryString\n },\n );\n\n const rootReducer = combineReducers({ location: reducer, ...appReducers })\n const middlewares = applyMiddleware(middleware, ...args)\n const enhancers = composeWithDevTools(enhancer, middlewares)\n const { user } = window;\n\n const store = createStore(rootReducer,{user}, enhancers)\n\n return store;\n}\n\nexport default configureStore;\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport App from 'App';\nimport { Provider } from 'react-redux'\n\nimport configureStore from 'store';\nconst store = configureStore()\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root'),\n);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/server/static/js/main.d13865bf.chunk.js b/server/static/js/main.d13865bf.chunk.js new file mode 100644 index 0000000..fb06d3f --- /dev/null +++ b/server/static/js/main.d13865bf.chunk.js @@ -0,0 +1,2 @@ +(this["webpackJsonpsharpener-frontend"]=this["webpackJsonpsharpener-frontend"]||[]).push([[0],{32:function(e,t,r){e.exports=r(65)},65:function(e,t,r){"use strict";r.r(t);var n={};r.r(n),r.d(n,"userData",(function(){return G})),r.d(n,"loginSuccess",(function(){return C}));var o=r(0),c=r.n(o),a=r(9),i=r.n(a),u=r(5),s=r(3),p=r.n(s),l=r(26),O=r.n(l).a.create({baseURL:"",responseType:"json"}),f="".concat("https://github.com/login/oauth/authorize","?client_id=").concat("36689cf871668e2b775e","&scope=user&redirect_uri=").concat("http://sharpener-cloud.appspot.com"),b=function(){window.location=f},y=function(){return c.a.createElement("div",null,c.a.createElement("button",{onClick:b}," Login"))},d=function(e){var t=e.token;return e.loading?c.a.createElement("div",null," Loading your user data..."):c.a.createElement("div",null," Your CLI token is: ",t)},g=r(7),j=Object(g.b)((function(e){var t=e.user;return{token:t.token,loading:t.isLoadingData}}))(d),v=r(8),h=Object(u.a)({LANDING:c.a.createElement(y,null),HOME:c.a.createElement(j,null)},v.b,c.a.createElement("div",null,"Not found")),m=function(e){var t=e.location;return h[t]||h[v.b]};m.propTypes={location:p.a.string.isRequired};var w=Object(g.b)((function(e){return{location:e.location.type}}))(m),P=r(6),D=r(30),E=r(31),L=r.n(E);function k(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function S(e){for(var t=1;t0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1?arguments[1]:void 0,r=t.payload,n=t.type;switch(n){case"LOGIN_DATA":var o=r.avatar,c=r.email,a=r.token,i=r.name,u=r.nickname;return S({},e,{avatar:o,email:c,token:a,name:i,nickname:u,isLoadingData:!1});case"LOGIN_SUCCESS":return S({},e,{isLoadingData:!0,isLoggedIn:!0});default:return e}}};function N(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function A(e){for(var t=1;t {\n window.location = loginURI;\n};\n\nconst authenticateUser = code => client.get(`${AUTH_URI}/${code}`)\n\nexport {\n redirectToGithub,\n authenticateUser,\n};\n","import React from 'react';\nimport { redirectToGithub } from 'api';\n\nconst Landing = () => (\n
\n \n
\n);\n\nexport default Landing;\n","import React from 'react';\n\nconst Home = ({ token, loading }) =>(\n loading \n ?(
Loading your user data...
)\n :
Your CLI token is: {token}
\n)\n\n export default Home;\n","import Home from './Home';\nimport { connect } from 'react-redux';\n\nconst mapStateToProps = ({ user }) => ({\n token: user.token,\n loading: user.isLoadingData,\n});\n\nconst ConnectedHome = connect(mapStateToProps)(Home);\n\nexport default ConnectedHome;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Landing from 'Landing';\nimport Home from 'Home';\nimport { NOT_FOUND } from 'redux-first-router';\nimport { connect } from 'react-redux'\n\nconst componentsMap = {\n LANDING: ,\n HOME: ,\n [NOT_FOUND]:
Not found
,\n}; \n\nconst App = ({ location }) => componentsMap[location] || componentsMap[NOT_FOUND];\n\nconst mapStateToProps = state => ({\n location: state.location.type,\n});\n\nApp.propTypes = {\n location: PropTypes.string.isRequired,\n};\n\nexport default connect(mapStateToProps)(App);\n","import { LOGIN_SUCCESS, LOGIN_DATA } from 'store/constants';\n\nconst loginReducer = (state = false, action) => {\n const { payload, type } = action;\n switch (type) {\n case LOGIN_DATA:\n const { avatar, email, token,\n name, nickname } = payload;\n return {\n ...state,\n avatar,\n email,\n token,\n name,\n nickname,\n isLoadingData: false,\n };\n case LOGIN_SUCCESS:\n return {\n ...state,\n isLoadingData: true,\n isLoggedIn: true \n };\n default:\n return state;\n }\n};\n\nexport default loginReducer;\n","import user from './userReducer';\nconst appReducers = {\nuser,\n}\n\nexport default appReducers;\n","export const LOGIN_SUCCESS = \"LOGIN_SUCCESS\";\nexport const LOGIN_DATA = \"LOGIN_DATA\";\n","import { LOGIN_SUCCESS, LOGIN_DATA } from \"store/constants\";\n\n\nexport const userData = (data) => ({\n type: LOGIN_DATA,\n payload: {\n ...data\n }\n})\n\nexport const loginSuccess = () => ({\n type: LOGIN_SUCCESS,\n})\n","import { loginActions } from 'store/actions';\nimport { authenticateUser } from 'api';\n\nconst { userData, loginSuccess } = loginActions;\n\nconst landingThunk = (dispatch, getState) => {\n const { location, user } = getState();\n if(user.isLoggedIn){\n dispatch({\n type:'HOME'\n });\n }\n const code = location.query? location.query.code: \"\";\n if(code) {\n dispatch(loginSuccess());\n dispatch({\n type:'HOME'\n });\n authenticateUser(code).then( ({ data }) =>{\n dispatch(userData(data));\n })\n }\n}\n\nconst homeThunk = (dispatch, getState) => {\n const { user } = getState();\n if(!user.isLoggedIn){\n dispatch({\n type:'LANDING'\n });\n }\n}\n\nconst routesMap = {\n LANDING: { \n path:'/',\n thunk: landingThunk,\n },\n HOME: {\n path:'/home',\n thunk: homeThunk,\n },\n}\n\nexport default routesMap;\n","import { connectRoutes } from 'redux-first-router';\nimport { applyMiddleware, combineReducers, createStore } from 'redux';\nimport { composeWithDevTools } from 'redux-devtools-extension';\nimport queryString from 'query-string';\nimport appReducers from 'store/reducers';\nimport routesMap from './routes'\n\nconst configureStore = (...args) => {\n const { middleware, enhancer, reducer } = connectRoutes(\n routesMap,\n {\n scrollTop: true,\n querySerializer: queryString\n },\n );\n\n const rootReducer = combineReducers({ location: reducer, ...appReducers })\n const middlewares = applyMiddleware(middleware, ...args)\n const enhancers = composeWithDevTools(enhancer, middlewares)\n const { user } = window;\n\n const store = createStore(rootReducer,{user}, enhancers)\n\n return store;\n}\n\nexport default configureStore;\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport App from 'App';\nimport { Provider } from 'react-redux'\n\nimport configureStore from 'store';\nconst store = configureStore()\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root'),\n);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/server/templates/index.html b/server/templates/index.html index c9ee11d..d47f298 100644 --- a/server/templates/index.html +++ b/server/templates/index.html @@ -19,13 +19,14 @@ }; {% if debug %} + {% else %} - + - + {% endif %} diff --git a/server/views/users.py b/server/views/users.py index b7ee936..38c20b3 100644 --- a/server/views/users.py +++ b/server/views/users.py @@ -18,17 +18,43 @@ def fetch_access_token(code, github_config): return github_response.json().get('access_token') -def fetch_user_data(access_token, github_config): +def get_default_oauth_settings(access_token, github_config): headers = {'Authorization': f"token {access_token}"} params = { "client_id": github_config['client_id'], "client_secret": github_config['client_secret'], } + return headers, params + + +def fetch_user_data(access_token, github_config): + headers, params = get_default_oauth_settings(access_token, github_config) github_response = requests.get(github_config['user_uri'], headers=headers, params=params) + fetched_data = github_response.json() + if not fetched_data.get('email'): + fetched_data['email'] = fetch_private_email(access_token, + github_config) - return github_response.json() + return fetched_data + + +def get_primary_email(emails): + primary_email = [email_metadata['email'] for email_metadata in emails + if email_metadata['primary']][0] + return primary_email + + +def fetch_private_email(access_token, github_config): + headers, params = get_default_oauth_settings(access_token, github_config) + email_resource_uri = f"{github_config['user_uri']}/emails" + github_response = requests.get(email_resource_uri, + headers=headers, + params=params) + fetched_data = github_response.json() + private_email = get_primary_email(fetched_data) + return private_email def create_user(db_session, user_data, access_token): @@ -71,28 +97,30 @@ def create_users_blueprint(db_session, request, github_config): def authenticate_user(code): access_token = fetch_access_token(code, github_config) - if access_token: - user_data = fetch_user_data(access_token, github_config) - existing_user = db_session.query(User)\ - .filter_by(email=user_data['email'])\ - .first() - - if existing_user: - update_user_info(db_session, existing_user, - user_data, access_token) - update_session_info(existing_user) - else: - new_user = create_user(db_session, user_data, access_token) - update_session_info(new_user) - - response = { + if not access_token: + return Response(f"Something went wrong. Your github code\ + was invalid.", status=400) + + user_data = fetch_user_data(access_token, github_config) + existing_user = db_session.query(User)\ + .filter_by(email=user_data['email'])\ + .first() + + if existing_user: + update_user_info(db_session, existing_user, + user_data, access_token) + update_session_info(existing_user) + else: + new_user = create_user(db_session, user_data, access_token) + update_session_info(new_user) + + response = { "token": session['token'], "email": session['email'], "name": session['name'], "nickname": session['nickname'], "avatar": session['avatar'], } - return jsonify(response) - return Response(status=400) + return jsonify(response) return users diff --git a/settings.toml b/settings.toml index af68b3a..97c8b25 100644 --- a/settings.toml +++ b/settings.toml @@ -1,5 +1,5 @@ [default] -env="development" -db_api="postgresql+psycopg2" -db_name="postgres" -bucket_exercises="sharpener-exercises" +ENV="development" +DB_API="postgresql+psycopg2" +DB_NAME="postgres" +BUCKET_EXERCISES="sharpener-exercises" diff --git a/sharpener-admin.py b/sharpener-admin.py index 125199e..ba00c99 100755 --- a/sharpener-admin.py +++ b/sharpener-admin.py @@ -15,19 +15,9 @@ from db import database_setup, create_schema -is_production = settings.ENV == "production" -if is_production: - googleclouddebugger.enable() - -echo = False if is_production else True -db_session = database_setup(settings.DB_API, - settings.DB_USERNAME, - settings.DB_PASSWORD, - settings.DB_NAME, - settings.DB_CONN_NAME, - echo=echo) - local = __name__ == "__main__" +is_production = settings.ENV == "production" +is_development = not is_production github_config = { "oauth_uri": settings.GITHUB_URI_OAUTH, @@ -36,7 +26,20 @@ "client_secret": settings.GITHUB_CLIENT_SECRET, } -app = create_app(db_session, github_config, settings.FLASK_SECRET, debug=local) +if is_production: + googleclouddebugger.enable() + + +db_session = database_setup(settings.DB_API, + settings.DB_USERNAME, + settings.DB_PASSWORD, + settings.DB_NAME, + settings.get("DB_CONN_NAME"), + echo=is_development, + production=is_production) + +app = create_app(db_session, github_config, settings.FLASK_SECRET, + debug=is_development) if local: args = docopt(__doc__) @@ -45,8 +48,9 @@ settings.DB_USERNAME, settings.DB_PASSWORD, settings.DB_NAME, - settings.DB_CONN_NAME, - echo=echo) + settings.get("DB_CONN_NAME"), + echo=is_development, + production=is_production) if args["populate"]: storage_client = storage.Client() From 72a291b0942f324eab46ae083ceaf13ffdb30c09 Mon Sep 17 00:00:00 2001 From: Pedro Morello Abbud Date: Mon, 28 Oct 2019 19:27:13 -0300 Subject: [PATCH 08/11] Enrollment, Tracks and classes routes --- .gitignore | 2 +- docs/img/db_schema.png | Bin 290158 -> 256442 bytes models/attempt.py | 4 +- models/classroom.py | 14 ++--- models/enrollment.py | 16 +++-- models/track.py | 5 +- models/track_classroom.py | 9 ++- models/user.py | 8 +-- server/__init__.py | 16 ++++- server/utils/__init__.py | 9 ++- server/utils/validators.py | 77 +++++++++++++++++++++++- server/views/__init__.py | 10 +++- server/views/classes.py | 71 ++++++++++++++++++++++ server/views/enrollments.py | 30 ++++++++++ server/views/exercises.py | 18 +++--- server/views/submissions.py | 114 ++++++++++++++++++++++++++++++++++++ server/views/tracks.py | 99 +++++++++++++++++++++++++++++++ server/views/users.py | 5 +- settings.toml | 1 + sharpener-admin.py | 6 +- 20 files changed, 471 insertions(+), 43 deletions(-) create mode 100644 server/views/classes.py create mode 100644 server/views/enrollments.py create mode 100644 server/views/submissions.py create mode 100644 server/views/tracks.py diff --git a/.gitignore b/.gitignore index d61ad75..c97661e 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,7 @@ settings.local.toml __pycache__/ *.py[cod] *$py.class - +populate_helper.py # C extensions *.so *.floo diff --git a/docs/img/db_schema.png b/docs/img/db_schema.png index cec4100a65935cb218fb4c78556f6530f3561592..b7ea3ba5095ce4db40d4558637ff92569d9de004 100644 GIT binary patch literal 256442 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
Ac?*Du6{mM6AU-1%sS$tqV!)4MAG7zv zPU>CD-`D=kX|kD;NSws$gMhSM?1VsJe*$**_rY@|GCD@C1ZVs4BK`ci9i%Vv z^P^DsEnYli;J{TZEV;=pAy74I*tm1qd4`Ch80iX9Ua+HssKEne`7ec&_n%dUUNm;> zSkdzL#j!TOUm8s@grYcxwv2XRZ&LEzyZ#(;8U%Cmy^`lkmV5okHgA!PlfikosBIL9 zAzsmHA>+3Ji-vPyG1IG-PSyx3(1HoGI=LFxkU(&&=nct_{L_YZyX;$$yrs9@&*K^R zU{{Z{Ou*G@zieirv^uT$*6r>9x3Z^F5*T{Jpt}O~FDg6207u-03zv!XT*q%d=?eb7 z=1ZT&B7*4O-vNBQWMn-WXAmcn^B?1U#%SF8+zB}cd77LoURtC~Tz$~%4|BuP zh1hUy_VDQ1rORel*9l_uGB|}Y`b7o$PMvy%gmdZ7KWpaFlOTc%4i4t-xVgGUoF%-a z3~kYa^5rop?`W=>lL`<}Z=e^HXSQ>GG2_OjraTu8dWWVhwGOW-2pADA?q#I97>x}x zPYl{PgD76;)%D{UXHYaG%jCKzG{PzSh2K@wWW?CBvW&vIWJ0@kJ0KaL<#-%%M_r&j z=oA<*1ale7bl0P{?S#Ma8MSM-+?IR2*hu)iye?+%2~YC{&tex6tjJnX3_w#JqpJvc z{*D4 zSV!k9!P5UB#+xfvK>dUS!1C0e>+eW*c66kCLHf%)1Di?N2CTfW#kHE+tYXb_uQ5UQ z-~;JN!>w$P=M}vnOA3+jrB(Un5BVfB)~rxZJgH4hTFEgHrY<O%8>-zAgbbfuch$<-@!aDVZ{p15A^dc0rXw zjYkRVYYTM+vbo;jHCO&mz;c4Ks=?|#Sny1Ig^EIPkv>z?v~lk<2t%A9E-OdhYwIKY zi5QBA9_RBCi-93SemqFYysGRts`uEn8L1Et$)|YGH18;SW4U?^CZ4dqP4B7_K{w6WIjMm_RTyUwL-p*LA8}RBROG)2Br?NO37`NjwbKq+U9=C`2EiS( zAQ>DAZEbekB51QrdP=1ri@{2~il&9FpC5{g506^Ak5RT;I;X?Jly=Cn9zPyni9Rlw znP)yKkfB@2WaJeXRV1AUp5R>(n&u6ePrtNeiOHBT9x3Z@1EzBIP~$c>l)$Z@nKcMw ztjF8Q_zEVvtq(_3)RXo%^+}P8bF}f4&@PgiWvBt$(DU#XsSIhu0)Q zc&|T_l~YW#<0D4-;FdGZ_~wn{e?CV$8ur&}aF(@{f7k1k92L9*{j=&zGnE1H0pxPP z*xYHrih=($>2$mO<-xW4?)>%r`c@i$e4d*C)&TDD6JC1PcdQ1&qjikC;m=PQrfPe| ztHz!ri+_#T6$bC^abv+x{xQzb{En?*7lfa*hNZ_No;S58Gz9Vt!CLLmp?XYXYoA4p zu;1b(YWj=04mNiD3inxeG(gXIVy9zbT)({1$I%0RlWvQr`X{J;MAgsHzqJ>n!*Bnf z;->9lJ2}O8$UPE)TrjWfr=uhmb@M3W$m=eTlq- zs2?ayB6Hb%GcrHI(AJ2D&BGsvAV?nqPOO>!zfw;C8r*sG2g68J`}WE51CGP(U%a?m zqSCYH#}6L}Q|U)dz}`l+ezpH@38=};>bufXxZ^QFvEM|2wy0A0LU`tTPN9vcX%w)0 zknwM#lsIbEp)`LCpO>5}K;{qV+#z}`Zg@;)5x4Vr7106BV>9zwAF^mWeKLyh|C1mx z-AGo&qaOv!f4U|vJG%s=a(2`)fky2Z)@j35*87T?XJgPw!Ce{K4Y-lma!sp1+-AN?~Hf9;o>$%PDKg9 z2{b<_2qzC!ZNAxK=mI?@sytyX8tuoOyQjkPfNX*@hAD+vo?HfaN;l&-y>p7QqiDvT z)zf}>t}0_@Z`vU(IgkRumqM8H z)&6^XMk7x_%rJPOxA#8Y5?b$AXUig?z9q%2pA4X;w5UjL^pLq6pR(*;79`pf{n`TrN_=V8%)k*~)A+DHn%L2YjQ?LL;C(GIgzFjn70v^Q= z7vA}8pGV71BoH;jdye$DgLJuH>_?_|x@^!B`36wqi(_afiC#bnatUfsJ-y(tFhl%Q zYHA`59`tW+x&=T0oGBnZM+<3#SkS;5WI+JM0I^;o)7I90Yz6tr^&Zd{Q+vIfsWYCW1&%2q^m|`CY*Zw#& zGm@SvzLct*=se#4Px2TEh>=76D|krMzBai+XV$An4-~5b6cQz_#zzYa3h;&IYrMwU zS%XTRC2V)4tz)i)d=Sxrnhd-i-2yU~>R_;5D6i^mGEvG*q{q|58&c~0)=jU_R^(~!;4YtjB|Y_=QOe@9oPoXD~YOV!z~2{ z#sy&~s#}U7$_#YO0(~@N#)qOJ_yznr^hS?Y$5U24jA#0BU{tf;bzP&dY@JTS5 z5cE}enslhP6+9ZxJ_p`=sOJyf;k%6W3VT%HYP~4}ksVR;0T_^1HGB7-diFVewvS)u z$5mpH-nAmTRhmHPW$w4xP9vL)u8kpje(hD~`UFYVZQQt*p(Vs~@Rc=_moM*k)EZ}o zv(L+;AALpaS)}wg0=?3b5;(T^91_K&TPZZbbk5KFM21F|)4=b7P7h`D2qPmD0^g~T z6nyN4b)1Q3QHu2HZcx6Q%nAutIhum6y4D)2UE2CEdAWg%GN5-|1CXe<~dia@>RO zyloZxD9e-I8ym@zg||1O@tR?28H50y;Sb6?*1iCsso6Xi3z*Wsz5=TheraSxmjoJ( zmX!4(p+vy(VR+JV(^eMIS$U zxVg#1f(-{%Fkr#FA)BcSfx|6Y49EaQp#ya`|LA&L z$-;?%iRy$zgoiK%GM$l9d^XJx9;Vz1ewX_X9*kxT1fq%dWZRZ~;0$O4_`Tt0TRRK- z5VU#1pS*t`2LeHO>VNEe^HsV6v3@W8^!{E$WrN0z`-$M1`4)Z>FA`$Up|VegVswcB z%l8MW6H7aE=-}r3;-15NuYW%=QG=P$-K5TfQZ*X?bJS0g_QY2vAjT-JzyoY1b0x5S z+?14=CdS5aZ)jf`J3y>t#?T^MCgbH;AhA*fuOIyX=~2*;0b{*Sz2%oZzHcUzqFP#Q z%`3~x35lU7RKT#RC!?@$g|k77<0%S>e;W73ni7bcl8L*W6cxXmv~~S8=?P%3EJH4vX0&lp#)X%s ze*2$iPml+u7?zfoPdWRXSY$u$lg_&{7Zy+c@7`a!a}fMcd)mIa632e0(qWZffxaT zhP1SB0~8FC=)4Q6nXHEoaizd{_{Rk`iHt}6hK;*e{>aMca~WAiImS%PB4+0)>6v~a z!;s6!E^6Dl|GOJQj8Bh;lMs4~1i&bvW*-u0M$@r|AH~UL=>YuKt=8$eZnH(3=w1M6 zfNCQ4?R)p(!%-vGcj(t7bBB)h^sE<}%X%!y^tnmgSPUt6`%GtG%1C_Cl4FjVdEs(L z{uR&!L}kK-HJ~bpZCSN^_^?_bE8!SsQjc@E&vgVZ&`?(|sDBKSMFC{a%-F&QU$6UD z1MGoAN^2_<-d?8t*&&lIP%(&vX5S$jJZxCnO!%VRcI#KJOiQ|&oNT_yBYNs-(rUz( zQam>JBqP5(W=z;Ozc`P$5^0wRaM5YUoW+YD>ixB^+Qn++V~oIZp9|2YFkebl*ZRLM zQCJFQT(q~sJtuuLi%q>2A5WvxQEE}?;7NssBP;zI=Dtrca1$Anefp#l#`Fvxd>k+E z&ScdA;6};G0m!$wFnCIkGJsz?NXBcDYOVZ@*FJ-aiGTcva*Y+MKy&BMhva{*4Oh$rM8Kd_&iQ*YB_%!KjdQ(nDFxN)PWVLLVwGKwK6Rj6!hx+XLX zxb;ct?xio zbk<5EIJUDjv$DF)61OJxX7@UW4{2nk#2E03~$I`^-B)Y_M? zx4dPZ>wj+)b^G;u+9LYFu9ioARdvIV()wY=)TYf=I6>kj00k19uXLVVh}Dt5d0yy0 zGu3okvuC=E%9z7=fjBxkqFNGa?RJh!4Z2C^+1l>ylQZL(>EYt}w2OQe>5sw)uyA!# zFT$Cwo?bOT1y`xFMl`Jmml|m}RsfOhRtzt#5Auuguh(n%U>- z3w9?=tNuS&eZJAgrbz3v1UbatWZL(W{uWDnhcac1^Z`im1|Da%SH3XSr#)bR;+Glm zLj->*=nw#GI-8BlBYr*T>gQ^IoH|N;8!@5^CNZdWatQpeO-m(EV|BN~Sl@Dxw{61# zz*;krG>LE9p1xzBaqJ01l%iY=yU`QlGM+qqNRRe6WzmnXDue<$S%B8=QgAFl@lw`f z(C1wi{fOf^@sVNOmL{QkbPa!g#ncJZp98)Wh8o0$iMb=#7tc=ZURrIY!y{x~EBcK$ z+XlgZv854$&*xfxw2-N&`w1x1dLO?s1_-?i@R}gpn=@x|f{XM%n{##%IP@dAe@qlJ z!Vc#h6Ek7J-(mpDzhII!Y+!w)p`KnpGdJ{~#0j*%bZi=oF&{h_)aVLl^-V_xYKB=X z#f|MPw+GLj?Mp&;6HH2Nc)SOvRVOEKNV^+OY79w`b4L%gw2Ya>?IBOVFa+O&L*^z? zd2cAVePD&K`^_ zHH>>w()0OfONhk4<}Lsya9eb)95rUWz;DooQnXW=K!&J~^F|OFA8nwg3FgACMW8r$ z%qEF!3+BxeT)%Q00gO4ViW@5aFZ!+4HoHjlVFab&FA~*rlicz$yK8|{; z<%Ir)5elSqw35`@Y#|7;dDW|L-#wDs0WEjIR=y9U5c@9$Ri7nQJIW{p?m#Odfq-ff z%=M*6r7rVN5bn`9k>?@Sg%yLyCYS+F;LJ~+oC%-{`tm&cG8U<#C{O}rvmK-;R2sDi(yvUpWe>-Zw!0*vGS7{7$7PVT~yBg z(SG}f6^xyDdwD^}&mPnr!KrC*;~TPy-l;S&UXF*Mvn|@ab?ZJ6%ghY_#MX@p{7zER zOLk$#ePq))2IWj6IMIw)+%Xc2-G8(WMFhU3zt-Wf&@$t@0Qy@;2|>6;V-@; zzh7RM=CqQuso4J#ig@8G@R#ie|I5ZHEm)akNrg;w@J3CME+DC%%Wx zAm8uTo{_q}wFM%n+S*;A6@kzG#l8qrRPph*n3N!D0)_@l5K=Nir&QBvE|5RvsWqyp-gk<=e}Q68_-Yt8yL~`horum%OAf!#^i!!z$}HSL z7!K9k7vNg7{%1{wCW%%+)IW_EsU{#6i=KIL-K``z%})aT4M z2N{P)tNL#A?a;l`K(tDaAMaU_gna}{RiOqE(kO06o`toHIED@mF}#tnF`kZsj6Ok2 zcLkldFfL2+0+CQ-XCstV&zTnvQqr_V-jI`Xk6v-$KtY@}BK==_Wd;xohPl&Y3Oim; zof4LwE6X4+=#luuoW4{OIz<4b_l?7=GkMtYsbV)JJRKsAkqPcksd6k3SS~RO}8Phh@(g#6*&F?!9g9u;MKFAH?(qFzD zGiXp5PO52e($(r88uafPfdKyRaHgbU1zQ?`NT{_lmiBA+_R`ef=u0-T z7TupK0pvy6e*a?7rR56+p|7Z+8+AtAmh$uFa=_%r*E{GM~S5+@7}pF zKSMJCl3;9P6h1=Our+pU9!tW%UCTQr7##5x&~MP|pSLpC-{j(fNmB-2KXayi^7yIP z7Q%89k)jNpH8z4~1NyQ}_BmYw9`I^*CoIIu4)3{xoOHxvl)0POl)y~&iEO4C!DWfG zfahpDfTrLk$lLr$3}u2(7x?TRUao9s4F_94oTWOVBF_)(V|OSQiCV^X@3ab+8s;sC zS2?-4&g<4qwYFweuvR_xzjvwVZru0>jSrPPkO52Ix^NhYxbmk=DZul9vTbBklZQhe zP2C9yfoq5}{Q`j8m#GJi9PyzQB zk8Uh@zq)z`jTiiCjnhDalECD#f)k-VVG!|I^(4x8EOyZDLE^_B8}sJ*zlv)mi}G8Y z8x&>@>W&bxY2AQ=SOi?04dMS43IOlCd4O=Q7zl^_;mJfMZ+ViDVF(k#D<=M4^FjCB?NwKjBb$8PQL_+$LW9JxeZU)AwgZuoJ?PHe@1eGWidtN zeLK>U&l|!{?ksi^lln;6$f3nuyY>{Ca1>p($^L#c>A?6%D)wM_htne(33xL~_g6=T zXe`Uc^ANL8Uyr)vES(}>f}NLUgc61@n@=k$}P<0wUGT=*Ld`DIo0 zQ1OF7gakEmeALPo!?)W3n89Z1?UQfMVsV_=(omumm$XEml^gWIqeF zkne>W+xyF*z@Tm@O-S|pTEJ(GzHe&cc6c4#G%{Z{J?^BsJC5mu%wSQG@UK zoUWhR>p^z*%xgt&%dnzAj{dt@>EqyK<-byn$lrjsO_4}a<+tElJj%+-dHU34(XvlU>N{PnJ|N51xt<+qeJ22^nJV52aSwpc1sRr^OXi*4Z7LnpZvjdLGpgG;;$unmxe;eyvS4R0-Q%WC)c!b3Alc`+ZS4Jo` zJwxr@Y)j&*y8eFirlI~{U-(`itvo#nqmsI=nr3Wk*lo@P5M+hpx^--q=zWuzOyn9HwH0BXQ{*TU>nFj-CMoxa!Kq-~bZ za<(h{qMZ0l;rK!_1{UEp&_HaMmC8vb6wJ)xA@Oq&CZu?aG%O@Y>;TAsx_#7?nx;4@ z1*3K51r%j#Yil?7eL~xZjDHUu3(uGP#sfw2#k(@RKzH%|{<$g+JTpmAk;Ath}s`LnuaAGXO!gT zKC#C8!LLQHxK-MOjT<>qMQV|MnnDk4;uKaR6gmyB=5x+q%EaxM!J!!XD7{I_-Mzy(#0nEzY z!eMl81CPsuAP1h6ehmgIxW;Qo^=_X2y8=&$|D{vf(vsb2;{@?IzaN6;Ju>TydpR``?Xb>p|r zzqa1V3HYp+vNA_V&CJ(mBUB7ulfu& zVa^Q7&Y&Qk9d?p^lAq}G>sQ1CLTqgF$0vPi^JvE*OM=Yfmfpf{#gBu`;7rMh0=lgb zGio`oO9J@J$&*uhU=t)s$Km=tyHwYuL_5&RQtp(jTj1r@z)irCgJQs? zmv&V<~owex|YMi{(RC^X8 z(&Sq7pIw1X&cL7=WyIzo*(k5+e#OGdF(N-A_Ewr?acgBXx&9B2u$)Z4Uq$9#jd9>r z74P3~VlF3t0{nXE+xK1*gjZU35`Y_Gt^Uz@4&bX*Ie(?31U8KAG{j>WB@B7_el(+c zeg-0w+2tW5K!jJNUfi-l)3%}?wnoJwc!j&Iz{%KXRlB}A+ z-FMNb0BLM#4#iPgD$KEG)!M03TbkzU9Cpv#zv)$BAv}dstztCGBuIvI`@NsP$sbNF zLe_&)Lg65&w+9aV0Fgt-s2y~^I7=sMZu%k{8$?a8chBcPfSTRCP;1!Gppyhl^3?b?i}4!mgBkes$p ziCWT2dYfqkm!@n4{}LHB20FJdBaf5xa5!Os60|*oaFedR|E2;s^f>l$-VqJabj)Ay zCdy~*kp`76kL%^GPQ;+Equ*&AnobDstEm}B6lDUCdQP`bdDj6?9Y=v)(Xhal!Ygq1 z^DB#sSspjT(5b5-`kn3i6`a2Jc}9qz_RRcLQsT~PG_=|Ft}|q8sRq;7^19gUeNhp! z8G?YULS@7qATcle)!z)&bBpmtD2qv)f)VIpmk4DdaLyVZ*hEjoO+5f zBYdHGDw32ZSy_j1fJ0Sie|Z^*A0rnM893k1tgD>p{RlCRnYCN!7rF8xwk;76_Xb=7 z3WU-itq5bYtaE_V`blr`nA)ic28j#`EDE}8G35$f8x7f=#4jz_z^!2hf~IS*uCCzD zgPcm(g^<)axB50}I_ln>fH)xvmLLuS0Ki6XnBCo|;rrWMF&rnljVFaw z>_q}Kep*{AzfZKCQb|z&_nZ))kf16B!p&LL-`-|h?43IWW6hcc*>+V0h35OJOb91@m*mG5pd=|HtPA$MOaG2=$TM8P!Z*20_UvB|N zgz;T2MR-vCK_l=lxz{tTt(%$3=7Dh;V`De^_?R#)%2)#VlnGp6s}s%pkt2!l9blp; zAoLdHADKi{C4o=~fi;j-m@k?jX4!*#E~{SdfwXgyQD)MIt>E}@+~{$BDFCQKqD{A) zh>HuL+#wv&EI_apZ(RjeVkOpp`^Lcqz?@J>#lknl*8T!&Ex>vZIX~N{T{(Q0uU!Lc z8D(HVLcMn7ik9U-9*tBk%nG)|@foFZp|9OzrlxN%M^=Gg0F%eiC6rI_Ze(z3aa8y; zJeWX&q9e=bp{_oT5k$lvms?xu<0b?{^n2u&T4uE2aA7I{CD8!CTGm3cZ)*9QDJ|^8 zg|I}i?X=RAu?_XOq2*t`_(GRcpW%Fd1WmB2`G#V{BY=L1zE-J>k zY%;@0H36o~ne?`;n2sFVMx7n=d*UOku_uK3LMK^}`1^0mR{dKG;7Q@-dXkgN9P!(O zGmnf~t8%Qs6~7WzLutLHp?5pt>=FL$QDV?y#_` zDhseDHE!b1qraL7Xq&C;mxrP|r|87r$qQu|K`M=SA~tHx`xY-)fGP1=%KHNZ zmXZ=yYa19C2pIB`gJ%n&8|Xt2Qm`g|c>n&Jp!+`>=xWJ>6x9SDPk?G*GPN*~K#mr@?SZCk3alaWa!h^Y>Rr_Y{6K2WPu zwf)kiFI3FRGH`7y%^!pkOvN!A=gnI(sTo7e3NWJLo?-=e@8UYCynUD6d}P6*4oy5T zI<3Ew+Q^mgp8Pa&zgLb)&!4;ML}kx7v@9+N8|o3s@uo-1^FKjc0g*zw(5;8bp2)tD z%P3tzS{O90aeP4?L(M|1!(e87y@l7V*XRoC#%^OLb8iKTy`+T}7Wg>Y+FF~X<>vPC zbZ9cL*9eWB>Ev_?lVBWQ=`y0f{*T0^-9CS^iLkaYoXVS{e8`6uST=EDqRC4FB(qAf z!VrY}a4zt&zebcYs#{i;>Ag}86q0QhAm9c8`jsbU4Wi~1EN>6BIb2ntZ-n7KOPS`o zO#|r-yPmF5d^#o*L9AfzQu%{ou3NpZwz1$z0q&uE$#R*IX2F6)g@Nh6XA?N?j8pE=ApVB-^t_0$B$B(wt8gYl#e;8jl-7Q5C-Ki-T=B3_CRd@=igyP z`0tb#fqm9?XdcbTSxHe5mJOe(EZU#IPm98uC4Kak&40C1G@^dgab|K%P)k;skzkR#6Q2QX*REYLQbSsup946(xeEAPU;RYjK^L+Zt2|*dJ z7$p*pEw|t$xg_t(j*3Iu=~gMNxeRo0SH~p~Q4mg2hY-5_u(+)i=CVl=(dG}BU+X!- zwu!g_@){k6Khb}EtyFOJo?d;C!dd|OJ$owrfda+zs^d2EsGU1A_$$cGe*XN4`t}=Y zS)ML;{9{SU<)2GQ#Dpwz69a{*6p`3hl53|;V~DOZt2!`ShRX(eB$c7*dy9~U$V*)T z6zti{g##guK|zWkEYH~nbb@WM?c{=1iNm9s+@umFY9K-0*Was6avLn9%Odx&0pQANeN%DN@?4NiaO6 z{$=Tzia|zm?##NkNb4d9YQ@h;p zj`FVg;8MI&)Rv3^WL7v$kHhos#S3@P8DewEKeT!1@@t5k5DYweV!07M20+zlr{2GR zpXFK0_aQ+v2x~17dL}0ID7tx#mN>mdsZGPU$y2BPD=r=o|7A;z{2y zSIl%FJi=R}@BR}<`M{7|D_55A4az*wQBtuq@aaHW(yux;YjF~xHLJgV{d}K+_Ukm$ zu{Au%v^9eVpXa{?7cJr}ktp`Ug;b#eg6IHj04MwAxQvC<2uNn|6s@gS-yJkqq%aG` zNvI{ZOg}eR*S%$r_e@g{z^bXI=fD}j*Z`{T2@O?i6x8k{m$bzXz+h8HC&OQ-uS=sa zQ;l9r|HV&mzo-u3wDHZ2;d*)!r5D z66jyF0By&v89MYLz}Sg_jN(w05#GEuQG+om3ci)kKw!>UicF(&kTlh}c1`I#c>4C- zw~It6{%EhZpFkfk2v@p5`VdoPd~(n?U>=i zXHaMKJtZI$$};50V8ir$=<}KG?QP;Q3~nOc6NC<37+p?rNr^y>aE(v~;EH^#{eJy^ z9XeQH%gO*IMGnPi%>^$xlWr73{6=>Rda_xTH!PhP^z?f0u3gW*nYt9EAhA}K@v)Y* zkD0c|v8pzSLdg9HJ+Be}63mHr#<()7G=hwGpU@gNG3glD1EQ=iBio7;)ZR~Q-_*#l zU?adtw(ZHoLqli4mXR49aw@4ektzQH8cKQSIt|wn(4m6|Us8q9xgcjz+aAaEyRguU zSij7efnW&RQ$8cQE9s9*a6`Jfdx^{W`M#twA|F*21P3f7-L>CcU60cX*>PJ{RfTM? z`Q~y;EaD}>iBkp%yurx{<_;*Kzww^lqp^vd&r9a;>ohBmVu*FtECC0Anfc+ntjL_- zvy;;7c14DB=gfKbc5v(U3bgCo`U=-WoA5%?&TwhqOXCOg83qoV-)Fx1H9wP4=vq&PU#5sXA*efFO<}{!m1O^w=_3 zEGjf~fH66a7W0P@bWm+io;+yaz#UE59b}F?AX*B)#6cdXF{1C%g`Eo8$rFfE-TL-@ zoRM*eJz_}}E1aBIx@OgtaZxp@^*(*3{a(ggAa{RqdaqV&OL&@rZFWD~)QkU-%o@P6 z*w72?7<1pev`d;;-Ay~0BeV;j-TE{D@?%X9YPlXFu4-w@cz0qxy*!fwy;W5?n8%Zn z`rbsn|Eav3mJaYjzBG4bV*961>zEua0--BmXWh583Gf>@~^CYX6A+2?xPYsfuW( z`DgljgE?;48tKC{>gfr?@95=_4GOxAB&f4~&indg9oYOa>$01cM?qhT8tx=S1TSvi z8%j)oLk5TuCJxt)N#Oh|gk+Jr|_NPlX z52X|mz2LS8Dr`FMo3rinA)@n{KG8E2T`~Z0$csp^8a+C;9%=p~WxS}ru)!&e;u?0K z|BwTpSPy@8{pSb>l$upPH1D1Zg7kMCN}1PasHS(Eh7`^heTnjLI9UK{g6^F8^VPA* zU`8Dn89Q+=243Z}C=)>aK>=v7VEpnNev>~1PGrY|OqR;aB_=5gZRamJz}}D$>0bDH zaN-MW37vD^ecBTy)yJ5cMn(MtCdT|7OB^3fZF?z^`COqtnjeMTFTo`L_U6trzweG4 z2(m{{16-9blTV3O{QUXBg_kZ~q?6VP{&!7DJ2k+@Y z2fD@Ae6(4#2!IM>IXCJs3kR+~4Jk3)#H)IFzKXIkYl~U#?bd0BJsx?Wwj5Sr@GpcB zA!>6+c{pInM)s+r*%S;D5SqsA`=Y$$*+lV&(o(J~F+9QtZKO!L(#a``s-b7k1-PT( z>Hru-ySG2l)x|{^%!2qQwlU=OB}p(AYW*sD+jf#Luyzuf@8->&dWU1b&J;lK!oS{h zY?csi_U_un5)(mXf@41VRlqKg3GS$X-Xkf6;{k$@@7xI*$O=Laen-Yh(7+tkcWA#` z+2v+3E4IjNfP$=H4d1s95qelih#J~!fO3Ad15^DVFQ`n=<(H3Sr=VaFjTnIn2hSV? z5nvsgf%HzSPPcD+>D-@x5-bF-ZyYHk60C&)EM;zPwPXQc!;p}o-rTY&E_hWhN5q(vbi+~z%NGBSMY=4R;fCKrm!ZV06J~FtcothBv4x(yjS9LBA3zR=^ppruCi?J|BK~Y~(>y4;Bje#jm>bk5BX4Uh=9d6dkWGep@$GJI9#GpyElF;*O0v5}PnTQ;RU zcrfYo9Az1`9I?hPc)aaGm0l;vjEf$B1!>0$f&<39c0Cbwl7$7VG}q!U%w)aWUb=kq zCOWXii5`El2Z#|KPAvD7Em2Ru2k2CsTC!6yAS9$$^!-DY3m;7ocTpR8D&y+@Lvf$= z)fQN%6&~3xVTf!QYB7Q)tq+3|Bn!sqX79a2xx(XP<`1I{SFx@>CEnBd52(Sbqwdfy z!v;qixt?GOi^CyIy*bk2QNCj+0;Ahw=58Mlc9jed{J$=ulHz0I0MZ)?GZexAfLc%9mWjkf}$#QF*Vj8_XrkfD&vjTF4xz{VN2a4W@h6Ly%Wqr@n( z)Z+9UlupWmWgNpe&K=#Sa6-^GG4_JUGi;#`nv^?t#tCng;bnmLXFO@lOK|cT)P3rb zB}Xn^{0xelRe=0vyM*G0CNtGfSc9wk`dg&pP#ydCPo$J!DC8I&?zk`}_?AACbbtK* zd)lK%K1}N0{{Eb3=!ry;t)EQ3RHh12C!!qp8Z4);nJ-rgN`~l2c?=#(WkzW|(Ab<4 z1&}@cgucCxH**LwA=*bIvdw~FX09xrdkcl}*m*WK0*WP<*fxa2jO~_eQyy}B8l@uz zmN*8-v3Hwy(i77%v5$`4=$MhKJwK1jL8OBx!QB;>SFuwk;uoWQ>O^hQ6xDg)p?L#N zojr@dZe^>qQ^0Rn`^~bEM-x)G=X_S?QxKRhy}5B&SjVdxw=zr_Ht}G?AG8;td;>?9 zr`f{dnBXaahpSd?W8EUVaKQ|{t|FIV63PoYTW%)bZ(RHG;VAyN))Y+WlL)jo zGIWXzRS<)zW!PTrtkHdPeQoP8!&dR_GFes2)(89VX%3=}NN!HwTDWaZ_l7Ph2Bmf> zC5xao*g`0ms7NG{yjRSoTxYbEB3i=nQmtFJ?UKcyb(Jk-Zsq=#Smy}B;|F4@OmPge zHR0KfP2V?h;epOM{}eT@gHHoeF|7f`Eso)lQUOsQ_mi`^1T!ncZ6l$Uv0k@)OS?yvM2WptY0hU3$_w$Tx?Apa}lj*LDw{QQE z5bEXsfKrVb7tM?N)8i8oy3U(B_r5&^?Kx+|HLXUMc=Nm8s)wI5+J@LsS>O<)*O*&K zZw5SQ^_Ej?DP~1uZ>c-ycw?BLzo?ke&oS=a9(@)QFjjlYQY$$2D zb$OiN0?R&4j>@ymNXA$pur7`CR5Sh=Z~% zf^x5{H`I_?Krd{7?_a$@U_7$)42}s@Y6CR(tfWHGvj5T8xPPaK1LqrlGHpdj%VB(| zcy{1Ih_#+P9H}igeYarvFu1n@+C4A z78cUN)9}L)ZU@)VpK>xG!3(Sh%!Gc7rrc-G(}FF8vZ!On%;-NT0|dU34NN!os=Rw z1Z;9~09BI(Z(L=>dW?rDDUcNJP_s@?WfK8@3^ehm_Ilg|hApLOWqO9nMQG2Fem;5f z6ZtpSiqV;zi&5z5nI-|Br@SdUc>U|QZ+MdyfBeXBm0%74^U3lmYLBeqTMa-DhVHiVte)7IM;| zL%G>$g0yCNVDu!8uUJYceY>>dEuDf+R|wnxfMzYCN6Y9Dpdt50tiSL8`+sQMZzAQaM$=3*%VEvl z+SRLr&L%SOi)aekO%N}Rt>8(KC`Re%>_kV)=i{27spK7`{aLB6)^p~I(j(8+L6bQ{ zY`QU3U^@rdAUF3AFkHfZcbtteo(V1;&5gr~uK!zI97k@3HvdDSnb>y z>W-MgQzTqixtHnomSqxu^70npG~Meo7uJ(lNj*Tp8C90frZ8R<%n$GG<;ye2j|W;A z?|YD*e&hOe%EZlw6-AHX*IJn8cMsT&#T(vV^633Y6)hTh+LQoPQO^qt@2<(#pc>4N zWnh-E*xQ-^4`**4mUG*^@!sYTN`^=!WY&N(G%6V~WFDfyT&4`Eq!eY&JS0h_C_G9? zG$TWjM1(XO3YAEuaeuCQ-rxT1{T|0Y_TKj&&+)#GN8R`Ry{@&+b*^)rOYoN3>w#9^ z$R@m>XQm^EPg<>M7HfE!payEL$u;UeQTfY`#b{4WJde?z(~JrC@Gz!6j#w~khgZjI zXa1uFxW4q>tE{YAjw2HBN9&F^^kmPCvXVef1SHvRkZxpWm{jPw9yu>FBT1K0I?ryqLbcahGtV0Ptu#?6w-_Wq zQD_pijw!uQGqAJqmiHrNbuhJB?xWPg$unu<~O&mD4wiO43M0KB(QiCh7jJ^nD}}&V$_A2uIlmh zOP>u`kDAV)u`cM60Inn6?#sW~)#r~cs#B(TG5#jBhfHUJ^_g%Ml12kHz=FRCH? zQKPQt3Hy{&C zl;Si_<6rCO#H2I;>*1R}jZxm*C`{=cXj0tLP9}oVB7})bwwrij{=$Wn<%5 zFEXD|Qp!kd-NoOu3~A3Y^lE8hvWlk!?gTMA6~{EbJfNiOgsEQ9m+7rq(@G`mK>BCj z+q&;h5R?UDoaj$YH&XarO1BX%L5@fA#w3kxtA5ejkG-ME%5DLe~4P22&MztCPMem3w327CU}mZ*-+mI1#&G!0dt_h!h@@V44{5pF?GRZb=tVM3f!-t@!nuO&j{&KP|%}+}5Qyn4Z zc2cS!GOp=5v`z}8kRaI03*GA5q zHR~s>BUs2BNHb`JMN>~adOG|IV&d;CZUxnG75Q1hhk=O-oaRO4S-MKGVVe^@1X2q1 z8Mhk1N=X#g;nfl_qz~pH{1O<=EDt-p`N*zNsdN{4N2o^FxRQb<2?sD>8i#LDpAN~M zs8flC1j^sg*LOaNEplXyF5DNzVbMzm?}79+)2W3cu-3t2*C*G~+ zjAU(#P>loH7IwDi{7bMciDfgGdu2PZ)l53kEDT$u8(dg5R#uXiJDOf1--4W5BrO=i zz}r=6fQe|P44PhrJ)ke4>X7;5&ERuWA)<4Ed*D@&2nF+U53Wc!0KdXZpt3C2iXFLM zzdni0dFZ@y!LQ-e=N&uhutDf=C^4x}bp$1;A2k4`W%!2DfZIQbu3c%4+$wLhw-h;l zXg0ZyWvcP?=HxgbMLytw%PJGB8&|FrL*Ss<*V`1(eP=(l{gNJ?bpJkW(vAEK63OEy zPpa~}HhtHLcD8v(Zev83ecSdVXXW(i?%8!p_Uk^#rsQpNe2T=eX}6S6MO?c+cHFo> zLwf;hJZC{!Tj*@O&*Tf#BM9^W2i(&$2~9h4YxWT(wZ5?7K;6wXQ>ILT@g^hn8pg&b zn!!j`EkCE_upF-Gm1ppkfJS)@=cm^h6~u{XkT$lO+#cWwb9*TEo_O^#E=B%9S9=3x zE60yhr>c4hqSoPF!Pr5A)-b8e#3$bz)qQqhH@|--mujZbPGbcU6f+_>vZ1iP#qJJZ zi0bA^TwGUqc_)Mu92#_WDNmm|IXlCHhel0so`%OlW@<9oq@Fj2#UB(A!)oUt<{>mV z+WdM7QFJ$Tf9GOHFm&)>bT7wGTd~`QSEBNA_ampGNl;W0ob;co|IZFy@RHY^)jhm1 zh0azX%2t2Yx%eV;34|FF@6*W}m|()7Zdw8PO?#=?Eq`;zopI?89<*$%B2V$*fz7MC z-U|$Dp?*39%bL*z2m43NREoJV3_IEw_z>YNNUxY2Igv7cCMq1X-?-MxTm2~UK2?N? zh3c?j>)=@grU*-e(Zz4h)4XsD)THXN}%5OPi$=uIOg~8d`UcDlJ==ANSVyC zf%U#z3>;;@*qWWyfU^%tIXzj{h+!cwt0IOidgQKwn1i?w+5`~TyrHMnGzCPF?me2N zg}ClB8Fl8P*h$JgO!6mkLc#l30T{XbvVi`_Dl@XL2Zmn0>;NIKB?U&cxa~}U_se>T z2OZ~^dvNK*b&Se?(4y&)F;AsbqTA&8e5Eh{l$&Nh&NTc<-1GEHIG{9Z0Fw{LS@@r@ zUbk*qRe!k^9UrfpaJRH`ahRVhd>$zY^Ox{BtKx(?eroC}RXOoKBtO5(2bk#4`ouxQ z_v~4eKvr?iSa{hJ04Ju0MeXaO<3KB zq5eB}L%z_0#FYRy+ZIOH6`A3KF@F4q*RM}j_mGEi=yk#JCTe}^J#q$JETlkv$Fm{3 zy$U;6ofdTMfAKi8%&#MFXzED}m4(MYRU1c+4D^fQwr9zvF=(4mhB6N$E1oq` zDx9@GLxxQC{Pu#pNj)F^okasCY9AN~#|MMD$2&}{$pqV#JCB;kB;vOB`%peWSMny3 zhJB+%RgETEbr)(ANn%1cnm2TK3Ad`Z!Ypb2y(g>(Xo zv|)CPr@#NA1$S!kVjmBWR%Bcw1SRX}LK3S0MlYEq+jsT)byaoQkkHVx2tLC4Yint# zctSlan(C!y?)Z-Bn}8z|s}e z?dYQ}#aHKUmBi2zo>tk6(NfbWfE5F9v?C9J+eJ zg13~G%)=Hr@MB>Z8~~B@I|@Jb3FtE3^JUYN>DdYE8D!#tWb*<0_O*5ot~g0Ago54q zhc>-uI0&v575HN<9lr9Xdu{{Jq4hw_=RWSwk~QKRwJ%voW`XqLpYTSURTz~|aex~B ztA0@$N8hgUM3ff=tGDO{tBO`LU|iD_2tEeBq4) zct9-V0oD{)56^l@q#X;Oqu%6E3d(fyORjxMZbAaAgz2RV06k9TkGN1MX6(paSP@LM z2Fm>uu0n$FJARxUCRmmVQ8iyI+5<7T5;;labyB$JOIS-f(8(R2Le_Q&kMZ&IJG@R8 z5RfDpIdDx9cvNgnq{ixm(surQbQmZY(8s8yrF?o7z4Ub{l>sOB)-A?m*dtWG#!k5v z2oN}clLod#ym9Z6^7a6>AxJL9ZRL{=&~#N@#%W?Ey(W1sZW^owk-Ziso{DwfV`t8+ z-u!l#+kNn9t6E|A{_z%s5u}q%~_b5 zvkk{@I_EC|zwBesogk5pLZVDiCKVECAr!1}+AQ6nnrI?33fKg-I>+JW;qNrh6Om67me1%QBtiriLM z%3{oKe%EI5@V<^DY>XK^Uot;jo{~ZZhr@4CxtCNR)h;*_U90Q}SWzk`q_`Fryp!9! zx^A0E0}CJ}{6#z%r!BKvl7=485eR};1`p-N=X;r#SkdeG5*?WQFoz$zQ(kegYfZ}U zyCb+lgC;B~8fLOh!~eLS-w2q;rhZ&g$dV6eICW7`>F#fyt6IpH6|y)I!eZl`z?v^4 z!4b5HL6)%{-Be1;%FLt>-RE>N{UoELlw&bpT4gje3rU_gRbcC;ZED5Gu7xU(!pZz4LSeZD;fULUX2)G2uUV=LI?)Tzf7l112-3! zmWExq!n!G!i@r4aC}+79plI4PtSLn)idjCp#65C5CcfC0Xk8 z6RCsz7uS~XyuIYi;UfDOjG{=BF#@@MiUV%K?hnvrT;jm?(>{}fzSHOy6FoHVumWMf z)}Oy!6WyjXlYY}(I!KC6Q#dxvY-W>*my$mr-AV?UUGS2@-qRSX7WfDkG?mT{K5n#4&kC(|4>yPc*ePoQ1|Uhxc^RAWmYP>}NUV1Z;7KEmCaSr61Tw1N<5 zh`sIXgdv>T?w9|h!GKp<3BNoGeDRD5BYQ}SrBfS zTJxUji3r9pbMXT8@3)9qJSnuf6q>6s-#28onR)gM2;XsrT?3|Rsq;*}{^mYAEVi_FbmX?4}oM*c-tiy~PVU+my=l}~v|4SzC3 zr9|_C@bP-Awe5Q2LrYJ?2f8W4M-CoU;J$lzz^sXFA`e<$>(?)D*0t+?Gi{IFsvMgU z6nT9?w@nY)-xz#wmaIwZgK`I@=B=JJOV+2o@rkdG8vJzs4%)wLq*U&A6NBUr>%zC$ z4Q){wml@Z(1|K#C^AYP2*}FF_Pi=lAMPV(xZ+Gn6x$@^v4NXnijdYNLa{zVFpE-!v zD(3Pv!?c2En00yg;lnexm^(4>Puy5qz1v4HX$0dU2C+iwX$L?NgnI5`EET{TlBER? zf_`uwovqA^p`mx1h83fbZN_2ROHBwunm_+^X5gXpP<7eJD{~C?w0k+?!MGJ`6UOXn zLo}WP+MooDQ@6p8Y7_aF$r2-}lgU3)XVu{&K}c8+EA{D9F!hS6Do%x!ugwhFe;Qc3 zY1*x@HNgvVIcSw{?CS``#!~sN$9~E8?p-m1U$qYG6w%S)e`B&t<-EO|9NF> z3!=1OvtrcDK)RM*3oHIvM+G*{zUUabC0Li%o!L;+;Ulg4jZ1qP3+rr$-zSbAFScK! zZnU2%Qog*9edFWKgiS7N?D}WB6JJ2a&8}B}s2FDQai*;Kta-&~&x7L81XwlitatAQ z&w6-ciDkSC|9@&wI!g^nwJ&KX`OecbV`B_C0tpQCfN4l$?$@teZnv7^LAx%*2G#2Y zA(&N}*!NAw!q9H|r!7AZ`uJ)ef+|$}@wTrA!kFkQe|-3`zrMb(#fNUi=EGG#9(ff$ zG(QRph2xs=+WRXO%{IR@_W!9Lk#b*U%$O>eJ?4c9I^;B*wrNw z)(9~wn;TVLsv-23l5JQ>o|zy;rYSA=qB&0>C+8FBGS-GLbggvsu^GxZUMwo`Hb859 z>CUMggNEuYX2pEeD0J$F8EvEvC0KniCR;^i4W)=xFYfT zZMhiI0Zjg)kF%w1;5Furlmv7HK7iZIh#2VNV6lE0jX^eTG{wTg&v1vUYaCUQm)G>P zFRm;{CdET$0^o}6quC39{+GxNj9ZSl@=j!MzZ2fxQ8#Z!17#>g$fCqNe7v45kC-^l zduV>`n}t?5-GaN0$ZPIicsjy+6mvMKnVF8z%5bF!FixI2#a7sjpee?~{brWEkJW|d zX#939oP&V_1fJxlNWuv70|U!hl9Jx8I1E&UvFDJHBX73*$~M>bJ#X_!kbDjFWP}}a z=#4b@$is9)Kz3xI(Y;G(~0}OOg}2B-}iyBI)YV4Tk8b`)bfw>^z>dM>?5p+@6ID zT+1-S74VyUEO=kPneYtS8X9MDfDWHBQvHV7B)Ou8)*1pK`T4b3+kM``g*X?6XRO1! z9AAL2@HP_tStu)O_!^QF+Zg7eY}%&$HlNuph9{&5ibXwXIB{9G*Hm0#Du&#+M`zZ$ zJQ7E>0<;UJS-Q(`eM*DO)7kbdgF`eors&Gmt8Lr0vt$1v;F-u7H~oXGQD?>ROu3#0 z{?HGW>V;Ma;Z|$9c+aR?A3P}FuR@#*^rSF5bXIrAS1-^3wO6jo?-?8@=C9urF*knN z?MHd+DfRg3ey}kJqR40SQbb?P+?>(Kfi-=zVW9Ggi+eFH?Xi`P4hqcSFUO*Ow>-B2 zmnUGgzgxp!LV%O4w9$Ujy}y4hx8!ftVwbNre&^Vxe(&CP%2v$Fzy)2xTDBEbH%EnQ zA+4-mr#HQd0fwA}Pr%~x6AnNZR@r^-+^$)&$nL_M6j#b3-YF{Jw z@Nj%AO0uFyus_1U*4xi74$V!&=h$w@yCG5LF5YTsZQ=FSR+$brBgJ)Af!KJ<15e)DTsVoA$yE=k z;giXq%<5*Hoi2pC#Dt}@X1!$f@tcl*G-R35-X3Ypc0arfpDHH|9@W)o0dBlhNeBoE z3YJ3#<2!(7T*RU6G4X~C$5;rY>{b`S!d2L$P4_w^4)C zb+iiY0m;1U0u)?eWg+v|-|S`bI|hEx@mom#Y%HOOVRVY9NNp>`-$CikjljnVk7u4r z_f+3!a8F>HUL)fB--QNP3I(yXk;?Hi$&k2lt1ROnj^lp%(Xb16C#!(PN zl9y?B3-W;VB_$)yTxpRcf?`3<5xH=_w&OBFh?Q>)!PU<*iLH_5`ZY!UA>?D{&wTYC zEdaf&U*>#fM)Wxqo@Q1!Ca8R(>a%!0^Yb_GLv;61`a#ZRkhGr1c-tr@HTCr^Kj!a$ zjpl*ph#T9awjP>PQ&rk!$LgPN_jj&a9Km^a-0AX1DRi3Kn-RS5Jx8d^1 z5hy4B2@KrjSQO&Fv#ZiB$Ac^|3@NGe=!nHd@CCa??1dumC#F*lL1-M(HxF?QHQB}& z`JkS&ne(-(zog5~Cr&8mA!fTfc9Yb%Y<9o(P-4}IVdKRP|7?pc&tf>0HV@T1S$U(4 zjT7U)+)qmK*;(1M8|r?i;rrk>ZtG)|A#0c2dQUL!=gH{nZW&=6Ky#kQhDtquNa*&z zhhjTz1|kUEVb*Ny102I16rZ76g&5azTzuexgg(mBLx8DFr#VqaLYUC_Ks6M3wVLh& zvaCU#o_qGtg+DCwAmRN=>OH1w+3P|Nfj>t^@Ic`wvM7!Vy(eNn5(r3$H|gm<=$L+9 z4vbUj-~V^vQG=b8@7GX+23?3Q8bp>SZ8G|*k57BJi|SE4#X~Ngj`&4S%j zfAXIa&dC77dG`iYmtkin&zUolGK}$2v5!v8Vx*Q9YZ7)DmR`qVRz|c1ERhf>gj=6O z&Ud;;O;OO%oz?mKl#(I4d*OaPEvf&laj;5|=(i*{;g1o$x86$e|o@3dPs5H-|MC^*@ zULAsmu{^|}CVRbUmLme=e709XEtR2?v-%{T+iK_ERj#gjWy9hA&z_aP>hPWE4`v() z*?&{Vf=c&H47DRdTI7B~`!;+?7JKe;C~`t{p{6v&wM&$wi)d6utg%^V|D}+7AIEju<+0t!R!$Ev0JW5=@Yydp4EX zAG8(Gck?l4XA?nsR8@h24WQR9>+0bOTZdG#{^Q4&!za}SpvL@NmeR&zEFE7CDNR_s zXJ}46PuRQy_(lcf>>SOs*3O;rARU4tNhW8UfPkXQ3Zf$?bqH4wlgRn|lz}n;*n4F9 zviRCCGqqr9Mg;D|d#nRAM6 zH`8Bh-5F9EAPzGJF7b8F2S3_pO!XRn*MTEOAf$M{awPrRN|4o2gNCu{>TFxPZnk@n zC(agPQzRk{M8`i;bL{vW4;rgoU0gyNZy|;7JjMoypUQ{#?`MZ@_36 z45UmGi{J|l$+%u_;WQE2#LLOQ>Cl>F&sQHh^qlqvbH_9btYR@-;aPch;mfDKlKNQE zeZkVD>#eN~Lke$|HonWs>QcVVPQ#jmNCWj~uTcZXja!_z;|^;nSh|Xzw0}x-(+M zj-qug2p}W(FcD@2_MvJsG?X-UxCdLac=3B;4H$Ixh^1sN3sJpP;OCtcCb=PZ*?;z=+=e<&e6?qT_19UYrX@5wAuD&VQQ z$+%vE8j^Q>FDXf#_FOb z3x}+Kusqv=opC#ktb{?#FpD6{BD(Zl%UhnuvO@qD8aTm%==t{ZN?o1iGb)6w(x^n{ zb*ckrI=)?rmu)>)>TihL&v3W;X;62kHsiP;+-q1rgnV??;n-#Lc^6(cSKaiClH$sn zEK8m5_r~%OaOw-y~QyhZM#-d%*xQk)a^F~oQT2axDL;kAR9=RoAjPx`u zcIDNUB~TUoRT$T2ri)7*R5AK7F`-a=fI!Ftz)po9`aM(6M-mWDd^aG1(?xr*xROQy z)jOlAES2eM1d}cPyMh9-HVUK?zabH7iQt2T6gK-CA=zU32o)7gNJmOEc4^>B7Fm^f z5u%Tq4jO@Zn}M;6>5XlEOIJu>++!dvlxI99j$%V?B`2hqj;>Fg? zY%tsQqYFUvbJa=qfBmEK7^wE=t5;8`>$lW)oTlb+(}sve!-v`~R^ziLb9*va82c>(x`I z9$>?HS&ut6fJ4x4kN`ixZm|ZwEv)+j4+eNXO-^pFJbq{0U2-Qi#`X~uK(N@Xib-;7 z_^sTKwYH9?f6SEP_Q$-v2Q@CKeIsm~qdA#wjkUS-NYJpt!&1t8TfX@xFh)v+T;14E zm9Xb1EK|8qYys_P#sGiBQXDJ9B8mMV{m?PHGN~YKF)rO`-y3Y zH?APZ_;#tz7;~^(0hnN{4&V;M*}5iSg!H#Z+*`!iAX4(;c)z9rK*O`|PB;K?GWu_m zXcTqA)`7-goH7Nj3MFk|;QicOD>MR!E&#&j&F(F!p0#Q0`I%Xyap+qjkI(dh;j@{d ze)S480mMJ`K_<*H}H1#?EKTFfyXRy;mmh%oy4l!j$<&DP^ke!Z=1F z95!vrb4$^QOT&W|@uVyE0~l1e>f;YMnJeE=U;8!HH}lckV7<#hLBF}-sI>U$5cnNk z_4Or*$Fx|ymH#Z6fryMbw$G^cpt*jOmhL1j5ifpu$2&o#5Paa~u~6JX?Lb3~5CAv& z+aCuNLn(aJTDz_2`MUi3+p#UVbtlP}N=h&MZ&Tw?Vlc5FGxNhX*|sVZ(Y#SxxJ_ts zJx$a(Fv!-ip>BJ`^Nteb+fXSt-~UKVG^{J`sIjQM!51^tOP+R}=Uf^|hqp$`1l7#Wk*Kc(E1q`$boyOC&!X?&@tmUaK(FiTR?^ZtMfk&%Y?&3Dx1H<;? zCvd%L?(ju75}^RJwS{XSG;e9WyF^2Z?#4h`#1#E>uNN-l1O26?l@W*%9z`;voq!Mu z!U1%pBO~A3zrT$3U~F_!tUd=-7h3^l)G2^*WQCR&i@)I9h3@VBdQ?jsT8Hl^Lk=Yl z=ENfS9sSkrR=_>U{eqIE+^f#5Oxzb#m2%y zG4lIbKqT`B1Pp&_po2PMC#^)j>x~daiHin}4w#D8fXU76T1s5QS>0y8K&n-uR>z?JQf~bGgM29DNP63 ztJn>b1kVvmd21mve2F8ESB^y2#_~!C2$%^c$5EUM#G#<+Uec3babXvtqn#Vyv=IIi z++*Irj!hd`PP1vkG_oYW+-N_>MNGS{ets5;2`^e!CNfhvJt!UUwjCJ9IiZ?>cbA>K z!xwPE#1MH08^J$$T_x7X*l{50dAm{CMpGDnWB(i-zxFD9I)4Rn(iqLXbR*5OJD6ws)4c5 z^PfCG+YB0rjiT`Qz}5giQW3JiDh=z-^Er~7Y)$j zv4~dk{|I?oLvG31!F;`*GTOc)Ugik?wD?+@r%;$1F*RAcQa})~2XOW3UtPwode&|2 z{5~p4|HVJi>j8CDp?HBS+TKL6wtRDPQV?4(J!UpGx-F}vwn%8G`EJlq?ct1%%+CA= zZ3vP22bP}2#tor<*_Ulm-EeiyiCrA9nSwfYbQYQ)qP0F)Ur6+ml780Us>I4Kp(Aip zOxBtFJp+pe4hah;0iC3~9he^bt_r^V_ZjTOdNC|BYBT2rY%wV#;&E08b&t z_cpuQi-5|ldt**=<@4q^O)6J571QE|7Q6BO2ZJg+1!Kf2di$EnVB;Q5tGfDXQxU;& zFk?U?9eWRaC3+TN-3_~X?V6ko1l%CcpW#X04ik-qwO$gZdqNBAQ)fARXAN3-hJ1@fWTcbodMp5h)GRz(KSAjQjiD;g^5ErGcl`mf2hG zQk)7|?RVk?1Noa^1ZbJ|KD^r6S_ACd(0J>j*FcwX-FhFc1n~pQ2|xX8+i4_;HJ{MV zLO%dP*?t(_luSv?hz(Zsn+g4%uQw55VkD&;lIDhBMG8ez(}MX4e1J9hDK|d2ODm%I z`*%SEjUHWrWn9@R>v?*~0Ld++*o@hj$svs5t3TjWf>@eJhsOz$Iec|LZ@D*pAp56I znM=O1Ife|v*hj%*yKJNDr`gnZDTgJ>az;*8&(XK=eXwdQ0`CaZ!ULhuV!^=^10rb8 zSGABcLVf^xjy`|>Jhuceq&Rky;qYZ5f+xQ8TOGR{e?@G#31FuVxK*| z{Eu?=Awgd9nnu(s)khWqHu=GTSSyp8E0a%9Skpjfx}@Le(YPyK^loLoXpz0^-xnH+A*&+Ei+G?Mo>ab8mPwdKT~-Q_&cK8|{ZLGmM;?-{T+!cu0xG`CoS`qageP zP4_yi>mgf<@|M@^aQJVL=8U8cJ?g5bE0G^dnTgl+9`99$3d#~12MV@spsMQTdrOU^ zAZIP1!pox%D;r#JbNO~<4_wmkE?VTVhWc;9tw1X9>X2V-zE}>F$q2M;TM6ZCG)2^* zi&2>L8(2arWFRJK$-`8f-i|Dcyy;I|l{EqvhE8D=>Pm2MQsat^Y!AT1i6htVOxH_@ z8-_2w$rm2}HVV7ZB44}s_FcMQ^o#>*QNg|~345FGlN|R+Lk8wOZu{@c33mNrQ(-f7 z;(R(wTp7<4cg*t`!6?mlOc~@apu0|y(HWo|znso6W(ser`5SzNlz2cz{r3F_4SMqM z;R?2-!1f>yGJD*|hFL6LnOIY)mh8QZ@-Dx(ujFT-SQv;EEW5WBTDd;5)`;HWykbTF zzgByvOB!ujevbJ9 zj#;yFe3}BhTvh>vwU< zR2|xc4U2kCVfNOSi%Ob9e_&AiW7O3-RkdB3nqPYdiZU(nN?4fwwr?z-pU%F=MQ38z zg1{@baeIrsHyI(SuS#f)+xqp0p=hzfVu3Fk1-XCInu)K1O=EL+){Y48a_G^sr%$OB zix#&}qG=8-PH&|1Gp{B(E;g7e;^ZN#POi`KHd>mtN8+-HX0)(ep?cKzow4eu6Fuxd z54#v3Tfn}62|wY6fQnRZ)pOcg1XN2P3XhHm-cs-k6bT#{lxYl2T3U9>A^5=uJjuwo z-L998k<|PR)kJ}wmY1?k7F?d&G9h5jC1J48jz+RVU`bA^+3@}^a%K%uAN(wCzn&~ro0-r+y>4>J4{ee- zf=2rXAM(xZbv7mj>Vys7V{)-F6Kil~eo<7@C77M`GgNCkh;H61EWBNt=l1JdLrpXK zbPfquvc&H*i*6*+eAF_h`~E`&Idtgc@#B9fy{`N@q)Wg+B*|Tk4cVHs5sd*c-+sJn z-X~cRA*}Zs(vE6-j7SZQ!d}@eXbG}iKlPI6+gRkP*3n<2b-@{HsLgF$YikP&`5uZc zK}?PR&3$343%1pf#ud?5n81!m(gKzpV#KeEhNS~!VcakSdMhF)U1Rf z@6oLrD&pCT4@2*B-0aAX`(ta(WnYlT(f5>LbD0!1@Z_ z%B^$fKA`BKNy4+(fhUfoKj{zyM+L|~d3hF2f}YCNQ{*0j(P3gIN!f1PsHUzSa_8pB zGiMq~qH+h$I5$yh+_rD?cI=43)-=&X$#h>M?Ki7 zK-YctH_J*#d2yXITC1=>uoWxa9s?99qKfkKcWF6Dj1T|w&v2DsT9X?T=??Ch7FsSQ zD&aX1LnV~M2Fq-&MDt>_pQpXQ9@1k!sY*`dnbseew-O_uR7oT*%R(khXb#kXO@xo* zhE{Zdxs_7VtPT@%sq_MQON_!Yp1}WDYuV!vR#_Pfb7{rK#FcyLBWcu^0%t+Uo3Tk61 z-K)Q}5lB`Gr2hAdFY5UR4~)dp&!0b0Q8ol;n;F!PhU}pd2S^xUfxW>oL5hh7Ua?U; z7alhq2~~9u1tq1KQpNU#Lpp5C+s>6T?sz`cJ_=HUDZZ3}vty})YZ$rW?--dmHaD-ZKL^;6iz-8W)q{RY{ zF_@y;Z`pE_JJC2~UeMmXlX|*hbK9W<<#B9kBTh0?yI=YQBexJc%B-xgR{cF$S_kz- zqJy8C4ncqtZ+MSkFzm2Rr#f0OOGxy?W7&4}IRG|4o2O{asGKM{91o5vacJeok z%{E^>2GKvaEoTpli=g_Z_tl_+K+?z%L)76qj6LvVa^P3gt@w3kluMR<%h2o=dvrP; zHIDqP=AZfMkzGr8ykD4NpY|CX-yRkb-dQQvqXM3=K685vET>El%1T<(s*>;PImWbwd!Xp+(Y_?4 zLm*<5N;xD`oKY~N|mJ7uYYgwQ30_Dn&zmCgwKDdbW0URuRih9M^;>ePbLye}0JPOmsXjw%eR( zK3(ZDXuPmg?mxL^Q{w#%7|{aOy3rcu^>f#RCRIdUBN$CiL1BrdB@y%J%{Yn1Xst10 z5Yhv+D4ZAG?YEl?u0jKCYCs&U&&&|I9OI!*C}^1wXYdWDKR6q`{rQx~*%Zx;_U&w} zcSO6_`|#Ua>v~m?+;i^ywhHOkrwJlkCqA(IDe2qxVwrtQ$xr>w_dX)k$CZY{0Tb$r zTht}eGbq1+U;V|%3Yn(8W59_`bOh@T)4Tx25${N^I4U(8^&*kcYq*~F@nap8J2Oit z3Z&b5JX-!|{rL$;KP+h?b0uwCfH(8vz>J)MKAqQ~k19CQMv~WN2B)ZAP*!Yd;4oSYnvJ&&tpJt+blpfK|Y83?GmOGg`^oi5&)g#n+E~cpsrI)_}N)28UEmK$LZ4IA}NhWU-z? zPtPP)ODqF|3$AdSC((Ec^?69A^>GcK=_rcPKMM}v%a;%D-u+Z&5R2T^3EP||NO-w7 zhXd(ed~In={Dxuqkux7!4*)P`MLN3}}VZA>;aCU`yD?>8KxEDIP%H z5Bqz9ZUzv=h7b1|dgr|beX7{zcqG}|QalY;Csv)(usl3z3C&t)!n+T}32}D}8Y;mr zUYMc~7zy8EJD#Q{6ge9z9JX#{?hy|Vs07L^JtQ}xvMVO~c*-z>XE|-fiXhm%vg>FK zR8~^N0T6$TZ|bEXx08q#wj-4fT`nZwi|%d;Bsn+#V##q0d1)g?`OcHlvF3p34hj!X zOS#CxNzc7|9X8i+gXlX`6g!RJ8vw~Cy{8Ewr9u(EFTGjR=VBwi*q!V>(&F;r*Y~ox zn)%7{??px2$zJ*{cS&z|SG17Gzl6h+QbD!aa$3>E&0JJwefZ{;)KBjyFW5u=IX(8@ zXVqa-D@937HX?6ac1;ypBpM2b8eEki22Xu!BMHDYmTZVJ)*g{oONFOQXlTfLA&O-9 zF%`zW!s_eYrA#sNx7IMU;Vjej&?8fVjG39$4eJSAgl@L%{$fchD?G|hn>Oj!?wcA_ z6buk&wN(;n8Yv>kDQ)#F2-)f`luO_CDet^%U)(kF$ty@N_=ibS%-0C<3#Qod@eTZ{ zJtrM_ekkyeYkh!S1tYaNg4Z20uxQ*Uw70{Lpj#?R``(I&!qX&~06=W<+3-!J8(mpZ zfn-p&h{32R_!GW&Bq+PmvUXzhDl0EP7HdX^3t$-+<5aOEq;P_!{6|*v5^vQ@2aC5J zkkGej^RqJhBXnt25VWXi)^c5P{au@F$WA6B927choJZ0>wbecD<2bSj%Xq>DGgTZ4K&FnOjKsPxa2}dzw5BG@ zZ9~#+#5HevHFO~vz4V4_;UXdrd88;MkzUP}8|XW0oPGOtHJZ$C-wyg_OEj#>Bc#1afS~GQocRL>l54yC>uDUl zS7(OgyjXw;&<_Te_$*?kx>VT;Pzsh5w9%5OePy*o-fxLVJP4J^o?-CW;k) z8{Zb9JMcFrhrf!?;3LHk`|^22v}M*HedCExZaq?LPCe2VPDXts&W9f6i*5l{E4+E& z@gnDzl6ry|@+WJJ)*mQu+N&MZso_;pRam<=Fmm|&WyvQKDE)}vs8 z`e!I|&rxn9k%>a?h3}Yf3c0md2pFKB@|)SEbLUBqn?FQS$6-h(7Xp_c68R2#3}0kz zYdfTLlf-%ozQL-VQg#_h`J2Sd$>%L?K3qAIGyGP6PhpAf92gX2EQJn1FlDLkB+~gy zmZYp4=`;QE&p`OcxJD=E{{O#u0`6n=9etWef>Va7q(e#%fkLUh3MBw&fJWfMlWUre zLSKjKTdgI|M^ZkMrV7yRfiaBvd^sKf39uhp2q2HQ=>=BZn#1{Ww%{*mG`D#H*tqz* z_`$HB&R>8z^JmS1f-oi@?R!{!QnQ65hbzIB%dg;kz)WtGofR#ryZyf@@UfSwjlsJf zRw6I(AoM~+KtLV^9np;&&a*YglZ)<;xMh#rfi>{vK#P_-z8$PJCzsrrbPu3>DJ;*>kU#-$^Y>K0wRn$v~-cg`X}~b0cTD$qo(o?LKcd`we!9e%a%pp zJWK#-pqM^~hL9s*Vr4rhcEM49R#uP|>g(z_&GOQ14?X(Ua7iMGHKvROV!$N8-4WVI zR%~n2W2$-A1|5T?|4$*J4<)UTLa~n^tF1K4p4D#s)n<%-c#mtqNK4E3+KA>{S>au( zT7qXR(uW+gK#6-1D{$0HWf~yI58O2-TR-@3tOa7?PZ_!qvTUt&Jya&L4T%Ow-J02U zEcP(**=;_~`@{*hWL4bJM>)<-L-jA1l8lTWZ&X`IVojK?WWS+ERbKLe*RD+q>2fDz z#QXIQAthWAT1YLgeGZKxJ6cE&Hhs)#0pbHJ<{o8|&fdQN@}{%o-jErWQ2*-nYg{_% zUDOWgEpZCrUSQHC7?{3F(+9rho};0MsUr(gD_;o@7t86(TC~Jc4NWU;T*i6ljsTwo zr`w?TDeEJsTSmt|xy8JV6D@h(6kGSsoLLag^z&XdZC?wXN=C-YwQGmEu+o%QUHxQL z2O%bt+0|yx|5Rl374&ifDyS4NYUN!CXB!X0CipF>nGmJ?4p$}RvC~{6djsfXvV!HH z4*N+q&-oYQLBcGdn|j~+XJ=@blJJBEbM&V$UhrCY69_KA$jE7&u93)SkfHpG(B;0K z$IvmL>Yyp>+j}k9&f+QtHN)N>9c6cRKfWe9UiUp)G}1xpJ5vuEjed@3z{;Tr{=yXOAC=jY`81*_UfYP$HQ zo?+jZC~Z8Wo|6fT^NykXq)O%6yLOG~4rC?8u(YjOwydtj-MFg}4Z!C!|qn|GLT4TjX zqk;{!D*p{KrBv{nlc$PI(r%XT(ub_=0(JVn3rqD2E9eYw9k?@ z|5x4CM=VkP-*wxe>Itd906A9P_U|uRl2mAxwaAU}G;ctWQb+rXA4P{@vUl@4e)&W| zSw}7{+*!AM4{2|8qejt~h%UV*)IJkf~Qv^G+f23N8m?JA8J9m*W3M%8ubJ zC2f_pee02Qt@Vf|Q=`j8>`f8!vvODF8ll$?c`ksq<{{kR?W!FFhTId(Jbx|n{2pdBxkd{GaV#}JC5=1D4c9< zi>WStp4dvVg8Zj}d4p~MYARb>+0CPwgy1;-8GZsS4+Q(NhkF?WtwR8)r_fr`_9TP% zkl$4OIsD66^2#1MskP+g4uNCUtzM+2Dx$$f56?yX zdz9zf9Xxq-5lz^>(Edn&II=64#k`w3q)2xm^VIE$b7DUqHSYeF16?XP4sy%6^oxiMo$qXQ478I__sDr zYAH(8K7KQ+s;ZvENlTm>saMcFqzSbM0|UcveBXs+nI}jqfM@?}V_8dy6gt4^gjRKR zH)eZ%Qx`C0LhiA*@52hryT%Hhp@IX5c^yQJPItoM{7!t5K}k>vYTm+fjw(&)Gg3Yu z9E+J;I~C95l@6oUHr*)qhCPC-=swax(zgd8oc|O6R8&6;wgha>WV!jxl|t)T)~>bt z1g}X!P&M?!8HePbD^x5J$ddg%X_)=V`$z$VdIXgUieDC>i%u(9l6+Dj+Z--(Y~Rdn zzQ>wIuQn!TPEmK}Xlg(Mm#n6vSB2lOd==?9M=@6E*btjF5h z1O|Sfa21P;JT3E!76`r&2lV?xuE?{Sq>7sYWDZ@|PUBR>`ycdkb!+|UBCB~{3l1LL z)JRXut7lMz#K+=O)(~&wgR?7U{~$#F7z7PRA_tuaJSBqKM~Aw-5oJ9qrVVD9BieR|4__bV+dTw!hfliCDskSQyE`0pyLKi=~thGz0p zc^Kd?;HER*ENGc-(e;1+Y26mFINj!p3~htn7^&iqVzm0ZEMk7%8cYNsB??I!QYqj$ zF8A)tv)E_xA8|x#Tvke|-O+MUfRB=w1}c(j_$M5#{+0NSabKZ_i;LfT$gw{e;Ey{Q zg?r4liwWZ8)@5}w6(eRw6xgC{o~bB?9O8bKmy6sO9tV%6uYaLRd@HeDen*ee4_-ro zwP^SmKfi2<82sru1r79tJ4#zFUQFv3Ay8(e^`vTdWTRYW&^Hau^6-1DB}H~{ipyN$b z|7RIi{UMf1**QrY4GukM(&3xz>3aDxFE==!?<6)8ePVFwVhx|?=wI9zq4Yck1BHa9 z{ebnLeHhZ$w|eCpW3JglP7dLs27N}V)Xn=^NsLVp7-4xu{@_8t>xf#{#aa-625x-3 zsT*cxvdN{iR9|RMFA&zt40Ma^DANl%H>1!1tG>2X%U~_DDV9i=bRD@X+e--Z=++_; znEuf=Fz|Pt5R{Igb;^#H)rdJ`=hDt;bHagg?ZMITgJb)<$dJ$>jV$KQy@l^0h^G17 zQ8X=G+K0LBlbrbmI_ zw^70;a`T|5J&yrs=MEVSSA$SO#;C|1gghl=iL<@=tk5T;9!N6z z8kCg60s|w^6VANF+UR<*sRc3;OCmr*T%Us}pIM2Pqk`5*kVpmV3By^om9RK=)OEIOi7`Se}Wu}*xs ztM*T;&L@+Z3y5+4GgRdhm1*xQ3-Jh^cHl>-x~?;1Z>7p)Jwc0>2ttIG zOExxFR?^NqlZgrSmAAOZ7nlTT=Fb^#s++6(=EX>WF zd9E-T1(Cu+4*OCb8;3y{u+uUsJH|;zGiTy8qoNmIRt@w?IYX2YiJc8&DG$eIpSjsQ zJCU(&ydR9lKM+lqF8#UF$-dZreC69Vrp#c0uEE^&D+^0Y)yRjXv}(jFXH0uF?_th% zYc=0O>(q`=surCUzH)#a2ojVHv*F+~mG>S|&?-+zCo5uDr+VA7@9_6o2C$oxPfzU>d)cR3N za_>nbWxc#p*lP#b${deQ_WACTnpWN^sZXCWVzrhtw{hc_xV%kc>B9&89MhjaNl78P z&cbILw-U!;`(YfoC&HJ7J>wrEnm^(Gb`Z77XO#w&tRH&oua&-BIsZfolVVQmC(M3!4bI$SkQd#N1sLf2f4qrcij(ER5-+??@ z(db^Yb?kZii?pXW4h>$}`??y`1i86YeRb97Y6NqXU95H#dIhiz4vmZR%Y3>#f+U7p zgX%{Eq)ny?#~WR9pjrT}E=Wmvr+3|uv8YU>$qdZJry+Ue)hkz$pFWK(IUYdrbokIr zO+tw>nCO0gIAry}fsbi-KskSmNNgv31fg^IBATNRUq|%hKHa({tsJ?h7CYfPw{J^D zxz(14N#+M7FeQGKjioVV%yBY3DBuO1VYqrqW zxaj@lIW8enrpOb{kao|C>);6~LMuYNuuaj@!i{~dPIvqZ9M8?up~j@D^tf+5(kH|1 zN>3`*ANHzGD7>6(70659lvNtD*UC=^Gf`90s0J?gY1PWZ^2l2Zmv}4Z&Y|$nFDc0$ zB-@hyV>+rERDS$TfD`0l^9ktj&+S(7o@4vGAdm}uM2=s&G)b}Zez|=QS>DV`M!#F{ z-sWPd21~t9p%UWw(czpud;1boqH zW)E6P+;_RBd}hZME-|xBP1iCN@t>}Qbs~kM^$l_#JU*xKS7qfL+z1`V{%jCm3c44@ z1-Jj+Tb0XCgl%ZJ{>X{858fBB@#oKftUcPJtq=Ii;haM08K5LWExZJfcd$|d=d`M+ z>(TVch_McKn1qJf!1m)%;-~hyx%8GVfcB7I4+w<%rS9F^MOm$MQC=J$VyK!LL=)co zbGUc&=OYQ=DlNc@|8@cz8Zo?5ckMjzJehZOXStea#4!O!w}XfM#9a48~LH z-P<(eHOJNS^-i!0zY(e3hTJxt8wWAc1k(l-;?fDQ55l<&4TSZXts5%;Duuq%CfrKC z8~(sm|E8DMb9zcOE*wD_9Xe^0xmf+}*O6&Dk?y-@?xrZs*+IqBgkGwa=t_Qyb!TA5 z?w@t47!s{1b88f;$fjzVu^rH`{@+h0VLmpdI#rcgP~-|DoQ=4%3RO=!9IcsI8p(X) z;r16Acag?mt?9zau^FFQV_6b>d0$UE!ZEN5R8u zjD-t8Z=J`C`NfeAo-!kb&O5_pi^yQFbN*^9!p(;FLiS$(~2^LnlAeB0Cg zx?UN4v)l69PrI)5e60U)&Et^{`p>P`kLuQGs_C-9OBCMNM0C3}W9lK(fIf0CelOhNQC`AGmK}*>&pFCsSv>)oC{t{R1VyA6O3hmx){$ zXw&Ycfu38#d6`$sCo29q_TkN9IyAf!2F2|-b^9fCXf80(Z zqurUkTDVN0g-f~z`!i>Neg!+u=+_FqsXNi!+St(Sw1I#YcCPhPK><^y;0m=At!mqq z&49>$#@B-mQ&xi|!=|YyJHF-O!VTpXwypByzS& z@S_czzo|rCTPHS+ckjN9ejy!P+V7e^&o_Q~pUI2~rIdIIAgud;GsjwKfivj z7(A+C`}BcZ>GWp*@a%2fvrixFyzjBkggK6|PY5b>(FMzp(D|D-F9Vn`VUE3gJR}1z z_xS5ut4=Y)FQo!aQ9C|alIZ;x6S%QsT_Sv-dQ{0PHn~3M&MmKQBQZ=UFE5--f0V;a z`vhHRLDau3_UwJT`bz5Mw9b5{2tPmJ+p;nH?y;>1LH7oBG4UicwX{mU^j_$i4X7s6 zAvfCYCuLa1?_#3>zg?#341OFiWQed~hM+ij;6V9!u@;#RxwECgzSc$lV%3Y(_WByF zHOHK%lzbCgLrL1e5iu$QOvwImJrf*8RSy6qbnSq?_1%Dmes+XM1Eastc4g}-aBkRl zkWr1shiPd-$}#U>2Ia1liH>`NEo<4Z-Qx$GzfVcm)??X<6|d_Xphbk^7#$dah!Uc5 zf?y)}iHvKcrj~Fob8>PZmS!(l07s$`KDSl1`J&-(fvaq=1nO>wTmAQy7}fFhik1~- zfFZ6$ z_91>N5+AVm?Af;UGI>jc+!09+D4gRfB_+i^Y^Kk}aGSjclm-7%#t6m&yBYJzU~J@P zRY)dCK_%~RO{P!Ilzv4%#5TfMay@xTZ|7#K6sC?~54lu4@Wh4UEcfVvi-R0j5&q16 z>&{V_8t|`(R>-C)CN>Y7%1(*v0Q0kF&qB15Z-}UtA|~NO+*xHQsOl72V>(=P z!tcB{Bm#EVDcTR;3uo(svKwXw?IgYal8k(k_m@UtzH;Xli?3ZEm_AOcYb3-_Z^3)K zdi;1bU5o60-mO}_`T}Oc7>ZJWg;FF}D3A!mtPfL;@DmFLHLEm=TDa~E_G9TMxk^VT z>_uXtH8lty&{KvWi|4v7K+(X!ikUN$6dD_{Mp$xP*~d`!UAM+~X8NdSLPEZBJNWlU!**pX55PSOy4lvdW#oA;io*zIA4;&^RUcY$*9fMP3+S8}FX!AlQ^CP4C z<}q>9c^nTCDq_62j<$y3BZXyT;S;xw;mjB7pg=m#>A#)Z$lU6lVk*YuwI6K$S z0|i_VO!!XWFtUapY~=!8OowzMeb5OW(zmZz^?`Ot@EaU%#UHzzw^DJ!^`NIg_J1!r z`p!E@f@u1$j4R`Pv8BE%oz9QqG_#l}@qgyjm}B^oAf zhREs6`!%P)rhD!pS5wz%9qb()@E1y2ID5UAlSF3@je#?cR{Xln+L);Psj8xh&Qz{a z_i~7F8ynHg$Mzp{Dj_L-d#H*+@5Ku)niW&bTxI5Hx-7+QHu?E;qC*0`^+Ud~e9fE` zzqo#-m!sgNjiwkGwLIwXvWrNpT3V;?Ta$KK7i2=i7SUMd)Csv?3JRFsJH`k_K!BlC z#Ely-GcuOmTsf7px!n#K85#6mJ>}$r9$#V{k4kWV@5UKr-Me>aVdsl&`qzJh!8Wbs&QW+VEvR9Lk zl~5^dBMB`bN<-1mAW})=d0%qQ|G8h!%X9wcsQbRJ>vw&}=kxh~z6dFW>32~5mzU=G ze`a2OGe{;=v@j;jA$}>1jtW?|YE@q;DV8*;l6Q8x5{LU^+kw0cb$~nz#;!bTZ;i^= zy*JFR0rns)0MqkJgf9dV!pE&hen}Q0`1O~U*W{3J@vZY?C@~zkmf%1D+7!w>Pd{iU zP{ZDX>4?cdW(BwjI?e)MXV9)fo(N(P56L{$#$sg$d1N)Jh+_%wjFZ|uS@YsZUuLyW zo}5JO$%(h>`ha4~?ap_8?o6^Ng=SX6BoqS}8KJds%-L49+*#zhm}ish>l+IY5emk5 zNPg>cXb>@B9^G#yXG8lbDKRGVgJ3$rd-LcZ_1re(QNVc4J@a}9HA)aE1_hEm=*s6N zw?hv>WwzFrjF=ARNU{ADL`e|HkT&}DYhs!RT)hx*&qnyFJpasp!xy05AFZOYku^7P zNaM$i8#iG>Q)4Yz0M5;jv=6|Ylco?2fK)QHOHnmi^<}dbwLOm$J_f(~-AHpil3f4$ITQX!SY5ZyK@Tx(^k63eRtZDc=F6(7Q%Dhg0|NR0zm^bq}Qrha#elA`G(+_x6 zbf|NqXjm3Xb4`}Sc77A&BxOfjx=4z8ehiFE}g)?9SwutZ+u%VRX1ay7x z*A5wN!6!RE=0{Dw1~gZb7tHUjCC0{M2M*jNy}kWn#dmQ$A%kQX-u%11ZL{g1na5!qKq8mnH6vAO!OjhO&w&oKr-kI67eSHxpZdF zMudu$+eIeT+rqn)cR&N~aa6YLGw&*{L?dQY<3JgXFU;Ee+b+k)w?I#5G(PgqzNEZR<;dW{HaN4sTJ#KgSgXFr>q`CRQ2N2i>VB` z2?l6{XN&~}lRRo7)VLM*;chj>l_)!k{BCYzA1m<&S$bWs^S|#(6h`=d;BLf{_xbry zi`NGJ^N_=pN`g&1+uM9g1YC-&j>ecPT{54eVq@qz`6ZbAD(ZG1}D# z5*raP>MiDVyxs-0L%X}8qL)T6ZjXUVc{y%iQ3abUEZ#=i&?qPp-iZ?AIV-7-N`uFb zucc`)(vOtqv4*!}0-96EP!NH_&WxoJ45szeCONEDB(dnEU+*)NEfJ&%(7G>qQ5mVJ zp8c+vY}oLF+i!e-+Xk9Hs<`|NzgV7|&Ws`8kA^}zZ3G4#J2OK5o^hdO3+Ax4ov+mv z<|qEx!P86cOo1SnA{+gx$4QjQ)O%bvwiKxr4kzg{*2wBsHa}kX^ql7y^A{~d5V$F? z(W8m;!qnjC(+TZ@e^Ee*ewIED83J*NiS%@R_8oeM|CXvy52u@=`0qT6&ivL}aB_&H ztx6>sY}L%=fh9n>^1E0YlXh<6fkQ4kc96xGddwX8WHDtOr{!a1C`Fm?6JeKaK8d|jF}jq4HQvV zF|kFqRz>-sc&vcQEI!KJe2;>I(DuE?T0)C)PSPB2i8;E}b*It~AJ%Q&JU~$qM;T#2 zlV=9|eUcgZo_h{i>v-KF!c`eTwOaR-Xr~`<Mz@jg8u7V@-%)sRX^hkgtc15S%Z`tI%eVV?3p`>BHuV-G{}|5Im1DLqI;*jElyy z^~fGL0c)vz3AijI=5h*MEd&dng2u+)$|5UAS2E~;Ak89D5iDt7SE4VcvVuEXbZ2kD zyk*Pkh>hGkL1C&45P)j-J@bqx{P53C={86bCI&oyDf&Musb4(`XAiAYCaLYmsqr?;+Q z_L1POMwC*9YExhU^GD{}w`!W2EjX}%BcaarooMcT^k^oHAIrGPJM-7Bn4jHTds_nY z%BeUAaarlyMqmdWg}njpSX1(tK>^LUO|yCb{<+lkt##R$-u@Hn+X8k3c*pUvXI1kP zR=QGz(Ws%1ab~hfbxhvojW)@h!-@N$(^I?C9q%%bS@Rc`F z4+UzvET1uBAi{29A~wz!`U^Hb;B-_toaBi=R^=-%S-W;R*@l7`DG~lhG~i5xq%R!+ zwSi=T0z}i*S_r$D#&`d#gEGzfz=D;8!qkcX#>cFF?%d9i;(&8}i37(@ouc~ww0%x| z7DLUXQ`-CUsHCsCD`j@Xsh-KKrt(Uz$x!h8K&M%4xZDBfAXk`+2fDKIOVcfsXiJx# zfM@nS2CNNS;he+P)iq<CuYKhDA3d-joddteBdZ$RRr!(?PUrDN2ch2X!4)H2zS6 zYd>gb2}CQ8@ADnoeNUf$Lv&k{a_ypgBppRL@h2ed#uki+UD=HpnLpQSR?AA`QMr)L zyr4{p%gm3bPv|VN?+{sKh$ssM%-GSR(<<%JS*?J?^kIa~)00k*I=FcIZ__CtU`xZs z4(v@jjV!d`*9R7a+?e9!0E8`^j(clfycUn3tBRQFr82`DV33_8Owe!y1Yif9#i%}(p=fs0Hp>r0LbJS+2!v#eL6c)^o@XlKp8I9du zxt#a|8cdwZ|Kx_gl3ovbZjya@COia4-WU~nQ_U*+3;qX{BljLGmcJF3P9HD4V#M_1 zMM*1^MvQ>qRbG^ z6cLTwOlK_FZ_>e>iuT_-BPz(Ei^zB%sv}(J!oo%6TA&LAfDijyH0-x z9Zj(}zO}a~$UPItWjktf;gvLb80N$wv?b;nHzqjM@}{%EYoMrwH4gJS%y0qOB39Gg z#!QSmqV zfZ8JLduy~*mlGwE& zqOYBZ74$Wm6VvF8&V#hzQ56z0SL`RgtcXk`6{b<*?-|qUZLeOvSmXv%QeIP2kbJ3w zsAwXg39R$tn5|35C(Ok{G2di=FF-G<0i$wMQmdn>HJA$J2f=*5Y8khmqe5@qmwE`u zpV-iH>TZW!W0B)Tlc#cGt*xw>ar_7N+ri-;pbEh~$Do5~S_6?&`ykR|^F_3U+SWLzST-Do4xt}U;@OIQS*kS3nmeq$3h_>at`V&OFaym#b= zjw0iaU%q7IUo;|}o0=ArqiI+`AFmbKm#9e3NTe1Xs(lcS$}9Tp*_EU-tQZL9v6 zfi%6KLQ#+obWe6li+M|5rXj-q=x9X>N#`9zg%KQBN<*;qBYh_dB8fkspycg$o3(Y% zn46f5>w`j3LBruDi(ffU!NG%8gfo{J6*J{=-}WokG?G>536}gOf;OL!HXts&lPE!* z0$W>`gyqFZ;$+yYN@*u~2KZg8b0?Ep*eXZGLlANtDSWsYkaD`ZPa%C*zgXSv&%GEW z{O0XK7p>o+D4aNOZKlcI&fQ-M!9v|t;U7JgCY5z#U)Y&5XRxEX=o_pFDP({%KG+Hu zoGQaX`0Z|^e?RM^_z>Wf`9B}DtK>v=6Nxl+?j&wN51C%QaDFY@J|;7d=*U*=fL#1{ zN`Cqo(clnMJ&w|@W1Ha>m0H&kK$hwS_@9Gz0SD@aUxM{9&Ivd=QX}QoG`!jJk(IZ2 z(y2>`%EkXYmmv>GDSQts_7M;yUd)D2t~uam&Es>Z;Ff&Rm;*czs4P zo8m#Nib@~ge4o4pJ4`VSGfrOVRbAxOgX#rp`NdU<@{W z(4f6`a$d>ov8&+WLB&BJSvhJs#0o-1ns~sqH=h(s?M7;r$FdKdw$fE#D6S48Wy7Qi z9$4fb(HFr;jj@cZtOn%@p5B3?d9!CO8_!;bD_5T6=eO`^12%VRjibp}2&((CB7Cv77=F3Y|V zcHuTCm?ks#n;A3{U`yoOsc+wNK-^FZhwllVpK~PfenTgObmsxfAur+CKw%* z5^N_qA}~+yT4?B}m%ZDcnxve4J2G0e*sp=TB@=W4n9LY@(fd!8mEhzYK&(Sk+YTwS zOcJ*CAj<7CXL6t|a##JN8+ygQDy|Ly&4T&!FP4yCm`DM$rfs3}TDAxycXQX8@;@gqC@vZS1KnP@l{b zilwsCZrCtnQDp-r@lY}~)AHd_7nKvkQDt$m9o+U%z8yVx?k8k5@B()KkeWNkzovx( z4_}%GRr&a_M@<_UliO!)VIe527A;Du3$X4t&FL#RTb^a6^UoyNWB9|@8+<4#+9j^k zL6pmlhQW|iP{7>G4X}c7cbt+MfBSJpmG~nvyAl(VOQ(Vu20IWCdFyyb)Rd^7khu~{ z-Y5L2I~zwtPkCtroY<{1W78ifYM|EX={Stkyq}u=-CSMc!@`6u!91}fUT)Tkn=6lT zxnoX{z62OSLc*utM5C z=5iO;GtA-sb7$n3F>52OPSMU zhf-wr{L=(NBoF2Y({<}+>Ik%YW1|y&GIAys8Kq*wWwjMTk%k7m1|*XX3QU)rMaajr z6GGuuvaq_4d#JUwXa>+Z@sf0c_(jpJad-IEx2xyPOFh|k4u2iMynpV*;tF%?Rt?Q1 zzm1tF=2YmJ_#jxD_qCb6kW-&;M_7Vq0q184x*MW=?i#n2UU}4*F*Qy@>Fu~Wd=ubZ zmO0~>xw$eP35?B?YOnUEW>?sr=hc9g(?*xcG3^ zbwZg^w<5EpF_`Yw{PbNa?Pt!-RqRlwRYak)-pmZU7!6ufNF~_uyDP!suHx6lBfq%% z`Lk!3&qK+!f^u+TI4)!>q<8|n8~zhzAb}ojLml!$`*BdovVGju78-SuKu#k z+Ni8#85&%9`If-8<^xiun75@|8&U}asP1e2OL#1|(*!}{BG?3-XyooZ>{khdN??$C)J2dn@+t{evD+*6S2A3%nkGLX4Fq!FwV_1CgrwBA(2B!g*;NfJ2dfO2wHELpM*PK#sUAOE+N zntYl1)>rq~mh$5^-vM?9y(zW!U=QSF$-}TO2-`O z5eFz-AU1E|!XX~FSB|2mf>%Ue=E~LO$)fznx^Nm1j;4+xQr(56Zat`xDKD<5)T3|b z!IPDiUPZ(9Iw>OqpQ!!)9?V$mLm$L5I z%S4Wa)(DgC-MMot_h0uvYt#T3ehK{BkG|Yv9{mMrS=X;zk(HNEn|f!QW-V8ZYnj6> zCPbmUVKRh$NCvlzrX;PPw$ppv$NAB)b2zU!H@)MGepmNz3(HaI?Ekvu%w7Me1>8RE z79RsI#cJWg&Ytbj^v`^`W`IcmbegF;`#0^6Y35wp`xfRlHt9dNg4KISIUmj;!peIMjQb)P>95zJ(;hex}kJ2~je`AaJ6gBSI_`{u?z_HWYr z;VH0krLahoys~P|nw*@R?Cz*c#Fcmg@Upv-EtdKkXgOHURP&dvtHcwG^xTj{6az84(6+vYS;!WhSHan6zA|UZFxY6rESee z%sRmNbNG0eWSNncHpGLuWrpsTh8w@+(qBD-*n&h0nhG?=j2_6|R(;2AnG)~v@|I5S z+|8j&`N4$N(-&lKoj7{bLYl0Nm9I^0qK>>HQYW%0(~$x&p1-hNUWdVUdg*A&0`Jsmb}e;j5UQI55llM|d+Cb!_Xa;ruP(lTOQ-LsHrtl&ky7iCg7UM<7WTQ^LpVmDJHUTsr~|%l7KNebP%$9s!plt^^TV zrG4DG*oKR^cwbj5o$=?%nyf_TBvmx%hM*0tqJ_VH{aHal!gJMALGJACwvmssE!oe` zCq~&|ekYt`g74z#$H504EdIVuMw_Tq9=y6Rdb2STY?V4+N;3iz0mzAZ>Mt4WIDUK^ zPD%^_+*&9OvX!)5pkB>(sU5+_$^M7?S}`TyR8S#+Aa0c%nM3u&pI&+GhizH6yUAwBcyF6Xp4vR|_bylgTDCi7R4dZ?V%4&`N{K?-= zVzSHJ%EYK^fwLl~9*W-!55@eU-e{W@%sToH{)5b|XmqJszzHB4ay+R*Xc1T$oXCPG z6eRD{Y+$~j(4A260o}365$0iyuI@0H1R5yHZSE2mv3zqN9R?H0bWs>%u0weUQ(SS! z6#&%ZD5c=y;5oJm)Gorr>!(kV)KzbyLWUFVff(@`Dx(v)_H!q>6!-Ar4-!OQR%{acCl@;StYB6eUmk>z)_f ziwxi1Wtw2AqvW;WiDH6@4t@122NRQlldtc}rWg^l7uJfbgw4qCDPS;x6uK}&cLC7e z_l5>`pnjtvW(f)*t*Ek+)=#gx1$hhg;MucpX%~>M&FjRyL5MA`^eXPWC_asj90Z+N znjg1Gjm!e&E(cp%u>$>X$ck!64#a|+f8%k2rTmY&I<+owd^;SrOG)rNyW7T=%ckRm%-&Z(|}vtZ~Bz%@`G`D`S}D_#cQY#0WDXr z?&q7PFwR8OGUZE(m=YLBTzc`1JXqlt={i&y(A&t^IOBd%G0hsL^8#d3^>#eDfdiNAdQZ)41#qw_#2Ig@ABQ_e%#Nnj!Al-%VR{XPeD`u zl!p}2>@@rGMV~*=*3mk6B@5OtFb&r{e^`Je(YZpLZnB*N91lO19{2^LL#%s)s5-1N ziw`dwH)f1JGizN@0|NfCdx0ECjh6Xy5uzZ56Ztsmzj|#SeaG9l{qWJ@-D^DZivC2X zJJPqTw9(X?7Wb09C9D)72XDLAt7p$&n6!}3of|J#Rjs)qu_Ei@0b<8eJ^Q6NI#Ji; z?zpV}ZK@%Ch!l_he%@Bd1sIHbG1#9!tz@FG-qCD2&df zZfBK-utc7?1UjLH-gdH`o~oAv==QyP^|THs8Kih>rKQPqY`gkI2+zHLx?cDjc`R|0 zGNqB4i(lmL!By*fXh1tFtw#o2ef1iU&-9K|aum^X!&awEJ!MPxO#oY6=!E9Cjc-)3 zF*KtQK)-3uM5uq3Z26`+I67{zy>Vs=T3^A8FgfIA&Wx;EIZf}&>e-B=NR*6;q4Czw zsG92SIU#Rt_Kw^QUnY3!BCZ7}XcCaYCPR>CHn9Xbii?Sr|9&kp z4`aLO`N&&4KxwlA#VIr>xt8gr|CLDIYNyhF?6>|dc{rnDo2h?HbB~RA4>nTx`6Wj8 zQ@6j0bDhzZ;^vO0)?~;?hMjEseq4FvNDbCsH9cBBXHF^FL(QK{96pbprSLL z%eHE_N2qdx=;aZWb_pvZI`;c>n>acY{}d<1-N4Fa1XV*0cWQ^;!I%vdRaJ*C8fl#X z>mrt6kC^xVyg82)%gs~ zCWo1l!6|bH_v~ZM!YN=)H&cu6hhf*ij+VWD_)r;0DQzR}AV!=_G&zR1O?D$(!n29T z8tLpcW38PMP1%n2TG_2-Q#3!Ut?cAHwX(}c_r$CZ%P=}OOX(4FRCqorE771-%p#v& zZKPvRyU_!Y!7?n;n;2HEd-3;ZD+N-1UG7yH$gyL_Trt4^dtox6W_A}kbe221F;MEQ zHPuM(X84)H2b(qC9&UQqHTm7U`+((X8}UxhoQXi7X1ZQnj6ld_hiu)x{c>mN=`Qt$ z1Ex}e`^M~aFo-`{)gy63dAi2--hP@`d7`i$(bwu(SCFP>WoxhXaO*L2$Pmv%hsLbD z9mF7wGu6*jke~D^VEw-A8J>LkL78$@#_va7`1Y%2CG7j(^S&kCV(x{FuXfAQ%9V$R z>BJTU@72*j!ku4T+}zU0I5-`J`K7(NaYG=XbTTIW82w&Gxo|;NkEW}wb@KTcTQ6Iv zqQG|0uSLcIHGue5b=ow)^9tv-vGw!%Zsz@jFwCe@v!RxsIlG51%5@Hyyoog~z0LKS zz87-C7#0Pe4DUJCaq9SVOGyoxoLq+$VuR|0-lmbQmvmj<+l#~Fc{_3KSV znNYu52QpSe^h-&Zi<=E)739p@1lL#|#e4v%QqCnx*gEy`p@aUV01(bty#bU$X z1E%oq z?-gEvc9+l-Gv_7Sox4K}x%#>y_i#I;e7-<0qu+dCA2X;MTiY7K+ow8qDSWS%twtio zYlpv17;`sj(#+7oUhUd1XNUwP z4?NpmX3vw>hOfZ+N7%*KGpD2IYj+I(ZR9D7vO$>USu-yDxx5?@hEtn$iYX)&ZC&Qz zTv=4U-rS%C?J!qecEeey1C9`)&&)zOx&Wd!FQ6@gOmNxj&2v?IRu+A7oR;T3sRS+P z)E$IQ>(b>bS6&SYN;+lkxnc$04SGY9e!eyk>&u~tUpTq)&Y8R69Kg|Am;Y1IY5Dzw z4@@$@pS;I{*!*InLS<9bmTqnISg&OA|KI=zcE&Q+wdDa~Ebc*}{$4?muXw>-t!*l3 z3NIr)Nz?(fLRpUUaP|PDKMX$v28nl{99$ff*PVk__G7ge|e6zQC z-m#5B$8quED=~qb$ojtE-i)+S&rX?NQ#G`7bDLhaN==a>@wmdy;TkuVu4wOwpzPsS z`D$NW?k3~ zx3si~E71)Af|L%ptpl9RczR{yj=YpdBmL3dgYI0_#qwkF+>yR%$PY)nK29%uenD)? z+W9Y2qZWkRY9BTg?J7e8!FMU@3lwJMkxhSs!2^E%4@}09*B{;AznrD#mpEkM;o;&+ zSOWsa9zYvKsR&Jx86!kRGOF?N<#T@TQ-;!qgk*Oe3K?JDHSphF=Q<82^P-OBS0Gcu zBOCiZcLdEi94oPSX$Z*+Rqa1WxXzr}VrA8Yr&4)GK}q!B`Ip~!>UTLn@kdvSHi$WA z#;5L}5<&4rWrR=)HkI;u6H9=*uPJ*L{`k>Iymkt?n%8RWPzn?R@4`I5)6%qQPj19^ znEt0c4-$It(NIa1#GuR~^JZk}@uQ_fhb2=!m-oo)^E0EVtrm)Mo@(9u5Zb!%C@ zFeuTsLs++jMIL{uZ=)4|lY(TJQM9cJ%#Ni^9r+CquKWoDe%9%qhAAoGf;TJD^7~NVi;_c04waGu6x*k#dWq{iQ#`7J{6ikp$Je2WcD^g{3H=d4+_$7@4+NHs}Y#!?V zo^=jjrh`G%y4qUGiFJ2Y0*Og!AL)A>RAA!7;Pa99OW#n;p?ASg5ItS)`}e|rHy8{o zjxy)sWc~68_oan&0FVIT1igSSw~kISYj%X4Q4sQ0*`bMDhql%h2r;Y$|5>pD zMVBrzKZehTVffaa+_+fIxw3LEED|N7}*AQmti024-eumu;PW$Dk1u0?0 zcA9XnFKch12^)qJXar4USv4mcP=Fi{A6Vgj+s( zlXZ*`SmT1LC=JmO4&M25_tpUWKgdxwE2 znmXgAe|(=Aa~|OD+y06Wv^~UjqI|cNKL~WccU47~kQAm3t*%xA0J`j<^aQly)&65`YR0Wk4~jmaYoB9&y6Zy$4oMK(kf;&Ut?Iixbh|#5Z!o} z?)_dl^Jx(~?SR0lO#hRleqZpWCC<3&l+P4q~N%NVK@7; zu&tGj`6~ucz$1BgH+X>nY4*8=u%G}=uBU>6jj8F&$Vva54E~|%DxEla{hY5azRUF= z=ehI-dP4Gpd}^^I&K~Uon5-&*RAeMTUEq!vm7xI#d!Tp2WWJHRN`?&8Fdx^48j2S; z!*RO+{tofLOGI_blqKEYZmuU-fdrgp*NdND9BWp<>Co6Ba#z62m4$P-cl_3eh$#tm zZE2~s_s5Q+G23iy*EMH=F!CsXu%YQG|7p4AEsly<&pSGXC{W)cHy_{U@SBOBWVAWH zeFh*5VrR~M21`Lr-W*{zzZDDv91uHE7OO8}JiDFYUZ}5MT2&4I6zb#8f8F~aXwA#$ z;{n*P=5IuZU_E{G|1Oo`;U_O z&aqhV&8A`SVc8kyDv6 zVy%f#^u`0_8~%1N`vk7ArqIR>$b`KCXzokX{bK>8#=NMsFgI6)9s^U@zrS;OG@eFG z+j7bKcIzxS@}}nHt>J5}6`N$Aad=H`48JC9h-C#4FHYI6T{FDu zyLArU^m+mc2T|O^loYnRPLTE54z~5i#g{eXtQMxN+4@0ygfJ?Ek)!rOU=_K-hYU#w znGkI=ZB1BM+51z0fm-m}a&iLb&EpRx+e=oK-m?mZu`>PaX5J!cG*6y~RA*70qac=G zay?9ITl=*Sk}SzR@9;{-o*7A@bEmlO9k=u6UFxX#c+DTTlg~Q\n * }\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n invariant(contextValue, 'could not find react-redux context value; please ensure the component is wrapped in a ');\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\n * Hook factory, which creates a `useStore` hook bound to a given context.\n *\n * @param {Function} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useStore` hook bound to the specified context.\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\n * A hook to access the redux store.\n *\n * @returns {any} the redux store\n *\n * @example\n *\n * import React from 'react'\n * import { useStore } from 'react-redux'\n *\n * export const ExampleComponent = () => {\n * const store = useStore()\n * return
{store.getState()}
\n * }\n */\n\nexport var useStore = createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\n *\n * @param {Function} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useDispatch` hook bound to the specified context.\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\n * A hook to access the redux `dispatch` function.\n *\n * @returns {any|function} redux store's `dispatch` function\n *\n * @example\n *\n * import React, { useCallback } from 'react'\n * import { useDispatch } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n * const dispatch = useDispatch()\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\n * return (\n *
\n * {value}\n * \n *
\n * )\n * }\n */\n\nexport var useDispatch = createDispatchHook();","import { useReducer, useRef, useEffect, useMemo, useLayoutEffect, useContext } from 'react';\nimport invariant from 'invariant';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport Subscription from '../utils/Subscription';\nimport { ReactReduxContext } from '../components/Context'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return new Subscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestSelectedState = useRef();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || latestSubscriptionCallbackError.current) {\n selectedState = selector(store.getState());\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n var errorMessage = \"An error occured while selecting the store state: \" + err.message + \".\";\n\n if (latestSubscriptionCallbackError.current) {\n errorMessage += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\nOriginal stack trace:\";\n }\n\n throw new Error(errorMessage);\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newSelectedState = latestSelector.current(store.getState());\n\n if (equalityFn(newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = newSelectedState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender({});\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\n * Hook factory, which creates a `useSelector` hook bound to a given context.\n *\n * @param {Function} [context=ReactReduxContext] Context passed to your ``.\n * @returns {Function} A `useSelector` hook bound to the specified context.\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n invariant(selector, \"You must pass a selector to useSelectors\");\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n return useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n };\n}\n/**\n * A hook to access the redux store's state. This hook takes a selector function\n * as an argument. The selector is called with the store state.\n *\n * This hook takes an optional equality comparison function as the second parameter\n * that allows you to customize the way the selected state is compared to determine\n * whether the component needs to be re-rendered.\n *\n * @param {Function} selector the selector function\n * @param {Function=} equalityFn the function that will be used to determine equality\n *\n * @returns {any} the selected state\n *\n * @example\n *\n * import React from 'react'\n * import { useSelector } from 'react-redux'\n *\n * export const CounterComponent = () => {\n * const counter = useSelector(state => state.counter)\n * return
{counter}
\n * }\n */\n\nexport var useSelector = createSelectorHook();","import Provider from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport { ReactReduxContext } from './components/Context';\nimport connect from './connect/connect';\nimport { useDispatch, createDispatchHook } from './hooks/useDispatch';\nimport { useSelector, createSelectorHook } from './hooks/useSelector';\nimport { useStore, createStoreHook } from './hooks/useStore';\nimport { setBatch } from './utils/batch';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport shallowEqual from './utils/shallowEqual';\nsetBatch(batch);\nexport { Provider, connectAdvanced, ReactReduxContext, connect, batch, useDispatch, createDispatchHook, useSelector, createSelectorHook, useStore, createStoreHook, shallowEqual };","export default (function (routes) {\n return Object.keys(routes).map(function (key) {\n return routes[key];\n });\n});","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nimport { compilePath } from 'rudy-match-path';\nimport { stripBasename } from 'rudy-history/PathUtils';\nimport { NOT_FOUND, getOptions } from '../index';\nimport objectValues from './objectValues';\nexport default (function (pathname, routesMap, serializer) {\n var basename = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : getOptions().basename;\n var strict = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : getOptions().strict;\n var parts = pathname.split('?');\n var search = parts[1];\n var query = search && serializer && serializer.parse(search);\n var routes = objectValues(routesMap);\n var routeTypes = Object.keys(routesMap);\n pathname = basename ? stripBasename(parts[0], basename) : parts[0];\n var i = 0;\n var match = void 0;\n var keys = void 0;\n\n while (!match && i < routes.length) {\n var regPath = typeof routes[i] === 'string' ? routes[i] : routes[i].path; // route may be an object containing a route or a route string itself\n\n if (!regPath) {\n i++;\n continue;\n }\n\n var _compilePath = compilePath(regPath, {\n strict: strict\n }),\n re = _compilePath.re,\n k = _compilePath.keys;\n\n match = re.exec(pathname);\n keys = k;\n i++;\n }\n\n if (match) {\n i--;\n var capitalizedWords = _typeof(routes[i]) === 'object' && routes[i].capitalizedWords;\n var coerceNumbers = _typeof(routes[i]) === 'object' && routes[i].coerceNumbers;\n var fromPath = routes[i] && typeof routes[i].fromPath === 'function' && routes[i].fromPath;\n var userMeta = _typeof(routes[i]) === 'object' && routes[i].meta;\n var type = routeTypes[i];\n var payload = (keys || []).reduce(function (payload, key, index) {\n var val = match && match[index + 1]; // item at index 0 is the overall match, whereas those after correspond to the key's index\n\n if (typeof val === 'string') {\n if (fromPath) {\n val = fromPath && fromPath(val, key.name);\n } else if (coerceNumbers && isNumber(val)) {\n val = parseFloat(val);\n } else if (capitalizedWords) {\n val = val.replace(/-/g, ' ').replace(/\\b\\w/g, function (l) {\n return l.toUpperCase();\n }); // 'my-category' -> 'My Category'\n }\n }\n\n payload[key.name] = val;\n return payload;\n }, {});\n\n var _meta = _extends({}, userMeta ? {\n meta: userMeta\n } : {}, query ? {\n query: query\n } : {});\n\n return {\n type: type,\n payload: payload,\n meta: _meta\n };\n } // This will basically will only end up being called if the developer is manually calling history.push().\n // Or, if visitors visit an invalid URL, the developer can use the NOT_FOUND type to show a not-found page to\n\n\n var meta = _extends({\n notFoundPath: pathname\n }, query ? {\n query: query\n } : {});\n\n return {\n type: NOT_FOUND,\n payload: {},\n meta: meta\n };\n});\n\nvar isNumber = function isNumber(val) {\n return /^\\d+$/.test(val);\n};","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nexport default (function (pathname, action, prev, history, kind) {\n var type = action.type,\n _action$payload = action.payload,\n payload = _action$payload === undefined ? {} : _action$payload,\n _action$meta = action.meta,\n meta = _action$meta === undefined ? {} : _action$meta;\n var query = action.query || meta.query || payload.query;\n var parts = pathname.split('?');\n var search = parts[1];\n return _extends({}, action, action.query && {\n query: query\n }, {\n type: type,\n payload: payload,\n meta: _extends({}, meta, meta.query && {\n query: query\n }, {\n location: {\n current: _extends({\n pathname: parts[0],\n type: type,\n payload: payload\n }, query && {\n query: query,\n search: search\n }),\n prev: prev,\n kind: kind,\n history: undefined\n }\n })\n });\n});\nexport var nestHistory = function nestHistory(history) {\n return history.entries ? {\n index: history.index,\n length: history.entries.length,\n entries: history.entries.slice(0) // history.entries.map(entry => entry.pathname)\n\n } : undefined;\n};","export default (function (action) {\n return !!(action.meta && action.meta.location && action.meta.location.current);\n});","export default (function (action) {\n return !!(action && action.meta && action.meta.location && action.meta.location.kind === 'redirect');\n});","export default (function () {\n return typeof window === 'undefined' || !!window.SSRtest;\n});","export default (function () {\n return typeof window !== 'undefined' && typeof window.navigator !== 'undefined' && window.navigator.product === 'ReactNative';\n});","export default (function (doc, title) {\n if (typeof title === 'string' && doc.title !== title) {\n return doc.title = title;\n }\n\n return null;\n});\nexport var getDocument = function getDocument() {\n var isSSRTest = process.env.NODE_ENV === 'test' && typeof window !== 'undefined' && window.isSSR;\n return typeof document !== 'undefined' && !isSSRTest ? document : {};\n};","import { updateScroll } from '../connectRoutes';\nexport default (function (dispatch, getState, route, selectLocationState, bag) {\n if (typeof window !== 'undefined') {\n var thunk = route.thunk;\n\n if (typeof thunk === 'function') {\n var _selectLocationState = selectLocationState(getState()),\n kind = _selectLocationState.kind,\n hasSSR = _selectLocationState.hasSSR; // call thunks always if it's not initial load of the app or only if it's load\n // without SSR setup yet, so app state is setup on client when prototyping,\n // such as with with webpack-dev-server before server infrastructure is built.\n // NEW: if there is no path, it's assumed to be a pathless route, which is always called.\n\n\n if (kind !== 'load' || kind === 'load' && !hasSSR || !route.path) {\n var prom = thunk(dispatch, getState, bag);\n\n if (prom && typeof prom.next === 'function') {\n prom.next(updateScroll);\n }\n }\n }\n }\n});","export default (function (routesMap, selectLocationState, bag) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n\n var _selectLocationState = selectLocationState(getState()),\n type = _selectLocationState.type;\n\n var route = routesMap[type];\n\n if (route && typeof route.thunk === 'function') {\n return Promise.resolve(route.thunk(dispatch, getState, bag));\n }\n\n return Promise.resolve();\n };\n});","export default (function (_ref) {\n var pathname = _ref.pathname,\n search = _ref.search;\n\n if (search) {\n if (search.indexOf('?') !== 0) {\n search = '?' + search;\n }\n\n return '' + pathname + search;\n }\n\n return pathname;\n});","export default typeof window !== 'undefined' && window.document && window.document.createElement;","import pathToAction from './pathToAction';\n\nvar _unblock = void 0;\n\nvar _removeConfirmBlocking = void 0;\n\nvar _displayConfirmLeave = void 0;\n\nexport var clearBlocking = function clearBlocking() {\n _unblock && _unblock();\n _removeConfirmBlocking && _removeConfirmBlocking();\n}; // This is the default `displayConfirmLeave` handler.\n// It receives the message to display and a callback to call when complete.\n// Pass `true` to the callback to proceed with leaving the current route.\n\nvar defaultDisplayConfirmLeave = function defaultDisplayConfirmLeave(message, callback) {\n var hasConfirm = typeof window !== 'undefined' && window.confirm;\n\n if (!hasConfirm) {\n throw new Error('[rudy] environment requires `displayConfirmLeave` option');\n }\n\n var canLeave = window.confirm(message);\n callback(canLeave);\n}; // createConfirm is called whenever you enter a route that has a `confirmLeave`\n// option. It tells the history package to block via `history.block`, but\n// to determine to do so based on our redux state-centric `confirm` handler.\n// This handler is also returned for use in the middleware to block when\n// leaving the current route via actions (i.e. as opposed to browser buttons)\n\n\nexport var createConfirm = function createConfirm(confirmLeave, store, selectLocationState, history, querySerializer, removeConfirmBlocking) {\n var confirm = function confirm(location) {\n var state = store.getState();\n var routesMap = selectLocationState(state).routesMap;\n var pathname = location.pathname;\n var action = pathToAction(pathname, routesMap, querySerializer);\n var response = confirmLeave(state, action); // we use the confirmLeave function manually in onBeforeChange, so we must\n // manually clear blocking that history.block would otherwise handle, plus\n // we remove additional onBeforeChange blocking via _removeConfirmBlocking\n\n if (!response) clearBlocking();\n return response;\n };\n\n _unblock = history.block(confirm);\n _removeConfirmBlocking = removeConfirmBlocking;\n return confirm;\n}; // confirmUI here is triggered only by onBeforeChange:\n\nexport var confirmUI = function confirmUI(message, store, action) {\n var cb = function cb(canLeave) {\n if (canLeave) {\n clearBlocking();\n store.dispatch(action);\n }\n };\n\n _displayConfirmLeave(message, cb);\n};\nexport var getUserConfirmation = function getUserConfirmation(message, cb) {\n _displayConfirmLeave(message, function (canLeave) {\n if (canLeave) clearBlocking();\n cb(canLeave);\n });\n};\nexport var setDisplayConfirmLeave = function setDisplayConfirmLeave(displayConfirmLeave) {\n _displayConfirmLeave = displayConfirmLeave || defaultDisplayConfirmLeave;\n};","import pathToAction from '../pure-utils/pathToAction';\nimport nestAction from '../pure-utils/nestAction';\nexport default (function (pathname, routesMap, prevLocation, history, kind, serializer, prevPath, prevLength) {\n var action = pathToAction(pathname, routesMap, serializer);\n kind = getKind(!!history.entries, history, kind, prevPath, prevLength);\n return nestAction(pathname, action, prevLocation, history, kind);\n});\n\nvar getKind = function getKind(isMemoryHistory, history, kind, prevPath, prevLength) {\n if (!isMemoryHistory || !prevPath || kind !== 'pop') {\n return kind;\n }\n\n if (isBack(history, prevPath)) {\n return 'back';\n } else if (isNext(history, prevPath, prevLength)) {\n return 'next';\n }\n\n return kind;\n};\n\nvar isBack = function isBack(hist, path) {\n var next = hist.entries[hist.index + 1];\n return next && next.pathname === path;\n};\n\nvar isNext = function isNext(hist, path, length) {\n var prev = hist.entries[hist.index - 1];\n var notPushed = length === hist.length;\n return prev && prev.pathname === path && notPushed;\n};","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nimport { compileParamsToPath } from 'rudy-match-path';\nexport default (function (action, routesMap, serializer) {\n var route = routesMap[action.type];\n var routePath = (typeof route === 'undefined' ? 'undefined' : _typeof(route)) === 'object' ? route.path : route;\n\n var params = _payloadToParams(route, action.payload);\n\n var path = compileParamsToPath(routePath, params) || '/';\n var query = action.query || action.meta && action.meta.query || action.payload && action.payload.query;\n var search = query && serializer && serializer.stringify(query);\n return search ? path + '?' + search : path;\n});\n\nvar _payloadToParams = function _payloadToParams(route) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(params).reduce(function (sluggifedParams, key) {\n var segment = params[key]; // $FlowFixMe\n\n sluggifedParams[key] = transformSegment(segment, route, key);\n return sluggifedParams;\n }, {});\n};\n\nvar transformSegment = function transformSegment(segment, route, key) {\n if (typeof route.toPath === 'function') {\n return route.toPath(segment, key);\n } else if (typeof segment === 'string') {\n // Ask James \"should it return arrays?\"\n if (segment.includes('/')) {\n return segment.split('/');\n }\n\n if (route.capitalizedWords === true) {\n return segment.replace(/ /g, '-').toLowerCase();\n }\n\n return segment;\n } else if (typeof segment === 'number') {\n return segment;\n }\n};","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nimport actionToPath from '../pure-utils/actionToPath';\nimport nestAction from '../pure-utils/nestAction';\nimport { NOT_FOUND } from '../index';\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nexport default (function (action, routesMap, prevLocation, history, notFoundPath, serializer) {\n try {\n var pathname = actionToPath(action, routesMap, serializer);\n var kind = getKind(!!history.entries, pathname, history, action);\n return nestAction(pathname, action, prevLocation, history, kind);\n } catch (e) {\n if (__DEV__) {\n console.error('[redux-first-router] Internal exception when parsing action, fallback to NOT_FOUND. Original exception: ', e);\n }\n\n var payload = _extends({}, action.payload);\n\n return nestAction(notFoundPath || prevLocation.pathname || '/', _extends({}, action, {\n type: NOT_FOUND,\n payload: payload\n }), prevLocation, history);\n }\n}); // REACT NATIVE FEATURE:\n// emulate npm `history` package and `historyCreateAction` so that actions\n// and state indicate the user went back or forward. The idea is if you are\n// going back or forward to a route you were just at, apps can determine\n// from `state.location.kind === 'back|next'` and `action.kind` that things like\n// scroll position should be restored.\n// NOTE: for testability, history is also returned to make this a pure function\n\nvar getKind = function getKind(isMemoryHistory, pathname, history, action) {\n var kind = action.meta && action.meta.location && action.meta.location.kind;\n\n if (kind) {\n return kind;\n } else if (!isMemoryHistory) {\n return 'push';\n }\n\n if (goingBack(history, pathname)) {\n history.index--;\n return 'back';\n } else if (goingForward(history, pathname)) {\n history.index++;\n return 'next';\n }\n\n return 'push';\n};\n\nvar goingBack = function goingBack(hist, path) {\n var prev = hist.entries[hist.index - 1];\n return prev && prev.pathname === path;\n};\n\nvar goingForward = function goingForward(hist, path) {\n var next = hist.entries[hist.index + 1];\n return next && next.pathname === path;\n};","import nestAction from '../pure-utils/nestAction';\nimport { NOT_FOUND } from '../index';\nexport default (function (action, location, prevLocation, history, notFoundPath) {\n var payload = action.payload;\n var meta = action.meta;\n var prevPath = location.pathname;\n var kind = meta && meta.location && meta.location.kind || // use case: kind === 'redirect'\n location.kind === 'load' && 'load' || 'push';\n var pathname = meta && meta.notFoundPath || kind === 'redirect' && notFoundPath || prevPath || '/';\n return nestAction(pathname, {\n type: NOT_FOUND,\n payload: payload\n }, prevLocation, history, kind);\n});","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nimport { NOT_FOUND, ADD_ROUTES } from '../index';\nimport isServer from '../pure-utils/isServer';\nimport { nestHistory } from '../pure-utils/nestAction';\nexport default (function (initialState, routesMap) {\n return function () {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments[1];\n routesMap = state.routesMap || routesMap;\n var route = routesMap[action.type];\n\n if (action.type === NOT_FOUND || route && !action.error && (typeof route === 'string' || route.path) && (action.meta.location.current.pathname !== state.pathname || action.meta.location.current.search !== state.search || action.meta.location.kind === 'load')) {\n var _query = action.meta.location.current.query;\n var _search = action.meta.location.current.search;\n return _extends({\n pathname: action.meta.location.current.pathname,\n type: action.type,\n payload: _extends({}, action.payload)\n }, _query && {\n query: _query,\n search: _search\n }, {\n prev: action.meta.location.prev,\n kind: action.meta.location.kind,\n history: action.meta.location.history,\n hasSSR: state.hasSSR,\n routesMap: routesMap\n });\n } else if (route && !action.error && (typeof route === 'string' || route.path) && action.meta.location.current.pathname === state.pathname && action.meta.location.current.search === state.search && action.meta.location.kind !== state.kind) {\n return _extends({}, state, {\n kind: action.meta.location.kind\n });\n } else if (action.type === ADD_ROUTES) {\n return _extends({}, state, {\n routesMap: _extends({}, state.routesMap, action.payload.routes)\n });\n }\n\n return state;\n };\n});\nexport var getInitialState = function getInitialState(currentPathname, meta, type, payload, routesMap, history) {\n return _extends({\n search: currentPathname.split('?')[1],\n pathname: currentPathname.split('?')[0],\n type: type,\n payload: payload\n }, meta, {\n prev: {\n pathname: '',\n type: '',\n payload: {}\n },\n kind: undefined,\n history: nestHistory(history),\n hasSSR: isServer() ? true : undefined,\n // client uses initial server `hasSSR` state setup here\n routesMap: routesMap\n });\n};","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nimport createBrowserHistory from 'rudy-history/createBrowserHistory';\nimport createMemoryHistory from 'rudy-history/createMemoryHistory';\nimport { stripTrailingSlash, addLeadingSlash } from 'rudy-history/PathUtils';\nimport pathToAction from './pure-utils/pathToAction';\nimport { nestHistory } from './pure-utils/nestAction';\nimport isLocationAction from './pure-utils/isLocationAction';\nimport isRedirectAction from './pure-utils/isRedirectAction';\nimport isServer from './pure-utils/isServer';\nimport isReactNative from './pure-utils/isReactNative';\nimport changePageTitle, { getDocument } from './pure-utils/changePageTitle';\nimport attemptCallRouteThunk from './pure-utils/attemptCallRouteThunk';\nimport createThunk from './pure-utils/createThunk';\nimport pathnamePlusSearch from './pure-utils/pathnamePlusSearch';\nimport canUseDom from './pure-utils/canUseDom';\nimport { clearBlocking, createConfirm, confirmUI, setDisplayConfirmLeave, getUserConfirmation } from './pure-utils/confirmLeave';\nimport historyCreateAction from './action-creators/historyCreateAction';\nimport middlewareCreateAction from './action-creators/middlewareCreateAction';\nimport middlewareCreateNotFoundAction from './action-creators/middlewareCreateNotFoundAction';\nimport createLocationReducer, { getInitialState } from './reducer/createLocationReducer';\nimport { NOT_FOUND, ADD_ROUTES } from './index';\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n/** PRIMARY EXPORT - `connectRoutes(history, routeMap, options)`:\n *\n * PURPOSE: to provide set-it-forget-it syncing of actions to the address bar and vice\n * versa, using the pairing of action types to express-style routePaths bi-directionally.\n *\n * EXAMPLE:\n * with routeMap `{ FOO: '/foo/:paramName' }`,\n *\n * pathname '/foo/bar' would become:\n * `{ type: 'FOO', payload: { paramName: 'bar' } }`\n *\n * AND\n *\n * action `{ type: 'FOO', payload: { paramName: 'bar' } }`\n * becomes: pathname '/foo/bar'\n *\n *\n * HOW: Firstly, the middleware listens to received actions and then converts them to the\n * pathnames it applies to the address bar (via `history.push({ pathname })`. It also formats\n * the action to be location-aware, primarily by including a matching pathname, which the\n * location reducer listens to, and which user reducers can also make use of.\n *\n * However, user reducers typically only need to be concerned with the type\n * and payload like they are accustomed to. That's the whole purpose of this package.\n * The idea is by matching action types to routePaths, it's set it and forget it!\n *\n * Secondly, a history listener listens to URL changes and dispatches actions with\n * types and payloads that match the pathname. Hurray! Browse back/next buttons now work!\n *\n * Both the history listener and middleware are made to not get into each other's way, i.e.\n * avoiding double dispatching and double address bar changes.\n *\n *\n * VERY IMPORTANT NOTE ON SSR: if you're wondering, `connectRoutes()` when called returns\n * functions in a closure that provide access to variables in a private\n * \"per instance\" fashion in order to be used in SSR without leaking\n * state between SSR requests :).\n *\n * As much as possible has been refactored out of this file into pure or\n * near-pure utility functions.\n*/\n\n\nexport default (function () {\n var routesMap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (__DEV__) {\n if (options.restoreScroll && typeof options.restoreScroll !== 'function') {\n throw new Error('[redux-first-router] invalid `restoreScroll` option. Using\\n https://github.com/faceyspacey/redux-first-router-restore-scroll\\n please call `restoreScroll` and assign it the option key\\n of the same name.');\n }\n }\n /** INTERNAL ENCLOSED STATE (PER INSTANCE FOR SSR!) */\n\n\n var _options$notFoundPath = options.notFoundPath,\n notFoundPath = _options$notFoundPath === undefined ? '/not-found' : _options$notFoundPath,\n _options$scrollTop = options.scrollTop,\n scrollTop = _options$scrollTop === undefined ? false : _options$scrollTop,\n location = options.location,\n title = options.title,\n onBeforeChange = options.onBeforeChange,\n onAfterChange = options.onAfterChange,\n onBackNext = options.onBackNext,\n restoreScroll = options.restoreScroll,\n _options$initialDispa = options.initialDispatch,\n shouldPerformInitialDispatch = _options$initialDispa === undefined ? true : _options$initialDispa,\n querySerializer = options.querySerializer,\n displayConfirmLeave = options.displayConfirmLeave,\n extra = options.extra; // The options must be initialized ASAP to prevent empty options being\n // received in `getOptions` after the initial events emitted\n\n _options = options;\n setDisplayConfirmLeave(displayConfirmLeave);\n\n if (options.basename) {\n options.basename = stripTrailingSlash(addLeadingSlash(options.basename));\n }\n\n var isBrowser = canUseDom && process.env.NODE_ENV !== 'test';\n var standard = isBrowser ? createBrowserHistory : createMemoryHistory;\n var createHistory = options.createHistory || standard;\n var entries = options.initialEntries || '/'; // fyi only memoryHistory needs initialEntries\n\n var initialEntries = typeof entries === 'string' ? [entries] : entries;\n var history = createHistory({\n basename: options.basename,\n initialEntries: initialEntries,\n getUserConfirmation: getUserConfirmation\n }); // very important: used for comparison to determine address bar changes\n\n var currentPath = pathnamePlusSearch(history.location);\n var prevLocation = {\n // maintains previous location state in location reducer\n pathname: '',\n type: '',\n payload: {}\n };\n var selectLocationState = typeof location === 'function' ? location : location ? function (state) {\n return state[location];\n } : function (state) {\n return state.location;\n };\n var selectTitleState = typeof title === 'function' ? title : title ? function (state) {\n return state[title];\n } : function (state) {\n return state.title;\n };\n var scrollBehavior = restoreScroll && restoreScroll(history);\n var initialAction = pathToAction(currentPath, routesMap, querySerializer);\n var type = initialAction.type,\n payload = initialAction.payload,\n meta = initialAction.meta;\n var INITIAL_LOCATION_STATE = getInitialState(currentPath, meta, type, payload, routesMap, history);\n var prevState = INITIAL_LOCATION_STATE; // used only to pass as 1st arg to `scrollBehavior.updateScroll` if used\n\n var nextState = {}; // used as 2nd arg to `scrollBehavior.updateScroll` and to change `document.title`\n\n var prevLength = 1; // used by `historyCreateAction` to calculate if moving along history.entries track\n\n var reducer = createLocationReducer(INITIAL_LOCATION_STATE, routesMap);\n var initialBag = {\n action: initialAction,\n extra: extra\n };\n var thunk = createThunk(routesMap, selectLocationState, initialBag);\n\n var initialDispatch = function initialDispatch() {\n return _initialDispatch && _initialDispatch();\n };\n\n var windowDocument = getDocument(); // get plain object for window.document if server side\n\n var navigators = void 0;\n var patchNavigators = void 0;\n var actionToNavigation = void 0;\n var navigationToAction = void 0; // this value is used to hold temp state between consecutive runs through\n // the middleware (i.e. from new dispatches triggered within the middleware)\n\n var tempVal = void 0;\n\n if (options.navigators) {\n // redux-first-router-navigation reformats the `navigators` option\n // to have the navigators nested one depth deeper, so as to include\n // the various helper functions from its package\n if (__DEV__ && !options.navigators.navigators) {\n throw new Error('[redux-first-router] invalid `navigators` option. Pass your map\\n of navigators to the default import from \\'redux-first-router-navigation\\'.\\n Don\\'t forget: the keys are your redux state keys.');\n }\n\n navigators = options.navigators.navigators;\n patchNavigators = options.navigators.patchNavigators;\n actionToNavigation = options.navigators.actionToNavigation;\n navigationToAction = options.navigators.navigationToAction;\n patchNavigators(navigators);\n }\n /** MIDDLEWARE\n * 1) dispatches actions with location info in the `meta` key by matching the received action\n * type + payload to express style routePaths (which also results in location reducer state updating)\n * 2) changes the address bar url and page title if the currentPathName changes, while\n * avoiding collisions with simultaneous browser history changes\n */\n\n\n var middleware = function middleware(store) {\n return function (next) {\n return function (action) {\n // We have chosen to not change routes on errors, while letting other middleware\n // handle it. Perhaps in the future we will explicitly handle it (as an option)\n if (action.error) return next(action); // code-splitting functionliaty to add routes after store is initially configured\n\n if (action.type === ADD_ROUTES) {\n var _selectLocationState2 = selectLocationState(store.getState()),\n _type = _selectLocationState2.type;\n\n var _route = routesMap[_type];\n routesMap = _extends({}, routesMap, action.payload.routes);\n var result = next(action);\n var nextRoute = routesMap[_type];\n\n if (_route !== nextRoute) {\n if (_confirm !== null) {\n clearBlocking();\n }\n\n if ((typeof nextRoute === 'undefined' ? 'undefined' : _typeof(nextRoute)) === 'object' && nextRoute.confirmLeave) {\n _confirm = createConfirm(nextRoute.confirmLeave, store, selectLocationState, history, querySerializer, function () {\n return _confirm = null;\n });\n }\n }\n\n return result;\n } // navigation transformation specific to React Navigation\n\n\n var navigationAction = void 0;\n\n if (navigators && action.type.indexOf('Navigation/') === 0) {\n var _navigationToAction = navigationToAction(navigators, store, routesMap, action);\n\n navigationAction = _navigationToAction.navigationAction;\n action = _navigationToAction.action;\n }\n\n var route = routesMap[action.type]; // We now support \"routes\" without paths for the purpose of dispatching thunks according\n // to the same idiom as full-fledged routes. The purpose is uniformity of async actions.\n // The URLs will NOT change.\n\n if ((typeof route === 'undefined' ? 'undefined' : _typeof(route)) === 'object' && !route.path) {\n var _nextAction = next(action);\n\n attemptCallRouteThunk(store.dispatch, store.getState, route, selectLocationState, {\n action: _nextAction,\n extra: extra\n });\n return _nextAction;\n } // START THE TYPICAL FLOW:\n\n\n if (action.type === NOT_FOUND && !isLocationAction(action)) {\n // user decided to dispatch `NOT_FOUND`, so we fill in the missing location info\n action = middlewareCreateNotFoundAction(action, selectLocationState(store.getState()), prevLocation, history, notFoundPath);\n } else if (route && !isLocationAction(action)) {\n // THE MAGIC: dispatched action matches a connected type, so we generate a\n // location-aware action and also as a result update location reducer state.\n action = middlewareCreateAction(action, routesMap, prevLocation, history, notFoundPath, querySerializer);\n }\n\n if (navigators) {\n action = actionToNavigation(navigators, action, navigationAction, route);\n } // DISPATCH LIFECYLE:\n\n\n var skip = void 0;\n\n if ((route || action.type === NOT_FOUND) && action.meta) {\n // satisify flow with `action.meta` check\n skip = _beforeRouteChange(store, history, action);\n }\n\n if (skip) return;\n var nextAction = next(action);\n\n if (route || action.type === NOT_FOUND) {\n _afterRouteChange(store, route, nextAction);\n }\n\n return nextAction;\n };\n };\n };\n\n var _beforeRouteChange = function _beforeRouteChange(store, history, action) {\n var location = action.meta.location;\n\n if (_confirm) {\n var message = _confirm(location.current);\n\n if (message) {\n confirmUI(message, store, action);\n return true; // skip if there's a message to show in the confirm UI\n }\n\n _confirm = null;\n }\n\n if (onBeforeChange) {\n var skip = void 0;\n\n var redirectAwareDispatch = function redirectAwareDispatch(action) {\n if (isRedirectAction(action)) {\n skip = true;\n prevLocation = location.current;\n\n var _nextPath = pathnamePlusSearch(location.current);\n\n var isHistoryChange = _nextPath === currentPath; // this insures a `history.push` is called instead of `history.replace`\n // even though it's a redirect, since unlike route changes triggered\n // from the browser buttons, the URL did not change yet.\n\n if (!isHistoryChange && !isServer()) {\n tempVal = 'onBeforeChange';\n }\n }\n\n return store.dispatch(action);\n };\n\n var bag = {\n action: action,\n extra: extra\n };\n onBeforeChange(redirectAwareDispatch, store.getState, bag);\n if (skip) return true;\n }\n\n prevState = selectLocationState(store.getState());\n prevLocation = location.current;\n prevLength = history.length; // addressbar updated before action dispatched like in history.listener\n\n _middlewareAttemptChangeUrl(location, history); // now we can finally set the history on the action since we get its\n // value from the `history` whose value only changes after `push()`\n\n\n if (isReactNative()) {\n location.history = nestHistory(history);\n }\n };\n\n var _afterRouteChange = function _afterRouteChange(store, route, action) {\n var dispatch = store.dispatch;\n var state = store.getState();\n var kind = selectLocationState(state).kind;\n var title = selectTitleState(state);\n var bag = {\n action: action,\n extra: extra\n };\n nextState = selectLocationState(state);\n\n if ((typeof route === 'undefined' ? 'undefined' : _typeof(route)) === 'object') {\n var skip = false;\n\n var redirectAwareDispatch = function redirectAwareDispatch(action) {\n if (isRedirectAction(action)) skip = true;\n return store.dispatch(action);\n };\n\n attemptCallRouteThunk(redirectAwareDispatch, store.getState, route, selectLocationState, bag);\n if (skip) return;\n }\n\n if (onAfterChange) {\n onAfterChange(dispatch, store.getState, bag);\n }\n\n if (!isServer()) {\n if (kind) {\n if (typeof onBackNext === 'function' && /back|next|pop/.test(kind)) {\n onBackNext(dispatch, store.getState, bag);\n }\n\n setTimeout(function () {\n changePageTitle(windowDocument, title);\n\n if (scrollTop) {\n return window.scrollTo(0, 0);\n }\n\n _updateScroll(false);\n });\n }\n\n if ((typeof route === 'undefined' ? 'undefined' : _typeof(route)) === 'object' && route.confirmLeave) {\n _confirm = createConfirm(route.confirmLeave, store, selectLocationState, history, querySerializer, function () {\n return _confirm = null;\n });\n }\n }\n };\n\n var _middlewareAttemptChangeUrl = function _middlewareAttemptChangeUrl(location, history) {\n // IMPORTANT: insure history hasn't already handled location change\n var nextPath = pathnamePlusSearch(location.current);\n\n if (nextPath !== currentPath) {\n // keep currentPath up to date for comparison to prevent double dispatches\n // between BROWSER back/forward button usage vs middleware-generated actions\n currentPath = nextPath; // IMPORTANT: must happen before history.push() (to prevent double handling)\n // for React Native, in the case `back` or `next` is\n // not called directly, `middlewareCreateAction` may emulate\n // `history` backNext actions to support features such\n // as scroll restoration. In those cases, we need to prevent\n // pushing new routes on to the entries array. `stealth` is\n // a React Navigation feature for changing StackNavigators\n // without triggering other navigators (such as a TabNavigator)\n // to change as well. It allows you to reset hidden StackNavigators.\n\n var kind = location.kind;\n var manuallyInvoked = kind && /back|next|pop|stealth/.test(kind);\n\n if (!manuallyInvoked) {\n var isRedirect = kind === 'redirect' && tempVal !== 'onBeforeChange';\n var method = isRedirect ? 'replace' : 'push';\n history[method](currentPath); // change address bar corresponding to matched actions from middleware\n }\n }\n };\n /** ENHANCER\n * 1) dispatches actions with types and payload extracted from the URL pattern\n * when the browser history changes\n * 2) on load of the app dispatches an action corresponding to the initial url\n */\n\n\n var enhancer = function enhancer(createStore) {\n return function (reducer, preloadedState, enhancer) {\n // routesMap stored in location reducer will be stringified as it goes from the server to client\n // and as a result functions in route objects will be removed--here's how we insure we bring them back\n if (!isServer() && preloadedState && selectLocationState(preloadedState)) {\n selectLocationState(preloadedState).routesMap = routesMap;\n }\n\n var store = createStore(reducer, preloadedState, enhancer);\n var state = store.getState();\n var location = state && selectLocationState(state);\n\n if (!location || !location.pathname) {\n throw new Error('[redux-first-router] you must provide the key of the location\\n reducer state and properly assigned the location reducer to that key.');\n }\n\n history.listen(_historyAttemptDispatchAction.bind(null, store)); // dispatch the first location-aware action so initial app state is based on the url on load\n\n if (!location.hasSSR || isServer()) {\n // only dispatch on client before SSR is setup, which passes state on to the client\n _initialDispatch = function _initialDispatch() {\n var action = historyCreateAction(currentPath, routesMap, prevLocation, history, 'load', querySerializer);\n store.dispatch(action);\n };\n\n if (shouldPerformInitialDispatch !== false) {\n _initialDispatch();\n }\n } else {\n // set correct prevLocation on client that has SSR so that it will be\n // assigned to `action.meta.location.prev` and the corresponding state\n prevLocation = location;\n var route = routesMap[location.type];\n\n if ((typeof route === 'undefined' ? 'undefined' : _typeof(route)) === 'object' && route.confirmLeave) {\n _confirm = createConfirm(route.confirmLeave, store, selectLocationState, history, querySerializer, function () {\n return _confirm = null;\n });\n }\n } // update the scroll position after initial rendering of page\n\n\n if (!isServer()) setTimeout(function () {\n return _updateScroll(false);\n });\n return store;\n };\n };\n\n var _historyAttemptDispatchAction = function _historyAttemptDispatchAction(store, location, historyAction) {\n // IMPORTANT: insure middleware hasn't already handled location change:\n var nextPath = pathnamePlusSearch(location);\n\n if (nextPath !== currentPath) {\n var kind = historyAction === 'REPLACE' ? 'redirect' : historyAction; // THE MAGIC: parse the address bar path into a matched action\n\n var action = historyCreateAction(nextPath, routesMap, prevLocation, history, kind.toLowerCase(), querySerializer, currentPath, prevLength);\n currentPath = nextPath; // IMPORTANT: must happen before dispatch (to prevent double handling)\n\n store.dispatch(action); // dispatch route type + payload corresponding to browser back/forward usage\n }\n };\n /* SIDE_EFFECTS - client-only state that must escape closure */\n\n\n _history = history;\n _scrollBehavior = scrollBehavior;\n _selectLocationState = selectLocationState;\n\n var _initialDispatch = void 0;\n\n var _confirm = null;\n\n _updateScroll = function _updateScroll() {\n var performedByUser = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (scrollBehavior) {\n if (performedByUser || !scrollBehavior.manual) {\n scrollBehavior.updateScroll(prevState, nextState);\n }\n } else if (__DEV__ && performedByUser) {\n throw new Error('[redux-first-router] you must set the `restoreScroll` option before\\n you can call `updateScroll`');\n }\n };\n /* RETURN */\n\n\n return {\n reducer: reducer,\n middleware: middleware,\n enhancer: enhancer,\n thunk: thunk,\n initialDispatch: initialDispatch,\n // returned only for tests (not for use in application code)\n _middlewareAttemptChangeUrl: _middlewareAttemptChangeUrl,\n _afterRouteChange: _afterRouteChange,\n _historyAttemptDispatchAction: _historyAttemptDispatchAction,\n windowDocument: windowDocument,\n history: history\n };\n});\n/** SIDE EFFECTS:\n * Client code needs a simple `push`,`back` + `next` functions because it's convenient for\n * prototyping. It will not harm SSR, so long as you don't use it server side. So if you use it, that means DO NOT\n * simulate clicking links server side--and dont do that, dispatch actions to setup state instead.\n *\n * THE IDIOMATIC WAY: instead use https://github.com/faceyspacey/redux-first-router-link 's ``\n * component to generate SEO friendly urls. As its `href` prop, you pass it a path, array of path\n * segments or action, and internally it will use `connectRoutes` to change the address bar and\n * dispatch the correct final action from middleware.\n *\n * NOTE ON BACK FUNCTIONALITY: The better way to accomplish a back button is to use your redux state to determine\n * the previous URL. The location reducer will also contain relevant info. But if you must,\n * this is here for convenience and it basically simulates the user pressing the browser\n * back button, which of course the system picks up and parses into an action.\n */\n\nvar _history = void 0;\n\nvar _scrollBehavior = void 0;\n\nvar _updateScroll = void 0;\n\nvar _selectLocationState = void 0;\n\nvar _options = void 0;\n\nexport var push = function push(pathname) {\n return _history.push(pathname);\n};\nexport var replace = function replace(pathname) {\n return _history.replace(pathname);\n};\nexport var back = function back() {\n return _history.goBack();\n};\nexport var next = function next() {\n return _history.goForward();\n};\nexport var go = function go(n) {\n return _history.go(n);\n};\nexport var canGo = function canGo(n) {\n return _history.canGo(n);\n};\nexport var canGoBack = function canGoBack() {\n return !!(_history.entries && _history.entries[_history.index - 1]);\n};\nexport var canGoForward = function canGoForward() {\n return !!(_history.entries && _history.entries[_history.index + 1]);\n};\nexport var prevPath = function prevPath() {\n var entry = _history.entries[_history.index - 1];\n return entry && entry.pathname;\n};\nexport var nextPath = function nextPath() {\n var entry = _history.entries[_history.index + 1];\n return entry && entry.pathname;\n};\nexport var history = function history() {\n return _history;\n};\nexport var scrollBehavior = function scrollBehavior() {\n return _scrollBehavior;\n};\nexport var updateScroll = function updateScroll() {\n return _updateScroll && _updateScroll();\n};\nexport var selectLocationState = function selectLocationState(state) {\n return _selectLocationState(state);\n};\nexport var getOptions = function getOptions() {\n return _options || {};\n};","export { default as connectRoutes, push, replace, back, next, go, canGo, canGoBack, canGoForward, prevPath, nextPath, history, scrollBehavior, updateScroll, selectLocationState, getOptions } from './connectRoutes';\nexport var NOT_FOUND = '@@redux-first-router/NOT_FOUND';\nexport var ADD_ROUTES = '@@redux-first-router/ADD_ROUTES';\nexport { default as redirect } from './action-creators/redirect';\nexport { default as actionToPath } from './pure-utils/actionToPath';\nexport { default as pathToAction } from './pure-utils/pathToAction';\nexport { default as isLocationAction } from './pure-utils/isLocationAction';\nexport { default as setKind } from './pure-utils/setKind';\nexport { default as addRoutes } from './action-creators/addRoutes';","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function') {\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.compileParamsToPath = exports.compilePath = undefined;\n\nvar _pathToRegexp = require('path-to-regexp');\n\nvar _pathToRegexp2 = _interopRequireDefault(_pathToRegexp);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _toArray(arr) {\n return Array.isArray(arr) ? arr : Array.from(arr);\n}\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compilePath = exports.compilePath = function compilePath(pattern) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$end = options.end,\n end = _options$end === undefined ? true : _options$end,\n _options$strict = options.strict,\n strict = _options$strict === undefined ? false : _options$strict;\n var cacheKey = '' + (end ? 't' : 'f') + (strict ? 't' : 'f');\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n if (cache[pattern]) return cache[pattern];\n var keys = [];\n var re = (0, _pathToRegexp2.default)(pattern, keys, options);\n var compiledPattern = {\n re: re,\n keys: keys\n };\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledPattern;\n cacheCount++;\n }\n\n return compiledPattern;\n};\n\nvar toPathCache = {};\n\nvar compileParamsToPath = exports.compileParamsToPath = function compileParamsToPath(path) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var toPath = toPathCache[path] || _pathToRegexp2.default.compile(path);\n\n toPathCache[path] = toPath;\n return toPath(params);\n};\n\nvar matchPath = function matchPath(pathname) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (typeof options === 'string') {\n options = {\n path: options,\n exact: false,\n strict: false\n };\n }\n\n var _options = options,\n _options$path = _options.path,\n path = _options$path === undefined ? '/' : _options$path,\n _options$exact = _options.exact,\n exact = _options$exact === undefined ? false : _options$exact,\n _options$strict2 = _options.strict,\n strict = _options$strict2 === undefined ? false : _options$strict2;\n\n var _compilePath = compilePath(path, {\n end: exact,\n strict: strict\n }),\n re = _compilePath.re,\n keys = _compilePath.keys;\n\n var match = re.exec(pathname);\n if (!match) return null;\n\n var _match = _toArray(match),\n url = _match[0],\n values = _match.slice(1);\n\n var isExact = pathname === url;\n if (exact && !isExact) return null;\n return {\n path: path,\n // the path pattern used to match\n url: path === '/' && url === '' ? '/' : url,\n // the matched portion of the URL\n isExact: isExact,\n // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n};\n\nexports.default = matchPath;","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n'use strict';\n/* eslint-disable no-unused-vars */\n\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n if (val === null || val === undefined) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n\n return Object(val);\n}\n\nfunction shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n } // Detect buggy property enumeration order in older V8 versions.\n // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\n\n var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\n test1[5] = 'de';\n\n if (Object.getOwnPropertyNames(test1)[0] === '5') {\n return false;\n } // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\n\n var test2 = {};\n\n for (var i = 0; i < 10; i++) {\n test2['_' + String.fromCharCode(i)] = i;\n }\n\n var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n return test2[n];\n });\n\n if (order2.join('') !== '0123456789') {\n return false;\n } // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\n\n var test3 = {};\n 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n test3[letter] = letter;\n });\n\n if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n return false;\n }\n\n return true;\n } catch (err) {\n // We don't expect any of the above to throw, but better to be safe.\n return false;\n }\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n\n return to;\n};","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n'use strict';\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function warning() {};\n\nif (process.env.NODE_ENV !== 'production') {\n warning = function warning(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.length < 10 || /^[s\\W]*$/.test(format)) {\n throw new Error('The warning format should be able to uniquely identify this ' + 'warning. Please, use a more descriptive format than: ' + format);\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n };\n}\n\nmodule.exports = warning;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}","'use strict';\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nvar ReactIs = require('react-is');\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nfunction getStatics(component) {\n if (ReactIs.isMemo(component)) {\n return MEMO_STATICS;\n }\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;","/* global window */\nimport ponyfill from './ponyfill.js';\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n return fn.apply(thisArg, args);\n };\n};","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n}\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\n\n\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};","'use strict';\n\nvar utils = require('./utils');\n\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter; // Only Node.JS has a process variable that is of [[Class]] process\n\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n }\n\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data)) {\n return data;\n }\n\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n\n return data;\n }],\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) {\n /* Ignore */\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n maxContentLength: -1,\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\nmodule.exports = defaults;","'use strict';\n\nvar utils = require('./../utils');\n\nvar settle = require('./../core/settle');\n\nvar buildURL = require('./../helpers/buildURL');\n\nvar parseHeaders = require('./../helpers/parseHeaders');\n\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\n\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest(); // HTTP basic authentication\n\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true); // Set the request timeout in MS\n\n request.timeout = config.timeout; // Listen for ready state\n\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n } // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n\n\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n } // Prepare the response\n\n\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n settle(resolve, reject, response); // Clean up request\n\n request = null;\n }; // Handle browser request cancellation (as opposed to a manual cancellation)\n\n\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request)); // Clean up request\n\n request = null;\n }; // Handle low level network errors\n\n\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request)); // Clean up request\n\n request = null;\n }; // Handle timeout\n\n\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', request)); // Clean up request\n\n request = null;\n }; // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies'); // Add xsrf header\n\n\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n } // Add headers to the request\n\n\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n } // Add withCredentials to request if needed\n\n\n if (config.withCredentials) {\n request.withCredentials = true;\n } // Add responseType to request if needed\n\n\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n } // Handle progress if needed\n\n\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n } // Not all browsers support upload events\n\n\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel); // Clean up request\n\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n } // Send the request\n\n\n request.send(requestData);\n });\n};","'use strict';\n\nvar enhanceError = require('./enhanceError');\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\n\n\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};","'use strict';\n\nvar utils = require('../utils');\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\n\n\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n utils.forEach(['baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken', 'socketPath'], function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n return config;\n};","'use strict';\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\n\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\nmodule.exports = Cancel;","'use strict';\n\nexports.__esModule = true;\nexports.locationsAreEqual = exports.createLocation = undefined;\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _resolvePathname = require('resolve-pathname');\n\nvar _resolvePathname2 = _interopRequireDefault(_resolvePathname);\n\nvar _valueEqual = require('value-equal');\n\nvar _valueEqual2 = _interopRequireDefault(_valueEqual);\n\nvar _PathUtils = require('./PathUtils');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nvar createLocation = exports.createLocation = function createLocation(path, state, key, currentLocation) {\n var location = void 0;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = (0, _PathUtils.parsePath)(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = (0, _resolvePathname2.default)(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n};\n\nvar locationsAreEqual = exports.locationsAreEqual = function locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && (0, _valueEqual2.default)(a.state, b.state);\n};","'use strict';\n\nexports.__esModule = true;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nvar createTransitionManager = function createTransitionManager() {\n var prompt = null;\n\n var setPrompt = function setPrompt(nextPrompt) {\n (0, _warning2.default)(prompt == null, 'A history supports only one prompt at a time');\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n };\n\n var confirmTransitionTo = function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n (0, _warning2.default)(false, 'A history needs a getUserConfirmation function in order to use a prompt message');\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n };\n\n var listeners = [];\n\n var appendListener = function appendListener(fn) {\n var isActive = true;\n\n var listener = function listener() {\n if (isActive) fn.apply(undefined, arguments);\n };\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n };\n\n var notifyListeners = function notifyListeners() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(undefined, args);\n });\n };\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n};\n\nexports.default = createTransitionManager;","module.exports = require('./lib/axios');","export default function symbolObservablePonyfill(root) {\n var result;\n var Symbol = root.Symbol;\n\n if (typeof Symbol === 'function') {\n if (Symbol.observable) {\n result = Symbol.observable;\n } else {\n result = Symbol('observable');\n Symbol.observable = result;\n }\n } else {\n result = '@@observable';\n }\n\n return result;\n}\n;","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _createTransitionManager = require('./createTransitionManager');\n\nvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\nvar _DOMUtils = require('./DOMUtils');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nvar getHistoryState = function getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n};\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nvar createBrowserHistory = function createBrowserHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n (0, _invariant2.default)(_DOMUtils.canUseDOM, 'Browser history needs a DOM');\n var globalHistory = window.history;\n var canUseHistory = (0, _DOMUtils.supportsHistory)();\n var needsHashChangeListener = !(0, _DOMUtils.supportsPopStateOnHashChange)();\n var _props$forceRefresh = props.forceRefresh,\n forceRefresh = _props$forceRefresh === undefined ? false : _props$forceRefresh,\n _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? _DOMUtils.getConfirmation : _props$getUserConfirm,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n var basename = props.basename ? (0, _PathUtils.stripTrailingSlash)((0, _PathUtils.addLeadingSlash)(props.basename)) : '';\n\n var getDOMLocation = function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n (0, _warning2.default)(!basename || (0, _PathUtils.hasBasename)(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n if (basename) path = (0, _PathUtils.stripBasename)(path, basename);\n return (0, _LocationUtils.createLocation)(path, state, key);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n\n var transitionManager = (0, _createTransitionManager2.default)();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var handlePopState = function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if ((0, _DOMUtils.isExtraneousPopstateEvent)(event)) return;\n handlePop(getDOMLocation(event.state));\n };\n\n var handleHashChange = function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n };\n\n var forceNextPop = false;\n\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n var createHref = function createHref(location) {\n return basename + (0, _PathUtils.createPath)(location);\n };\n\n var push = function push(path, state) {\n (0, _warning2.default)(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n var action = 'PUSH';\n var location = (0, _LocationUtils.createLocation)(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n (0, _warning2.default)(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history');\n window.location.href = href;\n }\n });\n };\n\n var replace = function replace(path, state) {\n (0, _warning2.default)(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n var action = 'REPLACE';\n var location = (0, _LocationUtils.createLocation)(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n (0, _warning2.default)(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history');\n window.location.replace(href);\n }\n });\n };\n\n var go = function go(n) {\n globalHistory.go(n);\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var listenerCount = 0;\n\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1) {\n (0, _DOMUtils.addEventListener)(window, PopStateEvent, handlePopState);\n if (needsHashChangeListener) (0, _DOMUtils.addEventListener)(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n (0, _DOMUtils.removeEventListener)(window, PopStateEvent, handlePopState);\n if (needsHashChangeListener) (0, _DOMUtils.removeEventListener)(window, HashChangeEvent, handleHashChange);\n }\n };\n\n var isBlocked = false;\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n };\n\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n};\n\nexports.default = createBrowserHistory;","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _PathUtils = require('./PathUtils');\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _createTransitionManager = require('./createTransitionManager');\n\nvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nvar clamp = function clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n};\n\nvar hasConfirm = !!(typeof window !== 'undefined' && typeof window.confirm !== 'undefined');\n\nvar getConfirmation = function getConfirmation(message, callback) {\n (0, _invariant2.default)(hasConfirm, 'Environment needs a window + window.confirm function. You can provide' + 'your own confirmation UI via the getUserConfirmation option.');\n return callback(window.confirm(message)); // eslint-disable-line no-alert\n};\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nvar createMemoryHistory = function createMemoryHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$initialEntries = props.initialEntries,\n initialEntries = _props$initialEntries === undefined ? ['/'] : _props$initialEntries,\n _props$initialIndex = props.initialIndex,\n initialIndex = _props$initialIndex === undefined ? 0 : _props$initialIndex,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n var basename = props.basename ? (0, _PathUtils.stripTrailingSlash)((0, _PathUtils.addLeadingSlash)(props.basename)) : '';\n var transitionManager = (0, _createTransitionManager2.default)();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n\n var getStrippedPath = function getStrippedPath(path) {\n return basename ? (0, _PathUtils.stripBasename)(path, basename) : path;\n };\n\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? (0, _LocationUtils.createLocation)(getStrippedPath(entry), undefined, createKey()) : (0, _LocationUtils.createLocation)(getStrippedPath(entry), undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = function createHref(location) {\n return basename + (0, _PathUtils.createPath)(location);\n };\n\n var push = function push(path, state) {\n (0, _warning2.default)(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n var action = 'PUSH';\n var location = (0, _LocationUtils.createLocation)(getStrippedPath(path), state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n };\n\n var replace = function replace(path, state) {\n (0, _warning2.default)(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n var action = 'REPLACE';\n var location = (0, _LocationUtils.createLocation)(getStrippedPath(path), state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n };\n\n var go = function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var canGo = function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n };\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return transitionManager.setPrompt(prompt);\n };\n\n var listen = function listen(listener) {\n return transitionManager.appendListener(listener);\n };\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n};\n\nexports.default = createMemoryHistory;","\"use strict\";\n\nvar compose = require('redux').compose;\n\nexports.__esModule = true;\nexports.composeWithDevTools = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function () {\n if (arguments.length === 0) return undefined;\n if (typeof arguments[0] === 'object') return compose;\n return compose.apply(null, arguments);\n};\nexports.devToolsEnhancer = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function () {\n return function (noop) {\n return noop;\n };\n};","'use strict';\n\nvar strictUriEncode = require('strict-uri-encode');\n\nvar objectAssign = require('object-assign');\n\nfunction encoderForArrayFormat(opts) {\n switch (opts.arrayFormat) {\n case 'index':\n return function (key, value, index) {\n return value === null ? [encode(key, opts), '[', index, ']'].join('') : [encode(key, opts), '[', encode(index, opts), ']=', encode(value, opts)].join('');\n };\n\n case 'bracket':\n return function (key, value) {\n return value === null ? encode(key, opts) : [encode(key, opts), '[]=', encode(value, opts)].join('');\n };\n\n default:\n return function (key, value) {\n return value === null ? encode(key, opts) : [encode(key, opts), '=', encode(value, opts)].join('');\n };\n }\n}\n\nfunction parserForArrayFormat(opts) {\n var result;\n\n switch (opts.arrayFormat) {\n case 'index':\n return function (key, value, accumulator) {\n result = /\\[(\\d*)\\]$/.exec(key);\n key = key.replace(/\\[\\d*\\]$/, '');\n\n if (!result) {\n accumulator[key] = value;\n return;\n }\n\n if (accumulator[key] === undefined) {\n accumulator[key] = {};\n }\n\n accumulator[key][result[1]] = value;\n };\n\n case 'bracket':\n return function (key, value, accumulator) {\n result = /(\\[\\])$/.exec(key);\n key = key.replace(/\\[\\]$/, '');\n\n if (!result) {\n accumulator[key] = value;\n return;\n } else if (accumulator[key] === undefined) {\n accumulator[key] = [value];\n return;\n }\n\n accumulator[key] = [].concat(accumulator[key], value);\n };\n\n default:\n return function (key, value, accumulator) {\n if (accumulator[key] === undefined) {\n accumulator[key] = value;\n return;\n }\n\n accumulator[key] = [].concat(accumulator[key], value);\n };\n }\n}\n\nfunction encode(value, opts) {\n if (opts.encode) {\n return opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n }\n\n return value;\n}\n\nfunction keysSorter(input) {\n if (Array.isArray(input)) {\n return input.sort();\n } else if (typeof input === 'object') {\n return keysSorter(Object.keys(input)).sort(function (a, b) {\n return Number(a) - Number(b);\n }).map(function (key) {\n return input[key];\n });\n }\n\n return input;\n}\n\nexports.extract = function (str) {\n return str.split('?')[1] || '';\n};\n\nexports.parse = function (str, opts) {\n opts = objectAssign({\n arrayFormat: 'none'\n }, opts);\n var formatter = parserForArrayFormat(opts); // Create an object with no prototype\n // https://github.com/sindresorhus/query-string/issues/47\n\n var ret = Object.create(null);\n\n if (typeof str !== 'string') {\n return ret;\n }\n\n str = str.trim().replace(/^(\\?|#|&)/, '');\n\n if (!str) {\n return ret;\n }\n\n str.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('='); // Firefox (pre 40) decodes `%3D` to `=`\n // https://github.com/sindresorhus/query-string/pull/37\n\n var key = parts.shift();\n var val = parts.length > 0 ? parts.join('=') : undefined; // missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\n val = val === undefined ? null : decodeURIComponent(val);\n formatter(decodeURIComponent(key), val, ret);\n });\n return Object.keys(ret).sort().reduce(function (result, key) {\n var val = ret[key];\n\n if (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n // Sort object keys, not values\n result[key] = keysSorter(val);\n } else {\n result[key] = val;\n }\n\n return result;\n }, Object.create(null));\n};\n\nexports.stringify = function (obj, opts) {\n var defaults = {\n encode: true,\n strict: true,\n arrayFormat: 'none'\n };\n opts = objectAssign(defaults, opts);\n var formatter = encoderForArrayFormat(opts);\n return obj ? Object.keys(obj).sort().map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return '';\n }\n\n if (val === null) {\n return encode(key, opts);\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.slice().forEach(function (val2) {\n if (val2 === undefined) {\n return;\n }\n\n result.push(formatter(key, val2, result.length));\n });\n return result.join('&');\n }\n\n return encode(key, opts) + '=' + encode(val, opts);\n }).filter(function (x) {\n return x.length > 0;\n }).join('&') : '';\n};","/** @license React v16.10.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nvar h = require(\"object-assign\"),\n n = \"function\" === typeof Symbol && Symbol.for,\n p = n ? Symbol.for(\"react.element\") : 60103,\n q = n ? Symbol.for(\"react.portal\") : 60106,\n r = n ? Symbol.for(\"react.fragment\") : 60107,\n t = n ? Symbol.for(\"react.strict_mode\") : 60108,\n u = n ? Symbol.for(\"react.profiler\") : 60114,\n v = n ? Symbol.for(\"react.provider\") : 60109,\n w = n ? Symbol.for(\"react.context\") : 60110,\n x = n ? Symbol.for(\"react.forward_ref\") : 60112,\n y = n ? Symbol.for(\"react.suspense\") : 60113,\n aa = n ? Symbol.for(\"react.suspense_list\") : 60120,\n ba = n ? Symbol.for(\"react.memo\") : 60115,\n ca = n ? Symbol.for(\"react.lazy\") : 60116;\n\nn && Symbol.for(\"react.fundamental\");\nn && Symbol.for(\"react.responder\");\nn && Symbol.for(\"react.scope\");\nvar z = \"function\" === typeof Symbol && Symbol.iterator;\n\nfunction A(a) {\n for (var b = a.message, c = \"https://reactjs.org/docs/error-decoder.html?invariant=\" + b, d = 1; d < arguments.length; d++) {\n c += \"&args[]=\" + encodeURIComponent(arguments[d]);\n }\n\n a.message = \"Minified React error #\" + b + \"; visit \" + c + \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings. \";\n return a;\n}\n\nvar B = {\n isMounted: function isMounted() {\n return !1;\n },\n enqueueForceUpdate: function enqueueForceUpdate() {},\n enqueueReplaceState: function enqueueReplaceState() {},\n enqueueSetState: function enqueueSetState() {}\n},\n C = {};\n\nfunction D(a, b, c) {\n this.props = a;\n this.context = b;\n this.refs = C;\n this.updater = c || B;\n}\n\nD.prototype.isReactComponent = {};\n\nD.prototype.setState = function (a, b) {\n if (\"object\" !== typeof a && \"function\" !== typeof a && null != a) throw A(Error(85));\n this.updater.enqueueSetState(this, a, b, \"setState\");\n};\n\nD.prototype.forceUpdate = function (a) {\n this.updater.enqueueForceUpdate(this, a, \"forceUpdate\");\n};\n\nfunction E() {}\n\nE.prototype = D.prototype;\n\nfunction F(a, b, c) {\n this.props = a;\n this.context = b;\n this.refs = C;\n this.updater = c || B;\n}\n\nvar G = F.prototype = new E();\nG.constructor = F;\nh(G, D.prototype);\nG.isPureReactComponent = !0;\nvar H = {\n current: null\n},\n I = {\n suspense: null\n},\n J = {\n current: null\n},\n K = Object.prototype.hasOwnProperty,\n L = {\n key: !0,\n ref: !0,\n __self: !0,\n __source: !0\n};\n\nfunction M(a, b, c) {\n var d,\n e = {},\n g = null,\n l = null;\n if (null != b) for (d in void 0 !== b.ref && (l = b.ref), void 0 !== b.key && (g = \"\" + b.key), b) {\n K.call(b, d) && !L.hasOwnProperty(d) && (e[d] = b[d]);\n }\n var f = arguments.length - 2;\n if (1 === f) e.children = c;else if (1 < f) {\n for (var k = Array(f), m = 0; m < f; m++) {\n k[m] = arguments[m + 2];\n }\n\n e.children = k;\n }\n if (a && a.defaultProps) for (d in f = a.defaultProps, f) {\n void 0 === e[d] && (e[d] = f[d]);\n }\n return {\n $$typeof: p,\n type: a,\n key: g,\n ref: l,\n props: e,\n _owner: J.current\n };\n}\n\nfunction da(a, b) {\n return {\n $$typeof: p,\n type: a.type,\n key: b,\n ref: a.ref,\n props: a.props,\n _owner: a._owner\n };\n}\n\nfunction N(a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === p;\n}\n\nfunction escape(a) {\n var b = {\n \"=\": \"=0\",\n \":\": \"=2\"\n };\n return \"$\" + (\"\" + a).replace(/[=:]/g, function (a) {\n return b[a];\n });\n}\n\nvar O = /\\/+/g,\n P = [];\n\nfunction Q(a, b, c, d) {\n if (P.length) {\n var e = P.pop();\n e.result = a;\n e.keyPrefix = b;\n e.func = c;\n e.context = d;\n e.count = 0;\n return e;\n }\n\n return {\n result: a,\n keyPrefix: b,\n func: c,\n context: d,\n count: 0\n };\n}\n\nfunction R(a) {\n a.result = null;\n a.keyPrefix = null;\n a.func = null;\n a.context = null;\n a.count = 0;\n 10 > P.length && P.push(a);\n}\n\nfunction S(a, b, c, d) {\n var e = typeof a;\n if (\"undefined\" === e || \"boolean\" === e) a = null;\n var g = !1;\n if (null === a) g = !0;else switch (e) {\n case \"string\":\n case \"number\":\n g = !0;\n break;\n\n case \"object\":\n switch (a.$$typeof) {\n case p:\n case q:\n g = !0;\n }\n\n }\n if (g) return c(d, a, \"\" === b ? \".\" + T(a, 0) : b), 1;\n g = 0;\n b = \"\" === b ? \".\" : b + \":\";\n if (Array.isArray(a)) for (var l = 0; l < a.length; l++) {\n e = a[l];\n var f = b + T(e, l);\n g += S(e, f, c, d);\n } else if (null === a || \"object\" !== typeof a ? f = null : (f = z && a[z] || a[\"@@iterator\"], f = \"function\" === typeof f ? f : null), \"function\" === typeof f) for (a = f.call(a), l = 0; !(e = a.next()).done;) {\n e = e.value, f = b + T(e, l++), g += S(e, f, c, d);\n } else if (\"object\" === e) throw c = \"\" + a, A(Error(31), \"[object Object]\" === c ? \"object with keys {\" + Object.keys(a).join(\", \") + \"}\" : c, \"\");\n return g;\n}\n\nfunction U(a, b, c) {\n return null == a ? 0 : S(a, \"\", b, c);\n}\n\nfunction T(a, b) {\n return \"object\" === typeof a && null !== a && null != a.key ? escape(a.key) : b.toString(36);\n}\n\nfunction ea(a, b) {\n a.func.call(a.context, b, a.count++);\n}\n\nfunction fa(a, b, c) {\n var d = a.result,\n e = a.keyPrefix;\n a = a.func.call(a.context, b, a.count++);\n Array.isArray(a) ? V(a, d, c, function (a) {\n return a;\n }) : null != a && (N(a) && (a = da(a, e + (!a.key || b && b.key === a.key ? \"\" : (\"\" + a.key).replace(O, \"$&/\") + \"/\") + c)), d.push(a));\n}\n\nfunction V(a, b, c, d, e) {\n var g = \"\";\n null != c && (g = (\"\" + c).replace(O, \"$&/\") + \"/\");\n b = Q(b, g, d, e);\n U(a, fa, b);\n R(b);\n}\n\nfunction W() {\n var a = H.current;\n if (null === a) throw A(Error(321));\n return a;\n}\n\nvar X = {\n Children: {\n map: function map(a, b, c) {\n if (null == a) return a;\n var d = [];\n V(a, d, null, b, c);\n return d;\n },\n forEach: function forEach(a, b, c) {\n if (null == a) return a;\n b = Q(null, null, b, c);\n U(a, ea, b);\n R(b);\n },\n count: function count(a) {\n return U(a, function () {\n return null;\n }, null);\n },\n toArray: function toArray(a) {\n var b = [];\n V(a, b, null, function (a) {\n return a;\n });\n return b;\n },\n only: function only(a) {\n if (!N(a)) throw A(Error(143));\n return a;\n }\n },\n createRef: function createRef() {\n return {\n current: null\n };\n },\n Component: D,\n PureComponent: F,\n createContext: function createContext(a, b) {\n void 0 === b && (b = null);\n a = {\n $$typeof: w,\n _calculateChangedBits: b,\n _currentValue: a,\n _currentValue2: a,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n a.Provider = {\n $$typeof: v,\n _context: a\n };\n return a.Consumer = a;\n },\n forwardRef: function forwardRef(a) {\n return {\n $$typeof: x,\n render: a\n };\n },\n lazy: function lazy(a) {\n return {\n $$typeof: ca,\n _ctor: a,\n _status: -1,\n _result: null\n };\n },\n memo: function memo(a, b) {\n return {\n $$typeof: ba,\n type: a,\n compare: void 0 === b ? null : b\n };\n },\n useCallback: function useCallback(a, b) {\n return W().useCallback(a, b);\n },\n useContext: function useContext(a, b) {\n return W().useContext(a, b);\n },\n useEffect: function useEffect(a, b) {\n return W().useEffect(a, b);\n },\n useImperativeHandle: function useImperativeHandle(a, b, c) {\n return W().useImperativeHandle(a, b, c);\n },\n useDebugValue: function useDebugValue() {},\n useLayoutEffect: function useLayoutEffect(a, b) {\n return W().useLayoutEffect(a, b);\n },\n useMemo: function useMemo(a, b) {\n return W().useMemo(a, b);\n },\n useReducer: function useReducer(a, b, c) {\n return W().useReducer(a, b, c);\n },\n useRef: function useRef(a) {\n return W().useRef(a);\n },\n useState: function useState(a) {\n return W().useState(a);\n },\n Fragment: r,\n Profiler: u,\n StrictMode: t,\n Suspense: y,\n unstable_SuspenseList: aa,\n createElement: M,\n cloneElement: function cloneElement(a, b, c) {\n if (null === a || void 0 === a) throw A(Error(267), a);\n var d = h({}, a.props),\n e = a.key,\n g = a.ref,\n l = a._owner;\n\n if (null != b) {\n void 0 !== b.ref && (g = b.ref, l = J.current);\n void 0 !== b.key && (e = \"\" + b.key);\n if (a.type && a.type.defaultProps) var f = a.type.defaultProps;\n\n for (k in b) {\n K.call(b, k) && !L.hasOwnProperty(k) && (d[k] = void 0 === b[k] && void 0 !== f ? f[k] : b[k]);\n }\n }\n\n var k = arguments.length - 2;\n if (1 === k) d.children = c;else if (1 < k) {\n f = Array(k);\n\n for (var m = 0; m < k; m++) {\n f[m] = arguments[m + 2];\n }\n\n d.children = f;\n }\n return {\n $$typeof: p,\n type: a.type,\n key: e,\n ref: g,\n props: d,\n _owner: l\n };\n },\n createFactory: function createFactory(a) {\n var b = M.bind(null, a);\n b.type = a;\n return b;\n },\n isValidElement: N,\n version: \"16.10.2\",\n unstable_withSuspenseConfig: function unstable_withSuspenseConfig(a, b) {\n var c = I.suspense;\n I.suspense = void 0 === b ? null : b;\n\n try {\n a();\n } finally {\n I.suspense = c;\n }\n },\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: {\n ReactCurrentDispatcher: H,\n ReactCurrentBatchConfig: I,\n ReactCurrentOwner: J,\n IsSomeRendererActing: {\n current: !1\n },\n assign: h\n }\n},\n Y = {\n default: X\n},\n Z = Y && X || Y;\nmodule.exports = Z.default || Z;","/** @license React v16.10.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';\n\nvar aa = require(\"react\"),\n n = require(\"object-assign\"),\n r = require(\"scheduler\");\n\nfunction t(a) {\n for (var b = a.message, c = \"https://reactjs.org/docs/error-decoder.html?invariant=\" + b, d = 1; d < arguments.length; d++) {\n c += \"&args[]=\" + encodeURIComponent(arguments[d]);\n }\n\n a.message = \"Minified React error #\" + b + \"; visit \" + c + \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings. \";\n return a;\n}\n\nif (!aa) throw t(Error(227));\nvar ba = null,\n ca = {};\n\nfunction da() {\n if (ba) for (var a in ca) {\n var b = ca[a],\n c = ba.indexOf(a);\n if (!(-1 < c)) throw t(Error(96), a);\n\n if (!ea[c]) {\n if (!b.extractEvents) throw t(Error(97), a);\n ea[c] = b;\n c = b.eventTypes;\n\n for (var d in c) {\n var e = void 0;\n var f = c[d],\n g = b,\n h = d;\n if (fa.hasOwnProperty(h)) throw t(Error(99), h);\n fa[h] = f;\n var k = f.phasedRegistrationNames;\n\n if (k) {\n for (e in k) {\n k.hasOwnProperty(e) && ha(k[e], g, h);\n }\n\n e = !0;\n } else f.registrationName ? (ha(f.registrationName, g, h), e = !0) : e = !1;\n\n if (!e) throw t(Error(98), d, a);\n }\n }\n }\n}\n\nfunction ha(a, b, c) {\n if (ia[a]) throw t(Error(100), a);\n ia[a] = b;\n ja[a] = b.eventTypes[c].dependencies;\n}\n\nvar ea = [],\n fa = {},\n ia = {},\n ja = {};\n\nfunction ka(a, b, c, d, e, f, g, h, k) {\n var l = Array.prototype.slice.call(arguments, 3);\n\n try {\n b.apply(c, l);\n } catch (m) {\n this.onError(m);\n }\n}\n\nvar la = !1,\n ma = null,\n na = !1,\n oa = null,\n pa = {\n onError: function onError(a) {\n la = !0;\n ma = a;\n }\n};\n\nfunction qa(a, b, c, d, e, f, g, h, k) {\n la = !1;\n ma = null;\n ka.apply(pa, arguments);\n}\n\nfunction ra(a, b, c, d, e, f, g, h, k) {\n qa.apply(this, arguments);\n\n if (la) {\n if (la) {\n var l = ma;\n la = !1;\n ma = null;\n } else throw t(Error(198));\n\n na || (na = !0, oa = l);\n }\n}\n\nvar sa = null,\n ta = null,\n ua = null;\n\nfunction va(a, b, c) {\n var d = a.type || \"unknown-event\";\n a.currentTarget = ua(c);\n ra(d, b, void 0, a);\n a.currentTarget = null;\n}\n\nfunction wa(a, b) {\n if (null == b) throw t(Error(30));\n if (null == a) return b;\n\n if (Array.isArray(a)) {\n if (Array.isArray(b)) return a.push.apply(a, b), a;\n a.push(b);\n return a;\n }\n\n return Array.isArray(b) ? [a].concat(b) : [a, b];\n}\n\nfunction xa(a, b, c) {\n Array.isArray(a) ? a.forEach(b, c) : a && b.call(c, a);\n}\n\nvar ya = null;\n\nfunction za(a) {\n if (a) {\n var b = a._dispatchListeners,\n c = a._dispatchInstances;\n if (Array.isArray(b)) for (var d = 0; d < b.length && !a.isPropagationStopped(); d++) {\n va(a, b[d], c[d]);\n } else b && va(a, b, c);\n a._dispatchListeners = null;\n a._dispatchInstances = null;\n a.isPersistent() || a.constructor.release(a);\n }\n}\n\nfunction Aa(a) {\n null !== a && (ya = wa(ya, a));\n a = ya;\n ya = null;\n\n if (a) {\n xa(a, za);\n if (ya) throw t(Error(95));\n if (na) throw a = oa, na = !1, oa = null, a;\n }\n}\n\nvar Ba = {\n injectEventPluginOrder: function injectEventPluginOrder(a) {\n if (ba) throw t(Error(101));\n ba = Array.prototype.slice.call(a);\n da();\n },\n injectEventPluginsByName: function injectEventPluginsByName(a) {\n var b = !1,\n c;\n\n for (c in a) {\n if (a.hasOwnProperty(c)) {\n var d = a[c];\n\n if (!ca.hasOwnProperty(c) || ca[c] !== d) {\n if (ca[c]) throw t(Error(102), c);\n ca[c] = d;\n b = !0;\n }\n }\n }\n\n b && da();\n }\n};\n\nfunction Ca(a, b) {\n var c = a.stateNode;\n if (!c) return null;\n var d = sa(c);\n if (!d) return null;\n c = d[b];\n\n a: switch (b) {\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n (d = !d.disabled) || (a = a.type, d = !(\"button\" === a || \"input\" === a || \"select\" === a || \"textarea\" === a));\n a = !d;\n break a;\n\n default:\n a = !1;\n }\n\n if (a) return null;\n if (c && \"function\" !== typeof c) throw t(Error(231), b, typeof c);\n return c;\n}\n\nvar Da = aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\nDa.hasOwnProperty(\"ReactCurrentDispatcher\") || (Da.ReactCurrentDispatcher = {\n current: null\n});\nDa.hasOwnProperty(\"ReactCurrentBatchConfig\") || (Da.ReactCurrentBatchConfig = {\n suspense: null\n});\nvar Ea = /^(.*)[\\\\\\/]/,\n x = \"function\" === typeof Symbol && Symbol.for,\n Fa = x ? Symbol.for(\"react.element\") : 60103,\n Ga = x ? Symbol.for(\"react.portal\") : 60106,\n Ha = x ? Symbol.for(\"react.fragment\") : 60107,\n Ia = x ? Symbol.for(\"react.strict_mode\") : 60108,\n Ja = x ? Symbol.for(\"react.profiler\") : 60114,\n Ka = x ? Symbol.for(\"react.provider\") : 60109,\n La = x ? Symbol.for(\"react.context\") : 60110,\n Ma = x ? Symbol.for(\"react.concurrent_mode\") : 60111,\n Na = x ? Symbol.for(\"react.forward_ref\") : 60112,\n Oa = x ? Symbol.for(\"react.suspense\") : 60113,\n Pa = x ? Symbol.for(\"react.suspense_list\") : 60120,\n Qa = x ? Symbol.for(\"react.memo\") : 60115,\n Ra = x ? Symbol.for(\"react.lazy\") : 60116;\nx && Symbol.for(\"react.fundamental\");\nx && Symbol.for(\"react.responder\");\nx && Symbol.for(\"react.scope\");\nvar Sa = \"function\" === typeof Symbol && Symbol.iterator;\n\nfunction Ta(a) {\n if (null === a || \"object\" !== typeof a) return null;\n a = Sa && a[Sa] || a[\"@@iterator\"];\n return \"function\" === typeof a ? a : null;\n}\n\nfunction Ua(a) {\n if (-1 === a._status) {\n a._status = 0;\n var b = a._ctor;\n b = b();\n a._result = b;\n b.then(function (b) {\n 0 === a._status && (b = b.default, a._status = 1, a._result = b);\n }, function (b) {\n 0 === a._status && (a._status = 2, a._result = b);\n });\n }\n}\n\nfunction Va(a) {\n if (null == a) return null;\n if (\"function\" === typeof a) return a.displayName || a.name || null;\n if (\"string\" === typeof a) return a;\n\n switch (a) {\n case Ha:\n return \"Fragment\";\n\n case Ga:\n return \"Portal\";\n\n case Ja:\n return \"Profiler\";\n\n case Ia:\n return \"StrictMode\";\n\n case Oa:\n return \"Suspense\";\n\n case Pa:\n return \"SuspenseList\";\n }\n\n if (\"object\" === typeof a) switch (a.$$typeof) {\n case La:\n return \"Context.Consumer\";\n\n case Ka:\n return \"Context.Provider\";\n\n case Na:\n var b = a.render;\n b = b.displayName || b.name || \"\";\n return a.displayName || (\"\" !== b ? \"ForwardRef(\" + b + \")\" : \"ForwardRef\");\n\n case Qa:\n return Va(a.type);\n\n case Ra:\n if (a = 1 === a._status ? a._result : null) return Va(a);\n }\n return null;\n}\n\nfunction Wa(a) {\n var b = \"\";\n\n do {\n a: switch (a.tag) {\n case 3:\n case 4:\n case 6:\n case 7:\n case 10:\n case 9:\n var c = \"\";\n break a;\n\n default:\n var d = a._debugOwner,\n e = a._debugSource,\n f = Va(a.type);\n c = null;\n d && (c = Va(d.type));\n d = f;\n f = \"\";\n e ? f = \" (at \" + e.fileName.replace(Ea, \"\") + \":\" + e.lineNumber + \")\" : c && (f = \" (created by \" + c + \")\");\n c = \"\\n in \" + (d || \"Unknown\") + f;\n }\n\n b += c;\n a = a.return;\n } while (a);\n\n return b;\n}\n\nvar Xa = !(\"undefined\" === typeof window || \"undefined\" === typeof window.document || \"undefined\" === typeof window.document.createElement),\n Ya = null,\n Za = null,\n $a = null;\n\nfunction ab(a) {\n if (a = ta(a)) {\n if (\"function\" !== typeof Ya) throw t(Error(280));\n var b = sa(a.stateNode);\n Ya(a.stateNode, a.type, b);\n }\n}\n\nfunction bb(a) {\n Za ? $a ? $a.push(a) : $a = [a] : Za = a;\n}\n\nfunction cb() {\n if (Za) {\n var a = Za,\n b = $a;\n $a = Za = null;\n ab(a);\n if (b) for (a = 0; a < b.length; a++) {\n ab(b[a]);\n }\n }\n}\n\nfunction db(a, b) {\n return a(b);\n}\n\nfunction eb(a, b, c, d) {\n return a(b, c, d);\n}\n\nfunction fb() {}\n\nvar gb = db,\n hb = !1,\n ib = !1;\n\nfunction jb() {\n if (null !== Za || null !== $a) fb(), cb();\n}\n\nnew Map();\nnew Map();\nnew Map();\nvar kb = /^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,\n lb = Object.prototype.hasOwnProperty,\n mb = {},\n nb = {};\n\nfunction ob(a) {\n if (lb.call(nb, a)) return !0;\n if (lb.call(mb, a)) return !1;\n if (kb.test(a)) return nb[a] = !0;\n mb[a] = !0;\n return !1;\n}\n\nfunction pb(a, b, c, d) {\n if (null !== c && 0 === c.type) return !1;\n\n switch (typeof b) {\n case \"function\":\n case \"symbol\":\n return !0;\n\n case \"boolean\":\n if (d) return !1;\n if (null !== c) return !c.acceptsBooleans;\n a = a.toLowerCase().slice(0, 5);\n return \"data-\" !== a && \"aria-\" !== a;\n\n default:\n return !1;\n }\n}\n\nfunction qb(a, b, c, d) {\n if (null === b || \"undefined\" === typeof b || pb(a, b, c, d)) return !0;\n if (d) return !1;\n if (null !== c) switch (c.type) {\n case 3:\n return !b;\n\n case 4:\n return !1 === b;\n\n case 5:\n return isNaN(b);\n\n case 6:\n return isNaN(b) || 1 > b;\n }\n return !1;\n}\n\nfunction B(a, b, c, d, e, f) {\n this.acceptsBooleans = 2 === b || 3 === b || 4 === b;\n this.attributeName = d;\n this.attributeNamespace = e;\n this.mustUseProperty = c;\n this.propertyName = a;\n this.type = b;\n this.sanitizeURL = f;\n}\n\nvar C = {};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function (a) {\n C[a] = new B(a, 0, !1, a, null, !1);\n});\n[[\"acceptCharset\", \"accept-charset\"], [\"className\", \"class\"], [\"htmlFor\", \"for\"], [\"httpEquiv\", \"http-equiv\"]].forEach(function (a) {\n var b = a[0];\n C[b] = new B(b, 1, !1, a[1], null, !1);\n});\n[\"contentEditable\", \"draggable\", \"spellCheck\", \"value\"].forEach(function (a) {\n C[a] = new B(a, 2, !1, a.toLowerCase(), null, !1);\n});\n[\"autoReverse\", \"externalResourcesRequired\", \"focusable\", \"preserveAlpha\"].forEach(function (a) {\n C[a] = new B(a, 2, !1, a, null, !1);\n});\n\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function (a) {\n C[a] = new B(a, 3, !1, a.toLowerCase(), null, !1);\n});\n[\"checked\", \"multiple\", \"muted\", \"selected\"].forEach(function (a) {\n C[a] = new B(a, 3, !0, a, null, !1);\n});\n[\"capture\", \"download\"].forEach(function (a) {\n C[a] = new B(a, 4, !1, a, null, !1);\n});\n[\"cols\", \"rows\", \"size\", \"span\"].forEach(function (a) {\n C[a] = new B(a, 6, !1, a, null, !1);\n});\n[\"rowSpan\", \"start\"].forEach(function (a) {\n C[a] = new B(a, 5, !1, a.toLowerCase(), null, !1);\n});\nvar rb = /[\\-:]([a-z])/g;\n\nfunction sb(a) {\n return a[1].toUpperCase();\n}\n\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function (a) {\n var b = a.replace(rb, sb);\n C[b] = new B(b, 1, !1, a, null, !1);\n});\n\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function (a) {\n var b = a.replace(rb, sb);\n C[b] = new B(b, 1, !1, a, \"http://www.w3.org/1999/xlink\", !1);\n});\n[\"xml:base\", \"xml:lang\", \"xml:space\"].forEach(function (a) {\n var b = a.replace(rb, sb);\n C[b] = new B(b, 1, !1, a, \"http://www.w3.org/XML/1998/namespace\", !1);\n});\n[\"tabIndex\", \"crossOrigin\"].forEach(function (a) {\n C[a] = new B(a, 1, !1, a.toLowerCase(), null, !1);\n});\nC.xlinkHref = new B(\"xlinkHref\", 1, !1, \"xlink:href\", \"http://www.w3.org/1999/xlink\", !0);\n[\"src\", \"href\", \"action\", \"formAction\"].forEach(function (a) {\n C[a] = new B(a, 1, !1, a.toLowerCase(), null, !0);\n});\n\nfunction tb(a) {\n switch (typeof a) {\n case \"boolean\":\n case \"number\":\n case \"object\":\n case \"string\":\n case \"undefined\":\n return a;\n\n default:\n return \"\";\n }\n}\n\nfunction ub(a, b, c, d) {\n var e = C.hasOwnProperty(b) ? C[b] : null;\n var f = null !== e ? 0 === e.type : d ? !1 : !(2 < b.length) || \"o\" !== b[0] && \"O\" !== b[0] || \"n\" !== b[1] && \"N\" !== b[1] ? !1 : !0;\n f || (qb(b, c, e, d) && (c = null), d || null === e ? ob(b) && (null === c ? a.removeAttribute(b) : a.setAttribute(b, \"\" + c)) : e.mustUseProperty ? a[e.propertyName] = null === c ? 3 === e.type ? !1 : \"\" : c : (b = e.attributeName, d = e.attributeNamespace, null === c ? a.removeAttribute(b) : (e = e.type, c = 3 === e || 4 === e && !0 === c ? \"\" : \"\" + c, d ? a.setAttributeNS(d, b, c) : a.setAttribute(b, c))));\n}\n\nfunction vb(a) {\n var b = a.type;\n return (a = a.nodeName) && \"input\" === a.toLowerCase() && (\"checkbox\" === b || \"radio\" === b);\n}\n\nfunction xb(a) {\n var b = vb(a) ? \"checked\" : \"value\",\n c = Object.getOwnPropertyDescriptor(a.constructor.prototype, b),\n d = \"\" + a[b];\n\n if (!a.hasOwnProperty(b) && \"undefined\" !== typeof c && \"function\" === typeof c.get && \"function\" === typeof c.set) {\n var e = c.get,\n f = c.set;\n Object.defineProperty(a, b, {\n configurable: !0,\n get: function get() {\n return e.call(this);\n },\n set: function set(a) {\n d = \"\" + a;\n f.call(this, a);\n }\n });\n Object.defineProperty(a, b, {\n enumerable: c.enumerable\n });\n return {\n getValue: function getValue() {\n return d;\n },\n setValue: function setValue(a) {\n d = \"\" + a;\n },\n stopTracking: function stopTracking() {\n a._valueTracker = null;\n delete a[b];\n }\n };\n }\n}\n\nfunction yb(a) {\n a._valueTracker || (a._valueTracker = xb(a));\n}\n\nfunction zb(a) {\n if (!a) return !1;\n var b = a._valueTracker;\n if (!b) return !0;\n var c = b.getValue();\n var d = \"\";\n a && (d = vb(a) ? a.checked ? \"true\" : \"false\" : a.value);\n a = d;\n return a !== c ? (b.setValue(a), !0) : !1;\n}\n\nfunction Ab(a, b) {\n var c = b.checked;\n return n({}, b, {\n defaultChecked: void 0,\n defaultValue: void 0,\n value: void 0,\n checked: null != c ? c : a._wrapperState.initialChecked\n });\n}\n\nfunction Bb(a, b) {\n var c = null == b.defaultValue ? \"\" : b.defaultValue,\n d = null != b.checked ? b.checked : b.defaultChecked;\n c = tb(null != b.value ? b.value : c);\n a._wrapperState = {\n initialChecked: d,\n initialValue: c,\n controlled: \"checkbox\" === b.type || \"radio\" === b.type ? null != b.checked : null != b.value\n };\n}\n\nfunction Cb(a, b) {\n b = b.checked;\n null != b && ub(a, \"checked\", b, !1);\n}\n\nfunction Db(a, b) {\n Cb(a, b);\n var c = tb(b.value),\n d = b.type;\n if (null != c) {\n if (\"number\" === d) {\n if (0 === c && \"\" === a.value || a.value != c) a.value = \"\" + c;\n } else a.value !== \"\" + c && (a.value = \"\" + c);\n } else if (\"submit\" === d || \"reset\" === d) {\n a.removeAttribute(\"value\");\n return;\n }\n b.hasOwnProperty(\"value\") ? Eb(a, b.type, c) : b.hasOwnProperty(\"defaultValue\") && Eb(a, b.type, tb(b.defaultValue));\n null == b.checked && null != b.defaultChecked && (a.defaultChecked = !!b.defaultChecked);\n}\n\nfunction Gb(a, b, c) {\n if (b.hasOwnProperty(\"value\") || b.hasOwnProperty(\"defaultValue\")) {\n var d = b.type;\n if (!(\"submit\" !== d && \"reset\" !== d || void 0 !== b.value && null !== b.value)) return;\n b = \"\" + a._wrapperState.initialValue;\n c || b === a.value || (a.value = b);\n a.defaultValue = b;\n }\n\n c = a.name;\n \"\" !== c && (a.name = \"\");\n a.defaultChecked = !a.defaultChecked;\n a.defaultChecked = !!a._wrapperState.initialChecked;\n \"\" !== c && (a.name = c);\n}\n\nfunction Eb(a, b, c) {\n if (\"number\" !== b || a.ownerDocument.activeElement !== a) null == c ? a.defaultValue = \"\" + a._wrapperState.initialValue : a.defaultValue !== \"\" + c && (a.defaultValue = \"\" + c);\n}\n\nfunction Hb(a) {\n var b = \"\";\n aa.Children.forEach(a, function (a) {\n null != a && (b += a);\n });\n return b;\n}\n\nfunction Ib(a, b) {\n a = n({\n children: void 0\n }, b);\n if (b = Hb(b.children)) a.children = b;\n return a;\n}\n\nfunction Jb(a, b, c, d) {\n a = a.options;\n\n if (b) {\n b = {};\n\n for (var e = 0; e < c.length; e++) {\n b[\"$\" + c[e]] = !0;\n }\n\n for (c = 0; c < a.length; c++) {\n e = b.hasOwnProperty(\"$\" + a[c].value), a[c].selected !== e && (a[c].selected = e), e && d && (a[c].defaultSelected = !0);\n }\n } else {\n c = \"\" + tb(c);\n b = null;\n\n for (e = 0; e < a.length; e++) {\n if (a[e].value === c) {\n a[e].selected = !0;\n d && (a[e].defaultSelected = !0);\n return;\n }\n\n null !== b || a[e].disabled || (b = a[e]);\n }\n\n null !== b && (b.selected = !0);\n }\n}\n\nfunction Kb(a, b) {\n if (null != b.dangerouslySetInnerHTML) throw t(Error(91));\n return n({}, b, {\n value: void 0,\n defaultValue: void 0,\n children: \"\" + a._wrapperState.initialValue\n });\n}\n\nfunction Lb(a, b) {\n var c = b.value;\n\n if (null == c) {\n c = b.defaultValue;\n b = b.children;\n\n if (null != b) {\n if (null != c) throw t(Error(92));\n\n if (Array.isArray(b)) {\n if (!(1 >= b.length)) throw t(Error(93));\n b = b[0];\n }\n\n c = b;\n }\n\n null == c && (c = \"\");\n }\n\n a._wrapperState = {\n initialValue: tb(c)\n };\n}\n\nfunction Mb(a, b) {\n var c = tb(b.value),\n d = tb(b.defaultValue);\n null != c && (c = \"\" + c, c !== a.value && (a.value = c), null == b.defaultValue && a.defaultValue !== c && (a.defaultValue = c));\n null != d && (a.defaultValue = \"\" + d);\n}\n\nfunction Nb(a) {\n var b = a.textContent;\n b === a._wrapperState.initialValue && \"\" !== b && null !== b && (a.value = b);\n}\n\nvar Ob = {\n html: \"http://www.w3.org/1999/xhtml\",\n mathml: \"http://www.w3.org/1998/Math/MathML\",\n svg: \"http://www.w3.org/2000/svg\"\n};\n\nfunction Pb(a) {\n switch (a) {\n case \"svg\":\n return \"http://www.w3.org/2000/svg\";\n\n case \"math\":\n return \"http://www.w3.org/1998/Math/MathML\";\n\n default:\n return \"http://www.w3.org/1999/xhtml\";\n }\n}\n\nfunction Qb(a, b) {\n return null == a || \"http://www.w3.org/1999/xhtml\" === a ? Pb(b) : \"http://www.w3.org/2000/svg\" === a && \"foreignObject\" === b ? \"http://www.w3.org/1999/xhtml\" : a;\n}\n\nvar Rb,\n Sb = function (a) {\n return \"undefined\" !== typeof MSApp && MSApp.execUnsafeLocalFunction ? function (b, c, d, e) {\n MSApp.execUnsafeLocalFunction(function () {\n return a(b, c, d, e);\n });\n } : a;\n}(function (a, b) {\n if (a.namespaceURI !== Ob.svg || \"innerHTML\" in a) a.innerHTML = b;else {\n Rb = Rb || document.createElement(\"div\");\n Rb.innerHTML = \"\" + b.valueOf().toString() + \"\";\n\n for (b = Rb.firstChild; a.firstChild;) {\n a.removeChild(a.firstChild);\n }\n\n for (; b.firstChild;) {\n a.appendChild(b.firstChild);\n }\n }\n});\n\nfunction Tb(a, b) {\n if (b) {\n var c = a.firstChild;\n\n if (c && c === a.lastChild && 3 === c.nodeType) {\n c.nodeValue = b;\n return;\n }\n }\n\n a.textContent = b;\n}\n\nfunction Ub(a, b) {\n var c = {};\n c[a.toLowerCase()] = b.toLowerCase();\n c[\"Webkit\" + a] = \"webkit\" + b;\n c[\"Moz\" + a] = \"moz\" + b;\n return c;\n}\n\nvar Vb = {\n animationend: Ub(\"Animation\", \"AnimationEnd\"),\n animationiteration: Ub(\"Animation\", \"AnimationIteration\"),\n animationstart: Ub(\"Animation\", \"AnimationStart\"),\n transitionend: Ub(\"Transition\", \"TransitionEnd\")\n},\n Wb = {},\n Xb = {};\nXa && (Xb = document.createElement(\"div\").style, \"AnimationEvent\" in window || (delete Vb.animationend.animation, delete Vb.animationiteration.animation, delete Vb.animationstart.animation), \"TransitionEvent\" in window || delete Vb.transitionend.transition);\n\nfunction Yb(a) {\n if (Wb[a]) return Wb[a];\n if (!Vb[a]) return a;\n var b = Vb[a],\n c;\n\n for (c in b) {\n if (b.hasOwnProperty(c) && c in Xb) return Wb[a] = b[c];\n }\n\n return a;\n}\n\nvar Zb = Yb(\"animationend\"),\n $b = Yb(\"animationiteration\"),\n ac = Yb(\"animationstart\"),\n bc = Yb(\"transitionend\"),\n dc = \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),\n ec = !1,\n fc = [],\n gc = null,\n hc = null,\n ic = null,\n jc = new Map(),\n kc = new Map(),\n lc = \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),\n mc = \"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\n\nfunction nc(a) {\n var b = oc(a);\n lc.forEach(function (c) {\n pc(c, a, b);\n });\n mc.forEach(function (c) {\n pc(c, a, b);\n });\n}\n\nfunction qc(a, b, c, d) {\n return {\n blockedOn: a,\n topLevelType: b,\n eventSystemFlags: c | 32,\n nativeEvent: d\n };\n}\n\nfunction rc(a, b) {\n switch (a) {\n case \"focus\":\n case \"blur\":\n gc = null;\n break;\n\n case \"dragenter\":\n case \"dragleave\":\n hc = null;\n break;\n\n case \"mouseover\":\n case \"mouseout\":\n ic = null;\n break;\n\n case \"pointerover\":\n case \"pointerout\":\n jc.delete(b.pointerId);\n break;\n\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n kc.delete(b.pointerId);\n }\n}\n\nfunction sc(a, b, c, d, e) {\n if (null === a || a.nativeEvent !== e) return qc(b, c, d, e);\n a.eventSystemFlags |= d;\n return a;\n}\n\nfunction tc(a, b, c, d) {\n switch (b) {\n case \"focus\":\n return gc = sc(gc, a, b, c, d), !0;\n\n case \"dragenter\":\n return hc = sc(hc, a, b, c, d), !0;\n\n case \"mouseover\":\n return ic = sc(ic, a, b, c, d), !0;\n\n case \"pointerover\":\n var e = d.pointerId;\n jc.set(e, sc(jc.get(e) || null, a, b, c, d));\n return !0;\n\n case \"gotpointercapture\":\n return e = d.pointerId, kc.set(e, sc(kc.get(e) || null, a, b, c, d)), !0;\n }\n\n return !1;\n}\n\nfunction uc(a) {\n if (null !== a.blockedOn) return !1;\n var b = vc(a.topLevelType, a.eventSystemFlags, a.nativeEvent);\n return null !== b ? (a.blockedOn = b, !1) : !0;\n}\n\nfunction wc(a, b, c) {\n uc(a) && c.delete(b);\n}\n\nfunction xc() {\n for (ec = !1; 0 < fc.length;) {\n var a = fc[0];\n if (null !== a.blockedOn) break;\n var b = vc(a.topLevelType, a.eventSystemFlags, a.nativeEvent);\n null !== b ? a.blockedOn = b : fc.shift();\n }\n\n null !== gc && uc(gc) && (gc = null);\n null !== hc && uc(hc) && (hc = null);\n null !== ic && uc(ic) && (ic = null);\n jc.forEach(wc);\n kc.forEach(wc);\n}\n\nfunction yc(a, b) {\n a.blockedOn === b && (a.blockedOn = null, ec || (ec = !0, r.unstable_scheduleCallback(r.unstable_NormalPriority, xc)));\n}\n\nfunction zc(a) {\n function b(b) {\n return yc(b, a);\n }\n\n if (0 < fc.length) {\n yc(fc[0], a);\n\n for (var c = 1; c < fc.length; c++) {\n var d = fc[c];\n d.blockedOn === a && (d.blockedOn = null);\n }\n }\n\n null !== gc && yc(gc, a);\n null !== hc && yc(hc, a);\n null !== ic && yc(ic, a);\n jc.forEach(b);\n kc.forEach(b);\n}\n\nvar D = 0,\n E = 2,\n Ac = 1024;\n\nfunction Bc(a) {\n var b = a,\n c = a;\n if (a.alternate) for (; b.return;) {\n b = b.return;\n } else {\n a = b;\n\n do {\n b = a, (b.effectTag & (E | Ac)) !== D && (c = b.return), a = b.return;\n } while (a);\n }\n return 3 === b.tag ? c : null;\n}\n\nfunction Cc(a) {\n if (Bc(a) !== a) throw t(Error(188));\n}\n\nfunction Dc(a) {\n var b = a.alternate;\n\n if (!b) {\n b = Bc(a);\n if (null === b) throw t(Error(188));\n return b !== a ? null : a;\n }\n\n for (var c = a, d = b;;) {\n var e = c.return;\n if (null === e) break;\n var f = e.alternate;\n\n if (null === f) {\n d = e.return;\n\n if (null !== d) {\n c = d;\n continue;\n }\n\n break;\n }\n\n if (e.child === f.child) {\n for (f = e.child; f;) {\n if (f === c) return Cc(e), a;\n if (f === d) return Cc(e), b;\n f = f.sibling;\n }\n\n throw t(Error(188));\n }\n\n if (c.return !== d.return) c = e, d = f;else {\n for (var g = !1, h = e.child; h;) {\n if (h === c) {\n g = !0;\n c = e;\n d = f;\n break;\n }\n\n if (h === d) {\n g = !0;\n d = e;\n c = f;\n break;\n }\n\n h = h.sibling;\n }\n\n if (!g) {\n for (h = f.child; h;) {\n if (h === c) {\n g = !0;\n c = f;\n d = e;\n break;\n }\n\n if (h === d) {\n g = !0;\n d = f;\n c = e;\n break;\n }\n\n h = h.sibling;\n }\n\n if (!g) throw t(Error(189));\n }\n }\n if (c.alternate !== d) throw t(Error(190));\n }\n\n if (3 !== c.tag) throw t(Error(188));\n return c.stateNode.current === c ? a : b;\n}\n\nfunction Ec(a) {\n a = Dc(a);\n if (!a) return null;\n\n for (var b = a;;) {\n if (5 === b.tag || 6 === b.tag) return b;\n if (b.child) b.child.return = b, b = b.child;else {\n if (b === a) break;\n\n for (; !b.sibling;) {\n if (!b.return || b.return === a) return null;\n b = b.return;\n }\n\n b.sibling.return = b.return;\n b = b.sibling;\n }\n }\n\n return null;\n}\n\nfunction Fc(a) {\n a = a.target || a.srcElement || window;\n a.correspondingUseElement && (a = a.correspondingUseElement);\n return 3 === a.nodeType ? a.parentNode : a;\n}\n\nfunction Gc(a) {\n do {\n a = a.return;\n } while (a && 5 !== a.tag);\n\n return a ? a : null;\n}\n\nfunction Hc(a, b, c) {\n if (b = Ca(a, c.dispatchConfig.phasedRegistrationNames[b])) c._dispatchListeners = wa(c._dispatchListeners, b), c._dispatchInstances = wa(c._dispatchInstances, a);\n}\n\nfunction Ic(a) {\n if (a && a.dispatchConfig.phasedRegistrationNames) {\n for (var b = a._targetInst, c = []; b;) {\n c.push(b), b = Gc(b);\n }\n\n for (b = c.length; 0 < b--;) {\n Hc(c[b], \"captured\", a);\n }\n\n for (b = 0; b < c.length; b++) {\n Hc(c[b], \"bubbled\", a);\n }\n }\n}\n\nfunction Jc(a, b, c) {\n a && c && c.dispatchConfig.registrationName && (b = Ca(a, c.dispatchConfig.registrationName)) && (c._dispatchListeners = wa(c._dispatchListeners, b), c._dispatchInstances = wa(c._dispatchInstances, a));\n}\n\nfunction Kc(a) {\n a && a.dispatchConfig.registrationName && Jc(a._targetInst, null, a);\n}\n\nfunction Lc(a) {\n xa(a, Ic);\n}\n\nfunction Mc() {\n return !0;\n}\n\nfunction Nc() {\n return !1;\n}\n\nfunction F(a, b, c, d) {\n this.dispatchConfig = a;\n this._targetInst = b;\n this.nativeEvent = c;\n a = this.constructor.Interface;\n\n for (var e in a) {\n a.hasOwnProperty(e) && ((b = a[e]) ? this[e] = b(c) : \"target\" === e ? this.target = d : this[e] = c[e]);\n }\n\n this.isDefaultPrevented = (null != c.defaultPrevented ? c.defaultPrevented : !1 === c.returnValue) ? Mc : Nc;\n this.isPropagationStopped = Nc;\n return this;\n}\n\nn(F.prototype, {\n preventDefault: function preventDefault() {\n this.defaultPrevented = !0;\n var a = this.nativeEvent;\n a && (a.preventDefault ? a.preventDefault() : \"unknown\" !== typeof a.returnValue && (a.returnValue = !1), this.isDefaultPrevented = Mc);\n },\n stopPropagation: function stopPropagation() {\n var a = this.nativeEvent;\n a && (a.stopPropagation ? a.stopPropagation() : \"unknown\" !== typeof a.cancelBubble && (a.cancelBubble = !0), this.isPropagationStopped = Mc);\n },\n persist: function persist() {\n this.isPersistent = Mc;\n },\n isPersistent: Nc,\n destructor: function destructor() {\n var a = this.constructor.Interface,\n b;\n\n for (b in a) {\n this[b] = null;\n }\n\n this.nativeEvent = this._targetInst = this.dispatchConfig = null;\n this.isPropagationStopped = this.isDefaultPrevented = Nc;\n this._dispatchInstances = this._dispatchListeners = null;\n }\n});\nF.Interface = {\n type: null,\n target: null,\n currentTarget: function currentTarget() {\n return null;\n },\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function timeStamp(a) {\n return a.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n\nF.extend = function (a) {\n function b() {}\n\n function c() {\n return d.apply(this, arguments);\n }\n\n var d = this;\n b.prototype = d.prototype;\n var e = new b();\n n(e, c.prototype);\n c.prototype = e;\n c.prototype.constructor = c;\n c.Interface = n({}, d.Interface, a);\n c.extend = d.extend;\n Oc(c);\n return c;\n};\n\nOc(F);\n\nfunction Pc(a, b, c, d) {\n if (this.eventPool.length) {\n var e = this.eventPool.pop();\n this.call(e, a, b, c, d);\n return e;\n }\n\n return new this(a, b, c, d);\n}\n\nfunction Qc(a) {\n if (!(a instanceof this)) throw t(Error(279));\n a.destructor();\n 10 > this.eventPool.length && this.eventPool.push(a);\n}\n\nfunction Oc(a) {\n a.eventPool = [];\n a.getPooled = Pc;\n a.release = Qc;\n}\n\nvar Rc = F.extend({\n animationName: null,\n elapsedTime: null,\n pseudoElement: null\n}),\n Sc = F.extend({\n clipboardData: function clipboardData(a) {\n return \"clipboardData\" in a ? a.clipboardData : window.clipboardData;\n }\n}),\n Tc = F.extend({\n view: null,\n detail: null\n}),\n Uc = Tc.extend({\n relatedTarget: null\n});\n\nfunction Vc(a) {\n var b = a.keyCode;\n \"charCode\" in a ? (a = a.charCode, 0 === a && 13 === b && (a = 13)) : a = b;\n 10 === a && (a = 13);\n return 32 <= a || 13 === a ? a : 0;\n}\n\nvar Wc = {\n Esc: \"Escape\",\n Spacebar: \" \",\n Left: \"ArrowLeft\",\n Up: \"ArrowUp\",\n Right: \"ArrowRight\",\n Down: \"ArrowDown\",\n Del: \"Delete\",\n Win: \"OS\",\n Menu: \"ContextMenu\",\n Apps: \"ContextMenu\",\n Scroll: \"ScrollLock\",\n MozPrintableKey: \"Unidentified\"\n},\n Xc = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 12: \"Clear\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 45: \"Insert\",\n 46: \"Delete\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 224: \"Meta\"\n},\n Yc = {\n Alt: \"altKey\",\n Control: \"ctrlKey\",\n Meta: \"metaKey\",\n Shift: \"shiftKey\"\n};\n\nfunction Zc(a) {\n var b = this.nativeEvent;\n return b.getModifierState ? b.getModifierState(a) : (a = Yc[a]) ? !!b[a] : !1;\n}\n\nfunction $c() {\n return Zc;\n}\n\nvar ad = Tc.extend({\n key: function key(a) {\n if (a.key) {\n var b = Wc[a.key] || a.key;\n if (\"Unidentified\" !== b) return b;\n }\n\n return \"keypress\" === a.type ? (a = Vc(a), 13 === a ? \"Enter\" : String.fromCharCode(a)) : \"keydown\" === a.type || \"keyup\" === a.type ? Xc[a.keyCode] || \"Unidentified\" : \"\";\n },\n location: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n repeat: null,\n locale: null,\n getModifierState: $c,\n charCode: function charCode(a) {\n return \"keypress\" === a.type ? Vc(a) : 0;\n },\n keyCode: function keyCode(a) {\n return \"keydown\" === a.type || \"keyup\" === a.type ? a.keyCode : 0;\n },\n which: function which(a) {\n return \"keypress\" === a.type ? Vc(a) : \"keydown\" === a.type || \"keyup\" === a.type ? a.keyCode : 0;\n }\n}),\n bd = 0,\n cd = 0,\n dd = !1,\n fd = !1,\n gd = Tc.extend({\n screenX: null,\n screenY: null,\n clientX: null,\n clientY: null,\n pageX: null,\n pageY: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n getModifierState: $c,\n button: null,\n buttons: null,\n relatedTarget: function relatedTarget(a) {\n return a.relatedTarget || (a.fromElement === a.srcElement ? a.toElement : a.fromElement);\n },\n movementX: function movementX(a) {\n if (\"movementX\" in a) return a.movementX;\n var b = bd;\n bd = a.screenX;\n return dd ? \"mousemove\" === a.type ? a.screenX - b : 0 : (dd = !0, 0);\n },\n movementY: function movementY(a) {\n if (\"movementY\" in a) return a.movementY;\n var b = cd;\n cd = a.screenY;\n return fd ? \"mousemove\" === a.type ? a.screenY - b : 0 : (fd = !0, 0);\n }\n}),\n hd = gd.extend({\n pointerId: null,\n width: null,\n height: null,\n pressure: null,\n tangentialPressure: null,\n tiltX: null,\n tiltY: null,\n twist: null,\n pointerType: null,\n isPrimary: null\n}),\n id = gd.extend({\n dataTransfer: null\n}),\n jd = Tc.extend({\n touches: null,\n targetTouches: null,\n changedTouches: null,\n altKey: null,\n metaKey: null,\n ctrlKey: null,\n shiftKey: null,\n getModifierState: $c\n}),\n kd = F.extend({\n propertyName: null,\n elapsedTime: null,\n pseudoElement: null\n}),\n ld = gd.extend({\n deltaX: function deltaX(a) {\n return \"deltaX\" in a ? a.deltaX : \"wheelDeltaX\" in a ? -a.wheelDeltaX : 0;\n },\n deltaY: function deltaY(a) {\n return \"deltaY\" in a ? a.deltaY : \"wheelDeltaY\" in a ? -a.wheelDeltaY : \"wheelDelta\" in a ? -a.wheelDelta : 0;\n },\n deltaZ: null,\n deltaMode: null\n}),\n md = [[\"blur\", \"blur\", 0], [\"cancel\", \"cancel\", 0], [\"click\", \"click\", 0], [\"close\", \"close\", 0], [\"contextmenu\", \"contextMenu\", 0], [\"copy\", \"copy\", 0], [\"cut\", \"cut\", 0], [\"auxclick\", \"auxClick\", 0], [\"dblclick\", \"doubleClick\", 0], [\"dragend\", \"dragEnd\", 0], [\"dragstart\", \"dragStart\", 0], [\"drop\", \"drop\", 0], [\"focus\", \"focus\", 0], [\"input\", \"input\", 0], [\"invalid\", \"invalid\", 0], [\"keydown\", \"keyDown\", 0], [\"keypress\", \"keyPress\", 0], [\"keyup\", \"keyUp\", 0], [\"mousedown\", \"mouseDown\", 0], [\"mouseup\", \"mouseUp\", 0], [\"paste\", \"paste\", 0], [\"pause\", \"pause\", 0], [\"play\", \"play\", 0], [\"pointercancel\", \"pointerCancel\", 0], [\"pointerdown\", \"pointerDown\", 0], [\"pointerup\", \"pointerUp\", 0], [\"ratechange\", \"rateChange\", 0], [\"reset\", \"reset\", 0], [\"seeked\", \"seeked\", 0], [\"submit\", \"submit\", 0], [\"touchcancel\", \"touchCancel\", 0], [\"touchend\", \"touchEnd\", 0], [\"touchstart\", \"touchStart\", 0], [\"volumechange\", \"volumeChange\", 0], [\"drag\", \"drag\", 1], [\"dragenter\", \"dragEnter\", 1], [\"dragexit\", \"dragExit\", 1], [\"dragleave\", \"dragLeave\", 1], [\"dragover\", \"dragOver\", 1], [\"mousemove\", \"mouseMove\", 1], [\"mouseout\", \"mouseOut\", 1], [\"mouseover\", \"mouseOver\", 1], [\"pointermove\", \"pointerMove\", 1], [\"pointerout\", \"pointerOut\", 1], [\"pointerover\", \"pointerOver\", 1], [\"scroll\", \"scroll\", 1], [\"toggle\", \"toggle\", 1], [\"touchmove\", \"touchMove\", 1], [\"wheel\", \"wheel\", 1], [\"abort\", \"abort\", 2], [Zb, \"animationEnd\", 2], [$b, \"animationIteration\", 2], [ac, \"animationStart\", 2], [\"canplay\", \"canPlay\", 2], [\"canplaythrough\", \"canPlayThrough\", 2], [\"durationchange\", \"durationChange\", 2], [\"emptied\", \"emptied\", 2], [\"encrypted\", \"encrypted\", 2], [\"ended\", \"ended\", 2], [\"error\", \"error\", 2], [\"gotpointercapture\", \"gotPointerCapture\", 2], [\"load\", \"load\", 2], [\"loadeddata\", \"loadedData\", 2], [\"loadedmetadata\", \"loadedMetadata\", 2], [\"loadstart\", \"loadStart\", 2], [\"lostpointercapture\", \"lostPointerCapture\", 2], [\"playing\", \"playing\", 2], [\"progress\", \"progress\", 2], [\"seeking\", \"seeking\", 2], [\"stalled\", \"stalled\", 2], [\"suspend\", \"suspend\", 2], [\"timeupdate\", \"timeUpdate\", 2], [bc, \"transitionEnd\", 2], [\"waiting\", \"waiting\", 2]],\n nd = {},\n od = {},\n pd = 0;\n\nfor (; pd < md.length; pd++) {\n var qd = md[pd],\n rd = qd[0],\n sd = qd[1],\n td = qd[2],\n ud = \"on\" + (sd[0].toUpperCase() + sd.slice(1)),\n vd = {\n phasedRegistrationNames: {\n bubbled: ud,\n captured: ud + \"Capture\"\n },\n dependencies: [rd],\n eventPriority: td\n };\n nd[sd] = vd;\n od[rd] = vd;\n}\n\nvar wd = {\n eventTypes: nd,\n getEventPriority: function getEventPriority(a) {\n a = od[a];\n return void 0 !== a ? a.eventPriority : 2;\n },\n extractEvents: function extractEvents(a, b, c, d) {\n var e = od[a];\n if (!e) return null;\n\n switch (a) {\n case \"keypress\":\n if (0 === Vc(c)) return null;\n\n case \"keydown\":\n case \"keyup\":\n a = ad;\n break;\n\n case \"blur\":\n case \"focus\":\n a = Uc;\n break;\n\n case \"click\":\n if (2 === c.button) return null;\n\n case \"auxclick\":\n case \"dblclick\":\n case \"mousedown\":\n case \"mousemove\":\n case \"mouseup\":\n case \"mouseout\":\n case \"mouseover\":\n case \"contextmenu\":\n a = gd;\n break;\n\n case \"drag\":\n case \"dragend\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"dragstart\":\n case \"drop\":\n a = id;\n break;\n\n case \"touchcancel\":\n case \"touchend\":\n case \"touchmove\":\n case \"touchstart\":\n a = jd;\n break;\n\n case Zb:\n case $b:\n case ac:\n a = Rc;\n break;\n\n case bc:\n a = kd;\n break;\n\n case \"scroll\":\n a = Tc;\n break;\n\n case \"wheel\":\n a = ld;\n break;\n\n case \"copy\":\n case \"cut\":\n case \"paste\":\n a = Sc;\n break;\n\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"pointerup\":\n a = hd;\n break;\n\n default:\n a = F;\n }\n\n b = a.getPooled(e, b, c, d);\n Lc(b);\n return b;\n }\n},\n xd = wd.getEventPriority,\n zd = 10,\n Ad = [];\n\nfunction Bd(a) {\n var b = a.targetInst,\n c = b;\n\n do {\n if (!c) {\n a.ancestors.push(c);\n break;\n }\n\n var d = c;\n if (3 === d.tag) d = d.stateNode.containerInfo;else {\n for (; d.return;) {\n d = d.return;\n }\n\n d = 3 !== d.tag ? null : d.stateNode.containerInfo;\n }\n if (!d) break;\n b = c.tag;\n 5 !== b && 6 !== b || a.ancestors.push(c);\n c = Cd(d);\n } while (c);\n\n for (c = 0; c < a.ancestors.length; c++) {\n b = a.ancestors[c];\n var e = Fc(a.nativeEvent);\n d = a.topLevelType;\n\n for (var f = a.nativeEvent, g = a.eventSystemFlags, h = null, k = 0; k < ea.length; k++) {\n var l = ea[k];\n l && (l = l.extractEvents(d, b, f, e, g)) && (h = wa(h, l));\n }\n\n Aa(h);\n }\n}\n\nvar Dd = !0;\n\nfunction G(a, b) {\n Ed(b, a, !1);\n}\n\nfunction Ed(a, b, c) {\n switch (xd(b)) {\n case 0:\n var d = Fd.bind(null, b, 1);\n break;\n\n case 1:\n d = Gd.bind(null, b, 1);\n break;\n\n default:\n d = Hd.bind(null, b, 1);\n }\n\n c ? a.addEventListener(b, d, !0) : a.addEventListener(b, d, !1);\n}\n\nfunction Fd(a, b, c) {\n hb || fb();\n var d = Hd,\n e = hb;\n hb = !0;\n\n try {\n eb(d, a, b, c);\n } finally {\n (hb = e) || jb();\n }\n}\n\nfunction Gd(a, b, c) {\n Hd(a, b, c);\n}\n\nfunction Id(a, b, c, d) {\n if (Ad.length) {\n var e = Ad.pop();\n e.topLevelType = a;\n e.eventSystemFlags = b;\n e.nativeEvent = c;\n e.targetInst = d;\n a = e;\n } else a = {\n topLevelType: a,\n eventSystemFlags: b,\n nativeEvent: c,\n targetInst: d,\n ancestors: []\n };\n\n try {\n if (b = Bd, c = a, ib) b(c, void 0);else {\n ib = !0;\n\n try {\n gb(b, c, void 0);\n } finally {\n ib = !1, jb();\n }\n }\n } finally {\n a.topLevelType = null, a.nativeEvent = null, a.targetInst = null, a.ancestors.length = 0, Ad.length < zd && Ad.push(a);\n }\n}\n\nfunction Hd(a, b, c) {\n if (Dd) if (0 < fc.length && -1 < lc.indexOf(a)) a = qc(null, a, b, c), fc.push(a);else {\n var d = vc(a, b, c);\n null === d ? rc(a, c) : -1 < lc.indexOf(a) ? (a = qc(d, a, b, c), fc.push(a)) : tc(d, a, b, c) || (rc(a, c), Id(a, b, c, null));\n }\n}\n\nfunction vc(a, b, c) {\n var d = Fc(c),\n e = Cd(d);\n if (null !== e) if (d = Bc(e), null === d) e = null;else {\n var f = d.tag;\n\n if (13 === f) {\n a: {\n if (13 === d.tag && (e = d.memoizedState, null === e && (d = d.alternate, null !== d && (e = d.memoizedState)), null !== e)) {\n d = e.dehydrated;\n break a;\n }\n\n d = null;\n }\n\n if (null !== d) return d;\n e = null;\n } else if (3 === f) {\n if (d.stateNode.hydrate) return 3 === d.tag ? d.stateNode.containerInfo : null;\n e = null;\n } else d !== e && (e = null);\n }\n Id(a, b, c, e);\n return null;\n}\n\nfunction Jd(a) {\n if (!Xa) return !1;\n a = \"on\" + a;\n var b = a in document;\n b || (b = document.createElement(\"div\"), b.setAttribute(a, \"return;\"), b = \"function\" === typeof b[a]);\n return b;\n}\n\nvar Kd = new (\"function\" === typeof WeakMap ? WeakMap : Map)();\n\nfunction oc(a) {\n var b = Kd.get(a);\n void 0 === b && (b = new Set(), Kd.set(a, b));\n return b;\n}\n\nfunction pc(a, b, c) {\n if (!c.has(a)) {\n switch (a) {\n case \"scroll\":\n Ed(b, \"scroll\", !0);\n break;\n\n case \"focus\":\n case \"blur\":\n Ed(b, \"focus\", !0);\n Ed(b, \"blur\", !0);\n c.add(\"blur\");\n c.add(\"focus\");\n break;\n\n case \"cancel\":\n case \"close\":\n Jd(a) && Ed(b, a, !0);\n break;\n\n case \"invalid\":\n case \"submit\":\n case \"reset\":\n break;\n\n default:\n -1 === dc.indexOf(a) && G(a, b);\n }\n\n c.add(a);\n }\n}\n\nvar Ld = {\n animationIterationCount: !0,\n borderImageOutset: !0,\n borderImageSlice: !0,\n borderImageWidth: !0,\n boxFlex: !0,\n boxFlexGroup: !0,\n boxOrdinalGroup: !0,\n columnCount: !0,\n columns: !0,\n flex: !0,\n flexGrow: !0,\n flexPositive: !0,\n flexShrink: !0,\n flexNegative: !0,\n flexOrder: !0,\n gridArea: !0,\n gridRow: !0,\n gridRowEnd: !0,\n gridRowSpan: !0,\n gridRowStart: !0,\n gridColumn: !0,\n gridColumnEnd: !0,\n gridColumnSpan: !0,\n gridColumnStart: !0,\n fontWeight: !0,\n lineClamp: !0,\n lineHeight: !0,\n opacity: !0,\n order: !0,\n orphans: !0,\n tabSize: !0,\n widows: !0,\n zIndex: !0,\n zoom: !0,\n fillOpacity: !0,\n floodOpacity: !0,\n stopOpacity: !0,\n strokeDasharray: !0,\n strokeDashoffset: !0,\n strokeMiterlimit: !0,\n strokeOpacity: !0,\n strokeWidth: !0\n},\n Md = [\"Webkit\", \"ms\", \"Moz\", \"O\"];\nObject.keys(Ld).forEach(function (a) {\n Md.forEach(function (b) {\n b = b + a.charAt(0).toUpperCase() + a.substring(1);\n Ld[b] = Ld[a];\n });\n});\n\nfunction Nd(a, b, c) {\n return null == b || \"boolean\" === typeof b || \"\" === b ? \"\" : c || \"number\" !== typeof b || 0 === b || Ld.hasOwnProperty(a) && Ld[a] ? (\"\" + b).trim() : b + \"px\";\n}\n\nfunction Od(a, b) {\n a = a.style;\n\n for (var c in b) {\n if (b.hasOwnProperty(c)) {\n var d = 0 === c.indexOf(\"--\"),\n e = Nd(c, b[c], d);\n \"float\" === c && (c = \"cssFloat\");\n d ? a.setProperty(c, e) : a[c] = e;\n }\n }\n}\n\nvar Pd = n({\n menuitem: !0\n}, {\n area: !0,\n base: !0,\n br: !0,\n col: !0,\n embed: !0,\n hr: !0,\n img: !0,\n input: !0,\n keygen: !0,\n link: !0,\n meta: !0,\n param: !0,\n source: !0,\n track: !0,\n wbr: !0\n});\n\nfunction Qd(a, b) {\n if (b) {\n if (Pd[a] && (null != b.children || null != b.dangerouslySetInnerHTML)) throw t(Error(137), a, \"\");\n\n if (null != b.dangerouslySetInnerHTML) {\n if (null != b.children) throw t(Error(60));\n if (!(\"object\" === typeof b.dangerouslySetInnerHTML && \"__html\" in b.dangerouslySetInnerHTML)) throw t(Error(61));\n }\n\n if (null != b.style && \"object\" !== typeof b.style) throw t(Error(62), \"\");\n }\n}\n\nfunction Rd(a, b) {\n if (-1 === a.indexOf(\"-\")) return \"string\" === typeof b.is;\n\n switch (a) {\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n return !1;\n\n default:\n return !0;\n }\n}\n\nfunction Sd(a, b) {\n a = 9 === a.nodeType || 11 === a.nodeType ? a : a.ownerDocument;\n var c = oc(a);\n b = ja[b];\n\n for (var d = 0; d < b.length; d++) {\n pc(b[d], a, c);\n }\n}\n\nfunction Td() {}\n\nfunction Ud(a) {\n a = a || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof a) return null;\n\n try {\n return a.activeElement || a.body;\n } catch (b) {\n return a.body;\n }\n}\n\nfunction Vd(a) {\n for (; a && a.firstChild;) {\n a = a.firstChild;\n }\n\n return a;\n}\n\nfunction Wd(a, b) {\n var c = Vd(a);\n a = 0;\n\n for (var d; c;) {\n if (3 === c.nodeType) {\n d = a + c.textContent.length;\n if (a <= b && d >= b) return {\n node: c,\n offset: b - a\n };\n a = d;\n }\n\n a: {\n for (; c;) {\n if (c.nextSibling) {\n c = c.nextSibling;\n break a;\n }\n\n c = c.parentNode;\n }\n\n c = void 0;\n }\n\n c = Vd(c);\n }\n}\n\nfunction Xd(a, b) {\n return a && b ? a === b ? !0 : a && 3 === a.nodeType ? !1 : b && 3 === b.nodeType ? Xd(a, b.parentNode) : \"contains\" in a ? a.contains(b) : a.compareDocumentPosition ? !!(a.compareDocumentPosition(b) & 16) : !1 : !1;\n}\n\nfunction Yd() {\n for (var a = window, b = Ud(); b instanceof a.HTMLIFrameElement;) {\n try {\n var c = \"string\" === typeof b.contentWindow.location.href;\n } catch (d) {\n c = !1;\n }\n\n if (c) a = b.contentWindow;else break;\n b = Ud(a.document);\n }\n\n return b;\n}\n\nfunction Zd(a) {\n var b = a && a.nodeName && a.nodeName.toLowerCase();\n return b && (\"input\" === b && (\"text\" === a.type || \"search\" === a.type || \"tel\" === a.type || \"url\" === a.type || \"password\" === a.type) || \"textarea\" === b || \"true\" === a.contentEditable);\n}\n\nvar $d = \"$\",\n ae = \"/$\",\n be = \"$?\",\n ce = \"$!\",\n de = null,\n ee = null;\n\nfunction fe(a, b) {\n switch (a) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n return !!b.autoFocus;\n }\n\n return !1;\n}\n\nfunction ge(a, b) {\n return \"textarea\" === a || \"option\" === a || \"noscript\" === a || \"string\" === typeof b.children || \"number\" === typeof b.children || \"object\" === typeof b.dangerouslySetInnerHTML && null !== b.dangerouslySetInnerHTML && null != b.dangerouslySetInnerHTML.__html;\n}\n\nvar he = \"function\" === typeof setTimeout ? setTimeout : void 0,\n ie = \"function\" === typeof clearTimeout ? clearTimeout : void 0;\n\nfunction je(a) {\n for (; null != a; a = a.nextSibling) {\n var b = a.nodeType;\n if (1 === b || 3 === b) break;\n }\n\n return a;\n}\n\nfunction ke(a) {\n a = a.previousSibling;\n\n for (var b = 0; a;) {\n if (8 === a.nodeType) {\n var c = a.data;\n\n if (c === $d || c === ce || c === be) {\n if (0 === b) return a;\n b--;\n } else c === ae && b++;\n }\n\n a = a.previousSibling;\n }\n\n return null;\n}\n\nvar le = Math.random().toString(36).slice(2),\n me = \"__reactInternalInstance$\" + le,\n ne = \"__reactEventHandlers$\" + le,\n oe = \"__reactContainere$\" + le;\n\nfunction Cd(a) {\n var b = a[me];\n if (b) return b;\n\n for (var c = a.parentNode; c;) {\n if (b = c[oe] || c[me]) {\n c = b.alternate;\n if (null !== b.child || null !== c && null !== c.child) for (a = ke(a); null !== a;) {\n if (c = a[me]) return c;\n a = ke(a);\n }\n return b;\n }\n\n a = c;\n c = a.parentNode;\n }\n\n return null;\n}\n\nfunction pe(a) {\n a = a[me] || a[oe];\n return !a || 5 !== a.tag && 6 !== a.tag && 13 !== a.tag && 3 !== a.tag ? null : a;\n}\n\nfunction qe(a) {\n if (5 === a.tag || 6 === a.tag) return a.stateNode;\n throw t(Error(33));\n}\n\nfunction re(a) {\n return a[ne] || null;\n}\n\nvar se = null,\n te = null,\n ue = null;\n\nfunction ve() {\n if (ue) return ue;\n var a,\n b = te,\n c = b.length,\n d,\n e = \"value\" in se ? se.value : se.textContent,\n f = e.length;\n\n for (a = 0; a < c && b[a] === e[a]; a++) {\n ;\n }\n\n var g = c - a;\n\n for (d = 1; d <= g && b[c - d] === e[f - d]; d++) {\n ;\n }\n\n return ue = e.slice(a, 1 < d ? 1 - d : void 0);\n}\n\nvar we = F.extend({\n data: null\n}),\n xe = F.extend({\n data: null\n}),\n ye = [9, 13, 27, 32],\n ze = Xa && \"CompositionEvent\" in window,\n Ae = null;\nXa && \"documentMode\" in document && (Ae = document.documentMode);\nvar Be = Xa && \"TextEvent\" in window && !Ae,\n Ce = Xa && (!ze || Ae && 8 < Ae && 11 >= Ae),\n De = String.fromCharCode(32),\n Ee = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: \"onBeforeInput\",\n captured: \"onBeforeInputCapture\"\n },\n dependencies: [\"compositionend\", \"keypress\", \"textInput\", \"paste\"]\n },\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: \"onCompositionEnd\",\n captured: \"onCompositionEndCapture\"\n },\n dependencies: \"blur compositionend keydown keypress keyup mousedown\".split(\" \")\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: \"onCompositionStart\",\n captured: \"onCompositionStartCapture\"\n },\n dependencies: \"blur compositionstart keydown keypress keyup mousedown\".split(\" \")\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: \"onCompositionUpdate\",\n captured: \"onCompositionUpdateCapture\"\n },\n dependencies: \"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")\n }\n},\n Fe = !1;\n\nfunction Ge(a, b) {\n switch (a) {\n case \"keyup\":\n return -1 !== ye.indexOf(b.keyCode);\n\n case \"keydown\":\n return 229 !== b.keyCode;\n\n case \"keypress\":\n case \"mousedown\":\n case \"blur\":\n return !0;\n\n default:\n return !1;\n }\n}\n\nfunction He(a) {\n a = a.detail;\n return \"object\" === typeof a && \"data\" in a ? a.data : null;\n}\n\nvar Ie = !1;\n\nfunction Je(a, b) {\n switch (a) {\n case \"compositionend\":\n return He(b);\n\n case \"keypress\":\n if (32 !== b.which) return null;\n Fe = !0;\n return De;\n\n case \"textInput\":\n return a = b.data, a === De && Fe ? null : a;\n\n default:\n return null;\n }\n}\n\nfunction Ke(a, b) {\n if (Ie) return \"compositionend\" === a || !ze && Ge(a, b) ? (a = ve(), ue = te = se = null, Ie = !1, a) : null;\n\n switch (a) {\n case \"paste\":\n return null;\n\n case \"keypress\":\n if (!(b.ctrlKey || b.altKey || b.metaKey) || b.ctrlKey && b.altKey) {\n if (b.char && 1 < b.char.length) return b.char;\n if (b.which) return String.fromCharCode(b.which);\n }\n\n return null;\n\n case \"compositionend\":\n return Ce && \"ko\" !== b.locale ? null : b.data;\n\n default:\n return null;\n }\n}\n\nvar Le = {\n eventTypes: Ee,\n extractEvents: function extractEvents(a, b, c, d) {\n var e;\n if (ze) b: {\n switch (a) {\n case \"compositionstart\":\n var f = Ee.compositionStart;\n break b;\n\n case \"compositionend\":\n f = Ee.compositionEnd;\n break b;\n\n case \"compositionupdate\":\n f = Ee.compositionUpdate;\n break b;\n }\n\n f = void 0;\n } else Ie ? Ge(a, c) && (f = Ee.compositionEnd) : \"keydown\" === a && 229 === c.keyCode && (f = Ee.compositionStart);\n f ? (Ce && \"ko\" !== c.locale && (Ie || f !== Ee.compositionStart ? f === Ee.compositionEnd && Ie && (e = ve()) : (se = d, te = \"value\" in se ? se.value : se.textContent, Ie = !0)), f = we.getPooled(f, b, c, d), e ? f.data = e : (e = He(c), null !== e && (f.data = e)), Lc(f), e = f) : e = null;\n (a = Be ? Je(a, c) : Ke(a, c)) ? (b = xe.getPooled(Ee.beforeInput, b, c, d), b.data = a, Lc(b)) : b = null;\n return null === e ? b : null === b ? e : [e, b];\n }\n},\n Me = {\n color: !0,\n date: !0,\n datetime: !0,\n \"datetime-local\": !0,\n email: !0,\n month: !0,\n number: !0,\n password: !0,\n range: !0,\n search: !0,\n tel: !0,\n text: !0,\n time: !0,\n url: !0,\n week: !0\n};\n\nfunction Ne(a) {\n var b = a && a.nodeName && a.nodeName.toLowerCase();\n return \"input\" === b ? !!Me[a.type] : \"textarea\" === b ? !0 : !1;\n}\n\nvar Oe = {\n change: {\n phasedRegistrationNames: {\n bubbled: \"onChange\",\n captured: \"onChangeCapture\"\n },\n dependencies: \"blur change click focus input keydown keyup selectionchange\".split(\" \")\n }\n};\n\nfunction Pe(a, b, c) {\n a = F.getPooled(Oe.change, a, b, c);\n a.type = \"change\";\n bb(c);\n Lc(a);\n return a;\n}\n\nvar Qe = null,\n Re = null;\n\nfunction Se(a) {\n Aa(a);\n}\n\nfunction Te(a) {\n var b = qe(a);\n if (zb(b)) return a;\n}\n\nfunction Ue(a, b) {\n if (\"change\" === a) return b;\n}\n\nvar Ve = !1;\nXa && (Ve = Jd(\"input\") && (!document.documentMode || 9 < document.documentMode));\n\nfunction We() {\n Qe && (Qe.detachEvent(\"onpropertychange\", Xe), Re = Qe = null);\n}\n\nfunction Xe(a) {\n if (\"value\" === a.propertyName && Te(Re)) if (a = Pe(Re, a, Fc(a)), hb) Aa(a);else {\n hb = !0;\n\n try {\n db(Se, a);\n } finally {\n hb = !1, jb();\n }\n }\n}\n\nfunction Ye(a, b, c) {\n \"focus\" === a ? (We(), Qe = b, Re = c, Qe.attachEvent(\"onpropertychange\", Xe)) : \"blur\" === a && We();\n}\n\nfunction Ze(a) {\n if (\"selectionchange\" === a || \"keyup\" === a || \"keydown\" === a) return Te(Re);\n}\n\nfunction $e(a, b) {\n if (\"click\" === a) return Te(b);\n}\n\nfunction af(a, b) {\n if (\"input\" === a || \"change\" === a) return Te(b);\n}\n\nvar bf = {\n eventTypes: Oe,\n _isInputEventSupported: Ve,\n extractEvents: function extractEvents(a, b, c, d) {\n var e = b ? qe(b) : window,\n f = e.nodeName && e.nodeName.toLowerCase();\n if (\"select\" === f || \"input\" === f && \"file\" === e.type) var g = Ue;else if (Ne(e)) {\n if (Ve) g = af;else {\n g = Ze;\n var h = Ye;\n }\n } else (f = e.nodeName) && \"input\" === f.toLowerCase() && (\"checkbox\" === e.type || \"radio\" === e.type) && (g = $e);\n if (g && (g = g(a, b))) return Pe(g, c, d);\n h && h(a, e, b);\n \"blur\" === a && (a = e._wrapperState) && a.controlled && \"number\" === e.type && Eb(e, \"number\", e.value);\n }\n},\n cf = {\n mouseEnter: {\n registrationName: \"onMouseEnter\",\n dependencies: [\"mouseout\", \"mouseover\"]\n },\n mouseLeave: {\n registrationName: \"onMouseLeave\",\n dependencies: [\"mouseout\", \"mouseover\"]\n },\n pointerEnter: {\n registrationName: \"onPointerEnter\",\n dependencies: [\"pointerout\", \"pointerover\"]\n },\n pointerLeave: {\n registrationName: \"onPointerLeave\",\n dependencies: [\"pointerout\", \"pointerover\"]\n }\n},\n df = {\n eventTypes: cf,\n extractEvents: function extractEvents(a, b, c, d, e) {\n var f = \"mouseover\" === a || \"pointerover\" === a,\n g = \"mouseout\" === a || \"pointerout\" === a;\n if (f && 0 === (e & 32) && (c.relatedTarget || c.fromElement) || !g && !f) return null;\n e = d.window === d ? d : (e = d.ownerDocument) ? e.defaultView || e.parentWindow : window;\n\n if (g) {\n if (g = b, b = (b = c.relatedTarget || c.toElement) ? Cd(b) : null, null !== b && (f = Bc(b), b !== f || 5 !== b.tag && 6 !== b.tag)) b = null;\n } else g = null;\n\n if (g === b) return null;\n\n if (\"mouseout\" === a || \"mouseover\" === a) {\n var h = gd;\n var k = cf.mouseLeave;\n var l = cf.mouseEnter;\n var m = \"mouse\";\n } else if (\"pointerout\" === a || \"pointerover\" === a) h = hd, k = cf.pointerLeave, l = cf.pointerEnter, m = \"pointer\";\n\n a = null == g ? e : qe(g);\n e = null == b ? e : qe(b);\n k = h.getPooled(k, g, c, d);\n k.type = m + \"leave\";\n k.target = a;\n k.relatedTarget = e;\n c = h.getPooled(l, b, c, d);\n c.type = m + \"enter\";\n c.target = e;\n c.relatedTarget = a;\n d = g;\n m = b;\n if (d && m) a: {\n h = d;\n l = m;\n a = 0;\n\n for (g = h; g; g = Gc(g)) {\n a++;\n }\n\n g = 0;\n\n for (b = l; b; b = Gc(b)) {\n g++;\n }\n\n for (; 0 < a - g;) {\n h = Gc(h), a--;\n }\n\n for (; 0 < g - a;) {\n l = Gc(l), g--;\n }\n\n for (; a--;) {\n if (h === l || h === l.alternate) break a;\n h = Gc(h);\n l = Gc(l);\n }\n\n h = null;\n } else h = null;\n l = h;\n\n for (h = []; d && d !== l;) {\n a = d.alternate;\n if (null !== a && a === l) break;\n h.push(d);\n d = Gc(d);\n }\n\n for (d = []; m && m !== l;) {\n a = m.alternate;\n if (null !== a && a === l) break;\n d.push(m);\n m = Gc(m);\n }\n\n for (m = 0; m < h.length; m++) {\n Jc(h[m], \"bubbled\", k);\n }\n\n for (m = d.length; 0 < m--;) {\n Jc(d[m], \"captured\", c);\n }\n\n return [k, c];\n }\n};\n\nfunction ef(a, b) {\n return a === b && (0 !== a || 1 / a === 1 / b) || a !== a && b !== b;\n}\n\nvar ff = \"function\" === typeof Object.is ? Object.is : ef,\n gf = Object.prototype.hasOwnProperty;\n\nfunction hf(a, b) {\n if (ff(a, b)) return !0;\n if (\"object\" !== typeof a || null === a || \"object\" !== typeof b || null === b) return !1;\n var c = Object.keys(a),\n d = Object.keys(b);\n if (c.length !== d.length) return !1;\n\n for (d = 0; d < c.length; d++) {\n if (!gf.call(b, c[d]) || !ff(a[c[d]], b[c[d]])) return !1;\n }\n\n return !0;\n}\n\nvar jf = Xa && \"documentMode\" in document && 11 >= document.documentMode,\n kf = {\n select: {\n phasedRegistrationNames: {\n bubbled: \"onSelect\",\n captured: \"onSelectCapture\"\n },\n dependencies: \"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")\n }\n},\n lf = null,\n mf = null,\n nf = null,\n of = !1;\n\nfunction pf(a, b) {\n var c = b.window === b ? b.document : 9 === b.nodeType ? b : b.ownerDocument;\n if (of || null == lf || lf !== Ud(c)) return null;\n c = lf;\n \"selectionStart\" in c && Zd(c) ? c = {\n start: c.selectionStart,\n end: c.selectionEnd\n } : (c = (c.ownerDocument && c.ownerDocument.defaultView || window).getSelection(), c = {\n anchorNode: c.anchorNode,\n anchorOffset: c.anchorOffset,\n focusNode: c.focusNode,\n focusOffset: c.focusOffset\n });\n return nf && hf(nf, c) ? null : (nf = c, a = F.getPooled(kf.select, mf, a, b), a.type = \"select\", a.target = lf, Lc(a), a);\n}\n\nvar qf = {\n eventTypes: kf,\n extractEvents: function extractEvents(a, b, c, d) {\n var e = d.window === d ? d.document : 9 === d.nodeType ? d : d.ownerDocument,\n f;\n\n if (!(f = !e)) {\n a: {\n e = oc(e);\n f = ja.onSelect;\n\n for (var g = 0; g < f.length; g++) {\n if (!e.has(f[g])) {\n e = !1;\n break a;\n }\n }\n\n e = !0;\n }\n\n f = !e;\n }\n\n if (f) return null;\n e = b ? qe(b) : window;\n\n switch (a) {\n case \"focus\":\n if (Ne(e) || \"true\" === e.contentEditable) lf = e, mf = b, nf = null;\n break;\n\n case \"blur\":\n nf = mf = lf = null;\n break;\n\n case \"mousedown\":\n of = !0;\n break;\n\n case \"contextmenu\":\n case \"mouseup\":\n case \"dragend\":\n return of = !1, pf(c, d);\n\n case \"selectionchange\":\n if (jf) break;\n\n case \"keydown\":\n case \"keyup\":\n return pf(c, d);\n }\n\n return null;\n }\n};\nBa.injectEventPluginOrder(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));\nsa = re;\nta = pe;\nua = qe;\nBa.injectEventPluginsByName({\n SimpleEventPlugin: wd,\n EnterLeaveEventPlugin: df,\n ChangeEventPlugin: bf,\n SelectEventPlugin: qf,\n BeforeInputEventPlugin: Le\n});\nnew Set();\nvar rf = [],\n sf = -1;\n\nfunction H(a) {\n 0 > sf || (a.current = rf[sf], rf[sf] = null, sf--);\n}\n\nfunction I(a, b) {\n sf++;\n rf[sf] = a.current;\n a.current = b;\n}\n\nvar tf = {},\n J = {\n current: tf\n},\n K = {\n current: !1\n},\n uf = tf;\n\nfunction vf(a, b) {\n var c = a.type.contextTypes;\n if (!c) return tf;\n var d = a.stateNode;\n if (d && d.__reactInternalMemoizedUnmaskedChildContext === b) return d.__reactInternalMemoizedMaskedChildContext;\n var e = {},\n f;\n\n for (f in c) {\n e[f] = b[f];\n }\n\n d && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = b, a.__reactInternalMemoizedMaskedChildContext = e);\n return e;\n}\n\nfunction N(a) {\n a = a.childContextTypes;\n return null !== a && void 0 !== a;\n}\n\nfunction wf(a) {\n H(K, a);\n H(J, a);\n}\n\nfunction xf(a) {\n H(K, a);\n H(J, a);\n}\n\nfunction zf(a, b, c) {\n if (J.current !== tf) throw t(Error(168));\n I(J, b, a);\n I(K, c, a);\n}\n\nfunction Af(a, b, c) {\n var d = a.stateNode;\n a = b.childContextTypes;\n if (\"function\" !== typeof d.getChildContext) return c;\n d = d.getChildContext();\n\n for (var e in d) {\n if (!(e in a)) throw t(Error(108), Va(b) || \"Unknown\", e);\n }\n\n return n({}, c, {}, d);\n}\n\nfunction Bf(a) {\n var b = a.stateNode;\n b = b && b.__reactInternalMemoizedMergedChildContext || tf;\n uf = J.current;\n I(J, b, a);\n I(K, K.current, a);\n return !0;\n}\n\nfunction Cf(a, b, c) {\n var d = a.stateNode;\n if (!d) throw t(Error(169));\n c ? (b = Af(a, b, uf), d.__reactInternalMemoizedMergedChildContext = b, H(K, a), H(J, a), I(J, b, a)) : H(K, a);\n I(K, c, a);\n}\n\nvar Df = r.unstable_runWithPriority,\n Ef = r.unstable_scheduleCallback,\n Ff = r.unstable_cancelCallback,\n Gf = r.unstable_shouldYield,\n Hf = r.unstable_requestPaint,\n If = r.unstable_now,\n Jf = r.unstable_getCurrentPriorityLevel,\n Kf = r.unstable_ImmediatePriority,\n Lf = r.unstable_UserBlockingPriority,\n Mf = r.unstable_NormalPriority,\n Nf = r.unstable_LowPriority,\n Of = r.unstable_IdlePriority,\n Pf = {},\n Qf = void 0 !== Hf ? Hf : function () {},\n Rf = null,\n Sf = null,\n Tf = !1,\n Uf = If(),\n Vf = 1E4 > Uf ? If : function () {\n return If() - Uf;\n};\n\nfunction Wf() {\n switch (Jf()) {\n case Kf:\n return 99;\n\n case Lf:\n return 98;\n\n case Mf:\n return 97;\n\n case Nf:\n return 96;\n\n case Of:\n return 95;\n\n default:\n throw t(Error(332));\n }\n}\n\nfunction Xf(a) {\n switch (a) {\n case 99:\n return Kf;\n\n case 98:\n return Lf;\n\n case 97:\n return Mf;\n\n case 96:\n return Nf;\n\n case 95:\n return Of;\n\n default:\n throw t(Error(332));\n }\n}\n\nfunction Yf(a, b) {\n a = Xf(a);\n return Df(a, b);\n}\n\nfunction Zf(a, b, c) {\n a = Xf(a);\n return Ef(a, b, c);\n}\n\nfunction $f(a) {\n null === Rf ? (Rf = [a], Sf = Ef(Kf, ag)) : Rf.push(a);\n return Pf;\n}\n\nfunction bg() {\n if (null !== Sf) {\n var a = Sf;\n Sf = null;\n Ff(a);\n }\n\n ag();\n}\n\nfunction ag() {\n if (!Tf && null !== Rf) {\n Tf = !0;\n var a = 0;\n\n try {\n var b = Rf;\n Yf(99, function () {\n for (; a < b.length; a++) {\n var c = b[a];\n\n do {\n c = c(!0);\n } while (null !== c);\n }\n });\n Rf = null;\n } catch (c) {\n throw null !== Rf && (Rf = Rf.slice(a + 1)), Ef(Kf, bg), c;\n } finally {\n Tf = !1;\n }\n }\n}\n\nfunction cg(a, b) {\n if (a && a.defaultProps) {\n b = n({}, b);\n a = a.defaultProps;\n\n for (var c in a) {\n void 0 === b[c] && (b[c] = a[c]);\n }\n }\n\n return b;\n}\n\nvar dg = {\n current: null\n},\n eg = null,\n fg = null,\n gg = null;\n\nfunction hg() {\n gg = fg = eg = null;\n}\n\nfunction ig(a, b) {\n var c = a.type._context;\n I(dg, c._currentValue, a);\n c._currentValue = b;\n}\n\nfunction jg(a) {\n var b = dg.current;\n H(dg, a);\n a.type._context._currentValue = b;\n}\n\nfunction kg(a, b) {\n for (; null !== a;) {\n var c = a.alternate;\n if (a.childExpirationTime < b) a.childExpirationTime = b, null !== c && c.childExpirationTime < b && (c.childExpirationTime = b);else if (null !== c && c.childExpirationTime < b) c.childExpirationTime = b;else break;\n a = a.return;\n }\n}\n\nfunction lg(a, b) {\n eg = a;\n gg = fg = null;\n a = a.dependencies;\n null !== a && null !== a.firstContext && (a.expirationTime >= b && (mg = !0), a.firstContext = null);\n}\n\nfunction ng(a, b) {\n if (gg !== a && !1 !== b && 0 !== b) {\n if (\"number\" !== typeof b || 1073741823 === b) gg = a, b = 1073741823;\n b = {\n context: a,\n observedBits: b,\n next: null\n };\n\n if (null === fg) {\n if (null === eg) throw t(Error(308));\n fg = b;\n eg.dependencies = {\n expirationTime: 0,\n firstContext: b,\n responders: null\n };\n } else fg = fg.next = b;\n }\n\n return a._currentValue;\n}\n\nvar og = !1;\n\nfunction pg(a) {\n return {\n baseState: a,\n firstUpdate: null,\n lastUpdate: null,\n firstCapturedUpdate: null,\n lastCapturedUpdate: null,\n firstEffect: null,\n lastEffect: null,\n firstCapturedEffect: null,\n lastCapturedEffect: null\n };\n}\n\nfunction qg(a) {\n return {\n baseState: a.baseState,\n firstUpdate: a.firstUpdate,\n lastUpdate: a.lastUpdate,\n firstCapturedUpdate: null,\n lastCapturedUpdate: null,\n firstEffect: null,\n lastEffect: null,\n firstCapturedEffect: null,\n lastCapturedEffect: null\n };\n}\n\nfunction rg(a, b) {\n return {\n expirationTime: a,\n suspenseConfig: b,\n tag: 0,\n payload: null,\n callback: null,\n next: null,\n nextEffect: null\n };\n}\n\nfunction sg(a, b) {\n null === a.lastUpdate ? a.firstUpdate = a.lastUpdate = b : (a.lastUpdate.next = b, a.lastUpdate = b);\n}\n\nfunction tg(a, b) {\n var c = a.alternate;\n\n if (null === c) {\n var d = a.updateQueue;\n var e = null;\n null === d && (d = a.updateQueue = pg(a.memoizedState));\n } else d = a.updateQueue, e = c.updateQueue, null === d ? null === e ? (d = a.updateQueue = pg(a.memoizedState), e = c.updateQueue = pg(c.memoizedState)) : d = a.updateQueue = qg(e) : null === e && (e = c.updateQueue = qg(d));\n\n null === e || d === e ? sg(d, b) : null === d.lastUpdate || null === e.lastUpdate ? (sg(d, b), sg(e, b)) : (sg(d, b), e.lastUpdate = b);\n}\n\nfunction ug(a, b) {\n var c = a.updateQueue;\n c = null === c ? a.updateQueue = pg(a.memoizedState) : vg(a, c);\n null === c.lastCapturedUpdate ? c.firstCapturedUpdate = c.lastCapturedUpdate = b : (c.lastCapturedUpdate.next = b, c.lastCapturedUpdate = b);\n}\n\nfunction vg(a, b) {\n var c = a.alternate;\n null !== c && b === c.updateQueue && (b = a.updateQueue = qg(b));\n return b;\n}\n\nfunction wg(a, b, c, d, e, f) {\n switch (c.tag) {\n case 1:\n return a = c.payload, \"function\" === typeof a ? a.call(f, d, e) : a;\n\n case 3:\n a.effectTag = a.effectTag & -4097 | 64;\n\n case 0:\n a = c.payload;\n e = \"function\" === typeof a ? a.call(f, d, e) : a;\n if (null === e || void 0 === e) break;\n return n({}, d, e);\n\n case 2:\n og = !0;\n }\n\n return d;\n}\n\nfunction xg(a, b, c, d, e) {\n og = !1;\n b = vg(a, b);\n\n for (var f = b.baseState, g = null, h = 0, k = b.firstUpdate, l = f; null !== k;) {\n var m = k.expirationTime;\n m < e ? (null === g && (g = k, f = l), h < m && (h = m)) : (yg(m, k.suspenseConfig), l = wg(a, b, k, l, c, d), null !== k.callback && (a.effectTag |= 32, k.nextEffect = null, null === b.lastEffect ? b.firstEffect = b.lastEffect = k : (b.lastEffect.nextEffect = k, b.lastEffect = k)));\n k = k.next;\n }\n\n m = null;\n\n for (k = b.firstCapturedUpdate; null !== k;) {\n var A = k.expirationTime;\n A < e ? (null === m && (m = k, null === g && (f = l)), h < A && (h = A)) : (l = wg(a, b, k, l, c, d), null !== k.callback && (a.effectTag |= 32, k.nextEffect = null, null === b.lastCapturedEffect ? b.firstCapturedEffect = b.lastCapturedEffect = k : (b.lastCapturedEffect.nextEffect = k, b.lastCapturedEffect = k)));\n k = k.next;\n }\n\n null === g && (b.lastUpdate = null);\n null === m ? b.lastCapturedUpdate = null : a.effectTag |= 32;\n null === g && null === m && (f = l);\n b.baseState = f;\n b.firstUpdate = g;\n b.firstCapturedUpdate = m;\n zg(h);\n a.expirationTime = h;\n a.memoizedState = l;\n}\n\nfunction Ag(a, b, c) {\n null !== b.firstCapturedUpdate && (null !== b.lastUpdate && (b.lastUpdate.next = b.firstCapturedUpdate, b.lastUpdate = b.lastCapturedUpdate), b.firstCapturedUpdate = b.lastCapturedUpdate = null);\n Bg(b.firstEffect, c);\n b.firstEffect = b.lastEffect = null;\n Bg(b.firstCapturedEffect, c);\n b.firstCapturedEffect = b.lastCapturedEffect = null;\n}\n\nfunction Bg(a, b) {\n for (; null !== a;) {\n var c = a.callback;\n\n if (null !== c) {\n a.callback = null;\n var d = b;\n if (\"function\" !== typeof c) throw t(Error(191), c);\n c.call(d);\n }\n\n a = a.nextEffect;\n }\n}\n\nvar Cg = Da.ReactCurrentBatchConfig,\n Dg = new aa.Component().refs;\n\nfunction Eg(a, b, c, d) {\n b = a.memoizedState;\n c = c(d, b);\n c = null === c || void 0 === c ? b : n({}, b, c);\n a.memoizedState = c;\n d = a.updateQueue;\n null !== d && 0 === a.expirationTime && (d.baseState = c);\n}\n\nvar Ig = {\n isMounted: function isMounted(a) {\n return (a = a._reactInternalFiber) ? Bc(a) === a : !1;\n },\n enqueueSetState: function enqueueSetState(a, b, c) {\n a = a._reactInternalFiber;\n var d = Fg(),\n e = Cg.suspense;\n d = Gg(d, a, e);\n e = rg(d, e);\n e.payload = b;\n void 0 !== c && null !== c && (e.callback = c);\n tg(a, e);\n Hg(a, d);\n },\n enqueueReplaceState: function enqueueReplaceState(a, b, c) {\n a = a._reactInternalFiber;\n var d = Fg(),\n e = Cg.suspense;\n d = Gg(d, a, e);\n e = rg(d, e);\n e.tag = 1;\n e.payload = b;\n void 0 !== c && null !== c && (e.callback = c);\n tg(a, e);\n Hg(a, d);\n },\n enqueueForceUpdate: function enqueueForceUpdate(a, b) {\n a = a._reactInternalFiber;\n var c = Fg(),\n d = Cg.suspense;\n c = Gg(c, a, d);\n d = rg(c, d);\n d.tag = 2;\n void 0 !== b && null !== b && (d.callback = b);\n tg(a, d);\n Hg(a, c);\n }\n};\n\nfunction Jg(a, b, c, d, e, f, g) {\n a = a.stateNode;\n return \"function\" === typeof a.shouldComponentUpdate ? a.shouldComponentUpdate(d, f, g) : b.prototype && b.prototype.isPureReactComponent ? !hf(c, d) || !hf(e, f) : !0;\n}\n\nfunction Kg(a, b, c) {\n var d = !1,\n e = tf;\n var f = b.contextType;\n \"object\" === typeof f && null !== f ? f = ng(f) : (e = N(b) ? uf : J.current, d = b.contextTypes, f = (d = null !== d && void 0 !== d) ? vf(a, e) : tf);\n b = new b(c, f);\n a.memoizedState = null !== b.state && void 0 !== b.state ? b.state : null;\n b.updater = Ig;\n a.stateNode = b;\n b._reactInternalFiber = a;\n d && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = e, a.__reactInternalMemoizedMaskedChildContext = f);\n return b;\n}\n\nfunction Lg(a, b, c, d) {\n a = b.state;\n \"function\" === typeof b.componentWillReceiveProps && b.componentWillReceiveProps(c, d);\n \"function\" === typeof b.UNSAFE_componentWillReceiveProps && b.UNSAFE_componentWillReceiveProps(c, d);\n b.state !== a && Ig.enqueueReplaceState(b, b.state, null);\n}\n\nfunction Mg(a, b, c, d) {\n var e = a.stateNode;\n e.props = c;\n e.state = a.memoizedState;\n e.refs = Dg;\n var f = b.contextType;\n \"object\" === typeof f && null !== f ? e.context = ng(f) : (f = N(b) ? uf : J.current, e.context = vf(a, f));\n f = a.updateQueue;\n null !== f && (xg(a, f, c, e, d), e.state = a.memoizedState);\n f = b.getDerivedStateFromProps;\n \"function\" === typeof f && (Eg(a, b, f, c), e.state = a.memoizedState);\n \"function\" === typeof b.getDerivedStateFromProps || \"function\" === typeof e.getSnapshotBeforeUpdate || \"function\" !== typeof e.UNSAFE_componentWillMount && \"function\" !== typeof e.componentWillMount || (b = e.state, \"function\" === typeof e.componentWillMount && e.componentWillMount(), \"function\" === typeof e.UNSAFE_componentWillMount && e.UNSAFE_componentWillMount(), b !== e.state && Ig.enqueueReplaceState(e, e.state, null), f = a.updateQueue, null !== f && (xg(a, f, c, e, d), e.state = a.memoizedState));\n \"function\" === typeof e.componentDidMount && (a.effectTag |= 4);\n}\n\nvar Ng = Array.isArray;\n\nfunction Og(a, b, c) {\n a = c.ref;\n\n if (null !== a && \"function\" !== typeof a && \"object\" !== typeof a) {\n if (c._owner) {\n c = c._owner;\n\n if (c) {\n if (1 !== c.tag) throw t(Error(309));\n var d = c.stateNode;\n }\n\n if (!d) throw t(Error(147), a);\n var e = \"\" + a;\n if (null !== b && null !== b.ref && \"function\" === typeof b.ref && b.ref._stringRef === e) return b.ref;\n\n b = function b(a) {\n var b = d.refs;\n b === Dg && (b = d.refs = {});\n null === a ? delete b[e] : b[e] = a;\n };\n\n b._stringRef = e;\n return b;\n }\n\n if (\"string\" !== typeof a) throw t(Error(284));\n if (!c._owner) throw t(Error(290), a);\n }\n\n return a;\n}\n\nfunction Pg(a, b) {\n if (\"textarea\" !== a.type) throw t(Error(31), \"[object Object]\" === Object.prototype.toString.call(b) ? \"object with keys {\" + Object.keys(b).join(\", \") + \"}\" : b, \"\");\n}\n\nfunction Qg(a) {\n function b(b, c) {\n if (a) {\n var d = b.lastEffect;\n null !== d ? (d.nextEffect = c, b.lastEffect = c) : b.firstEffect = b.lastEffect = c;\n c.nextEffect = null;\n c.effectTag = 8;\n }\n }\n\n function c(c, d) {\n if (!a) return null;\n\n for (; null !== d;) {\n b(c, d), d = d.sibling;\n }\n\n return null;\n }\n\n function d(a, b) {\n for (a = new Map(); null !== b;) {\n null !== b.key ? a.set(b.key, b) : a.set(b.index, b), b = b.sibling;\n }\n\n return a;\n }\n\n function e(a, b, c) {\n a = Rg(a, b, c);\n a.index = 0;\n a.sibling = null;\n return a;\n }\n\n function f(b, c, d) {\n b.index = d;\n if (!a) return c;\n d = b.alternate;\n if (null !== d) return d = d.index, d < c ? (b.effectTag = E, c) : d;\n b.effectTag = E;\n return c;\n }\n\n function g(b) {\n a && null === b.alternate && (b.effectTag = E);\n return b;\n }\n\n function h(a, b, c, d) {\n if (null === b || 6 !== b.tag) return b = Sg(c, a.mode, d), b.return = a, b;\n b = e(b, c, d);\n b.return = a;\n return b;\n }\n\n function k(a, b, c, d) {\n if (null !== b && b.elementType === c.type) return d = e(b, c.props, d), d.ref = Og(a, b, c), d.return = a, d;\n d = Tg(c.type, c.key, c.props, null, a.mode, d);\n d.ref = Og(a, b, c);\n d.return = a;\n return d;\n }\n\n function l(a, b, c, d) {\n if (null === b || 4 !== b.tag || b.stateNode.containerInfo !== c.containerInfo || b.stateNode.implementation !== c.implementation) return b = Ug(c, a.mode, d), b.return = a, b;\n b = e(b, c.children || [], d);\n b.return = a;\n return b;\n }\n\n function m(a, b, c, d, f) {\n if (null === b || 7 !== b.tag) return b = Vg(c, a.mode, d, f), b.return = a, b;\n b = e(b, c, d);\n b.return = a;\n return b;\n }\n\n function A(a, b, c) {\n if (\"string\" === typeof b || \"number\" === typeof b) return b = Sg(\"\" + b, a.mode, c), b.return = a, b;\n\n if (\"object\" === typeof b && null !== b) {\n switch (b.$$typeof) {\n case Fa:\n return c = Tg(b.type, b.key, b.props, null, a.mode, c), c.ref = Og(a, null, b), c.return = a, c;\n\n case Ga:\n return b = Ug(b, a.mode, c), b.return = a, b;\n }\n\n if (Ng(b) || Ta(b)) return b = Vg(b, a.mode, c, null), b.return = a, b;\n Pg(a, b);\n }\n\n return null;\n }\n\n function w(a, b, c, d) {\n var e = null !== b ? b.key : null;\n if (\"string\" === typeof c || \"number\" === typeof c) return null !== e ? null : h(a, b, \"\" + c, d);\n\n if (\"object\" === typeof c && null !== c) {\n switch (c.$$typeof) {\n case Fa:\n return c.key === e ? c.type === Ha ? m(a, b, c.props.children, d, e) : k(a, b, c, d) : null;\n\n case Ga:\n return c.key === e ? l(a, b, c, d) : null;\n }\n\n if (Ng(c) || Ta(c)) return null !== e ? null : m(a, b, c, d, null);\n Pg(a, c);\n }\n\n return null;\n }\n\n function L(a, b, c, d, e) {\n if (\"string\" === typeof d || \"number\" === typeof d) return a = a.get(c) || null, h(b, a, \"\" + d, e);\n\n if (\"object\" === typeof d && null !== d) {\n switch (d.$$typeof) {\n case Fa:\n return a = a.get(null === d.key ? c : d.key) || null, d.type === Ha ? m(b, a, d.props.children, e, d.key) : k(b, a, d, e);\n\n case Ga:\n return a = a.get(null === d.key ? c : d.key) || null, l(b, a, d, e);\n }\n\n if (Ng(d) || Ta(d)) return a = a.get(c) || null, m(b, a, d, e, null);\n Pg(b, d);\n }\n\n return null;\n }\n\n function wb(e, g, h, k) {\n for (var l = null, m = null, q = g, y = g = 0, z = null; null !== q && y < h.length; y++) {\n q.index > y ? (z = q, q = null) : z = q.sibling;\n var p = w(e, q, h[y], k);\n\n if (null === p) {\n null === q && (q = z);\n break;\n }\n\n a && q && null === p.alternate && b(e, q);\n g = f(p, g, y);\n null === m ? l = p : m.sibling = p;\n m = p;\n q = z;\n }\n\n if (y === h.length) return c(e, q), l;\n\n if (null === q) {\n for (; y < h.length; y++) {\n q = A(e, h[y], k), null !== q && (g = f(q, g, y), null === m ? l = q : m.sibling = q, m = q);\n }\n\n return l;\n }\n\n for (q = d(e, q); y < h.length; y++) {\n z = L(q, e, y, h[y], k), null !== z && (a && null !== z.alternate && q.delete(null === z.key ? y : z.key), g = f(z, g, y), null === m ? l = z : m.sibling = z, m = z);\n }\n\n a && q.forEach(function (a) {\n return b(e, a);\n });\n return l;\n }\n\n function M(e, g, h, k) {\n var l = Ta(h);\n if (\"function\" !== typeof l) throw t(Error(150));\n h = l.call(h);\n if (null == h) throw t(Error(151));\n\n for (var m = l = null, q = g, y = g = 0, z = null, p = h.next(); null !== q && !p.done; y++, p = h.next()) {\n q.index > y ? (z = q, q = null) : z = q.sibling;\n var M = w(e, q, p.value, k);\n\n if (null === M) {\n null === q && (q = z);\n break;\n }\n\n a && q && null === M.alternate && b(e, q);\n g = f(M, g, y);\n null === m ? l = M : m.sibling = M;\n m = M;\n q = z;\n }\n\n if (p.done) return c(e, q), l;\n\n if (null === q) {\n for (; !p.done; y++, p = h.next()) {\n p = A(e, p.value, k), null !== p && (g = f(p, g, y), null === m ? l = p : m.sibling = p, m = p);\n }\n\n return l;\n }\n\n for (q = d(e, q); !p.done; y++, p = h.next()) {\n p = L(q, e, y, p.value, k), null !== p && (a && null !== p.alternate && q.delete(null === p.key ? y : p.key), g = f(p, g, y), null === m ? l = p : m.sibling = p, m = p);\n }\n\n a && q.forEach(function (a) {\n return b(e, a);\n });\n return l;\n }\n\n return function (a, d, f, h) {\n var k = \"object\" === typeof f && null !== f && f.type === Ha && null === f.key;\n k && (f = f.props.children);\n var l = \"object\" === typeof f && null !== f;\n if (l) switch (f.$$typeof) {\n case Fa:\n a: {\n l = f.key;\n\n for (k = d; null !== k;) {\n if (k.key === l) {\n if (7 === k.tag ? f.type === Ha : k.elementType === f.type) {\n c(a, k.sibling);\n d = e(k, f.type === Ha ? f.props.children : f.props, h);\n d.ref = Og(a, k, f);\n d.return = a;\n a = d;\n break a;\n }\n\n c(a, k);\n break;\n } else b(a, k);\n\n k = k.sibling;\n }\n\n f.type === Ha ? (d = Vg(f.props.children, a.mode, h, f.key), d.return = a, a = d) : (h = Tg(f.type, f.key, f.props, null, a.mode, h), h.ref = Og(a, d, f), h.return = a, a = h);\n }\n\n return g(a);\n\n case Ga:\n a: {\n for (k = f.key; null !== d;) {\n if (d.key === k) {\n if (4 === d.tag && d.stateNode.containerInfo === f.containerInfo && d.stateNode.implementation === f.implementation) {\n c(a, d.sibling);\n d = e(d, f.children || [], h);\n d.return = a;\n a = d;\n break a;\n }\n\n c(a, d);\n break;\n } else b(a, d);\n\n d = d.sibling;\n }\n\n d = Ug(f, a.mode, h);\n d.return = a;\n a = d;\n }\n\n return g(a);\n }\n if (\"string\" === typeof f || \"number\" === typeof f) return f = \"\" + f, null !== d && 6 === d.tag ? (c(a, d.sibling), d = e(d, f, h), d.return = a, a = d) : (c(a, d), d = Sg(f, a.mode, h), d.return = a, a = d), g(a);\n if (Ng(f)) return wb(a, d, f, h);\n if (Ta(f)) return M(a, d, f, h);\n l && Pg(a, f);\n if (\"undefined\" === typeof f && !k) switch (a.tag) {\n case 1:\n case 0:\n throw a = a.type, t(Error(152), a.displayName || a.name || \"Component\");\n }\n return c(a, d);\n };\n}\n\nvar Wg = Qg(!0),\n Xg = Qg(!1),\n Yg = {},\n Zg = {\n current: Yg\n},\n $g = {\n current: Yg\n},\n ah = {\n current: Yg\n};\n\nfunction bh(a) {\n if (a === Yg) throw t(Error(174));\n return a;\n}\n\nfunction ch(a, b) {\n I(ah, b, a);\n I($g, a, a);\n I(Zg, Yg, a);\n var c = b.nodeType;\n\n switch (c) {\n case 9:\n case 11:\n b = (b = b.documentElement) ? b.namespaceURI : Qb(null, \"\");\n break;\n\n default:\n c = 8 === c ? b.parentNode : b, b = c.namespaceURI || null, c = c.tagName, b = Qb(b, c);\n }\n\n H(Zg, a);\n I(Zg, b, a);\n}\n\nfunction dh(a) {\n H(Zg, a);\n H($g, a);\n H(ah, a);\n}\n\nfunction eh(a) {\n bh(ah.current);\n var b = bh(Zg.current);\n var c = Qb(b, a.type);\n b !== c && (I($g, a, a), I(Zg, c, a));\n}\n\nfunction fh(a) {\n $g.current === a && (H(Zg, a), H($g, a));\n}\n\nvar O = {\n current: 0\n};\n\nfunction gh(a) {\n for (var b = a; null !== b;) {\n if (13 === b.tag) {\n var c = b.memoizedState;\n if (null !== c && (c = c.dehydrated, null === c || c.data === be || c.data === ce)) return b;\n } else if (19 === b.tag && void 0 !== b.memoizedProps.revealOrder) {\n if ((b.effectTag & 64) !== D) return b;\n } else if (null !== b.child) {\n b.child.return = b;\n b = b.child;\n continue;\n }\n\n if (b === a) break;\n\n for (; null === b.sibling;) {\n if (null === b.return || b.return === a) return null;\n b = b.return;\n }\n\n b.sibling.return = b.return;\n b = b.sibling;\n }\n\n return null;\n}\n\nfunction hh(a, b) {\n return {\n responder: a,\n props: b\n };\n}\n\nvar ih = Da.ReactCurrentDispatcher,\n jh = 0,\n kh = null,\n P = null,\n lh = null,\n mh = null,\n Q = null,\n nh = null,\n oh = 0,\n ph = null,\n qh = 0,\n rh = !1,\n sh = null,\n th = 0;\n\nfunction uh() {\n throw t(Error(321));\n}\n\nfunction vh(a, b) {\n if (null === b) return !1;\n\n for (var c = 0; c < b.length && c < a.length; c++) {\n if (!ff(a[c], b[c])) return !1;\n }\n\n return !0;\n}\n\nfunction wh(a, b, c, d, e, f) {\n jh = f;\n kh = b;\n lh = null !== a ? a.memoizedState : null;\n ih.current = null === lh ? xh : yh;\n b = c(d, e);\n\n if (rh) {\n do {\n rh = !1, th += 1, lh = null !== a ? a.memoizedState : null, nh = mh, ph = Q = P = null, ih.current = yh, b = c(d, e);\n } while (rh);\n\n sh = null;\n th = 0;\n }\n\n ih.current = zh;\n a = kh;\n a.memoizedState = mh;\n a.expirationTime = oh;\n a.updateQueue = ph;\n a.effectTag |= qh;\n a = null !== P && null !== P.next;\n jh = 0;\n nh = Q = mh = lh = P = kh = null;\n oh = 0;\n ph = null;\n qh = 0;\n if (a) throw t(Error(300));\n return b;\n}\n\nfunction Ah() {\n ih.current = zh;\n jh = 0;\n nh = Q = mh = lh = P = kh = null;\n oh = 0;\n ph = null;\n qh = 0;\n rh = !1;\n sh = null;\n th = 0;\n}\n\nfunction Eh() {\n var a = {\n memoizedState: null,\n baseState: null,\n queue: null,\n baseUpdate: null,\n next: null\n };\n null === Q ? mh = Q = a : Q = Q.next = a;\n return Q;\n}\n\nfunction Fh() {\n if (null !== nh) Q = nh, nh = Q.next, P = lh, lh = null !== P ? P.next : null;else {\n if (null === lh) throw t(Error(310));\n P = lh;\n var a = {\n memoizedState: P.memoizedState,\n baseState: P.baseState,\n queue: P.queue,\n baseUpdate: P.baseUpdate,\n next: null\n };\n Q = null === Q ? mh = a : Q.next = a;\n lh = P.next;\n }\n return Q;\n}\n\nfunction Gh(a, b) {\n return \"function\" === typeof b ? b(a) : b;\n}\n\nfunction Hh(a) {\n var b = Fh(),\n c = b.queue;\n if (null === c) throw t(Error(311));\n c.lastRenderedReducer = a;\n\n if (0 < th) {\n var d = c.dispatch;\n\n if (null !== sh) {\n var e = sh.get(c);\n\n if (void 0 !== e) {\n sh.delete(c);\n var f = b.memoizedState;\n\n do {\n f = a(f, e.action), e = e.next;\n } while (null !== e);\n\n ff(f, b.memoizedState) || (mg = !0);\n b.memoizedState = f;\n b.baseUpdate === c.last && (b.baseState = f);\n c.lastRenderedState = f;\n return [f, d];\n }\n }\n\n return [b.memoizedState, d];\n }\n\n d = c.last;\n var g = b.baseUpdate;\n f = b.baseState;\n null !== g ? (null !== d && (d.next = null), d = g.next) : d = null !== d ? d.next : null;\n\n if (null !== d) {\n var h = e = null,\n k = d,\n l = !1;\n\n do {\n var m = k.expirationTime;\n m < jh ? (l || (l = !0, h = g, e = f), m > oh && (oh = m, zg(oh))) : (yg(m, k.suspenseConfig), f = k.eagerReducer === a ? k.eagerState : a(f, k.action));\n g = k;\n k = k.next;\n } while (null !== k && k !== d);\n\n l || (h = g, e = f);\n ff(f, b.memoizedState) || (mg = !0);\n b.memoizedState = f;\n b.baseUpdate = h;\n b.baseState = e;\n c.lastRenderedState = f;\n }\n\n return [b.memoizedState, c.dispatch];\n}\n\nfunction Ih(a, b, c, d) {\n a = {\n tag: a,\n create: b,\n destroy: c,\n deps: d,\n next: null\n };\n null === ph ? (ph = {\n lastEffect: null\n }, ph.lastEffect = a.next = a) : (b = ph.lastEffect, null === b ? ph.lastEffect = a.next = a : (c = b.next, b.next = a, a.next = c, ph.lastEffect = a));\n return a;\n}\n\nfunction Jh(a, b, c, d) {\n var e = Eh();\n qh |= a;\n e.memoizedState = Ih(b, c, void 0, void 0 === d ? null : d);\n}\n\nfunction Kh(a, b, c, d) {\n var e = Fh();\n d = void 0 === d ? null : d;\n var f = void 0;\n\n if (null !== P) {\n var g = P.memoizedState;\n f = g.destroy;\n\n if (null !== d && vh(d, g.deps)) {\n Ih(0, c, f, d);\n return;\n }\n }\n\n qh |= a;\n e.memoizedState = Ih(b, c, f, d);\n}\n\nfunction Lh(a, b) {\n if (\"function\" === typeof b) return a = a(), b(a), function () {\n b(null);\n };\n if (null !== b && void 0 !== b) return a = a(), b.current = a, function () {\n b.current = null;\n };\n}\n\nfunction Mh() {}\n\nfunction Nh(a, b, c) {\n if (!(25 > th)) throw t(Error(301));\n var d = a.alternate;\n if (a === kh || null !== d && d === kh) {\n if (rh = !0, a = {\n expirationTime: jh,\n suspenseConfig: null,\n action: c,\n eagerReducer: null,\n eagerState: null,\n next: null\n }, null === sh && (sh = new Map()), c = sh.get(b), void 0 === c) sh.set(b, a);else {\n for (b = c; null !== b.next;) {\n b = b.next;\n }\n\n b.next = a;\n }\n } else {\n var e = Fg(),\n f = Cg.suspense;\n e = Gg(e, a, f);\n f = {\n expirationTime: e,\n suspenseConfig: f,\n action: c,\n eagerReducer: null,\n eagerState: null,\n next: null\n };\n var g = b.last;\n if (null === g) f.next = f;else {\n var h = g.next;\n null !== h && (f.next = h);\n g.next = f;\n }\n b.last = f;\n if (0 === a.expirationTime && (null === d || 0 === d.expirationTime) && (d = b.lastRenderedReducer, null !== d)) try {\n var k = b.lastRenderedState,\n l = d(k, c);\n f.eagerReducer = d;\n f.eagerState = l;\n if (ff(l, k)) return;\n } catch (m) {} finally {}\n Hg(a, e);\n }\n}\n\nvar zh = {\n readContext: ng,\n useCallback: uh,\n useContext: uh,\n useEffect: uh,\n useImperativeHandle: uh,\n useLayoutEffect: uh,\n useMemo: uh,\n useReducer: uh,\n useRef: uh,\n useState: uh,\n useDebugValue: uh,\n useResponder: uh\n},\n xh = {\n readContext: ng,\n useCallback: function useCallback(a, b) {\n Eh().memoizedState = [a, void 0 === b ? null : b];\n return a;\n },\n useContext: ng,\n useEffect: function useEffect(a, b) {\n return Jh(516, 192, a, b);\n },\n useImperativeHandle: function useImperativeHandle(a, b, c) {\n c = null !== c && void 0 !== c ? c.concat([a]) : null;\n return Jh(4, 36, Lh.bind(null, b, a), c);\n },\n useLayoutEffect: function useLayoutEffect(a, b) {\n return Jh(4, 36, a, b);\n },\n useMemo: function useMemo(a, b) {\n var c = Eh();\n b = void 0 === b ? null : b;\n a = a();\n c.memoizedState = [a, b];\n return a;\n },\n useReducer: function useReducer(a, b, c) {\n var d = Eh();\n b = void 0 !== c ? c(b) : b;\n d.memoizedState = d.baseState = b;\n a = d.queue = {\n last: null,\n dispatch: null,\n lastRenderedReducer: a,\n lastRenderedState: b\n };\n a = a.dispatch = Nh.bind(null, kh, a);\n return [d.memoizedState, a];\n },\n useRef: function useRef(a) {\n var b = Eh();\n a = {\n current: a\n };\n return b.memoizedState = a;\n },\n useState: function useState(a) {\n var b = Eh();\n \"function\" === typeof a && (a = a());\n b.memoizedState = b.baseState = a;\n a = b.queue = {\n last: null,\n dispatch: null,\n lastRenderedReducer: Gh,\n lastRenderedState: a\n };\n a = a.dispatch = Nh.bind(null, kh, a);\n return [b.memoizedState, a];\n },\n useDebugValue: Mh,\n useResponder: hh\n},\n yh = {\n readContext: ng,\n useCallback: function useCallback(a, b) {\n var c = Fh();\n b = void 0 === b ? null : b;\n var d = c.memoizedState;\n if (null !== d && null !== b && vh(b, d[1])) return d[0];\n c.memoizedState = [a, b];\n return a;\n },\n useContext: ng,\n useEffect: function useEffect(a, b) {\n return Kh(516, 192, a, b);\n },\n useImperativeHandle: function useImperativeHandle(a, b, c) {\n c = null !== c && void 0 !== c ? c.concat([a]) : null;\n return Kh(4, 36, Lh.bind(null, b, a), c);\n },\n useLayoutEffect: function useLayoutEffect(a, b) {\n return Kh(4, 36, a, b);\n },\n useMemo: function useMemo(a, b) {\n var c = Fh();\n b = void 0 === b ? null : b;\n var d = c.memoizedState;\n if (null !== d && null !== b && vh(b, d[1])) return d[0];\n a = a();\n c.memoizedState = [a, b];\n return a;\n },\n useReducer: Hh,\n useRef: function useRef() {\n return Fh().memoizedState;\n },\n useState: function useState(a) {\n return Hh(Gh, a);\n },\n useDebugValue: Mh,\n useResponder: hh\n},\n Oh = null,\n Ph = null,\n Qh = !1;\n\nfunction Rh(a, b) {\n var c = Sh(5, null, null, 0);\n c.elementType = \"DELETED\";\n c.type = \"DELETED\";\n c.stateNode = b;\n c.return = a;\n c.effectTag = 8;\n null !== a.lastEffect ? (a.lastEffect.nextEffect = c, a.lastEffect = c) : a.firstEffect = a.lastEffect = c;\n}\n\nfunction Th(a, b) {\n switch (a.tag) {\n case 5:\n var c = a.type;\n b = 1 !== b.nodeType || c.toLowerCase() !== b.nodeName.toLowerCase() ? null : b;\n return null !== b ? (a.stateNode = b, !0) : !1;\n\n case 6:\n return b = \"\" === a.pendingProps || 3 !== b.nodeType ? null : b, null !== b ? (a.stateNode = b, !0) : !1;\n\n case 13:\n return !1;\n\n default:\n return !1;\n }\n}\n\nfunction Uh(a) {\n if (Qh) {\n var b = Ph;\n\n if (b) {\n var c = b;\n\n if (!Th(a, b)) {\n b = je(c.nextSibling);\n\n if (!b || !Th(a, b)) {\n a.effectTag = a.effectTag & ~Ac | E;\n Qh = !1;\n Oh = a;\n return;\n }\n\n Rh(Oh, c);\n }\n\n Oh = a;\n Ph = je(b.firstChild);\n } else a.effectTag = a.effectTag & ~Ac | E, Qh = !1, Oh = a;\n }\n}\n\nfunction Vh(a) {\n for (a = a.return; null !== a && 5 !== a.tag && 3 !== a.tag && 13 !== a.tag;) {\n a = a.return;\n }\n\n Oh = a;\n}\n\nfunction Wh(a) {\n if (a !== Oh) return !1;\n if (!Qh) return Vh(a), Qh = !0, !1;\n var b = a.type;\n if (5 !== a.tag || \"head\" !== b && \"body\" !== b && !ge(b, a.memoizedProps)) for (b = Ph; b;) {\n Rh(a, b), b = je(b.nextSibling);\n }\n Vh(a);\n if (13 === a.tag) {\n if (a = a.memoizedState, a = null !== a ? a.dehydrated : null, null === a) a = Ph;else a: {\n a = a.nextSibling;\n\n for (b = 0; a;) {\n if (8 === a.nodeType) {\n var c = a.data;\n\n if (c === ae) {\n if (0 === b) {\n a = je(a.nextSibling);\n break a;\n }\n\n b--;\n } else c !== $d && c !== ce && c !== be || b++;\n }\n\n a = a.nextSibling;\n }\n\n a = null;\n }\n } else a = Oh ? je(a.stateNode.nextSibling) : null;\n Ph = a;\n return !0;\n}\n\nfunction Xh() {\n Ph = Oh = null;\n Qh = !1;\n}\n\nvar Yh = Da.ReactCurrentOwner,\n mg = !1;\n\nfunction R(a, b, c, d) {\n b.child = null === a ? Xg(b, null, c, d) : Wg(b, a.child, c, d);\n}\n\nfunction Zh(a, b, c, d, e) {\n c = c.render;\n var f = b.ref;\n lg(b, e);\n d = wh(a, b, c, d, f, e);\n if (null !== a && !mg) return b.updateQueue = a.updateQueue, b.effectTag &= -517, a.expirationTime <= e && (a.expirationTime = 0), $h(a, b, e);\n b.effectTag |= 1;\n R(a, b, d, e);\n return b.child;\n}\n\nfunction ai(a, b, c, d, e, f) {\n if (null === a) {\n var g = c.type;\n if (\"function\" === typeof g && !bi(g) && void 0 === g.defaultProps && null === c.compare && void 0 === c.defaultProps) return b.tag = 15, b.type = g, ci(a, b, g, d, e, f);\n a = Tg(c.type, null, d, null, b.mode, f);\n a.ref = b.ref;\n a.return = b;\n return b.child = a;\n }\n\n g = a.child;\n if (e < f && (e = g.memoizedProps, c = c.compare, c = null !== c ? c : hf, c(e, d) && a.ref === b.ref)) return $h(a, b, f);\n b.effectTag |= 1;\n a = Rg(g, d, f);\n a.ref = b.ref;\n a.return = b;\n return b.child = a;\n}\n\nfunction ci(a, b, c, d, e, f) {\n return null !== a && hf(a.memoizedProps, d) && a.ref === b.ref && (mg = !1, e < f) ? $h(a, b, f) : di(a, b, c, d, f);\n}\n\nfunction ei(a, b) {\n var c = b.ref;\n if (null === a && null !== c || null !== a && a.ref !== c) b.effectTag |= 128;\n}\n\nfunction di(a, b, c, d, e) {\n var f = N(c) ? uf : J.current;\n f = vf(b, f);\n lg(b, e);\n c = wh(a, b, c, d, f, e);\n if (null !== a && !mg) return b.updateQueue = a.updateQueue, b.effectTag &= -517, a.expirationTime <= e && (a.expirationTime = 0), $h(a, b, e);\n b.effectTag |= 1;\n R(a, b, c, e);\n return b.child;\n}\n\nfunction fi(a, b, c, d, e) {\n if (N(c)) {\n var f = !0;\n Bf(b);\n } else f = !1;\n\n lg(b, e);\n if (null === b.stateNode) null !== a && (a.alternate = null, b.alternate = null, b.effectTag |= E), Kg(b, c, d, e), Mg(b, c, d, e), d = !0;else if (null === a) {\n var g = b.stateNode,\n h = b.memoizedProps;\n g.props = h;\n var k = g.context,\n l = c.contextType;\n \"object\" === typeof l && null !== l ? l = ng(l) : (l = N(c) ? uf : J.current, l = vf(b, l));\n var m = c.getDerivedStateFromProps,\n A = \"function\" === typeof m || \"function\" === typeof g.getSnapshotBeforeUpdate;\n A || \"function\" !== typeof g.UNSAFE_componentWillReceiveProps && \"function\" !== typeof g.componentWillReceiveProps || (h !== d || k !== l) && Lg(b, g, d, l);\n og = !1;\n var w = b.memoizedState;\n k = g.state = w;\n var L = b.updateQueue;\n null !== L && (xg(b, L, d, g, e), k = b.memoizedState);\n h !== d || w !== k || K.current || og ? (\"function\" === typeof m && (Eg(b, c, m, d), k = b.memoizedState), (h = og || Jg(b, c, h, d, w, k, l)) ? (A || \"function\" !== typeof g.UNSAFE_componentWillMount && \"function\" !== typeof g.componentWillMount || (\"function\" === typeof g.componentWillMount && g.componentWillMount(), \"function\" === typeof g.UNSAFE_componentWillMount && g.UNSAFE_componentWillMount()), \"function\" === typeof g.componentDidMount && (b.effectTag |= 4)) : (\"function\" === typeof g.componentDidMount && (b.effectTag |= 4), b.memoizedProps = d, b.memoizedState = k), g.props = d, g.state = k, g.context = l, d = h) : (\"function\" === typeof g.componentDidMount && (b.effectTag |= 4), d = !1);\n } else g = b.stateNode, h = b.memoizedProps, g.props = b.type === b.elementType ? h : cg(b.type, h), k = g.context, l = c.contextType, \"object\" === typeof l && null !== l ? l = ng(l) : (l = N(c) ? uf : J.current, l = vf(b, l)), m = c.getDerivedStateFromProps, (A = \"function\" === typeof m || \"function\" === typeof g.getSnapshotBeforeUpdate) || \"function\" !== typeof g.UNSAFE_componentWillReceiveProps && \"function\" !== typeof g.componentWillReceiveProps || (h !== d || k !== l) && Lg(b, g, d, l), og = !1, k = b.memoizedState, w = g.state = k, L = b.updateQueue, null !== L && (xg(b, L, d, g, e), w = b.memoizedState), h !== d || k !== w || K.current || og ? (\"function\" === typeof m && (Eg(b, c, m, d), w = b.memoizedState), (m = og || Jg(b, c, h, d, k, w, l)) ? (A || \"function\" !== typeof g.UNSAFE_componentWillUpdate && \"function\" !== typeof g.componentWillUpdate || (\"function\" === typeof g.componentWillUpdate && g.componentWillUpdate(d, w, l), \"function\" === typeof g.UNSAFE_componentWillUpdate && g.UNSAFE_componentWillUpdate(d, w, l)), \"function\" === typeof g.componentDidUpdate && (b.effectTag |= 4), \"function\" === typeof g.getSnapshotBeforeUpdate && (b.effectTag |= 256)) : (\"function\" !== typeof g.componentDidUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 4), \"function\" !== typeof g.getSnapshotBeforeUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 256), b.memoizedProps = d, b.memoizedState = w), g.props = d, g.state = w, g.context = l, d = m) : (\"function\" !== typeof g.componentDidUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 4), \"function\" !== typeof g.getSnapshotBeforeUpdate || h === a.memoizedProps && k === a.memoizedState || (b.effectTag |= 256), d = !1);\n return gi(a, b, c, d, f, e);\n}\n\nfunction gi(a, b, c, d, e, f) {\n ei(a, b);\n var g = (b.effectTag & 64) !== D;\n if (!d && !g) return e && Cf(b, c, !1), $h(a, b, f);\n d = b.stateNode;\n Yh.current = b;\n var h = g && \"function\" !== typeof c.getDerivedStateFromError ? null : d.render();\n b.effectTag |= 1;\n null !== a && g ? (b.child = Wg(b, a.child, null, f), b.child = Wg(b, null, h, f)) : R(a, b, h, f);\n b.memoizedState = d.state;\n e && Cf(b, c, !0);\n return b.child;\n}\n\nfunction hi(a) {\n var b = a.stateNode;\n b.pendingContext ? zf(a, b.pendingContext, b.pendingContext !== b.context) : b.context && zf(a, b.context, !1);\n ch(a, b.containerInfo);\n}\n\nvar ii = {\n dehydrated: null,\n retryTime: 1\n};\n\nfunction ji(a, b, c) {\n var d = b.mode,\n e = b.pendingProps,\n f = O.current,\n g = !1,\n h;\n (h = (b.effectTag & 64) !== D) || (h = 0 !== (f & 2) && (null === a || null !== a.memoizedState));\n h ? (g = !0, b.effectTag &= -65) : null !== a && null === a.memoizedState || void 0 === e.fallback || !0 === e.unstable_avoidThisFallback || (f |= 1);\n I(O, f & 1, b);\n\n if (null === a) {\n if (g) {\n g = e.fallback;\n e = Vg(null, d, 0, null);\n e.return = b;\n if (0 === (b.mode & 2)) for (a = null !== b.memoizedState ? b.child.child : b.child, e.child = a; null !== a;) {\n a.return = e, a = a.sibling;\n }\n c = Vg(g, d, c, null);\n c.return = b;\n e.sibling = c;\n b.memoizedState = ii;\n b.child = e;\n return c;\n }\n\n d = e.children;\n b.memoizedState = null;\n return b.child = Xg(b, null, d, c);\n }\n\n if (null !== a.memoizedState) {\n a = a.child;\n d = a.sibling;\n\n if (g) {\n e = e.fallback;\n c = Rg(a, a.pendingProps, 0);\n c.return = b;\n if (0 === (b.mode & 2) && (g = null !== b.memoizedState ? b.child.child : b.child, g !== a.child)) for (c.child = g; null !== g;) {\n g.return = c, g = g.sibling;\n }\n d = Rg(d, e, d.expirationTime);\n d.return = b;\n c.sibling = d;\n c.childExpirationTime = 0;\n b.memoizedState = ii;\n b.child = c;\n return d;\n }\n\n c = Wg(b, a.child, e.children, c);\n b.memoizedState = null;\n return b.child = c;\n }\n\n a = a.child;\n\n if (g) {\n g = e.fallback;\n e = Vg(null, d, 0, null);\n e.return = b;\n e.child = a;\n null !== a && (a.return = e);\n if (0 === (b.mode & 2)) for (a = null !== b.memoizedState ? b.child.child : b.child, e.child = a; null !== a;) {\n a.return = e, a = a.sibling;\n }\n c = Vg(g, d, c, null);\n c.return = b;\n e.sibling = c;\n c.effectTag |= E;\n e.childExpirationTime = 0;\n b.memoizedState = ii;\n b.child = e;\n return c;\n }\n\n b.memoizedState = null;\n return b.child = Wg(b, a, e.children, c);\n}\n\nfunction ki(a, b, c, d, e) {\n var f = a.memoizedState;\n null === f ? a.memoizedState = {\n isBackwards: b,\n rendering: null,\n last: d,\n tail: c,\n tailExpiration: 0,\n tailMode: e\n } : (f.isBackwards = b, f.rendering = null, f.last = d, f.tail = c, f.tailExpiration = 0, f.tailMode = e);\n}\n\nfunction li(a, b, c) {\n var d = b.pendingProps,\n e = d.revealOrder,\n f = d.tail;\n R(a, b, d.children, c);\n d = O.current;\n if (0 !== (d & 2)) d = d & 1 | 2, b.effectTag |= 64;else {\n if (null !== a && (a.effectTag & 64) !== D) a: for (a = b.child; null !== a;) {\n if (13 === a.tag) {\n if (null !== a.memoizedState) {\n a.expirationTime < c && (a.expirationTime = c);\n var g = a.alternate;\n null !== g && g.expirationTime < c && (g.expirationTime = c);\n kg(a.return, c);\n }\n } else if (null !== a.child) {\n a.child.return = a;\n a = a.child;\n continue;\n }\n\n if (a === b) break a;\n\n for (; null === a.sibling;) {\n if (null === a.return || a.return === b) break a;\n a = a.return;\n }\n\n a.sibling.return = a.return;\n a = a.sibling;\n }\n d &= 1;\n }\n I(O, d, b);\n if (0 === (b.mode & 2)) b.memoizedState = null;else switch (e) {\n case \"forwards\":\n c = b.child;\n\n for (e = null; null !== c;) {\n d = c.alternate, null !== d && null === gh(d) && (e = c), c = c.sibling;\n }\n\n c = e;\n null === c ? (e = b.child, b.child = null) : (e = c.sibling, c.sibling = null);\n ki(b, !1, e, c, f);\n break;\n\n case \"backwards\":\n c = null;\n e = b.child;\n\n for (b.child = null; null !== e;) {\n d = e.alternate;\n\n if (null !== d && null === gh(d)) {\n b.child = e;\n break;\n }\n\n d = e.sibling;\n e.sibling = c;\n c = e;\n e = d;\n }\n\n ki(b, !0, c, null, f);\n break;\n\n case \"together\":\n ki(b, !1, null, null, void 0);\n break;\n\n default:\n b.memoizedState = null;\n }\n return b.child;\n}\n\nfunction $h(a, b, c) {\n null !== a && (b.dependencies = a.dependencies);\n var d = b.expirationTime;\n 0 !== d && zg(d);\n if (b.childExpirationTime < c) return null;\n if (null !== a && b.child !== a.child) throw t(Error(153));\n\n if (null !== b.child) {\n a = b.child;\n c = Rg(a, a.pendingProps, a.expirationTime);\n b.child = c;\n\n for (c.return = b; null !== a.sibling;) {\n a = a.sibling, c = c.sibling = Rg(a, a.pendingProps, a.expirationTime), c.return = b;\n }\n\n c.sibling = null;\n }\n\n return b.child;\n}\n\nfunction mi(a) {\n a.effectTag |= 4;\n}\n\nvar ni, oi, pi, qi;\n\nni = function ni(a, b) {\n for (var c = b.child; null !== c;) {\n if (5 === c.tag || 6 === c.tag) a.appendChild(c.stateNode);else if (4 !== c.tag && null !== c.child) {\n c.child.return = c;\n c = c.child;\n continue;\n }\n if (c === b) break;\n\n for (; null === c.sibling;) {\n if (null === c.return || c.return === b) return;\n c = c.return;\n }\n\n c.sibling.return = c.return;\n c = c.sibling;\n }\n};\n\noi = function oi() {};\n\npi = function pi(a, b, c, d, e) {\n var f = a.memoizedProps;\n\n if (f !== d) {\n var g = b.stateNode;\n bh(Zg.current);\n a = null;\n\n switch (c) {\n case \"input\":\n f = Ab(g, f);\n d = Ab(g, d);\n a = [];\n break;\n\n case \"option\":\n f = Ib(g, f);\n d = Ib(g, d);\n a = [];\n break;\n\n case \"select\":\n f = n({}, f, {\n value: void 0\n });\n d = n({}, d, {\n value: void 0\n });\n a = [];\n break;\n\n case \"textarea\":\n f = Kb(g, f);\n d = Kb(g, d);\n a = [];\n break;\n\n default:\n \"function\" !== typeof f.onClick && \"function\" === typeof d.onClick && (g.onclick = Td);\n }\n\n Qd(c, d);\n var h, k;\n c = null;\n\n for (h in f) {\n if (!d.hasOwnProperty(h) && f.hasOwnProperty(h) && null != f[h]) if (\"style\" === h) for (k in g = f[h], g) {\n g.hasOwnProperty(k) && (c || (c = {}), c[k] = \"\");\n } else \"dangerouslySetInnerHTML\" !== h && \"children\" !== h && \"suppressContentEditableWarning\" !== h && \"suppressHydrationWarning\" !== h && \"autoFocus\" !== h && (ia.hasOwnProperty(h) ? a || (a = []) : (a = a || []).push(h, null));\n }\n\n for (h in d) {\n var l = d[h];\n g = null != f ? f[h] : void 0;\n if (d.hasOwnProperty(h) && l !== g && (null != l || null != g)) if (\"style\" === h) {\n if (g) {\n for (k in g) {\n !g.hasOwnProperty(k) || l && l.hasOwnProperty(k) || (c || (c = {}), c[k] = \"\");\n }\n\n for (k in l) {\n l.hasOwnProperty(k) && g[k] !== l[k] && (c || (c = {}), c[k] = l[k]);\n }\n } else c || (a || (a = []), a.push(h, c)), c = l;\n } else \"dangerouslySetInnerHTML\" === h ? (l = l ? l.__html : void 0, g = g ? g.__html : void 0, null != l && g !== l && (a = a || []).push(h, \"\" + l)) : \"children\" === h ? g === l || \"string\" !== typeof l && \"number\" !== typeof l || (a = a || []).push(h, \"\" + l) : \"suppressContentEditableWarning\" !== h && \"suppressHydrationWarning\" !== h && (ia.hasOwnProperty(h) ? (null != l && Sd(e, h), a || g === l || (a = [])) : (a = a || []).push(h, l));\n }\n\n c && (a = a || []).push(\"style\", c);\n e = a;\n (b.updateQueue = e) && mi(b);\n }\n};\n\nqi = function qi(a, b, c, d) {\n c !== d && mi(b);\n};\n\nfunction ri(a, b) {\n switch (a.tailMode) {\n case \"hidden\":\n b = a.tail;\n\n for (var c = null; null !== b;) {\n null !== b.alternate && (c = b), b = b.sibling;\n }\n\n null === c ? a.tail = null : c.sibling = null;\n break;\n\n case \"collapsed\":\n c = a.tail;\n\n for (var d = null; null !== c;) {\n null !== c.alternate && (d = c), c = c.sibling;\n }\n\n null === d ? b || null === a.tail ? a.tail = null : a.tail.sibling = null : d.sibling = null;\n }\n}\n\nfunction si(a) {\n switch (a.tag) {\n case 1:\n N(a.type) && wf(a);\n var b = a.effectTag;\n return b & 4096 ? (a.effectTag = b & -4097 | 64, a) : null;\n\n case 3:\n dh(a);\n xf(a);\n b = a.effectTag;\n if ((b & 64) !== D) throw t(Error(285));\n a.effectTag = b & -4097 | 64;\n return a;\n\n case 5:\n return fh(a), null;\n\n case 13:\n return H(O, a), b = a.effectTag, b & 4096 ? (a.effectTag = b & -4097 | 64, a) : null;\n\n case 19:\n return H(O, a), null;\n\n case 4:\n return dh(a), null;\n\n case 10:\n return jg(a), null;\n\n default:\n return null;\n }\n}\n\nfunction ti(a, b) {\n return {\n value: a,\n source: b,\n stack: Wa(b)\n };\n}\n\nvar ui = \"function\" === typeof WeakSet ? WeakSet : Set;\n\nfunction vi(a, b) {\n var c = b.source,\n d = b.stack;\n null === d && null !== c && (d = Wa(c));\n null !== c && Va(c.type);\n b = b.value;\n null !== a && 1 === a.tag && Va(a.type);\n\n try {\n console.error(b);\n } catch (e) {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction wi(a, b) {\n try {\n b.props = a.memoizedProps, b.state = a.memoizedState, b.componentWillUnmount();\n } catch (c) {\n xi(a, c);\n }\n}\n\nfunction yi(a) {\n var b = a.ref;\n if (null !== b) if (\"function\" === typeof b) try {\n b(null);\n } catch (c) {\n xi(a, c);\n } else b.current = null;\n}\n\nfunction Di(a, b) {\n switch (b.tag) {\n case 0:\n case 11:\n case 15:\n Ei(2, 0, b);\n break;\n\n case 1:\n if (b.effectTag & 256 && null !== a) {\n var c = a.memoizedProps,\n d = a.memoizedState;\n a = b.stateNode;\n b = a.getSnapshotBeforeUpdate(b.elementType === b.type ? c : cg(b.type, c), d);\n a.__reactInternalSnapshotBeforeUpdate = b;\n }\n\n break;\n\n case 3:\n case 5:\n case 6:\n case 4:\n case 17:\n break;\n\n default:\n throw t(Error(163));\n }\n}\n\nfunction Ei(a, b, c) {\n c = c.updateQueue;\n c = null !== c ? c.lastEffect : null;\n\n if (null !== c) {\n var d = c = c.next;\n\n do {\n if (0 !== (d.tag & a)) {\n var e = d.destroy;\n d.destroy = void 0;\n void 0 !== e && e();\n }\n\n 0 !== (d.tag & b) && (e = d.create, d.destroy = e());\n d = d.next;\n } while (d !== c);\n }\n}\n\nfunction Fi(a, b, c) {\n \"function\" === typeof Gi && Gi(b);\n\n switch (b.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n a = b.updateQueue;\n\n if (null !== a && (a = a.lastEffect, null !== a)) {\n var d = a.next;\n Yf(97 < c ? 97 : c, function () {\n var a = d;\n\n do {\n var c = a.destroy;\n\n if (void 0 !== c) {\n var g = b;\n\n try {\n c();\n } catch (h) {\n xi(g, h);\n }\n }\n\n a = a.next;\n } while (a !== d);\n });\n }\n\n break;\n\n case 1:\n yi(b);\n c = b.stateNode;\n \"function\" === typeof c.componentWillUnmount && wi(b, c);\n break;\n\n case 5:\n yi(b);\n break;\n\n case 4:\n Hi(a, b, c);\n }\n}\n\nfunction Ii(a) {\n var b = a.alternate;\n a.return = null;\n a.child = null;\n a.memoizedState = null;\n a.updateQueue = null;\n a.dependencies = null;\n a.alternate = null;\n a.firstEffect = null;\n a.lastEffect = null;\n a.pendingProps = null;\n a.memoizedProps = null;\n null !== b && Ii(b);\n}\n\nfunction Ji(a) {\n return 5 === a.tag || 3 === a.tag || 4 === a.tag;\n}\n\nfunction Ki(a) {\n a: {\n for (var b = a.return; null !== b;) {\n if (Ji(b)) {\n var c = b;\n break a;\n }\n\n b = b.return;\n }\n\n throw t(Error(160));\n }\n\n b = c.stateNode;\n\n switch (c.tag) {\n case 5:\n var d = !1;\n break;\n\n case 3:\n b = b.containerInfo;\n d = !0;\n break;\n\n case 4:\n b = b.containerInfo;\n d = !0;\n break;\n\n default:\n throw t(Error(161));\n }\n\n c.effectTag & 16 && (Tb(b, \"\"), c.effectTag &= -17);\n\n a: b: for (c = a;;) {\n for (; null === c.sibling;) {\n if (null === c.return || Ji(c.return)) {\n c = null;\n break a;\n }\n\n c = c.return;\n }\n\n c.sibling.return = c.return;\n\n for (c = c.sibling; 5 !== c.tag && 6 !== c.tag && 18 !== c.tag;) {\n if (c.effectTag & E) continue b;\n if (null === c.child || 4 === c.tag) continue b;else c.child.return = c, c = c.child;\n }\n\n if (!(c.effectTag & E)) {\n c = c.stateNode;\n break a;\n }\n }\n\n for (var e = a;;) {\n var f = 5 === e.tag || 6 === e.tag;\n\n if (f) {\n var g = f ? e.stateNode : e.stateNode.instance;\n if (c) {\n if (d) {\n f = b;\n var h = g;\n g = c;\n 8 === f.nodeType ? f.parentNode.insertBefore(h, g) : f.insertBefore(h, g);\n } else b.insertBefore(g, c);\n } else d ? (h = b, 8 === h.nodeType ? (f = h.parentNode, f.insertBefore(g, h)) : (f = h, f.appendChild(g)), h = h._reactRootContainer, null !== h && void 0 !== h || null !== f.onclick || (f.onclick = Td)) : b.appendChild(g);\n } else if (4 !== e.tag && null !== e.child) {\n e.child.return = e;\n e = e.child;\n continue;\n }\n\n if (e === a) break;\n\n for (; null === e.sibling;) {\n if (null === e.return || e.return === a) return;\n e = e.return;\n }\n\n e.sibling.return = e.return;\n e = e.sibling;\n }\n}\n\nfunction Hi(a, b, c) {\n for (var d = b, e = !1, f, g;;) {\n if (!e) {\n e = d.return;\n\n a: for (;;) {\n if (null === e) throw t(Error(160));\n f = e.stateNode;\n\n switch (e.tag) {\n case 5:\n g = !1;\n break a;\n\n case 3:\n f = f.containerInfo;\n g = !0;\n break a;\n\n case 4:\n f = f.containerInfo;\n g = !0;\n break a;\n }\n\n e = e.return;\n }\n\n e = !0;\n }\n\n if (5 === d.tag || 6 === d.tag) {\n a: for (var h = a, k = d, l = c, m = k;;) {\n if (Fi(h, m, l), null !== m.child && 4 !== m.tag) m.child.return = m, m = m.child;else {\n if (m === k) break;\n\n for (; null === m.sibling;) {\n if (null === m.return || m.return === k) break a;\n m = m.return;\n }\n\n m.sibling.return = m.return;\n m = m.sibling;\n }\n }\n\n g ? (h = f, k = d.stateNode, 8 === h.nodeType ? h.parentNode.removeChild(k) : h.removeChild(k)) : f.removeChild(d.stateNode);\n } else if (4 === d.tag) {\n if (null !== d.child) {\n f = d.stateNode.containerInfo;\n g = !0;\n d.child.return = d;\n d = d.child;\n continue;\n }\n } else if (Fi(a, d, c), null !== d.child) {\n d.child.return = d;\n d = d.child;\n continue;\n }\n\n if (d === b) break;\n\n for (; null === d.sibling;) {\n if (null === d.return || d.return === b) return;\n d = d.return;\n 4 === d.tag && (e = !1);\n }\n\n d.sibling.return = d.return;\n d = d.sibling;\n }\n}\n\nfunction Li(a, b) {\n switch (b.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n Ei(4, 8, b);\n break;\n\n case 1:\n break;\n\n case 5:\n var c = b.stateNode;\n\n if (null != c) {\n var d = b.memoizedProps,\n e = null !== a ? a.memoizedProps : d;\n a = b.type;\n var f = b.updateQueue;\n b.updateQueue = null;\n\n if (null !== f) {\n c[ne] = d;\n \"input\" === a && \"radio\" === d.type && null != d.name && Cb(c, d);\n Rd(a, e);\n b = Rd(a, d);\n\n for (e = 0; e < f.length; e += 2) {\n var g = f[e],\n h = f[e + 1];\n \"style\" === g ? Od(c, h) : \"dangerouslySetInnerHTML\" === g ? Sb(c, h) : \"children\" === g ? Tb(c, h) : ub(c, g, h, b);\n }\n\n switch (a) {\n case \"input\":\n Db(c, d);\n break;\n\n case \"textarea\":\n Mb(c, d);\n break;\n\n case \"select\":\n b = c._wrapperState.wasMultiple, c._wrapperState.wasMultiple = !!d.multiple, a = d.value, null != a ? Jb(c, !!d.multiple, a, !1) : b !== !!d.multiple && (null != d.defaultValue ? Jb(c, !!d.multiple, d.defaultValue, !0) : Jb(c, !!d.multiple, d.multiple ? [] : \"\", !1));\n }\n }\n }\n\n break;\n\n case 6:\n if (null === b.stateNode) throw t(Error(162));\n b.stateNode.nodeValue = b.memoizedProps;\n break;\n\n case 3:\n b = b.stateNode;\n b.hydrate && (b.hydrate = !1, zc(b.containerInfo));\n break;\n\n case 12:\n break;\n\n case 13:\n c = b;\n null === b.memoizedState ? d = !1 : (d = !0, c = b.child, Mi = Vf());\n if (null !== c) a: for (a = c;;) {\n if (5 === a.tag) f = a.stateNode, d ? (f = f.style, \"function\" === typeof f.setProperty ? f.setProperty(\"display\", \"none\", \"important\") : f.display = \"none\") : (f = a.stateNode, e = a.memoizedProps.style, e = void 0 !== e && null !== e && e.hasOwnProperty(\"display\") ? e.display : null, f.style.display = Nd(\"display\", e));else if (6 === a.tag) a.stateNode.nodeValue = d ? \"\" : a.memoizedProps;else if (13 === a.tag && null !== a.memoizedState && null === a.memoizedState.dehydrated) {\n f = a.child.sibling;\n f.return = a;\n a = f;\n continue;\n } else if (null !== a.child) {\n a.child.return = a;\n a = a.child;\n continue;\n }\n if (a === c) break a;\n\n for (; null === a.sibling;) {\n if (null === a.return || a.return === c) break a;\n a = a.return;\n }\n\n a.sibling.return = a.return;\n a = a.sibling;\n }\n Ni(b);\n break;\n\n case 19:\n Ni(b);\n break;\n\n case 17:\n break;\n\n case 20:\n break;\n\n case 21:\n break;\n\n default:\n throw t(Error(163));\n }\n}\n\nfunction Ni(a) {\n var b = a.updateQueue;\n\n if (null !== b) {\n a.updateQueue = null;\n var c = a.stateNode;\n null === c && (c = a.stateNode = new ui());\n b.forEach(function (b) {\n var d = Oi.bind(null, a, b);\n c.has(b) || (c.add(b), b.then(d, d));\n });\n }\n}\n\nvar Pi = \"function\" === typeof WeakMap ? WeakMap : Map;\n\nfunction Qi(a, b, c) {\n c = rg(c, null);\n c.tag = 3;\n c.payload = {\n element: null\n };\n var d = b.value;\n\n c.callback = function () {\n Ri || (Ri = !0, Si = d);\n vi(a, b);\n };\n\n return c;\n}\n\nfunction Ti(a, b, c) {\n c = rg(c, null);\n c.tag = 3;\n var d = a.type.getDerivedStateFromError;\n\n if (\"function\" === typeof d) {\n var e = b.value;\n\n c.payload = function () {\n vi(a, b);\n return d(e);\n };\n }\n\n var f = a.stateNode;\n null !== f && \"function\" === typeof f.componentDidCatch && (c.callback = function () {\n \"function\" !== typeof d && (null === Ui ? Ui = new Set([this]) : Ui.add(this), vi(a, b));\n var c = b.stack;\n this.componentDidCatch(b.value, {\n componentStack: null !== c ? c : \"\"\n });\n });\n return c;\n}\n\nvar Vi = Math.ceil,\n Wi = Da.ReactCurrentDispatcher,\n Xi = Da.ReactCurrentOwner,\n S = 0,\n Yi = 8,\n Zi = 16,\n $i = 32,\n aj = 0,\n bj = 1,\n cj = 2,\n dj = 3,\n ej = 4,\n fj = 5,\n gj = 6,\n T = S,\n U = null,\n V = null,\n W = 0,\n X = aj,\n hj = null,\n ij = 1073741823,\n jj = 1073741823,\n kj = null,\n lj = 0,\n mj = !1,\n Mi = 0,\n nj = 500,\n Y = null,\n Ri = !1,\n Si = null,\n Ui = null,\n oj = !1,\n pj = null,\n qj = 90,\n rj = null,\n sj = 0,\n tj = null,\n uj = 0;\n\nfunction Fg() {\n return (T & (Zi | $i)) !== S ? 1073741821 - (Vf() / 10 | 0) : 0 !== uj ? uj : uj = 1073741821 - (Vf() / 10 | 0);\n}\n\nfunction Gg(a, b, c) {\n b = b.mode;\n if (0 === (b & 2)) return 1073741823;\n var d = Wf();\n if (0 === (b & 4)) return 99 === d ? 1073741823 : 1073741822;\n if ((T & Zi) !== S) return W;\n if (null !== c) a = 1073741821 - 25 * (((1073741821 - a + (c.timeoutMs | 0 || 5E3) / 10) / 25 | 0) + 1);else switch (d) {\n case 99:\n a = 1073741823;\n break;\n\n case 98:\n a = 1073741821 - 10 * (((1073741821 - a + 15) / 10 | 0) + 1);\n break;\n\n case 97:\n case 96:\n a = 1073741821 - 25 * (((1073741821 - a + 500) / 25 | 0) + 1);\n break;\n\n case 95:\n a = 2;\n break;\n\n default:\n throw t(Error(326));\n }\n null !== U && a === W && --a;\n return a;\n}\n\nvar vj = 0;\n\nfunction Hg(a, b) {\n if (50 < sj) throw sj = 0, tj = null, t(Error(185));\n a = wj(a, b);\n\n if (null !== a) {\n var c = Wf();\n 1073741823 === b ? (T & Yi) !== S && (T & (Zi | $i)) === S ? xj(a) : (Z(a), T === S && bg()) : Z(a);\n (T & 4) === S || 98 !== c && 99 !== c || (null === rj ? rj = new Map([[a, b]]) : (c = rj.get(a), (void 0 === c || c > b) && rj.set(a, b)));\n }\n}\n\nfunction wj(a, b) {\n a.expirationTime < b && (a.expirationTime = b);\n var c = a.alternate;\n null !== c && c.expirationTime < b && (c.expirationTime = b);\n var d = a.return,\n e = null;\n if (null === d && 3 === a.tag) e = a.stateNode;else for (; null !== d;) {\n c = d.alternate;\n d.childExpirationTime < b && (d.childExpirationTime = b);\n null !== c && c.childExpirationTime < b && (c.childExpirationTime = b);\n\n if (null === d.return && 3 === d.tag) {\n e = d.stateNode;\n break;\n }\n\n d = d.return;\n }\n null !== e && (U === e && (zg(b), X === ej && yj(e, W)), zj(e, b));\n return e;\n}\n\nfunction Aj(a) {\n var b = a.lastExpiredTime;\n if (0 !== b) return b;\n b = a.firstPendingTime;\n if (!Bj(a, b)) return b;\n b = a.lastPingedTime;\n a = a.nextKnownPendingLevel;\n return b > a ? b : a;\n}\n\nfunction Z(a) {\n if (0 !== a.lastExpiredTime) a.callbackExpirationTime = 1073741823, a.callbackPriority = 99, a.callbackNode = $f(xj.bind(null, a));else {\n var b = Aj(a),\n c = a.callbackNode;\n if (0 === b) null !== c && (a.callbackNode = null, a.callbackExpirationTime = 0, a.callbackPriority = 90);else {\n var d = Fg();\n 1073741823 === b ? d = 99 : 1 === b || 2 === b ? d = 95 : (d = 10 * (1073741821 - b) - 10 * (1073741821 - d), d = 0 >= d ? 99 : 250 >= d ? 98 : 5250 >= d ? 97 : 95);\n\n if (null !== c) {\n var e = a.callbackPriority;\n if (a.callbackExpirationTime === b && e >= d) return;\n c !== Pf && Ff(c);\n }\n\n a.callbackExpirationTime = b;\n a.callbackPriority = d;\n b = 1073741823 === b ? $f(xj.bind(null, a)) : Zf(d, Cj.bind(null, a), {\n timeout: 10 * (1073741821 - b) - Vf()\n });\n a.callbackNode = b;\n }\n }\n}\n\nfunction Cj(a, b) {\n uj = 0;\n if (b) return b = Fg(), Dj(a, b), Z(a), null;\n var c = Aj(a);\n\n if (0 !== c) {\n b = a.callbackNode;\n if ((T & (Zi | $i)) !== S) throw t(Error(327));\n Ej();\n a === U && c === W || Fj(a, c);\n\n if (null !== V) {\n var d = T;\n T |= Zi;\n var e = Gj(a);\n\n do {\n try {\n Hj();\n break;\n } catch (h) {\n Ij(a, h);\n }\n } while (1);\n\n hg();\n T = d;\n Wi.current = e;\n if (X === bj) throw b = hj, Fj(a, c), yj(a, c), Z(a), b;\n if (null === V) switch (e = a.finishedWork = a.current.alternate, a.finishedExpirationTime = c, Jj(a, c), d = X, U = null, d) {\n case aj:\n case bj:\n throw t(Error(345));\n\n case cj:\n if (2 !== c) {\n Dj(a, 2);\n break;\n }\n\n Kj(a);\n break;\n\n case dj:\n yj(a, c);\n d = a.lastSuspendedTime;\n c === d && (a.nextKnownPendingLevel = Lj(e));\n\n if (1073741823 === ij && (e = Mi + nj - Vf(), 10 < e)) {\n if (mj) {\n var f = a.lastPingedTime;\n\n if (0 === f || f >= c) {\n a.lastPingedTime = c;\n Fj(a, c);\n break;\n }\n }\n\n f = Aj(a);\n if (0 !== f && f !== c) break;\n\n if (0 !== d && d !== c) {\n a.lastPingedTime = d;\n break;\n }\n\n a.timeoutHandle = he(Kj.bind(null, a), e);\n break;\n }\n\n Kj(a);\n break;\n\n case ej:\n yj(a, c);\n d = a.lastSuspendedTime;\n c === d && (a.nextKnownPendingLevel = Lj(e));\n\n if (mj && (e = a.lastPingedTime, 0 === e || e >= c)) {\n a.lastPingedTime = c;\n Fj(a, c);\n break;\n }\n\n e = Aj(a);\n if (0 !== e && e !== c) break;\n\n if (0 !== d && d !== c) {\n a.lastPingedTime = d;\n break;\n }\n\n 1073741823 !== jj ? d = 10 * (1073741821 - jj) - Vf() : 1073741823 === ij ? d = 0 : (d = 10 * (1073741821 - ij) - 5E3, e = Vf(), c = 10 * (1073741821 - c) - e, d = e - d, 0 > d && (d = 0), d = (120 > d ? 120 : 480 > d ? 480 : 1080 > d ? 1080 : 1920 > d ? 1920 : 3E3 > d ? 3E3 : 4320 > d ? 4320 : 1960 * Vi(d / 1960)) - d, c < d && (d = c));\n\n if (10 < d) {\n a.timeoutHandle = he(Kj.bind(null, a), d);\n break;\n }\n\n Kj(a);\n break;\n\n case fj:\n if (1073741823 !== ij && null !== kj) {\n f = ij;\n var g = kj;\n d = g.busyMinDurationMs | 0;\n 0 >= d ? d = 0 : (e = g.busyDelayMs | 0, f = Vf() - (10 * (1073741821 - f) - (g.timeoutMs | 0 || 5E3)), d = f <= e ? 0 : e + d - f);\n\n if (10 < d) {\n yj(a, c);\n a.timeoutHandle = he(Kj.bind(null, a), d);\n break;\n }\n }\n\n Kj(a);\n break;\n\n case gj:\n yj(a, c);\n break;\n\n default:\n throw t(Error(329));\n }\n Z(a);\n if (a.callbackNode === b) return Cj.bind(null, a);\n }\n }\n\n return null;\n}\n\nfunction xj(a) {\n var b = a.lastExpiredTime;\n b = 0 !== b ? b : 1073741823;\n if (a.finishedExpirationTime === b) Kj(a);else {\n if ((T & (Zi | $i)) !== S) throw t(Error(327));\n Ej();\n a === U && b === W || Fj(a, b);\n\n if (null !== V) {\n var c = T;\n T |= Zi;\n var d = Gj(a);\n\n do {\n try {\n Mj();\n break;\n } catch (e) {\n Ij(a, e);\n }\n } while (1);\n\n hg();\n T = c;\n Wi.current = d;\n if (X === bj) throw c = hj, Fj(a, b), yj(a, b), Z(a), c;\n if (null !== V) throw t(Error(261));\n a.finishedWork = a.current.alternate;\n a.finishedExpirationTime = b;\n Jj(a, b);\n X === gj ? yj(a, b) : (U = null, Kj(a));\n Z(a);\n }\n }\n return null;\n}\n\nfunction Nj() {\n (T & (1 | Zi | $i)) === S && (Oj(), Ej());\n}\n\nfunction Jj(a, b) {\n var c = a.firstBatch;\n null !== c && c._defer && c._expirationTime >= b && (Zf(97, function () {\n c._onComplete();\n\n return null;\n }), X = gj);\n}\n\nfunction Oj() {\n if (null !== rj) {\n var a = rj;\n rj = null;\n a.forEach(function (a, c) {\n Dj(c, a);\n Z(c);\n });\n bg();\n }\n}\n\nfunction Pj(a, b) {\n var c = T;\n T |= 1;\n\n try {\n return a(b);\n } finally {\n T = c, T === S && bg();\n }\n}\n\nfunction Qj(a, b, c, d) {\n var e = T;\n T |= 4;\n\n try {\n return Yf(98, a.bind(null, b, c, d));\n } finally {\n T = e, T === S && bg();\n }\n}\n\nfunction Rj(a, b) {\n var c = T;\n T &= -2;\n T |= Yi;\n\n try {\n return a(b);\n } finally {\n T = c, T === S && bg();\n }\n}\n\nfunction Fj(a, b) {\n a.finishedWork = null;\n a.finishedExpirationTime = 0;\n var c = a.timeoutHandle;\n -1 !== c && (a.timeoutHandle = -1, ie(c));\n if (null !== V) for (c = V.return; null !== c;) {\n var d = c;\n\n switch (d.tag) {\n case 1:\n var e = d.type.childContextTypes;\n null !== e && void 0 !== e && wf(d);\n break;\n\n case 3:\n dh(d);\n xf(d);\n break;\n\n case 5:\n fh(d);\n break;\n\n case 4:\n dh(d);\n break;\n\n case 13:\n H(O, d);\n break;\n\n case 19:\n H(O, d);\n break;\n\n case 10:\n jg(d);\n }\n\n c = c.return;\n }\n U = a;\n V = Rg(a.current, null, b);\n W = b;\n X = aj;\n hj = null;\n jj = ij = 1073741823;\n kj = null;\n lj = 0;\n mj = !1;\n}\n\nfunction Ij(a, b) {\n do {\n try {\n hg();\n Ah();\n if (null === V || null === V.return) return X = bj, hj = b, null;\n\n a: {\n var c = a,\n d = V.return,\n e = V,\n f = b;\n b = W;\n e.effectTag |= 2048;\n e.firstEffect = e.lastEffect = null;\n\n if (null !== f && \"object\" === typeof f && \"function\" === typeof f.then) {\n var g = f,\n h = 0 !== (O.current & 1),\n k = d;\n\n do {\n var l;\n\n if (l = 13 === k.tag) {\n var m = k.memoizedState;\n if (null !== m) l = null !== m.dehydrated ? !0 : !1;else {\n var A = k.memoizedProps;\n l = void 0 === A.fallback ? !1 : !0 !== A.unstable_avoidThisFallback ? !0 : h ? !1 : !0;\n }\n }\n\n if (l) {\n var w = k.updateQueue;\n\n if (null === w) {\n var L = new Set();\n L.add(g);\n k.updateQueue = L;\n } else w.add(g);\n\n if (0 === (k.mode & 2)) {\n k.effectTag |= 64;\n e.effectTag &= -2981;\n if (1 === e.tag) if (null === e.alternate) e.tag = 17;else {\n var wb = rg(1073741823, null);\n wb.tag = 2;\n tg(e, wb);\n }\n e.expirationTime = 1073741823;\n break a;\n }\n\n f = void 0;\n e = b;\n var M = c.pingCache;\n null === M ? (M = c.pingCache = new Pi(), f = new Set(), M.set(g, f)) : (f = M.get(g), void 0 === f && (f = new Set(), M.set(g, f)));\n\n if (!f.has(e)) {\n f.add(e);\n var q = Sj.bind(null, c, g, e);\n g.then(q, q);\n }\n\n k.effectTag |= 4096;\n k.expirationTime = b;\n break a;\n }\n\n k = k.return;\n } while (null !== k);\n\n f = Error((Va(e.type) || \"A React component\") + \" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a component higher in the tree to provide a loading indicator or placeholder to display.\" + Wa(e));\n }\n\n X !== fj && (X = cj);\n f = ti(f, e);\n k = d;\n\n do {\n switch (k.tag) {\n case 3:\n g = f;\n k.effectTag |= 4096;\n k.expirationTime = b;\n var y = Qi(k, g, b);\n ug(k, y);\n break a;\n\n case 1:\n g = f;\n var z = k.type,\n p = k.stateNode;\n\n if ((k.effectTag & 64) === D && (\"function\" === typeof z.getDerivedStateFromError || null !== p && \"function\" === typeof p.componentDidCatch && (null === Ui || !Ui.has(p)))) {\n k.effectTag |= 4096;\n k.expirationTime = b;\n var u = Ti(k, g, b);\n ug(k, u);\n break a;\n }\n\n }\n\n k = k.return;\n } while (null !== k);\n }\n\n V = Tj(V);\n } catch (v) {\n b = v;\n continue;\n }\n\n break;\n } while (1);\n}\n\nfunction Gj() {\n var a = Wi.current;\n Wi.current = zh;\n return null === a ? zh : a;\n}\n\nfunction yg(a, b) {\n a < ij && 2 < a && (ij = a);\n null !== b && a < jj && 2 < a && (jj = a, kj = b);\n}\n\nfunction zg(a) {\n a > lj && (lj = a);\n}\n\nfunction Mj() {\n for (; null !== V;) {\n V = Uj(V);\n }\n}\n\nfunction Hj() {\n for (; null !== V && !Gf();) {\n V = Uj(V);\n }\n}\n\nfunction Uj(a) {\n var b = Vj(a.alternate, a, W);\n a.memoizedProps = a.pendingProps;\n null === b && (b = Tj(a));\n Xi.current = null;\n return b;\n}\n\nfunction Tj(a) {\n V = a;\n\n do {\n var b = V.alternate;\n a = V.return;\n\n if ((V.effectTag & 2048) === D) {\n a: {\n var c = b;\n b = V;\n var d = W,\n e = b.pendingProps;\n\n switch (b.tag) {\n case 2:\n break;\n\n case 16:\n break;\n\n case 15:\n case 0:\n break;\n\n case 1:\n N(b.type) && wf(b);\n break;\n\n case 3:\n dh(b);\n xf(b);\n d = b.stateNode;\n d.pendingContext && (d.context = d.pendingContext, d.pendingContext = null);\n (null === c || null === c.child) && Wh(b) && mi(b);\n oi(b);\n break;\n\n case 5:\n fh(b);\n d = bh(ah.current);\n var f = b.type;\n if (null !== c && null != b.stateNode) pi(c, b, f, e, d), c.ref !== b.ref && (b.effectTag |= 128);else if (e) {\n var g = bh(Zg.current);\n\n if (Wh(b)) {\n e = b;\n f = void 0;\n c = e.stateNode;\n var h = e.type,\n k = e.memoizedProps;\n c[me] = e;\n c[ne] = k;\n\n switch (h) {\n case \"iframe\":\n case \"object\":\n case \"embed\":\n G(\"load\", c);\n break;\n\n case \"video\":\n case \"audio\":\n for (var l = 0; l < dc.length; l++) {\n G(dc[l], c);\n }\n\n break;\n\n case \"source\":\n G(\"error\", c);\n break;\n\n case \"img\":\n case \"image\":\n case \"link\":\n G(\"error\", c);\n G(\"load\", c);\n break;\n\n case \"form\":\n G(\"reset\", c);\n G(\"submit\", c);\n break;\n\n case \"details\":\n G(\"toggle\", c);\n break;\n\n case \"input\":\n Bb(c, k);\n G(\"invalid\", c);\n Sd(d, \"onChange\");\n break;\n\n case \"select\":\n c._wrapperState = {\n wasMultiple: !!k.multiple\n };\n G(\"invalid\", c);\n Sd(d, \"onChange\");\n break;\n\n case \"textarea\":\n Lb(c, k), G(\"invalid\", c), Sd(d, \"onChange\");\n }\n\n Qd(h, k);\n l = null;\n\n for (f in k) {\n k.hasOwnProperty(f) && (g = k[f], \"children\" === f ? \"string\" === typeof g ? c.textContent !== g && (l = [\"children\", g]) : \"number\" === typeof g && c.textContent !== \"\" + g && (l = [\"children\", \"\" + g]) : ia.hasOwnProperty(f) && null != g && Sd(d, f));\n }\n\n switch (h) {\n case \"input\":\n yb(c);\n Gb(c, k, !0);\n break;\n\n case \"textarea\":\n yb(c);\n Nb(c, k);\n break;\n\n case \"select\":\n case \"option\":\n break;\n\n default:\n \"function\" === typeof k.onClick && (c.onclick = Td);\n }\n\n d = l;\n e.updateQueue = d;\n null !== d && mi(b);\n } else {\n k = f;\n c = e;\n h = b;\n l = 9 === d.nodeType ? d : d.ownerDocument;\n g === Ob.html && (g = Pb(k));\n g === Ob.html ? \"script\" === k ? (k = l.createElement(\"div\"), k.innerHTML = \" {% if debug %} - + {% else %} - - + + {% endif %} - + diff --git a/server/views/classes.py b/server/views/classes.py index 24c540d..0250656 100644 --- a/server/views/classes.py +++ b/server/views/classes.py @@ -1,12 +1,41 @@ -from flask import Blueprint, Response +from flask import Blueprint, Response, jsonify from models import Class, Track from server.utils import extract_token, extract_user, handle_validation_error from uuid import uuid4 +def extract_class_data(classroom): + return { + "name": classroom.name, + "created_at": classroom.created_at.isoformat(), + "members": len(classroom.students), + "tracks": len(classroom.tracks_classes), + } + + def create_classes_blueprint(db_session, request): classes = Blueprint('classes', __name__) + @classes.route('/', methods=['GET']) + @handle_validation_error + def get_all_classes(): + token = extract_token(request) + user = extract_user(db_session, token) + + if not user.is_teacher: + return Response(response="Only teachers can see classes.", + status=403) + + existing_classes = db_session\ + .query(Class)\ + .filter_by(owner=user.email)\ + .all() + + classes_data = [extract_class_data(classroom) + for classroom in existing_classes] + + return jsonify(classes_data) + @classes.route('/', methods=['POST']) @handle_validation_error def create_class(name): From bbbd6a82daf4298addc4bf4f7b4ed6cb8e28bc4c Mon Sep 17 00:00:00 2001 From: Pedro Abbud Date: Thu, 7 Nov 2019 20:54:03 -0300 Subject: [PATCH 11/11] Restructuring and documenting --- app.yaml | 7 ++-- server/views/classes/__init__.py | 1 + server/views/{ => classes}/classes.py | 3 ++ server/views/classes/classes_get.yaml | 33 +++++++++++++++++++ server/views/classes/classes_post.yaml | 32 ++++++++++++++++++ server/views/enrollments/__init__.py | 1 + server/views/{ => enrollments}/enrollments.py | 0 server/views/exercises/__init__.py | 1 + server/views/{ => exercises}/exercises.py | 0 server/views/submissions/__init__.py | 1 + server/views/{ => submissions}/submissions.py | 0 server/views/topics/__init__.py | 1 + server/views/{ => topics}/topics.py | 0 server/views/tracks/__init__.py | 1 + server/views/{ => tracks}/tracks.py | 0 server/views/users/__init__.py | 1 + server/views/{ => users}/users.py | 0 settings.toml | 10 +++++- sharpener-admin.py | 33 +++++++++++++++++++ 19 files changed, 121 insertions(+), 4 deletions(-) create mode 100644 server/views/classes/__init__.py rename server/views/{ => classes}/classes.py (96%) create mode 100644 server/views/classes/classes_get.yaml create mode 100644 server/views/classes/classes_post.yaml create mode 100644 server/views/enrollments/__init__.py rename server/views/{ => enrollments}/enrollments.py (100%) create mode 100644 server/views/exercises/__init__.py rename server/views/{ => exercises}/exercises.py (100%) create mode 100644 server/views/submissions/__init__.py rename server/views/{ => submissions}/submissions.py (100%) create mode 100644 server/views/topics/__init__.py rename server/views/{ => topics}/topics.py (100%) create mode 100644 server/views/tracks/__init__.py rename server/views/{ => tracks}/tracks.py (100%) create mode 100644 server/views/users/__init__.py rename server/views/{ => users}/users.py (100%) diff --git a/app.yaml b/app.yaml index c8989e7..178ebc3 100644 --- a/app.yaml +++ b/app.yaml @@ -1,5 +1,6 @@ +--- runtime: python37 -env:flex +env: flex entrypoint: uwsgi --http-socket :8080 --wsgi-file sharpener-admin.py --callable app liveness_check: @@ -10,5 +11,5 @@ liveness_check: success_threshold: 2 handlers: -- url: /.* - script: auto + - url: /.* + script: auto diff --git a/server/views/classes/__init__.py b/server/views/classes/__init__.py new file mode 100644 index 0000000..d3ed190 --- /dev/null +++ b/server/views/classes/__init__.py @@ -0,0 +1 @@ +from .classes import create_classes_blueprint diff --git a/server/views/classes.py b/server/views/classes/classes.py similarity index 96% rename from server/views/classes.py rename to server/views/classes/classes.py index 0250656..c8cdf1a 100644 --- a/server/views/classes.py +++ b/server/views/classes/classes.py @@ -1,6 +1,7 @@ from flask import Blueprint, Response, jsonify from models import Class, Track from server.utils import extract_token, extract_user, handle_validation_error +from flasgger import swag_from from uuid import uuid4 @@ -18,6 +19,7 @@ def create_classes_blueprint(db_session, request): @classes.route('/', methods=['GET']) @handle_validation_error + @swag_from('classes_get.yaml') def get_all_classes(): token = extract_token(request) user = extract_user(db_session, token) @@ -38,6 +40,7 @@ def get_all_classes(): @classes.route('/', methods=['POST']) @handle_validation_error + @swag_from('classes_post.yaml') def create_class(name): token = extract_token(request) user = extract_user(db_session, token) diff --git a/server/views/classes/classes_get.yaml b/server/views/classes/classes_get.yaml new file mode 100644 index 0000000..67e24d4 --- /dev/null +++ b/server/views/classes/classes_get.yaml @@ -0,0 +1,33 @@ +Listing enrolled or created classes +Protected route, that if the user is a professor, show all +classes that he/she created. If the user is a student, +all classes that the student is participating are returned. +--- +security: + - bearerAuth: [] +responses: + 200: + description: A list of classes + schema: + type: array + items: + type: object + properties: + name: + type: string + description: The class name. + example: Defence Against the Dark Arts + created_at: + type: string + description: Class creation timestamp. + format: date-time + members: + type: integer + description: Number of members currently enrolled. + example: 42 + tracks: + type: integer + description: Number of tracks registered in this class. + example: 2 + 403: + description: Only teachers can see classes. diff --git a/server/views/classes/classes_post.yaml b/server/views/classes/classes_post.yaml new file mode 100644 index 0000000..d16fba6 --- /dev/null +++ b/server/views/classes/classes_post.yaml @@ -0,0 +1,32 @@ + +Protected route, that if the user is a professor, show all +classes that he/she created. If the user is a student, +all classes that the student is participating are returned. +--- +headers: + - name: token + type: apiKey +parameters: + - name: palette + in: path + type: string + enum: ['all', 'rgb', 'cmyk'] + required: true + default: all +definitions: + Palette: + type: object + properties: + palette_name: + type: array + items: + $ref: '#/definitions/Color' + Color: + type: string +responses: + 200: + description: A list of colors (may be filtered by palette) + schema: + $ref: '#/definitions/Palette' + examples: + rgb: ['red', 'green', 'blue'] diff --git a/server/views/enrollments/__init__.py b/server/views/enrollments/__init__.py new file mode 100644 index 0000000..c586901 --- /dev/null +++ b/server/views/enrollments/__init__.py @@ -0,0 +1 @@ +from .enrollments import create_enrollments_blueprint diff --git a/server/views/enrollments.py b/server/views/enrollments/enrollments.py similarity index 100% rename from server/views/enrollments.py rename to server/views/enrollments/enrollments.py diff --git a/server/views/exercises/__init__.py b/server/views/exercises/__init__.py new file mode 100644 index 0000000..7b5387f --- /dev/null +++ b/server/views/exercises/__init__.py @@ -0,0 +1 @@ +from .exercises import create_exercises_blueprint diff --git a/server/views/exercises.py b/server/views/exercises/exercises.py similarity index 100% rename from server/views/exercises.py rename to server/views/exercises/exercises.py diff --git a/server/views/submissions/__init__.py b/server/views/submissions/__init__.py new file mode 100644 index 0000000..2b5202e --- /dev/null +++ b/server/views/submissions/__init__.py @@ -0,0 +1 @@ +from .submissions import create_submissions_blueprint diff --git a/server/views/submissions.py b/server/views/submissions/submissions.py similarity index 100% rename from server/views/submissions.py rename to server/views/submissions/submissions.py diff --git a/server/views/topics/__init__.py b/server/views/topics/__init__.py new file mode 100644 index 0000000..31285db --- /dev/null +++ b/server/views/topics/__init__.py @@ -0,0 +1 @@ +from .topics import create_topics_blueprint diff --git a/server/views/topics.py b/server/views/topics/topics.py similarity index 100% rename from server/views/topics.py rename to server/views/topics/topics.py diff --git a/server/views/tracks/__init__.py b/server/views/tracks/__init__.py new file mode 100644 index 0000000..c2061e3 --- /dev/null +++ b/server/views/tracks/__init__.py @@ -0,0 +1 @@ +from .tracks import create_tracks_blueprint diff --git a/server/views/tracks.py b/server/views/tracks/tracks.py similarity index 100% rename from server/views/tracks.py rename to server/views/tracks/tracks.py diff --git a/server/views/users/__init__.py b/server/views/users/__init__.py new file mode 100644 index 0000000..48ec25c --- /dev/null +++ b/server/views/users/__init__.py @@ -0,0 +1 @@ +from .users import create_users_blueprint diff --git a/server/views/users.py b/server/views/users/users.py similarity index 100% rename from server/views/users.py rename to server/views/users/users.py diff --git a/settings.toml b/settings.toml index f976d2f..9b56294 100644 --- a/settings.toml +++ b/settings.toml @@ -1,6 +1,14 @@ [default] ENV="development" DB_API="postgresql+psycopg2" -DB_NAME="postgres" BUCKET_EXERCISES="sharpener-exercises" BUCKET_SUBMISSIONS="sharpener-submissions" +DB_NAME="postgres" +DB_USERNAME="" +DB_PASSWORD="" +DB_CONN_NAME="" +GITHUB_URI_OAUTH="" +GITHUB_URI_USER="" +GITHUB_CLIENT_ID="" +GITHUB_CLIENT_SECRET="" +FLASK_SECRET="" diff --git a/sharpener-admin.py b/sharpener-admin.py index 11b5eac..990281a 100755 --- a/sharpener-admin.py +++ b/sharpener-admin.py @@ -7,6 +7,7 @@ sharpener-admin start_server """ import googleclouddebugger +from flasgger import Swagger from docopt import docopt from dynaconf import settings from google.cloud import storage @@ -19,6 +20,31 @@ is_production = settings.ENV == "production" is_development = not is_production +template = { + "swagger": "2.0", + "info": { + "description": "API for Sharpener", + "contact": { + "responsibleDeveloper": "Pedro Morello Abbud", + "email": "pedro.abbud@usp.br", + }, + "version": "0.1" + }, + +"securityDefinitions":{ + "Bearer":{ + "type": "apiKey", + "name": "Authorization", + "in": "header", + } +}, + "host": "sharpener-cloud.appspot", + "schemes": [ + "http", + "https" + ], +} + github_config = { "oauth_uri": settings.GITHUB_URI_OAUTH, "user_uri": settings.GITHUB_URI_USER, @@ -43,6 +69,13 @@ app = create_app(db_session, github_config, settings.FLASK_SECRET, bucket_submissions, debug=is_development) app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 +app.config['JWT_AUTH_URL_RULE'] = '/authenticate' +app.config['SWAGGER'] = { + 'title': 'Sharpener APIDocs', + 'uiversion': 3 +} +app.config['JWT_AUTH_URL_RULE'] = '/api/auth' +swagger = Swagger(app, template=template) if local: args = docopt(__doc__)

_-e3JUCp^3z%f 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 z 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%0Ae&AjmfP_gZco*CVb$USgW_k)CW0>-p6G?2O%2}f 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%0Dw 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%0At&cfBKnW!Wh8E3H;+ijonNTqy$BDei@h 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 diff --git a/models/attempt.py b/models/attempt.py index 15fa326..368f936 100644 --- a/models/attempt.py +++ b/models/attempt.py @@ -8,9 +8,7 @@ class Attempt(Base): __tablename__ = 'attempts' - - id = Column('id', Integer, autoincrement=True, primary_key=True) - submission_id = Column(ForeignKey('submissions.id'), nullable=False) + submission_id = Column(ForeignKey('submissions.id'), primary_key=True) submission = relationship('Submission') attempt_number = Column('attempt_number', Integer, primary_key=True) diff --git a/models/classroom.py b/models/classroom.py index 7acbe72..2b9ad5b 100644 --- a/models/classroom.py +++ b/models/classroom.py @@ -1,25 +1,23 @@ from .base import Base -from .language import Language -from sqlalchemy import Column, String, Integer, ForeignKey, Enum +from sqlalchemy import Column, String, Integer, ForeignKey, UniqueConstraint from sqlalchemy.orm import relationship -from .user_classroom import UserClassAssociation -from .track_classroom import TrackClassAssociation class Class(Base): __tablename__ = 'classes' + __table_args__ = (UniqueConstraint('name', 'owner'),) id = Column(Integer, primary_key=True) owner = Column(String, ForeignKey('users.email')) name = Column(String, nullable=False) invite_token = Column(String, nullable=False) - language = Column(Enum(Language)) - users = relationship("User", secondary='users_classes_association', - back_populates="classes") + students = relationship("User", secondary='users_classes_association', + back_populates="classes") tracks = relationship("Track", secondary='tracks_classes_association', back_populates="classes") - tracks_classes = relationship("TrackClassAssociation") + tracks_classes = relationship("TrackClassAssociation", + back_populates="class_ref") def __repr__(self): return ("" diff --git a/models/enrollment.py b/models/enrollment.py index a720cb1..76d26f4 100644 --- a/models/enrollment.py +++ b/models/enrollment.py @@ -1,6 +1,6 @@ +from datetime import datetime from .base import Base -from sqlalchemy import (Column, String, Integer, ForeignKey, - ForeignKeyConstraint) +from sqlalchemy import (Column, String, ForeignKey, DateTime) from sqlalchemy.orm import relationship @@ -12,10 +12,14 @@ class Enrollment(Base): ForeignKey('tracks_classes_association.id'), primary_key=True) - track_class = relationship('TrackClassAssociation', uselist=False) + track_class = relationship('TrackClassAssociation', uselist=False, + back_populates="enrollments") submissions = relationship('Submission') + enrolled_at = Column(DateTime, default=datetime.utcnow, nullable=False) + + enrolled_user = relationship('User', back_populates="enrolled_in", + uselist=False) def __repr__(self): - return ("" % - (self.user, self.class_id, self.track, self.classroom)) + return ("" % + (self.user, self.track_class_id)) diff --git a/models/track.py b/models/track.py index d6bcf2f..31f01fd 100644 --- a/models/track.py +++ b/models/track.py @@ -19,7 +19,8 @@ class Track(Base): created_at = Column(DateTime, default=datetime.utcnow, nullable=False) - tracks_classes = relationship("TrackClassAssociation") + tracks_classes = relationship("TrackClassAssociation", + back_populates="track") def __repr__(self): - return "" % (self.name, self.creator) + return "" % (self.name, self.owner) diff --git a/models/track_classroom.py b/models/track_classroom.py index c00a05c..767530e 100644 --- a/models/track_classroom.py +++ b/models/track_classroom.py @@ -18,5 +18,12 @@ class TrackClassAssociation(Base): track_name = Column('track_name', String) track_owner = Column('track_owner', String) - track = relationship('Track', uselist=False) + track = relationship('Track', uselist=False, + back_populates="tracks_classes") class_ref = relationship('Class', uselist=False) + enrollments = relationship('Enrollment', back_populates="track_class") + + def __repr__(self): + return ("" % + (self.class_id, self.track_name, self.track_owner)) diff --git a/models/user.py b/models/user.py index b099d3e..26e354f 100644 --- a/models/user.py +++ b/models/user.py @@ -17,14 +17,14 @@ class User(Base): github_repositories = Column(String, nullable=True) created_at = Column(DateTime, default=datetime.utcnow, nullable=False) - creator = relationship('Track') - class_owner = relationship('Class', uselist=False) + tracks_owned = relationship('Track') + classes_owned = relationship('Class') created_exercises = relationship('Exercise', back_populates="created_by") - enrolled_in = relationship('Enrollment') + enrolled_in = relationship('Enrollment', back_populates="enrolled_user") classes = relationship('Class', secondary="users_classes_association", - back_populates="users") + back_populates="students") def __repr__(self): return "" % (self.name, self.email) diff --git a/server/__init__.py b/server/__init__.py index 80f2b08..1526849 100644 --- a/server/__init__.py +++ b/server/__init__.py @@ -1,14 +1,22 @@ from flask import Flask, request from .views import (create_exercises_blueprint, create_topics_blueprint, create_health_check_blueprint, create_users_blueprint, - create_interface_blueprint) + create_interface_blueprint, create_submissions_blueprint, + create_classes_blueprint, create_tracks_blueprint, + create_enrollments_blueprint) -def create_app(db_session, github_config, flask_secret, debug=True): +def create_app(db_session, github_config, flask_secret, bucket_submissions, + debug=True): exercises = create_exercises_blueprint(db_session, request) topics = create_topics_blueprint(db_session, request) users = create_users_blueprint(db_session, request, github_config) interface = create_interface_blueprint(db_session, debug) + submissions = create_submissions_blueprint(db_session, request, + bucket_submissions) + classes = create_classes_blueprint(db_session, request) + tracks = create_tracks_blueprint(db_session, request) + enrollments = create_enrollments_blueprint(db_session, request) healthcheck = create_health_check_blueprint(db_session) @@ -19,6 +27,10 @@ def create_app(db_session, github_config, flask_secret, debug=True): app.register_blueprint(healthcheck, url_prefix='/api/healthcheck') app.register_blueprint(exercises, url_prefix='/api/exercises') app.register_blueprint(topics, url_prefix='/api/topics') + app.register_blueprint(submissions, url_prefix='/api/submissions') + app.register_blueprint(classes, url_prefix='/api/classes') + app.register_blueprint(tracks, url_prefix='/api/tracks') + app.register_blueprint(enrollments, url_prefix='/api/enrollments') app.register_blueprint(users, url_prefix='/authenticate') return app diff --git a/server/utils/__init__.py b/server/utils/__init__.py index 9e6acda..c33b33d 100644 --- a/server/utils/__init__.py +++ b/server/utils/__init__.py @@ -1,3 +1,8 @@ -from .validators import handle_validation_error, extract_int_arg +from .validators import (handle_validation_error, extract_int_arg, + extract_token, extract_user, extract_language, + extract_class, extract_track, + extract_class_from_token) -__all__ = ['handle_validation_error', 'extract_int_arg'] +__all__ = ['handle_validation_error', 'extract_int_arg', + 'extract_token', 'extract_user', 'extract_language', + 'extract_class', 'extract_class_from_token', 'extract_track'] diff --git a/server/utils/validators.py b/server/utils/validators.py index 32ee1d5..adc936c 100644 --- a/server/utils/validators.py +++ b/server/utils/validators.py @@ -1,4 +1,5 @@ import logging +from models import User, Language, Track, Class from flask import make_response, jsonify from functools import wraps @@ -10,6 +11,12 @@ def __init__(self, message, original, field): self.field = field +class TokenError(Exception): + def __init__(self, original, message): + self.original = original + self.message = message + + def handle_validation_error(func): @wraps(func) def wrapper(*args, **kwargs): @@ -18,7 +25,10 @@ def wrapper(*args, **kwargs): except ValidationError as err: logging.warn(f"Validation Error: {err.original}") return make_response(jsonify(error=err.message, - field=err.field), status=400) + field=err.field), 400) + except TokenError as err: + logging.warn(f"Token error: {err.original}") + return make_response(jsonify(error=err.message), 401) return wrapper @@ -27,3 +37,68 @@ def extract_int_arg(request, key, default=0): return int(request.args.get(key, default)) except ValueError as err: raise ValidationError("Not an integer", err, key) + + +def extract_language(language): + known_language = Language.get(language) + if not known_language: + message = f"Unknown language {language}" + return ValidationError(message, message, "language") + + +def extract_token(request): + bearer_token = request.headers.get('authorization') + if not bearer_token: + message = 'Authentication token header is missing' + raise TokenError('no token', message) + token = bearer_token.rsplit('Bearer ')[1] + return token + + +def extract_user(db_session, token): + user = db_session.query(User)\ + .filter_by(token=token)\ + .first() + if not user: + message = 'Unknown indetification token' + print(token) + raise TokenError('bad token', message) + + return user + + +def extract_track(name, db_session, user): + existing_track = db_session.query(Track)\ + .filter_by(name=name, owner=user.email)\ + .first() + + if not existing_track: + message = "Track doesn't exist." + raise ValidationError(message, message, 'track') + + return existing_track + + +def extract_class(name, db_session, user): + existing_class = db_session.query(Class)\ + .filter_by(name=name, owner=user.email)\ + .first() + + if not existing_class: + message = "Class doesn't exist." + raise ValidationError(message, message, 'class') + + return existing_class + + +def extract_class_from_token(token, db_session): + print(token) + existing_class = db_session.query(Class)\ + .filter_by(invite_token=token)\ + .first() + + if not existing_class: + message = "Class doesn't exist." + raise ValidationError(message, message, 'class') + + return existing_class diff --git a/server/views/__init__.py b/server/views/__init__.py index 2ff2644..711df59 100644 --- a/server/views/__init__.py +++ b/server/views/__init__.py @@ -3,10 +3,18 @@ from .users import create_users_blueprint from .health_check import create_health_check_blueprint from .interface import create_interface_blueprint +from .submissions import create_submissions_blueprint +from .classes import create_classes_blueprint +from .tracks import create_tracks_blueprint +from .enrollments import create_enrollments_blueprint __all__ = ['create_exercises_blueprint', 'create_topics_blueprint', 'create_health_check_blueprint', 'create_users_blueprint', - 'create_interface_blueprint'] + 'create_interface_blueprint', + 'create_submissions_blueprint', + 'create_classes_blueprint', + 'create_tracks_blueprint', + 'create_enrollments_blueprint'] diff --git a/server/views/classes.py b/server/views/classes.py new file mode 100644 index 0000000..24c540d --- /dev/null +++ b/server/views/classes.py @@ -0,0 +1,71 @@ +from flask import Blueprint, Response +from models import Class, Track +from server.utils import extract_token, extract_user, handle_validation_error +from uuid import uuid4 + + +def create_classes_blueprint(db_session, request): + classes = Blueprint('classes', __name__) + + @classes.route('/', methods=['POST']) + @handle_validation_error + def create_class(name): + token = extract_token(request) + user = extract_user(db_session, token) + + if not user.is_teacher: + return Response(response="Only teachers can create classes.", + status=403) + + existing_class = db_session.query(Class).filter_by(owner=user.email, + name=name).first() + if existing_class: + return Response( + response="You already have a class with that name.", + status=409 + ) + + new_class = Class(name=name, + invite_token=uuid4()) + + user.classes_owned.append(new_class) + db_session.add(user) + db_session.flush() + db_session.add(new_class) + + db_session.commit() + + return Response(status=201) + + @classes.route('//', methods=['POST']) + @handle_validation_error + def register_track(name, track): + token = extract_token(request) + user = extract_user(db_session, token) + + if not user.is_teacher: + return Response(response="Only teachers can register tracks.", + status=403) + + existing_class = db_session.query(Class)\ + .filter_by(owner=user.email, name=name)\ + .first() + + if not existing_class: + return Response(response="You don't own a class with this name.", + status=404) + + existing_track = db_session.query(Track)\ + .filter_by(owner=user.email, name=track)\ + .first() + + print(existing_track) + if not existing_track: + return Response(response="You don't own a track with this name.", + status=404) + + existing_class.tracks.append(existing_track) + + return Response(status=201) + + return classes diff --git a/server/views/enrollments.py b/server/views/enrollments.py new file mode 100644 index 0000000..38bd683 --- /dev/null +++ b/server/views/enrollments.py @@ -0,0 +1,30 @@ +from flask import Blueprint, Response +from models import UserClassAssociation +from server.utils import (extract_token, extract_user, + extract_class_from_token, handle_validation_error) + + +def create_enrollments_blueprint(db_session, request): + enrollments = Blueprint('enrollments', __name__) + + @enrollments.route('/', methods=['POST']) + @handle_validation_error + def enroll_user_in_class(invite_token): + token = extract_token(request) + user = extract_user(db_session, token) + existing_class = extract_class_from_token(invite_token, db_session) + + existing_class_user = db_session.query(UserClassAssociation)\ + .filter_by(class_id=existing_class.id, user_email=user.email)\ + .first() + + if existing_class_user: + return Response(status=200) + + user.classes.append(existing_class) + db_session.add(user) + db_session.commit() + + return Response(status=201) + + return enrollments diff --git a/server/views/exercises.py b/server/views/exercises.py index 5b6ded0..2a519cd 100644 --- a/server/views/exercises.py +++ b/server/views/exercises.py @@ -1,7 +1,7 @@ -from flask import Blueprint, jsonify +from flask import Blueprint, jsonify, Response from sqlalchemy import asc from models import Exercise, Artifact, Language -from server.utils import extract_int_arg, handle_validation_error +from server.utils import extract_int_arg, handle_validation_error, extract_language def exercise_to_dict(exercise): @@ -54,11 +54,7 @@ def get_exercises(): def get_exercises_by_language(language): limit = extract_int_arg(request, 'page_size', default=default_limit) offset = extract_int_arg(request, 'page', default=0) - - known_language = Language.get(language) - - if not known_language: - return(404) + known_language = extract_language(language) exercises = session.query(Exercise)\ .filter_by(language=known_language)\ @@ -75,9 +71,9 @@ def get_exercises_by_language(language): @handle_validation_error def get_specific_exercise(language, name): known_language = Language.get(language) - if not known_language: - return 404 + return Response("Unknown language", + status=404) exercise, artifact = session.query(Exercise, Artifact)\ .filter(Exercise.artifact_id == Artifact.id)\ @@ -85,6 +81,10 @@ def get_specific_exercise(language, name): .order_by(asc(Exercise.difficulty))\ .first() + if not exercise: + return Response("Exercise doesn't exist", + status=404) + results = complete_exercise_to_dict(exercise, artifact) return jsonify(results) diff --git a/server/views/submissions.py b/server/views/submissions.py new file mode 100644 index 0000000..111cfde --- /dev/null +++ b/server/views/submissions.py @@ -0,0 +1,114 @@ +from flask import Blueprint, Response +from werkzeug.utils import secure_filename +from models import Submission, Language, Attempt, User, Enrollment +from server.utils import handle_validation_error + +ALLOWED_EXTENSIONS = {'py', 'rs'} + + +def upload_submission_files(bucket, blob_prefix, files): + blobs_uri = dict() + for file in files: + blob_path = f"{blob_prefix}/{secure_filename(file.filename)}" + blob = bucket.blob(blob_path) + blob.upload_from_string( + file.read(), + content_type=file.content_type + ) + blobs_uri[file.filename] = blob_path + return blobs_uri + + +def allowed_file(filename): + return '.' in filename and \ + filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS + + +def create_new_submission(db_session, track_class_id, language, + name, enrollment): + submission = Submission( + exercise_name=name, + exercise_language=language + ) + submission.enrollment = enrollment + return submission + + +def create_submissions_blueprint(db_session, request, bucket): + submissions = Blueprint('submissions', __name__) + + @submissions.route('/', methods=['GET']) + @handle_validation_error + def post_new_submission(language, name): + # better if on authorization + print(request.header) + token = request.headers.get('authorization') + track_class_id = request.headers.get('track_class_id') + if not token: + return Response(response="AuthToken required in header", + status=401) + + known_language = Language.get(language) + if not known_language: + return Response(response="Unknown language", + status=404) + + expected_files = {'solution_file', 'test_coverage', + 'test_output', 'test_checksum'} + + received_files = {file for file in expected_files + if file in expected_files} + + if not (received_files >= expected_files): + return Response("There are files missing", + status=400) + + user = db_session.query(User)\ + .filter_by(token=token)\ + .first() + + if not user: + return Response(response="Invalid token supplied", + status=403) + + enrollment = db_session.query(Enrollment)\ + .filter_by(user=user, + track_class_id=track_class_id) + + if not enrollment: + return Response(response="You are not enrolled in this track", + status=400) + + submission = db_session.query(Submission)\ + .filter_by(exercise_name=name, + exercise_language=known_language, + user=user)\ + .first() + + if not submission: + submission = create_new_submission(db_session, track_class_id, + known_language, name, + enrollment) + + # Upload to bucket + # Bucket_Uri to each attempt + # bucket-submission/// + attempt_number = len(submission.attempts) + 1 + blob_prefix_uri = (f"{bucket.name}/{user.email}/{submission.id}\ + /{attempt_number}") + uploaded_blobs = upload_submission_files(bucket, blob_prefix_uri, + request.files) + + attempt = Attempt( + solution_file=uploaded_blobs["solution_file"], + test_coverage=uploaded_blobs["test_coverage"], + test_output=uploaded_blobs["test_output"], + test_checksum=uploaded_blobs["test_checksum"] + ) + + submission.attempts.append(attempt) + db_session.add(submission, attempt) + db_session.commit() + + return Response('Exercise solution submited', status=201) + return submissions diff --git a/server/views/tracks.py b/server/views/tracks.py new file mode 100644 index 0000000..d09fe9b --- /dev/null +++ b/server/views/tracks.py @@ -0,0 +1,99 @@ +from flask import Blueprint, Response +from models import Track, TrackClassAssociation, Enrollment +from server.utils import (extract_token, extract_user, extract_class, + extract_track, handle_validation_error) + + +def pluck_first_column(results): + return [r for (r, *k) in results] + + +def create_track_class(existing_class, existing_track): + track_class = TrackClassAssociation() + track_class.class_ref = existing_class + track_class.track = existing_track + return track_class + + +def get_new_enrollments(track_class, db_session): + existing_class = track_class.class_ref + students = existing_class.students + already_enrolled, = pluck_first_column( + db_session.query(Enrollment) + .filter_by(track_class_id=track_class.id) + .with_entities(Enrollment.user) + .all() + ) + + enrollments = [Enrollment(user=student.email, + track_class_id=track_class.id) + for student in students + if student.email not in already_enrolled] + return enrollments + + +def create_tracks_blueprint(db_session, request): + tracks = Blueprint('tracks', __name__) + + @tracks.route('/', methods=['POST']) + @handle_validation_error + def create_track(track_name): + token = extract_token(request) + user = extract_user(db_session, token) + + if not user.is_teacher: + return Response(response="Only teachers can create tracks.", + status=403) + + existing_track = db_session.query(Track)\ + .filter_by(owner=user.email, name=track_name)\ + .first() + + if existing_track: + return Response( + response="You already have a track with that track_name.", + status=409 + ) + + new_track = Track(name=track_name) + + user.tracks_owned.append(new_track) + db_session.add(user) + db_session.flush() + db_session.add(new_track) + + db_session.commit() + + return Response(status=201) + + @tracks.route('//classes/', methods=['POST']) + @handle_validation_error + def enroll_class_track(track_name, class_name): + token = extract_token(request) + user = extract_user(db_session, token) + if not user.is_teacher: + return Response( + response="Only teachers can enroll classes in tracks.", + status=403 + ) + + existing_class = extract_class(class_name, db_session, user) + existing_track = extract_track(track_name, db_session, user) + existing_track_class = db_session.query(TrackClassAssociation)\ + .filter_by(class_ref=existing_class, track=existing_track)\ + .first() + if not existing_track_class: + existing_track_class = create_track_class(existing_class, + existing_track) + db_session.add(existing_track_class) + db_session.flush() + + enrollments = get_new_enrollments(existing_track_class, db_session) + db_session.add_all(enrollments) + db_session.flush() + existing_track_class.enrollments.extend(enrollments) + db_session.merge(existing_track_class) + db_session.commit() + return Response(status=201) + + return tracks diff --git a/server/views/users.py b/server/views/users.py index 38c20b3..78eab86 100644 --- a/server/views/users.py +++ b/server/views/users.py @@ -1,8 +1,10 @@ from datetime import datetime from flask import Blueprint, jsonify, session, Response import requests -from models import User +from models import User, UserClassAssociation from uuid import uuid4 +from server.utils import (extract_token, extract_user, + extract_class_from_token, handle_validation_error) def fetch_access_token(code, github_config): @@ -123,4 +125,5 @@ def authenticate_user(code): } return jsonify(response) + return users diff --git a/settings.toml b/settings.toml index 97c8b25..f976d2f 100644 --- a/settings.toml +++ b/settings.toml @@ -3,3 +3,4 @@ ENV="development" DB_API="postgresql+psycopg2" DB_NAME="postgres" BUCKET_EXERCISES="sharpener-exercises" +BUCKET_SUBMISSIONS="sharpener-submissions" diff --git a/sharpener-admin.py b/sharpener-admin.py index ba00c99..11b5eac 100755 --- a/sharpener-admin.py +++ b/sharpener-admin.py @@ -38,8 +38,11 @@ echo=is_development, production=is_production) +storage_client = storage.Client() +bucket_submissions = storage_client.bucket(settings.BUCKET_SUBMISSIONS) app = create_app(db_session, github_config, settings.FLASK_SECRET, - debug=is_development) + bucket_submissions, debug=is_development) +app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 if local: args = docopt(__doc__) @@ -53,7 +56,6 @@ production=is_production) if args["populate"]: - storage_client = storage.Client() exercism.populate_python(db_session, storage_client, settings.BUCKET_EXERCISES) From dcb81d665f4e577d4295688395e4ef6d1c515c8b Mon Sep 17 00:00:00 2001 From: Pedro Morello Abbud Date: Tue, 29 Oct 2019 18:54:42 -0300 Subject: [PATCH 09/11] Accepting attempts on submission --- models/attempt.py | 2 +- models/submission.py | 9 +++-- models/submission_state.py | 2 +- server/utils/__init__.py | 5 ++- server/utils/validators.py | 25 ++++++++---- server/views/submissions.py | 77 ++++++++++--------------------------- server/views/tracks.py | 6 +-- 7 files changed, 51 insertions(+), 75 deletions(-) diff --git a/models/attempt.py b/models/attempt.py index 368f936..804e4eb 100644 --- a/models/attempt.py +++ b/models/attempt.py @@ -14,7 +14,7 @@ class Attempt(Base): solution_file = Column(String, nullable=False) test_coverage = Column(String, nullable=False) - test_ouput = Column(String, nullable=False) + test_output = Column(String, nullable=False) test_checksum = Column(String, nullable=False) submitted_at = Column(DateTime, default=datetime.utcnow, nullable=False) diff --git a/models/submission.py b/models/submission.py index 52684a5..ee36790 100644 --- a/models/submission.py +++ b/models/submission.py @@ -1,8 +1,9 @@ +from uuid import uuid4 from .base import Base from sqlalchemy import (Column, String, Integer, ForeignKeyConstraint, UniqueConstraint, Enum) from sqlalchemy.orm import relationship -from .submission_state import SubmissionState +from .submission_state import SubmissionStatus from .language import Language @@ -28,8 +29,10 @@ class Submission(Base): exercise_language = Column('exercise_language', Enum(Language)) exercise = relationship('Exercise') attempts = relationship('Attempt') - state = Column('state', Enum(SubmissionState), - default=SubmissionState('pending')) + submission_token = Column('submission_token', String, nullable=False, + default=uuid4()) + status = Column('status', Enum(SubmissionStatus), + default=SubmissionStatus('pending')) def __repr__(self): return ("/', methods=['GET']) + @submissions.route('/', methods=['POST']) @handle_validation_error - def post_new_submission(language, name): - # better if on authorization - print(request.header) - token = request.headers.get('authorization') - track_class_id = request.headers.get('track_class_id') - if not token: - return Response(response="AuthToken required in header", - status=401) - - known_language = Language.get(language) - if not known_language: - return Response(response="Unknown language", - status=404) + def post_new_submission(submission_token): + token = extract_token(request) + user = extract_user(db_session, token) + submission = extract_submission(submission_token, db_session) expected_files = {'solution_file', 'test_coverage', 'test_output', 'test_checksum'} - received_files = {file for file in expected_files + received_files = {file for file in request.files if file in expected_files} if not (received_files >= expected_files): - return Response("There are files missing", - status=400) - - user = db_session.query(User)\ - .filter_by(token=token)\ - .first() - - if not user: - return Response(response="Invalid token supplied", - status=403) - - enrollment = db_session.query(Enrollment)\ - .filter_by(user=user, - track_class_id=track_class_id) - - if not enrollment: - return Response(response="You are not enrolled in this track", + missing_files = ", ".join(expected_files - received_files) + return Response(f"There are files missing: {missing_files}", status=400) - submission = db_session.query(Submission)\ - .filter_by(exercise_name=name, - exercise_language=known_language, - user=user)\ - .first() - - if not submission: - submission = create_new_submission(db_session, track_class_id, - known_language, name, - enrollment) - - # Upload to bucket - # Bucket_Uri to each attempt - # bucket-submission/// attempt_number = len(submission.attempts) + 1 - blob_prefix_uri = (f"{bucket.name}/{user.email}/{submission.id}\ - /{attempt_number}") + blob_prefix_uri = (f"{user.email}/{submission.exercise_language.name}/" + f"{submission.exercise_name}" + f"/{attempt_number}") uploaded_blobs = upload_submission_files(bucket, blob_prefix_uri, request.files) @@ -103,7 +65,8 @@ def post_new_submission(language, name): solution_file=uploaded_blobs["solution_file"], test_coverage=uploaded_blobs["test_coverage"], test_output=uploaded_blobs["test_output"], - test_checksum=uploaded_blobs["test_checksum"] + test_checksum=uploaded_blobs["test_checksum"], + attempt_number=attempt_number ) submission.attempts.append(attempt) diff --git a/server/views/tracks.py b/server/views/tracks.py index d09fe9b..c9e1e8f 100644 --- a/server/views/tracks.py +++ b/server/views/tracks.py @@ -72,10 +72,8 @@ def enroll_class_track(track_name, class_name): token = extract_token(request) user = extract_user(db_session, token) if not user.is_teacher: - return Response( - response="Only teachers can enroll classes in tracks.", - status=403 - ) + return Response(response="Only teachers can enroll classes in tracks.", + status=403) existing_class = extract_class(class_name, db_session, user) existing_track = extract_track(track_name, db_session, user) From cbd5a89f0a6163f457fc38a3735c89f3e2c314a9 Mon Sep 17 00:00:00 2001 From: Pedro Morello Abbud Date: Thu, 31 Oct 2019 07:51:34 -0300 Subject: [PATCH 10/11] Get classes route and small changes --- app.yaml | 2 +- models/classroom.py | 6 +++- models/user.py | 2 +- server/static/js/2.c9ea58f0.chunk.js | 2 -- server/static/js/2.c9ea58f0.chunk.js.map | 1 - server/static/js/2.ee937940.chunk.js | 2 ++ server/static/js/2.ee937940.chunk.js.map | 1 + server/static/js/main.5369998a.chunk.js | 2 ++ server/static/js/main.5369998a.chunk.js.map | 1 + server/static/js/main.d13865bf.chunk.js | 2 -- server/static/js/main.d13865bf.chunk.js.map | 1 - server/templates/index.html | 8 +++--- server/views/classes.py | 31 ++++++++++++++++++++- 13 files changed, 47 insertions(+), 14 deletions(-) delete mode 100644 server/static/js/2.c9ea58f0.chunk.js delete mode 100644 server/static/js/2.c9ea58f0.chunk.js.map create mode 100644 server/static/js/2.ee937940.chunk.js create mode 100644 server/static/js/2.ee937940.chunk.js.map create mode 100644 server/static/js/main.5369998a.chunk.js create mode 100644 server/static/js/main.5369998a.chunk.js.map delete mode 100644 server/static/js/main.d13865bf.chunk.js delete mode 100644 server/static/js/main.d13865bf.chunk.js.map diff --git a/app.yaml b/app.yaml index 6a3fdd5..c8989e7 100644 --- a/app.yaml +++ b/app.yaml @@ -1,5 +1,5 @@ runtime: python37 - +env:flex entrypoint: uwsgi --http-socket :8080 --wsgi-file sharpener-admin.py --callable app liveness_check: diff --git a/models/classroom.py b/models/classroom.py index 2b9ad5b..b47e4c3 100644 --- a/models/classroom.py +++ b/models/classroom.py @@ -1,5 +1,7 @@ +from datetime import datetime from .base import Base -from sqlalchemy import Column, String, Integer, ForeignKey, UniqueConstraint +from sqlalchemy import (Column, String, Integer, ForeignKey, UniqueConstraint, + DateTime) from sqlalchemy.orm import relationship @@ -11,6 +13,8 @@ class Class(Base): owner = Column(String, ForeignKey('users.email')) name = Column(String, nullable=False) invite_token = Column(String, nullable=False) + created_at = Column(DateTime, default=datetime.utcnow, + nullable=False) students = relationship("User", secondary='users_classes_association', back_populates="classes") tracks = relationship("Track", secondary='tracks_classes_association', diff --git a/models/user.py b/models/user.py index 26e354f..88bf24c 100644 --- a/models/user.py +++ b/models/user.py @@ -10,7 +10,7 @@ class User(Base): email = Column(String, primary_key=True) name = Column(String, nullable=False) nickname = Column(String, nullable=False) - is_teacher = Column(Boolean, default=False) + is_teacher = Column(Boolean, default=True) token = Column(String, nullable=False) github_token = Column(String, nullable=False) avatar_url = Column(String, nullable=True) diff --git a/server/static/js/2.c9ea58f0.chunk.js b/server/static/js/2.c9ea58f0.chunk.js deleted file mode 100644 index 169fa12..0000000 --- a/server/static/js/2.c9ea58f0.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(this["webpackJsonpsharpener-frontend"]=this["webpackJsonpsharpener-frontend"]||[]).push([[2],[function(e,t,n){"use strict";e.exports=n(33)},function(e,t,n){"use strict";var r=n(16),o=n(40),i=Object.prototype.toString;function a(e){return"[object Array]"===i.call(e)}function u(e){return null!==e&&"object"===typeof e}function l(e){return"[object Function]"===i.call(e)}function c(e,t){if(null!==e&&"undefined"!==typeof e)if("object"!==typeof e&&(e=[e]),a(e))for(var n=0,r=e.length;n=0||(o[n]=e[n]);return o}var v=n(14),g=n.n(v),b=n(2),w=n.n(b),x=n(13),E=[],k=[null,null];function S(e,t){var n=e[1];return[t.payload,n+1]}var T=function(){return[null,0]},C="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement?r.useLayoutEffect:r.useEffect;function P(e,t){void 0===t&&(t={});var n=t,i=n.getDisplayName,a=void 0===i?function(e){return"ConnectAdvanced("+e+")"}:i,l=n.methodName,c=void 0===l?"connectAdvanced":l,s=n.renderCountProp,f=void 0===s?void 0:s,p=n.shouldHandleStateChanges,h=void 0===p||p,v=n.storeKey,b=void 0===v?"store":v,P=n.withRef,_=void 0!==P&&P,O=n.forwardRef,N=void 0!==O&&O,R=n.context,j=void 0===R?u:R,M=y(n,["getDisplayName","methodName","renderCountProp","shouldHandleStateChanges","storeKey","withRef","forwardRef","context"]);w()(void 0===f,"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension"),w()(!_,"withRef is removed. To access the wrapped instance, use a ref on the connected component");w()("store"===b,"storeKey has been removed and does not do anything. To use a custom Redux store for specific components, create a custom React context with React.createContext(), and pass the context object to React Redux's Provider and specific components like: . You may also pass a {context : MyContext} option to connect");var L=j;return function(t){var n=t.displayName||t.name||"Component",i=a(n),u=m({},M,{getDisplayName:a,methodName:c,renderCountProp:f,shouldHandleStateChanges:h,storeKey:b,displayName:i,wrappedComponentName:n,WrappedComponent:t}),l=M.pure;var s=l?r.useMemo:function(e){return e()};function p(n){var a=Object(r.useMemo)((function(){var e=n.forwardedRef,t=y(n,["forwardedRef"]);return[n.context,e,t]}),[n]),l=a[0],c=a[1],f=a[2],p=Object(r.useMemo)((function(){return l&&l.Consumer&&Object(x.isContextConsumer)(o.a.createElement(l.Consumer,null))?l:L}),[l,L]),v=Object(r.useContext)(p),g=Boolean(n.store),b=Boolean(v)&&Boolean(v.store);w()(g||b,'Could not find "store" in the context of "'+i+'". Either wrap the root component in a , or pass a custom React context provider to and the corresponding React context consumer to '+i+" in connect options.");var P=n.store||v.store,_=Object(r.useMemo)((function(){return function(t){return e(t.dispatch,u)}(P)}),[P]),O=Object(r.useMemo)((function(){if(!h)return k;var e=new d(P,g?null:v.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]}),[P,g,v]),N=O[0],R=O[1],j=Object(r.useMemo)((function(){return g?v:m({},v,{subscription:N})}),[g,v,N]),M=Object(r.useReducer)(S,E,T),U=M[0][0],A=M[1];if(U&&U.error)throw U.error;var I=Object(r.useRef)(),D=Object(r.useRef)(f),z=Object(r.useRef)(),F=Object(r.useRef)(!1),B=s((function(){return z.current&&f===D.current?z.current:_(P.getState(),f)}),[P,U,f]);C((function(){D.current=f,I.current=B,F.current=!1,z.current&&(z.current=null,R())})),C((function(){if(h){var e=!1,t=null,n=function(){if(!e){var n,r,o=P.getState();try{n=_(o,D.current)}catch(i){r=i,t=i}r||(t=null),n===I.current?F.current||R():(I.current=n,z.current=n,F.current=!0,A({type:"STORE_UPDATED",payload:{latestStoreState:o,error:r}}))}};N.onStateChange=n,N.trySubscribe(),n();return function(){if(e=!0,N.tryUnsubscribe(),N.onStateChange=null,t)throw t}}}),[P,N,_]);var $=Object(r.useMemo)((function(){return o.a.createElement(t,m({},B,{ref:c}))}),[c,t,B]);return Object(r.useMemo)((function(){return h?o.a.createElement(p.Provider,{value:j},$):$}),[p,$,j])}var v=l?o.a.memo(p):p;if(v.WrappedComponent=t,v.displayName=i,N){var P=o.a.forwardRef((function(e,t){return o.a.createElement(v,m({},e,{forwardedRef:t}))}));return P.displayName=i,P.WrappedComponent=t,g()(P,t)}return g()(v,t)}}var _=Object.prototype.hasOwnProperty;function O(e,t){return e===t?0!==e||0!==t||1/e===1/t:e!==e&&t!==t}function N(e,t){if(O(e,t))return!0;if("object"!==typeof e||null===e||"object"!==typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=0;o=0;r--){var o=t[r](e);if(o)return o}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function q(e,t){return e===t}var H=function(e){var t=void 0===e?{}:e,n=t.connectHOC,r=void 0===n?P:n,o=t.mapStateToPropsFactories,i=void 0===o?A:o,a=t.mapDispatchToPropsFactories,u=void 0===a?U:a,l=t.mergePropsFactories,c=void 0===l?D:l,s=t.selectorFactory,f=void 0===s?B:s;return function(e,t,n,o){void 0===o&&(o={});var a=o,l=a.pure,s=void 0===l||l,d=a.areStatesEqual,p=void 0===d?q:d,h=a.areOwnPropsEqual,v=void 0===h?N:h,g=a.areStatePropsEqual,b=void 0===g?N:g,w=a.areMergedPropsEqual,x=void 0===w?N:w,E=y(a,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),k=$(e,i,"mapStateToProps"),S=$(t,u,"mapDispatchToProps"),T=$(n,c,"mergeProps");return r(f,m({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:k,initMapDispatchToProps:S,initMergeProps:T,pure:s,areStatesEqual:p,areOwnPropsEqual:v,areStatePropsEqual:b,areMergedPropsEqual:x},E))}}();function W(){var e=Object(r.useContext)(u);return w()(e,"could not find react-redux context value; please ensure the component is wrapped in a "),e}function V(e){void 0===e&&(e=u);var t=e===u?W:function(){return Object(r.useContext)(e)};return function(){return t().store}}var Q=V();!function(e){void 0===e&&(e=u);var t=e===u?Q:V(e)}();var K="undefined"!==typeof window?r.useLayoutEffect:r.useEffect,Y=function(e,t){return e===t};!function(e){void 0===e&&(e=u);var t=e===u?W:function(){return Object(r.useContext)(e)}}();var X,G=n(9);n.d(t,"a",(function(){return h})),n.d(t,"b",(function(){return H})),X=G.unstable_batchedUpdates,l=X},function(e,t,n){"use strict";var r=n(28),o=n.n(r),i=n(29),a=n.n(i),u=n(4),l=n(10),c=function(e){return Object.keys(e).map((function(t){return e[t]}))},s=Object.assign||function(e){for(var t=1;t3&&void 0!==arguments[3]?arguments[3]:oe().basename,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:oe().strict,i=e.split("?"),a=i[1],d=a&&n&&n.parse(a),h=c(t),m=Object.keys(t);e=r?Object(u.stripBasename)(i[0],r):i[0];for(var y=0,v=void 0,g=void 0;!v&&y1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(t).reduce((function(n,r){var o=t[r];return n[r]=$(o,e,r),n}),{})},$=function(e,t,n){return"function"===typeof t.toPath?t.toPath(e,n):"string"===typeof e?e.includes("/")?e.split("/"):!0===t.capitalizedWords?e.replace(/ /g,"-").toLowerCase():e:"number"===typeof e?e:void 0},q=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:e,r=arguments[1],o=(t=n.routesMap||t)[r.type];if(r.type===ie||!(!o||r.error||"string"!==typeof o&&!o.path||r.meta.location.current.pathname===n.pathname&&r.meta.location.current.search===n.search&&"load"!==r.meta.location.kind)){var i=r.meta.location.current.query,a=r.meta.location.current.search;return Y({pathname:r.meta.location.current.pathname,type:r.type,payload:Y({},r.payload)},i&&{query:i,search:a},{prev:r.meta.location.prev,kind:r.meta.location.kind,history:r.meta.location.history,hasSSR:n.hasSSR,routesMap:t})}return!o||r.error||"string"!==typeof o&&!o.path||r.meta.location.current.pathname!==n.pathname||r.meta.location.current.search!==n.search||r.meta.location.kind===n.kind?r.type===ae?Y({},n,{routesMap:Y({},n.routesMap,r.payload.routes)}):n:Y({},n,{kind:r.meta.location.kind})}},G=function(e,t,n,r,o,i){return Y({search:e.split("?")[1],pathname:e.split("?")[0],type:n,payload:r},t,{prev:{pathname:"",type:"",payload:{}},kind:void 0,history:y(i),hasSSR:!!b()||void 0,routesMap:o})},J="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Z=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};var n=t.notFoundPath,r=void 0===n?"/not-found":n,i=t.scrollTop,l=void 0!==i&&i,c=t.location,s=t.title,f=t.onBeforeChange,p=t.onAfterChange,h=t.onBackNext,m=t.restoreScroll,P=t.initialDispatch,_=void 0===P||P,O=t.querySerializer,R=t.displayConfirmLeave,I=t.extra;ne=t,U(R),t.basename&&(t.basename=Object(u.stripTrailingSlash)(Object(u.addLeadingSlash)(t.basename)));var D=C&&!0,z=D?o.a:a.a,F=t.createHistory||z,B=t.initialEntries||"/",$="string"===typeof B?[B]:B,q=F({basename:t.basename,initialEntries:$,getUserConfirmation:L}),W=T(q.location),V={pathname:"",type:"",payload:{}},Q="function"===typeof c?c:c?function(e){return e[c]}:function(e){return e.location},Y="function"===typeof s?s:s?function(e){return e[s]}:function(e){return e.title},ee=m&&m(q),re=d(W,e,O),oe=re.type,ue=re.payload,le=re.meta,ce=G(W,le,oe,ue,e,q),se=ce,fe={},de=1,pe=X(ce,e),he={action:re,extra:I},me=S(e,Q,he),ye=function(){return Oe&&Oe()},ve=E(),ge=void 0,be=void 0,we=void 0,xe=void 0,Ee=void 0;t.navigators&&(ge=t.navigators.navigators,be=t.navigators.patchNavigators,we=t.navigators.actionToNavigation,xe=t.navigators.navigationToAction,be(ge));var ke=function(t){return function(n){return function(o){if(o.error)return n(o);if(o.type===ae){var i=Q(t.getState()).type,a=e[i];e=Z({},e,o.payload.routes);var u=n(o),l=e[i];return a!==l&&(null!==Ne&&N(),"object"===("undefined"===typeof l?"undefined":J(l))&&l.confirmLeave&&(Ne=j(l.confirmLeave,t,Q,q,O,(function(){return Ne=null})))),u}var c=void 0;if(ge&&0===o.type.indexOf("Navigation/")){var s=xe(ge,t,e,o);c=s.navigationAction,o=s.action}var f=e[o.type];if("object"===("undefined"===typeof f?"undefined":J(f))&&!f.path){var d=n(o);return k(t.dispatch,t.getState,f,Q,{action:d,extra:I}),d}o.type!==ie||v(o)?f&&!v(o)&&(o=H(o,e,V,q,r,O)):o=K(o,Q(t.getState()),V,0,r),ge&&(o=we(ge,o,c,f));var p=void 0;if((f||o.type===ie)&&o.meta&&(p=Se(t,q,o)),!p){var h=n(o);return(f||o.type===ie)&&Te(t,f,h),h}}}},Se=function(e,t,n){var r=n.meta.location;if(Ne){var o=Ne(r.current);if(o)return M(o,e,n),!0;Ne=null}if(f){var i=void 0,a={action:n,extra:I};if(f((function(t){g(t)&&(i=!0,V=r.current,T(r.current)===W||b()||(Ee="onBeforeChange"));return e.dispatch(t)}),e.getState,a),i)return!0}se=Q(e.getState()),V=r.current,de=t.length,Ce(r,t),w()&&(r.history=y(t))},Te=function(e,t,n){var r=e.dispatch,o=e.getState(),i=Q(o).kind,a=Y(o),u={action:n,extra:I};if(fe=Q(o),"object"===("undefined"===typeof t?"undefined":J(t))){var c=!1;if(k((function(t){return g(t)&&(c=!0),e.dispatch(t)}),e.getState,t,Q,u),c)return}p&&p(r,e.getState,u),b()||(i&&("function"===typeof h&&/back|next|pop/.test(i)&&h(r,e.getState,u),setTimeout((function(){if(x(ve,a),l)return window.scrollTo(0,0);te(!1)}))),"object"===("undefined"===typeof t?"undefined":J(t))&&t.confirmLeave&&(Ne=j(t.confirmLeave,e,Q,q,O,(function(){return Ne=null}))))},Ce=function(e,t){var n=T(e.current);if(n!==W){W=n;var r=e.kind;if(!(r&&/back|next|pop|stealth/.test(r)))t["redirect"===r&&"onBeforeChange"!==Ee?"replace":"push"](W)}},Pe=function(t){return function(n,r,o){!b()&&r&&Q(r)&&(Q(r).routesMap=e);var i=t(n,r,o),a=i.getState(),u=a&&Q(a);if(!u||!u.pathname)throw new Error("[redux-first-router] you must provide the key of the location\n reducer state and properly assigned the location reducer to that key.");if(q.listen(_e.bind(null,i)),!u.hasSSR||b())Oe=function(){var t=A(W,e,V,q,"load",O);i.dispatch(t)},!1!==_&&Oe();else{V=u;var l=e[u.type];"object"===("undefined"===typeof l?"undefined":J(l))&&l.confirmLeave&&(Ne=j(l.confirmLeave,i,Q,q,O,(function(){return Ne=null})))}return b()||setTimeout((function(){return te(!1)})),i}},_e=function(t,n,r){var o=T(n);if(o!==W){var i=A(o,e,V,q,("REPLACE"===r?"redirect":r).toLowerCase(),O,W,de);W=o,t.dispatch(i)}};q,ee,Q;var Oe=void 0,Ne=null;return te=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];ee&&(!e&&ee.manual||ee.updateScroll(se,fe))},{reducer:pe,middleware:ke,enhancer:Pe,thunk:me,initialDispatch:ye,_middlewareAttemptChangeUrl:Ce,_afterRouteChange:Te,_historyAttemptDispatchAction:_e,windowDocument:ve,history:q}},te=void 0,ne=void 0,re=function(){return te&&te()},oe=function(){return ne||{}};n.d(t,"b",(function(){return ie})),n.d(t,"a",(function(){return ae})),n.d(t,"c",(function(){return ee})),n.d(t,"d",(function(){return oe}));var ie="@@redux-first-router/NOT_FOUND",ae="@@redux-first-router/ADD_ROUTES"},function(e,t,n){"use strict";!function e(){if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}}(),e.exports=n(34)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.compileParamsToPath=t.compilePath=void 0;var r,o=n(62),i=(r=o)&&r.__esModule?r:{default:r};function a(e){return Array.isArray(e)?e:Array.from(e)}var u={},l=0,c=t.compilePath=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.end,r=void 0===n||n,o=t.strict,a=void 0!==o&&o,c=(r?"t":"f")+(a?"t":"f"),s=u[c]||(u[c]={});if(s[e])return s[e];var f=[],d=(0,i.default)(e,f,t),p={re:d,keys:f};return l<1e4&&(s[e]=p,l++),p},s={};t.compileParamsToPath=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=s[e]||i.default.compile(e);return s[e]=n,n(t)};t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"===typeof t&&(t={path:t,exact:!1,strict:!1});var n=t,r=n.path,o=void 0===r?"/":r,i=n.exact,u=void 0!==i&&i,l=n.strict,s=void 0!==l&&l,f=c(o,{end:u,strict:s}),d=f.re,p=f.keys,h=d.exec(e);if(!h)return null;var m=a(h),y=m[0],v=m.slice(1),g=e===y;return u&&!g?null:{path:o,url:"/"===o&&""===y?"/":y,isExact:g,params:p.reduce((function(e,t,n){return e[t.name]=v[n],e}),{})}}},function(e,t,n){"use strict";var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(o){return!1}}()?Object.assign:function(e,t){for(var n,u,l=a(e),c=1;c=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(e){u.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){u.headers[e]=r.merge(i)})),e.exports=u}).call(this,n(45))},function(e,t,n){"use strict";var r=n(1),o=n(47),i=n(17),a=n(49),u=n(50),l=n(21);e.exports=function(e){return new Promise((function(t,c){var s=e.data,f=e.headers;r.isFormData(s)&&delete f["Content-Type"];var d=new XMLHttpRequest;if(e.auth){var p=e.auth.username||"",h=e.auth.password||"";f.Authorization="Basic "+btoa(p+":"+h)}if(d.open(e.method.toUpperCase(),i(e.url,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,d.onreadystatechange=function(){if(d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in d?a(d.getAllResponseHeaders()):null,r={data:e.responseType&&"text"!==e.responseType?d.response:d.responseText,status:d.status,statusText:d.statusText,headers:n,config:e,request:d};o(t,c,r),d=null}},d.onabort=function(){d&&(c(l("Request aborted",e,"ECONNABORTED",d)),d=null)},d.onerror=function(){c(l("Network Error",e,null,d)),d=null},d.ontimeout=function(){c(l("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED",d)),d=null},r.isStandardBrowserEnv()){var m=n(51),y=(e.withCredentials||u(e.url))&&e.xsrfCookieName?m.read(e.xsrfCookieName):void 0;y&&(f[e.xsrfHeaderName]=y)}if("setRequestHeader"in d&&r.forEach(f,(function(e,t){"undefined"===typeof s&&"content-type"===t.toLowerCase()?delete f[t]:d.setRequestHeader(t,e)})),e.withCredentials&&(d.withCredentials=!0),e.responseType)try{d.responseType=e.responseType}catch(v){if("json"!==e.responseType)throw v}"function"===typeof e.onDownloadProgress&&d.addEventListener("progress",e.onDownloadProgress),"function"===typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){d&&(d.abort(),c(e),d=null)})),void 0===s&&(s=null),d.send(s)}))}},function(e,t,n){"use strict";var r=n(48);e.exports=function(e,t,n,o,i){var a=new Error(e);return r(a,t,n,o,i)}},function(e,t,n){"use strict";var r=n(1);e.exports=function(e,t){t=t||{};var n={};return r.forEach(["url","method","params","data"],(function(e){"undefined"!==typeof t[e]&&(n[e]=t[e])})),r.forEach(["headers","auth","proxy"],(function(o){r.isObject(t[o])?n[o]=r.deepMerge(e[o],t[o]):"undefined"!==typeof t[o]?n[o]=t[o]:r.isObject(e[o])?n[o]=r.deepMerge(e[o]):"undefined"!==typeof e[o]&&(n[o]=e[o])})),r.forEach(["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"],(function(r){"undefined"!==typeof t[r]?n[r]=t[r]:"undefined"!==typeof e[r]&&(n[r]=e[r])})),n}},function(e,t,n){"use strict";function r(e){this.message=e}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,e.exports=r},function(e,t,n){"use strict";t.__esModule=!0,t.locationsAreEqual=t.createLocation=void 0;var r=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};(0,a.default)(s.canUseDOM,"Browser history needs a DOM");var t=window.history,n=(0,s.supportsHistory)(),f=!(0,s.supportsPopStateOnHashChange)(),p=e.forceRefresh,h=void 0!==p&&p,m=e.getUserConfirmation,y=void 0===m?s.getConfirmation:m,v=e.keyLength,g=void 0===v?6:v,b=e.basename?(0,l.stripTrailingSlash)((0,l.addLeadingSlash)(e.basename)):"",w=function(e){var t=e||{},n=t.key,r=t.state,o=window.location,a=o.pathname+o.search+o.hash;return(0,i.default)(!b||(0,l.hasBasename)(a,b),'You are attempting to use a basename on a page whose URL path does not begin with the basename. Expected path "'+a+'" to begin with "'+b+'".'),b&&(a=(0,l.stripBasename)(a,b)),(0,u.createLocation)(a,r,n)},x=function(){return Math.random().toString(36).substr(2,g)},E=(0,c.default)(),k=function(e){o($,e),$.length=t.length,E.notifyListeners($.location,$.action)},S=function(e){(0,s.isExtraneousPopstateEvent)(e)||P(w(e.state))},T=function(){P(w(d()))},C=!1,P=function(e){if(C)C=!1,k();else{E.confirmTransitionTo(e,"POP",y,(function(t){t?k({action:"POP",location:e}):_(e)}))}},_=function(e){var t=$.location,n=N.indexOf(t.key);-1===n&&(n=0);var r=N.indexOf(e.key);-1===r&&(r=0);var o=n-r;o&&(C=!0,L(o))},O=w(d()),N=[O.key],R=function(e){return b+(0,l.createPath)(e)},j=function(e,o){(0,i.default)(!("object"===("undefined"===typeof e?"undefined":r(e))&&void 0!==e.state&&void 0!==o),"You should avoid providing a 2nd state argument to push when the 1st argument is a location-like object that already has state; it is ignored");var a=(0,u.createLocation)(e,o,x(),$.location);E.confirmTransitionTo(a,"PUSH",y,(function(e){if(e){var r=R(a),o=a.key,u=a.state;if(n)if(t.pushState({key:o,state:u},null,r),h)window.location.href=r;else{var l=N.indexOf($.location.key),c=N.slice(0,-1===l?0:l+1);c.push(a.key),N=c,k({action:"PUSH",location:a})}else(0,i.default)(void 0===u,"Browser history cannot push state in browsers that do not support HTML5 history"),window.location.href=r}}))},M=function(e,o){(0,i.default)(!("object"===("undefined"===typeof e?"undefined":r(e))&&void 0!==e.state&&void 0!==o),"You should avoid providing a 2nd state argument to replace when the 1st argument is a location-like object that already has state; it is ignored");var a=(0,u.createLocation)(e,o,x(),$.location);E.confirmTransitionTo(a,"REPLACE",y,(function(e){if(e){var r=R(a),o=a.key,u=a.state;if(n)if(t.replaceState({key:o,state:u},null,r),h)window.location.replace(r);else{var l=N.indexOf($.location.key);-1!==l&&(N[l]=a.key),k({action:"REPLACE",location:a})}else(0,i.default)(void 0===u,"Browser history cannot replace state in browsers that do not support HTML5 history"),window.location.replace(r)}}))},L=function(e){t.go(e)},U=function(){return L(-1)},A=function(){return L(1)},I=0,D=function(e){1===(I+=e)?((0,s.addEventListener)(window,"popstate",S),f&&(0,s.addEventListener)(window,"hashchange",T)):0===I&&((0,s.removeEventListener)(window,"popstate",S),f&&(0,s.removeEventListener)(window,"hashchange",T))},z=!1,F=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=E.setPrompt(e);return z||(D(1),z=!0),function(){return z&&(z=!1,D(-1)),t()}},B=function(e){var t=E.appendListener(e);return D(1),function(){D(-1),t()}},$={length:t.length,action:"POP",location:O,createHref:R,push:j,replace:M,go:L,goBack:U,goForward:A,block:F,listen:B};return $}},function(e,t,n){"use strict";t.__esModule=!0;var r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.getUserConfirmation,n=void 0===t?p:t,a=e.initialEntries,s=void 0===a?["/"]:a,d=e.initialIndex,h=void 0===d?0:d,m=e.keyLength,y=void 0===m?6:m,v=e.basename?(0,u.stripTrailingSlash)((0,u.addLeadingSlash)(e.basename)):"",g=(0,c.default)(),b=function(e){o(M,e),M.length=M.entries.length,g.notifyListeners(M.location,M.action)},w=function(){return Math.random().toString(36).substr(2,y)},x=f(h,0,s.length-1),E=function(e){return v?(0,u.stripBasename)(e,v):e},k=s.map((function(e){return"string"===typeof e?(0,l.createLocation)(E(e),void 0,w()):(0,l.createLocation)(E(e),void 0,e.key||w())})),S=function(e){return v+(0,u.createPath)(e)},T=function(e,t){(0,i.default)(!("object"===("undefined"===typeof e?"undefined":r(e))&&void 0!==e.state&&void 0!==t),"You should avoid providing a 2nd state argument to push when the 1st argument is a location-like object that already has state; it is ignored");var o=(0,l.createLocation)(E(e),t,w(),M.location);g.confirmTransitionTo(o,"PUSH",n,(function(e){if(e){var t=M.index+1,n=M.entries.slice(0);n.length>t?n.splice(t,n.length-t,o):n.push(o),b({action:"PUSH",location:o,index:t,entries:n})}}))},C=function(e,t){(0,i.default)(!("object"===("undefined"===typeof e?"undefined":r(e))&&void 0!==e.state&&void 0!==t),"You should avoid providing a 2nd state argument to replace when the 1st argument is a location-like object that already has state; it is ignored");var o=(0,l.createLocation)(E(e),t,w(),M.location);g.confirmTransitionTo(o,"REPLACE",n,(function(e){e&&(M.entries[M.index]=o,b({action:"REPLACE",location:o}))}))},P=function(e){var t=f(M.index+e,0,M.entries.length-1),r=M.entries[t];g.confirmTransitionTo(r,"POP",n,(function(e){e?b({action:"POP",location:r,index:t}):b()}))},_=function(){return P(-1)},O=function(){return P(1)},N=function(e){var t=M.index+e;return t>=0&&t0&&void 0!==arguments[0]&&arguments[0];return g.setPrompt(e)},j=function(e){return g.appendListener(e)},M={length:k.length,action:"POP",location:k[x],index:x,entries:k,createHref:S,push:T,replace:C,go:P,goBack:_,goForward:O,canGo:N,block:R,listen:j};return M}},function(e,t,n){"use strict";var r=n(6).compose;t.__esModule=!0,t.composeWithDevTools="undefined"!==typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"===typeof arguments[0]?r:r.apply(null,arguments)},t.devToolsEnhancer="undefined"!==typeof window&&window.__REDUX_DEVTOOLS_EXTENSION__?window.__REDUX_DEVTOOLS_EXTENSION__:function(){return function(e){return e}}},function(e,t,n){"use strict";var r=n(64),o=n(11);function i(e,t){return t.encode?t.strict?r(e):encodeURIComponent(e):e}t.extract=function(e){return e.split("?")[1]||""},t.parse=function(e,t){var n=function(e){var t;switch(e.arrayFormat){case"index":return function(e,n,r){t=/\[(\d*)\]$/.exec(e),e=e.replace(/\[\d*\]$/,""),t?(void 0===r[e]&&(r[e]={}),r[e][t[1]]=n):r[e]=n};case"bracket":return function(e,n,r){t=/(\[\])$/.exec(e),e=e.replace(/\[\]$/,""),t?void 0!==r[e]?r[e]=[].concat(r[e],n):r[e]=[n]:r[e]=n};default:return function(e,t,n){void 0!==n[e]?n[e]=[].concat(n[e],t):n[e]=t}}}(t=o({arrayFormat:"none"},t)),r=Object.create(null);return"string"!==typeof e?r:(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach((function(e){var t=e.replace(/\+/g," ").split("="),o=t.shift(),i=t.length>0?t.join("="):void 0;i=void 0===i?null:decodeURIComponent(i),n(decodeURIComponent(o),i,r)})),Object.keys(r).sort().reduce((function(e,t){var n=r[t];return Boolean(n)&&"object"===typeof n&&!Array.isArray(n)?e[t]=function e(t){return Array.isArray(t)?t.sort():"object"===typeof t?e(Object.keys(t)).sort((function(e,t){return Number(e)-Number(t)})).map((function(e){return t[e]})):t}(n):e[t]=n,e}),Object.create(null))):r},t.stringify=function(e,t){var n=function(e){switch(e.arrayFormat){case"index":return function(t,n,r){return null===n?[i(t,e),"[",r,"]"].join(""):[i(t,e),"[",i(r,e),"]=",i(n,e)].join("")};case"bracket":return function(t,n){return null===n?i(t,e):[i(t,e),"[]=",i(n,e)].join("")};default:return function(t,n){return null===n?i(t,e):[i(t,e),"=",i(n,e)].join("")}}}(t=o({encode:!0,strict:!0,arrayFormat:"none"},t));return e?Object.keys(e).sort().map((function(r){var o=e[r];if(void 0===o)return"";if(null===o)return i(r,t);if(Array.isArray(o)){var a=[];return o.slice().forEach((function(e){void 0!==e&&a.push(n(r,e,a.length))})),a.join("&")}return i(r,t)+"="+i(o,t)})).filter((function(e){return e.length>0})).join("&"):""}},,function(e,t,n){"use strict";var r=n(11),o="function"===typeof Symbol&&Symbol.for,i=o?Symbol.for("react.element"):60103,a=o?Symbol.for("react.portal"):60106,u=o?Symbol.for("react.fragment"):60107,l=o?Symbol.for("react.strict_mode"):60108,c=o?Symbol.for("react.profiler"):60114,s=o?Symbol.for("react.provider"):60109,f=o?Symbol.for("react.context"):60110,d=o?Symbol.for("react.forward_ref"):60112,p=o?Symbol.for("react.suspense"):60113,h=o?Symbol.for("react.suspense_list"):60120,m=o?Symbol.for("react.memo"):60115,y=o?Symbol.for("react.lazy"):60116;o&&Symbol.for("react.fundamental"),o&&Symbol.for("react.responder"),o&&Symbol.for("react.scope");var v="function"===typeof Symbol&&Symbol.iterator;function g(e){for(var t=e.message,n="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;rM.length&&M.push(e)}function A(e,t,n){return null==e?0:function e(t,n,r,o){var u=typeof t;"undefined"!==u&&"boolean"!==u||(t=null);var l=!1;if(null===t)l=!0;else switch(u){case"string":case"number":l=!0;break;case"object":switch(t.$$typeof){case i:case a:l=!0}}if(l)return r(o,t,""===n?"."+I(t,0):n),1;if(l=0,n=""===n?".":n+":",Array.isArray(t))for(var c=0;c