diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 28cee3f..0000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.html linguist-detectable=false diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml deleted file mode 100644 index 52567b4..0000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,70 +0,0 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -# -# ******** NOTE ******** -# We have attempted to detect the languages in your repository. Please check -# the `language` matrix defined below to confirm you have the correct set of -# supported CodeQL languages. -# -name: "CodeQL" - -on: - push: - branches: [ master ] - pull_request: - # The branches below must be a subset of the branches above - branches: [ master ] - schedule: - - cron: '29 8 * * 1' - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: [ 'javascript', 'python' ] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] - # Learn more about CodeQL language support at https://git.io/codeql-language-support - - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v2 - - # ℹ️ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl - - # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/django.yml b/.github/workflows/django.yml deleted file mode 100644 index 2f3d7f4..0000000 --- a/.github/workflows/django.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: Django CI - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build: - - runs-on: ubuntu-latest - strategy: - max-parallel: 4 - matrix: - python-version: [3.7, 3.8, 3.9] - - steps: - - uses: actions/checkout@v3 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v3 - with: - python-version: ${{ matrix.python-version }} - - name: Install Dependencies - run: | - python -m pip install --upgrade pip - pip install -r requirements.txt - - name: Run Tests - run: | - python manage.py test diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 36eb9c1..0000000 --- a/.gitignore +++ /dev/null @@ -1,90 +0,0 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -*.py,cover -.hypothesis/ -.pytest_cache/ -cover/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - - - - - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow -__pypackages__/ - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ -cloneenv/ -static_cdn/ -staticfiles/ - - - -# PyCharm -# JetBrains specific template is maintainted in a separate JetBrains.gitignore that can -# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore -# and can be added to the global gitignore or merged into this file. For a more nuclear -# option (not recommended) you can uncomment the following to ignore the entire idea folder. -.idea/ \ No newline at end of file diff --git a/Functionalities.md b/Functionalities.md deleted file mode 100644 index 3be869f..0000000 --- a/Functionalities.md +++ /dev/null @@ -1,41 +0,0 @@ - -### Functionalities ### -Functionalities | Status -------------- | -------------| -Close Questions | Completed -Flag Question | Completed -Flag Answer | Completed -Offer Bounty | Completed -Question Timeline | Completed -Question Edit History | Completed -Answer Timeline | Completed -Answer Timeline | Completed -Ajax Tags Search | Completed -Ajax Users Search | Completed -Bronze Badges | Completed -Silver Badges | Completed -Graph for Reputation Representation | Completed -Track Badge | Completed -Track Tag | Completed -Bookmark Question | Completed -Reputation Track | Completed -Record Every Action | Completed -Live Markdown Review | Completed -Review Closed Questions | Completed -Review Low Quality Posts | Completed -Review First Questions | Completed -Review First Answers | Completed -Review Re-Open Question | Completed -Review Suggested Edits | Completed -Review Flagged Posts | Completed -Review Flagged Comments | Completed -Notifications | Completed -Privilege Notification | Completed -Moderator Tools | Completed -Privileges | Completed -Search Functionality | Completed -Storing Edit History | Completed - - -Some functionalities are still left to implement (like Forgot Password, Reset Password, Advanced Ban User)and I will implement some of them -in next commit or update \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 96c1b3e..0000000 --- a/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (C) 2022 Yawan-1 - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/Procfile b/Procfile deleted file mode 100644 index 5bdc8a3..0000000 --- a/Procfile +++ /dev/null @@ -1 +0,0 @@ -web: gunicorn main.wsgi --log-file - \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 463d391..0000000 --- a/README.md +++ /dev/null @@ -1,118 +0,0 @@ -## StackOver Flow - Clone - -GitHub stars -GitHub license -GitHub commit activity -![python3.x](https://img.shields.io/badge/python-3.x-brightgreen.svg) - -A Clone of StackOver Flow, I implemented almost every functionalities, -I just wanted to notice and show developers how StackOver-Flow works -, do tasks under the hood, how tasks and queries are executing behind the scenes. - -## Images - - - -## Demo - -Here is a working live demo : Demo (Removed from heroku because usage of so's production LOGO But I will be back with my own better design than them) - -## Technology Stack - -* [Python 3.7.x](https://www.python.org/) -* [Django Web Framework 3.2.x](https://www.djangoproject.com/) -* [Redis 5.x](https://pypi.org/project/django-redis/) -* [BootStrap 4](https://getbootstrap.com/) -* [Jquery 3](https://api.jquery.com/) -* [Postgresql 14](https://www.postgresql.org/) - - -## Functionalities - - -* 50+ Badges are implemented to award -* 20 Privileges to Earn -* Track Badges -* Reputation Awarding -* Privilege and Activity Notifications -* Live Q&A MarkDown Preview -* User @mentioning in comments -* Create and award Bounties -* Threading to keep track of the remaining days of Bounty. -* Reviewing Tasks : - * First Question Review - * First Answer Review - * Late Answer Review - * Review Flag Posts - * Review Flag Comments - * Review Close Votes - * Review ReOpen Votes - * Review Low-Quality Posts - * Review Suggested Edits - - -* And much more. You can find list of all functionalities Here - - -## Setup Commands - -Clone this repository - -1. Clone this project using -```` -$ git clone https://github.com/Yawan-1/StackOverFlow--Clone -```` - -For Postgresql usage*, you will need to download and install it. - -1. Download Postgresql from [this Link](https://www.postgresql.org/download/) -2. After installation, create Database in postgresql shell using these commands - 1. `CREATE DATABASE so_clone;` - 2. `CREATE USER so_clone_user WITH PASSWORD 'password';` - 3. `GRANT ALL PRIVILEGES ON DATABASE so_clone TO so_clone_user;` -3. and fill **database name** , **database password** and **user** in `settings.py` like - - ```` - DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql_psycopg2', - 'NAME': 'so_clone', - 'USER': 'so_clone_user', - 'PASSWORD': 'password', - 'HOST': 'localhost', - 'PORT': '', - } -} - ```` - -_*Note: You can skip postgresql installation if you're setting up this project using sqlite. simply just comment the postgresql configuration and uncomment sqlite configuration_ - - - -Now run make migrations command, running make migrations command will perform Data Migrations to save the "Badges" in the database. -then migrate to load the operations of Data Migrations in database. -```` -$ python manage.py makemigrations -$ python manage.py migrate -```` - -Then, simply run the server using this command. -```` -$ python manage.py runserver -```` - -## Deployment - -The following details and steps on how to deploy this application - -#### Heroku - -See detailed [Deploying django app on Heroku](https://devcenter.heroku.com/articles/django-app-configuration) - - -## Contributing - -If you have any question or issues, It may have bugs that i may have missed. You can create Pull request or you can also contact me. - - - diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 034e848..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,21 +0,0 @@ -# Security Policy - -## Supported Versions - -Use this section to tell people about which versions of your project are -currently being supported with security updates. - -| Version | Supported | -| ------- | ------------------ | -| 5.1.x | :white_check_mark: | -| 5.0.x | :x: | -| 4.0.x | :white_check_mark: | -| < 4.0 | :x: | - -## Reporting a Vulnerability - -Use this section to tell people how to report a vulnerability. - -Tell them where to go, how often they can expect to get an update on a -reported vulnerability, what to expect if the vulnerability is accepted or -declined, etc. diff --git a/Upcoming Features and Issues to Fix.md b/Upcoming Features and Issues to Fix.md deleted file mode 100644 index be4483a..0000000 --- a/Upcoming Features and Issues to Fix.md +++ /dev/null @@ -1,15 +0,0 @@ -## New Features to Implement in next update or commit. - -1). **Feature of Ban and UnBan User** - -2). **Better threading options or better background task handler instead of Threads** - -3). **Forget PassWord** - -4). **Reset Password** - -5). **Add tests** - -6). **Show popup of Available Tags to attach with the posts** - -7). **Adding Search Bar** diff --git a/db.sqlite3 b/db.sqlite3 new file mode 100644 index 0000000..1c4f10d Binary files /dev/null and b/db.sqlite3 differ diff --git a/help/apps.py b/help/apps.py deleted file mode 100644 index 1fff0bd..0000000 --- a/help/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class HelpConfig(AppConfig): - default_auto_field = 'django.db.models.BigAutoField' - name = 'help' diff --git a/help/urls.py b/help/urls.py deleted file mode 100644 index 8efe8cf..0000000 --- a/help/urls.py +++ /dev/null @@ -1,13 +0,0 @@ -from django.urls import path -from django.conf import settings -from django.conf.urls.static import static -from . import views - -app_name = 'help' - -urlpatterns = [ - - path('privileges/', views.privileges, name='privileges'), - - -] \ No newline at end of file diff --git a/help/views.py b/help/views.py deleted file mode 100644 index 7d02915..0000000 --- a/help/views.py +++ /dev/null @@ -1,69 +0,0 @@ -from django.shortcuts import render - -def privileges(request): - - context = {} - return render(request, 'help/privileges.html', context) - - - -def CreateWikiPosts_Privilege_Info_Page(request): - - return render(request, 'privileges/createWikiPosts.html', context) - -def RemoveNewUserRestric_Privilege_Info_Page(request): - - return render(request, 'privileges/RemoveNewUserRestric.html', context) - -def VoteUp_Privilege_Info_Page(request): - - return render(request, 'privileges/VoteUp.html', context) - -def FlagPost_Privilege_Info_Page(request): - - return render(request, 'privileges/FlagPost.html', context) - -def CommentEveryWhere_Privillege_Info_Page(request): - - return render(request, 'privileges/CommentEveryWhere.html', context) - -def SetBounty_Privilege_Info_Page(request): - - return render(request, 'privileges/SetBounty.html', context) - -def VoteDown_Privilege_Info_Page(request): - - return render(request, 'privileges/VoteDown.html', context) - -def ViewCloseVote_Privilege_Info_Page(request): - - return render(request, 'privileges/ViewCloseVote.html', context) - -def AccessReviewQueue_Privilege_Info_Page(request): - - return render(request, 'privileges/AccessReviewQueue.html', context) - -def EstablishedUser_Privilege_Info_Page(request): - - return render(request, 'privileges/EstablishedUser.html', context) - -def CreateTags_Privilege_Info_Page(request): - - return render(request, 'privileges/CreateTags.html', context) - -def EditQuestionAnswer__Privilege_Info_Page(request): - - return render(request, 'privileges/EditQuestionAnswer.html', context) - -def AccessToModTools_Privilege_Info_Page(request): - - return render(request, 'privileges/AccessToModTools.html', context) - -def ProtectQ_Privilege_Info_Page(request): - - return render(request, 'privileges/ProtectQ.html', context) - -def TrustedUser_Privilege_Info_Page(request): - - return render(request, 'privileges/TrustedUser.html', context) - diff --git a/images/animation.gif b/images/animation.gif deleted file mode 100644 index 871bc7a..0000000 Binary files a/images/animation.gif and /dev/null differ diff --git a/main/config.py b/main/config.py deleted file mode 100644 index f14caf4..0000000 --- a/main/config.py +++ /dev/null @@ -1,8 +0,0 @@ -# VOTE SHOULD LOCK IN MINUTES. -# In question_upvote_downvote -UPVOTE_TIME_LIMIT = timezone.now() - timedelta(hours=10) - -# NEW USER CAN ASK SECOND QUESTION IN MINUTES. -# In new_question -NEW_QUESTION_MINUTE_LIMIT = timezone.now() - timedelta(minutes=90) - diff --git a/main/settings.py b/main/settings.py deleted file mode 100644 index 7c279a2..0000000 --- a/main/settings.py +++ /dev/null @@ -1,271 +0,0 @@ -from pathlib import Path -import os -import django_heroku -from django.conf import settings - -# Build paths inside the project like this: BASE_DIR / 'subdir'. -BASE_DIR = Path(__file__).resolve().parent.parent - - -# Quick-start development settings - unsuitable for production - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'django-insecure-=dei9kx=^q))zm#z-(_cwdii75e-4bsf5_7suo9ll&besz088u' -# from django.conf import settings -settings.configure() -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = False - -ALLOWED_HOSTS = ['https://stackoverflow---clone.herokuapp.com/','localhost','http://127.0.0.1','stackoverflow---clone.herokuapp.com','.herokuapp.com'] - -# Application definition - -INSTALLED_APPS = [ - 'adminactions', - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'django.contrib.humanize', - # App - 'profile', - # App - 'users', - # App - 'qa', - # App - 'notification', - # App - 'review', - # App - 'tagbadge', - # App - 'help', - 'taggit', - 'crispy_forms', - 'martor', - 'simple_history', - # 'background_task', - 'review.templatetags', - 'tagbadge.tb_templatetags', - 'online_users', - # 'debug_toolbar', - 'tools', -] - -MAX_ATTEMPTS = 1 - -SECURE_BROWSER_XSS_FILTER = True - - -CRISPY_TEMPLATE_PACK = 'bootstrap4' - -MIDDLEWARE = [ - 'simple_history.middleware.HistoryRequestMiddleware', - 'whitenoise.middleware.WhiteNoiseMiddleware', #add whitenoise - 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', - 'online_users.middleware.OnlineNowMiddleware', - # 'debug_toolbar.middleware.DebugToolbarMiddleware', -] - -ROOT_URLCONF = 'main.urls' - -TEMPLATE_DIR = os.path.join(BASE_DIR,"templates") - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [TEMPLATE_DIR], - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - 'review.context_processors.reviewAnswer_cp', - 'review.context_processors.returnTrue', - 'review.context_processors.reviewQuestion_cp', - 'review.context_processors.returnTrue_or_False', - 'review.context_processors.reviewLateAnswer_cp', - 'review.context_processors.returnLateReview_True_or_False', - 'review.context_processors.reviewClosedQuestions', - 'review.context_processors.returnTrue_or_FalseClosedQuestions', - 'review.context_processors.reviewReOpenQuestion_sVotes', - 'review.context_processors.returnTrue_or_FalseUnCloseQuestion_s', - 'review.context_processors.reviewEditedPosts', - 'review.context_processors.returnTrue_or_FalseEditPosts', - 'review.context_processors.reviewLowQualityPosts', - 'review.context_processors.returnTrue_or_FalseLowPosts', - 'review.context_processors.reviewFlagPosts', - 'review.context_processors.returnTrue_or_FalseFlagPosts', - 'review.context_processors.reviewFlagComments', - 'review.context_processors.returnTrue_or_FalseFlagComments', - 'notification.context_processors.privNotificationViewer', - 'notification.context_processors.notificationViewer', - 'profile.context_processors.top_questions', - 'profile.context_processors.count_all_bounties', - - ], - }, - }, -] - -WSGI_APPLICATION = 'main.wsgi.application' - - -# DATABASES - -""" -If you don't want to use postgresql then remove comment of sqlite's configuration and -comment in the postgresql configuration -""" -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': BASE_DIR / 'db.sqlite3', - } -} - -# DATABASES = { -# 'default': { -# 'ENGINE': 'django.db.backends.postgresql_psycopg2', -# 'NAME': 'POSTGRESQL_NAME', -# 'USER': 'POSTGRESQL_USER', -# 'PASSWORD': 'POSTGRESQL_PASSWORD', -# 'HOST': 'localhost', -# 'PORT': '', -# } -# } - -# Password validation - -AUTH_PASSWORD_VALIDATORS = [ - { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', - }, -] - -CACHES = { - "default": { - "BACKEND": "django_redis.cache.RedisCache", - "LOCATION": "redis://127.0.0.1:6379/1", - "OPTIONS": { - "CLIENT_CLASS": "django_redis.client.DefaultClient" - }, - "KEY_PREFIX": "example" - } -} -CACHE_TTL = 60 * 15 - -# Internationalization - -LANGUAGE_CODE = 'en-us' - -TIME_ZONE = 'Asia/Kolkata' - -USE_I18N = True - -USE_L10N = True - -USE_TZ = True - - -# os.path.join(BASE_DIR, "static", "static") - -#MY SETTINGS FOR LOGIN. -LOGIN_URL = 'users:login_request' - -# STATICFILES_DIRS = [ -# os.path.join(BASE_DIR, 'static'), -# os.path.join(BASE_DIR, 'media'), -# ] - -# BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - -BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - -STATICFILES_DIRS = ( - os.path.join(BASE_DIR, 'static'), -) -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/1.9/howto/static-files/ -STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') -STATIC_URL = '/static/' - -# Extra places for collectstatic to find static files. - -MEDIA_URL = '/media/' -MEDIA_ROOT = os.path.join(BASE_DIR, 'media') - -# Heroku setting -# Serving the statics through Whitenoise in Heroku -STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' - -DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' - -# Martor Configuration -MARTOR_THEME = 'bootstrap' # semantic -MARTOR_ENABLE_LABEL = True -MARTOR_ENABLE_CONFIGS = { - 'emoji': 'true', # to enable/disable emoji icons. - 'imgur': 'true', # to enable/disable imgur/custom uploader. - 'mention': 'true', # to enable/disable mention - 'jquery': 'true', # to include/revoke jquery (require for admin default django) - 'living': 'true', # to enable/disable live updates in preview - 'spellcheck': 'true', # to enable/disable spellcheck in form textareas - 'hljs': 'true', # to enable/disable hljs highlighting in preview -} -MARTOR_TOOLBAR_BUTTONS = [ - 'bold', 'italic', 'horizontal', 'heading', 'pre-code', - 'blockquote', 'unordered-list', 'ordered-list', - 'link', 'image-link', 'image-upload', 'emoji', - 'direct-mention', 'toggle-maximize', 'help' -] - -CKEDITOR_JQUERY_URL = 'https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js' - -CKEDITOR_UPLOAD_PATH = 'uploads/' -CKEDITOR_IMAGE_BACKEND = "pillow" - -# django debug toolbar configuration -# INTERNAL_IPS = [ -# '127.0.0.1', -# ] - -# DEBUG_TOOLBAR_PANELS = [ -# 'debug_toolbar.panels.history.HistoryPanel', -# 'debug_toolbar.panels.versions.VersionsPanel', -# 'debug_toolbar.panels.timer.TimerPanel', -# 'debug_toolbar.panels.settings.SettingsPanel', -# 'debug_toolbar.panels.headers.HeadersPanel', -# 'debug_toolbar.panels.request.RequestPanel', -# 'debug_toolbar.panels.sql.SQLPanel', -# 'debug_toolbar.panels.staticfiles.StaticFilesPanel', -# 'debug_toolbar.panels.templates.TemplatesPanel', -# 'debug_toolbar.panels.cache.CachePanel', -# 'debug_toolbar.panels.signals.SignalsPanel', -# 'debug_toolbar.panels.logging.LoggingPanel', -# 'debug_toolbar.panels.redirects.RedirectsPanel', -# 'debug_toolbar.panels.profiling.ProfilingPanel', -# ] - -# Heroku setting -django_heroku.settings(locals()) diff --git a/main/urls.py b/main/urls.py deleted file mode 100644 index 0f44a8f..0000000 --- a/main/urls.py +++ /dev/null @@ -1,43 +0,0 @@ -"""main URL Configuration - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/3.2/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" -from django.contrib import admin -from django.urls import path,include -from django.conf.urls.static import static -from django.conf import settings -from qa import views as qa_views -# import debug_toolbar - -handler404 = qa_views.handler404 -handler500 = qa_views.handler500 - -urlpatterns = [ - path('admin/', admin.site.urls), - path('', include('profile.urls')), - path('', include('qa.urls')), - path('', include('notification.urls')), - path('', include('tagbadge.urls')), - path('', include('help.urls')), - path('', include('review.urls')), - path('', include('tools.urls')), - path('accounts/',include('users.urls')), - path('adminactions/', include('adminactions.urls')), - path('martor/', include('martor.urls')), - # path('__debug__/', include(debug_toolbar.urls)), - -] - -urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) -urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/manage.py b/manage.py index fbda2b3..11e8b4e 100644 --- a/manage.py +++ b/manage.py @@ -6,7 +6,7 @@ def main(): """Run administrative tasks.""" - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'main.settings') + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "telhub.settings") try: from django.core.management import execute_from_command_line except ImportError as exc: @@ -18,5 +18,5 @@ def main(): execute_from_command_line(sys.argv) -if __name__ == '__main__': +if __name__ == "__main__": main() diff --git a/media/media/isle.jpg b/media/media/isle.jpg deleted file mode 100644 index 0621ff1..0000000 Binary files a/media/media/isle.jpg and /dev/null differ diff --git a/media/profile_photos/isle.jpg b/media/profile_photos/isle.jpg deleted file mode 100644 index 0621ff1..0000000 Binary files a/media/profile_photos/isle.jpg and /dev/null differ diff --git a/migrations.py b/migrations.py deleted file mode 100644 index b766b4c..0000000 --- a/migrations.py +++ /dev/null @@ -1,154 +0,0 @@ -# Generated by Django __version__ on __date__ - -from django.db import migrations - -from django.db import migrations -from django.utils import timezone - -def saveTagBadge(apps, schema_editor): - TagBadge = apps.get_model("tagbadge", "TagBadge") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="First bounty you manually award on another person's question", tag_name="Altruist",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="First bounty you manually award on your own question", tag_name="Benefactor",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="SILVER",description="Question bookmarked by 25 users", tag_name="Favorite Question",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="GOLD",description="Question bookmarked by 100 users", tag_name="Stellar Question",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="First bounty you offer on another person's question", tag_name="Investor",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="Question score of 10 or more", tag_name="Nice Question",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="SILVER",description="Question score of 25 or more", tag_name="Good Question",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="GOLD",description="Question score of 100 or more", tag_name="Great Question",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="Question with 1,000 views", tag_name="Popular Question",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="SILVER",description="Question with 2,500 views", tag_name="Notable Question",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="GOLD",description="Question with 10,000 views", tag_name="Famous Question",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="First bounty you offer on your own question", tag_name="Promoter",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="Ask a question and accept an answer", tag_name="Scholar",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="First question with score of 1 or more", tag_name="Student",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="SILVER",description="First to answer and accepted with score of 10 or more", tag_name="Enlightened",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="Edit and answer 1 question (both actions within 12 hours, answer score > 0)", tag_name="Explainer",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="SILVER",description="Edit and answer 50 questions (both actions within 12 hours, answer score > 0)", tag_name="Refiner",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="GOLD",description="Edit and answer 500 questions (both actions within 12 hours, answer score > 0)", tag_name="Illuminator",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="SILVER",description="Accepted answer and score of 40 or more", tag_name="Guru",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="SILVER",description="Answer score of 5 or more to a question score of -2 or less that goes on to receive a score of 2 or more", tag_name="Lifejacket",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="GOLD",description="Answer score of 20 or more to a question score of -3 or less that goes on to receive a score of 3 or more", tag_name="Lifeboat",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="Answer score of 10 or more", tag_name="Nice Answer",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="SILVER",description="Answer score of 25 or more", tag_name="Good Answer",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="GOLD",description="Answer score of 100 or more", tag_name="Great Answer",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - # TagBadge.objects.get_or_create(badge_type="GOLD", tag_name="Populist",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="Answer more than 30 days after a question was asked as first answer scoring 2 or more", tag_name="Revival",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="SILVER",description="Answer a question more than 60 days later with score of 5 or more", tag_name="Necromancer",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="Answer your own question with score of 3 or more", tag_name="Self-Learner",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="Answer a question with score of 1 or more", tag_name="Teacher",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - # TagBadge.objects.get_or_create(badge_type="SILVER", tag_name="Tanacious",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - # TagBadge.objects.get_or_create(badge_type="GOLD", tag_name="Unsung Hero",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="Complete 'About Me' section of user profile", tag_name="Autobiographer",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="Leave 10 comments", tag_name="Commentator",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="GOLD",description="Leave 10 comments with score of 5 or more", tag_name="Pundit",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - # TagBadge.objects.get_or_create(badge_type="BRONZE", tag_name="Mortarboard",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="SILVER",description="Earn 200 daily reputation 50 times", tag_name="Epic",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="GOLD",description="Earn 200 daily reputation 150 times", tag_name="Legendary",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - # TagBadge.objects.get_or_create(badge_type="BRONZE", tag_name="Bronze Badge",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - # TagBadge.objects.get_or_create(badge_type="SILVER", tag_name="Silver Badge",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - # TagBadge.objects.get_or_create(badge_type="GOLD", tag_name="Gold Badge",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="First flagged post", tag_name="Citizen Patrol",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="SILVER",description="Raise 80 helpful flags", tag_name="Deputy",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="GOLD",description="Raise 500 helpful flags", tag_name="Marshal",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="SILVER",description="Vote 300 or more times", tag_name="Civic Duty",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="First down vote", tag_name="Critic",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="Complete at least one review task. This badge is awarded once per review type", tag_name="Custodian",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="SILVER",description="Complete at least 250 review tasks. This badge is awarded once per review type", tag_name="Reviewer",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="GOLD",description="Complete at least 1,000 review tasks. This badge is awarded multiple times per review type", tag_name="Steward",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="Delete own post with score of 3 or higher", tag_name="Disciplined",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="First edit", tag_name="Editor",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="SILVER",description="Edit 80 posts", tag_name="Strunk & White",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="GOLD",description="Edit 500 posts (excluding own or deleted posts and tag edits)", tag_name="Copy Editor",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - # TagBadge.objects.get_or_create(badge_type="GOLD",description="Edit 500 posts (excluding own or deleted posts and tag edits)", tag_name="Electorate",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="Edit first post that was inactive for 6 months", tag_name="Excavator",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="SILVER",description="Edit 100 posts that were inactive for 6 months", tag_name="Archaologist",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="Delete own post with score of -3 or lower", tag_name="Peer Pressure",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="Approve or reject 100 suggested edits", tag_name="Proodreader",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - # TagBadge.objects.get_or_create(badge_type="SILVER", tag_name="Sportsmanship",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="Use 30 votes in a day", tag_name="Suffrage",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="First up vote", tag_name="Supporter",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="GOLD",description="Provide an answer of +20 score to a question of -5 score", tag_name="Reversal",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - # TagBadge.objects.get_or_create(badge_type="BRONZE", tag_name="Tubbleweed",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="Use the maximum 40 votes in a day", tag_name="Vox Populi",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - TagBadge.objects.get_or_create(badge_type="BRONZE",description="Read the entire tour page", tag_name="Informed",date=timezone.now(),preBuild=True, bade_position="Tag", url="#") - - - -def saveTag(apps, schema_editor): - Tag = apps.get_model("taggit", "Tag") - Tag.objects.get_or_create(name="Altruist", slug="altruist") - Tag.objects.get_or_create(name="Benefactor", slug="benefactor") - Tag.objects.get_or_create(name="Favorite Question", slug="favorite-question") - Tag.objects.get_or_create(name="Stellar Question", slug="stellar-question") - Tag.objects.get_or_create(name="Investor", slug="investor") - Tag.objects.get_or_create(name="Nice Question", slug="nice-question") - Tag.objects.get_or_create(name="Good Question", slug="good-question") - Tag.objects.get_or_create(name="Great Question", slug="great-question") - Tag.objects.get_or_create(name="Popular Question", slug="popular-question") - Tag.objects.get_or_create(name="Notable Question", slug="notable-question") - Tag.objects.get_or_create(name="Famous Question", slug="famous-question") - Tag.objects.get_or_create(name="Promoter", slug="promoter") - Tag.objects.get_or_create(name="Scholar", slug="scholar") - Tag.objects.get_or_create(name="Student", slug="student") - Tag.objects.get_or_create(name="Enlightened", slug="enlightened") - Tag.objects.get_or_create(name="Explainer", slug="explainer") - Tag.objects.get_or_create(name="Refiner", slug="refiner") - Tag.objects.get_or_create(name="Illuminator", slug="illuminator") - Tag.objects.get_or_create(name="Guru", slug="guru") - Tag.objects.get_or_create(name="Lifejacket", slug="lifejacket") - Tag.objects.get_or_create(name="Lifeboat", slug="lifeboat") - Tag.objects.get_or_create(name="Nice Answer", slug="nice-answer") - Tag.objects.get_or_create(name="Good Answer", slug="good-answer") - Tag.objects.get_or_create(name="Great Answer", slug="great-answer") - # Tag.objects.get_or_create(name="Populist", slug="populist") - Tag.objects.get_or_create(name="Revival", slug="revival") - Tag.objects.get_or_create(name="Necromancer", slug="necromancer") - Tag.objects.get_or_create(name="Self-Learner", slug="self-learner") - Tag.objects.get_or_create(name="Teacher", slug="teacher") - # Tag.objects.get_or_create(name="Tanacious", slug="tanacious") - # Tag.objects.get_or_create(name="Unsung Hero", slug="unsung-hero") - Tag.objects.get_or_create(name="Autobiographer", slug="autobiographer") - Tag.objects.get_or_create(name="Commentator", slug="commentator") - Tag.objects.get_or_create(name="Pundit", slug="pundit") - Tag.objects.get_or_create(name="Mortarboard", slug="mortarboard") - Tag.objects.get_or_create(name="Epic", slug="epic") - Tag.objects.get_or_create(name="Legendary", slug="legendary") - # Tag.objects.get_or_create(name="Bronze Badge", slug="bronze-badge") - # Tag.objects.get_or_create(name="Silver Badge", slug="silver-badge") - # Tag.objects.get_or_create(name="Gold Badge", slug="gold-badge") - Tag.objects.get_or_create(name="Citizen Patrol", slug="citizen-patrol") - Tag.objects.get_or_create(name="Deputy", slug="deputy") - Tag.objects.get_or_create(name="Marshal", slug="marshal") - Tag.objects.get_or_create(name="Civic Duty", slug="civic-duty") - Tag.objects.get_or_create(name="Critic", slug="critic") - Tag.objects.get_or_create(name="Custodian", slug="custodian") - Tag.objects.get_or_create(name="Reviewer", slug="reviewer") - Tag.objects.get_or_create(name="Steward", slug="steward") - Tag.objects.get_or_create(name="Disciplined", slug="disciplined") - Tag.objects.get_or_create(name="Edit", slug="edit") - Tag.objects.get_or_create(name="Strunk & White", slug="strunk-&-white") - Tag.objects.get_or_create(name="Copy Editor", slug="copy-editor") - Tag.objects.get_or_create(name="Electorate", slug="electorate") - Tag.objects.get_or_create(name="Excavator", slug="excavator") - Tag.objects.get_or_create(name="Archaologist", slug="archaologist") - Tag.objects.get_or_create(name="Peer Pressure", slug="peer-pressure") - Tag.objects.get_or_create(name="Proodreader", slug="proodreader") - # Tag.objects.get_or_create(name="Sportsmanship", slug="sportsmanship") - Tag.objects.get_or_create(name="Suffrage", slug="suffrage") - Tag.objects.get_or_create(name="Supporter", slug="supporter") - Tag.objects.get_or_create(name="Reversal", slug="reversal") - # Tag.objects.get_or_create(name="Tubbleweed", slug="tubbleweed") - Tag.objects.get_or_create(name="Vox Populi", slug="vox-populi") - Tag.objects.get_or_create(name="Informed", slug="informed") - - -class Migration(migrations.Migration): - - dependencies = [ - ('tagbadge', '_____migrate_code_____'), - ] - - operations = [ - migrations.RunPython(saveTag), - migrations.RunPython(saveTagBadge) - ] diff --git a/notification/__init__.py b/notification/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/notification/admin.py b/notification/admin.py deleted file mode 100644 index deaf43d..0000000 --- a/notification/admin.py +++ /dev/null @@ -1,7 +0,0 @@ -from django.contrib import admin - -from .models import Notification,PrivRepNotification - -admin.site.register(Notification) - -admin.site.register(PrivRepNotification) diff --git a/notification/apps.py b/notification/apps.py deleted file mode 100644 index 8757bbe..0000000 --- a/notification/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class NotificationConfig(AppConfig): - default_auto_field = 'django.db.models.BigAutoField' - name = 'notification' diff --git a/notification/context_processors.py b/notification/context_processors.py deleted file mode 100644 index 2b2958c..0000000 --- a/notification/context_processors.py +++ /dev/null @@ -1,48 +0,0 @@ -from django.shortcuts import render -from .models import PrivRepNotification,Notification -from django.http import JsonResponse, HttpResponseRedirect, HttpResponse -from django.db.models import Count,BooleanField, ExpressionWrapper, Q,Exists, OuterRef,Avg, Min,Max, Sum,F, IntegerField, FloatField,Case, Value, When - -def notificationViewer(request): - if request.user.is_authenticated: - notifications = Notification.objects.filter(noti_receiver=request.user).order_by('-date_created') - countUnreadNotifications = Notification.objects.filter(noti_receiver=request.user, is_read=False).count() - if countUnreadNotifications >= 1: - showAlert = True - else: - showAlert = False - - else: - notifications = '' - countUnreadNotifications = '' - showAlert = False - - - return { - 'notifications':notifications, - 'countUnreadNotifications':countUnreadNotifications, - 'showAlert':showAlert, - } - -def privNotificationViewer(request): - if request.user.is_authenticated: - privNotifications = PrivRepNotification.objects.filter(for_user=request.user).order_by('-date_created_PrivNotify') - countUnreadPrivNotifications_1 = PrivRepNotification.objects.filter( - for_user=request.user, is_read=False).count() - countUnreadPrivNotifications = PrivRepNotification.objects.filter(for_user=request.user, is_read=False).aggregate(countTheUnRead_Rep=Sum('missingReputation')) - # if countUnreadPrivNotifications >= 1: - # showPrivAlert = True - # else: - # showPrivAlert = False - - else: - privNotifications = '' - countUnreadPrivNotifications = '' - # showPrivAlert = False - countUnreadPrivNotifications_1 = '' - - return { - 'privNotifications':privNotifications, - 'countUnreadPrivNotifications':countUnreadPrivNotifications, - 'countUnreadPrivNotifications_1':countUnreadPrivNotifications_1, - } \ No newline at end of file diff --git a/notification/migrations/0001_initial.py b/notification/migrations/0001_initial.py deleted file mode 100644 index 2d96caf..0000000 --- a/notification/migrations/0001_initial.py +++ /dev/null @@ -1,38 +0,0 @@ -# Generated by Django 3.2.6 on 2022-01-04 20:58 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Notification', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('type_of_noti', models.CharField(choices=[('comment_answer', 'comment_answer'), ('question_comment', 'question_comment'), ('community_message', 'community_message'), ('question_edit', 'question_edit'), ('question_reopen_voted', 'Question ReOpen Voted'), ('question_suggested_edit', 'Question Suggested Edit'), ('NEW_ANSWER', 'New_Answer')], default='', max_length=30)), - ('url', models.URLField(blank=True, null=True)), - ('date_created', models.DateTimeField(auto_now_add=True)), - ('is_read', models.BooleanField(default=False)), - ], - ), - migrations.CreateModel( - name='PrivRepNotification', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('url', models.URLField(blank=True, default='#', null=True)), - ('for_if', models.CharField(default='', max_length=30)), - ('date_created_PrivNotify', models.DateTimeField(auto_now_add=True)), - ('is_read', models.BooleanField(default=False)), - ('type_of_PrivNotify', models.CharField(choices=[('EDIT_GOT_APPROVED', 'Edit Approved'), ('ANSWER_ACCEPT_REP_P', 'Answer Accept Rep Plus'), ('BOUNTY_AWARDED_REP_P', 'Bounty Award Rep Plus'), ('MY_ANSWER_UPVOTE_REP_P', 'Answered Answer Upvote Rep Plus'), ('QUESTION_DOWNVOTE', 'Question DownVote'), ('MY_QUESTION_UPVOTE_REP_P', 'Asked Question Upvote Rep Plus'), ('Privilege_Earned', 'Privilege Earned'), ('BADGE_EARNED', 'Badge Earned')], default='', max_length=30)), - ('missingReputation', models.IntegerField(blank=True, default=0, null=True)), - ('privilegeURL', models.URLField(blank=True, null=True)), - ('description', models.CharField(default='', max_length=1000)), - ], - ), - ] diff --git a/notification/migrations/0002_initial.py b/notification/migrations/0002_initial.py deleted file mode 100644 index 2896eb0..0000000 --- a/notification/migrations/0002_initial.py +++ /dev/null @@ -1,49 +0,0 @@ -# Generated by Django 3.2.6 on 2022-01-04 20:58 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('notification', '0001_initial'), - ('qa', '0001_initial'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.AddField( - model_name='privrepnotification', - name='answer_priv_noti', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.answer'), - ), - migrations.AddField( - model_name='privrepnotification', - name='for_user', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), - ), - migrations.AddField( - model_name='privrepnotification', - name='question_priv_noti', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.question'), - ), - migrations.AddField( - model_name='notification', - name='answer_noti', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.answer'), - ), - migrations.AddField( - model_name='notification', - name='noti_receiver', - field=models.ForeignKey(default='', on_delete=django.db.models.deletion.CASCADE, related_name='noti_receiver', to=settings.AUTH_USER_MODEL), - ), - migrations.AddField( - model_name='notification', - name='question_noti', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.question'), - ), - ] diff --git a/notification/migrations/__init__.py b/notification/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/notification/models.py b/notification/models.py deleted file mode 100644 index 815283b..0000000 --- a/notification/models.py +++ /dev/null @@ -1,80 +0,0 @@ -from django.db import models -from django.contrib.auth.models import User -from qa.models import Question,Answer - -TYPE_OF_NOTI = [ - - ('comment_answer','comment_answer'), - ('question_comment','question_comment'), - ('community_message','community_message'), - ('question_edit', 'question_edit'), - ('question_reopen_voted','Question ReOpen Voted'), - ('question_suggested_edit', 'Question Suggested Edit'), - ('NEW_ANSWER', 'New_Answer'), - -] - -class Notification(models.Model): - noti_receiver = models.ForeignKey(User,on_delete=models.CASCADE, default='', related_name='noti_receiver') - type_of_noti = models.CharField(max_length=30,choices=TYPE_OF_NOTI,default='') - url = models.URLField(null=True,blank=True) - date_created = models.DateTimeField(auto_now_add=True) - is_read = models.BooleanField(default=False) - question_noti = models.ForeignKey(Question, on_delete=models.CASCADE, blank=True, null=True) - answer_noti = models.ForeignKey(Answer, on_delete=models.CASCADE, blank=True, null=True) - - def __str__(self): - return f"{self.type_of_noti} - [USER] {self.noti_receiver} - [READED?] - {self.is_read}" - -PRIV_NOTIFY_CHOICES = [ - - ('EDIT_GOT_APPROVED', 'Edit Approved'), - # ('DOWN_VOTE_ANSWER_REP_M', 'Answer Down Vote Rep Minus'), - ('ANSWER_ACCEPT_REP_P', 'Answer Accept Rep Plus'), - ('BOUNTY_AWARDED_REP_P', 'Bounty Award Rep Plus'), - ('MY_ANSWER_UPVOTE_REP_P', 'Answered Answer Upvote Rep Plus'), - ('QUESTION_DOWNVOTE', 'Question DownVote'), - ('MY_QUESTION_UPVOTE_REP_P', 'Asked Question Upvote Rep Plus'), - ('Privilege_Earned', 'Privilege Earned'), - ('BADGE_EARNED', 'Badge Earned') -] - -class PrivRepNotification(models.Model): - for_user = models.ForeignKey(User, on_delete=models.CASCADE) - url = models.URLField(null=True, blank=True, default="#") - for_if = models.CharField(max_length=30,default='') - date_created_PrivNotify = models.DateTimeField(auto_now_add=True) - is_read = models.BooleanField(default=False) - type_of_PrivNotify = models.CharField(max_length=30, choices=PRIV_NOTIFY_CHOICES,default='') - missingReputation = models.IntegerField(default=0, blank=True, null=True) - privilegeURL = models.URLField(null=True, blank=True) - description = models.CharField(max_length=1000, default='') - question_priv_noti = models.ForeignKey(Question, on_delete=models.CASCADE, blank=True, null=True) - answer_priv_noti = models.ForeignKey(Answer, on_delete=models.CASCADE, blank=True, null=True) - - def __str__(self): - return self.type_of_PrivNotify - -# PRIV_NOTIFY_CHOICES = [ - -# ('QUESTION_EDIT_REP_P', 'Question edit Rep Plus'), -# ('ANSWER_EDIT_REP_P', 'Answer edit Rep Plus'), -# ('DOWN_VOTE_ANSWER_REP_M', 'Answer Down Vote Rep Minus'), -# ('ANSWER_ACCEPT_REP_P', 'Answer Accept Rep Plus'), -# ('BOUNTY_AWARDED_REP_P', 'Bounty Award Rep Plus'), -# ('MY_ANSWER_UPVOTE_REP_P', 'Answered Answer Upvote Rep Plus'), -# ('QUESTION_DOWNVOTE', 'Question DownVote'), -# ('MY_QUESTION_UPVOTE_REP_P', 'Asked Question Upvote Rep Plus'), -# ("EDIT_GOT_APPROVED", "Approved Edit"), -# ('Privilege_Earned', 'Privilege Earned'), -# ] - -# class privilegeNotification(models.Model): -# for_user = models.ForeignKey(User, on_delete=models.CASCADE) -# url = models.URLField(null=True, blank=True) -# is_read = models.BooleanField(default=False) -# date = models.DateTimeField(auto_now_add=True) -# type_of_PrivNotify = models.CharField(max_length=30, choices=PRIV_NOTIFY_CHOICES,default='') - - - diff --git a/notification/urls.py b/notification/urls.py deleted file mode 100644 index 6cb5a16..0000000 --- a/notification/urls.py +++ /dev/null @@ -1,13 +0,0 @@ -from django.urls import path -from . import views - -app_name = 'notification' - -urlpatterns = [ - - path('read_All_Notifications/', views.read_All_Notifications, name='read_All_Notifications'), - - path('read_All_Priv_Notifications/', views.read_All_Priv_Notifications, name='read_All_Priv_Notifications'), - - -] \ No newline at end of file diff --git a/notification/views.py b/notification/views.py deleted file mode 100644 index c09740c..0000000 --- a/notification/views.py +++ /dev/null @@ -1,26 +0,0 @@ -from django.shortcuts import render -from .models import PrivRepNotification,Notification -from django.http import JsonResponse, HttpResponseRedirect, HttpResponse - - -def read_All_Notifications(request): - - notifics = Notification.objects.filter(noti_receiver=request.user).order_by('-date_created') - - for objs in notifics: - objs.is_read = True - objs.save() - - # return HttpResponse(status=204) - return JsonResponse({'action': 'readedAll'}) - -def read_All_Priv_Notifications(request): - - notifications = PrivRepNotification.objects.filter(for_user=request.user) - - for obj in notifications: - obj.is_read = True - obj.save() - - return JsonResponse({'action':'readedAllPrivNotifications'}) - diff --git a/profile/__init__.py b/profile/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/profile/admin.py b/profile/admin.py deleted file mode 100644 index 8699843..0000000 --- a/profile/admin.py +++ /dev/null @@ -1,10 +0,0 @@ -from django.contrib import admin - -from .models import Profile - -admin.site.register(Profile) - -# admin.site.register(Position) - -# admin.site.register(DeveloperStory) - diff --git a/profile/apps.py b/profile/apps.py deleted file mode 100644 index ad627ff..0000000 --- a/profile/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class profileConfig(AppConfig): - default_auto_field = 'django.db.models.BigAutoField' - name = 'profile' diff --git a/profile/context_processors.py b/profile/context_processors.py deleted file mode 100644 index 83b5173..0000000 --- a/profile/context_processors.py +++ /dev/null @@ -1,22 +0,0 @@ -from django.shortcuts import render, redirect -import datetime -from django.utils import timezone -from datetime import timedelta -from django.db.models import Avg, Count, Min, Sum, Q -from qa.models import Question -from notification.models import PrivRepNotification,Notification - -def top_questions(request): - questionsHome = Question.objects.filter( - is_deleted=False, is_bountied=False).order_by( - '-date')[:50] - return { - 'questionsHome':questionsHome - } - -def count_all_bounties(request): - bounties = Question.objects.filter(is_bountied=True) - - return { - 'count_bounty': bounties.count() - } \ No newline at end of file diff --git a/profile/decorators.py b/profile/decorators.py deleted file mode 100644 index bdaa416..0000000 --- a/profile/decorators.py +++ /dev/null @@ -1,33 +0,0 @@ -from django.shortcuts import redirect -from django.contrib.auth import logout -from django.core.exceptions import PermissionDenied -from qa.models import BannedUser - -def unBanRequired(function): - - def keepUserOut(request, *args, **kwargs): - if request.user.is_authenticated: - if BannedUser.objects.filter(user=request.user, is_banned=False).exists(): - return redirect('profile:home') - else: - return function(request, *args, **kwargs) - - else: - return redirect('users:login_request') - - return keepUserOut - -def profileOwnerRequired_For_Edit(function): - - def keepUnknownUser_Out(request, *args, **kwargs): - if request.user.is_authenticated: - if request.user == request.user.profile.user: - return function(request, *args, **kwargs) - else: - messages.error(request, 'Not Authorised') - - else: - return redirect('users:login_request') - - return keepUnknownUser_Out - diff --git a/profile/forms.py b/profile/forms.py deleted file mode 100644 index 4cd6d53..0000000 --- a/profile/forms.py +++ /dev/null @@ -1,52 +0,0 @@ -from django import forms -from .models import Profile,Position -from martor.fields import MartorFormField - -class EditProfileForm(forms.ModelForm): - - class Meta: - model = Profile - fields = ['profile_photo','full_name','location','title','about_me', - 'website_link','twitter_link','github_link', - 'not_to_Display_Full_name'] - -class EmailForm(forms.Form): - name = forms.CharField(max_length=25) - email = forms.EmailField() - review = MartorFormField() - -class PositionCreateForm(forms.ModelForm): - - class Meta: - model = Position - fields = ['company_name','title'] - -JOB_TYPE_CHOICES = [ - - ('FULL_TIME', 'Full Time'), - ('CONTRCT', 'Contract'), - ('InternShip', 'InternShip'), - -] - - -class EditJobPrefrences(forms.ModelForm): - # job_type = forms.MultipleChoiceField(choices=JOB_TYPE_CHOICES, widget=forms.CheckboxSelectMultiple()) - - class Meta: - model = Profile - fields = ['min_expierence_level', - 'max_expierence_level','job_type', - 'job_search_status','phone_number'] - widgets = { - 'job_search_status': forms.RadioSelect(), - # 'job_type': forms.CheckboxSelectMultiple(), - } - - - -class EditEmailForm(forms.ModelForm): - - class Meta: - model = Profile - fields = ['email'] \ No newline at end of file diff --git a/profile/migrations/0001_initial.py b/profile/migrations/0001_initial.py deleted file mode 100644 index e1ed16d..0000000 --- a/profile/migrations/0001_initial.py +++ /dev/null @@ -1,88 +0,0 @@ -# Generated by Django 3.2.6 on 2022-01-04 20:58 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Position', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('company_name', models.CharField(default='', max_length=30)), - ('title', models.CharField(default='', max_length=30)), - ('company_website', models.CharField(default='', max_length=30)), - ('technologies', models.CharField(default='', max_length=30)), - ('responsibilities', models.CharField(default='', max_length=30)), - ], - ), - migrations.CreateModel( - name='Profile', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('full_name', models.CharField(default='', max_length=30)), - ('not_to_Display_Full_name', models.CharField(default='', max_length=30)), - ('email', models.EmailField(default='', max_length=30)), - ('location', models.CharField(default='', max_length=30)), - ('title', models.CharField(default='', max_length=30)), - ('profile_photo', models.ImageField(default='media/isle.jpg', upload_to='profile_photos')), - ('about_me', models.CharField(blank=True, default='', max_length=30, null=True)), - ('website_link', models.URLField(blank=True)), - ('twitter_link', models.URLField(blank=True)), - ('github_link', models.URLField(blank=True)), - ('q_edited_counter', models.IntegerField(default=0)), - ('time', models.DateTimeField(auto_now_add=True)), - ('reputation', models.IntegerField(default=1)), - ('is_banned', models.BooleanField(default=False)), - ('post_edit_inactive_for_six_month', models.IntegerField(default=0)), - ('is_moderator', models.BooleanField(default=False)), - ('is_high_moderator', models.BooleanField(default=False)), - ('targeted_tag', models.CharField(default='Commenter', max_length=30)), - ('review_close_votes', models.BooleanField(default=False)), - ('favorite_question_S', models.BooleanField(default=False)), - ('lifeJacket', models.BooleanField(default=False)), - ('altruist', models.BooleanField(default=False)), - ('commenter', models.BooleanField(default=False)), - ('logout_on_all_devices', models.BooleanField(default=False)), - ('send_email_notifications', models.BooleanField(default=False)), - ('voting_flags', models.IntegerField(default=0)), - ('helpful_close_votes', models.IntegerField(default=0)), - ('name', models.CharField(default='', max_length=30)), - ('prefered_technologies', models.CharField(default='', max_length=30)), - ('min_expierence_level', models.CharField(choices=[('Student', 'Student'), ('Junior', 'Junior'), ('Mid_Level', 'Mid Level'), ('Senior', 'Senior'), ('Lead', 'Lead'), ('Manager', 'Manager')], default='', max_length=30)), - ('max_expierence_level', models.CharField(choices=[('Student', 'Student'), ('Junior', 'Junior'), ('Mid_Level', 'Mid Level'), ('Senior', 'Senior'), ('Lead', 'Lead'), ('Manager', 'Manager')], default='', max_length=30)), - ('job_type', models.CharField(choices=[('FULL_TIME', 'Full Time'), ('CONTRCT', 'Contract'), ('InternShip', 'InternShip')], max_length=30)), - ('job_search_status', models.CharField(choices=[('looking_for_job', 'Actively looking right now'), ('open_but_not_looking', 'Open, but not actively looking'), ('not_interested_in_jobs', 'Not interested in jobs')], max_length=30)), - ('phone_number', models.CharField(blank=True, max_length=30, null=True)), - ('create_posts', models.BooleanField(default=True)), - ('create_wiki_posts', models.BooleanField(default=False)), - ('remove_new_user_restrictions', models.BooleanField(default=False)), - ('voteUpPriv', models.BooleanField(default=False)), - ('flag_posts', models.BooleanField(default=False)), - ('comment_everywhere_Priv', models.BooleanField(default=False)), - ('set_bounties', models.BooleanField(default=False)), - ('edit_community_wiki', models.BooleanField(default=False)), - ('voteDownPriv', models.BooleanField(default=False)), - ('view_close_votes_Priv', models.BooleanField(default=False)), - ('access_review_queues', models.BooleanField(default=False)), - ('established_user_Priv', models.BooleanField(default=False)), - ('create_tags', models.BooleanField(default=False)), - ('edit_questions_answers', models.BooleanField(default=False)), - ('cast_close_AND_Reopen_votes', models.BooleanField(default=False)), - ('accessTo_moderatorTools', models.BooleanField(default=False)), - ('protect_questions', models.BooleanField(default=False)), - ('trusted_user_Priv', models.BooleanField(default=False)), - ('helpful_flags_counter', models.IntegerField(blank=True, default=0, null=True)), - ('posts_edited_counter', models.IntegerField(blank=True, default=0, null=True)), - ('suggested_Edit_counter', models.IntegerField(blank=True, default=0, null=True)), - ('editPostTimeOfUser', models.DateTimeField(blank=True, null=True)), - ('Refiner_Illuminator_TagPostCounter', models.IntegerField(blank=True, default=0, null=True)), - ], - ), - ] diff --git a/profile/migrations/0002_initial.py b/profile/migrations/0002_initial.py deleted file mode 100644 index 203437a..0000000 --- a/profile/migrations/0002_initial.py +++ /dev/null @@ -1,34 +0,0 @@ -# Generated by Django 3.2.6 on 2022-01-04 20:58 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('profile', '0001_initial'), - ('qa', '0001_initial'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.AddField( - model_name='profile', - name='bookmark_questions', - field=models.ManyToManyField(blank=True, related_name='bookmark_questions', to='qa.Question'), - ), - migrations.AddField( - model_name='profile', - name='user', - field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='profile', to=settings.AUTH_USER_MODEL), - ), - migrations.AddField( - model_name='position', - name='user', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), - ), - ] diff --git a/profile/migrations/__init__.py b/profile/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/profile/models.py b/profile/models.py deleted file mode 100644 index 4feab73..0000000 --- a/profile/models.py +++ /dev/null @@ -1,164 +0,0 @@ -from django.db import models -from django.contrib.auth.models import User -from django.db.models.signals import post_save -from django.dispatch import receiver -from django.conf import settings -from qa.models import Question -import os -from random import choice -from os.path import join as path_join -from os import listdir -from os.path import isfile -import datetime -from django.utils import timezone -from datetime import timedelta -from datetime import datetime as dt -from django.urls import reverse -from qa.models import CommentQ - -def random_img(): - dir_path = 'media/' - files = [content for content in listdir( - dir_path) if isfile(path_join(dir_path, content))] - return path_join(dir_path, choice(files)) - - - -JOB_STATUS = [ - ('looking_for_job', 'Actively looking right now'), - ('open_but_not_looking', 'Open, but not actively looking'), - ('not_interested_in_jobs', 'Not interested in jobs'), -] - - -EXPERIENCE_LEVEL = [ - - ('Student','Student'), - ('Junior', 'Junior'), - ('Mid_Level', 'Mid Level'), - ('Senior', 'Senior'), - ('Lead', 'Lead'), - ('Manager', 'Manager'), - -] - -JOB_TYPE_CHOICES = [ - - ('FULL_TIME', 'Full Time'), - ('CONTRCT', 'Contract'), - ('InternShip', 'InternShip'), - -] - - - -class Profile(models.Model): - user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile') - full_name = models.CharField(max_length=30, default='', blank=True) - not_to_Display_Full_name = models.CharField(max_length=30, default='', blank=True) - email = models.EmailField(max_length=30, default='') - location = models.CharField(max_length=30, default='', blank=True) - title = models.CharField(max_length=30, default='', blank=True) - profile_photo = models.ImageField(upload_to='profile_photos', default='media/isle.jpg') - about_me = models.CharField(max_length=30, default='', blank=True, null=True) - website_link = models.URLField(blank=True) - twitter_link = models.URLField(blank=True) - github_link = models.URLField(blank=True) - bookmark_questions = models.ManyToManyField(Question, related_name='bookmark_questions', blank=True) - q_edited_counter = models.IntegerField(default=0) - time = models.DateTimeField(auto_now_add=True) - reputation = models.IntegerField(default=1) - is_banned = models.BooleanField(default=False) - post_edit_inactive_for_six_month = models.IntegerField(default=0) - is_moderator = models.BooleanField(default=False) - is_high_moderator = models.BooleanField(default=False) - targeted_tag = models.CharField(max_length=30, default='Commenter') -# BADGES - review_close_votes = models.BooleanField(default=False) - favorite_question_S = models.BooleanField(default=False) - lifeJacket = models.BooleanField(default=False) - - - altruist = models.BooleanField(default=False) -# PRIVILEGES - commenter = models.BooleanField(default=False) - - -# OTHERS - - - logout_on_all_devices = models.BooleanField(default=False) - send_email_notifications = models.BooleanField(default=False) - - voting_flags = models.IntegerField(default=0) - helpful_close_votes = models.IntegerField(default=0) - - -# DEVELOPER STORY - name = models.CharField(max_length=30, default='') - prefered_technologies = models.CharField(max_length=30, default='') - min_expierence_level = models.CharField(max_length=30,choices=EXPERIENCE_LEVEL, default='') - max_expierence_level = models.CharField(max_length=30,choices=EXPERIENCE_LEVEL, default='') - job_type = models.CharField(max_length=30, choices=JOB_TYPE_CHOICES) - job_search_status = models.CharField(max_length=30, choices=JOB_STATUS) - phone_number = models.CharField(max_length=30, blank=True, null=True) - - - create_posts = models.BooleanField(default=True) # Done - create_wiki_posts = models.BooleanField(default=False) # Done - remove_new_user_restrictions = models.BooleanField(default=False) # Done - voteUpPriv = models.BooleanField(default=False) # Done - flag_posts = models.BooleanField(default=False) # Done - comment_everywhere_Priv = models.BooleanField(default=False) # Done - set_bounties = models.BooleanField(default=False) # Done - edit_community_wiki = models.BooleanField(default=False) - voteDownPriv = models.BooleanField(default=False) # Done - view_close_votes_Priv = models.BooleanField(default=False) - access_review_queues = models.BooleanField(default=False) - established_user_Priv = models.BooleanField(default=False) # Done - create_tags = models.BooleanField(default=False) # Done - edit_questions_answers = models.BooleanField(default=False) # Done - cast_close_AND_Reopen_votes = models.BooleanField(default=False) # Done - accessTo_moderatorTools = models.BooleanField(default=False) - protect_questions = models.BooleanField(default=False) # Done - trusted_user_Priv = models.BooleanField(default=False) - - helpful_flags_counter = models.IntegerField(default=0, blank=True, null=True) - posts_edited_counter = models.IntegerField(default=0, blank=True, null=True) - suggested_Edit_counter = models.IntegerField(default=0, blank=True, null=True) - editPostTimeOfUser = models.DateTimeField(auto_now_add=False, blank=True, null=True) - Refiner_Illuminator_TagPostCounter = models.IntegerField(default=0, blank=True, null=True) - - def __str__(self): - return f'{self.user}' - - def get_absolute_url(self): - return reverse('profile:activityPageTabProfile', kwargs={'user_id': self.user_id,'username': self.user.username}) - - @property - def age(self): - current_datetime = datetime.datetime.now(timezone.utc) - return (current_datetime - self.time).days - - # def countComments_done(self): - # countComments = CommentQ.objects.filter(commented_by=self) - - - -@receiver(post_save, sender=User) # add this -def create_user_profile(sender, instance, created, **kwargs): - if created: - Profile.objects.create(user=instance) - -@receiver(post_save, sender=User) # add this -def save_user_profile(sender, instance, **kwargs): - instance.profile.save() - - -class Position(models.Model): - user = models.ForeignKey(User, on_delete=models.CASCADE) - company_name = models.CharField(max_length=30, default='') - title = models.CharField(max_length=30, default='') - company_website = models.CharField(max_length=30, default='') - technologies = models.CharField(max_length=30, default='') - responsibilities = models.CharField(max_length=30, default='') diff --git a/profile/tests.py b/profile/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/profile/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/profile/urls.py b/profile/urls.py deleted file mode 100644 index 5362410..0000000 --- a/profile/urls.py +++ /dev/null @@ -1,87 +0,0 @@ -from django.urls import path -from django.conf import settings -from django.conf.urls.static import static -from . import views -from django.views.decorators.cache import cache_page - -app_name = 'profile' - -urlpatterns = [ - - path('', views.home, name='home'), - - path('activityPageTabProfile///', views.activityPageTabProfile, name='activityPageTabProfile'), - - path('ActivityTabSummary///', views.ActivityTabSummary, name='ActivityTabSummary'), - - path('usersPage/', views.usersPage, name='usersPage'), - - path('Ajax_searchTag/', views.Ajax_searchTag, name='Ajax_searchTag'), - - path('tagsPage/', views.tagsPage, name='tagsPage'), - - path('Ajax_searchUser/', views.Ajax_searchUser, name='Ajax_searchUser'), - - path('checkNotifications/', views.checkNotifications, name='checkNotifications'), - - path('userProfileEdit_Settings//', views.userProfileEdit_Settings, name='userProfileEdit_Settings'), - - path('email_html/',views.email_html,name='email_html'), - - path('tagPage///', views.tagPage, name='tagPage'), - - path('otherWithSame_Badge//', views.otherWithSame_Badge, name='otherWithSame_Badge'), - - path('developerStoryTab//', views.developerStoryTab, name='developerStoryTab'), - - path('uploadPosition//', views.uploadPosition, name='uploadPosition'), - - path('addPositionAjax//', views.addPositionAjax, name='addPositionAjax'), - - path('select_BadgeTarget//', views.select_BadgeTarget, name='select_BadgeTarget'), - - path('activitAnswers///', views.activitAnswers, name='activitAnswers'), - - path('questionsActivity///', views.questionsActivity, name='questionsActivity'), - - path('tagsActivity///', views.tagsActivity, name='tagsActivity'), - - path('badgesActivity///', views.badgesActivity, name='badgesActivity'), - - path('bountiesActivity///', views.bountiesActivity, name='bountiesActivity'), - - path('bookmarksActivity///', views.bookmarksActivity, name='bookmarksActivity'), - - path('allActionsActivity///', views.allActionsActivity, name='allActionsActivity'), - - path('flag_summary///', views.flag_summary, name='flag_summary'), - - path('reputationActivity///', views.reputationActivity, name='reputationActivity'), - - path('Votes_castActivity///', views.Votes_castActivity, name='Votes_castActivity'), - - path('EditProfileAjaxForm//', views.EditProfileAjaxForm, name='EditProfileAjaxForm'), - - path('editProfile_JobPreAjax_Form//', views.editProfile_JobPreAjax_Form, name='editProfile_JobPreAjax_Form'), - - path('userProfileJonPrefrences_Settings//', views.userProfileJonPrefrences_Settings, name='userProfileJonPrefrences_Settings'), - - path('userProfileEdit_Email_Settings//', views.userProfileEdit_Email_Settings, name='userProfileEdit_Email_Settings'), - - path('editProfile_EditEmail_AjaxForm//', views.editProfile_EditEmail_AjaxForm, name='editProfile_EditEmail_AjaxForm'), - - path('loadQuestion_div//', views.loadQuestion_div, name='loadQuestion_div'), - - path('loadAnswer_div//', views.loadAnswer_div, name='loadAnswer_div'), - - path('searchTagFromQuery/', views.searchTagFromQuery, name='searchTagFromQuery'), - - path('bountied_home/', views.bountied_home, name='bountied_home'), - - path('hot_q_day_home/', views.hot_q_day_home, name='hot_q_day_home'), - - path('hot_q_week_home/', views.hot_q_week_home, name='hot_q_week_home'), - - path('hot_q_month_home/', views.hot_q_month_home, name='hot_q_month_home'), - -] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/profile/views.py b/profile/views.py deleted file mode 100644 index f1ec042..0000000 --- a/profile/views.py +++ /dev/null @@ -1,3333 +0,0 @@ -from django.shortcuts import render, redirect, get_object_or_404 -from .models import Profile,Position -import datetime -from django.utils import timezone -from datetime import timedelta -from qa.models import Answer,ProtectQuestion -from .forms import EditProfileForm,EmailForm,EditJobPrefrences,EditEmailForm -from django.contrib import messages -from django.core import mail -from django.template.loader import render_to_string -from django.utils.html import strip_tags -from django.core.mail import send_mail -from qa.models import Question,Bounty,BookmarkQuestion,CommentQ,Reputation,QUpvote,QDownvote -from itertools import chain -from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger -from review.models import CloseQuestionVotes,ReOpenQuestionVotes,FlagComment,FlagPost -from tagbadge.models import TagBadge -from django.contrib.auth.models import User -from taggit.models import Tag -from .decorators import unBanRequired,profileOwnerRequired_For_Edit -from .forms import PositionCreateForm,PositionCreateForm -from django.core import serializers -from django.http import JsonResponse, HttpResponseRedirect, HttpResponse -from django.db.models import Count,BooleanField, ExpressionWrapper, Q,Exists, OuterRef,Avg, Min,Max, Sum,F, IntegerField, FloatField,Case, Value, When -from django.views.decorators.cache import cache_page -from django.utils.decorators import method_decorator -from django.db.models import Q -from django.contrib.auth.decorators import login_required -from notification.models import Notification -from .decorators import profileOwnerRequired_For_Edit -from django.conf import settings -from django.core.cache.backends.base import DEFAULT_TIMEOUT -import re -from review.models import ReviewCloseVotes,ReviewQuestionReOpenVotes -from django.db.models import F -import online_users.models -from notification.models import PrivRepNotification - -CACHE_TTL = getattr(settings, 'CACHE_TTL', DEFAULT_TIMEOUT) - -""" -The HttpRequest.is_ajax() method is removed in DJANGO 4, -so i used is_ajax function to check if the request is -ajax or Not by identifying 'XMLHttpRequest' -Also replaced is_ajax method with this is_ajax function. -""" -def is_ajax(request): - return request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest' - -def Ajax_searchTag(request): - q = request.GET.get('w') - results = Tag.objects.filter(name__icontains=q).distinct() - serialized_results = [] - for result in results: - serialized_results.append({ - 'id': result.id, - 'tag_name': result.name, - # 'results':result, - }) - - return JsonResponse({'results': serialized_results}) - -def tagsPage(request): - All_tags = Question.tags.most_common() - - context = {'All_tags':All_tags,} - return render(request, 'profile/tagsPage.html', context) - -def usersPage(request): - users = User.objects.all() - - context = {'users': users} - return render(request, 'profile/usersPage.html', context) - -def Ajax_searchUser(request): - q = request.GET.get('w') - results = User.objects.filter(username__icontains=q).distinct() - serialized_results = [] - for result in results: - if result.profile.profile_photo: - photo = result.profile.profile_photo.url - else: - photo = '' - serialized_results.append({ - 'id': result.id, - 'photo': photo, - 'user_name': result.username, - # 'user_location': result.profile.location, - }) - print(serialized_results) - - return JsonResponse({'results': serialized_results}) - -# def tags(request): -# allTags = Question.tags.most_common() - -# context = {'allTags':allTags} -# return render(request, 'qa/tags.html', context) - - -def searchTagFromQuery(request): - - query = request.GET.get('tagQuery') - filters = request.GET.getlist('filters') - sort = request.GET.getlist('sort') - print(query) - print(filters) - print(sort) - # getTag = Tag.objects.filter(name__icontains=query) - getQuestions = '' - if query: - tags = query.split(',') - getQuestions = Question.objects.filter(tags__name__in=tags) - # tags = '' - if "NoAnswers" in filters: - bool_1 = True - else: - bool_1 = False - - if "NoAcceptedAnswer" in filters: - bool_2 = True - else: - bool_2 = False - - if "Bounty" in filters: - bool_3 = True - else: - bool_3 = False - - - - if bool_1 and bool_2 == False and bool_3 == False: - print("Only First is True") - - - - if bool_2 and bool_1 == False and bool_3 == False: - print("Only Second is True") - - - - if bool_2 and bool_1 == True and bool_3 == False: - print("First and Second is True") - - - if bool_1 and bool_3 == True and bool_2 == False: - print("First and Third is True") - - - if bool_2 and bool_3 == True and bool_2 == False: - print("Second and Third is True") - - - - -# qsts_pks = QueryStringTag.objects.filter(tag__pk__in=['12', '14', '15']).values_list('id', flat=True) - - - -# queries = QueryString.objects.filter(qsquerystring__pk__in=qsts_pks) - - - - context = {'filters':filters,'query':query,'getQuestions':getQuestions,} - return render(request, 'qa/searchTagFromQuery.html', context) - -""" -- Summary (It will be Default) - DONE -- Answers - DONE -- Questions - DONE -- Tags - DONE -- Badges - DONE -- Bookmarks - DONE -- Bounties - DONW -- Reputation -- All Actions - DONE -""" - -# def getQuestionFrom_tag(request, tag_id): - -# context = {} - -# @cache_page(60 * 15) -def activitAnswers(request, user_id, username): - profileData = get_object_or_404(Profile, pk=user_id) - - countAnswers = Answer.objects.filter(answer_owner=profileData.user).exclude(is_deleted=True).count() - - # Most Votes Answer - Tab One - most_vote_answers = Answer.objects.filter(answer_owner=user_id).annotate(countThem=Count('a_vote_ups')).order_by('-countThem') - page = request.GET.get('page', 1) - paginator = Paginator(most_vote_answers, 35) - try: - mostVotes_answers = paginator.page(page) - except PageNotAnInteger: - mostVotes_answers = paginator.page(1) - except EmptyPage: - mostVotes_answers = paginator.page(paginator.num_pages) - - - # Most Votes Answer - Tab One - recent_edited_answers = Answer.objects.filter(answer_owner=user_id).order_by('-a_edited_time') - recentAnswerPage = request.GET.get('page', 1) - recentAnswerPaginator = Paginator(recent_edited_answers, 35) - try: - recentEdited_answers = recentAnswerPaginator.page(recentAnswerPage) - except PageNotAnInteger: - recentEdited_answers = recentAnswerPaginator.page(1) - except EmptyPage: - recentEdited_answers = recentAnswerPaginator.page(recentAnswerPaginator.num_pages) - - - # Most Votes Answer - Tab One - new_answers = Answer.objects.filter(answer_owner=user_id).order_by('-date') - - newest_answer_page = request.GET.get('page', 1) - newest_answer_paginator = Paginator(new_answers, 35) - try: - newest_answers = newest_answer_paginator.page(newest_answer_page) - except PageNotAnInteger: - newest_answers = newest_answer_paginator.page(1) - except EmptyPage: - newest_answers = newest_answer_paginator.page(newest_answer_paginator.num_pages) - - - - USER_ONLINE_TIMEOUT = timedelta(seconds=5) - min_time = timezone.now() - (USER_ONLINE_TIMEOUT) - queryset = online_users.models.OnlineUserActivity.objects.filter( - user_id=user_id).annotate(is_online=Case( - When(last_activity__gte=min_time, then=Value(True)), - default=Value(False), - output_field=BooleanField(), - )) - - online_user_activity = get_object_or_404(queryset) - - - countVotedPosts_Q = QUpvote.objects.filter(upvote_by_q=user_id).count() - countDownVotedPosts_Q = QDownvote.objects.filter(downvote_by_q=user_id).count() - - countVotedPosts_A = Answer.objects.filter(a_vote_ups=user_id).count() - countDownVotedPosts_A = Answer.objects.filter(a_vote_downs=user_id).count() - - getVotesCast_Final = countVotedPosts_Q + countDownVotedPosts_Q + countVotedPosts_A + countDownVotedPosts_A - - # People Reached - getAllTheViewsOfAllTheQuestion = Question.objects.filter(post_owner=profileData.user).annotate(total_views=Count('viewers')).aggregate(Sum('total_views')) - - reputation_graph = Reputation.objects.filter(awarded_to=user_id)[:15] - - - # ----------Next Badge---------- START---------- - countComments = CommentQ.objects.filter(commented_by=profileData.user).count() - - - - if profileData.about_me == '': - completed = True - else: - completed = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Benefactor").exists(): - benefactor_earned = True - else: - benefactor_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Citizen Patrol",bade_position="BADGE").exists(): - ctzn_ptrl_earned = True - else: - ctzn_ptrl_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Civic Duty",bade_position="BADGE").exists(): - civc_duty = True - else: - civc_duty = False - getVotedOnQ = Question.objects.filter(qupvote__upvote_by_q=profileData.user).count() - getVotedOnQ_Down = Question.objects.filter(qdownvote__downvote_by_q=profileData.user).count() - getVotedOn = Answer.objects.filter(a_vote_ups=profileData.user).count() - getVotedOn_Down = Answer.objects.filter(a_vote_downs=profileData.user).count() - - countVotes = getVotedOnQ+getVotedOnQ_Down+getVotedOn+getVotedOn_Down - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Critic", bade_position="BADGE").exists(): - critic_earned = True - else: - critic_earned = False - - - - if profileData.helpful_flags_counter: - deputy_earned = True - else: - deputy_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Disciplined",bade_position="BADGE").exists(): - disclpned_earned = True - else: - disclpned_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Excavator",bade_position="BADGE").exists(): - excvter_earned = True - else: - excvter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Investor", bade_position="BADGE").exists(): - investor_earned = True - else: - investor_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="GOLD", tag_name="Marshal", bade_position="BADGE").exists(): - marshal_earned = True - else: - marshal_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Necromancer",bade_position="BADGE").exists(): - necromancer_earned = True - else: - necromancer_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Peer Pressure",bade_position="BADGE").exists(): - pr_pressre_earned = True - else: - pr_pressre_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Promoter", bade_position="BADGE").exists(): - promoter_earned = True - else: - promoter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Proofreader",bade_position="BADGE").exists(): - proffreader_earned = True - else: - proffreader_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Refiner",bade_position="BADGE").exists(): - refiner_earned = True - else: - refiner_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="Bronze", tag_name="Revival",bade_position="BADGE").exists(): - reviv_earned = True - else: - reviv_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Self-Learner",bade_position="BADGE").exists(): - slf_lrnr_earned = True - else: - slf_lrnr_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Strunk & White",bade_position="BADGE").exists(): - stnk_whte_earned = True - else: - stnk_whte_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Suffrage",bade_position="BADGE").exists(): - suffrage_earned = True - else: - suffrage_earned = False - - last_24_hours = timezone.now() - timedelta(hours=24) - getQ_Votes_in_24_Hours = QUpvote.objects.filter(date__gt=last_24_hours).count() - getQ_DownVotes_in_24_Hours = QDownvote.objects.filter(downvote_by_q=profileData.user, date__gt=last_24_hours).count() - getA_Votes_in_24_Hours = Answer.objects.filter(a_vote_ups=profileData.user, date__gt=last_24_hours).count() - getA_DownVotes_in_24_Hours = Answer.objects.filter(a_vote_downs=profileData.user, date__gt=last_24_hours).count() - totalVotes = getQ_Votes_in_24_Hours + getQ_DownVotes_in_24_Hours + getA_Votes_in_24_Hours + getA_DownVotes_in_24_Hours - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Vox Populi",bade_position="BADGE").exists(): - vx_pop_earned = True - else: - vx_pop_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Teacher",bade_position="BADGE").exists(): - teacher_earned = True - else: - teacher_earned = False - - newestBadge = TagBadge.objects.filter(awarded_to_user=profileData.user).last() - - # ----------Next Badge---------- END---------- - - - context = { - 'newestBadge':newestBadge, - 'countVotes':countVotes, - 'teacher_earned':teacher_earned, - 'totalVotes':totalVotes, - 'vx_pop_earned':vx_pop_earned, - 'suffrage_earned':suffrage_earned, - 'stnk_whte_earned':stnk_whte_earned, - 'slf_lrnr_earned':slf_lrnr_earned, - 'reviv_earned':reviv_earned, - 'refiner_earned':refiner_earned, - 'proffreader_earned':proffreader_earned, - 'promoter_earned':promoter_earned, - 'necromancer_earned':necromancer_earned, - 'marshal_earned':marshal_earned, - 'investor_earned':investor_earned, - 'pr_pressre_earned':pr_pressre_earned, - 'excvter_earned':excvter_earned, - 'deputy_earned':deputy_earned, - 'disclpned_earned':disclpned_earned, - 'civc_duty':civc_duty, - 'critic_earned':critic_earned, - 'ctzn_ptrl_earned':ctzn_ptrl_earned, - 'benefactor_earned':benefactor_earned, - 'completed':completed, - 'countComments':countComments, - 'countAnswers':countAnswers,'reputation_graph':reputation_graph,'getAllTheViewsOfAllTheQuestion':getAllTheViewsOfAllTheQuestion,'recentEdited_answers':recentEdited_answers,'newest_answers':newest_answers,'mostVotes_answers':mostVotes_answers,'profileData':profileData,'online_user_activity':online_user_activity,'getVotesCast_Final':getVotesCast_Final,} - return render(request, 'profile/activitAnswers.html', context) - -# IMPLEMENTED THE LOGIC - # It will contain answers with "templatetags" - # Most Votes | Last Edited | Most Recent | Most Views - # with pagination -def questionsActivity(request, user_id, username): - profileData = get_object_or_404(Profile, pk=user_id) - - countQuestions = Question.objects.filter(post_owner=profileData.user).exclude(is_deleted=True).count() - - question_most_votes = Question.objects.filter(post_owner=user_id).exclude(is_deleted=True).annotate(countThem=Count('qupvote')).order_by('-countThem') - - question_recent_activity = Question.objects.filter(post_owner=user_id).exclude(is_deleted=True).order_by('-active_date') - - question_newest = Question.objects.filter(post_owner=user_id).exclude(is_deleted=True).order_by('-date') - - question_most_views = Question.objects.filter(post_owner=user_id).exclude(is_deleted=True).annotate(countTheViews=Count('viewers')).order_by('-viewers') - - # page = request.GET.get('page', 1) - # paginator = Paginator(most_vote_answers, 35) - # try: - # mostVotes_answers = paginator.page(page) - # except PageNotAnInteger: - # mostVotes_answers = paginator.page(1) - # except EmptyPage: - # mostVotes_answers = paginator.page(paginator.num_pages) - - - - - - USER_ONLINE_TIMEOUT = timedelta(seconds=5) - min_time = timezone.now() - (USER_ONLINE_TIMEOUT) - queryset = online_users.models.OnlineUserActivity.objects.filter( - user_id=user_id).annotate(is_online=Case( - When(last_activity__gte=min_time, then=Value(True)), - default=Value(False), - output_field=BooleanField(), - )) - - online_user_activity = get_object_or_404(queryset) - - - - countVotedPosts_Q = QUpvote.objects.filter(upvote_by_q=user_id).count() - countDownVotedPosts_Q = QDownvote.objects.filter(downvote_by_q=user_id).count() - - countVotedPosts_A = Answer.objects.filter(a_vote_ups=user_id).count() - countDownVotedPosts_A = Answer.objects.filter(a_vote_downs=user_id).count() - - getVotesCast_Final = countVotedPosts_Q + countDownVotedPosts_Q + countVotedPosts_A + countDownVotedPosts_A - - - # People Reached - getAllTheViewsOfAllTheQuestion = Question.objects.filter(post_owner=profileData.user).annotate(total_views=Count('viewers')).aggregate(Sum('total_views')) - - reputation_graph = Reputation.objects.filter(awarded_to=user_id)[:15] - - - - # ----------Next Badge---------- START---------- - countComments = CommentQ.objects.filter(commented_by=profileData.user).count() - - - - if profileData.about_me != '': - completed = True - else: - completed = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Benefactor").exists(): - benefactor_earned = True - else: - benefactor_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Citizen Patrol",bade_position="BADGE").exists(): - ctzn_ptrl_earned = True - else: - ctzn_ptrl_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Civic Duty",bade_position="BADGE").exists(): - civc_duty = True - else: - civc_duty = False - getVotedOnQ = Question.objects.filter(qupvote__upvote_by_q=profileData.user).count() - getVotedOnQ_Down = Question.objects.filter(qdownvote__downvote_by_q=profileData.user).count() - getVotedOn = Answer.objects.filter(a_vote_ups=profileData.user).count() - getVotedOn_Down = Answer.objects.filter(a_vote_downs=profileData.user).count() - - countVotes = getVotedOnQ+getVotedOnQ_Down+getVotedOn+getVotedOn_Down - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Critic", bade_position="BADGE").exists(): - critic_earned = True - else: - critic_earned = False - - - - if profileData.helpful_flags_counter: - deputy_earned = True - else: - deputy_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Disciplined",bade_position="BADGE").exists(): - disclpned_earned = True - else: - disclpned_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Excavator",bade_position="BADGE").exists(): - excvter_earned = True - else: - excvter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Investor", bade_position="BADGE").exists(): - investor_earned = True - else: - investor_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="GOLD", tag_name="Marshal", bade_position="BADGE").exists(): - marshal_earned = True - else: - marshal_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Necromancer",bade_position="BADGE").exists(): - necromancer_earned = True - else: - necromancer_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Peer Pressure",bade_position="BADGE").exists(): - pr_pressre_earned = True - else: - pr_pressre_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Promoter", bade_position="BADGE").exists(): - promoter_earned = True - else: - promoter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Proofreader",bade_position="BADGE").exists(): - proffreader_earned = True - else: - proffreader_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Refiner",bade_position="BADGE").exists(): - refiner_earned = True - else: - refiner_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="Bronze", tag_name="Revival",bade_position="BADGE").exists(): - reviv_earned = True - else: - reviv_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Self-Learner",bade_position="BADGE").exists(): - slf_lrnr_earned = True - else: - slf_lrnr_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Strunk & White",bade_position="BADGE").exists(): - stnk_whte_earned = True - else: - stnk_whte_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Suffrage",bade_position="BADGE").exists(): - suffrage_earned = True - else: - suffrage_earned = False - - last_24_hours = timezone.now() - timedelta(hours=24) - getQ_Votes_in_24_Hours = QUpvote.objects.filter(date__gt=last_24_hours).count() - getQ_DownVotes_in_24_Hours = QDownvote.objects.filter(downvote_by_q=profileData.user, date__gt=last_24_hours).count() - getA_Votes_in_24_Hours = Answer.objects.filter(a_vote_ups=profileData.user, date__gt=last_24_hours).count() - getA_DownVotes_in_24_Hours = Answer.objects.filter(a_vote_downs=profileData.user, date__gt=last_24_hours).count() - totalVotes = getQ_Votes_in_24_Hours + getQ_DownVotes_in_24_Hours + getA_Votes_in_24_Hours + getA_DownVotes_in_24_Hours - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Vox Populi",bade_position="BADGE").exists(): - vx_pop_earned = True - else: - vx_pop_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Teacher",bade_position="BADGE").exists(): - teacher_earned = True - else: - teacher_earned = False - - newestBadge = TagBadge.objects.filter(awarded_to_user=profileData.user).last() - - # ----------Next Badge---------- END---------- - - context = { - 'newestBadge':newestBadge, - 'countVotes':countVotes, - 'teacher_earned':teacher_earned, - 'totalVotes':totalVotes, - 'vx_pop_earned':vx_pop_earned, - 'suffrage_earned':suffrage_earned, - 'stnk_whte_earned':stnk_whte_earned, - 'slf_lrnr_earned':slf_lrnr_earned, - 'reviv_earned':reviv_earned, - 'refiner_earned':refiner_earned, - 'proffreader_earned':proffreader_earned, - 'promoter_earned':promoter_earned, - 'necromancer_earned':necromancer_earned, - 'marshal_earned':marshal_earned, - 'investor_earned':investor_earned, - 'pr_pressre_earned':pr_pressre_earned, - 'excvter_earned':excvter_earned, - 'deputy_earned':deputy_earned, - 'disclpned_earned':disclpned_earned, - 'civc_duty':civc_duty, - 'critic_earned':critic_earned, - 'ctzn_ptrl_earned':ctzn_ptrl_earned, - 'benefactor_earned':benefactor_earned, - 'completed':completed, - 'countComments':countComments, - - 'reputation_graph':reputation_graph, - 'online_user_activity':online_user_activity, - 'getVotesCast_Final':getVotesCast_Final, - 'question_most_votes':question_most_votes, - 'profileData':profileData, - 'question_recent_activity':question_recent_activity, - 'question_newest':question_newest, - 'question_most_views':question_most_views, - 'getAllTheViewsOfAllTheQuestion':getAllTheViewsOfAllTheQuestion, - 'countQuestions':countQuestions, - } - return render(request, 'profile/questionsActivity.html', context) - -# IMPLEMENTED THE LOGIC - # It will contain all the tags user answered on. -def tagsActivity(request, user_id, username): - profileData = get_object_or_404(Profile, pk=user_id) - tags = Tag.objects.filter(question__answer__answer_owner=user_id).annotate(answeredOn=Count('taggit_taggeditem_items')) - - - - totalBookmarks = BookmarkQuestion.objects.filter(bookmarked_by=user_id).count() - -# Last seen -# To Show Last Seen in Profile. You'll see as "Last seen" -# Transfer this Variable into config.py - USER_ONLINE_TIMEOUT = timedelta(seconds=5) - min_time = timezone.now() - (USER_ONLINE_TIMEOUT) - queryset = online_users.models.OnlineUserActivity.objects.filter( - user_id=user_id).annotate(is_online=Case( - When(last_activity__gte=min_time, then=Value(True)), - default=Value(False), - output_field=BooleanField(), - )) - - online_user_activity = get_object_or_404(queryset) - - - - # Total Votes Cast - countVotedPosts_Q = QUpvote.objects.filter(upvote_by_q=user_id).count() - countDownVotedPosts_Q = QDownvote.objects.filter(downvote_by_q=user_id).count() - - countVotedPosts_A = Answer.objects.filter(a_vote_ups=user_id).count() - countDownVotedPosts_A = Answer.objects.filter(a_vote_downs=user_id).count() - - getVotesCast_Final = countVotedPosts_Q + countDownVotedPosts_Q + countVotedPosts_A + countDownVotedPosts_A - - - - # People Reached - getAllTheViewsOfAllTheQuestion = Question.objects.filter(post_owner=profileData.user).annotate(total_views=Count('viewers')).aggregate(Sum('total_views')) - - - reputation_graph = Reputation.objects.filter(awarded_to=user_id)[:15] - - - - - # ----------Next Badge---------- START---------- - countComments = CommentQ.objects.filter(commented_by=profileData.user).count() - - - - if profileData.about_me != '': - completed = True - else: - completed = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Benefactor").exists(): - benefactor_earned = True - else: - benefactor_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Citizen Patrol",bade_position="BADGE").exists(): - ctzn_ptrl_earned = True - else: - ctzn_ptrl_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Civic Duty",bade_position="BADGE").exists(): - civc_duty = True - else: - civc_duty = False - getVotedOnQ = Question.objects.filter(qupvote__upvote_by_q=profileData.user).count() - getVotedOnQ_Down = Question.objects.filter(qdownvote__downvote_by_q=profileData.user).count() - getVotedOn = Answer.objects.filter(a_vote_ups=profileData.user).count() - getVotedOn_Down = Answer.objects.filter(a_vote_downs=profileData.user).count() - - countVotes = getVotedOnQ+getVotedOnQ_Down+getVotedOn+getVotedOn_Down - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Critic", bade_position="BADGE").exists(): - critic_earned = True - else: - critic_earned = False - - - - if profileData.helpful_flags_counter: - deputy_earned = True - else: - deputy_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Disciplined",bade_position="BADGE").exists(): - disclpned_earned = True - else: - disclpned_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Excavator",bade_position="BADGE").exists(): - excvter_earned = True - else: - excvter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Investor", bade_position="BADGE").exists(): - investor_earned = True - else: - investor_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="GOLD", tag_name="Marshal", bade_position="BADGE").exists(): - marshal_earned = True - else: - marshal_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Necromancer",bade_position="BADGE").exists(): - necromancer_earned = True - else: - necromancer_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Peer Pressure",bade_position="BADGE").exists(): - pr_pressre_earned = True - else: - pr_pressre_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Promoter", bade_position="BADGE").exists(): - promoter_earned = True - else: - promoter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Proofreader",bade_position="BADGE").exists(): - proffreader_earned = True - else: - proffreader_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Refiner",bade_position="BADGE").exists(): - refiner_earned = True - else: - refiner_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="Bronze", tag_name="Revival",bade_position="BADGE").exists(): - reviv_earned = True - else: - reviv_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Self-Learner",bade_position="BADGE").exists(): - slf_lrnr_earned = True - else: - slf_lrnr_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Strunk & White",bade_position="BADGE").exists(): - stnk_whte_earned = True - else: - stnk_whte_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Suffrage",bade_position="BADGE").exists(): - suffrage_earned = True - else: - suffrage_earned = False - - last_24_hours = timezone.now() - timedelta(hours=24) - getQ_Votes_in_24_Hours = QUpvote.objects.filter(date__gt=last_24_hours).count() - getQ_DownVotes_in_24_Hours = QDownvote.objects.filter(downvote_by_q=profileData.user, date__gt=last_24_hours).count() - getA_Votes_in_24_Hours = Answer.objects.filter(a_vote_ups=profileData.user, date__gt=last_24_hours).count() - getA_DownVotes_in_24_Hours = Answer.objects.filter(a_vote_downs=profileData.user, date__gt=last_24_hours).count() - totalVotes = getQ_Votes_in_24_Hours + getQ_DownVotes_in_24_Hours + getA_Votes_in_24_Hours + getA_DownVotes_in_24_Hours - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Vox Populi",bade_position="BADGE").exists(): - vx_pop_earned = True - else: - vx_pop_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Teacher",bade_position="BADGE").exists(): - teacher_earned = True - else: - teacher_earned = False - - newestBadge = TagBadge.objects.filter(awarded_to_user=profileData.user).last() - - # ----------Next Badge---------- END---------- - - - - context = { - 'newestBadge':newestBadge, - 'countVotes':countVotes, - 'teacher_earned':teacher_earned, - 'totalVotes':totalVotes, - 'vx_pop_earned':vx_pop_earned, - 'suffrage_earned':suffrage_earned, - 'stnk_whte_earned':stnk_whte_earned, - 'slf_lrnr_earned':slf_lrnr_earned, - 'reviv_earned':reviv_earned, - 'refiner_earned':refiner_earned, - 'proffreader_earned':proffreader_earned, - 'promoter_earned':promoter_earned, - 'necromancer_earned':necromancer_earned, - 'marshal_earned':marshal_earned, - 'investor_earned':investor_earned, - 'pr_pressre_earned':pr_pressre_earned, - 'excvter_earned':excvter_earned, - 'deputy_earned':deputy_earned, - 'disclpned_earned':disclpned_earned, - 'civc_duty':civc_duty, - 'critic_earned':critic_earned, - 'ctzn_ptrl_earned':ctzn_ptrl_earned, - 'benefactor_earned':benefactor_earned, - 'completed':completed, - 'countComments':countComments, - 'reputation_graph':reputation_graph,'totalBookmarks':totalBookmarks,'getAllTheViewsOfAllTheQuestion':getAllTheViewsOfAllTheQuestion,'getVotesCast_Final':getVotesCast_Final,'online_user_activity':online_user_activity,'tags':tags,'profileData':profileData} - return render(request, 'profile/tagsActivity.html', context) - - -# IMPLEMENTED THE LOGIC - # It will display all the badges and tag badges. - # Recent Earned | Only TagBadge -def badgesActivity(request, user_id, username): - profileData = get_object_or_404(Profile, pk=user_id) - badges = TagBadge.objects.filter(awarded_to_user=user_id) - - totalBadges = badges.count() - - totalBookmarks = BookmarkQuestion.objects.filter(bookmarked_by=user_id).count() - - - -# Last seen -# To Show Last Seen in Profile. You'll see as "Last seen" -# Transfer this Variable into config.py - USER_ONLINE_TIMEOUT = timedelta(seconds=5) - min_time = timezone.now() - (USER_ONLINE_TIMEOUT) - queryset = online_users.models.OnlineUserActivity.objects.filter( - user_id=user_id).annotate(is_online=Case( - When(last_activity__gte=min_time, then=Value(True)), - default=Value(False), - output_field=BooleanField(), - )) - - online_user_activity = get_object_or_404(queryset) - - - - # Total Votes Cast - countVotedPosts_Q = QUpvote.objects.filter(upvote_by_q=user_id).count() - countDownVotedPosts_Q = QDownvote.objects.filter(downvote_by_q=user_id).count() - - countVotedPosts_A = Answer.objects.filter(a_vote_ups=user_id).count() - countDownVotedPosts_A = Answer.objects.filter(a_vote_downs=user_id).count() - - getVotesCast_Final = countVotedPosts_Q + countDownVotedPosts_Q + countVotedPosts_A + countDownVotedPosts_A - - - # People Reached - getAllTheViewsOfAllTheQuestion = Question.objects.filter(post_owner=profileData.user).annotate(total_views=Count('viewers')).aggregate(Sum('total_views')) - - - - reputation_graph = Reputation.objects.filter(awarded_to=user_id)[:15] - - - # ----------Next Badge---------- START---------- - countComments = CommentQ.objects.filter(commented_by=profileData.user).count() - - - - if profileData.about_me != '': - completed = True - else: - completed = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Benefactor").exists(): - benefactor_earned = True - else: - benefactor_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Citizen Patrol",bade_position="BADGE").exists(): - ctzn_ptrl_earned = True - else: - ctzn_ptrl_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Civic Duty",bade_position="BADGE").exists(): - civc_duty = True - else: - civc_duty = False - getVotedOnQ = Question.objects.filter(qupvote__upvote_by_q=profileData.user).count() - getVotedOnQ_Down = Question.objects.filter(qdownvote__downvote_by_q=profileData.user).count() - getVotedOn = Answer.objects.filter(a_vote_ups=profileData.user).count() - getVotedOn_Down = Answer.objects.filter(a_vote_downs=profileData.user).count() - - countVotes = getVotedOnQ+getVotedOnQ_Down+getVotedOn+getVotedOn_Down - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Critic", bade_position="BADGE").exists(): - critic_earned = True - else: - critic_earned = False - - - - if profileData.helpful_flags_counter: - deputy_earned = True - else: - deputy_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Disciplined",bade_position="BADGE").exists(): - disclpned_earned = True - else: - disclpned_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Excavator",bade_position="BADGE").exists(): - excvter_earned = True - else: - excvter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Investor", bade_position="BADGE").exists(): - investor_earned = True - else: - investor_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="GOLD", tag_name="Marshal", bade_position="BADGE").exists(): - marshal_earned = True - else: - marshal_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Necromancer",bade_position="BADGE").exists(): - necromancer_earned = True - else: - necromancer_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Peer Pressure",bade_position="BADGE").exists(): - pr_pressre_earned = True - else: - pr_pressre_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Promoter", bade_position="BADGE").exists(): - promoter_earned = True - else: - promoter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Proofreader",bade_position="BADGE").exists(): - proffreader_earned = True - else: - proffreader_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Refiner",bade_position="BADGE").exists(): - refiner_earned = True - else: - refiner_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="Bronze", tag_name="Revival",bade_position="BADGE").exists(): - reviv_earned = True - else: - reviv_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Self-Learner",bade_position="BADGE").exists(): - slf_lrnr_earned = True - else: - slf_lrnr_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Strunk & White",bade_position="BADGE").exists(): - stnk_whte_earned = True - else: - stnk_whte_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Suffrage",bade_position="BADGE").exists(): - suffrage_earned = True - else: - suffrage_earned = False - - last_24_hours = timezone.now() - timedelta(hours=24) - getQ_Votes_in_24_Hours = QUpvote.objects.filter(date__gt=last_24_hours).count() - getQ_DownVotes_in_24_Hours = QDownvote.objects.filter(downvote_by_q=profileData.user, date__gt=last_24_hours).count() - getA_Votes_in_24_Hours = Answer.objects.filter(a_vote_ups=profileData.user, date__gt=last_24_hours).count() - getA_DownVotes_in_24_Hours = Answer.objects.filter(a_vote_downs=profileData.user, date__gt=last_24_hours).count() - totalVotes = getQ_Votes_in_24_Hours + getQ_DownVotes_in_24_Hours + getA_Votes_in_24_Hours + getA_DownVotes_in_24_Hours - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Vox Populi",bade_position="BADGE").exists(): - vx_pop_earned = True - else: - vx_pop_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Teacher",bade_position="BADGE").exists(): - teacher_earned = True - else: - teacher_earned = False - - newestBadge = TagBadge.objects.filter(awarded_to_user=profileData.user).last() - - # ----------Next Badge---------- END---------- - - - context = { - 'newestBadge':newestBadge, - 'countVotes':countVotes, - 'teacher_earned':teacher_earned, - 'totalVotes':totalVotes, - 'vx_pop_earned':vx_pop_earned, - 'suffrage_earned':suffrage_earned, - 'stnk_whte_earned':stnk_whte_earned, - 'slf_lrnr_earned':slf_lrnr_earned, - 'reviv_earned':reviv_earned, - 'refiner_earned':refiner_earned, - 'proffreader_earned':proffreader_earned, - 'promoter_earned':promoter_earned, - 'necromancer_earned':necromancer_earned, - 'marshal_earned':marshal_earned, - 'investor_earned':investor_earned, - 'pr_pressre_earned':pr_pressre_earned, - 'excvter_earned':excvter_earned, - 'deputy_earned':deputy_earned, - 'disclpned_earned':disclpned_earned, - 'civc_duty':civc_duty, - 'critic_earned':critic_earned, - 'ctzn_ptrl_earned':ctzn_ptrl_earned, - 'benefactor_earned':benefactor_earned, - 'completed':completed, - 'countComments':countComments,'reputation_graph':reputation_graph,'totalBadges':totalBadges,'totalBookmarks':totalBookmarks,'online_user_activity':online_user_activity,'getAllTheViewsOfAllTheQuestion':getAllTheViewsOfAllTheQuestion,'getVotesCast_Final':getVotesCast_Final,'badges':badges,'profileData':profileData} - return render(request, 'profile/badgesActivity.html', context) - - -""" -[COMPLETED]-[IMPLEMENTED] = Will do this later, Because i have to make another Model because i made -a M2M Field in which i can't get most recents records (bookmakrds by user_id) -""" -# IMPLEMENTED THE LOGIC - # It will show all the questions bookmarked by user_id. - # Most Votes | Last Edited | Most Recent | Most Views -# def bookmarksActivity(request, user_id, username): -# profileData = get_object_or_404(Profile, pk=user_id) -# bookmarks = BookmarkQuestion.objects.filter(bookmarked_by=user_id) - -# context = {'bookmarks':bookmarks,'profileData':profileData} -# return render(request, 'profile/bookmarksActivity.html', context) - - - -def bountiesActivity(request, user_id, username): - profileData = get_object_or_404(Profile, pk=user_id) - # It will show all the bounties that are declared by user_id - - countBounties = Bounty.objects.filter(by_user=profileData.user).count() - - LAST_SEVEN_DAYS = timezone.now() - timedelta(days=7) - - # Earned | Active | Offered by user_id - active_bounties = Bounty.objects.filter(by_user=user_id, date__gt=LAST_SEVEN_DAYS) - - earned_bounties = Bounty.objects.filter(bounty_awarded_to=user_id) - - - USER_ONLINE_TIMEOUT = timedelta(seconds=5) - min_time = timezone.now() - (USER_ONLINE_TIMEOUT) - queryset = online_users.models.OnlineUserActivity.objects.filter( - user_id=user_id).annotate(is_online=Case( - When(last_activity__gte=min_time, then=Value(True)), - default=Value(False), - output_field=BooleanField(), - )) - - online_user_activity = get_object_or_404(queryset) - - - # Total Votes Cast - countVotedPosts_Q = QUpvote.objects.filter(upvote_by_q=user_id).count() - countDownVotedPosts_Q = QDownvote.objects.filter(downvote_by_q=user_id).count() - - countVotedPosts_A = Answer.objects.filter(a_vote_ups=user_id).count() - countDownVotedPosts_A = Answer.objects.filter(a_vote_downs=user_id).count() - - getVotesCast_Final = countVotedPosts_Q + countDownVotedPosts_Q + countVotedPosts_A + countDownVotedPosts_A - - - # People Reached - getAllTheViewsOfAllTheQuestion = Question.objects.filter(post_owner=profileData.user).annotate(total_views=Count('viewers')).aggregate(Sum('total_views')) - - - reputation_graph = Reputation.objects.filter(awarded_to=user_id)[:15] - - - # ----------Next Badge---------- START---------- - countComments = CommentQ.objects.filter(commented_by=profileData.user).count() - - - - if profileData.about_me != '': - completed = True - else: - completed = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Benefactor").exists(): - benefactor_earned = True - else: - benefactor_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Citizen Patrol",bade_position="BADGE").exists(): - ctzn_ptrl_earned = True - else: - ctzn_ptrl_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Civic Duty",bade_position="BADGE").exists(): - civc_duty = True - else: - civc_duty = False - getVotedOnQ = Question.objects.filter(qupvote__upvote_by_q=profileData.user).count() - getVotedOnQ_Down = Question.objects.filter(qdownvote__downvote_by_q=profileData.user).count() - getVotedOn = Answer.objects.filter(a_vote_ups=profileData.user).count() - getVotedOn_Down = Answer.objects.filter(a_vote_downs=profileData.user).count() - - countVotes = getVotedOnQ+getVotedOnQ_Down+getVotedOn+getVotedOn_Down - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Critic", bade_position="BADGE").exists(): - critic_earned = True - else: - critic_earned = False - - - - if profileData.helpful_flags_counter: - deputy_earned = True - else: - deputy_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Disciplined",bade_position="BADGE").exists(): - disclpned_earned = True - else: - disclpned_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Excavator",bade_position="BADGE").exists(): - excvter_earned = True - else: - excvter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Investor", bade_position="BADGE").exists(): - investor_earned = True - else: - investor_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="GOLD", tag_name="Marshal", bade_position="BADGE").exists(): - marshal_earned = True - else: - marshal_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Necromancer",bade_position="BADGE").exists(): - necromancer_earned = True - else: - necromancer_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Peer Pressure",bade_position="BADGE").exists(): - pr_pressre_earned = True - else: - pr_pressre_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Promoter", bade_position="BADGE").exists(): - promoter_earned = True - else: - promoter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Proofreader",bade_position="BADGE").exists(): - proffreader_earned = True - else: - proffreader_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Refiner",bade_position="BADGE").exists(): - refiner_earned = True - else: - refiner_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="Bronze", tag_name="Revival",bade_position="BADGE").exists(): - reviv_earned = True - else: - reviv_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Self-Learner",bade_position="BADGE").exists(): - slf_lrnr_earned = True - else: - slf_lrnr_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Strunk & White",bade_position="BADGE").exists(): - stnk_whte_earned = True - else: - stnk_whte_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Suffrage",bade_position="BADGE").exists(): - suffrage_earned = True - else: - suffrage_earned = False - - last_24_hours = timezone.now() - timedelta(hours=24) - getQ_Votes_in_24_Hours = QUpvote.objects.filter(date__gt=last_24_hours).count() - getQ_DownVotes_in_24_Hours = QDownvote.objects.filter(downvote_by_q=profileData.user, date__gt=last_24_hours).count() - getA_Votes_in_24_Hours = Answer.objects.filter(a_vote_ups=profileData.user, date__gt=last_24_hours).count() - getA_DownVotes_in_24_Hours = Answer.objects.filter(a_vote_downs=profileData.user, date__gt=last_24_hours).count() - totalVotes = getQ_Votes_in_24_Hours + getQ_DownVotes_in_24_Hours + getA_Votes_in_24_Hours + getA_DownVotes_in_24_Hours - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Vox Populi",bade_position="BADGE").exists(): - vx_pop_earned = True - else: - vx_pop_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Teacher",bade_position="BADGE").exists(): - teacher_earned = True - else: - teacher_earned = False - - newestBadge = TagBadge.objects.filter(awarded_to_user=profileData.user).last() - - # ----------Next Badge---------- END---------- - - - - context = { - 'newestBadge':newestBadge, - 'countVotes':countVotes, - 'teacher_earned':teacher_earned, - 'totalVotes':totalVotes, - 'vx_pop_earned':vx_pop_earned, - 'suffrage_earned':suffrage_earned, - 'stnk_whte_earned':stnk_whte_earned, - 'slf_lrnr_earned':slf_lrnr_earned, - 'reviv_earned':reviv_earned, - 'refiner_earned':refiner_earned, - 'proffreader_earned':proffreader_earned, - 'promoter_earned':promoter_earned, - 'necromancer_earned':necromancer_earned, - 'marshal_earned':marshal_earned, - 'investor_earned':investor_earned, - 'pr_pressre_earned':pr_pressre_earned, - 'excvter_earned':excvter_earned, - 'deputy_earned':deputy_earned, - 'disclpned_earned':disclpned_earned, - 'civc_duty':civc_duty, - 'critic_earned':critic_earned, - 'ctzn_ptrl_earned':ctzn_ptrl_earned, - 'benefactor_earned':benefactor_earned, - 'completed':completed, - 'countComments':countComments,'countBounties':countBounties,'online_user_activity':online_user_activity,'getAllTheViewsOfAllTheQuestion':getAllTheViewsOfAllTheQuestion,'getVotesCast_Final':getVotesCast_Final,'earned_bounties':earned_bounties,'reputation_graph':reputation_graph,'active_bounties':active_bounties,'profileData':profileData} - return render(request, 'profile/bountiesActivity.html', context) - - - -def reputationActivity(request, user_id, username): - profileData = get_object_or_404(Profile, pk=user_id) - # It will show all the earned and decreased reputation order_by('date') - # Date | Graph - - USER_ONLINE_TIMEOUT = timedelta(seconds=5) - min_time = timezone.now() - (USER_ONLINE_TIMEOUT) - queryset = online_users.models.OnlineUserActivity.objects.filter( - user_id=user_id).annotate(is_online=Case( - When(last_activity__gte=min_time, then=Value(True)), - default=Value(False), - output_field=BooleanField(), - )) - - online_user_activity = get_object_or_404(queryset) - - - # Total Votes Cast - countVotedPosts_Q = QUpvote.objects.filter(upvote_by_q=user_id).count() - countDownVotedPosts_Q = QDownvote.objects.filter(downvote_by_q=user_id).count() - - countVotedPosts_A = Answer.objects.filter(a_vote_ups=user_id).count() - countDownVotedPosts_A = Answer.objects.filter(a_vote_downs=user_id).count() - - getVotesCast_Final = countVotedPosts_Q + countDownVotedPosts_Q + countVotedPosts_A + countDownVotedPosts_A - - - # People Reached - getAllTheViewsOfAllTheQuestion = Question.objects.filter(post_owner=profileData.user).annotate(total_views=Count('viewers')).aggregate(Sum('total_views')) - - - - reputation_graph = Reputation.objects.filter(awarded_to=user_id)[:15] - - get_rep_data = Reputation.objects.filter(awarded_to=user_id).order_by('-date_earned') - - - - # ----------Next Badge---------- START---------- - countComments = CommentQ.objects.filter(commented_by=profileData.user).count() - - - - if profileData.about_me != '': - completed = True - else: - completed = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Benefactor").exists(): - benefactor_earned = True - else: - benefactor_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Citizen Patrol",bade_position="BADGE").exists(): - ctzn_ptrl_earned = True - else: - ctzn_ptrl_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Civic Duty",bade_position="BADGE").exists(): - civc_duty = True - else: - civc_duty = False - getVotedOnQ = Question.objects.filter(qupvote__upvote_by_q=profileData.user).count() - getVotedOnQ_Down = Question.objects.filter(qdownvote__downvote_by_q=profileData.user).count() - getVotedOn = Answer.objects.filter(a_vote_ups=profileData.user).count() - getVotedOn_Down = Answer.objects.filter(a_vote_downs=profileData.user).count() - - countVotes = getVotedOnQ+getVotedOnQ_Down+getVotedOn+getVotedOn_Down - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Critic", bade_position="BADGE").exists(): - critic_earned = True - else: - critic_earned = False - - - - if profileData.helpful_flags_counter: - deputy_earned = True - else: - deputy_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Disciplined",bade_position="BADGE").exists(): - disclpned_earned = True - else: - disclpned_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Excavator",bade_position="BADGE").exists(): - excvter_earned = True - else: - excvter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Investor", bade_position="BADGE").exists(): - investor_earned = True - else: - investor_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="GOLD", tag_name="Marshal", bade_position="BADGE").exists(): - marshal_earned = True - else: - marshal_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Necromancer",bade_position="BADGE").exists(): - necromancer_earned = True - else: - necromancer_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Peer Pressure",bade_position="BADGE").exists(): - pr_pressre_earned = True - else: - pr_pressre_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Promoter", bade_position="BADGE").exists(): - promoter_earned = True - else: - promoter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Proofreader",bade_position="BADGE").exists(): - proffreader_earned = True - else: - proffreader_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Refiner",bade_position="BADGE").exists(): - refiner_earned = True - else: - refiner_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="Bronze", tag_name="Revival",bade_position="BADGE").exists(): - reviv_earned = True - else: - reviv_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Self-Learner",bade_position="BADGE").exists(): - slf_lrnr_earned = True - else: - slf_lrnr_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Strunk & White",bade_position="BADGE").exists(): - stnk_whte_earned = True - else: - stnk_whte_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Suffrage",bade_position="BADGE").exists(): - suffrage_earned = True - else: - suffrage_earned = False - - last_24_hours = timezone.now() - timedelta(hours=24) - getQ_Votes_in_24_Hours = QUpvote.objects.filter(date__gt=last_24_hours).count() - getQ_DownVotes_in_24_Hours = QDownvote.objects.filter(downvote_by_q=profileData.user, date__gt=last_24_hours).count() - getA_Votes_in_24_Hours = Answer.objects.filter(a_vote_ups=profileData.user, date__gt=last_24_hours).count() - getA_DownVotes_in_24_Hours = Answer.objects.filter(a_vote_downs=profileData.user, date__gt=last_24_hours).count() - totalVotes = getQ_Votes_in_24_Hours + getQ_DownVotes_in_24_Hours + getA_Votes_in_24_Hours + getA_DownVotes_in_24_Hours - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Vox Populi",bade_position="BADGE").exists(): - vx_pop_earned = True - else: - vx_pop_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Teacher",bade_position="BADGE").exists(): - teacher_earned = True - else: - teacher_earned = False - - newestBadge = TagBadge.objects.filter(awarded_to_user=profileData.user).last() - - # ----------Next Badge---------- END---------- - - - - - context = { - 'newestBadge':newestBadge, - 'countVotes':countVotes, - 'teacher_earned':teacher_earned, - 'totalVotes':totalVotes, - 'vx_pop_earned':vx_pop_earned, - 'suffrage_earned':suffrage_earned, - 'stnk_whte_earned':stnk_whte_earned, - 'slf_lrnr_earned':slf_lrnr_earned, - 'reviv_earned':reviv_earned, - 'refiner_earned':refiner_earned, - 'proffreader_earned':proffreader_earned, - 'promoter_earned':promoter_earned, - 'necromancer_earned':necromancer_earned, - 'marshal_earned':marshal_earned, - 'investor_earned':investor_earned, - 'pr_pressre_earned':pr_pressre_earned, - 'excvter_earned':excvter_earned, - 'deputy_earned':deputy_earned, - 'disclpned_earned':disclpned_earned, - 'civc_duty':civc_duty, - 'critic_earned':critic_earned, - 'ctzn_ptrl_earned':ctzn_ptrl_earned, - 'benefactor_earned':benefactor_earned, - 'completed':completed, - 'countComments':countComments,'get_rep_data':get_rep_data,'online_user_activity':online_user_activity,'getVotesCast_Final':getVotesCast_Final,'getAllTheViewsOfAllTheQuestion':getAllTheViewsOfAllTheQuestion,'reputation_graph':reputation_graph,'profileData':profileData,} - return render(request, 'profile/reputationActivity.html', context) - -def loadQuestion_div(request, question_id): - getQuestion = get_object_or_404(Question, id=question_id) - - serialized_results = [] - - serialized_results.append({ - 'id': getQuestion.id, - 'title': getQuestion.title, - 'date': getQuestion.date - }) - - return JsonResponse({'results': serialized_results}) - - -# def getUserName_From_Comment(request): - -# getUserIdByUsername = User.objects.get(username=getUserName) - -# return JsonResponse - - - - -def loadAnswer_div(request, answer_id): - getAnswer = get_object_or_404(Answer, id=answer_id) - - answer_serialized_results = [] - - answer_serialized_results.append({ - 'id': getAnswer.id, - 'body': getAnswer.body, - 'date': getAnswer.date - }) - - return JsonResponse({'answer_results': answer_serialized_results}) - - -def flag_summary(request, user_id, username): - profileData = get_object_or_404(Profile, pk=user_id) - - voted_flags = list(FlagPost.objects.filter(flagged_by=user_id)) - voted_comment_flags = list(FlagComment.objects.filter(comment_flagged_by=user_id)) - - def ordering(obj): - try: - return obj.flagged_at - except AttributeError: - return obj.date - - results = sorted(chain(voted_flags,voted_comment_flags), key=ordering, reverse=True) - - context = {'profileData':profileData,'results':results,} - return render(request, 'profile/flag_summary.html', context) - - - -# IMPLEMENTED THE LOGIC - # It will show all the activities, Almost already built - # All | Accepted Answers | Asked Answers | Badges Earned | Comments - # Reviews Done | - """ - Didn't implement every filter because i had to make every query differently, which will be slow. - """ -# @cache_page(60 * 15) -def allActionsActivity(request, user_id, username): - profileData = get_object_or_404(Profile, pk=user_id) - query_1 = list(Question.objects.filter(post_owner=user_id).order_by('date')) - query_2 = list(Answer.objects.filter(answer_owner=user_id).order_by('date')) - query_3 = list(CloseQuestionVotes.objects.filter(user=user_id).order_by('date')) - query_4 = list(Bounty.objects.filter(by_user=user_id).select_related('question_bounty').order_by('date')) - query_5_comment = list(CommentQ.objects.filter(commented_by=user_id).order_by('date')) - query_6_tag = list(TagBadge.objects.filter(awarded_to_user=user_id).order_by('date')) - query_7_reviewing = list(ReviewCloseVotes.objects.filter(reviewed_by=user_id).order_by('date')) - - def order(obj): - try: - return obj.date - except AttributeError: - return obj.date - - - results = sorted(chain(query_1, query_2, query_3, query_4, query_5_comment, query_6_tag),key=order , reverse=True) - page = request.GET.get('page', 1) - - paginator = Paginator(results, 10) - try: - paginatedResults = paginator.page(page) - except PageNotAnInteger: - paginatedResults = paginator.page(1) - except EmptyPage: - paginatedResults = paginator.page(paginator.num_pages) - - getAnsweredAnswers = Answer.objects.filter(answer_owner=user_id).order_by('date') - - countActions = len(results) - -# Last seen -# To Show Last Seen in Profile. You'll see as "Last seen" -# Transfer this Variable into config.py - USER_ONLINE_TIMEOUT = timedelta(seconds=5) - min_time = timezone.now() - (USER_ONLINE_TIMEOUT) - queryset = online_users.models.OnlineUserActivity.objects.filter( - user_id=user_id).annotate(is_online=Case( - When(last_activity__gte=min_time, then=Value(True)), - default=Value(False), - output_field=BooleanField(), - )) - - online_user_activity = get_object_or_404(queryset) - - - - # Total Votes Cast - countVotedPosts_Q = QUpvote.objects.filter(upvote_by_q=user_id).count() - countDownVotedPosts_Q = QDownvote.objects.filter(downvote_by_q=user_id).count() - - countVotedPosts_A = Answer.objects.filter(a_vote_ups=user_id).count() - countDownVotedPosts_A = Answer.objects.filter(a_vote_downs=user_id).count() - - getVotesCast_Final = countVotedPosts_Q + countDownVotedPosts_Q + countVotedPosts_A + countDownVotedPosts_A - - - # People Reached - getAllTheViewsOfAllTheQuestion = Question.objects.filter(post_owner=profileData.user).annotate(total_views=Count('viewers')).aggregate(Sum('total_views')) - - reputation_graph = Reputation.objects.filter(awarded_to=user_id)[:15] - - - # ----------Next Badge---------- START---------- - countComments = CommentQ.objects.filter(commented_by=profileData.user).count() - - - - if profileData.about_me != '': - completed = True - else: - completed = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Benefactor").exists(): - benefactor_earned = True - else: - benefactor_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Citizen Patrol",bade_position="BADGE").exists(): - ctzn_ptrl_earned = True - else: - ctzn_ptrl_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Civic Duty",bade_position="BADGE").exists(): - civc_duty = True - else: - civc_duty = False - getVotedOnQ = Question.objects.filter(qupvote__upvote_by_q=profileData.user).count() - getVotedOnQ_Down = Question.objects.filter(qdownvote__downvote_by_q=profileData.user).count() - getVotedOn = Answer.objects.filter(a_vote_ups=profileData.user).count() - getVotedOn_Down = Answer.objects.filter(a_vote_downs=profileData.user).count() - - countVotes = getVotedOnQ+getVotedOnQ_Down+getVotedOn+getVotedOn_Down - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Critic", bade_position="BADGE").exists(): - critic_earned = True - else: - critic_earned = False - - - - if profileData.helpful_flags_counter: - deputy_earned = True - else: - deputy_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Disciplined",bade_position="BADGE").exists(): - disclpned_earned = True - else: - disclpned_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Excavator",bade_position="BADGE").exists(): - excvter_earned = True - else: - excvter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Investor", bade_position="BADGE").exists(): - investor_earned = True - else: - investor_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="GOLD", tag_name="Marshal", bade_position="BADGE").exists(): - marshal_earned = True - else: - marshal_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Necromancer",bade_position="BADGE").exists(): - necromancer_earned = True - else: - necromancer_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Peer Pressure",bade_position="BADGE").exists(): - pr_pressre_earned = True - else: - pr_pressre_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Promoter", bade_position="BADGE").exists(): - promoter_earned = True - else: - promoter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Proofreader",bade_position="BADGE").exists(): - proffreader_earned = True - else: - proffreader_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Refiner",bade_position="BADGE").exists(): - refiner_earned = True - else: - refiner_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="Bronze", tag_name="Revival",bade_position="BADGE").exists(): - reviv_earned = True - else: - reviv_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Self-Learner",bade_position="BADGE").exists(): - slf_lrnr_earned = True - else: - slf_lrnr_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Strunk & White",bade_position="BADGE").exists(): - stnk_whte_earned = True - else: - stnk_whte_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Suffrage",bade_position="BADGE").exists(): - suffrage_earned = True - else: - suffrage_earned = False - - last_24_hours = timezone.now() - timedelta(hours=24) - getQ_Votes_in_24_Hours = QUpvote.objects.filter(date__gt=last_24_hours).count() - getQ_DownVotes_in_24_Hours = QDownvote.objects.filter(downvote_by_q=profileData.user, date__gt=last_24_hours).count() - getA_Votes_in_24_Hours = Answer.objects.filter(a_vote_ups=profileData.user, date__gt=last_24_hours).count() - getA_DownVotes_in_24_Hours = Answer.objects.filter(a_vote_downs=profileData.user, date__gt=last_24_hours).count() - totalVotes = getQ_Votes_in_24_Hours + getQ_DownVotes_in_24_Hours + getA_Votes_in_24_Hours + getA_DownVotes_in_24_Hours - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Vox Populi",bade_position="BADGE").exists(): - vx_pop_earned = True - else: - vx_pop_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Teacher",bade_position="BADGE").exists(): - teacher_earned = True - else: - teacher_earned = False - - newestBadge = TagBadge.objects.filter(awarded_to_user=profileData.user).last() - - # ----------Next Badge---------- END---------- - - - - context = { - 'newestBadge':newestBadge, - 'countVotes':countVotes, - 'teacher_earned':teacher_earned, - 'totalVotes':totalVotes, - 'vx_pop_earned':vx_pop_earned, - 'suffrage_earned':suffrage_earned, - 'stnk_whte_earned':stnk_whte_earned, - 'slf_lrnr_earned':slf_lrnr_earned, - 'reviv_earned':reviv_earned, - 'refiner_earned':refiner_earned, - 'proffreader_earned':proffreader_earned, - 'promoter_earned':promoter_earned, - 'necromancer_earned':necromancer_earned, - 'marshal_earned':marshal_earned, - 'investor_earned':investor_earned, - 'pr_pressre_earned':pr_pressre_earned, - 'excvter_earned':excvter_earned, - 'deputy_earned':deputy_earned, - 'disclpned_earned':disclpned_earned, - 'civc_duty':civc_duty, - 'critic_earned':critic_earned, - 'ctzn_ptrl_earned':ctzn_ptrl_earned, - 'benefactor_earned':benefactor_earned, - 'completed':completed, - 'countComments':countComments,'countActions':countActions,'reputation_graph':reputation_graph,'getAllTheViewsOfAllTheQuestion':getAllTheViewsOfAllTheQuestion,'getVotesCast_Final':getVotesCast_Final,'online_user_activity':online_user_activity,'paginatedResults':paginatedResults,'results':results,'profileData':profileData} - return render(request, 'profile/allActionsActivity.html', context) - -def listTOString(word): - emptyString = "" - return (emptyString.join(word)) - -# def ResponsesActivity(request, user_id, username): -# query_1 = list(CommentQ.objects.filter(question_comment__post_owner=user_id).order_by('date')) -# query_2 = list(Answer.objects.filter(questionans__post_owner=user_id).order_by('date')) - -# def order(obj): -# try: -# return obj.date -# except AttributeError: -# return obj.date - -# allPosts = sorted(chain(query_1, query_2), key=order, reverse=True) - -# getAllTheComments_profileData_mentioned_on = CommentQ.objects.all() - - - -# getUser_Username = User.objects.get(id=user_id) - -# # Get all comments in which user_id_username is mentioned. - - -# getNow = - - - -# COMMENTS = [] - -# for comment in getAllTheComments_profileData_mentioned_on: -# getCommentBody = comment.comment - -# user = getCommentBody[getCommentBody.find("@")+1:].split()[0] -# splitIt = re.split(",(?=(?:[^']*\'[^']*\')*[^']*$)",user) -# splitFromList = listTOString(splitIt) - -# if "@" in getCommentBody: -# getUser = User.objects.get(id=user_id) -# if splitFromList == getUser.username: -# try: -# getUser = User.objects.get(id=user_id) -# getCommentsNow = CommentQ.objects.filter(commented_by=getUser) -# print(getCommentsNow) -# for com in getCommentsNow: -# COMMENTS.append(com) -# # print(getCommentsNow) - -# except User.DoesNotExist: -# print("Something Went Wrong") - -# # for printLoop in COMMENTS: -# # print(COMMENTS) - - -# context = {'COMMENTS':COMMENTS,'allPosts':allPosts} -# return render(request, 'profile/ResponsesActivity.html', context) - -def checkNotifications(request): - checkIf = Notification.objects.filter(is_read=False) - - return HttpResponse(status=202) - -def Votes_castActivity(request, user_id, username): - profileData = get_object_or_404(Profile, pk=user_id) - query_1 = list(QUpvote.objects.filter(upvote_by_q=profileData.user)) - query_2 = list(QDownvote.objects.filter(downvote_by_q=profileData.user)) - query_3 = list(CloseQuestionVotes.objects.filter(user=profileData.user)) - query_4 = list(ReOpenQuestionVotes.objects.filter(user=profileData.user)) - query_5 = list(Answer.objects.filter(a_vote_ups=profileData.user)) - - def order(obj): - try: - return obj.date - except AttributeError: - return obj.date_opening - - - allPosts = sorted(chain(query_1, query_2, query_3, query_4,query_5), key=order, reverse=True) - countallVotes = len(allPosts) -# Last seen -# To Show Last Seen in Profile. You'll see as "Last seen" -# Transfer this Variable into config.py - USER_ONLINE_TIMEOUT = timedelta(seconds=5) - min_time = timezone.now() - (USER_ONLINE_TIMEOUT) - queryset = online_users.models.OnlineUserActivity.objects.filter( - user_id=user_id).annotate(is_online=Case( - When(last_activity__gte=min_time, then=Value(True)), - default=Value(False), - output_field=BooleanField(), - )) - - online_user_activity = get_object_or_404(queryset) - - - - # Total Votes Cast - countVotedPosts_Q = QUpvote.objects.filter(upvote_by_q=user_id).count() - countDownVotedPosts_Q = QDownvote.objects.filter(downvote_by_q=user_id).count() - - countVotedPosts_A = Answer.objects.filter(a_vote_ups=user_id).count() - countDownVotedPosts_A = Answer.objects.filter(a_vote_downs=user_id).count() - - getVotesCast_Final = countVotedPosts_Q + countDownVotedPosts_Q + countVotedPosts_A + countDownVotedPosts_A - - - # People Reached - getAllTheViewsOfAllTheQuestion = Question.objects.filter(post_owner=profileData.user).annotate(total_views=Count('viewers')).aggregate(Sum('total_views')) - - - - # ----------Next Badge---------- START---------- - countComments = CommentQ.objects.filter(commented_by=profileData.user).count() - - - - if profileData.about_me != '': - completed = True - else: - completed = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Benefactor").exists(): - benefactor_earned = True - else: - benefactor_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Citizen Patrol",bade_position="BADGE").exists(): - ctzn_ptrl_earned = True - else: - ctzn_ptrl_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Civic Duty",bade_position="BADGE").exists(): - civc_duty = True - else: - civc_duty = False - getVotedOnQ = Question.objects.filter(qupvote__upvote_by_q=profileData.user).count() - getVotedOnQ_Down = Question.objects.filter(qdownvote__downvote_by_q=profileData.user).count() - getVotedOn = Answer.objects.filter(a_vote_ups=profileData.user).count() - getVotedOn_Down = Answer.objects.filter(a_vote_downs=profileData.user).count() - - countVotes = getVotedOnQ+getVotedOnQ_Down+getVotedOn+getVotedOn_Down - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Critic", bade_position="BADGE").exists(): - critic_earned = True - else: - critic_earned = False - - - - if profileData.helpful_flags_counter: - deputy_earned = True - else: - deputy_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Disciplined",bade_position="BADGE").exists(): - disclpned_earned = True - else: - disclpned_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Excavator",bade_position="BADGE").exists(): - excvter_earned = True - else: - excvter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Investor", bade_position="BADGE").exists(): - investor_earned = True - else: - investor_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="GOLD", tag_name="Marshal", bade_position="BADGE").exists(): - marshal_earned = True - else: - marshal_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Necromancer",bade_position="BADGE").exists(): - necromancer_earned = True - else: - necromancer_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Peer Pressure",bade_position="BADGE").exists(): - pr_pressre_earned = True - else: - pr_pressre_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Promoter", bade_position="BADGE").exists(): - promoter_earned = True - else: - promoter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Proofreader",bade_position="BADGE").exists(): - proffreader_earned = True - else: - proffreader_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Refiner",bade_position="BADGE").exists(): - refiner_earned = True - else: - refiner_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="Bronze", tag_name="Revival",bade_position="BADGE").exists(): - reviv_earned = True - else: - reviv_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Self-Learner",bade_position="BADGE").exists(): - slf_lrnr_earned = True - else: - slf_lrnr_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Strunk & White",bade_position="BADGE").exists(): - stnk_whte_earned = True - else: - stnk_whte_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Suffrage",bade_position="BADGE").exists(): - suffrage_earned = True - else: - suffrage_earned = False - - last_24_hours = timezone.now() - timedelta(hours=24) - getQ_Votes_in_24_Hours = QUpvote.objects.filter(date__gt=last_24_hours).count() - getQ_DownVotes_in_24_Hours = QDownvote.objects.filter(downvote_by_q=profileData.user, date__gt=last_24_hours).count() - getA_Votes_in_24_Hours = Answer.objects.filter(a_vote_ups=profileData.user, date__gt=last_24_hours).count() - getA_DownVotes_in_24_Hours = Answer.objects.filter(a_vote_downs=profileData.user, date__gt=last_24_hours).count() - totalVotes = getQ_Votes_in_24_Hours + getQ_DownVotes_in_24_Hours + getA_Votes_in_24_Hours + getA_DownVotes_in_24_Hours - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Vox Populi",bade_position="BADGE").exists(): - vx_pop_earned = True - else: - vx_pop_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Teacher",bade_position="BADGE").exists(): - teacher_earned = True - else: - teacher_earned = False - - newestBadge = TagBadge.objects.filter(awarded_to_user=profileData.user).last() - - # ----------Next Badge---------- END---------- - - reputation_graph = Reputation.objects.filter(awarded_to=user_id)[:15] - - - - - context = { - 'newestBadge':newestBadge, - 'reputation_graph':reputation_graph, - 'countVotes':countVotes, - 'teacher_earned':teacher_earned, - 'totalVotes':totalVotes, - 'vx_pop_earned':vx_pop_earned, - 'suffrage_earned':suffrage_earned, - 'stnk_whte_earned':stnk_whte_earned, - 'slf_lrnr_earned':slf_lrnr_earned, - 'reviv_earned':reviv_earned, - 'refiner_earned':refiner_earned, - 'proffreader_earned':proffreader_earned, - 'promoter_earned':promoter_earned, - 'necromancer_earned':necromancer_earned, - 'marshal_earned':marshal_earned, - 'investor_earned':investor_earned, - 'pr_pressre_earned':pr_pressre_earned, - 'excvter_earned':excvter_earned, - 'deputy_earned':deputy_earned, - 'disclpned_earned':disclpned_earned, - 'civc_duty':civc_duty, - 'critic_earned':critic_earned, - 'ctzn_ptrl_earned':ctzn_ptrl_earned, - 'benefactor_earned':benefactor_earned, - 'completed':completed, - 'countComments':countComments,'countallVotes':countallVotes,'getAllTheViewsOfAllTheQuestion':getAllTheViewsOfAllTheQuestion,'getVotesCast_Final':getVotesCast_Final,'online_user_activity':online_user_activity,'allPosts':allPosts,'profileData':profileData} - return render(request, 'profile/Votes_castActivity.html', context) - -# Users with 20k rep - # User can vote for deletion (if Q is -3 or lower) if the close is older than 48 hours - # User can vote for deletion to As (if Q is -1 or lower) - -# @login_required -def home(request): - - context = {} - return render(request, 'profile/home.html', context) - -def bountied_home(request): - questions = Question.objects.filter( - is_bountied=True)[:50] - - context = {'questions':questions,} - return render(request, 'home/bountied_home.html', context) - -def hot_q_day_home(request): - last_3_days = timezone.now() - timedelta(days=3) - questions = Question.objects.filter( - viewers__gte=2 - ).annotate(countComment=Count('commentq') - ).filter(qupvote__date__gt=last_3_days - ).order_by('qupvote' - ).order_by('-countComment' - ).distinct()[:50] - - context = {'questions':questions,} - return render(request, 'home/hot_q_home.html', context) - -def hot_q_week_home(request): - last_7_days = timezone.now() - timedelta(days=7) - questions = Question.objects.filter( - viewers__gte=2 - ).annotate(countComment=Count('commentq') - ).filter(qupvote__date__gt=last_7_days - ).order_by('qupvote' - ).order_by('-countComment' - ).distinct()[:50] - - context = {'questions':questions,} - return render(request, 'home/hot_q_week_home.html', context) - -def hot_q_month_home(request): - last_28_days = timezone.now() - timedelta(days=28) - questions = Question.objects.filter( - viewers__gte=2 - ).annotate(countComment=Count('commentq') - ).filter(qupvote__date__gt=last_28_days - ).order_by('qupvote' - ).order_by('-countComment' - ).distinct()[:50] - - context = {'questions':questions,} - return render(request, 'home/hot_q_month_home.html', context) - - -def activityPageTabProfile(request,user_id,username): - profileData = get_object_or_404(Profile, pk=user_id) - UserAnswers = Answer.objects.filter(answer_owner=profileData.user) - goldBadges = TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="GOLD")[:3] - silverBadges = TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER")[:3] - bronzeBadges = TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE")[:3] - - if request.user.is_authenticated: - topTags = Tag.objects.filter(question__post_owner=request.user).annotate(countTheVotes=Count('question__qupvote')).filter(countTheVotes__gte=2) - else: - topTags = '' - - questions = Question.objects.filter(post_owner=profileData.user).exclude(is_deleted=True) - answers = Answer.objects.filter(answer_owner=profileData.user).exclude(is_deleted=True) - - getMixTopVotes_Q = list(Question.objects.filter(post_owner=profileData.user).exclude(is_deleted=True).annotate(getMostVotes=Count('qupvote')).order_by('getMostVotes')) - getMisTopVotes_A = list(Answer.objects.filter(answer_owner=profileData.user).exclude(is_deleted=True).annotate(getMostVotes=Count('a_vote_ups')).order_by('getMostVotes')) - - def order_by(obj): - try: - return obj.getMostVotes - except AttributeError: - return obj.getMostVotes - - results = sorted(chain(getMixTopVotes_Q, getMisTopVotes_A),key=order_by , reverse=True) - - USER_ONLINE_TIMEOUT = timedelta(seconds=5) - min_time = timezone.now() - (USER_ONLINE_TIMEOUT) - queryset = online_users.models.OnlineUserActivity.objects.filter( - user_id=profileData.user).annotate(is_online=Case( - When(last_activity__gte=min_time, then=Value(True)), - default=Value(False), - output_field=BooleanField(), - )) - - online_user_activity = get_object_or_404(queryset) - - # Peoples Reached - getAllTheViewsOfAllTheQuestion = Question.objects.filter(post_owner=profileData.user).annotate(total_views=Count('viewers')).aggregate(Sum('total_views')) - - - context = { - 'online_user_activity':online_user_activity, - 'results':results, - 'getAllTheViewsOfAllTheQuestion':getAllTheViewsOfAllTheQuestion, - 'topTags':topTags, - 'profileData':profileData, - 'user_id':user_id, - 'goldBadges':goldBadges, - 'silverBadges':silverBadges, - 'bronzeBadges':bronzeBadges, - 'questions':questions, - 'answers':answers, - } - return render(request, 'profile/UserProfile_Profile_ActivityTab.html', context) - - -def developerStoryTab(request, user_id): - profileStory = get_object_or_404(Profile, user=profileData.user) - - context = {'profileStory':profileStory} - return render(request, 'profile/developerStoryTab.html', context) - - -def uploadPosition(request, user_id): - positions = Position.objects.filter(user=request.user) - - profiles = request.user.profile - - if request.method == 'POST': - form = PositionCreateForm(request.POST, request.FILES) - if form.is_valid(): - new_post = form.save(commit=False) - new_post.user = request.user - new_post.save() - return redirect('profile:home') - - else: - form = PositionCreateForm() - - context = {'positions':positions,'profiles': profiles, 'form': form} - return render(request, 'profile/uploadPosition.html', context) - - -def addPositionAjax(request,user_id): - # data = get_object_or_404(Question, pk=question_id) - # request should be ajax and method should be POST. - if is_ajax(request) and request.method == "POST": - # get the form data - edit_Q_Form = PositionCreateForm(request.POST, request.FILES) - # save the data and after fetch the object in instance - if edit_Q_Form.is_valid(): - instance = edit_Q_Form.save(commit=False) - instance.user = request.user - instance = edit_Q_Form.save() - # serialize in new friend object in json - new_instance = serializers.serialize('json', [ - instance, - ]) - # send to client side. - return JsonResponse({"instance": new_instance}, status=200) - else: - # some form errors occured. - return JsonResponse({"error": form.errors}, status=400) - - # some error occured - return JsonResponse({"error": ""}, status=400) - - -# IMPLEMENTED THE LOGIC - # It will show all the questions bookmarked by user_id. - # Most Votes | Last Edited | Most Recent | Most Views -def bookmarksActivity(request, user_id, username): - profileData = get_object_or_404(Profile, pk=user_id) - - mostVotes_bookmarks = BookmarkQuestion.objects.filter(bookmarked_by=user_id).annotate(countVotes=Count('bookmarked_question__qupvote')).order_by('-countVotes') - - - activity_bookmarks= BookmarkQuestion.objects.filter(bookmarked_by=user_id).order_by('-bookmarked_question__q_edited_time') - - - newest_bookmarks = BookmarkQuestion.objects.filter(bookmarked_by=user_id).order_by('-date') - - - views_bookmarks = BookmarkQuestion.objects.filter(bookmarked_by=user_id).annotate(countViews=Count('bookmarked_question__viewers')).order_by('-countViews') - - - totalBookmarks = mostVotes_bookmarks.count() - - - -# Last seen -# To Show Last Seen in Profile. You'll see as "Last seen" -# Transfer this Variable into config.py - USER_ONLINE_TIMEOUT = timedelta(seconds=5) - min_time = timezone.now() - (USER_ONLINE_TIMEOUT) - queryset = online_users.models.OnlineUserActivity.objects.filter( - user_id=user_id).annotate(is_online=Case( - When(last_activity__gte=min_time, then=Value(True)), - default=Value(False), - output_field=BooleanField(), - )) - - online_user_activity = get_object_or_404(queryset) - - - - # Total Votes Cast - countVotedPosts_Q = QUpvote.objects.filter(upvote_by_q=user_id).count() - countDownVotedPosts_Q = QDownvote.objects.filter(downvote_by_q=user_id).count() - - countVotedPosts_A = Answer.objects.filter(a_vote_ups=user_id).count() - countDownVotedPosts_A = Answer.objects.filter(a_vote_downs=user_id).count() - - getVotesCast_Final = countVotedPosts_Q + countDownVotedPosts_Q + countVotedPosts_A + countDownVotedPosts_A - - - # People Reached - getAllTheViewsOfAllTheQuestion = Question.objects.filter(post_owner=profileData.user).annotate(total_views=Count('viewers')).aggregate(Sum('total_views')) - - reputation_graph = Reputation.objects.filter(awarded_to=user_id)[:15] - - - - # ----------Next Badge---------- START---------- - countComments = CommentQ.objects.filter(commented_by=profileData.user).count() - - - - if profileData.about_me != '': - completed = True - else: - completed = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Benefactor").exists(): - benefactor_earned = True - else: - benefactor_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Citizen Patrol",bade_position="BADGE").exists(): - ctzn_ptrl_earned = True - else: - ctzn_ptrl_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Civic Duty",bade_position="BADGE").exists(): - civc_duty = True - else: - civc_duty = False - getVotedOnQ = Question.objects.filter(qupvote__upvote_by_q=profileData.user).count() - getVotedOnQ_Down = Question.objects.filter(qdownvote__downvote_by_q=profileData.user).count() - getVotedOn = Answer.objects.filter(a_vote_ups=profileData.user).count() - getVotedOn_Down = Answer.objects.filter(a_vote_downs=profileData.user).count() - - countVotes = getVotedOnQ+getVotedOnQ_Down+getVotedOn+getVotedOn_Down - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Critic", bade_position="BADGE").exists(): - critic_earned = True - else: - critic_earned = False - - - - if profileData.helpful_flags_counter: - deputy_earned = True - else: - deputy_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Disciplined",bade_position="BADGE").exists(): - disclpned_earned = True - else: - disclpned_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Excavator",bade_position="BADGE").exists(): - excvter_earned = True - else: - excvter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Investor", bade_position="BADGE").exists(): - investor_earned = True - else: - investor_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="GOLD", tag_name="Marshal", bade_position="BADGE").exists(): - marshal_earned = True - else: - marshal_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Necromancer",bade_position="BADGE").exists(): - necromancer_earned = True - else: - necromancer_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Peer Pressure",bade_position="BADGE").exists(): - pr_pressre_earned = True - else: - pr_pressre_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Promoter", bade_position="BADGE").exists(): - promoter_earned = True - else: - promoter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Proofreader",bade_position="BADGE").exists(): - proffreader_earned = True - else: - proffreader_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Refiner",bade_position="BADGE").exists(): - refiner_earned = True - else: - refiner_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="Bronze", tag_name="Revival",bade_position="BADGE").exists(): - reviv_earned = True - else: - reviv_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Self-Learner",bade_position="BADGE").exists(): - slf_lrnr_earned = True - else: - slf_lrnr_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Strunk & White",bade_position="BADGE").exists(): - stnk_whte_earned = True - else: - stnk_whte_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Suffrage",bade_position="BADGE").exists(): - suffrage_earned = True - else: - suffrage_earned = False - - last_24_hours = timezone.now() - timedelta(hours=24) - getQ_Votes_in_24_Hours = QUpvote.objects.filter(date__gt=last_24_hours).count() - getQ_DownVotes_in_24_Hours = QDownvote.objects.filter(downvote_by_q=profileData.user, date__gt=last_24_hours).count() - getA_Votes_in_24_Hours = Answer.objects.filter(a_vote_ups=profileData.user, date__gt=last_24_hours).count() - getA_DownVotes_in_24_Hours = Answer.objects.filter(a_vote_downs=profileData.user, date__gt=last_24_hours).count() - totalVotes = getQ_Votes_in_24_Hours + getQ_DownVotes_in_24_Hours + getA_Votes_in_24_Hours + getA_DownVotes_in_24_Hours - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Vox Populi",bade_position="BADGE").exists(): - vx_pop_earned = True - else: - vx_pop_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Teacher",bade_position="BADGE").exists(): - teacher_earned = True - else: - teacher_earned = False - - newestBadge = TagBadge.objects.filter(awarded_to_user=profileData.user).last() - - # ----------Next Badge---------- END---------- - - - context = { - 'newestBadge':newestBadge, - 'countVotes':countVotes, - 'teacher_earned':teacher_earned, - 'totalVotes':totalVotes, - 'vx_pop_earned':vx_pop_earned, - 'suffrage_earned':suffrage_earned, - 'stnk_whte_earned':stnk_whte_earned, - 'slf_lrnr_earned':slf_lrnr_earned, - 'reviv_earned':reviv_earned, - 'refiner_earned':refiner_earned, - 'proffreader_earned':proffreader_earned, - 'promoter_earned':promoter_earned, - 'necromancer_earned':necromancer_earned, - 'marshal_earned':marshal_earned, - 'investor_earned':investor_earned, - 'pr_pressre_earned':pr_pressre_earned, - 'excvter_earned':excvter_earned, - 'deputy_earned':deputy_earned, - 'disclpned_earned':disclpned_earned, - 'civc_duty':civc_duty, - 'critic_earned':critic_earned, - 'ctzn_ptrl_earned':ctzn_ptrl_earned, - 'benefactor_earned':benefactor_earned, - 'completed':completed, - 'countComments':countComments,'reputation_graph':reputation_graph,'getAllTheViewsOfAllTheQuestion':getAllTheViewsOfAllTheQuestion,'totalBookmarks':totalBookmarks,'views_bookmarks':views_bookmarks,'activity_bookmarks':activity_bookmarks,'newest_bookmarks':newest_bookmarks,'getVotesCast_Final':getVotesCast_Final,'mostVotes_bookmarks':mostVotes_bookmarks,'profileData':profileData,'online_user_activity':online_user_activity,} - return render(request, 'profile/bookmarksActivity.html', context) - - - -# @login_required -# @cache_page(DEFAULT_TIMEOUT) -def ActivityTabSummary(request, user_id, username): - profileData = get_object_or_404(Profile, pk=user_id) - - - -# Question DIVs - START - questionsCount = Question.objects.filter(post_owner=profileData.user).exclude(is_deleted=True).count() - question_most_votes = Question.objects.filter(post_owner=profileData.user).annotate(countThem=Count('qupvote')).order_by('-countThem')[:5] - question_recent_activity = Question.objects.filter(post_owner=profileData.user).order_by('-active_date')[:5] - question_newest = Question.objects.filter(post_owner=profileData.user).order_by('-date')[:5] - question_most_views = Question.objects.filter(post_owner=profileData.user).annotate(countTheViews=Count('viewers')).order_by('-viewers')[:5] -# Question DIVs - END - - - -# Answer DIVs - START - answersMostVotes = Answer.objects.filter(answer_owner=profileData.user).annotate( - countLikes=Count( - 'a_vote_ups')).order_by('-countLikes') - answersCount = Answer.objects.filter(answer_owner=profileData.user).count() - answersThr_Activity = Answer.objects.filter(answer_owner=profileData.user).order_by('-active_time')[:5] - answersNewest = Answer.objects.filter(answer_owner=profileData.user).order_by('-date')[:5] -# Answer DIVs - END - - - -# Bookmark DIVs - START - bookmarks_newest = BookmarkQuestion.objects.filter(bookmarked_by=profileData.user).order_by('date') - bookmarks_votes = BookmarkQuestion.objects.filter(bookmarked_by=profileData.user).annotate(countVotes=Count('bookmarked_question__qupvote')).order_by('-countVotes') - bookmarks_activity = BookmarkQuestion.objects.filter(bookmarked_by=profileData.user).order_by('-bookmarked_question__active_date') - bookmarks_views = BookmarkQuestion.objects.filter(bookmarked_by=profileData.user).annotate(countVotes=Count('bookmarked_question__viewers')).order_by('-countVotes') - countBookmarks = bookmarks_newest.count() -# Bookmark DIVs - END - - - - - reputations = Reputation.objects.filter(awarded_to=profileData.user).annotate( - highestTimeRep=F('answer_rep_C')+ F('question_rep_C')).order_by( - '-highestTimeRep')[:5] - - tags = Tag.objects.filter(question__answer__answer_owner=profileData.user).annotate(answeredOn=Count('taggit_taggeditem_items'))[:5] - - - - badges = TagBadge.objects.filter(awarded_to_user=profileData.user).order_by('date')[:5] - - bounties = Bounty.objects.filter(by_user=profileData.user).order_by('date').distinct() - - -# Votes cast - START - Up_votesCast_Q = QUpvote.objects.filter(upvote_by_q=profileData.user).count() - Down_votesCast_Q = QDownvote.objects.filter(downvote_by_q=profileData.user).count() - - Up_votesCast_A = Answer.objects.filter(a_vote_ups=profileData.user).count() - Down_votesCast_A = Answer.objects.filter(a_vote_downs=profileData.user).count() - - totalUpvotes = Up_votesCast_Q + Up_votesCast_A - totalDownVotes = Down_votesCast_Q + Down_votesCast_A - - questionVotes = Up_votesCast_Q + Down_votesCast_Q - answerVotes = Up_votesCast_A + Down_votesCast_A -# Votes cast - END - - - - # mixed_vote_count = totalUpvotes + totalDownVotes - - - # getting = Profile.objects.filter(is_high_moderator=False) - - - - getAlltheReputation = Reputation.objects.filter(awarded_to=profileData.user).aggregate(Sum('answer_rep_C'),Sum('question_rep_C')) - d = getAlltheReputation['question_rep_C__sum'] - total_Question_Rep = getAlltheReputation['question_rep_C__sum'] if d else 0 - s = getAlltheReputation['answer_rep_C__sum'] - total_answer_Rep = getAlltheReputation['answer_rep_C__sum'] if s else 0 - - finalReputation = total_answer_Rep + total_Question_Rep - - -# To Show Last Seen in Profile. You'll see as "Last seen" -# Transfer this Variable into config.py - USER_ONLINE_TIMEOUT = timedelta(seconds=5) - min_time = timezone.now() - (USER_ONLINE_TIMEOUT) - queryset = online_users.models.OnlineUserActivity.objects.filter( - user_id=profileData.user).annotate(is_online=Case( - When(last_activity__gte=min_time, then=Value(True)), - default=Value(False), - output_field=BooleanField(), - )) - - online_user_activity = get_object_or_404(queryset) - - - - # People Reached - getAllTheViewsOfAllTheQuestion = Question.objects.filter(post_owner=profileData.user).annotate(total_views=Count('viewers')).aggregate(Sum('total_views')) - - - # Total Votes Cast - countVotedPosts_Q = QUpvote.objects.filter(upvote_by_q=profileData.user).count() - countDownVotedPosts_Q = QDownvote.objects.filter(downvote_by_q=profileData.user).count() - - countVotedPosts_A = Answer.objects.filter(a_vote_ups=profileData.user).count() - countDownVotedPosts_A = Answer.objects.filter(a_vote_downs=profileData.user).count() - - getVotesCast_Final = countVotedPosts_Q + countDownVotedPosts_Q + countVotedPosts_A + countDownVotedPosts_A - reputation_graph = Reputation.objects.filter(awarded_to=profileData.user)[:15] - - # ----------Next Badge---------- START---------- - countComments = CommentQ.objects.filter(commented_by=profileData.user).count() - - - - if profileData.about_me != '': - completed = True - else: - completed = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Benefactor").exists(): - benefactor_earned = True - else: - benefactor_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Citizen Patrol",bade_position="BADGE").exists(): - ctzn_ptrl_earned = True - else: - ctzn_ptrl_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Civic Duty",bade_position="BADGE").exists(): - civc_duty = True - else: - civc_duty = False - getVotedOnQ = Question.objects.filter(qupvote__upvote_by_q=profileData.user).count() - getVotedOnQ_Down = Question.objects.filter(qdownvote__downvote_by_q=profileData.user).count() - getVotedOn = Answer.objects.filter(a_vote_ups=profileData.user).count() - getVotedOn_Down = Answer.objects.filter(a_vote_downs=profileData.user).count() - - countVotes = getVotedOnQ+getVotedOnQ_Down+getVotedOn+getVotedOn_Down - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Critic", bade_position="BADGE").exists(): - critic_earned = True - else: - critic_earned = False - - - - if profileData.helpful_flags_counter: - deputy_earned = True - else: - deputy_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Disciplined",bade_position="BADGE").exists(): - disclpned_earned = True - else: - disclpned_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Excavator",bade_position="BADGE").exists(): - excvter_earned = True - else: - excvter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Investor", bade_position="BADGE").exists(): - investor_earned = True - else: - investor_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="GOLD", tag_name="Marshal", bade_position="BADGE").exists(): - marshal_earned = True - else: - marshal_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Necromancer",bade_position="BADGE").exists(): - necromancer_earned = True - else: - necromancer_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Peer Pressure",bade_position="BADGE").exists(): - pr_pressre_earned = True - else: - pr_pressre_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user, badge_type="BRONZE", tag_name="Promoter", bade_position="BADGE").exists(): - promoter_earned = True - else: - promoter_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Proofreader",bade_position="BADGE").exists(): - proffreader_earned = True - else: - proffreader_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Refiner",bade_position="BADGE").exists(): - refiner_earned = True - else: - refiner_earned = False - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="Bronze", tag_name="Revival",bade_position="BADGE").exists(): - reviv_earned = True - else: - reviv_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Self-Learner",bade_position="BADGE").exists(): - slf_lrnr_earned = True - else: - slf_lrnr_earned = False - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Strunk & White",bade_position="BADGE").exists(): - stnk_whte_earned = True - else: - stnk_whte_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Suffrage",bade_position="BADGE").exists(): - suffrage_earned = True - else: - suffrage_earned = False - - last_24_hours = timezone.now() - timedelta(hours=24) - getQ_Votes_in_24_Hours = QUpvote.objects.filter(date__gt=last_24_hours).count() - getQ_DownVotes_in_24_Hours = QDownvote.objects.filter(downvote_by_q=profileData.user, date__gt=last_24_hours).count() - getA_Votes_in_24_Hours = Answer.objects.filter(a_vote_ups=profileData.user, date__gt=last_24_hours).count() - getA_DownVotes_in_24_Hours = Answer.objects.filter(a_vote_downs=profileData.user, date__gt=last_24_hours).count() - totalVotes = getQ_Votes_in_24_Hours + getQ_DownVotes_in_24_Hours + getA_Votes_in_24_Hours + getA_DownVotes_in_24_Hours - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="BRONZE", tag_name="Vox Populi",bade_position="BADGE").exists(): - vx_pop_earned = True - else: - vx_pop_earned = False - - - - if TagBadge.objects.filter(awarded_to_user=profileData.user,badge_type="SILVER", tag_name="Teacher",bade_position="BADGE").exists(): - teacher_earned = True - else: - teacher_earned = False - - newestBadge = TagBadge.objects.filter(awarded_to_user=profileData.user).last() - - # ----------Next Badge---------- END---------- - - - - context = { - 'newestBadge':newestBadge, - 'countVotes':countVotes, - 'teacher_earned':teacher_earned, - 'totalVotes':totalVotes, - 'vx_pop_earned':vx_pop_earned, - 'suffrage_earned':suffrage_earned, - 'stnk_whte_earned':stnk_whte_earned, - 'slf_lrnr_earned':slf_lrnr_earned, - 'reviv_earned':reviv_earned, - 'refiner_earned':refiner_earned, - 'proffreader_earned':proffreader_earned, - 'promoter_earned':promoter_earned, - 'necromancer_earned':necromancer_earned, - 'marshal_earned':marshal_earned, - 'investor_earned':investor_earned, - 'pr_pressre_earned':pr_pressre_earned, - 'excvter_earned':excvter_earned, - 'deputy_earned':deputy_earned, - 'disclpned_earned':disclpned_earned, - 'civc_duty':civc_duty, - 'critic_earned':critic_earned, - 'ctzn_ptrl_earned':ctzn_ptrl_earned, - 'benefactor_earned':benefactor_earned, - 'completed':completed, - 'countComments':countComments, - - 'countBookmarks':countBookmarks, - 'reputation_graph':reputation_graph, - 'online_user_activity':online_user_activity, - 'getVotesCast_Final':getVotesCast_Final, - 'finalReputation':finalReputation, - 'Up_votesCast_Q':Up_votesCast_Q, - 'totalUpvotes':totalUpvotes, - 'totalDownVotes':totalDownVotes, - 'profileData': profileData, - 'answersNewest':answersNewest, - 'answersMostVotes':answersMostVotes, - 'answersThr_Activity':answersThr_Activity, - 'user_id':user_id, - 'questionVotes':questionVotes, - 'answerVotes':answerVotes, - 'answersCount':answersCount, - # 'obj':obj, - # 'getting':getting, - 'question_most_votes': question_most_votes, - 'question_recent_activity': question_recent_activity, - 'question_newest': question_newest, - 'question_most_views': question_most_views, - 'reputations':reputations, - 'questionsCount':questionsCount, - 'tags':tags, - 'getAllTheViewsOfAllTheQuestion':getAllTheViewsOfAllTheQuestion, - - 'bookmarks_newest':bookmarks_newest, - 'bookmarks_votes':bookmarks_votes, - 'bookmarks_activity':bookmarks_activity, - 'bookmarks_views':bookmarks_views, - 'badges':badges, - 'bounties':bounties, - # 'mixed_vote_count':mixed_vote_count, - } - - return render(request, 'profile/UserProfile.html', context) - - -def tagPage(request, user_id, tagbadge_id): - user = get_object_or_404(User, pk=user_id) - tag = get_object_or_404(TagBadge, pk=tagbadge_id) - allTags = Tag.objects.all().values_list('name', flat=True) - allTagsGold = TagBadge.objects.filter(awarded_to_user=user).values_list('tag_name', flat=True) - tagName = tag.tag_name - if tag.tag_name in allTags and tag.tag_name in allTagsGold: - it_it_earned_by = "Earned" - print("Earned") - else: - it_it_earned_by = "Didn't Earned" - print("Didn't Earned") - print(tag.tag_name) - - - - otherWithSame_Badge = TagBadge.objects.filter(tag_name=tag.tag_name).order_by('-date').exclude(awarded_to_user__isnull=True) - - context = {'tagName':tagName,'tag':tag,'it_it_earned_by':it_it_earned_by,'user_1':user,'allTags':allTags,'otherWithSame_Badge':otherWithSame_Badge,} - return render(request, 'tagbadge/user_profile_tags.html', context) - - -def otherWithSame_Badge(request, tag): - # print(tag.tag_name) - objQ = TagBadge.objects.filter(tag_name=tag).order_by('-date').exclude(awarded_to_user__isnull=True) - - context = {'objQ':objQ,'tag':tag} - return render(request, 'tagbadge/otherWithSame_Badge.html', context) - - -@unBanRequired -@profileOwnerRequired_For_Edit -def userProfileEdit_Settings(request, user_id): - profileData = get_object_or_404(Profile, id=user_id) - - if request.method == 'POST': - Edit_profile_form = EditProfileForm(data=request.POST, - files=request.FILES, - instance=request.user.profile) - - if Edit_profile_form.is_valid(): - custom_form = Edit_profile_form.save(commit=False) - custom_form.save() - if request.user.profile.about_me != '': - print("Not Blank") - awardBadge = TagBadge.objects.get_or_create(awarded_to_user=request.user,badge_type="Bronze", tag_name="Autobiographer",bade_position="BADGE") - sendNotification = PrivRepNotification.objects.get_or_create(for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - messages.success(request, "Profile Saved") - return redirect('profile:home') - - else: - Edit_profile_form = EditProfileForm(instance=request.user.profile) - -# To Show Last Seen in Profile. You'll see as "Last seen" -# Transfer this Variable into config.py - USER_ONLINE_TIMEOUT = timedelta(seconds=5) - min_time = timezone.now() - (USER_ONLINE_TIMEOUT) - queryset = online_users.models.OnlineUserActivity.objects.filter( - user_id=user_id).annotate(is_online=Case( - When(last_activity__gte=min_time, then=Value(True)), - default=Value(False), - output_field=BooleanField(), - )) - - online_user_activity = get_object_or_404(queryset) - - - context = {'Edit_profile_form': Edit_profile_form,'profileData':profileData,'online_user_activity':online_user_activity,} - return render(request, 'profile/EditProfile.html', context) -from django.core.files.storage import FileSystemStorage - - -def EditProfileAjaxForm(request, user_id): - # data = get_object_or_404(Answer, pk=answer_id) - # request should be ajax and method should be POST. - if is_ajax(request) and request.method == "POST": - - - - request.user.profile.full_name = request.POST.get("full_name") - request.user.profile.location = request.POST.get("location") - request.user.profile.title = request.POST.get("title") - request.user.profile.about_me = request.POST.get("about_me") - request.user.profile.website_link = request.POST.get("website_link") - request.user.profile.twitter_link = request.POST.get("twitter_link") - request.user.profile.github_link = request.POST.get("github_link") - request.user.profile.not_to_Display_Full_name = request.POST.get("not_to_Display_Full_name") - - - if request.FILES != {}: - request.user.profile.profile_photo = request.FILES["image"] - - request.user.profile.save() - - - if request.user.profile.about_me != '': - awardBadge = TagBadge.objects.get_or_create(awarded_to_user=request.user,badge_type="Bronze", tag_name="Autobiographer",bade_position="BADGE") - sendNotification = PrivRepNotification.objects.get_or_create(for_user=request.user, url="#", type_of_PrivNotify="BADGE_EARNED", for_if="Autobiographer") - - - return JsonResponse({"instance": "SUCCESS"}, status=200) - - - # some error occured - return JsonResponse({"error": ""}, status=400) - - - -@unBanRequired -@profileOwnerRequired_For_Edit -def userProfileJonPrefrences_Settings(request, user_id): - profileData = get_object_or_404(Profile, pk=user_id) - - if request.method == 'POST': - editProfile_Job = EditJobPrefrences(request.POST, - request.FILES, - instance=request.user.profile) - - if editProfile_Job.is_valid(): - # custom_form = editProfile_Job.save(commit=False) - custom_form.save() - - # messages.success(request, "Profile Saved") - # return redirect('profile:home') - - else: - editProfile_Job = EditJobPrefrences(instance=request.user.profile) - - USER_ONLINE_TIMEOUT = timedelta(seconds=5) - min_time = timezone.now() - (USER_ONLINE_TIMEOUT) - queryset = online_users.models.OnlineUserActivity.objects.filter( - user_id=profileData.user).annotate(is_online=Case( - When(last_activity__gte=min_time, then=Value(True)), - default=Value(False), - output_field=BooleanField(), - )) - - online_user_activity = get_object_or_404(queryset) - - - context = {'online_user_activity':online_user_activity,'profileData':profileData,'editProfile_Job': editProfile_Job} - return render(request, 'profile/EditProfileJobPrefrences.html', context) - - -def editProfile_JobPreAjax_Form(request, user_id): - if is_ajax(request) and request.method == "POST": - # get the form data - editProfile = EditJobPrefrences(instance=request.user.profile, - data=request.POST, - files=request.FILES) - # save the data and after fetch the object in instance - if editProfile.is_valid(): - instance = editProfile.save() - # serialize in new friend object in json - new_instance = serializers.serialize('json', [ - instance, - ]) - # send to client side. - return JsonResponse({"instance": new_instance}, status=200) - else: - # some form errors occured. - print(editProfile.errors) - return JsonResponse({"error": editProfile.errors}, status=400) - - # some error occured - return JsonResponse({"error": ""}, status=400) - - -@unBanRequired -@profileOwnerRequired_For_Edit -def userProfileEdit_Email_Settings(request, user_id): - profileData = get_object_or_404(Profile, pk=user_id) - if request.method == 'POST': - editEmail = EditEmailForm(request.POST, - request.FILES, - instance=request.user.profile) - else: - editEmail = EditEmailForm(instance=request.user.profile) - - context = {'profileData':profileData,'editEmail': editEmail} - return render(request, 'profile/Edit_Email_Settings.html', context) - -def editProfile_EditEmail_AjaxForm(request, user_id): - # data = get_object_or_404(Answer, pk=answer_id) - # request should be ajax and method should be POST. - if is_ajax(request) and request.method == "POST": - # get the form data - editEmail = EditEmailForm(instance=request.user.profile, - data=request.POST, - files=request.FILES) - # save the data and after fetch the object in instance - if editEmail.is_valid(): - instance = editEmail.save() - # serialize in new friend object in json - new_instance = serializers.serialize('json', [ - instance, - ]) - # send to client side. - return JsonResponse({"instance": new_instance}, status=200) - else: - # some form errors occured. - return JsonResponse({"error": editEmail.errors}, status=400) - - # some error occured - return JsonResponse({"error": ""}, status=400) - - -def email_html(request): - profile = request.user.profile - - # receivers = [] - - # for users in Profile.objects.all(): - # receivers.append(users.email) - - subject = 'Subject' - html_message = render_to_string('profile/pdf2.html', {'context': profile}) - plain_message = strip_tags(html_message) - from_email = 'From yawanspace@gmail.com' - to = 'myspaceissecret@gmail.com' - mail.send_mail(subject, plain_message, from_email, [to], html_message=html_message) - - -# def email_html(request): -# sent = False - -# if request.method == 'POST': -# form = EmailForm(request.POST) -# if form.is_valid(): -# cd = form.cleaned_data -# subject = f"{cd['name']} recommends you read" - -# message = f"{cd['review']} " -# send_mail(subject,message,'yawanspace@gmail.com', -# [request.user.profile.email]) -# sent = True - -# else: -# form = EmailForm() - -# context = {'sent':sent,'form':form} -# return render(request, 'profile/pdf2.html', context) - - -def select_BadgeTarget(request, user_id): - toTargetPlace = Profile.objects.get(user=user_id) - - if request.GET.get('submit') == 'commenter': - toTargetPlace.targeted_tag = "Commenter" - toTargetPlace.save() - return JsonResponse({'action': 'commenter'}) - - elif request.GET.get('submit') == 'altruist': - toTargetPlace.targeted_tag = "Altruist" - toTargetPlace.save() - return JsonResponse({'action':'altruist'}) - - elif request.GET.get('submit') == "archaeologist": - toTargetPlace.targeted_tag = "Archaeologist" - toTargetPlace.save() - return JsonResponse({'action': 'archaeologist'}) - - elif request.GET.get('submit') == 'autobiographer': - toTargetPlace.targeted_tag = "Autobiographer" - toTargetPlace.save() - return JsonResponse({'action': 'autobiographer'}) - - elif request.GET.get('submit') == 'civic_duty': - toTargetPlace.targeted_tag = "Civic Duty" - toTargetPlace.save() - return JsonResponse({'action': 'civic_duty'}) - - elif request.GET.get('submit') == 'benefactor': - toTargetPlace.targeted_tag = "Benefactor" - toTargetPlace.save() - return JsonResponse({'action': 'benefactor'}) - - elif request.GET.get('submit') == 'citizen_duty': - toTargetPlace.targeted_tag = "Citizen Duty" - toTargetPlace.save() - return JsonResponse({'action': 'citizen_duty'}) - - elif request.GET.get('submit') == 'citizen_post': - toTargetPlace.targeted_tag = "Citizen Post" - toTargetPlace.save() - return JsonResponse({'action':'citizen_post'}) - - elif request.GET.get('submit') == 'copy_editor': - toTargetPlace.targeted_tag = "Copy Editor" - toTargetPlace.save() - return JsonResponse({'action': 'copy_editor'}) - - elif request.GET.get('submit') == 'critic': - toTargetPlace.targeted_tag = "Critic" - toTargetPlace.save() - return JsonResponse({'action': 'critic'}) - - elif request.GET.get('submit') == 'custodian': - toTargetPlace.targeted_tag = "Custodian" - toTargetPlace.save() - return JsonResponse({'action': 'custodian'}) - - elif request.GET.get('submit') == 'deputy': - toTargetPlace.targeted_tag = "Deputy" - toTargetPlace.save() - return JsonResponse({'action':'deputy'}) - - elif request.GET.get('submit') == 'disciplned': - toTargetPlace.targeted_tag = "Discliplned" - toTargetPlace.save() - return JsonResponse({'action': 'discliplned'}) - - elif request.GET.get('submit') == 'electorate': - toTargetPlace.targeted_tag = "Electorate" - toTargetPlace.save() - return JsonResponse({'action': 'electorate'}) - - elif request.GET.get('submit') == 'excavator': - toTargetPlace.targeted_tag = "Excavator" - toTargetPlace.save() - return JsonResponse({'action':'excavator'}) - - elif request.GET.get('submit') == 'explainer': - toTargetPlace.targeted_tag = "Explainer" - toTargetPlace.save() - return JsonResponse({'action': 'explainer'}) - - elif request.GET.get('submit') == 'illuminator': - toTargetPlace.targeted_tag = "Illuminator" - toTargetPlace.save() - return JsonResponse({'action': 'illuminator'}) - - elif request.GET.get('submit') == 'investor': - toTargetPlace.targeted_tag = "Investor" - toTargetPlace.save() - return JsonResponse({'action':'investor'}) - - elif request.GET.get('submit') == 'marshal': - toTargetPlace.targeted_tag = "Marshal" - toTargetPlace.save() - return JsonResponse({'action': 'marshal'}) - - elif request.GET.get('submit') == 'mortarboard': - toTargetPlace.targeted_tag = "Mortarboard" - toTargetPlace.save() - return JsonResponse({'action': 'mortarboard'}) - - elif request.GET.get('submit') == 'necromancer': - toTargetPlace.targeted_tag = "Necromancer" - toTargetPlace.save() - return JsonResponse({'action':'necromancer'}) - - elif request.GET.get('submit') == 'peer_pressure': - toTargetPlace.targeted_tag = "Peer Pressure" - toTargetPlace.save() - return JsonResponse({'action':'peer_pressure'}) - - elif request.GET.get('submit') == 'promoter': - toTargetPlace.targeted_tag = "Promoter" - toTargetPlace.save() - return JsonResponse({'action':'promoter'}) - - elif request.GET.get('submit') == 'proofreader': - toTargetPlace.targeted_tag = "Proofreader" - toTargetPlace.save() - return JsonResponse({'action':'proofreader'}) - - elif request.GET.get('submit') == 'refiner': - toTargetPlace.targeted_tag = "Refiner" - toTargetPlace.save() - return JsonResponse({'action':'refiner'}) - - elif request.GET.get('submit') == 'revival': - toTargetPlace.targeted_tag = "Revival" - toTargetPlace.save() - return JsonResponse({'action':'revival'}) - - elif request.GET.get('submit') == 'self_learner': - toTargetPlace.targeted_tag = "Self-learner" - toTargetPlace.save() - return JsonResponse({'action':'self_learner'}) - - elif request.GET.get('submit') == 'sportsmanship': - toTargetPlace.targeted_tag = "Sportsmanship" - toTargetPlace.save() - return JsonResponse({'action':'sportsmanship'}) - - elif request.GET.get('submit') == 'strunk_white': - toTargetPlace.targeted_tag = "Strunk-White" - toTargetPlace.save() - return JsonResponse({'action':'strunk_white'}) - - elif request.GET.get('submit') == 'suffrage': - toTargetPlace.targeted_tag = "Suffrage" - toTargetPlace.save() - return JsonResponse({'action':'suffrage'}) - - elif request.GET.get('submit') == 'teacher': - toTargetPlace.targeted_tag = "Teacher" - toTargetPlace.save() - return JsonResponse({'action':'teacher'}) - - elif request.GET.get('submit') == 'vox_populi': - toTargetPlace.targeted_tag = "Vox-Populi" - toTargetPlace.save() - return JsonResponse({'action':'vox_populi'}) - - else: - messages.error(request, 'Something went wrong!') - return redirect('profile:home') diff --git a/qa/__init__.py b/qa/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/qa/admin.py b/qa/admin.py deleted file mode 100644 index 301745a..0000000 --- a/qa/admin.py +++ /dev/null @@ -1,30 +0,0 @@ -from django.contrib import admin -from django.contrib.admin import site -import adminactions.actions as actions -from .models import Question,Answer,Bounty,Reputation,QDownvote -from .models import ProtectQuestion,CommentQ,QUpvote,BookmarkQuestion -# from .models import ADownvote,AUpvote -from .models import BannedUser -from simple_history.admin import SimpleHistoryAdmin -actions.add_to_site(site) - - -admin.site.register(Question,SimpleHistoryAdmin) - -admin.site.register(BookmarkQuestion) - -admin.site.register(Answer) - -admin.site.register(Bounty) - -admin.site.register(Reputation) - -admin.site.register(ProtectQuestion) - -admin.site.register(CommentQ) - -admin.site.register(QUpvote) - -admin.site.register(QDownvote) - -admin.site.register(BannedUser) \ No newline at end of file diff --git a/qa/apps.py b/qa/apps.py deleted file mode 100644 index 99ba8e2..0000000 --- a/qa/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class QaConfig(AppConfig): - default_auto_field = 'django.db.models.BigAutoField' - name = 'qa' diff --git a/qa/decorators.py b/qa/decorators.py deleted file mode 100644 index 8b5a6b4..0000000 --- a/qa/decorators.py +++ /dev/null @@ -1,54 +0,0 @@ -from django.shortcuts import redirect,render -from django.contrib.auth import logout -from django.core.exceptions import PermissionDenied - -def loggedOutFromAllDevices(function): - def logOutFunc(request, *args, **kwargs): - if request.user.is_authenticated: - if request.user.profile.logout_on_all_devices == False: - return function(request, *args, **kwargs) - else: - logout(request) - return redirect("profile:home") - - else: - return redirect('users:login_request') - - return logOutFunc - -def superuser_only(function): - - def _inner(request, *args, **kwargs): - if not request.user.is_superuser: - raise PermissionDenied - return function(request, *args, **kwargs) - return _inner - -def highModRequired(function): - - def keepNormalOut(request, *args, **kwargs): - if request.user.is_authenticated: - if request.user.profile.is_high_moderator: - return function(request, *args, **kwargs) - else: - return render(request, 'Denied/HighModRequired.html') - - else: - return redirect('users:login_request') - - return keepNormalOut - - -def access_mod_tools_priv_required(function): - - def keepNormalOut(request, *args, **kwargs): - if request.user.is_authenticated: - if request.user.profile.accessTo_moderatorTools: - return function(request, *args, **kwargs) - else: - return render(request, 'Denied/requiredRep_1000.html') - - else: - return redirect('users:login_request') - - return keepNormalOut diff --git a/qa/feeds.py b/qa/feeds.py deleted file mode 100644 index f199484..0000000 --- a/qa/feeds.py +++ /dev/null @@ -1,18 +0,0 @@ -from django.contrib.syndication.views import Feed -from django.template.defaultfilters import truncatewords -from django.urls import reverse_lazy -from .models import Question - -class LatestQuestionFeed(Feed): - title = "My Question" - link = reverse_lazy('qa:questions') - description = 'New Post of Question' - - def items(self): - return Question.objects.all()[:5] - - def item_title(self, item): - return item.title - - def item_description(self, item): - return truncatewords(item.body, 30) \ No newline at end of file diff --git a/qa/forms.py b/qa/forms.py deleted file mode 100644 index 5876162..0000000 --- a/qa/forms.py +++ /dev/null @@ -1,64 +0,0 @@ -from django import forms -from .models import Question,Answer,Bounty,ProtectQuestion -from .models import BannedUser - -class InlineTagEditForm(forms.ModelForm): - - class Meta: - model = Question - fields = ['tags'] - -class SearchForm(forms.Form): - noAnswers = forms.BooleanField(initial=False) - -class BanUser_Form(forms.ModelForm): - - class Meta: - model = BannedUser - fields = ['banned_reasons', 'ban_till'] - -class BountyForm(forms.ModelForm): - - class Meta: - model = Bounty - fields = ['bounty_value','why_bounting'] - -class QuestionForm(forms.ModelForm): - - class Meta: - model = Question - fields = ['title','body','tags'] - -class AnswerForm(forms.ModelForm): - - class Meta: - model = Answer - fields = ['body','is_wiki_answer'] - -class UpdateQuestion(forms.ModelForm): - - class Meta: - model = Question - fields = ['title','body','tags','why_editing_question'] - -class EditAnswerForm(forms.ModelForm): - - class Meta: - model = Answer - fields = ['body','why_editing_answer'] - -# class ReviewAnswer(forms.ModelForm): - -# class Meta: -# model = ReviewFirstAnswer -# fields = ['actions'] - -CHOICES=[('select1','select 1'), - ('select2','select 2')] - - -class ProtectForm(forms.ModelForm): - - class Meta: - model = ProtectQuestion - fields = ['why_want_toProtect'] \ No newline at end of file diff --git a/qa/migrations/0001_initial.py b/qa/migrations/0001_initial.py deleted file mode 100644 index d90404a..0000000 --- a/qa/migrations/0001_initial.py +++ /dev/null @@ -1,367 +0,0 @@ -# Generated by Django 3.2.6 on 2022-01-04 20:58 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import martor.models -import simple_history.models -import taggit.managers - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('taggit', '0003_taggeditem_add_unique_index'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Answer', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date', models.DateTimeField(auto_now_add=True)), - ('body', martor.models.MartorField()), - ('accepted', models.BooleanField(default=False)), - ('a_reputation', models.IntegerField(default=0)), - ('is_bountied_awarded', models.BooleanField(default=False)), - ('active_time', models.DateTimeField(auto_now=True)), - ('a_edited_time', models.DateTimeField(auto_now=True)), - ('why_editing', models.CharField(default='', max_length=5000)), - ('deletedHistory', models.CharField(choices=[('DELETED', 'Deleted'), ('UNDELETED', 'UnDeleted')], default='', max_length=5000)), - ('monitor_it', models.BooleanField(default=False)), - ('why_editing_answer', models.CharField(blank=True, default='', max_length=5000, null=True)), - ('revival_stage_one', models.BooleanField(blank=True, default=False, null=True)), - ('necromancer_check', models.BooleanField(blank=True, default=False, null=True)), - ('is_wiki_answer', models.BooleanField(default=False)), - ('is_deleted', models.BooleanField(default=False)), - ('deleted_time', models.DateTimeField(auto_now_add=True)), - ('a_edited_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='a_edited_time', to=settings.AUTH_USER_MODEL)), - ('a_vote_downs', models.ManyToManyField(blank=True, related_name='a_vote_down', to=settings.AUTH_USER_MODEL)), - ('a_vote_ups', models.ManyToManyField(blank=True, related_name='a_vote_up', to=settings.AUTH_USER_MODEL)), - ('answer_owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.CreateModel( - name='Bounty', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('bounty_value', models.CharField(choices=[('50', '50'), ('100', '100'), ('150', '150'), ('200', '200'), ('250', '250'), ('300', '300'), ('350', '350'), ('400', '400'), ('450', '450'), ('500', '500')], default='50', max_length=500)), - ('why_bounting', models.CharField(default='', max_length=30)), - ('is_awarded', models.BooleanField(default=False)), - ('date', models.DateTimeField(auto_now_add=True)), - ('bounty_awarded_to', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='bounty_awarded_to', to=settings.AUTH_USER_MODEL)), - ('by_user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.CreateModel( - name='CommentQ', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('deleted', models.BooleanField(default=False)), - ('comment', models.CharField(default='', max_length=200)), - ('date', models.DateTimeField(auto_now_add=True)), - ('com_upvote_time', models.DateTimeField(auto_now_add=True)), - ('answer_comment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.answer')), - ('com_upvote', models.ManyToManyField(blank=True, related_name='comm_upvote', to=settings.AUTH_USER_MODEL)), - ('commented_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.CreateModel( - name='Question', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('title', models.CharField(default='', max_length=5000)), - ('body', martor.models.MartorField()), - ('date', models.DateTimeField(auto_now_add=True)), - ('active_date', models.DateTimeField(auto_now=True)), - ('q_reputation', models.IntegerField(default=0)), - ('q_edited_time', models.DateTimeField(auto_now_add=True)), - ('is_bountied', models.BooleanField(default=False)), - ('bounty_date_announced', models.DateTimeField(auto_now_add=True)), - ('limit_exced', models.BooleanField(default=False)), - ('is_edited', models.BooleanField(default=False)), - ('is_protected', models.BooleanField(default=False)), - ('why_editing_question', models.CharField(default='', max_length=5000)), - ('is_deleted', models.BooleanField(default=False)), - ('answeredOnMinusTwo_Downvote', models.DateTimeField(auto_now_add=True)), - ('is_closed', models.BooleanField(default=False)), - ('closed_at', models.DateTimeField(auto_now_add=True)), - ('is_answer_accepted', models.BooleanField(default=False)), - ('reversal_monitor', models.BooleanField(default=False)), - ('lastActiveFor', models.CharField(blank=True, choices=[('ANSWERED', 'Answered'), ('MODIFIED', 'Modified'), ('ASKED', 'Asked')], default='', max_length=5000)), - ('slug', models.SlugField(blank=True, max_length=1000, null=True)), - ('deleted_time', models.DateTimeField(auto_now_add=True)), - ('lastActiveFor_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='lastActiveFor_by', to=settings.AUTH_USER_MODEL)), - ('post_owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ('q_edited_by', models.ForeignKey(blank=True, default='', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='q_edited_by', to=settings.AUTH_USER_MODEL)), - ('tags', taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags')), - ('viewers', models.ManyToManyField(blank=True, related_name='viewed_posts', to=settings.AUTH_USER_MODEL)), - ], - options={ - 'ordering': ['-date'], - }, - ), - migrations.CreateModel( - name='Reputation', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('inc_dec', models.CharField(choices=[('Increased', 'Increased'), ('Decreased', 'Decreased')], default='', max_length=30)), - ('question_rep_C', models.IntegerField(blank=True, default=0, null=True)), - ('answer_rep_C', models.IntegerField(blank=True, default=0, null=True)), - ('reputation_on_what', models.CharField(choices=[('QUESTION', 'Question'), ('ANSWER', 'Answer'), ('EDIT', 'Edit'), ('ANSWER_ACCEPT', 'Answer Accept')], default='', max_length=30)), - ('date_earned', models.DateTimeField(auto_now_add=True)), - ('answer_O', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.answer')), - ('awarded_to', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ('question_O', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.question')), - ], - ), - migrations.CreateModel( - name='QUpvote', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date', models.DateTimeField(auto_now_add=True)), - ('upvote_by_q', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ('upvote_question_of', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qa.question')), - ], - ), - migrations.CreateModel( - name='QDownvote', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date', models.DateTimeField(auto_now_add=True)), - ('downvote_by_q', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ('downvote_question_of', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qa.question')), - ], - ), - migrations.CreateModel( - name='ProtectQuestion', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('why_want_toProtect', models.CharField(default='', max_length=30)), - ('protected_date', models.DateTimeField(auto_now_add=True)), - ('stillProtected', models.BooleanField(default=False)), - ('date_Removed', models.DateTimeField(blank=True, null=True)), - ('protected_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ('protecting_question', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qa.question')), - ('protectionRemovedBy', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='protectionRemovedBy', to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.CreateModel( - name='HistoricalQUpvote', - fields=[ - ('id', models.BigIntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID')), - ('date', models.DateTimeField(blank=True, editable=False)), - ('history_id', models.AutoField(primary_key=True, serialize=False)), - ('history_date', models.DateTimeField()), - ('history_change_reason', models.CharField(max_length=100, null=True)), - ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)), - ('history_relation', models.ForeignKey(db_constraint=False, on_delete=django.db.models.deletion.DO_NOTHING, related_name='qupvotehistory', to='qa.qupvote')), - ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)), - ('upvote_by_q', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), - ('upvote_question_of', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='qa.question')), - ], - options={ - 'verbose_name': 'historical q upvote', - 'ordering': ('-history_date', '-history_id'), - 'get_latest_by': 'history_date', - }, - bases=(simple_history.models.HistoricalChanges, models.Model), - ), - migrations.CreateModel( - name='HistoricalQuestion', - fields=[ - ('id', models.BigIntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID')), - ('title', models.CharField(default='', max_length=5000)), - ('body', martor.models.MartorField()), - ('date', models.DateTimeField(blank=True, editable=False)), - ('active_date', models.DateTimeField(blank=True, editable=False)), - ('q_reputation', models.IntegerField(default=0)), - ('q_edited_time', models.DateTimeField(blank=True, editable=False)), - ('is_bountied', models.BooleanField(default=False)), - ('bounty_date_announced', models.DateTimeField(blank=True, editable=False)), - ('limit_exced', models.BooleanField(default=False)), - ('is_edited', models.BooleanField(default=False)), - ('is_protected', models.BooleanField(default=False)), - ('why_editing_question', models.CharField(default='', max_length=5000)), - ('is_deleted', models.BooleanField(default=False)), - ('answeredOnMinusTwo_Downvote', models.DateTimeField(blank=True, editable=False)), - ('is_closed', models.BooleanField(default=False)), - ('closed_at', models.DateTimeField(blank=True, editable=False)), - ('is_answer_accepted', models.BooleanField(default=False)), - ('reversal_monitor', models.BooleanField(default=False)), - ('lastActiveFor', models.CharField(blank=True, choices=[('ANSWERED', 'Answered'), ('MODIFIED', 'Modified'), ('ASKED', 'Asked')], default='', max_length=5000)), - ('slug', models.SlugField(blank=True, max_length=1000, null=True)), - ('deleted_time', models.DateTimeField(blank=True, editable=False)), - ('history_id', models.AutoField(primary_key=True, serialize=False)), - ('history_date', models.DateTimeField()), - ('history_change_reason', models.CharField(max_length=100, null=True)), - ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)), - ('history_relation', models.ForeignKey(db_constraint=False, on_delete=django.db.models.deletion.DO_NOTHING, related_name='his', to='qa.question')), - ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)), - ('lastActiveFor_by', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), - ('post_owner', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), - ('q_edited_by', models.ForeignKey(blank=True, db_constraint=False, default='', null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), - ], - options={ - 'verbose_name': 'historical question', - 'ordering': ('-history_date', '-history_id'), - 'get_latest_by': 'history_date', - }, - bases=(simple_history.models.HistoricalChanges, models.Model), - ), - migrations.CreateModel( - name='HistoricalQDownvote', - fields=[ - ('id', models.BigIntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID')), - ('date', models.DateTimeField(blank=True, editable=False)), - ('history_id', models.AutoField(primary_key=True, serialize=False)), - ('history_date', models.DateTimeField()), - ('history_change_reason', models.CharField(max_length=100, null=True)), - ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)), - ('downvote_by_q', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), - ('downvote_question_of', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='qa.question')), - ('history_relation', models.ForeignKey(db_constraint=False, on_delete=django.db.models.deletion.DO_NOTHING, related_name='qdownvotehistory', to='qa.qdownvote')), - ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)), - ], - options={ - 'verbose_name': 'historical q downvote', - 'ordering': ('-history_date', '-history_id'), - 'get_latest_by': 'history_date', - }, - bases=(simple_history.models.HistoricalChanges, models.Model), - ), - migrations.CreateModel( - name='HistoricalCommentQ', - fields=[ - ('id', models.BigIntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID')), - ('deleted', models.BooleanField(default=False)), - ('comment', models.CharField(default='', max_length=200)), - ('date', models.DateTimeField(blank=True, editable=False)), - ('com_upvote_time', models.DateTimeField(blank=True, editable=False)), - ('history_id', models.AutoField(primary_key=True, serialize=False)), - ('history_date', models.DateTimeField()), - ('history_change_reason', models.CharField(max_length=100, null=True)), - ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)), - ('answer_comment', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='qa.answer')), - ('commented_by', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), - ('history_relation', models.ForeignKey(db_constraint=False, on_delete=django.db.models.deletion.DO_NOTHING, related_name='commentHis', to='qa.commentq')), - ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)), - ('question_comment', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='qa.question')), - ], - options={ - 'verbose_name': 'historical comment q', - 'ordering': ('-history_date', '-history_id'), - 'get_latest_by': 'history_date', - }, - bases=(simple_history.models.HistoricalChanges, models.Model), - ), - migrations.CreateModel( - name='HistoricalBounty', - fields=[ - ('id', models.BigIntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID')), - ('bounty_value', models.CharField(choices=[('50', '50'), ('100', '100'), ('150', '150'), ('200', '200'), ('250', '250'), ('300', '300'), ('350', '350'), ('400', '400'), ('450', '450'), ('500', '500')], default='50', max_length=500)), - ('why_bounting', models.CharField(default='', max_length=30)), - ('is_awarded', models.BooleanField(default=False)), - ('date', models.DateTimeField(blank=True, editable=False)), - ('history_id', models.AutoField(primary_key=True, serialize=False)), - ('history_date', models.DateTimeField()), - ('history_change_reason', models.CharField(max_length=100, null=True)), - ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)), - ('bounty_awarded_to', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), - ('by_user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), - ('history_relation', models.ForeignKey(db_constraint=False, on_delete=django.db.models.deletion.DO_NOTHING, related_name='bountyhistory', to='qa.bounty')), - ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)), - ('question_bounty', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='qa.question')), - ], - options={ - 'verbose_name': 'historical bounty', - 'ordering': ('-history_date', '-history_id'), - 'get_latest_by': 'history_date', - }, - bases=(simple_history.models.HistoricalChanges, models.Model), - ), - migrations.CreateModel( - name='HistoricalAnswer', - fields=[ - ('id', models.BigIntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID')), - ('date', models.DateTimeField(blank=True, editable=False)), - ('body', martor.models.MartorField()), - ('accepted', models.BooleanField(default=False)), - ('a_reputation', models.IntegerField(default=0)), - ('is_bountied_awarded', models.BooleanField(default=False)), - ('active_time', models.DateTimeField(blank=True, editable=False)), - ('a_edited_time', models.DateTimeField(blank=True, editable=False)), - ('why_editing', models.CharField(default='', max_length=5000)), - ('deletedHistory', models.CharField(choices=[('DELETED', 'Deleted'), ('UNDELETED', 'UnDeleted')], default='', max_length=5000)), - ('monitor_it', models.BooleanField(default=False)), - ('why_editing_answer', models.CharField(blank=True, default='', max_length=5000, null=True)), - ('revival_stage_one', models.BooleanField(blank=True, default=False, null=True)), - ('necromancer_check', models.BooleanField(blank=True, default=False, null=True)), - ('is_wiki_answer', models.BooleanField(default=False)), - ('is_deleted', models.BooleanField(default=False)), - ('deleted_time', models.DateTimeField(blank=True, editable=False)), - ('history_id', models.AutoField(primary_key=True, serialize=False)), - ('history_date', models.DateTimeField()), - ('history_change_reason', models.CharField(max_length=100, null=True)), - ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)), - ('a_edited_by', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), - ('answer_owner', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)), - ('history_relation', models.ForeignKey(db_constraint=False, on_delete=django.db.models.deletion.DO_NOTHING, related_name='anshis', to='qa.answer')), - ('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)), - ('questionans', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='qa.question')), - ], - options={ - 'verbose_name': 'historical answer', - 'ordering': ('-history_date', '-history_id'), - 'get_latest_by': 'history_date', - }, - bases=(simple_history.models.HistoricalChanges, models.Model), - ), - migrations.AddField( - model_name='commentq', - name='question_comment', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.question'), - ), - migrations.AddField( - model_name='bounty', - name='question_bounty', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qa.question'), - ), - migrations.CreateModel( - name='BookmarkQuestion', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date', models.DateTimeField(auto_now_add=True)), - ('bookmarked_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ('bookmarked_question', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qa.question')), - ], - ), - migrations.CreateModel( - name='BannedUser', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('banned_reasons', models.CharField(choices=[('DOING_SOCKPUPPETS', 'Doing SockPuppets'), ('RUDE_TO_MEMBERS', 'Rude to Members'), ('TERMS_AND_CONDITIONS_VOILATIONS', 'Terms and Conditions Voilations')], default='', max_length=50)), - ('baned_at', models.DateTimeField(auto_now_add=True)), - ('is_banned', models.BooleanField(default=False)), - ('ban_till', models.CharField(choices=[('3_DAYS', '3 Days'), ('7_DAYS', '7 Days'), ('15_DAYS', '15 DAYS'), ('30_DAYS', '30 DAYS'), ('2_MONTHS', '2 MONTHS'), ('6_MONTHS', '6 MONTHS'), ('1_YEAR', '1 YEAR'), ('4_YEARS', '4 YEARS')], default='', max_length=30)), - ('banned_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='banned_by', to=settings.AUTH_USER_MODEL)), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user', to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.CreateModel( - name='AnswerComment', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('tex', models.CharField(default='', max_length=30)), - ('com', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.answer')), - ], - ), - migrations.AddField( - model_name='answer', - name='questionans', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qa.question'), - ), - ] diff --git a/qa/migrations/__init__.py b/qa/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/qa/models.py b/qa/models.py deleted file mode 100644 index 710146a..0000000 --- a/qa/models.py +++ /dev/null @@ -1,371 +0,0 @@ -from django.db import models -from django.contrib.auth.models import User -from django.urls import reverse -# from ckeditor_uploader.fields import RichTextUploadingField -from taggit.managers import TaggableManager -import datetime -from django.utils import timezone -from datetime import timedelta -from model_utils import FieldTracker -from django.db.models.signals import post_save -from django.dispatch import receiver -from martor.models import MartorField -from simple_history.models import HistoricalRecords -from django.db.models import IntegerField, Model -from django.core.validators import MaxValueValidator, MinValueValidator -from slugify import slugify - -# Need to use pagination in every tab in profile pages. - - -ACTIVE_FOR_CHOICES = [ - - ('ANSWERED', 'Answered'), - ('MODIFIED', 'Modified'), - ('ASKED', 'Asked'), - -] - - -class Question(models.Model): - post_owner = models.ForeignKey(User, on_delete=models.CASCADE) - title = models.CharField(max_length=5000, default='') - body = MartorField() - tags = TaggableManager() - date = models.DateTimeField(auto_now_add=True) - active_date = models.DateTimeField(auto_now=True) - viewers = models.ManyToManyField(User, related_name='viewed_posts', blank=True) - q_reputation = models.IntegerField(default=0) - q_edited_by = models.ForeignKey(User, on_delete=models.CASCADE, related_name='q_edited_by', default='', null=True, blank=True) - q_edited_time = models.DateTimeField(auto_now_add=True) - is_bountied = models.BooleanField(default=False) - bounty_date_announced = models.DateTimeField(auto_now_add=True) - limit_exced = models.BooleanField(default=False) - is_edited = models.BooleanField(default=False) - is_protected = models.BooleanField(default=False) - why_editing_question = models.CharField(max_length=5000, default='') - is_deleted = models.BooleanField(default=False) - history = HistoricalRecords(related_name='his') - answeredOnMinusTwo_Downvote = models.DateTimeField(auto_now_add=True) - is_closed = models.BooleanField(default=False) - closed_at = models.DateTimeField(auto_now_add=True, blank=True) - is_answer_accepted = models.BooleanField(default=False) - - reversal_monitor = models.BooleanField(default=False) - - lastActiveFor = models.CharField(choices=ACTIVE_FOR_CHOICES, max_length=5000, default='', blank=True) - lastActiveFor_by = models.ForeignKey(User, on_delete=models.CASCADE,related_name='lastActiveFor_by', blank=True, null=True) - slug = models.SlugField(max_length=1000, null=True, blank=True) - - deleted_time = models.DateTimeField(auto_now_add=True, blank=True) - - - - class Meta: - ordering = ["-date"] - - # def save(self, *args, **kwargs): - # if not self.slug: - # self.slug = slugify( - # f"{self.title}-{self.id}", max_length=1000, lowercase=True - # ) - - def __str__(self): - return f'[USER] - {self.post_owner} = [TITLE] - {self.title} - [Deleted?] - {self.is_deleted} - [Bountied?] - {self.is_bountied}' - - def get_absolute_url(self): - # 'slug':self.slug}) - return reverse('qa:questionDetailView', kwargs={'pk': self.pk, }) - - @property - def count_answers(self): - return Answer.objects.filter(questionans=self).exclude(is_deleted=True).count() - - @property - def calculate_UpVote_DownVote(self): - get_Upvotes = self.qupvote_set.count() - get_DownVotes = self.qdownvote_set.count() - return get_Upvotes - get_DownVotes - - @property - def calculate_viewers(self): - return self.viewers.all().count() - - @property - def count_all_bookmarkers(self): - return self.bookmarkquestion_set.all().count() - - @property - def lastEdited_by(self): - return self.q_edited_by - - @property - def remainingBountyDate(self): - if self.is_bountied: - return self.bounty_date_announced + timedelta(days=7) - - @property - def get_all_tags(self): - return self.tags.all() - - @property - def expireBounty(self): - if self.is_bountied: - if self.bounty_date_announced < timezone.now() - timedelta(days=7): - self.is_bountied = False - self.save() - - @property - def is_question_bountied(self): - if self.is_bountied: - hideBountyButton = True - else: - hideBountyButton = False - return hideBountyButton - - # @property - # def count_questions(self): - # return Question.objects.all().count() - - - -class BookmarkQuestion(models.Model): - bookmarked_by = models.ForeignKey(User, on_delete=models.CASCADE) - bookmarked_question = models.ForeignKey(Question, on_delete=models.CASCADE) - date = models.DateTimeField(auto_now_add=True) - - def __str__(self): - return f"[U] {self.bookmarked_by} = [Q] {self.bookmarked_question.title}" - -class QUpvote(models.Model): - upvote_by_q = models.ForeignKey(User, on_delete=models.CASCADE) - upvote_question_of = models.ForeignKey(Question, on_delete=models.CASCADE) - date = models.DateTimeField(auto_now_add=True) - hisory = HistoricalRecords(related_name="qupvotehistory") - - def __str__(self): - return f"{self.upvote_question_of} = [UPVOTED-BY] {self.upvote_by_q}" - -class QDownvote(models.Model): - downvote_by_q = models.ForeignKey(User, on_delete=models.CASCADE) - downvote_question_of = models.ForeignKey(Question, on_delete=models.CASCADE) - date = models.DateTimeField(auto_now_add=True) - hisory = HistoricalRecords(related_name="qdownvotehistory") - - def __str__(self): - return f"{self.downvote_question_of} = [DOWNVOTED-BY] {self.downvote_question_of}" - -DELETE_HISTORY = [ - - ('DELETED','Deleted'), - ('UNDELETED','UnDeleted'), - -] - -class Answer(models.Model): - answer_owner = models.ForeignKey(User, on_delete=models.CASCADE) - questionans = models.ForeignKey(Question, on_delete=models.CASCADE) - date = models.DateTimeField(auto_now_add=True) - body = MartorField() - a_vote_ups = models.ManyToManyField(User, related_name='a_vote_up', blank=True) - a_vote_downs = models.ManyToManyField(User, related_name='a_vote_down', blank=True) - accepted = models.BooleanField(default=False) - a_reputation = models.IntegerField(default=0) - is_bountied_awarded = models.BooleanField(default=False) - # a_upvote_time = models.DateTimeField(auto_now_add=True) - # a_downvote_time = models.DateTimeField(auto_now_add=True) - active_time = models.DateTimeField(auto_now=True) - a_edited_by = models.ForeignKey(User, on_delete=models.CASCADE, blank=True, null=True, related_name='a_edited_time') - a_edited_time = models.DateTimeField(auto_now=True) - why_editing = models.CharField(max_length=5000,default='') - history = HistoricalRecords(related_name='anshis') - deletedHistory = models.CharField(max_length=5000, choices=DELETE_HISTORY, default='') - monitor_it = models.BooleanField(default=False) - why_editing_answer = models.CharField(max_length=5000, default='', blank=True, null=True) - - revival_stage_one = models.BooleanField(default=False, blank=True, null=True) - # revival_stage_two = models.BooleanField(default=False, blank=True, null=True) - necromancer_check = models.BooleanField(default=False, blank=True, null=True) - is_wiki_answer = models.BooleanField(default=False) - is_deleted = models.BooleanField(default=False) - deleted_time = models.DateTimeField(auto_now_add=True, blank=True) - # @property - # def allVoteCal(self): - # return self.a_vote_ups.count.all() + self.a_vote_downs.count.all() - - # @property - # def countVotes(self): - # return - - def __str__(self): - return f'[USER] - {self.answer_owner} = [TITLEs] - {self.body}' - - @property - def countAllTheVotes(self): - return self.a_vote_ups.all().count() - self.a_vote_downs.all().count() - - @property - def count_ViewsOf_Q(self): - return self.questionans.viewers.all().count() - - # @property - # def get_prev_record_diff(self): - - # previous_record = self.get_prev_record() - - # if previous_record is not None: - - # return self.diff_against(previous_record) - - # return None - - - -class CommentQ(models.Model): - question_comment = models.ForeignKey(Question,on_delete=models.CASCADE, blank=True, null=True) - answer_comment = models.ForeignKey(Answer, on_delete=models.CASCADE, blank=True, null=True) - commented_by = models.ForeignKey(User,on_delete=models.CASCADE) - deleted = models.BooleanField(default=False) - comment = models.CharField(max_length=200, default='') - date = models.DateTimeField(auto_now_add=True) - com_upvote = models.ManyToManyField(User, related_name='comm_upvote', blank=True) - com_upvote_time = models.DateTimeField(auto_now_add=True) - history = HistoricalRecords(related_name='commentHis') - - def __str__(self): - if self.question_comment: - return f"{self.comment} - {self.question_comment.title} - [D] {self.deleted}" - else: - return f"{self.comment} - {self.answer_comment} - [D] {self.deleted}" - - @property - def count_upvote(self): - return self.com_upvote.all().count() - - - -class AnswerComment(models.Model): - com = models.ForeignKey(Answer, on_delete=models.CASCADE, blank=True, null=True) - tex = models.CharField(max_length=30, default='') - - def __str__(self): - return f"{self.tex} - [D] - {self.com}" - - -BOUNTY_VALUE_CHOICES = [ - - ('50', '50'), - ('100', '100'), - ('150', '150'), - ('200', '200'), - ('250', '250'), - ('300', '300'), - ('350', '350'), - ('400', '400'), - ('450', '450'), - ('500', '500'), - -] - -class Bounty(models.Model): - by_user = models.ForeignKey(User, on_delete=models.CASCADE) - question_bounty = models.ForeignKey(Question, on_delete=models.CASCADE) - bounty_awarded_to = models.ForeignKey(User, on_delete=models.CASCADE, related_name='bounty_awarded_to', null=True, blank=True) - bounty_value = models.CharField(max_length=500, choices=BOUNTY_VALUE_CHOICES, default='50') - why_bounting = models.CharField(max_length=30, default='') - is_awarded = models.BooleanField(default=False) - date = models.DateTimeField(auto_now_add=True) - bountyHistory = HistoricalRecords(related_name="bountyhistory") - - def __str__(self): - return f'{self.question_bounty}' - - -APPROVAL_CHOICES = [ - - ('Close','Close'), - ('Leave_open', 'Leave open'), - ('Edit', 'Edit'), - ('Skip', 'Skip'), - -] - - -class ProtectQuestion(models.Model): - protected_by = models.ForeignKey(User, on_delete=models.CASCADE) - protectionRemovedBy = models.ForeignKey(User, on_delete=models.CASCADE, related_name='protectionRemovedBy') - protecting_question = models.ForeignKey(Question, on_delete=models.CASCADE) - why_want_toProtect = models.CharField(max_length=30,default='') - protected_date = models.DateTimeField(auto_now_add=True) - stillProtected = models.BooleanField(default=False) - date_Removed = models.DateTimeField(auto_now_add=False,null=True,blank=True) - - def __str__(self): - return f"{self.protecting_question}" - -REPUTATION_CHOICES = [ - - ('QUESTION', 'Question'), - ('ANSWER', 'Answer'), - ('EDIT', 'Edit'), - ('ANSWER_ACCEPT', 'Answer Accept'), - -] - -INC_DEC_CHOICES = [ - - ('Increased', 'Increased'), - ('Decreased', 'Decreased'), - -] - -class Reputation(models.Model): - awarded_to = models.ForeignKey(User, on_delete=models.CASCADE, null=True,blank=True) - question_O = models.ForeignKey(Question, on_delete=models.CASCADE, null=True,blank=True) - answer_O = models.ForeignKey(Answer, on_delete=models.CASCADE, null=True, blank=True) - # user_reputation = models.IntegerField(default=0) - inc_dec = models.CharField(max_length=30, choices=INC_DEC_CHOICES, default='') - question_rep_C = models.IntegerField(default=0, blank=True, null=True) - answer_rep_C = models.IntegerField(default=0, blank=True, null=True) #validators=[MinValueValidator(-1),] - reputation_on_what = models.CharField(max_length=30, choices=REPUTATION_CHOICES, default='') - date_earned = models.DateTimeField(auto_now_add=True) - - def __str__(self): - if self.question_rep_C != 0 and self.answer_rep_C == 0: - return f'[REPUTATION] - {self.question_rep_C} = {self.question_O.title}' - elif self.answer_rep_C != 0 and self.question_rep_C == 0: - return f'[REPUTATION] - {self.answer_rep_C}' - -# Ban User is Under Construction - -BANN_REASONS = [ - - ('DOING_SOCKPUPPETS' , 'Doing SockPuppets'), - ('RUDE_TO_MEMBERS', 'Rude to Members'), - ('TERMS_AND_CONDITIONS_VOILATIONS', 'Terms and Conditions Voilations'), - -] - -BAN_TILL_CHOICES = [ - - ('3_DAYS', "3 Days"), - ('7_DAYS', "7 Days"), - ('15_DAYS', "15 DAYS"), - ('30_DAYS', "30 DAYS"), - ('2_MONTHS', "2 MONTHS"), - ('6_MONTHS', "6 MONTHS"), - ('1_YEAR', "1 YEAR"), - ('4_YEARS', "4 YEARS"), - -] - -class BannedUser(models.Model): - user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="user") - banned_by = models.ForeignKey(User, on_delete=models.CASCADE, related_name="banned_by") - banned_reasons = models.CharField(max_length=50, choices=BANN_REASONS, default='') - baned_at = models.DateTimeField(auto_now_add=True) - is_banned = models.BooleanField(default=False) - ban_till = models.CharField(max_length=30, choices=BAN_TILL_CHOICES, default='') - - def __str__(self): - return f"{self.user} - {self.banned_reasons} - {self.ban_till}" diff --git a/qa/templatetags/__init__.py b/qa/templatetags/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/qa/templatetags/qa_tags.py b/qa/templatetags/qa_tags.py deleted file mode 100644 index d631b94..0000000 --- a/qa/templatetags/qa_tags.py +++ /dev/null @@ -1,123 +0,0 @@ -from django import template -from qa.models import Reputation,Question,BookmarkQuestion,Answer -from django.db.models import Count,BooleanField, ExpressionWrapper, Q,Exists, OuterRef,Avg, Min,Max, Sum,F, IntegerField, FloatField,Case, Value, When -from tagbadge.models import TagBadge -from django.utils import timezone -from datetime import timedelta - - - -register = template.Library() - -"""This template tag is now useless, Because i built this for- -ordering items in loop without having multiple queries in rendering view -but it was showing "Duplicate results", so i decided -to build every query in view instead of using this. -Not Working -- Never used in any of app's templates. -""" -@register.filter -def sort_by(queryset, order): - return queryset.order_by(order) - # Tried "return queryset.distinct().order_by(order)" But it was still showing duplicate items. - -@register.filter -def percentage(value): - return format(100*value/10) - -@register.filter -def advanced_percentage(queryset, from_how_much): - return format(100*queryset/from_how_much) - -@register.filter -def advanced_percentage_without_profile(from_how_much): - return format(100*from_how_much/300) - -@register.filter -def calculate_remaining_time(queryset): - from_7_days = timezone.now() - timedelta(days=7) - return queryset - from_7_days - -""" -This template tag (calculate_reputation) is for display user's reputation in for (template) loop. -Working -- Fine -""" -@register.filter -def calculate_reputation(user_id): - if user_id.is_authenticated: - getAlltheReputation = Reputation.objects.filter( - awarded_to=user_id).aggregate( - Sum('answer_rep_C'),Sum('question_rep_C')) - Q_rep = getAlltheReputation['question_rep_C__sum'] - final_Q_Rep = getAlltheReputation['question_rep_C__sum'] if Q_rep else 0 - A_rep = getAlltheReputation['answer_rep_C__sum'] - final_A_Rep = getAlltheReputation['answer_rep_C__sum'] if A_rep else 0 - return final_Q_Rep + final_A_Rep - - -# It will count and show all "Gold Badges" on profile right corner. -@register.filter -def calculateGoldBadges(user_id): - if user_id.is_authenticated: - getAllTheGoldBadges = TagBadge.objects.filter(awarded_to_user=user_id,badge_type="GOLD").count() - return getAllTheGoldBadges - - -# It will count and show all "Bronze Badges" on profile right corner. -@register.filter -def calculateBronzeBadges(user_id): - if user_id.is_authenticated: - getAllTheBronzeBadges = TagBadge.objects.filter(awarded_to_user=user_id,badge_type="BRONZE").count() - return getAllTheBronzeBadges - - -# It will count and show all "Silver Badges" on profile right corner. -@register.filter -def calculatSilvereBadges(user_id): - if user_id.is_authenticated: - getAllTheSilverBadges = TagBadge.objects.filter(awarded_to_user=user_id,badge_type="SILVER").count() - return getAllTheSilverBadges - - -@register.filter -def calculateEarned_Badge_Users(tag): - countBadge = TagBadge.objects.filter(id=tag).annotate(Count('awarded_to_user')) - return countBadge - - -@register.filter -def count_questions_by_tag(user_id,tag): - count_questions = Question.objects.filter(post_owner=user_id,tags=tag).count() - return count_questions - - -@register.filter -def count_questions_by_tag_without_user(tag): - count_questions_by_tagUser = Question.objects.filter(tags=tag).count() - return count_questions_by_tagUser - - -@register.filter -def count_all_bookmarkers(user_id): - countBookmarks = BookmarkQuestion.objects.filter(bookmarked_by=user_id).count() - return countBookmarks - -@register.filter -def count_answers_by_user(user_id): - countAnswers = Answer.objects.filter(answer_owner=user_id).count() - return countAnswers - -@register.filter -def count_questions_by_user(user_id): - countQuestions = Question.objects.filter(post_owner=user_id).count() - return countQuestions - -@register.filter -def count_questions_all(): - counted_question_from_all = Question.objects.filter(is_deleted=False).count() - return counted_question_from_all - -# I don't know why but it is not working and will cover in next update. -@register.filter -def count_question_from_tag(tag): - count_questions_from_tag = Question.objects.filter(tags__name__icontains=tag) - return count_questions_from_tag.count() \ No newline at end of file diff --git a/qa/urls.py b/qa/urls.py deleted file mode 100644 index 189e2be..0000000 --- a/qa/urls.py +++ /dev/null @@ -1,112 +0,0 @@ -from django.urls import path -from . import views -from django.conf import settings -from django.conf.urls.static import static -from .feeds import LatestQuestionFeed - -app_name = 'qa' - -urlpatterns = [ - - path('new_question/', views.new_question, name='new_question'), - - path('questionDetailView//', views.questionDetailView, name='questionDetailView'), - - path('questions/', views.questions, name='questions'), - - path('edit_question//', views.edit_question, name='edit_question'), - - path('question_upvote_downvote//', views.question_upvote_downvote, name='question_upvote_downvote'), - - path('mark_accepted///', views.mark_accepted, name='mark_accepted'), - - path('bookmarkIt//', views.bookmarkIt, name='bookmarkIt'), - - path('BountiedQuestions/', views.BountiedQuestions, name='BountiedQuestions'), - - path('answer_upvote_downvote//', views.answer_upvote_downvote, name='answer_upvote_downvote'), - - path('awardBounty///', views.awardBounty, name='awardBounty'), - - path('removeProtection//', views.removeProtection, name='removeProtection'), - - path('save_comment//', views.save_comment, name='save_comment'), - - path('upvote_comment//', views.upvote_comment, name='upvote_comment'), - - path('edit_answer//', views.edit_answer, name='edit_answer'), - - path('deleteQuestion//', views.deleteQuestion, name='deleteQuestion'), - - path('undeleteQuestion//', views.undeleteQuestion, name='undeleteQuestion'), - - path('validateQuestionTitle/', views.validateQuestionTitle, name='validateQuestionTitle'), - - path('reviewQuestion/', views.reviewQuestion, name='reviewQuestion'), - - path('timeline//', views.questionTimeline, name='questionTimeline'), - - path('answerTimeline//', views.answerTimeline, name='answerTimeline'), - - path('end_bounty_thread//', views.end_bounty_thread, name='end_bounty_thread'), - - path('banUser//', views.banUser, name='banUser'), - - path('allActiveThreads/', views.allActiveThreads, name='allActiveThreads'), - - path('UnBanUser//', views.UnBanUser, name='UnBanUser'), - - path('bookmarkQuestion//', views.bookmarkQuestion, name='bookmarkQuestion'), - - path('flagComment//', views.flagComment, name='flagComment'), - - path('save_comment_answer//', views.save_comment_answer, name='save_comment_answer'), - - path('FlagCommentAjax//', views.FlagCommentAjax, name='FlagCommentAjax'), - - path('AjaxBountyForm//', views.AjaxBountyForm, name='AjaxBountyForm'), - - path('AjaxCloseForm//', views.AjaxCloseForm, name='AjaxCloseForm'), - - path('ProtectQuestionAjax//', views.ProtectQuestionAjax, name='ProtectQuestionAjax'), - - path('getCommunityWikiAnswerDetails//', views.getCommunityWikiAnswerDetails, name='getCommunityWikiAnswerDetails'), - - path('ReOpenVotesAjax//', views.ReOpenVotesAjax, name='ReOpenVotesAjax'), - - path('award_InformedBadge_OnScroll/', views.award_InformedBadge_OnScroll, name='award_InformedBadge_OnScroll'), - - path('tourPage/', views.tourPage, name='tourPage'), - - path('AjaxFlagForm//', views.AjaxFlagForm, name='AjaxFlagForm'), - - path('Ajax_searchUser_Moderators/', views.Ajax_searchUser_Moderators, name='Ajax_searchUser_Moderators'), - - # path('inlineTagEditing_Mod_Tools//', views.inlineTagEditing_Mod_Tools, name='inlineTagEditing_Mod_Tools'), - - path('InlineTagEditingForm//', views.InlineTagEditingForm, name='InlineTagEditingForm'), - - path('feed/', LatestQuestionFeed(), name='post_feed'), - - path('flag_answer_ajax//', views.flag_answer_ajax, name='flag_answer_ajax'), - - path('answer_edit_history//', views.answer_edit_history, name='answer_edit_history'), - - path('getQuestionEditHistory//', views.getQuestionEditHistory, name='getQuestionEditHistory'), - - path('delete_answer//', views.delete_answer, name='delete_answer'), - - path('undelete_answer//', views.undelete_answer, name='undelete_answer'), - - path('unansweredQuestions//', views.unansweredQuestions, name='unansweredQuestions'), - - path('activeQuestions//', views.activeQuestions, name='activeQuestions'), - - path('load_question_upvotes_downvotes//', views.load_question_upvotes_downvotes, name='load_question_upvotes_downvotes'), - - path('load_answer_upvotes_downvotes//', views.load_answer_upvotes_downvotes, name='load_answer_upvotes_downvotes'), - - -] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) - - diff --git a/qa/views.py b/qa/views.py deleted file mode 100644 index 5164fd1..0000000 --- a/qa/views.py +++ /dev/null @@ -1,5366 +0,0 @@ -from django.shortcuts import render, redirect, get_object_or_404 -from .models import Question, Answer, Bounty, Reputation, ProtectQuestion -from .forms import QuestionForm, AnswerForm, UpdateQuestion -from django.http import JsonResponse, HttpResponse -from django.db.models import Count, Q, Sum, F -from profile.models import Profile -from django.contrib import messages -from notification.models import Notification, PrivRepNotification -from django.core.mail import send_mail -from .forms import BountyForm, BanUser_Form, InlineTagEditForm -from taggit.models import Tag -import datetime -from django.utils import timezone -from datetime import timedelta -from .decorators import loggedOutFromAllDevices, superuser_only, highModRequired -from review.decorators import awardReputation -from .forms import ProtectForm, EditAnswerForm -from .models import CommentQ, QUpvote, QDownvote -from django.contrib.auth.models import User -from tagbadge.models import TagBadge -from simple_history.utils import update_change_reason -from itertools import chain -from .models import BannedUser, BookmarkQuestion -import threading -import time -from time import sleep -from django.conf import settings -from django.core.cache.backends.base import DEFAULT_TIMEOUT -from django.views.decorators.cache import cache_page -from review.models import CloseQuestionVotes, ReviewCloseVotes, ReOpenQuestionVotes -from review.models import ReviewQuestionReOpenVotes, QuestionEditVotes, ReviewQuestionEdit -from review.models import LowQualityPostsCheck, ReviewLowQualityPosts, FlagPost, FlagComment -from review.models import ReviewFlagComment, ReviewFlagPost -from review.forms import CloseForm_Q, VoteToReOpenForm, FlagQuestionForm, CommentFlagForm, AnswerFlagForm -from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger -from django.db.models import F -from django.urls import reverse -from django.core import serializers -from django.forms.models import model_to_dict -from itertools import compress -import re -from django.contrib.auth.decorators import login_required - -""" -Refrence of build_absolute_uri - - https://docs.djangoproject.com/en/4.0/ref/request-response/#django.http.HttpRequest.build_absolute_uri - https://stackoverflow.com/questions/2345708/how-can-i-get-the-full-absolute-url-with-domain-in-django -""" - -CACHE_TTL = getattr(settings, 'CACHE_TTL', DEFAULT_TIMEOUT) - -""" -A simple function to convert listed strings -into seperate strings. -""" - -# 404 HANDLER -def handler404(request, *args, **kwargs): - return render(request, 'home/404.html') - -""" -The HttpRequest.is_ajax() method is removed in DJANGO 4, -so i used is_ajax function to check if the request is -ajax or Not by identifying 'XMLHttpRequest' - -Also replaced is_ajax method with this is_ajax function. -""" -def is_ajax(request): - return request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest' - -# 500 HANDLER -def handler500(request, *args, **kwargs): - return render(request, 'home/500.html') - - -def listTOString(word): - emptyString = "" - return emptyString.join(word) - - -def UnBanUser(id): - """ - I used threading for automatic removal of the User's Ban Suspension, But - the only problem in "threading" is that if server goes down for any reason - than all the threads will stop and lost, all the background tasks will stop. - """ - - saveToFalse = BannedUser.objects.get(pk=id) - if saveToFalse.ban_till == "3_DAYS": - seconds = 10 - time.sleep(seconds) - elif saveToFalse.ban_till == "7_DAYS": - seconds_2 = 604800 - time.sleep(seconds_2) - elif saveToFalse.ban_till == "15_DAYS": - seconds_2 = 1296000 - time.sleep(seconds_2) - elif saveToFalse.ban_till == "30_DAYS": - seconds_2 = 2592000 - time.sleep(seconds_2) - elif saveToFalse.ban_till == "2_MONTHS": - seconds_2 = 5184000 - time.sleep(seconds_2) - elif saveToFalse.ban_till == "6_MONTHS": - seconds_2 = 15552000 - time.sleep(seconds_2) - elif saveToFalse.ban_till == "1_YEAR": - seconds_2 = 31104000 - time.sleep(seconds_2) - elif saveToFalse.ban_till == "4_YEARS": - seconds_2 = 62208000 - time.sleep(seconds_2) - - saveToFalse.is_banned = True - saveToFalse.save() - - print("Banned Suspension is Successfully Removed") - - -""" -Ajax form of inline tag editing. - -Where to find it :-: In question detail Page. -""" - - -def InlineTagEditingForm(request, question_id): - """ - This is view or function for handling ajax's form - of inline tag editing in Question-Detail-View - """ - data = get_object_or_404(Question, pk=question_id) - - if is_ajax(request) and request.method == 'POST': - form = InlineTagEditForm( - instance=data, data=request.POST, files=request.FILES) - if form.is_valid(): - if request.user.profile.accessTo_moderatorTools: - instance = form.save(commit=False) - # instance.user = request.user - instance = form.save() - form.save_m2m() - ser_instance = serializers.serialize('json', [ - instance, - ]) - # send to client side. - return JsonResponse({"instance": "saved"}, status=200) - else: - return JsonResponse({'action': 'lackOfPrivelege'}) - else: - return JsonResponse({"error": form.errors}, status=400) - return JsonResponse({"error": ""}, status=400) - - -# @highModRequired -def banUser(request, user_id): - """ - Ordinary form for Ban the user, When user submits form - then it will start and save a thread with unique id, - to keep track of Ban time and with choosen ban days limit - thread will remove the ban suspension. - """ - user = get_object_or_404(User, id=user_id) - userBanHistory = BannedUser.objects.filter(user=user_id) - - if request.method == 'POST': - ban_form = BanUser_Form(data=request.POST) - if ban_form.is_valid(): - post = ban_form.save(commit=False) - post.user = user - post.banned_by = request.user - post.save() - - # Begin Thread and send to "UnBanUser" view to track the time. - t = threading.Thread(target=UnBanUser, args=[post.id]) - t.setDaemon(True) - t.start() - - return redirect('profile:home') - - else: - ban_form = BanUser_Form() - - context = {'ban_form': ban_form, 'userBanHistory': userBanHistory} - return render(request, 'qa/banUser.html', context) - # return redirect('profile:home') - - -# TRANSFER -def allActiveThreads(request): - """ - It will show all the threads currently running. - Made this to check the active threads. - """ - - allThreads = threading.enumerate() - - context = {'allThreads': allThreads} - return render(request, 'qa/allActiveThreads.html', context) - -# Decorator of post_owner or moderator or gold tag badge earned user required - - -def deleteQuestion(request, question_id): - """ - view to delete question and award badges if user is eligible - """ - question = get_object_or_404(Question, pk=question_id) - question.deleted_time = timezone.now() - question.save() - if question.qupvote_set.all().count() >= 3: - TagBadge.objects.get_or_create( - awarded_to_user=question.post_owner, - badge_type="BRONZE", - tag_name="Disciplined", - bade_position="BADGE", - questionIf_TagOf_Q=question - ) - PrivRepNotification.objects.get_or_create( - for_user=request.user, - url="#", - type_of_PrivNotify="BADGE_EARNED", - for_if="Disciplined", - description="Delete own post with score of 3 or higher" - ) - - getUpvotes = question.qupvote_set.all().count() - getDownVotes = question.qupvote_set.all().count() - - if question.calculate_UpVote_DownVote >= -3: - TagBadge.objects.get_or_create(awarded_to_user=question.post_owner, - badge_type="BRONZE", - tag_name="Peer Pressure", - bade_position="BADGE", - questionIf_TagOf_Q=question - ) - PrivRepNotification.objects.get_or_create( - for_user=request.user, - url="#", - type_of_PrivNotify="BADGE_EARNED", - for_if="Peer Pressure", - description="Delete own post with score of -3 or lower" - ) - - if request.user == question.post_owner: - question.is_deleted = True - question.save() - return redirect('qa:questionDetailView', pk=question_id) - else: - messages.error(request, 'You are not the Post Owner') - # return JsonResponse({'action':'notPostOwner'}) - return redirect('qa:questionDetailView', pk=question_id) - - -def undeleteQuestion(request, question_id): - """ - view to undelete Question - """ - question = get_object_or_404(Question, pk=question_id) - if request.user == question.post_owner: - question.is_deleted = False - question.save() - return redirect('qa:questionDetailView', pk=question_id) - else: - messages.error(request, 'You are not post owner') - return redirect('qa:questionDetailView', pk=question_id) - - -def delete_answer(request, answer_id): - """ - view to delete Answer - """ - answer = get_object_or_404(Answer, pk=answer_id) - if request.user == answer.answer_owner: - answer.is_deleted = True - answer.deleted_time = timezone.now() - answer.save() - return redirect('qa:questionDetailView', pk=answer.questionans.id) - else: - messages.error(request, 'You are not post owner') - return redirect('qa:questionDetailView', pk=answer.questionans.id) - - -def undelete_answer(request, answer_id): - """ - view to undelete Answer - """ - answer = get_object_or_404(Answer, pk=answer_id) - if request.user == answer.answer_owner: - answer.is_deleted = False - answer.save() - return redirect('qa:questionDetailView', pk=answer.questionans.id) - else: - messages.error(request, 'You are not post owner') - return redirect('qa:questionDetailView', pk=answer.questionans.id) - - -def rewardPrivielege(request, which_user): - """ - This view will reward privilege to user when called - within a view with "user" argument to award - """ - getAlltheReputation = Reputation.objects.filter( - awarded_to=which_user).aggregate( - Sum('answer_rep_C'), Sum('question_rep_C')) - Q_rep = getAlltheReputation['question_rep_C__sum'] - final_Q_Rep = getAlltheReputation['question_rep_C__sum'] if Q_rep else 0 - A_rep = getAlltheReputation['answer_rep_C__sum'] - final_A_Rep = getAlltheReputation['answer_rep_C__sum'] if A_rep else 0 - totalReputation = final_Q_Rep + final_A_Rep - - # If user's reputation is more than 10 then Award Create Wiki Posts privilege. - if totalReputation >= 10: - # Create Wiki Posts - DONE - which_user.profile.create_wiki_posts = True - # Answer Protect Questions - DONE - which_user.profile.remove_new_user_restrictions = True - which_user.profile.save() - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Create Wiki Posts", - type_of_PrivNotify="Privilege_Earned") - else: - # Create Wiki Posts - DONE - which_user.profile.create_wiki_posts = False - # Answer Protect Questions - DONE - which_user.profile.remove_new_user_restrictions = False - which_user.profile.save() - - # If user's reputation is more than 15 then Award Vote Up privilege. - if totalReputation >= 15: - which_user.profile.voteUpPriv = True - which_user.profile.flag_posts = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Up Vote", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - which_user.profile.voteUpPriv = False - which_user.profile.flag_posts = False - which_user.profile.save() - - # If user's reputation is more than 15 then Award Comment Everywhere privilege. - if totalReputation >= 50: - # Comment EveryWhere - DONE - which_user.profile.comment_everywhere_Priv = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Comment Everywhere", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - # Comment EveryWhere - DONE - which_user.profile.comment_everywhere_Priv = False - which_user.profile.save() - - if totalReputation >= 75: - # Set Bounties - DONE - which_user.profile.set_bounties = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Set Bounties", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - # Set Bounties - DONE - which_user.profile.set_bounties = False - which_user.profile.save() - - if totalReputation >= 125: - # Vote Down - DONE - which_user.profile.voteDownPriv = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Vote Down", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - # Vote Down - DONE - which_user.profile.voteDownPriv = False - which_user.profile.save() - - if totalReputation >= 250: - which_user.profile.view_close_votes_Priv = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="View Close Votes", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - which_user.profile.view_close_votes_Priv = False - which_user.profile.save() - - if totalReputation >= 500: - which_user.profile.access_review_queues = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Access Review Queues", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - which_user.profile.access_review_queues = False - which_user.profile.save() - - if totalReputation >= 1000: - which_user.profile.established_user_Priv = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Established User", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - which_user.profile.established_user_Priv = False - which_user.profile.save() - - if totalReputation >= 1500: - which_user.profile.create_tags = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Create Tags", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - which_user.profile.create_tags = False - which_user.profile.save() - - if totalReputation >= 2000: - which_user.profile.edit_questions_answers = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Edit Question and Answers", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - which_user.profile.edit_questions_answers = False - which_user.profile.save() - - if totalReputation >= 10000: - which_user.profile.accessTo_moderatorTools = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Access to Moderator Tools", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - which_user.profile.accessTo_moderatorTools = False - which_user.profile.save() - - if totalReputation >= 15000: - which_user.profile.protect_questions = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Protect Questions", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - which_user.profile.protect_questions = False - which_user.profile.save() - - if totalReputation >= 20000: - which_user.profile.trusted_user_Priv = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Trusted User", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - which_user.profile.trusted_user_Priv = False - which_user.profile.save() - - return HttpResponse(status=202) - - -def save_comment(request, question_id): - """ - For save the comment on question through Ajax - and award user if eligible - """ - if request.method == 'POST': - if request.user.profile.comment_everywhere_Priv: - comment = request.POST['comment'] - que = Question.objects.get(pk=question_id) - question_URL = request.build_absolute_uri(que.get_absolute_url()) - commented_by = request.user - getComments = CommentQ.objects.filter( - commented_by=request.user).count() - if getComments >= 10: - # createTag = Tag.objects.get_or_create(name="Commentator") - TagBadge.objects.get_or_create( - awarded_to_user=commented_by, - badge_type="SILVER", - tag_name="Commentator", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=commented_by, - url=question_URL, - type_of_PrivNotify="BADGE_EARNED", - for_if="Commentator", - description="Leave 10 comments" - ) - - if comment != "": - createdComment = CommentQ.objects.create( - question_comment=que, comment=comment, commented_by=commented_by) - if request.user != que.post_owner: - Notification.objects.create( - noti_receiver=que.post_owner, - type_of_noti="question_comment", - url=question_URL, - question_noti=que) - - # It is getting comment's body then it is finding "@" in the comment- - # body and splitting all the other spaces, commas, brackets, etc. - # Then after it successfully got the name after @ like @xyz, - # then it will look if user with that username is exists or not - # and if exists then it will notify the user and if not it will - # print error of User.DoesNotExist. - - getCommentBody = createdComment.comment - - # Reference link of .find - https://docs.python.org/3/library/stdtypes.html#str.find - # Refrence link of split() - - # https://python-reference.readthedocs.io/en/latest/docs/str/split.html#example-1 - user = getCommentBody[getCommentBody.find("@") + 1:].split()[0] - - # Refrence link of re.split - - # https://docs.python.org/3/library/re.html#re.split - splitIt = re.split(",(?=(?:[^']*\'[^']*\')*[^']*$)", user) - newWord = listTOString(splitIt) - - # Reference link of ObjectDoesNotExist - - # https://docs.djangoproject.com/en/4.0/ref/exceptions/#objectdoesnotexist - if "@" in getCommentBody: - try: - User.objects.get(username=newWord) - getUserIdByUsername = User.objects.get( - username=newWord) - question_URL = request.build_absolute_uri( - que.get_absolute_url()) - send_BLANK_notification = Notification.objects.create( - noti_receiver=getUserIdByUsername, - type_of_noti="BLANK_NOTIFICATION", - url=question_URL, - question_noti=que) - print(getUserIdByUsername) - - except User.DoesNotExist: - print( - "No User Found with mentioned username " + - newWord + - " in comment " + - createdComment.comment) - - return JsonResponse({'bool': True}) - else: - return JsonResponse({'bool': False}) - else: - return JsonResponse( - {'action': "Need atleast 50 Reputation to Comment"}) - - -def load_question_upvotes_downvotes(request, question_id): - getQuestion = get_object_or_404(Question, pk=question_id) - - serialized_votes = [] - serialized_votes.append({ - 'upvotes': getQuestion.qupvote_set.all().count(), - 'downvotes': getQuestion.qdownvote_set.all().count(), - }) - - return JsonResponse({'results':serialized_votes}) - - -def load_answer_upvotes_downvotes(request, answer_id): - getAnswer = get_object_or_404(Answer, pk=answer_id) - - serialized_votes = [] - serialized_votes.append({ - 'upvotes': getAnswer.a_vote_ups.all().count(), - 'downvotes': getAnswer.a_vote_downs.all().count(), - }) - - return JsonResponse({'results': serialized_votes}) - -def Ajax_searchUser_Moderators(request): - q = request.GET.get('q') - results = User.objects.filter(username__icontains=q).distinct() - serialized_results = [] - for result in results: - if result.profile.profile_photo: - photo = result.profile.profile_photo.url - else: - photo = '' - serialized_results.append({ - 'id': result.id, - 'photo': photo, - 'user_name': result.username, - }) - - return JsonResponse({'results': serialized_results}) - - -def questionTimeline(request, question_id): - """ - view for get the question's answer, comment, upvote, downvote and edit history - exactly like timeline. - """ - data = get_object_or_404(Question, id=question_id) - answers_of_questions = data.answer_set.all() - - get_comments = list(CommentQ.objects.filter(question_comment=data)) - - get_answers = list(Answer.objects.filter(questionans=data)) - - get_bounty = list(Bounty.objects.filter(question_bounty=data)) - - get_upvote = list(QUpvote.objects.filter(upvote_question_of=data)) - - get_downvote = list(QDownvote.objects.filter(downvote_question_of=data)) - - edit_history = list(QuestionEditVotes.objects.filter(edited_question=data)) - - def ordering(obj): - try: - return obj.date - except AttributeError: - return obj.edited_suggested_at - - results = sorted( - chain( - get_comments, - get_answers, - get_bounty, - get_upvote, - get_downvote, - edit_history), - key=ordering, - reverse=True) - - page = request.GET.get('page', 1) - - paginator = Paginator(results, 20) - try: - paginated_timeline = paginator.page(page) - except PageNotAnInteger: - paginated_timeline = paginator.page(1) - except EmptyPage: - paginated_timeline = paginator.page(paginator.num_pages) - - countEvents = len(paginated_timeline) - - context = { - 'data': data, - 'paginated_timeline': paginated_timeline, - 'results': results, - 'countEvents': countEvents, - } - return render(request, 'qa/TimeLineQuestion.html', context) - - -def answerTimeline(request, answer_id): - """ - view for get the answer's history - exactly like timeline. - """ - post_answer = Answer.objects.filter(anshis=answer_id) - data = get_object_or_404(Answer, id=answer_id) - - for dat in post_answer: - for s in dat.anshis.all(): - print(s.next_record) - -# Comment - - get_comments = list(CommentQ.objects.filter(answer_comment=data)) - edit_history = list(QuestionEditVotes.objects.filter(edited_answer=data)) - -# AnswerEdit - - def ordering(obj): - try: - return obj.date - except AttributeError: - return obj.edited_suggested_at - - results = sorted( - chain( - get_comments, - edit_history), - key=ordering, - reverse=True) - - page = request.GET.get('page', 1) - - paginator = Paginator(results, 20) - try: - paginated_timeline = paginator.page(page) - except PageNotAnInteger: - paginated_timeline = paginator.page(1) - except EmptyPage: - paginated_timeline = paginator.page(paginator.num_pages) - - countEvents = len(paginated_timeline) - - context = { - 'data': data, - 'post_answer': post_answer, - 'paginated_timeline': paginated_timeline, - 'countEvents': countEvents, - } - return render(request, 'qa/TimeLineAnswer.html', context) - - -def end_bounty_thread(id): - time.sleep(10000) - createInstance = Bounty.objects.get(pk=id) - createInstance.question_bounty.is_bountied = False - createInstance.question_bounty.save() - print(createInstance.question_bounty.is_bountied) - print("Task Successfully Completed " + - " Bounty of a Question is Successfully Removed") - - -def AjaxFlagForm(request, question_id): - """ - Ajax form to submit Question's Flag - """ - data = get_object_or_404(Question, pk=question_id) - - getCreateFlag_object = FlagPost.objects.filter( - question_forFlag=data).exclude( - ended=True).first() - - if request.method == 'POST': - Flag_Form = FlagQuestionForm(data=request.POST) - if Flag_Form.is_valid(): - new_post = Flag_Form.save(commit=False) - formData = Flag_Form.cleaned_data['actions_Flag_Q'] - - if request.user.profile.flag_posts: - if formData == "SPAM" or formData == "RUDE_OR_ABUSIVE": - getCreateFlag_object = FlagPost.objects.filter(question_forFlag=data).filter( - Q(actions_Flag_Q="SPAM") | Q(actions_Flag_Q="RUDE_OR_ABUSIVE")).exclude(ended=True).first() - if getCreateFlag_object: - new_post.flagged_by = request.user - new_post.question_forFlag = data - new_post.save() - getCreateFlag_object.how_many_votes_on_spamANDRude += 1 - getCreateFlag_object.save() - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Citizen Patrol", - bade_position="BADGE", - questionIf_TagOf_Q=data) - PrivRepNotification.objects.get_or_create( - for_user=request.user, - url="#", - type_of_PrivNotify="BADGE_EARNED", - for_if="Citizen Patrol", - description="First flagged post" - ) - - else: - new_post.flagged_by = request.user - new_post.question_forFlag = data - new_post.how_many_votes_on_spamANDRude += 1 - new_post.save() - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Citizen Patrol", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - url="#", - type_of_PrivNotify="BADGE_EARNED", - for_if="Citizen Patrol", - description="First flagged post" - ) - - elif formData == "VERY_LOW_QUALITY": - getCreateFlag_object = FlagPost.objects.filter( - question_forFlag=data, - actions_Flag_Q="VERY_LOW_QUALITY").exclude( - ended=True).first() - if getCreateFlag_object: - new_post.flagged_by = request.user - new_post.question_forFlag = data - new_post.save() - getCreateFlag_object.save() - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Citizen Patrol", - bade_position="BADGE") - create_Low_Quality_Post_Instance, cre = LowQualityPostsCheck.objects.get_or_create( - suggested_by=request.user, low_is=data, why_low_quality="Very Low Quality", suggested_through="User") - createLowQualityReviewInstance = ReviewLowQualityPosts.objects.get_or_create( - review_of=create_Low_Quality_Post_Instance, is_question=data) - PrivRepNotification.objects.get_or_create( - for_user=request.user, - url="#", - type_of_PrivNotify="BADGE_EARNED", - for_if="Citizen Patrol", - description="First flagged post" - ) - - else: - print("Fourth Statement is Excecuting") - new_post.flagged_by = request.user - new_post.question_forFlag = data - new_post.save() - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Citizen Patrol", - bade_position="BADGE") - create_Low_Quality_Post_Instance, cre = LowQualityPostsCheck.objects.get_or_create( - suggested_by=request.user, low_is=data, why_low_quality="Very Low Quality", suggested_through="User") - ReviewLowQualityPosts.objects.get_or_create( - review_of=create_Low_Quality_Post_Instance, is_question=data) - - PrivRepNotification.objects.get_or_create( - for_user=request.user, - url="#", - type_of_PrivNotify="BADGE_EARNED", - for_if="Citizen Patrol", - description="First flagged post" - ) - - elif formData == "IN_NEED_OF_MODERATOR_INTERVATION" or formData == "ABOUT_PROFESSIONAL": - getCreateFlag_object = FlagPost.objects.filter( - question_forFlag=data).filter( - Q( - actions_Flag_Q="IN_NEED_OF_MODERATOR_INTERVATION") | Q( - actions_Flag_Q="ABOUT_PROFESSIONAL")).exclude( - ended=True).first() - if getCreateFlag_object: - messages.error( - request, 'Previous Flag is Waiting for Review') - else: - new_post.flagged_by = request.user - new_post.question_forFlag = data - new_post.save() - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Citizen Patrol", - bade_position="BADGE") - createReviewInstance, created = ReviewFlagPost.objects.get_or_create( - flag_question_to_view=data, flag_of=new_post) - createReviewInstance.flag_reviewed_by = request.user - PrivRepNotification.objects.get_or_create( - for_user=request.user, - url="#", - type_of_PrivNotify="BADGE_EARNED", - for_if="Citizen Patrol", - description="First flagged post" - ) - else: - getCreateFlag_object = FlagPost.objects.filter( - question_forFlag=data).filter( - Q( - actions_Flag_Q="DUPLICATE") | Q( - actions_Flag_Q="OPINION_BASED") | Q( - actions_Flag_Q="NEED_MORE_FOCUS") | Q( - actions_Flag_Q="NEED_ADDITIONAL_DETAILS") | Q( - actions_Flag_Q="NEED_DEBUGGING") | Q( - actions_Flag_Q="NOT_REPRODUCIBLE") | Q( - actions_Flag_Q="BLANTANLTY_OR_CLARITY") | Q( - actions_Flag_Q="ABOUT_GENERAL_COMPUTING_HAR")).exclude( - ended=True).first() - if getCreateFlag_object: - new_post.flagged_by = request.user - new_post.question_forFlag = data - - createLowInstance, cre = CloseQuestionVotes.objects.get_or_create( - user=request.user, question_to_closing=data, why_closing="Duplicate", ended=False) - createInstance, created = ReviewCloseVotes.objects.get_or_create( - question_to_closed=data) - createInstance.review_of = createLowInstance - createInstance.save() - - new_post.save() - getCreateFlag_object.how_many_votes_on_others += 1 - getCreateFlag_object.save() - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Citizen Patrol", - bade_position="BADGE") - createReviewInstance, created = ReviewFlagPost.objects.get_or_create( - flag_question_to_view=data) - createReviewInstance.flag_reviewed_by = request.user - PrivRepNotification.objects.get_or_create( - for_user=request.user, - url="#", - type_of_PrivNotify="BADGE_EARNED", - for_if="Citizen Patrol", - description="First flagged post" - ) - - else: - new_post.flagged_by = request.user - new_post.question_forFlag = data - new_post.how_many_votes_on_others += 1 - new_post.save() - createReviewInstance, created = ReviewFlagPost.objects.get_or_create( - flag_question_to_view=data) - createReviewInstance.flag_reviewed_by = request.user - - create_Low_Quality_Post_Instance, cre = CloseQuestionVotes.objects.get_or_create( - user=request.user, question_to_closing=data, why_closing="Duplicate", ended=False) - createInstance, created = ReviewCloseVotes.objects.get_or_create( - question_to_closed=data) - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Citizen Patrol", - bade_position="BADGE") - createInstance.review_of = create_Low_Quality_Post_Instance - createInstance.save() - PrivRepNotification.objects.get_or_create( - for_user=request.user, - url="#", - type_of_PrivNotify="BADGE_EARNED", - for_if="Citizen Patrol", - description="First flagged post" - ) - ser_instance = serializers.serialize('json', [ - new_post, - ]) - return JsonResponse({"action": "saved"}, status=200) - else: - return JsonResponse({'action': "lackOfPrivelege"}) - else: - # some form errors occured. - return JsonResponse({"error": Flag_Form.errors}, status=400) - - return JsonResponse({"error": ""}, status=400) - - -def flag_answer_ajax(request, answer_id): - """ - Ajax form to submit Answer's Flag - """ - getAnswer = get_object_or_404(Answer, pk=answer_id) - - if is_ajax(request) and request.method == 'POST': - Flag_Form = AnswerFlagForm(data=request.POST) - if Flag_Form.is_valid(): - new_post = Flag_Form.save(commit=False) - formData = Flag_Form.cleaned_data['actions_Flag_Q'] - - if request.user.profile.flag_posts: - if formData == "SPAM" or formData == "RUDE_OR_ABUSIVE": - getCreateFlag_object = FlagPost.objects.filter(answer_forFlag=getAnswer).filter( - Q(actions_Flag_Q="SPAM") | Q(actions_Flag_Q="RUDE_OR_ABUSIVE")).exclude(ended=True).first() - if getCreateFlag_object: - new_post.flagged_by = request.user - new_post.answer_forFlag = getAnswer - new_post.save() - getCreateFlag_object.how_many_votes_on_spamANDRude += 1 - getCreateFlag_object.save() - getAllReviews = FlagPost.objects.filter(answer_forFlag=getAnswer).filter( - Q(actions_Flag_Q="SPAM") | Q(actions_Flag_Q="RUDE_OR_ABUSIVE")).exclude(ended=True) - if getCreateFlag_object.how_many_votes_on_spamANDRude >= 2: - for rev in getAllReviews: - rev.ended = True - rev.save() - else: - new_post.flagged_by = request.user - new_post.answer_forFlag = getAnswer - new_post.how_many_votes_on_spamANDRude += 1 - new_post.save() - getAllReviews = FlagPost.objects.filter(answer_forFlag=getAnswer).filter( - Q(actions_Flag_Q="SPAM") | Q(actions_Flag_Q="RUDE_OR_ABUSIVE")).exclude(ended=True) - if getCreateFlag_object.how_many_votes_on_spamANDRude >= 2: - for rev in getAllReviews: - rev.ended = True - rev.save() - # return redirect('profile:home') - # return redirect('qa:questionDetailView', pk=data.id) - - elif formData == "NOT_AN_ANSWER": - getCreateFlag_object = FlagPost.objects.filter( - answer_forFlag=getAnswer, - actions_Flag_Q="NOT_AN_ANSWER").exclude( - ended=True).first() - if getCreateFlag_object: - new_post.flagged_by = request.user - new_post.answer_forFlag = getAnswer - new_post.save() - getCreateFlag_object.how_many_votes_on_notAnAnswer += 1 - getCreateFlag_object.save() - create_Low_Quality_Post_Instance = LowQualityPostsCheck.objects.get_or_create( - suggested_by=request.user, - low_ans_is=getAnswer, - why_low_quality="Not an Answer", - suggested_through="User") - - getAllReviews = FlagPost.objects.filter( - answer_forFlag=getAnswer, - actions_Flag_Q="NOT_AN_ANSWER").exclude( - ended=True) - if getCreateFlag_object.how_many_votes_on_spamANDRude >= 2: - for rev in getAllReviews: - rev.ended = True - rev.save() - else: - new_post.flagged_by = request.user - new_post.answer_forFlag = getAnswer - new_post.how_many_votes_on_notAnAnswer += 1 - new_post.save() - getAllReviews = FlagPost.objects.filter( - answer_forFlag=getAnswer, - actions_Flag_Q="NOT_AN_ANSWER").exclude( - ended=True) - if getCreateFlag_object.how_many_votes_on_spamANDRude >= 2: - for rev in getAllReviews: - rev.ended = True - rev.save() - else: - getCreateFlag_object = FlagPost.objects.filter( - answer_forFlag=getAnswer).filter( - Q( - actions_Flag_Q="IN_NEED_OF_MODERATOR_INTERVATION") | Q( - actions_Flag_Q="ABOUT_PROFESSIONAL")).exclude( - ended=True).first() - if getCreateFlag_object: - messages.error( - request, 'Previous Flag is Waiting for Review') - else: - new_post.flagged_by = request.user - new_post.answer_forFlag = getAnswer - new_post.save() - createReviewInstance, created = ReviewFlagPost.objects.get_or_create( - flag_answer_to_view_if=getAnswer, flag_of=new_post) - createReviewInstance.flag_reviewed_by = request.user - createReviewInstance.save() - getAllReviews = FlagPost.objects.filter( - answer_forFlag=getAnswer).filter( - Q( - actions_Flag_Q="IN_NEED_OF_MODERATOR_INTERVATION") | Q( - actions_Flag_Q="ABOUT_PROFESSIONAL")).exclude( - ended=True) - if getCreateFlag_object.how_many_votes_on_spamANDRude >= 2: - for rev in getAllReviews: - rev.ended = True - rev.save() - ser_instance = serializers.serialize('json', [ - new_post, - ]) - # send to client side. - return JsonResponse({"action": "saved"}, status=200) - else: - return JsonResponse({'action': "lackOfPrivelege"}) - # else: - # return JsonResponse({"action": "cannotCreate"}, status=200) - else: - # some form errors occured. - return JsonResponse({"error": Flag_Form.errors}, status=400) - - # some error occured - return JsonResponse({"error": ""}, status=400) - - -def AjaxBountyForm(request, question_id): - """ - Ajax form to save Bounty of question. - """ - data = get_object_or_404(Question, pk=question_id) - - if is_ajax(request) and request.method == 'POST': - bounty_form = BountyForm(data=request.POST) - if bounty_form.is_valid(): - if request.user.profile.set_bounties: - formCleanedData = bounty_form.cleaned_data['bounty_value'] - # created = False - new_post = bounty_form.save(commit=False) - new_post.by_user = request.user - new_post.question_bounty = data - data.limit_exced = True - data.is_bountied = True - data.bounty_date_announced = timezone.now() - # ! Invenstor Badge - First Bounty i manually Declare on another person's Q - if data.post_owner != request.user: - # request.user.profile.investor_B = True - # request.user.profile.save() - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Investor", - bade_position="BADGE", - questionIf_TagOf_Q=data) - - if formCleanedData == "50": - Reputation.objects.create( - question_O=data, - question_rep_C=-50, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - elif formCleanedData == "100": - Reputation.objects.create( - question_O=data, - question_rep_C=-100, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - elif formCleanedData == "150": - Reputation.objects.create( - question_O=data, - question_rep_C=-150, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - elif formCleanedData == "200": - Reputation.objects.create( - question_O=data, - question_rep_C=-200, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - elif formCleanedData == "250": - Reputation.objects.create( - question_O=data, - question_rep_C=-250, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - elif formCleanedData == "300": - Reputation.objects.create( - question_O=data, - question_rep_C=-300, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - elif formCleanedData == "350": - Reputation.objects.create( - question_O=data, - question_rep_C=-350, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - elif formCleanedData == "400": - Reputation.objects.create( - question_O=data, - question_rep_C=-400, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - elif formCleanedData == "450": - Reputation.objects.create( - question_O=data, - question_rep_C=-450, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - elif formCleanedData == "500": - Reputation.objects.create( - question_O=data, - question_rep_C=-500, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - else: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Promoter", - bade_position="BADGE", - questionIf_TagOf_Q=data) - - if formCleanedData == "50": - Reputation.objects.create( - question_O=data, - question_rep_C=-50, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - elif formCleanedData == "100": - Reputation.objects.create( - question_O=data, - question_rep_C=-100, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - elif formCleanedData == "150": - Reputation.objects.create( - question_O=data, - question_rep_C=-150, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - elif formCleanedData == "200": - Reputation.objects.create( - question_O=data, - question_rep_C=-200, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - elif formCleanedData == "250": - Reputation.objects.create( - question_O=data, - question_rep_C=-250, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - elif formCleanedData == "300": - Reputation.objects.create( - question_O=data, - question_rep_C=-300, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - elif formCleanedData == "350": - Reputation.objects.create( - question_O=data, - question_rep_C=-350, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - elif formCleanedData == "400": - Reputation.objects.create( - question_O=data, - question_rep_C=-400, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - elif formCleanedData == "450": - Reputation.objects.create( - question_O=data, - question_rep_C=-450, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - elif formCleanedData == "500": - Reputation.objects.create( - question_O=data, - question_rep_C=-500, - awarded_to=request.user, - reputation_on_what='Applied_Bounty') - - # Save the thread with its ID. - new_post.save() - data.save() - t = threading.Thread( - target=end_bounty_thread, args=[ - new_post.id]) - t.setDaemon(True) - t.start() - - # messages.success(request, "Successfully Applied Bounty") - # return redirect('qa:questionDetailView', pk=data.id,) # - # slug=slug) - - ser_instance = serializers.serialize('json', [ - new_post, - ]) - # send to client side. - return JsonResponse({"action": "saved"}, status=200) - else: - return JsonResponse({'action': "lackOfPrivelege"}) - else: - return JsonResponse({"error": bounty_form.errors}, status=400) - - return JsonResponse({"error": ""}, status=400) - -# Under Construction - Need Improvement - - -def getCommunityWikiAnswerDetails(request, answer_id): - """ - Edit history of answer, if answer is part of Community Wiki - """ - post = get_object_or_404(Answer, pk=answer_id) - - historyDate = post.anshis - - # getAllHistoryUsers = post.anshis.history_user - - for s in historyDate.all(): - print(s.history_user) - - countAllTheEditors = post.anshis.aggregate(countAll=Count('history_user')) - print(countAllTheEditors) - # for s in countAllTheEditors: - # k = s['history_user'] - # print(k) - - context = {'post': post, 'historyDate': historyDate, - 'countAllTheEditors': countAllTheEditors, } - return render(request, 'qa/communityWikiPostDtls.html', context) - - -def ProtectQuestionAjax(request, question_id): - """ - Form to Protect Question using Ajax. - """ - data = get_object_or_404(Question, pk=question_id) - - if is_ajax(request) and request.method == 'POST': - protectForm = ProtectForm(data=request.POST) - if protectForm.is_valid(): - if request.user.profile.protect_questions: - new_post = protectForm.save(commit=False) - new_post.protected_by = request.user - new_post.protectionRemovedBy = request.user - new_post.protecting_question = data - new_post.stillProtected = True - data.is_protected = True - data.save() - new_post.save() - - ser_instance = serializers.serialize('json', [ - new_post, - ]) - # send to client side. - return JsonResponse({"action": "formSaved"}, status=200) - else: - return JsonResponse({'action': "lackOfPrivelege"}) - # else: - # return JsonResponse({"action": "cannotCreate"}, status=200) - else: - return JsonResponse({"error": protectForm.errors}, status=400) - - return JsonResponse({"error": ""}, status=400) - - -def ReOpenVotesAjax(request, question_id): - """ - Form to save ReOpen Closed Question votes using Ajax - """ - data = get_object_or_404(Question, pk=question_id) - -# QUESTION RE-OPEN FORM - START - - getCreatedObject = ReOpenQuestionVotes.objects.filter( - question_to_opening=data).exclude(ended=True).first() - get_LIVE_Reviwing_object = ReviewQuestionReOpenVotes.objects.filter( - question_opened=data).exclude(is_completed=True).first() - -# TAGGING - START - winned_gold_tags = TagBadge.objects.filter( - awarded_to_user=request.user, badge_type="GOLD") -# TAGGING - END - - if is_ajax(request) and request.method == 'POST': - re_open_form = VoteToReOpenForm(data=request.POST) - if re_open_form.is_valid(): - new_post = re_open_form.save(commit=False) - formData = re_open_form.cleaned_data['why_opening'] - print(formData) - - if request.user.profile.cast_close_AND_Reopen_votes: - - # USER WITH GOLDEN BADGE IS TRYING TO REOPEN A QUESTION THEN NO - # REVIEW WILL BE REQUIRED - if winned_gold_tags: - for s in winned_gold_tags: - if s.tag_name in data.tags.all().values_list('name', flat=True): - new_post.user = request.user - new_post.question_to_opening = data - # print("First First Statement is Excecuting in ReOpen") - # print("Golden Badge's User is ReOpening") - # createInstance, created = ReviewQuestionReOpenVotes.objects.get_or_create(question_opened=data, is_completed=False) - # createInstance.reopen_reviewed_by.add(request.user) - # get_LIVE_Reviwing_object.reopen_reviewed_by.add(request.user) - # getCreatedObject.how_many_votes_on_Open += 1 - # getCreatedObject.save() - new_post.question_to_opening.is_closed = False - data.save() - new_post.save() - - elif getCreatedObject: - if formData == getCreatedObject.why_opening: - new_post.user = request.user - new_post.question_to_opening = data - # print("First Statement is Excecuting in ReOpen") - # createInstance, created = ReviewQuestionReOpenVotes.objects.get_or_create(question_opened=data, is_completed=False) - # new_post.how_many_votes_on_Open += 1 - getCreatedObject.how_many_votes_on_Open += 1 - getCreatedObject.save() - new_post.save() - if get_LIVE_Reviwing_object: - get_LIVE_Reviwing_object.reopen_reviewed_by.add( - request.user) - else: - print("This") - new_post.user = request.user - new_post.question_to_opening = data - # print("Second Statement is Excecuting in ReOpen") - createInstance, created = ReviewQuestionReOpenVotes.objects.get_or_create( - question_opened=data, is_completed=False) - createInstance.reopen_reviewed_by.add( - request.user) - # get_LIVE_Reviwing_object.reopen_reviewed_by.add(request.user) - getCreatedObject.how_many_votes_on_Open += 1 - getCreatedObject.save() - new_post.save() - createInstance.review_of = new_post - createInstance.save() - else: - new_post.user = request.user - new_post.question_to_opening = data - # print("Third Statement is Excecuting in ReOpen") - createInstance, created = ReviewQuestionReOpenVotes.objects.get_or_create( - question_opened=data, is_completed=False) - createInstance.reopen_reviewed_by.add(request.user) - new_post.how_many_votes_on_Open += 1 - # print("Instance Created") - new_post.save() - createInstance.review_of = new_post - createInstance.save() - ser_instance = serializers.serialize('json', [ - new_post, - ]) - # send to client side. - return JsonResponse({"action": "saved"}, status=200) - # return redirect('qa:questionDetailView', pk=data.id) - else: - if getCreatedObject: - if formData == getCreatedObject.why_opening: - new_post.user = request.user - new_post.question_to_opening = data - # print("First Statement is Excecuting in ReOpen") - # createInstance, created = ReviewQuestionReOpenVotes.objects.get_or_create(question_opened=data, is_completed=False) - # new_post.how_many_votes_on_Open += 1 - getCreatedObject.how_many_votes_on_Open += 1 - getCreatedObject.save() - new_post.save() - if get_LIVE_Reviwing_object: - get_LIVE_Reviwing_object.reopen_reviewed_by.add( - request.user) - else: - print("This") - new_post.user = request.user - new_post.question_to_opening = data - # print("Second Statement is Excecuting in ReOpen") - createInstance, created = ReviewQuestionReOpenVotes.objects.get_or_create( - question_opened=data, is_completed=False) - createInstance.reopen_reviewed_by.add(request.user) - # get_LIVE_Reviwing_object.reopen_reviewed_by.add(request.user) - getCreatedObject.how_many_votes_on_Open += 1 - getCreatedObject.save() - new_post.save() - createInstance.review_of = new_post - createInstance.save() - else: - new_post.user = request.user - new_post.question_to_opening = data - # print("Third Statement is Excecuting in ReOpen") - createInstance, created = ReviewQuestionReOpenVotes.objects.get_or_create( - question_opened=data, is_completed=False) - createInstance.reopen_reviewed_by.add(request.user) - new_post.how_many_votes_on_Open += 1 - # print("Instance Created") - new_post.save() - createInstance.review_of = new_post - createInstance.save() - # return redirect('qa:questionDetailView', pk=data.id) - - ser_instance = serializers.serialize('json', [ - new_post, - ]) - # send to client side. - return JsonResponse({"action": "saved"}, status=200) - - else: - return JsonResponse({'action': "lackOfPrivelege"}) - - else: - # some form errors occured. - return JsonResponse({"error": re_open_form.errors}, status=400) - - return JsonResponse({"error": ""}, status=400) - -# @cache_page(60 * 15) -def questionDetailView(request, pk,): # slug): - data = get_object_or_404(Question, pk=pk) - answers_of_questions = data.answer_set.all().exclude(is_deleted=True) - - STORING_THE_ORIGINAL = [] - - # If the last Answer's Edit is Approved then show the new edited answer but - # if last answer's edit is rejected then show previous one - for anss in answers_of_questions: - getAnsHistory = anss.history.first() - getLastEditVotes = QuestionEditVotes.objects.filter( - edited_answer=anss).last() - if getLastEditVotes: - if getLastEditVotes.rev_Action == "Approve" and getLastEditVotes.is_completed or getLastEditVotes.rev_Action == "Approve_Through_Edit" and getLastEditVotes.is_completed: - getTheOriginal = anss - print("First Statement in Storing is Excecuting") - STORING_THE_ORIGINAL.append(getTheOriginal) - else: - print("Second Statement in Storing is Excecuting") - getTheOriginal = getAnsHistory.prev_record - STORING_THE_ORIGINAL.append(getTheOriginal) - else: - getTheOriginal = anss - STORING_THE_ORIGINAL.append(getTheOriginal) - - # Answer - Pagination - START - page = request.GET.get('page', 1) - - paginator = Paginator(STORING_THE_ORIGINAL, 10) - try: - answers = paginator.page(page) - except PageNotAnInteger: - answers = paginator.page(1) - except EmptyPage: - answers = paginator.page(paginator.num_pages) - # Answer - Pagination - END - - -# # Need to Review - START -# if data.date < timezone.now() - timedelta(days=7) and data.viewers.count( -# ) < 5 and data.commentq_set.all().count() < 1 and data.answer_set.all().count() < 1: -# TagBadge.objects.get_or_create( -# awarded_to_user=data.post_owner, -# badge_type="GOLD", -# tag_name="Great Answer", -# bade_position="BADGE") -# print("Answer is older") -# # Need to Review - END - - # answers_of_questions = Answer.objects.filter(questionans=data) - # QUESTION BOOKMARKED BY WHOM - bookmarks = Profile.objects.filter(bookmark_questions=data).count() - # voted_time = data.date - - is_it_first = data.answer_set.first() - if is_it_first: - if is_it_first.a_vote_ups.all().count() >= 1 and is_it_first.accepted: - TagBadge.objects.get_or_create( - awarded_to_user=is_it_first.answer_owner, - badge_type="SILVER", - tag_name="Enlightened", - bade_position="BADGE", - answerIf_TagOf_A=is_it_first) - - countingActiveBounties = Question.objects.filter(limit_exced=True, - is_bountied=True).count() - -# BOUNTY LIMIT SETTER - START -# (If bounty of the -data- Q is more than or equal to 3 then the Bounty- -# button will hide and it will show a message instead) - # haveActiveBounties = Question.objects.filter(post_owner=request.user, is_bountied=True) - if countingActiveBounties >= 3: - cannot_create = True - else: - cannot_create = False -# BOUNTY LIMIT SETTER - END - - if_ans = Answer.objects.filter(questionans=data, accepted=True).count() - if if_ans >= 1: - is_it_acc = True - else: - is_it_acc = False - - # Answer Form - START - if request.method == 'POST': - form = AnswerForm(data=request.POST) - if form.is_valid(): - gettingBody = form.cleaned_data['body'] - gettingWiki = form.cleaned_data['is_wiki_answer'] - - if data.is_protected: - if request.user.profile.remove_new_user_restrictions: - new_post = form.save(commit=False) - new_post.answer_owner = request.user - new_post.questionans = data - data.active_date = timezone.now() - - data.save() - question_URL = request.build_absolute_uri( - data.get_absolute_url()) - - # if request.user != new_post.answer_owner: - Notification.objects.create( - noti_receiver=data.post_owner, - type_of_noti="NEW_ANSWER", - url=question_URL, - answer_noti=new_post) - - if len(gettingBody) <= 200: - # print("Second Last Statement") - create_Low_Quality_Post_Instance, cre = LowQualityPostsCheck.objects.get_or_create( - suggested_through="Automatic", low_ans_is=new_post, why_low_quality="Answer_Less_Than_200", is_completed=False) - ReviewLowQualityPosts.objects.get_or_create( - review_of=create_Low_Quality_Post_Instance, is_answer=new_post, is_reviewed=False) - return redirect( - 'qa:questionDetailView', - pk=data.id, - ) # slug=slug) - else: - messages.error( - request, - 'This Question is Protected and You need atleast 10 reputation to Answer it') - else: - new_post = form.save(commit=False) - new_post.answer_owner = request.user - new_post.questionans = data - data.active_date = timezone.now() - data.save() - - if data.qdownvote_set.all().count() >= 2: - new_post.monitor_it = True - new_post.save() - question_URL = request.build_absolute_uri( - data.get_absolute_url()) - # if request.user != new_post.answer_owner: - Notification.objects.create( - noti_receiver=data.post_owner, - type_of_noti="NEW_ANSWER", - url=question_URL, - answer_noti=new_post) - else: - print("Not Working") - - # WORKED - # Revival Tag - START - is_olderThan_nintyMinutes = timezone.now() - timedelta(days=30) - # Can make a view to count all the Answers in Model - # getAnswering = data.answer_set.all().count() - if data.date <= is_olderThan_nintyMinutes: # and getAnswering <= 0: - # print("Revival") - new_post.revival_stage_one = True - new_post.save() - question_URL = request.build_absolute_uri( - data.get_absolute_url()) - # if request.user != new_post.answer_owner: - Notification.objects.create( - noti_receiver=data.post_owner, - type_of_noti="NEW_ANSWER", - url=question_URL, - answer_noti=new_post) - # Revival Tag - START - - # WORKED - is_older_sixty_days = timezone.now() - timedelta(days=60) - if data.date <= is_older_sixty_days: - new_post.necromancer_check = True - new_post.save() - question_URL = request.build_absolute_uri( - data.get_absolute_url()) - # if request.user != new_post.answer_owner: - Notification.objects.create( - noti_receiver=data.post_owner, - type_of_noti="NEW_ANSWER", - url=question_URL, - answer_noti=new_post) - if gettingWiki and request.user.profile.create_wiki_posts == False: - new_post.is_wiki_answer = False - new_post.save() - question_URL = request.build_absolute_uri( - data.get_absolute_url()) - # if request.user != new_post.answer_owner: - Notification.objects.create( - noti_receiver=data.post_owner, - type_of_noti="NEW_ANSWER", - url=question_URL, - answer_noti=new_post) - messages.error( - request, 'You need atleast 10 Reputation to this Answer into Wiki Posts') - else: - # print("Main saving answer Statement is Excecuting") - new_post.save() - question_URL = request.build_absolute_uri( - data.get_absolute_url()) - # if request.user != new_post.answer_owner: - Notification.objects.create( - noti_receiver=data.post_owner, - type_of_noti="NEW_ANSWER", - url=question_URL, - answer_noti=new_post) - - getEditingTime = request.user.profile.editPostTimeOfUser - getRecentAnswer = Answer.objects.filter( - answer_owner=request.user).last() - if getRecentAnswer and request.user.profile.editPostTimeOfUser: - if getEditingTime >= timezone.now() - \ - timedelta(minutes=5) and getRecentAnswer.date >= timezone.now() - timedelta(minutes=5): - request.user.profile.Refiner_Illuminator_TagPostCounter += 1 - request.user.profile.save() - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Explainer", - bade_position="BADGE", - questionIf_TagOf_Q=data) - print("Explainer Awarded") - if request.user.profile.Refiner_Illuminator_TagPostCounter >= 50: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Refiner", - bade_position="BADGE", - questionIf_TagOf_Q=data) - - if request.user.profile.Refiner_Illuminator_TagPostCounter >= 500: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Illuminator", - bade_position="BADGE", - questionIf_TagOf_Q=data) - - if len(gettingBody) <= 200: - create_Low_Quality_Post_Instance, cre = LowQualityPostsCheck.objects.get_or_create( - suggested_through="Automatic", low_ans_is=new_post, why_low_quality="Answer_Less_Than_200", is_completed=False) - ReviewLowQualityPosts.objects.get_or_create( - review_of=create_Low_Quality_Post_Instance, is_answer=new_post, is_reviewed=False) - return redirect( - 'qa:questionDetailView', - pk=data.id, - ) # slug=slug) - else: - form = AnswerForm() - # Answer Form - END - - -# BOUNTY FORM - START - if request.method == 'POST': - bounty_form = BountyForm(data=request.POST) - else: - # new_post = new_post.id - bounty_form = BountyForm() -# BOUNTY FORM - END - - -# Question Views - queryset = Question.objects.annotate( - num_views=Count('viewers')).order_by('-num_views') - datas = get_object_or_404(queryset, pk=pk) - if request.user.is_authenticated: - created = Question.viewers.through.objects.get_or_create( - question=datas, user=request.user) - - if created: - datas.num_views += 0 -# BADGE - POPULAR QUESTION - MORE THAN 1000 VIEWS. - if datas.viewers.count() >= 1000: - TagBadge.objects.get_or_create( - awarded_to_user=data.post_owner, - badge_type="BRONZE", - tag_name="Popular Question", - bade_position="BADGE") - -# BADGE - POPULAR QUESTION - MORE THAN 2500 VIEWS. - if datas.viewers.count() >= 2500: - TagBadge.objects.get_or_create( - awarded_to_user=data.post_owner, - badge_type="SILVER", - tag_name="Notable Question", - bade_position="BADGE") - -# BADGE - POPULAR QUESTION - MORE THAN 10000 VIEWS. - if datas.viewers.count() >= 10000: - TagBadge.objects.get_or_create( - awarded_to_user=data.post_owner, - badge_type="GOLD", - tag_name="Famous Question", - bade_position="BADGE") - -# ------------- - - -# CLOSING THE QUESTION - START - getCreateClose_object = CloseQuestionVotes.objects.filter( - question_to_closing=data).exclude(ended=True).first() - getAll_Votes_required_in_close_and_completed = CloseQuestionVotes.objects.filter( - question_to_closing=data).filter(Q( - why_closing="NEED_TO_MORE_FOCUSED") | Q( - why_closing="DUPLICATE") | Q( - why_closing="NEED_ADDITIONAL_DETAILS") | Q( - why_closing="OPINION_BASED") | Q(why_closing="Close")) - - getReviewingObject = ReviewCloseVotes.objects.filter( - question_to_closed=data, is_completed=False) - - if getCreateClose_object and getCreateClose_object.how_many_votes_on_Close >= 3: - for s in getAll_Votes_required_in_close_and_completed: - s.ended = True - s.save() - data.is_closed = True - data.save() -# CLOSING THE QUESTION - END - - -# Close Question Form - START - if request.method == 'POST': - close_form = CloseForm_Q(data=request.POST) - else: - close_form = CloseForm_Q() -# Close Question Form - END - - -# Flag Comment Form - START - if request.method == 'POST': - FlagCommentForm = CommentFlagForm(data=request.POST) - if FlagCommentForm.is_valid(): - flagForm = FlagCommentForm.save(commit=False) - # flagForm.comment_of = s - flagForm.comment_flagged_by = request.user - flagForm.save() - return redirect('profile:questionDetailView', pk=data.id) - else: - FlagCommentForm = CommentFlagForm() -# Flag Comment Form - START - - -# Protect Question Form - START - if request.method == 'POST': - protectForm = ProtectForm(data=request.POST) - else: - protectForm = ProtectForm() -# Protect Question Form - END - - protectedQuestion = ProtectQuestion.objects.filter( - protecting_question__is_protected=True, stillProtected=True) - - if request.user.is_authenticated: - likepost = data.qupvote_set.filter(upvote_by_q=request.user).first() - - likeDownpost = data.qdownvote_set.filter( - downvote_by_q=request.user).first() - else: - likepost = '' - likeDownpost = '' - -# -------------TAG- LifeJacket---------------------- START - WORKING ----- - - getAnswers = data.answer_set.filter(monitor_it=True) - for ans in getAnswers: - if ans.a_vote_ups.count() >= 1 and data.qupvote_set.all().count() >= 2: - # awardTheTag - TagBadge.objects.get_or_create( - awarded_to_user=data.post_owner, - badge_type="SILVER", - tag_name="Lifejacket", - bade_position="BADGE", - answerIf_TagOf_A=ans) - - if ans.a_vote_ups.count() >= 20 and data.qupvote_set.all().count() >= 3: - TagBadge.objects.get_or_create( - awarded_to_user=data.post_owner, - badge_type="GOLD", - tag_name="Lifeboat", - bade_position="BADGE", - answerIf_TagOf_A=ans) - -# -------------TAG- LifeJacket---------------------- END - WORKING ------- - - -# -------------TAG- Populist---------------------- START - WORKING --------------------- Needs Improvement - - getAcceptedAnswer = data.answer_set.filter(accepted=True).first() - - if getAcceptedAnswer is not None: - getAcceptedAnswerCorrected = getAcceptedAnswer.a_vote_ups.count() - else: - getAcceptedAnswerCorrected = '' - - if getAcceptedAnswer is not None: - multiplied = getAcceptedAnswerCorrected * 2 + 1 - print(multiplied) - getAllTheAnswers_ofQuestion = data.answer_set.filter( - a_vote_ups__gt=multiplied).exclude(accepted=True) - else: - getAllTheAnswers_ofQuestion = '' - - for s in getAllTheAnswers_ofQuestion: - print(s.answer_owner) - -# -------------TAG- Populist---------------------- END - WORKING --------------------- Needs Improvement - - # getHow_many_vote_on_close = CloseQuestionVotes.objects.filter(question_to_closing=data).annotate(num_count=Count('how_many_votes_on_Close')) - - getHow_many_vote_on_close = CloseQuestionVotes.objects.filter( - question_to_closing=data).exclude(ended=True).count() - - if getHow_many_vote_on_close >= 1: - showClose_Votes = True - else: - showClose_Votes = False - - -# if total close votes are 2 and third is having close then close the question AND if total leave_open question are 2 and third is leave_open -# then delete the review queue BUT closing will not delete -# if next review queue is close then close votes are 2 then close the question. - - -# DELETING THE LAST CLOSE VOTE IF VIEWS ARE LESS THAN 20 AND LAST VOTE IS -# OLDER THAN 5 DAYS - START - getClose_votes_on_this_question = CloseQuestionVotes.objects.filter( - question_to_closing=data).last() - # # QUESTION - ALGORITHM - if getClose_votes_on_this_question: - if datas.viewers.all().count( - ) >= 20 and getClose_votes_on_this_question.date <= timezone.now() - timedelta(days=5): - print("Delete the Last Close Vote") - CloseQuestionVotes.objects.filter( - question_to_closing=data).last().delete() - # elif datas.viewers.all().count() < 100 and get_last_close_votes is older_than_14_days: - # print("Delete the last Close Vote") -# DELETING THE LAST CLOSE VOTE IF VIEWS ARE LESS THAN _________ AND LAST -# VOTE IS OLDER THAN _________ DAYS - END - - get_Ended_With_2 = ReviewCloseVotes.objects.filter( - question_to_closed=data).last() - if get_Ended_With_2: - get_Ended_With = get_Ended_With_2.finalResult - else: - get_Ended_With = '' - - if request.user.is_authenticated: - getClose_votes = CloseQuestionVotes.objects.filter( - user=request.user, question_to_closing=data) - - getVotes_casted_by_user = CloseQuestionVotes.objects.filter( - user=request.user, question_to_closing=data).first() - else: - getClose_votes = '' - getVotes_casted_by_user = '' - - if getClose_votes: - # print("User is Voted for Close") - can_user_vote_for_close = False - else: - can_user_vote_for_close = True - # print("request.user haven't voted to Close") - - -# QUESTION RE-OPEN FORM - START - - getCreatedObject = ReOpenQuestionVotes.objects.filter( - question_to_opening=data).exclude(ended=True).first() - get_LIVE_Reviwing_object = ReviewQuestionReOpenVotes.objects.filter( - question_opened=data).exclude(is_completed=True).first() - -# TAGGING - START - if request.user.is_authenticated: - winned_gold_tags = TagBadge.objects.filter( - awarded_to_user=request.user, badge_type="GOLD") - else: - winned_gold_tags = '' -# TAGGING - END - - if request.method == 'POST': - re_open_form = VoteToReOpenForm(data=request.POST) - else: - re_open_form = VoteToReOpenForm() - - -# IF THE NEW REQEST IS SAME TO THE LAST THEN GET THE OBJECT AND INCREASE -# THE CLOSE VOTES - -# QUESTION RE-OPEN FORM - END - - -# IMPLEMENTED BUT NEED A POPUP TO INFORM USER THAT PREVIOUS EDIT IS IN -# QUEUE - START - trueIfLastEdit_is_approved = ReviewQuestionEdit.objects.filter( - question_to_view=data).last() - if trueIfLastEdit_is_approved: - if trueIfLastEdit_is_approved.is_reviewed or request.user == data.post_owner: - print("Can Make another Edit") - canMakeAnotherEdit = True - else: - print("Cannot Make another Edit") - canMakeAnotherEdit = False - else: - canMakeAnotherEdit = True -# IMPLEMENTED BUT NEED A POPUP TO INFORM USER THAT PREVIOUS EDIT IS IN -# QUEUE - END - - if request.user.is_authenticated: - # bookmarked_by_user = BookmarkQuestion.objects.filter(bookmarked_by=request.user, bookmarked_question=data).first() - bookmarked_by_user = data.bookmarkquestion_set.filter( - bookmarked_by=request.user).first() - else: - bookmarked_by_user = '' - - getCreateFlag_object = FlagPost.objects.filter( - question_forFlag=data).exclude( - ended=True).first() - - if request.method == 'POST': - Flag_Form = FlagQuestionForm(data=request.POST) - else: - Flag_Form = FlagQuestionForm() - - getAllTheComments = data.commentq_set.all().exclude(deleted=True) - - if request.method == 'POST': - answerFlagForm = AnswerFlagForm(data=request.POST) - if answerFlagForm.is_valid(): - new_post = answerFlagForm.save(commit=False) - formData = answerFlagForm.cleaned_data['actions_Flag_Q'] - - if request.user.profile.flag_posts: - if formData == "SPAM" or formData == "RUDE_OR_ABUSIVE": - getCreateFlag_object = FlagPost.objects.filter(answer_forFlag=data).filter( - Q(actions_Flag_Q="SPAM") | Q(actions_Flag_Q="RUDE_OR_ABUSIVE")).exclude(ended=True).first() - if getCreateFlag_object: - new_post.flagged_by = request.user - new_post.answer_forFlag = data - new_post.save() - getCreateFlag_object.how_many_votes_on_spamANDRude += 1 - getCreateFlag_object.save() - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Citizen Patrol", - bade_position="BADGE") - # return redirect('qa:questionDetailView', pk=data.id) - PrivRepNotification.objects.get_or_create( - for_user=request.user, - url="#", - type_of_PrivNotify="BADGE_EARNED", - for_if="Citizen Patrol", - description="First flagged post" - ) - - else: - new_post.flagged_by = request.user - new_post.answer_forFlag = data - new_post.how_many_votes_on_spamANDRude += 1 - new_post.save() - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Citizen Patrol", - bade_position="BADGE") - # return redirect('qa:questionDetailView', pk=data.id) - PrivRepNotification.objects.get_or_create( - for_user=request.user, - url="#", - type_of_PrivNotify="BADGE_EARNED", - for_if="Citizen Patrol", - description="First flagged post" - ) - - elif formData == "NOT_AN_ANSWER": - getCreateFlag_object = FlagPost.objects.filter( - answer_forFlag=data, - actions_Flag_Q="NOT_AN_ANSWER").exclude( - ended=True).first() - if getCreateFlag_object: - new_post.flagged_by = request.user - new_post.answer_forFlag = data - new_post.save() - getCreateFlag_object.how_many_votes_on_notAnAnswer += 1 - getCreateFlag_object.save() - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Citizen Patrol", - bade_position="BADGE") - LowQualityPostsCheck.objects.get_or_create( - suggested_by=request.user, - low_is=data, - why_low_quality="Not an Answer", - suggested_through="User") - # return redirect('qa:questionDetailView', pk=data.id) - PrivRepNotification.objects.get_or_create( - for_user=request.user, - url="#", - type_of_PrivNotify="BADGE_EARNED", - for_if="Citizen Patrol", - description="First flagged post" - ) - - else: - new_post.flagged_by = request.user - new_post.answer_forFlag = data - new_post.how_many_votes_on_notAnAnswer += 1 - new_post.save() - # return redirect('qa:questionDetailView', pk=data.id) - - else: - getCreateFlag_object = FlagPost.objects.filter( - answer_forFlag=data).filter( - Q( - actions_Flag_Q="IN_NEED_OF_MODERATOR_INTERVATION") | Q( - actions_Flag_Q="ABOUT_PROFESSIONAL")).exclude( - ended=True).first() - if getCreateFlag_object: - messages.error( - request, 'Previous Flag is Waiting for Review') - else: - new_post.flagged_by = request.user - new_post.answer_forFlag = data - new_post.save() - createReviewInstance, created = ReviewFlagPost.objects.get_or_create( - flag_question_to_view=data, flag_of=new_post) - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Citizen Patrol", - bade_position="BADGE") - createReviewInstance.flag_reviewed_by.add(request.user) - PrivRepNotification.objects.get_or_create( - for_user=request.user, - url="#", - type_of_PrivNotify="BADGE_EARNED", - for_if="Citizen Patrol", - description="First flagged post" - ) - - return redirect( - 'qa:questionDetailView', - pk=data.id, - ) # slug=slug) - - else: - messages.error( - request, 'You need atleast 15 Reputation to Flag this Post') - - else: - answerFlagForm = AnswerFlagForm() - - getLastEditVotes = QuestionEditVotes.objects.filter( - edited_question=data).last() - print("Printing the Last Edit Vote Status \n") - # getFirstRecordOfQuestion = getDat.prev_record - # print(getLastEditVotes) - - if getLastEditVotes: - if getLastEditVotes.rev_Action == "Approve" and getLastEditVotes.is_completed or getLastEditVotes.rev_Action == "Approve_Through_Edit" and getLastEditVotes.is_completed or getLastEditVotes.rev_Action == "Approve_Through_Edit" and getLastEditVotes.is_completed: - getFirstRecordOfQuestion = data - else: - # getNextRecord = data.history.earliest().delete() - getDat = data.history.first() - getFirstRecordOfQuestion = getDat.prev_record - else: - getFirstRecordOfQuestion = data - - getDat = data.history.first() - getLastRecord = getDat.prev_record - -# Show New Contributor Message - START - joined_date = data.post_owner.date_joined - is_olderThan_Ten_Days = timezone.now() - timedelta(days=10) - - if joined_date <= is_olderThan_Ten_Days: - show_new_contributer_message = False - else: - show_new_contributer_message = True -# Show New Contributer Message - END - - if request.user.is_authenticated: - if request.user.profile.accessTo_moderatorTools: - if request.method != 'POST': - tagInlineEditForm = InlineTagEditForm( - request.POST or None, request.FILES or None, instance=data) - else: - tagInlineEditForm = InlineTagEditForm( - instance=data, data=request.POST, files=request.FILES) - else: - tagInlineEditForm = '' - else: - tagInlineEditForm = '' - - is_bountied = Bounty.objects.filter(question_bounty=data).first() - if request.user.is_authenticated: - is_flagged = FlagPost.objects.filter( - question_forFlag=data, flagged_by=request.user).first() - else: - is_flagged = '' - - context = { - 'is_flagged': is_flagged, - 'tagInlineEditForm': tagInlineEditForm, - 'is_bountied': is_bountied, - 'show_new_contributer_message': show_new_contributer_message, - 'STORING_THE_ORIGINAL': STORING_THE_ORIGINAL, - 'getLastRecord': getLastRecord, - 'getFirstRecordOfQuestion': getFirstRecordOfQuestion, - 'getAllTheComments': getAllTheComments, - 'answerFlagForm': answerFlagForm, - 'bookmarked_by_user': bookmarked_by_user, - 'FlagCommentForm': FlagCommentForm, - 'canMakeAnotherEdit': canMakeAnotherEdit, - 'getVotes_casted_by_user': getVotes_casted_by_user, - 'getCreatedObject': getCreatedObject, - 'can_user_vote_for_close': can_user_vote_for_close, - 'getReviewingObject': getReviewingObject, - 'get_Ended_With': get_Ended_With, - 'getCreateClose_object': getCreateClose_object, - 'getHow_many_vote_on_close': getHow_many_vote_on_close, - 'showClose_Votes': showClose_Votes, - 'getClose_votes_on_this_question': getClose_votes_on_this_question, - 'answers_of_questions': answers_of_questions, - 'data': data, - 'form': form, - 'datas': datas, - 'bounty_form': bounty_form, - 'is_it_acc': is_it_acc, - 'cannot_create': cannot_create, - 'Flag_Form': Flag_Form, - 'close_form': close_form, - 'protectForm': protectForm, - 'protectedQuestion': protectedQuestion, - 'likepost': likepost, - 'likeDownpost': likeDownpost, - 'getAnswers': getAnswers, - 'getAcceptedAnswer': getAcceptedAnswer, - 'getAcceptedAnswerCorrected': getAcceptedAnswerCorrected, - 're_open_form': re_open_form, - 'answers': answers, - } - - return render(request, 'qa/questionDetailView.html', context) - - -def AjaxCloseForm(request, question_id): - data = get_object_or_404(Question, pk=question_id) - getCreateClose_object = CloseQuestionVotes.objects.filter( - question_to_closing=data).exclude(ended=True).first() - - # request should be ajax and method should be POST. - if is_ajax(request) and request.method == 'POST': - close_form = CloseForm_Q(data=request.POST) - if close_form.is_valid(): - if request.user.profile.cast_close_AND_Reopen_votes: - new_post = close_form.save(commit=False) - formData = close_form.cleaned_data['why_closing'] - formData_duplicate_of = close_form.cleaned_data['duplicate_of'] - - if formData != "DUPLICATE": - if getCreateClose_object: - if formData == getCreateClose_object.why_closing: - new_post.user = request.user - new_post.question_to_closing = data - # createInstance,created = ReviewCloseVotes.objects.get_or_create(question_to_closed=data) - # createInstance.reviewed_by.add(request.user) - # print("Instance Created") - new_post.save() - # SAVE THE INSTANCE FIRST - # https://stackoverflow.com/questions/33838433/save-prohibited-to-prevent-data-loss-due-to-unsaved-related-object - # createInstance.review_of = new_post - # createInstance.save() - getCreateClose_object.how_many_votes_on_Close += 1 - getCreateClose_object.save() - # createInstance.review_of = new_post - # createInstance.save() - else: - # print("Save the New Request") - - new_post.user = request.user - new_post.question_to_closing = data - createInstance, created = ReviewCloseVotes.objects.get_or_create( - question_to_closed=data) - # createInstance.reviewed_by.add(request.user) - # createInstance.reviewed_by.add(request.user) - # createInstance.save() - getCreateClose_object.how_many_votes_on_Close += 1 - getCreateClose_object.save() - # print("Instance Created") - createInstance.reviewed_by.add(request.user) - new_post.save() - # SAVE THE INSTANCE FIRST - # https://stackoverflow.com/questions/33838433/save-prohibited-to-prevent-data-loss-due-to-unsaved-related-object - # createInstance.review_of = new_post - # createInstance.save() - createInstance.review_of = new_post - createInstance.save() - else: - - new_post.user = request.user - new_post.question_to_closing = data - createInstance, created = ReviewCloseVotes.objects.get_or_create( - question_to_closed=data) - createInstance.reviewed_by.add(request.user) - # createInstance.reviewed_by.add(request.user) - # createInstance.save() - new_post.how_many_votes_on_Close += 1 - new_post.save() - # SAVE THE INSTANCE FIRST - # https://stackoverflow.com/questions/33838433/save-prohibited-to-prevent-data-loss-due-to-unsaved-related-object - # createInstance.review_of = new_post - # createInstance.save() - createInstance.review_of = new_post - createInstance.save() - - elif formData == "DUPLICATE" and formData_duplicate_of is None: - print("Please Write the Another Question's URL") - return JsonResponse({'action': 'duplicate_error'}) - # messages.error(request, "Please Write the Another Question's URL") - # print("Please Write the Another Question's URL") - - else: - if getCreateClose_object: - if formData == getCreateClose_object.why_closing: - - new_post.user = request.user - new_post.question_to_closing = data - createInstance, created = ReviewCloseVotes.objects.get_or_create( - question_to_closed=data) - createInstance.reviewed_by.add(request.user) - # print("Instance Created") - new_post.save() - # SAVE THE INSTANCE FIRST - # https://stackoverflow.com/questions/33838433/save-prohibited-to-prevent-data-loss-due-to-unsaved-related-object - - getCreateClose_object.how_many_votes_on_Close += 1 - getCreateClose_object.save() - createInstance.review_of = new_post - createInstance.save() - else: - - new_post.user = request.user - new_post.question_to_closing = data - createInstance, created = ReviewCloseVotes.objects.get_or_create( - question_to_closed=data) - createInstance.reviewed_by.add(request.user) - # createInstance.reviewed_by.add(request.user) - # createInstance.save() - getCreateClose_object.how_many_votes_on_Close += 1 - getCreateClose_object.save() - # print("Instance Created") - createInstance.review_of = new_post - new_post.save() - # SAVE THE INSTANCE FIRST - # https://stackoverflow.com/questions/33838433/save-prohibited-to-prevent-data-loss-due-to-unsaved-related-object - createInstance.review_of = new_post - createInstance.save() - - else: - new_post.user = request.user - new_post.question_to_closing = data - createInstance, created = ReviewCloseVotes.objects.get_or_create( - question_to_closed=data) - createInstance.reviewed_by.add(request.user) - # createInstance.reviewed_by.add(request.user) - # createInstance.save() - new_post.how_many_votes_on_Close += 1 - # print("Instance Created") - new_post.save() - # SAVE THE INSTANCE FIRST - # https://stackoverflow.com/questions/33838433/save-prohibited-to-prevent-data-loss-due-to-unsaved-related-object - createInstance.review_of = new_post - createInstance.save() # serialize in new friend object in json - ser_instance = serializers.serialize('json', [ - new_post, - ]) - # send to client side. - return JsonResponse({"action": "saved"}, status=200) - else: - return JsonResponse({'action': "lackOfPrivelege"}) - else: - # some form errors occured. - return JsonResponse({"error": close_form.errors}, status=400) - - # some error occured - return JsonResponse({"error": ""}, status=400) - - -''' -"Unkind" and No "Longer" Needed Votes will not be reviewed, -comment will automatically delete after 3 votes on these two options -Three votes on "Unkind" and "no longer needed" will delete the comment and end the counting. - -If user voted on "Harrassment" and "Something else" then it will save review instance -''' - - -def flagComment(request, commentq_id): - commentID = get_object_or_404(CommentQ, pk=commentq_id) - createTrackRecord = FlagComment.objects.filter( - comment_of=commentID).exclude( - ended=True).first() - - if request.method == 'POST': - FlagCommentForm = CommentFlagForm(data=request.POST) - if FlagCommentForm.is_valid(): - new_post = FlagCommentForm.save(commit=False) - formData_unkind = FlagCommentForm.cleaned_data['why_flagging'] - - if formData_unkind == "UNKIND" or formData_unkind == "NOT_NEEDED": - # Create CommentFlag instance to keep track how many votes are to Flag. - # print("User has selected UnKIND or No needed") - if createTrackRecord: - # print("First Statement is Excecuting") - new_post.comment_flagged_by = request.user - new_post.comment_of = commentID - new_post.save() - createTrackRecord.how_many_votes_on_notNeeded_unkind += 1 - createTrackRecord.save() - if createTrackRecord.how_many_votes_on_notNeeded_unkind >= 3: - commentID.deleted = True - commentID.save() - return redirect('profile:home') - - else: - # print("Second Statement is Excecuting") - new_post.comment_flagged_by = request.user - new_post.comment_of = commentID - new_post.how_many_votes_on_notNeeded_unkind += 1 - new_post.save() - if createTrackRecord.how_many_votes_on_notNeeded_unkind >= 3: - commentID.deleted = True - commentID.save() - return redirect('profile:home') - - else: - if createTrackRecord: - # print("Third Statement is Excecuting") - new_post.comment_flagged_by = request.user - new_post.comment_of = commentID - new_post.save() - createTrackRecord.how_many_votes_on_notNeeded_unkind += 1 - createTrackRecord.save() - createReviewingFlagCommentInstance, created = ReviewFlagComment.objects.get_or_create( - flag_of=commentID) - createReviewingFlagCommentInstance.c_flag_reviewed_by = request.user - createReviewingFlagCommentInstance.save() - if createTrackRecord.how_many_votes_on_notNeeded_unkind >= 3: - commentID.delete() - return redirect('profile:home') - else: - # print("Third Statement is Excecuting") - new_post.comment_flagged_by = request.user - new_post.comment_of = commentID - new_post.how_many_votes_on_notNeeded_unkind += 1 - new_post.save() - createReviewingFlagCommentInstance, created = ReviewFlagComment.objects.get_or_create( - flag_of=commentID) - createReviewingFlagCommentInstance.c_flag_reviewed_by = request.user - createReviewingFlagCommentInstance.save() - # if createTrackRecord.how_many_votes_on_notNeeded_unkind >= 3: - # commentID.delete() - return redirect('profile:home') - else: - messages.error(request, "Something went wrong!") - return redirect('profile:home') - - else: - FlagCommentForm = CommentFlagForm() - - context = {'FlagCommentForms': FlagCommentForm} - return render(request, 'profile/flagComment.html', context) - - -def save_comment_answer(request, answer_id): - if request.method == 'POST': - if request.user.profile.comment_everywhere_Priv: - comment = request.POST['comment'] - answeringID = request.POST['request'] - print(answeringID) - ans = Answer.objects.get(pk=answeringID) - question_URL = request.build_absolute_uri( - ans.questionans.get_absolute_url()) - if comment != "": - create = CommentQ.objects.create(answer_comment=ans, - comment=comment, - commented_by=request.user - ) - if request.user != ans.answer_owner: - Notification.objects.create( - noti_receiver=ans.answer_owner, - type_of_noti="comment_answer", - url=question_URL, - answer_noti=ans) - - getComments = CommentQ.objects.filter( - commented_by=request.user).count() - if getComments >= 10: - TagBadge.objects.get_or_create( - awarded_to_user=create.commented_by, - badge_type="SILVER", - tag_name="Commentator", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - url=question_URL, - type_of_PrivNotify="BADGE_EARNED", - for_if="Commentator", - description="Leave 10 comments" - ) - - return JsonResponse({'bool': True}) - else: - return JsonResponse({'bool': False}) - else: - return JsonResponse( - {'action': "Need atleast 50 Reputation to Comment"}) - - -def FlagCommentAjax(request, commentq_id): - commentID = get_object_or_404(CommentQ, pk=commentq_id) - # request should be ajax and method should be POST. - if is_ajax(request) and request.method == "POST": - # get the form data - edit_Q_Form = CommentFlagForm(data=request.POST) - # save the data and after fetch the object in instance - if edit_Q_Form.is_valid(): - instance = edit_Q_Form.save(commit=False) - instance.comment_flagged_by = request.user - instance.comment_of = commentID - instance.how_many_votes_on_notNeeded_unkind += 1 - instance.save() - # serialize in new friend object in json - ser_instance = serializers.serialize('json', [ - instance, - ]) - # send to client side. - return JsonResponse({"instance": ser_instance}, status=200) - else: - # some form errors occured. - return JsonResponse({"error": edit_Q_Form.errors}, status=400) - - # some error occured - return JsonResponse({"error": ""}, status=400) - - -def removeProtection(request, question_id): - que = get_object_or_404(Question, pk=question_id) - procQue = ProtectQuestion.objects.filter(protecting_question=que) - if que.is_protected: - que.is_protected = False - for s in procQue: - s.stillProtected = False - s.protectionRemovedBy = request.user - s.date_Removed = timezone.now() - s.save() - que.save() - return JsonResponse({'action': 'lackOfPrivelege'}) - - else: - messages.error(request, "Something went wrong") - return redirect('profile:home') - - -@login_required -def new_question(request): - AllTags = Tag.objects.all().values_list('name', flat=True) - last_posted_q = Question.objects.filter(post_owner=request.user).last() - is_olderThan_nintyMinutes = timezone.now() - timedelta(minutes=90) - - if request.method == 'POST': - form = QuestionForm(request.POST, request.FILES) - if form.is_valid(): - if last_posted_q is None: - formTags = form.cleaned_data['tags'] - gettingBody = form.cleaned_data['body'] - gettingTitle = form.cleaned_data['title'] - new_post = form.save(commit=False) - new_post.post_owner = request.user - - for typedTags in formTags: - - check_if_everything_is_fine = all( - typedTags in AllTags for typedTags in formTags) - - if request.user.profile.create_tags: - if len(gettingBody) >= 0 and len(gettingBody) <= 29: - messages.error( - request, "Body Text should atleast 30 words. You entered " + str(len(gettingBody))) - elif len(gettingTitle) >= 0 and len(gettingTitle) <= 14: - messages.error( - request, "Title must be at least 15 characters.") - else: - print(form.errors) - form.save() - form.save_m2m() - if len(gettingBody) <= 200: - create_Low_Quality_Post_Instance, cre = LowQualityPostsCheck.objects.get_or_create( - suggested_through="Automatic", low_is=new_post, why_low_quality="Question_Less_Than_200", is_completed=False) - createReview_item = ReviewLowQualityPosts.objects.get_or_create( - review_of=create_Low_Quality_Post_Instance, is_question=new_post, is_reviewed=False) - return redirect('qa:questions') - elif check_if_everything_is_fine: - if len(gettingBody) >= 0 and len(gettingBody) <= 29: - messages.error( - request, "Body Text should atleast 30 words. You entered " + str(len(gettingBody))) - elif len(gettingTitle) >= 0 and len(gettingTitle) <= 14: - messages.error( - request, "Title must be at least 15 characters.") - else: - form.save() - print(form.errors) - form.save_m2m() - if len(gettingBody) <= 200: - create_Low_Quality_Post_Instance, cre = LowQualityPostsCheck.objects.get_or_create( - suggested_through="Automatic", low_is=new_post, why_low_quality="Question_Less_Than_200", is_completed=False) - createReview_item = ReviewLowQualityPosts.objects.get_or_create( - review_of=create_Low_Quality_Post_Instance, is_question=new_post, is_reviewed=False) - return redirect('qa:questions') - - else: - print("Problem 2") - messages.error( - request, f'You need atleast 1500 Reputation to create a New Tag - {formTags}') - - else: - if not request.user.profile.remove_new_user_restrictions: - if last_posted_q.date >= is_olderThan_nintyMinutes: - messages.error( - request, 'Question Asking Limit Exceed, You will be able to ask in 90 minutes') - else: - formTags = form.cleaned_data['tags'] - gettingBody = form.cleaned_data['body'] - gettingTitle = form.cleaned_data['title'] - new_post = form.save(commit=False) - new_post.post_owner = request.user - - for typedTags in formTags: - - check_if_everything_is_fine = all( - typedTags in AllTags for typedTags in formTags) - - if request.user.profile.create_tags: - if len(gettingBody) >= 0 and len( - gettingBody) <= 29: - messages.error( - request, "Body Text should atleast 30 words. You entered " + str(len(gettingBody))) - elif len(gettingTitle) >= 0 and len(gettingTitle) <= 14: - messages.error( - request, "Title must be at least 15 characters.") - else: - form.save() - print(form.errors) - form.save_m2m() - if len(gettingBody) <= 200: - create_Low_Quality_Post_Instance, cre = LowQualityPostsCheck.objects.get_or_create( - suggested_through="Automatic", low_is=new_post, why_low_quality="Question_Less_Than_200", is_completed=False) - createReview_item = ReviewLowQualityPosts.objects.get_or_create( - review_of=create_Low_Quality_Post_Instance, is_question=new_post, is_reviewed=False) - return redirect('qa:questions') - - elif check_if_everything_is_fine: - if len(gettingBody) >= 0 and len( - gettingBody) <= 29: - messages.error( - request, "Body Text should atleast 30 words. You entered " + str(len(gettingBody))) - elif len(gettingTitle) >= 0 and len(gettingTitle) <= 14: - messages.error( - request, "Title must be at least 15 characters.") - else: - form.save() - print(form.errors) - form.save_m2m() - if len(gettingBody) <= 200: - create_Low_Quality_Post_Instance, cre = LowQualityPostsCheck.objects.get_or_create( - suggested_through="Automatic", low_is=new_post, why_low_quality="Question_Less_Than_200", is_completed=False) - createReview_item = ReviewLowQualityPosts.objects.get_or_create( - review_of=create_Low_Quality_Post_Instance, is_question=new_post, is_reviewed=False) - return redirect('qa:questions') - else: - messages.error( - request, f'You need atleast 1500 Reputation to create a New Tag - {typedTags}') - else: - formTags = form.cleaned_data['tags'] - gettingBody = form.cleaned_data['body'] - gettingTitle = form.cleaned_data['title'] - - new_post = form.save(commit=False) - new_post.post_owner = request.user - for typedTags in formTags: - - check_if_everything_is_fine = all( - typedTags in AllTags for typedTags in formTags) - - if request.user.profile.create_tags: - print(len(gettingTitle)) - if len(gettingBody) >= 0 and len( - gettingBody) <= 29: - messages.error( - request, "Body Text should atleast 30 words. You entered " + str(len(gettingBody))) - elif len(gettingTitle) >= 0 and len(gettingTitle) <= 14: - messages.error( - request, "Title must be at least 15 characters.") - else: - form.save() - print(form.errors) - form.save_m2m() - if len(gettingBody) <= 200: - create_Low_Quality_Post_Instance, cre = LowQualityPostsCheck.objects.get_or_create( - suggested_through="Automatic", low_is=new_post, why_low_quality="Question_Less_Than_200", is_completed=False) - createReview_item = ReviewLowQualityPosts.objects.get_or_create( - review_of=create_Low_Quality_Post_Instance, is_question=new_post, is_reviewed=False) - return redirect('qa:questions') - elif check_if_everything_is_fine: - print(len(gettingBody)) - if len(gettingBody) >= 0 and len( - gettingBody) <= 29: - messages.error( - request, "Body Text should atleast 30 words. You entered " + str(len(gettingBody))) - elif len(gettingTitle) >= 0 and len(gettingTitle) <= 14: - messages.error( - request, "Title must be at least 15 characters.") - else: - # counting >= 0 and counting <= 29 - print(form.errors) - form.save() - form.save_m2m() - if len(gettingBody) <= 200: - create_Low_Quality_Post_Instance, cre = LowQualityPostsCheck.objects.get_or_create( - suggested_through="Automatic", low_is=new_post, why_low_quality="Question_Less_Than_200", is_completed=False) - createReview_item = ReviewLowQualityPosts.objects.get_or_create( - review_of=create_Low_Quality_Post_Instance, is_question=new_post, is_reviewed=False) - return redirect('qa:questions') - else: - messages.error( - request, f'You need atleast 1500 Reputation to create a New Tag - {typedTags}') - else: - form = QuestionForm() - - context = {'form': form} - return render(request, 'qa/new_question.html', context) - - -def validateQuestionTitle(request): - post_title = request.GET.get('title', None) - data = { - 'titleAlreadyExisted': Question.objects.filter( - title__iexact=post_title).exists()} - if data['titleAlreadyExisted']: - data['error_message'] = f'Already Existed' - print("Taken") - else: - data['success_message'] = f'Good to Go' - print("Can Use") - return JsonResponse(data) - - -def reviewQuestion(request): - AllTags = Tag.objects.all().values_list('name', flat=True) - post_title = request.GET.get('title', None) - post_body = request.GET.get('body', None) - formTags = request.GET.get('tags', None) - taken = Question.objects.filter(title__iexact=post_title).exists() - formTags = formTags.split(",") - print(formTags) - for typedTags in formTags: - check_if_everything_is_fine = all( - typedTags in AllTags for typedTags in formTags) - define = '' - showNewTagError = False - if request.user.profile.create_tags: - print("No Restrictions") - else: - if not check_if_everything_is_fine: - showNewTagError = True - else: - showNewTagError = False - define = True - # print(check_if_everything_is_fine) - - counting = len(post_body) - if counting >= 0 and counting <= 29: - postBody = True - print("Body Text should atleast 30 words. You entered " + str(counting)) - # USED "str(counting)" BECAUSE WITHOUT ADDING str, It would show 'TypeError' :-: - # print("Body Text should atleast 30 words. You entered " + int(counting)) - # TypeError: can only concatenate str (not "int") to str - else: - postBody = False - print("Body Text is FulFilled") - - # using list comprehension to - # perform removal - new = [i for i in formTags if i] - - # spliting = formTags.split(",") - # print(len(spliting)) - # lengthing = len(spliting) - # print(lengthing) - # for words in spliting: - # print(count(words)) - - if len(new) < 1: - print("Fine") - showError = True - else: - print("Raise the Error") - showError = False - - if len(post_title) <= 5: - print("Add atleast 2 more Words") - showLessTitleError = True - else: - showLessTitleError = False - # print(showLessTitleError) - # if taken == True: - # is_it_true = True - # else: - # is_it_true = False - - if taken == False and showError == False and showNewTagError == False and showLessTitleError == False and postBody == False: - allClear = True - print("Everything Clear") - else: - allClear = False - print("Something is Missing") - - data = { - 'taken': taken, - # 'postBody':postBody, - 'showError': showError, - 'allClear': allClear, - 'showNewTagError': showNewTagError, - 'define': define, - } - - if taken: - data['error_message_of_title'] = f'Already Existed' - elif postBody: - data['error_message_of_body_text'] = f'Words are less than 15' - elif data['showError']: - data['error_message_of_tag'] = f'Add atleast One Tag' - elif data['showNewTagError']: - data['error_message_of_new_tag'] = f'Cannot create a New Tag' - return JsonResponse(data) - - -def bookmarkIt(request, question_id): - post = get_object_or_404(Question, pk=question_id) - question_URL = request.build_absolute_uri(post.get_absolute_url()) - - bookmarks = Profile.objects.filter(bookmark_questions=post).count() - print(bookmarks) - if request.GET.get('submit') == 'bookIt': - if request.user.profile in post.bookmark_questions.all(): - # UNCOMMENT FOR SET TO FALSE IF BOOKMARKS IS LESS THAN _____ - # if bookmarks >= 1: - # post.post_owner.profile.favorite_question = False - # post.post_owner.profile.save() - post.bookmark_questions.remove(request.user.profile) - return JsonResponse({'action': 'removeBookmark'}) - else: - post.bookmark_questions.add(request.user.profile) -# BADGE - FVOURITE QUESTION - BOOKMARKED BY 25 USERS - if bookmarks >= 25: - # print(bookmarks) - TagBadge.objects.get_or_create( - awarded_to_user=post.post_owner, - badge_type="SILVER", - tag_name="Favorite-Question", - bade_position="class") - PrivRepNotification.objects.get_or_create( - for_user=post.post_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Favorite-Question", - description="Question bookmarked by 25 users" - ) - - # post.post_owner.profile.favorite_question_S = True -# BADGE - STELLAR QUESTION - BOOKMARKED BY 100 USERS - if bookmarks >= 100: - - TagBadge.objects.get_or_create( - awarded_to_user=post.post_owner, - badge_type="SILVER", - tag_name="Stellar-Question", - bade_position="class") - PrivRepNotification.objects.get_or_create( - for_user=post.post_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Favorite-Question", - description="Question bookmarked by 25 users" - ) - # if bookmarks >= 2: - # post.post_owner.profile.stellar_question_F = True - # post.post_owner.profile.save() - # notification = Notification(type_of_noti='comment_answer', user=request.user,) - # notification.save() - return JsonResponse({'action': 'bookmark_only'}) - else: - messages.error(request, 'Something went wrong') - return redirect('profile:home') - - -def awardBounty(request, question_id, answer_id): - que = get_object_or_404(Question, pk=question_id) - post = get_object_or_404(Answer, pk=answer_id) - prev_awarded_bounty = Answer.objects.filter( - questionans=question_id, is_bountied_awarded=True) - question_URL = request.build_absolute_uri(que.get_absolute_url()) - - if request.GET.get('submit') == 'award': - if post.is_bountied_awarded: - return JsonResponse({'action': 'bountyUnacceptError'}) - - else: - if que.is_bountied: - if prev_awarded_bounty: - # IF PREVIOUS ANSWER IS ACCEPTED THAN- IT WILL PREVENT USER- - # FROM ACCEPTING ANOTHER ANSWER AND SHOW bountyError ERROR. - return JsonResponse({'action': 'bountyError'}) - else: - for bv in que.bounty_set.all(): - if bv.bounty_value == '50': - Reputation.objects.create( - answer_O=post, - answer_rep_C=50, - awarded_to=post.answer_owner, - reputation_on_what='Bounty_Awarded') - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BOUNTY_AWARDED_REP_P", - url=question_URL, - answer_priv_noti=post, - ) - elif bv.bounty_value == '100': - Reputation.objects.create( - answer_O=post, - answer_rep_C=100, - awarded_to=post.answer_owner, - reputation_on_what='Bounty_Awarded') - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BOUNTY_AWARDED_REP_P", - url=question_URL, - answer_priv_noti=post, - ) - elif bv.bounty_value == '150': - Reputation.objects.create( - answer_O=post, - answer_rep_C=150, - awarded_to=post.answer_owner, - reputation_on_what='Bounty_Awarded') - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BOUNTY_AWARDED_REP_P", - url=question_URL, - answer_priv_noti=post, - ) - elif bv.bounty_value == '200': - Reputation.objects.create( - answer_O=post, - answer_rep_C=200, - awarded_to=post.answer_owner, - reputation_on_what='Bounty_Awarded') - PrivRepNotification.objects.create( - for_user=post.answer_owner, - type_of_PrivNotify="BOUNTY_AWARDED_REP_P", - url=question_URL, - answer_priv_noti=post, - ) - elif bv.bounty_value == '250': - Reputation.objects.create( - answer_O=post, - answer_rep_C=250, - awarded_to=post.answer_owner, - reputation_on_what='Bounty_Awarded') - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BOUNTY_AWARDED_REP_P", - url=question_URL, - answer_priv_noti=post, - ) - elif bv.bounty_value == '300': - Reputation.objects.create( - answer_O=post, - answer_rep_C=300, - awarded_to=post.answer_owner, - reputation_on_what='Bounty_Awarded') - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BOUNTY_AWARDED_REP_P", - url=question_URL, - answer_priv_noti=post, - ) - elif bv.bounty_value == '350': - Reputation.objects.create( - answer_O=post, - answer_rep_C=350, - awarded_to=post.answer_owner, - reputation_on_what='Bounty_Awarded') - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BOUNTY_AWARDED_REP_P", - url=question_URL, - answer_priv_noti=post, - ) - elif bv.bounty_value == '400': - Reputation.objects.create( - answer_O=post, - answer_rep_C=400, - awarded_to=post.answer_owner, - reputation_on_what='Bounty_Awarded') - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BOUNTY_AWARDED_REP_P", - url=question_URL, - answer_priv_noti=post, - ) - elif bv.bounty_value == '450': - Reputation.objects.create( - answer_O=post, - answer_rep_C=450, - awarded_to=post.answer_owner, - reputation_on_what='Bounty_Awarded') - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BOUNTY_AWARDED_REP_P", - url=question_URL, - answer_priv_noti=post, - ) - elif bv.bounty_value == '500': - Reputation.objects.create( - answer_O=post, - answer_rep_C=500, - awarded_to=post.answer_owner, - reputation_on_what='Bounty_Awarded') - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BOUNTY_AWARDED_REP_P", - url=question_URL, - answer_priv_noti=post, - ) - post.is_bountied_awarded = True - bv.is_awarded = True -# ! Altruist Badge - First bounty i award on another person's Q - - if que.post_owner != request.user: - awardTag = TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Altruist", - bade_position="BADGE", - questionIf_TagOf_Q=que) - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Altruist", - description="First bounty you manually award on another person's question" - ) - # Bronze_TagBadge.objects.get_or_create(awarded_to=request.user, badge_type="Bronze", tag_name="Altruist") - # request.user.profile.altruist_B = True - # request.user.profile.save() - else: - print("Error is Here") - # ! Benefactor Badge - First bounty i award on my Q - awardTag = TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Benefactor", - bade_position="BADGE", - questionIf_TagOf_Q=que) - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Benefactor", - description="First bounty you manually award on your own question" - ) - # request.user.profile.benefactor_B = True - # request.user.profile.save() - bv.save() - que.limit_exced = False - que.save() - post.save() - return JsonResponse({'action': 'awardBountyToIt'}) - - else: - # THIS ERROR IS NOT DEFINED IN HTML - return JsonResponse({'action': 'questionWithoutBounty'}) - else: - messages.error(request, 'Something went wrong') - return redirect('qa:questions') - - -def mark_accepted(request, answer_id, question_id): - que = get_object_or_404(Question, id=question_id) - post = get_object_or_404(Answer, pk=answer_id) - question_URL = request.build_absolute_uri(que.get_absolute_url()) - - prev_accepted_ans = Answer.objects.filter(questionans=que, accepted=True) - - if request.GET.get('submit') == 'mark': - if post.accepted: - post.accepted = False - post.save() - if Reputation.objects.filter( - answer_O=post, - question_rep_C=15, - awarded_to=post.answer_owner, - reputation_on_what='ANSWER_ACCEPT').exists(): - Reputation.objects.filter( - answer_O=post, - question_rep_C=15, - awarded_to=post.answer_owner, - reputation_on_what='ANSWER_ACCEPT').delete() - if PrivRepNotification.objects.filter( - for_user=post.answer_owner, - is_read=False, - url=question_URL, - type_of_PrivNotify="ANSWER_ACCEPT_REP_P", - missingReputation=15).exists(): - PrivRepNotification.objects.filter( - for_user=post.answer_owner, - is_read=True, - answer_priv_noti=post, - url=question_URL, - type_of_PrivNotify="ANSWER_ACCEPT_REP_P", - missingReputation=15).delete() - que.is_answer_accepted = False - que.save() - return JsonResponse({'action': 'unaccept'}) - else: - # if post.answer_owner == request.user and post.date < timezone.now() - timedelta(days=2): - # prev_accepted_ans.update(accepted=False) - # post.accepted = True - # post.save() - # awardReputation = Reputation.objects.get_or_create(answer_O=post, question_rep_C=15, awarded_to=post.answer_owner,reputation_on_what='ANSWER_ACCEPT') - # # ----------------------------------------------------------- - # createARep_Notification = PrivRepNotification.objects.get_or_create(for_user=post.answer_owner, url=question_URL, type_of_PrivNotify="ANSWER_ACCEPT_REP_P", missingReputation=15) - # # ----------------------------------------------------------- - # TagBadge.objects.get_or_create(awarded_to_user=post.answer_owner,badge_type="BADGE", tag_name="Scholar",bade_position="BADGE") - # # print("Scholar Tag Awarded") - # return JsonResponse({'action': 'accept'}) - # else: - # return JsonResponse({'action': 'acceptIn_10Days'}) - if post.date <= timezone.now() - timedelta(minutes=5): - que.is_answer_accepted = True - que.save() - # if post.answer_owner != request.user: - prev_accepted_ans.update(accepted=False) - post.accepted = True - post.save() - if request.user != post.answer_owner: - awardReputation = Reputation.objects.get_or_create( - answer_O=post, - question_rep_C=15, - awarded_to=post.answer_owner, - reputation_on_what='ANSWER_ACCEPT') - # ----------------------------------------------------------- - createARep_Notification = PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - question_priv_noti=post.questionans, - url=question_URL, - type_of_PrivNotify="ANSWER_ACCEPT_REP_P", - missingReputation=15) - # ----------------------------------------------------------- - TagBadge.objects.get_or_create( - awarded_to_user=post.answer_owner, - badge_type="BADGE", - tag_name="Scholar", - bade_position="BADGE", - questionIf_TagOf_Q=post.questionans) - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Scholar", - description="Ask a question and accept an answer" - ) - # print("Scholar Tag Awarded") - return JsonResponse({'action': 'accept'}) - - elif que.post_owner == request.user and post.date <= timezone.now() - timedelta(days=2): - que.is_answer_accepted = True - que.save() - # if post.answer_owner != request.user: - prev_accepted_ans.update(accepted=False) - post.accepted = True - post.save() - if request.user != post.answer_owner: - Reputation.objects.get_or_create( - answer_O=post, - question_rep_C=15, - awarded_to=post.answer_owner, - reputation_on_what='ANSWER_ACCEPT') - # ----------------------------------------------------------- - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - url=question_URL, - question_priv_noti=post, - type_of_PrivNotify="ANSWER_ACCEPT_REP_P", - missingReputation=15) - # ----------------------------------------------------------- - TagBadge.objects.get_or_create( - awarded_to_user=post.answer_owner, - badge_type="BADGE", - tag_name="Scholar", - bade_position="BADGE", - questionIf_TagOf_Q=post.questionans) - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Scholar", - description="Ask a question and accept an answer" - ) - # print("Scholar Tag Awarded") - return JsonResponse({'action': 'accept'}) - - else: - return JsonResponse({'action': 'acceptIn_10_Minutes'}) - else: - messages.error(request, 'Something went wrong') - return redirect('profile:posts') - - -def bookmarkQuestion(request, question_id): - post = get_object_or_404(Question, pk=question_id) - - if request.GET.get('submit') == 'bookmarking': - if BookmarkQuestion.objects.filter( - bookmarked_by=request.user, - bookmarked_question=post).exists(): - BookmarkQuestion.objects.filter( - bookmarked_by=request.user, - bookmarked_question=post).delete() - return JsonResponse({'action': 'bookmarked'}) - - else: - BookmarkQuestion.objects.get_or_create( - bookmarked_by=request.user, bookmarked_question=post) - question_URL = request.build_absolute_uri(post.get_absolute_url()) - - if post.bookmarkquestion_set.all().count() >= 25: - createTag = TagBadge.objects.get_or_create( - awarded_to_user=post.post_owner, - badge_type="SILVER", - tag_name="Favorite Question", - bade_position="BADGE", - questionIf_TagOf_Q=post) - PrivRepNotification.objects.get_or_create( - for_user=post.post_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Favorite-Question", - description="Question bookmarked by 25 users" - ) - - if post.bookmarkquestion_set.all().count() >= 100: - createTag = TagBadge.objects.get_or_create( - awarded_to_user=post.post_owner, - badge_type="GOLD", - tag_name="Stellar Question", - bade_position="BADGE", - questionIf_TagOf_Q=post) - PrivRepNotification.objects.get_or_create( - for_user=post.post_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Favorite-Question", - description="Question bookmarked by 25 users" - ) - - return JsonResponse({'action': 'second'}) - - messages.error(request, "Something went wrong") - return redirect('profile:home') - - -def tourPage(request): - - return render(request, 'profile/tourPage.html') - - -def award_InformedBadge_OnScroll(request): - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Informed", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Informed", - description="Read the entire tour page" - ) - - return JsonResponse({'action': 'awarded'}) - - -# @awardReputation -def question_upvote_downvote(request, question_id): - post = get_object_or_404(Question, pk=question_id) - likepost = post.qupvote_set.filter(upvote_by_q=request.user).first() - downVotedPost = post.qdownvote_set.filter( - downvote_by_q=request.user).first() - question_URL = request.build_absolute_uri(post.get_absolute_url()) - - upvote_time_limit = timezone.now() - timedelta(minutes=5) - q_reputation = post.reputation_set.all() - - edited_time = post.q_edited_time - - # minused = edited_time - voted_time - - if post.post_owner == request.user and post.qupvote_set.all().count() >= 1: - question_URL = request.build_absolute_uri(post.get_absolute_url()) - # createTag = Tag.objects.get_or_create(name="Student") - TagBadge.objects.get_or_create( - awarded_to_user=post.post_owner, - badge_type="BRONZE", - tag_name="Student", - bade_position="BADGE", - questionIf_TagOf_Q=post) - PrivRepNotification.objects.get_or_create( - for_user=post.post_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Student", - description="First question with score of 1 or more" - ) - - last_24_hours = timezone.now() - timedelta(hours=24) - getQ_Votes_in_24_Hours = QUpvote.objects.filter( - date__gt=last_24_hours).count() - getQ_DownVotes_in_24_Hours = QDownvote.objects.filter( - downvote_by_q=request.user, date__gt=last_24_hours).count() - getA_Votes_in_24_Hours = Answer.objects.filter( - a_vote_ups=request.user, date__gt=last_24_hours).count() - getA_DownVotes_in_24_Hours = Answer.objects.filter( - a_vote_downs=request.user, date__gt=last_24_hours).count() - totalIs = getQ_Votes_in_24_Hours + getQ_DownVotes_in_24_Hours + \ - getA_Votes_in_24_Hours + getA_DownVotes_in_24_Hours - - if totalIs >= 30: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Suffrage", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - privilegeURL=question_URL, - type_of_PrivNotify="BADGE_EARNED") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Suffrage", - description="Use 30 votes in a day" - ) - - if totalIs >= 40: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Vox Populi", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Vox Populi", - description="Use the maximum 40 votes in a day" - ) - - user_url = request.build_absolute_uri(post.get_absolute_url()) - sent = False - # Upvote - if request.GET.get('submit') == 'like': - if QDownvote.objects.filter( - downvote_by_q=request.user, - downvote_question_of=post).exists(): - - if downVotedPost.date > upvote_time_limit or edited_time > downVotedPost.date: - QDownvote.objects.filter( - downvote_by_q=request.user, - downvote_question_of=post).delete() - m = QUpvote(upvote_by_q=request.user, upvote_question_of=post) - m.save() - if Reputation.objects.filter( - awarded_to=post.post_owner, - question_O=post, - question_rep_C=-2, - reputation_on_what='QUESTION_DOWNVOTE').exists(): - Reputation.objects.filter( - awarded_to=post.post_owner, - question_O=post, - question_rep_C=-2, - reputation_on_what='QUESTION_DOWNVOTE').delete() - Reputation.objects.get_or_create( - awarded_to=post.post_owner, - question_O=post, - question_rep_C=10, - reputation_on_what='MY_QUESTION_UPVOTE_REP_P') - PrivRepNotification.objects.get_or_create( - for_user=post.post_owner, - type_of_PrivNotify="MY_QUESTION_UPVOTE_REP_P", - url=question_URL, - for_if="", - description="", - question_priv_noti=post, - ) - - rewardPrivielege(request, post.post_owner) - return JsonResponse({'action': 'undislike_and_like'}) - else: - return JsonResponse({'action': 'voteError'}) - - elif QUpvote.objects.filter(upvote_by_q=request.user, upvote_question_of=post).exists(): - if likepost.date > upvote_time_limit or edited_time > likepost.date: - QUpvote.objects.filter( - upvote_by_q=request.user, - upvote_question_of=post).delete() - # deleteReputation = Reputation.objects.filter(awarded_to=post.post_owner,question_O=post, question_rep_C=10, reputation_on_what='QUESTION').first() - # deleteReputation.delete() - if post.qdownvote_set.all().count() >= 5: - post.reversal_monitor = True - post.save() - - if PrivRepNotification.objects.filter( - for_user=post.post_owner, - type_of_PrivNotify="MY_QUESTION_UPVOTE_REP_P", - url=question_URL, - for_if="", - description="", - question_priv_noti=post, - ): - PrivRepNotification.objects.filter( - for_user=post.post_owner, - type_of_PrivNotify="MY_QUESTION_UPVOTE_REP_P", - url=question_URL, - for_if="", - description="", - question_priv_noti=post, - ).delete() - - if Reputation.objects.filter( - awarded_to=post.post_owner, - question_O=post, - question_rep_C=10, - reputation_on_what='MY_QUESTION_UPVOTE_REP_P').exists(): - Reputation.objects.filter( - awarded_to=post.post_owner, - question_O=post, - question_rep_C=10, - reputation_on_what='MY_QUESTION_UPVOTE_REP_P').delete() - rewardPrivielege(request, post.post_owner) - return JsonResponse({'action': 'unlike'}) - else: - return JsonResponse({'action': 'voteError'}) - - else: - if request.user == post.post_owner: - return JsonResponse({'action': 'cannotLikeOwnPost'}) - else: - if request.user.profile.voteUpPriv: - post.q_reputation += 10 - post.save() - created = QUpvote( - upvote_by_q=request.user, - upvote_question_of=post) - # notify = Notification(noti_receiver=post.post_owner,noti_sender=request.user,url=user_url,type_of_noti="vote_up_question") - # notify.save() - created.save() - Reputation.objects.get_or_create( - awarded_to=post.post_owner, - question_O=post, - question_rep_C=10, - reputation_on_what='MY_QUESTION_UPVOTE_REP_P') - PrivRepNotification.objects.get_or_create( - for_user=post.post_owner, - type_of_PrivNotify="MY_QUESTION_UPVOTE_REP_P", - url=question_URL, - for_if="", - description="", - question_priv_noti=post, - ) - getReputationEarnedInLast_24Hours = Reputation.objects.filter( - awarded_to=post.post_owner).aggregate( - Sum('answer_rep_C'), Sum('question_rep_C')) - # if getReputationEarnedInLast_24Hours - d1 = getReputationEarnedInLast_24Hours['question_rep_C__sum'] - total_question_rep = getReputationEarnedInLast_24Hours[ - 'question_rep_C__sum'] if d1 else 0 - s2 = getReputationEarnedInLast_24Hours['answer_rep_C__sum'] - total_answer_rep = getReputationEarnedInLast_24Hours[ - 'answer_rep_C__sum'] if s2 else 0 - - finalReputation = total_question_rep + total_answer_rep - - # if finalReputation >= 10: - # print("Awarded the Create Wiki Posts") - # post.post_owner.profile.create_wiki_posts = True - # post.post_owner.profile.save() - - if created == QUpvote.objects.filter( - upvote_by_q=request.user).first(): - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Supporter", - bade_position="BADGE", - questionIf_TagOf_Q=post) - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Supporter", - description="First up vote" - ) - - # UNCOMMENT FOR SEND MAIL TO USER - START - # if request.user.profile.send_email_notifications == True: - # subject = f" is reporting a PROFILE" - - # message = f" \n Why Reporting PROFILE :- {user_url} \n"\ - # f" \n Reporting PROFILE Url :- \n"\ - # f" \n Reported by :- \n"\ - - # send_mail(subject, message, 'yawanspace@gmail.com', - # [request.user.profile.email]) - # sent = True - # UNCOMMENT FOR SEND MAIL TO USER - END - - if post.qupvote_set.all().count() >= 10: - TagBadge.objects.get_or_create( - awarded_to_user=post.post_owner, - badge_type="BRONZE", - tag_name="Nice Question", - bade_position="BADGE", - questionIf_TagOf_Q=post) - PrivRepNotification.objects.get_or_create( - for_user=post.post_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Nice Question", - description="Question score of 10 or more" - ) - - if post.qupvote_set.all().count() >= 25: - TagBadge.objects.get_or_create( - awarded_to_user=post.post_owner, - badge_type="SILVER", - tag_name="Good Question", - bade_position="BADGE", - questionIf_TagOf_Q=post) - PrivRepNotification.objects.get_or_create( - for_user=post.post_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Good Question", - description="Question score of 25 or more" - ) - - if post.qupvote_set.all().count() >= 100: - TagBadge.objects.get_or_create( - awarded_to_user=post.post_owner, - badge_type="GOLD", - tag_name="Great Question", - bade_position="BADGE", - questionIf_TagOf_Q=post) - PrivRepNotification.objects.get_or_create( - for_user=post.post_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Great Question", - description="Question score of 100 or more" - ) - rewardPrivielege(request, post.post_owner) - - return JsonResponse({'action': 'like_only'}) - else: - return JsonResponse({'action': 'lackOfPrivelege'}) - # DownVote - elif request.GET.get('submit') == 'downVote': - if QUpvote.objects.filter( - upvote_by_q=request.user, - upvote_question_of=post).exists(): - if likepost.date > upvote_time_limit or edited_time > likepost.date: - m = QDownvote( - downvote_by_q=request.user, - downvote_question_of=post) - m.save() - QUpvote.objects.filter( - upvote_by_q=request.user, - upvote_question_of=post).delete() - # if Reputation.objects.filter() - getAlltheReputation = Reputation.objects.filter( - awarded_to=request.user).aggregate( - Sum('answer_rep_C'), Sum('question_rep_C')) - d = getAlltheReputation['question_rep_C__sum'] - total_question_rep = getAlltheReputation['question_rep_C__sum'] if d else 0 - s = getAlltheReputation['answer_rep_C__sum'] - total_answer_rep = getAlltheReputation['answer_rep_C__sum'] if s else 0 - totalReputation = total_question_rep + total_answer_rep - if post.qdownvote_set.all().count() >= 5: - post.reversal_monitor = True - post.save() - if totalReputation > 2: - if Reputation.objects.filter( - awarded_to=post.post_owner, - question_O=post, - question_rep_C=10, - reputation_on_what='MY_QUESTION_UPVOTE_REP_P').exists(): - Reputation.objects.filter( - awarded_to=post.post_owner, - question_O=post, - question_rep_C=10, - reputation_on_what='MY_QUESTION_UPVOTE_REP_P').delete() - Reputation.objects.get_or_create( - awarded_to=post.post_owner, - question_O=post, - question_rep_C=-2, - reputation_on_what='QUESTION_DOWNVOTE') - else: - if Reputation.objects.filter( - awarded_to=post.post_owner, - question_O=post, - question_rep_C=10, - reputation_on_what='MY_QUESTION_UPVOTE_REP_P').exists(): - Reputation.objects.filter( - awarded_to=post.post_owner, - question_O=post, - question_rep_C=10, - reputation_on_what='MY_QUESTION_UPVOTE_REP_P').delete() - rewardPrivielege(request, post.post_owner) - return JsonResponse({'action': 'unlike_and_dislike'}) - else: - return JsonResponse({'action': 'voteError'}) - # if request.user in post.q_vote_ups.all(): - - # if voted_time > upvote_time_limit or edited_time > voted_time: - # post.q_vote_ups.remove(request.user) - # post.q_vote_downs.add(request.user) - # return JsonResponse({'action': 'unlike_and_dislike'}) - # else: - # return JsonResponse({'action': 'voteError'}) - - elif QDownvote.objects.filter(downvote_by_q=request.user, downvote_question_of=post).exists(): - if downVotedPost.date > upvote_time_limit or edited_time > downVotedPost.date: - QDownvote.objects.filter( - downvote_by_q=request.user, - downvote_question_of=post).delete() - if Reputation.objects.filter( - awarded_to=post.post_owner, - question_O=post, - question_rep_C=-2, - reputation_on_what='QUESTION_DOWNVOTE').exists(): - Reputation.objects.filter( - awarded_to=post.post_owner, - question_O=post, - question_rep_C=-2, - reputation_on_what='QUESTION_DOWNVOTE').delete() - rewardPrivielege(request, post.post_owner) - return JsonResponse({'action': 'undislike'}) - else: - return JsonResponse({'action': 'voteError'}) - - else: - if request.user == post.post_owner: - return JsonResponse({'action': 'cannotLikeOwnPost'}) - else: - - if request.user.profile.voteDownPriv: - # QUESTION REPUTATION - created = QDownvote( - downvote_by_q=request.user, - downvote_question_of=post) - created.save() - - if created == QDownvote.objects.filter( - downvote_by_q=request.user).first(): - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Critic", - bade_position="BADGE", - questionIf_TagOf_Q=post) - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Critic", - description="First down vote" - ) - - getAlltheReputation = Reputation.objects.filter( - awarded_to=request.user).aggregate( - Sum('answer_rep_C'), Sum('question_rep_C')) - d = getAlltheReputation['question_rep_C__sum'] - total_question_rep = getAlltheReputation['question_rep_C__sum'] if d else 0 - s = getAlltheReputation['answer_rep_C__sum'] - total_answer_rep = getAlltheReputation['answer_rep_C__sum'] if s else 0 - totalReputation = total_question_rep + total_answer_rep - if totalReputation > 2: - decRep = Reputation.objects.get_or_create( - awarded_to=post.post_owner, - question_O=post, - question_rep_C=-2, - reputation_on_what='QUESTION_DOWNVOTE') - rewardPrivielege(request, post.post_owner) - return JsonResponse({'action': 'dislike_only'}) - else: - return JsonResponse({'action': 'lackOfPrivelege'}) - - else: - messages.error(request, 'Something went wrong') - return redirect('profile:posts') - - -""" -Removed the decorator because have to design a new decorator with -answer_id, the previous one was for question_id -""" -# @awardReputation - - -def answer_upvote_downvote(request, answer_id): - # que = get_object_or_404(Question, pk=question_id) - post = get_object_or_404(Answer, pk=answer_id) - question_URL = request.build_absolute_uri( - post.questionans.get_absolute_url()) - - getQuestion = Question.objects.get(answer=post) - - getVotedOnQ = Question.objects.filter( - qupvote__upvote_by_q=request.user).count() - getVotedOnQ_Down = Question.objects.filter( - qdownvote__downvote_by_q=request.user).count() - getVotedOn = Answer.objects.filter(a_vote_ups=request.user).count() - getVotedOn_Down = Answer.objects.filter(a_vote_downs=request.user).count() - if getVotedOn >= 300 or getVotedOn_Down >= 300 or getVotedOnQ >= 300 or getVotedOnQ_Down >= 300: - TagBadge.objects.get_or_create( - awarded_to_user=post.answer_owner, - badge_type="SILVER", - tag_name="Civic Duty", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Civic Duty", - description="Vote 300 or more times" - ) - getEditingTime = request.user.profile.editPostTimeOfUser - getRecentAnswer = Answer.objects.filter(answer_owner=request.user).last() - - if getRecentAnswer and getEditingTime: - if getEditingTime >= timezone.now() - \ - timedelta(minutes=5) and getRecentAnswer.date >= timezone.now() - timedelta(minutes=5): - request.user.profile.Refiner_Illuminator_TagPostCounter += 1 - request.user.profile.save() - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Explainer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Explainer", - description="Edit and answer 1 question (both actions within 12 hours, answer score > 0)" - ) - if request.user.profile.Refiner_Illuminator_TagPostCounter >= 50: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Refiner", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Refiner", - description="Edit and answer 50 questions (both actions within 12 hours, answer score > 0)" - ) - if request.user.profile.Refiner_Illuminator_TagPostCounter >= 500: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Illuminator", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Illuminator", - description="Edit and answer 500 questions (both actions within 12 hours, answer score > 0)" - ) - - if post.revival_stage_one and post.a_vote_ups.all().count() >= 2: - TagBadge.objects.get_or_create( - awarded_to_user=post.answer_owner, - badge_type="Bronze", - tag_name="Revival", - bade_position="BADGE", - answerIf_TagOf_A=post) - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Revival", - description="Answer more than 30 days after a question was asked as first answer scoring 2 or more" - ) - - if post.necromancer_check and post.a_vote_ups.all().count() >= 5: - TagBadge.objects.get_or_create( - awarded_to_user=post.answer_owner, - badge_type="SILVER", - tag_name="Necromancer", - bade_position="BADGE", - answerIf_TagOf_A=post) - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Necromancer", - description="Answer a question more than 60 days later with score of 5 or more" - ) - - last_24_hours = timezone.now() - timedelta(hours=24) - getQ_Votes_in_24_Hours = QUpvote.objects.filter( - date__gt=last_24_hours).count() - getQ_DownVotes_in_24_Hours = QDownvote.objects.filter( - downvote_by_q=request.user, date__gt=last_24_hours).count() - getA_Votes_in_24_Hours = Answer.objects.filter( - a_vote_ups=request.user, date__gt=last_24_hours).count() - getA_DownVotes_in_24_Hours = Answer.objects.filter( - a_vote_downs=request.user, date__gt=last_24_hours).count() - totalIs = getQ_Votes_in_24_Hours + getQ_DownVotes_in_24_Hours + \ - getA_Votes_in_24_Hours + getA_DownVotes_in_24_Hours - - if totalIs >= 30: - TagBadge.objects.get_or_create( - awarded_to_user=post.answer_owner, - badge_type="BRONZE", - tag_name="Suffrage", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Suffrage", - description="Use 30 votes in a day" - ) - - if post.answer_owner == post.questionans.post_owner and post.a_vote_ups.count() >= 3: - TagBadge.objects.get_or_create( - awarded_to_user=post.answer_owner, - badge_type="SILVER", - tag_name="Self-Learner", - bade_position="BADGE", - answerIf_TagOf_A=post) - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Self-Learner", - description="Answer your own question with score of 3 or more" - ) - - if post.a_vote_ups.count() >= 1: - TagBadge.objects.get_or_create( - awarded_to_user=post.answer_owner, - badge_type="SILVER", - tag_name="Teacher", - bade_position="BADGE", - answerIf_TagOf_A=post) - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Teacher", - description="Answer a question with score of 1 or more" - ) - - if post.accepted and post.a_vote_ups.count() >= 40: - TagBadge.objects.get_or_create( - awarded_to_user=post.answer_owner, - badge_type="SILVER", - tag_name="Guru", - bade_position="BADGE", - answerIf_TagOf_A=post) - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Guru", - description="Accepted answer and score of 40 or more" - ) - - # subquery = '' - # for s in data.answer_set.all(): - subquery = Tag.objects.filter( - question__answer__answer_owner=post.answer_owner).annotate( - num_name=Count('name')) - - for s in subquery: - gettingAnswers = Answer.objects.filter(questionans__tags__name=s) - # print(gettingAnswers) - # print(s) - for s5 in gettingAnswers: - # print(s5) - # print(s5.a_reputation) - if s.num_name >= 2 and s5.a_reputation >= 15: - # createTag = Tag.objects.get_or_create(name=s) - # print("\nTag Awarding Worked\n") - TagBadge.objects.get_or_create( - awarded_to_user=post.answer_owner, badge_type="GOLD", tag_name=s) - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if=s, - description="N/A" - ) - # if s.num_name >= 2 and s2.a_reputation >= 50: - # print("Worked") - # GoldBadge.objects.get_or_create(awarded_to=request.user,badge_type="Gold",tag_name=s) - - if request.GET.get('submit') == 'like': - if request.user in post.a_vote_downs.all(): - # REMOVE DOWOVOTE AND UPVOTE - post.a_vote_downs.remove(request.user) - print("First Statement is Excecuting") - post.a_vote_ups.add(request.user) - - # Check if user downvoted the post if then delete that downvote - # reputation (-2) and add new (+10) reputation - if Reputation.objects.filter( - awarded_to=post.answer_owner, - answer_O=post, - answer_rep_C=-2, - reputation_on_what="DOWN_VOTE_ANSWER_REP_M").exists(): - Reputation.objects.filter( - awarded_to=post.answer_owner, - answer_O=post, - answer_rep_C=-2, - reputation_on_what="DOWN_VOTE_ANSWER_REP_M").delete() - Reputation.objects.get_or_create( - awarded_to=post.answer_owner, - answer_O=post, - answer_rep_C=10, - reputation_on_what="MY_ANSWER_UPVOTE_REP_P") - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="MY_ANSWER_UPVOTE_REP_P", - url=question_URL, - for_if="", - description="", - answer_priv_noti=post, - ) - rewardPrivielege(request, post.answer_owner) - return JsonResponse({'action': 'unDownVoteAndLike'}) - - elif request.user in post.a_vote_ups.all(): - # REMOVE UPVOTE - post.a_reputation -= 10 - print("Second Statement is Excecuting") - post.save() - post.a_vote_ups.remove(request.user) - if Reputation.objects.filter( - awarded_to=post.answer_owner, - answer_O=post, - answer_rep_C=10, - reputation_on_what="MY_ANSWER_UPVOTE_REP_P").exists(): - Reputation.objects.filter( - awarded_to=post.answer_owner, - answer_O=post, - answer_rep_C=10, - reputation_on_what="MY_ANSWER_UPVOTE_REP_P").delete() - - if PrivRepNotification.objects.filter( - for_user=post.answer_owner, - is_read=False, - url=question_URL, - type_of_PrivNotify="ANSWER_ACCEPT_REP_P", - missingReputation=10).exists(): - PrivRepNotification.objects.update( - for_user=post.answer_owner, - is_read=True, - url=question_URL, - type_of_PrivNotify="ANSWER_ACCEPT_REP_P", - missingReputation=10) - rewardPrivielege(request, post.answer_owner) - return JsonResponse({'action': 'unlikeAnswer'}) - elif request.user == post.answer_owner: - return JsonResponse({'action': 'cannotLikeOwnPost'}) - else: - # UPVOTE - if request.user.profile.voteUpPriv: - post.a_reputation += 10 - # post.date = timezone.now() - post.save() - post.a_vote_ups.add(request.user) - if getQuestion.reversal_monitor and post.a_vote_ups.all().count() >= 20: - TagBadge.objects.get_or_create( - awarded_to_user=post.answer_owner, - badge_type="GOLD", - tag_name="Reversal", - bade_position="BADGE", - answerIf_TagOf_A=post) - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Reversal", - description="Provide an answer of +20 score to a question of -5 score") - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - is_read=False, - url=question_URL, - type_of_PrivNotify="ANSWER_ACCEPT_REP_P", - missingReputation=10) - - Reputation.objects.get_or_create( - awarded_to=post.answer_owner, - answer_O=post, - answer_rep_C=10, - reputation_on_what="MY_ANSWER_UPVOTE_REP_P") - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="MY_ANSWER_UPVOTE_REP_P", - url=question_URL, - for_if="", - description="", - # question_priv_noti=post, - answer_priv_noti=post, - ) - - if post.a_vote_ups.all().count() >= 10: - TagBadge.objects.get_or_create( - awarded_to_user=post.answer_owner, - badge_type="BRONZE", - tag_name="Nice Answer", - bade_position="BADGE", - answerIf_TagOf_A=post) - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Nice Answer", - description="Answer score of 10 or more" - ) - if post.a_vote_ups.all().count() >= 25: - TagBadge.objects.get_or_create( - awarded_to_user=post.answer_owner, - badge_type="SILVER", - tag_name="Good Answer", - bade_position="BADGE", - answerIf_TagOf_A=post) - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Good Answer", - description="Answer score of 25 or more" - ) - if post.a_vote_ups.all().count() >= 100: - TagBadge.objects.get_or_create( - awarded_to_user=post.answer_owner, - badge_type="GOLD", - tag_name="Great Answer", - bade_position="BADGE", - answerIf_TagOf_A=post) - PrivRepNotification.objects.get_or_create( - for_user=post.answer_owner, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Great Answer", - description="Answer score of 100 or more" - ) - - if post == Answer.objects.filter( - a_vote_ups=request.user).first(): - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Supporter", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url=question_URL, - for_if="Supporter", - description="First up vote" - ) - - rewardPrivielege(request, post.answer_owner) - return JsonResponse({'action': 'upv'}) - else: - return JsonResponse({'action': 'lackOfPrivelege'}) - - elif request.GET.get('submit') == 'ansDownVote': - # Remove Upvote and Downvote - if request.user in post.a_vote_ups.all(): - post.a_vote_ups.remove(request.user) - post.a_vote_downs.add(request.user) - if Reputation.objects.filter( - awarded_to=post.answer_owner, - answer_O=post, - answer_rep_C=10, - reputation_on_what="MY_ANSWER_UPVOTE_REP_P").exists(): - Reputation.objects.filter( - awarded_to=post.answer_owner, - answer_O=post, - answer_rep_C=10, - reputation_on_what="MY_ANSWER_UPVOTE_REP_P").delete() - Reputation.objects.get_or_create( - awarded_to=post.answer_owner, - answer_O=post, - answer_rep_C=-2, - reputation_on_what="DOWN_VOTE_ANSWER_REP_M") - rewardPrivielege(request, post.answer_owner) - return JsonResponse({'action': 'unUpvoteAndDownVote'}) - - elif request.user in post.a_vote_downs.all(): - # Remove DownVote - post.a_vote_downs.remove(request.user) - if Reputation.objects.filter( - awarded_to=post.answer_owner, - answer_O=post, - answer_rep_C=-2, - reputation_on_what="DOWN_VOTE_ANSWER_REP_M").exists(): - Reputation.objects.filter( - awarded_to=post.answer_owner, - answer_O=post, - answer_rep_C=-2, - reputation_on_what="DOWN_VOTE_ANSWER_REP_M").delete() - rewardPrivielege(request, post.answer_owner) - return JsonResponse({'action': 'undislike'}) - elif request.user == post.answer_owner: - return JsonResponse({'action': 'cannotLikeOwnPost'}) - else: - # Down Vote - if request.user.profile.voteDownPriv: - print("Sixth Statement is Excecuting") - post.a_vote_downs.add(request.user) - # post.date = timezone.now() - post.save() - Reputation.objects.get_or_create( - awarded_to=post.answer_owner, - answer_O=post, - answer_rep_C=-2, - reputation_on_what="DOWN_VOTE_ANSWER_REP_M") - rewardPrivielege(request, post.answer_owner) - return JsonResponse({'action': 'downVoteOnly'}) - else: - return JsonResponse({'action': 'lackOfPrivelege'}) - else: - messages.error(request, 'Something went wrong') - return redirect('profile:posts') - - -def upvote_comment(request, commentq_id): - com = get_object_or_404(CommentQ, pk=commentq_id) - - if request.GET.get('submit') == 'upVoteCommentIt': - if request.user in com.com_upvote.all(): - com.com_upvote.remove(request.user) - return JsonResponse({'action': 'unVoteUp'}) - else: - com.com_upvote.add(request.user) - - getCommentsUVotes_MoreThan_5 = CommentQ.objects.filter( - commented_by=request.user).annotate( - num_comment_upvote=Count('com_upvote')).filter( - num_comment_upvote__gte=5) - - if getCommentsUVotes_MoreThan_5.count() >= 10: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Pundit", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Pundit", - description="Leave 10 comments with score of 5 or more" - ) - - return JsonResponse({'action': 'voteUp'}) - - else: - messages.error(request, 'Something went wrong') - return redirect('qa:questions') - - -@login_required -def edit_answer(request, answer_id): - post = Answer.objects.get(id=answer_id) - post_owner = post.answer_owner - - data = get_object_or_404(Answer, id=answer_id) - active_time = data.active_time - edited_time = data.a_edited_time - -# NEED TO CHECK THE EDITING 6_MON ALGORITHM IS WORKING in Answering Also. - - if request.method == 'POST': - form = EditAnswerForm(instance=post, - data=request.POST, - files=request.FILES) - - if form.is_valid(): - formWhyEditing = form.cleaned_data['why_editing_answer'] - form.save(commit=False) - post.a_edited_time = timezone.now() - post.active_time = timezone.now() - post.a_edited_by = request.user - request.user.profile.editPostTimeOfUser = timezone.now() - request.user.profile.save() -# ! ARCHAEOLOGIST BADGE - EDIT 100 POST WHICH ARE INACTIVE FOR 6-MONTHS -# Question Old Algorithm - START - was_inactive_for_six_months = timezone.now() - timedelta(seconds=20) - - if active_time < was_inactive_for_six_months: - is_in = True - else: - is_in = False -# I CAN ALSO DO THIS WITH :-: if active_time < was_inactive_for_six_months -# and data.date < edited_time: BUT HAVEN'T TRIED YET. - if is_in and data.date < edited_time: - is_boolean_true = True - if is_boolean_true: - request.user.profile.post_edit_inactive_for_six_month += 1 - request.user.profile.save() - if request.user.profile.post_edit_inactive_for_six_month == 5: - request.user.profile.archaeologist_S = True - request.user.profile.save() - else: - is_boolean_true = False - data_url = request.build_absolute_uri( - post.questionans.get_absolute_url()) - - if not request.user.profile.edit_questions_answers: - sendForReview = QuestionEditVotes.objects.create( - edit_suggested_by=request.user, edited_answer=post) - reviewInstance = ReviewQuestionEdit.objects.create( - queue_of=sendForReview, answer_to_view_if=post, is_reviewed=False) - reviewInstance.edit_reviewed_by.add(request.user) - request.user.profile.posts_edited_counter += 1 - request.user.profile.save() - getReviewingInstance = ReviewQuestionEdit.objects.filter( - queue_of=sendForReview, answer_to_view_if=post, is_reviewed=False).first() - # data_url = request.build_absolute_uri(getReviewingInstance.get_absolute_url()) - data_url = request.build_absolute_uri( - reverse( - 'review:reviewSuggesstedEdit', args=( - getReviewingInstance.pk, ))) - Notification.objects.create( - noti_receiver=post_owner, - type_of_noti="answer_edit", - url=data_url, - answer_noti=post) - elif request.user == post.answer_owner: - QuestionEditVotes.objects.create( - edit_suggested_by=request.user, - edited_answer=post, - rev_Action="Approve") - else: - request.user.profile.posts_edited_counter += 1 - request.user.profile.save() - data_url = request.build_absolute_uri( - post.questionans.get_absolute_url()) - Notification.objects.create( - noti_receiver=post_owner, - type_of_noti="answer_edit", - url=data_url, - answer_noti=post) - QuestionEditVotes.objects.create( - edit_suggested_by=request.user, - edited_answer=post, - rev_Action="Approve") - if request.user.profile.posts_edited_counter <= 1: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Editor", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Editor", - description="First Edit" - ) - - if request.user.profile.posts_edited_counter == 80: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Strunk & White", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url=data_url, - for_if="Strunk & White", - description="Edit 80 posts" - ) - - if request.user.profile.posts_edited_counter == 500: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Copy Editor", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url=data_url, - for_if="Copy Editor", - description="Edit 500 posts (excluding own or deleted posts and tag edits)") - - # getEditingTime = request.user.profile.editPostTimeOfUser - # getRecentAnswer = Answer.objects.filter(answer_owner=request.user).last() - - # if getEditingTime >= timezone.now() - timedelta(minutes=5) and getRecentAnswer.date >= timezone.now() - timedelta(minutes=5) and getRecentAnswer.a_vote_ups.all().count() >= 1: - # request.user.profile.Refiner_Illuminator_TagPostCounter += 1 - # request.user.profile.save() - # TagBadge.objects.get_or_create(awarded_to_user=request.user,badge_type="BRONZE", tag_name="Explainer",bade_position="BADGE") - # print("Explainer Awarded") - # if request.user.profile.Refiner_Illuminator_TagPostCounter >= 50: - # TagBadge.objects.get_or_create(awarded_to_user=request.user,badge_type="SILVER", tag_name="Refiner",bade_position="BADGE") - # if request.user.profile.Refiner_Illuminator_TagPostCounter >= 500: - # TagBadge.objects.get_or_create(awarded_to_user=request.user,badge_type="GOLD", tag_name="Illuminator",bade_position="BADGE") - - getEditingTime = request.user.profile.editPostTimeOfUser - getRecentAnswer = Answer.objects.filter( - answer_owner=request.user).last() - if getRecentAnswer: - if getEditingTime >= timezone.now() - \ - timedelta(minutes=5) and getRecentAnswer.date >= timezone.now() - timedelta(minutes=5): - request.user.profile.Refiner_Illuminator_TagPostCounter += 1 - request.user.profile.save() - form.save() - - update_change_reason(post, formWhyEditing) - # sendForReview = QuestionEditVotes.objects.create(edit_suggested_by=request.user, edited_answer=post) - # reviewInstance = ReviewQuestionEdit.objects.create(queue_of=sendForReview,answer_to_view_if=post, is_reviewed=False) - # data_url = request.build_absolute_uri(reverse('review:reviewSuggesstedEdit', args=(reviewInstance.pk, ))) - # Notification.objects.create(noti_receiver=post_owner, type_of_noti="answer_comment", url=data_url) - return redirect('profile:home') - - else: - messages.error(request, 'Form is Not Valid for some reason') - - else: - form = EditAnswerForm(request.POST or None, - request.FILES or None, - instance=post) - - context = {'post': post, 'form': form, 'post_owner': post_owner} - return render(request, 'qa/edit_answer.html', context) - - -@login_required -def edit_question(request, question_id): - post = Question.objects.get(id=question_id) - allComments = post.commentq_set.all() - post_owner = post.post_owner - - data = get_object_or_404(Question, id=question_id) - active_time = data.active_date - edited_time = data.q_edited_time - - if request.method != 'POST': - form = UpdateQuestion(request.POST or None, - request.FILES or None, instance=post) - else: - form = UpdateQuestion( - instance=post, data=request.POST, files=request.FILES) - if form.is_valid(): - form.save(commit=False) - formWhyEditing = form.cleaned_data['why_editing_question'] - post.q_edited_time = timezone.now() - post.active_date = timezone.now() - post.q_edited_by = request.user - request.user.profile.editPostTimeOfUser = timezone.now() - request.user.profile.save() -# ! ARCHAEOLOGIST BADGE - EDIT 100 POST WHICH ARE INACTIVE FOR 6-MONTHS -# Question Old Algorithm - START - # Check if post is inactive for six months and also check - was_inactive_for_six_months = timezone.now() - timedelta(days=168) - - if active_time < was_inactive_for_six_months: - is_in = True - else: - is_in = False -# I CAN ALSO DO THIS WITH :-: if active_time < was_inactive_for_six_months -# and data.date < edited_time: BUT HAVEN'T TRIED YET. - if is_in and data.date < edited_time: - is_boolean_true = True - if is_boolean_true: - request.user.profile.post_edit_inactive_for_six_month += 1 - request.user.profile.save() - if request.user.profile.post_edit_inactive_for_six_month == 1: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Excavator", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Excavator", - description="Edit first post that was inactive for 6 months" - ) - - if request.user.profile.post_edit_inactive_for_six_month == 100: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Archaologist", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Archaologist", - description="Edit 100 posts that were inactive for 6 months" - ) - - else: - is_boolean_true = False -# Question Old Algorithm - END - form.save() - - # getEditingTime = request.user.profile.editPostTimeOfUser - # getRecentAnswer = Answer.objects.filter(answer_owner=request.user).last() - - # if getRecentAnswer: - # if getEditingTime >= timezone.now() - timedelta(minutes=5) and getRecentAnswer.date >= timezone.now() - timedelta(minutes=5) : - # request.user.profile.Refiner_Illuminator_TagPostCounter += 1 - # TagBadge.objects.get_or_create(awarded_to_user=request.user,badge_type="BRONZE", tag_name="Explainer",bade_position="BADGE") - # print("Explainer Awarded") - # if request.user.profile.Refiner_Illuminator_TagPostCounter >= 50: - # TagBadge.objects.get_or_create(awarded_to_user=request.user,badge_type="SILVER", tag_name="Refiner",bade_position="BADGE") - - # if request.user.profile.Refiner_Illuminator_TagPostCounter >= 500: - # TagBadge.objects.get_or_create(awarded_to_user=request.user,badge_type="GOLD", tag_name="Illuminator",bade_position="BADGE") - - # sendForReview = QuestionEdit.objects.create(edited_question=post,edited_by=request.user) - if not request.user.profile.edit_questions_answers: - sendForReview = QuestionEditVotes.objects.create( - edit_suggested_by=request.user, edited_question=post) - reviewInstance = ReviewQuestionEdit.objects.create( - queue_of=sendForReview, question_to_view=post, is_reviewed=False) - reviewInstance.edit_reviewed_by.add(request.user) - request.user.profile.posts_edited_counter += 1 - request.user.profile.save() - getReviewingInstance = ReviewQuestionEdit.objects.filter( - queue_of=sendForReview, question_to_view=post, is_reviewed=False).first() - # data_url = request.build_absolute_uri(getReviewingInstance.get_absolute_url()) - data_url = request.build_absolute_uri( - reverse( - 'review:reviewSuggesstedEdit', args=( - getReviewingInstance.pk, ))) - Notification.objects.create( - noti_receiver=post_owner, - type_of_noti="question_edit", - url=data_url, - question_noti=post) - elif request.user == post.post_owner: - QuestionEditVotes.objects.create( - edit_suggested_by=request.user, - edited_question=post, - rev_Action="Approve", - is_completed=True) - else: - request.user.profile.posts_edited_counter += 1 - request.user.profile.save() - data_url = request.build_absolute_uri(post.get_absolute_url()) - Notification.objects.create( - noti_receiver=post_owner, - type_of_noti="question_edit", - url=data_url, - question_noti=post) - QuestionEditVotes.objects.create( - edit_suggested_by=request.user, - edited_question=post, - rev_Action="Approve", - is_completed=True) - - if request.user.profile.posts_edited_counter <= 1: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Editor", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url=data_url, - for_if="Editor", - description="Edit first Post" - ) - if request.user.profile.posts_edited_counter == 80: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Strunk & White", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url=data_url, - for_if="Strunk & White", - description="Edit 80 posts" - ) - if request.user.profile.posts_edited_counter == 500: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Copy Editor", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url=data_url, - for_if="Copy Editor", - description="Edit 500 posts (excluding own or deleted posts and tag edits)") - update_change_reason(post, formWhyEditing) - print(form.errors) - - return redirect('profile:home') - - else: - print(form.errors) - messages.error(request, - 'Something went wrong!') - - context = { - 'allComments': allComments, - 'post': post, - 'form': form, - 'post_owner': post_owner} - return render(request, 'qa/edit_question.html', context) - - -def getQuestionEditHistory(request, question_id): - getQuestion = get_object_or_404(Question, pk=question_id) - - editHistory = getQuestion.history.all() # .exclude(body=None) - - # for his in editHistory: - - # if his.prev_record is not None and his.next_record is not None: - # print("Worked") - # print(len(his.next_record.body) - len(his.prev_record.body)) - - context = {'getQuestion': getQuestion, 'editHistory': editHistory} - return render(request, 'qa/getQuestionEditHistory.html', context) - - -def answer_edit_history(request, answer_id): - getAnswer = get_object_or_404(Answer, pk=answer_id) - - editHistory = getAnswer.anshis.all() # .exclude(body=None) - - context = {'getAnswer': getAnswer, 'editHistory': editHistory, } - return render(request, 'qa/answer_edit_history.html', context) - - -def BountiedQuestions(request, query=None): - days_7 = timezone.now() - timedelta(days=7) - if query == 'None': - questions = Question.objects.filter( - bounty_date_announced__gte=days_7, - is_bountied=True, - is_deleted=False - ) - else: - questions = Question.objects.filter( - tags__name__icontains=query, - bounty_date_announced__gte=days_7, - is_bountied=True, - is_deleted=False - ) - - context = { - 'questions': questions, - 'query': query, - 'questionsCount': questions.count()} - return render(request, 'qa/BountiedQuestions.html', context) - - -def unansweredQuestions(request, query=None): - if query == 'None': - questions = Question.objects.filter( - answer__answer_owner=None, - is_deleted=False, - is_bountied=False) - else: - questions = Question.objects.filter( - tags__name__icontains=query, - is_deleted=False, - is_bountied=False).filter( - Q(answer__answer_owner=None) - ).distinct() - - context = { - 'questions': questions, - 'query': query, - 'questionsCount': questions.count()} - return render(request, 'qa/unansweredQuestions.html', context) - - -def activeQuestions(request, query=None): - if query == 'None': - questions = Question.objects.filter( - is_deleted=False, is_bountied=False).order_by('active_date') - else: - questions = Question.objects.filter( - tags__name__icontains=query, - is_deleted=False, - is_bountied=False).order_by('active_date').distinct() - - context = {'questions': questions, 'query': query} - return render(request, 'qa/activeQuestions.html', context) - - -# @loggedOutFromAllDevices -def questions(request): - questions = Question.objects.all().exclude( - is_bountied=True, is_deleted=True).order_by('-date') - -# Damn so use lot of logics But I don't care, I will build this UP ! - - if request.method == "POST": - this = request.POST.getlist('sortId') - getCheckBoxes = request.POST.getlist('filterId') - print(getCheckBoxes) - - query = request.POST.get('tagQuery') - - if "RecentActivity" in this: - selected = "RecentActivity" - if query: - relatedTags = Tag.objects.filter(name__icontains=query) - if "NoAnswers" in getCheckBoxes: - bool_1 = True - else: - bool_1 = False - if "NoAcceptedAnswer" in getCheckBoxes: - bool_2 = True - else: - bool_2 = False - if "Bounty" in getCheckBoxes: - bool_3 = True - else: - bool_3 = False - - # No Answers - if bool_1 and bool_2 == False and bool_3 == False: - print("Only First is True") - questions = Question.objects.filter( - tags__name__icontains=query).annotate( - answers=Count('answer')).filter( - answers=0, - is_deleted=False).order_by('-active_date') - - # No Accepted Answer - if bool_2 and bool_1 == False and bool_3 == False: - print("Only Second is True") - questions = Question.objects.filter( - tags__name__icontains=query).filter( - answer__accepted=False, - is_deleted=False).distinct().order_by('-active_date') - - # Has Bounty - if bool_3 and bool_1 == False and bool_2 == False: - questions = Question.objects.filter( - tags__name__icontains=query, - is_bountied=True, - is_deleted=False).order_by('-active_date') - print("Only Third is True") - - # No Answers and No Accepted Answer - if bool_1 and bool_2 and bool_3 == False: - questions = Question.objects.filter( - tags__name__icontains=query, - answer__accepted=False, - is_deleted=False).annotate( - answers=Count('answer')).filter( - answers=0).order_by('-active_date') - print("First and Second is True") - - # No Answers and Bounty - if bool_1 and bool_3 and bool_2 == False: - questions = Question.objects.filter( - tags__name__icontains=query, - is_bountied=True, - is_deleted=False).annotate( - answers=Count('answer')).filter( - answers=0).order_by('-active_date') - print("First and Third is True") - - # No Accepted Answers and Bounty - if bool_2 and bool_3 and bool_1 == False: - questions = Question.objects.filter( - tags__name__icontains=query, - is_bountied=True, - answer__accepted=False, - is_deleted=False).order_by('-active_date') - print("Second and Third is True") - - # ALl Filters are True - if bool_1 and bool_2 and bool_3: - questions = Question.objects.filter( - tags__name__icontains=query, - is_bountied=True, - answer__accepted=False, - is_deleted=False).annotate( - answers=Count('answer')).filter( - answer=0).order_by('-active_date') - print("All Are True") - - # Clear Filters - if bool_1 == False and bool_2 == False and bool_3 == False: - questions = Question.objects.filter( - tags__name__icontains=query, is_deleted=False).order_by('-active_date') - - else: - if "NoAnswers" in getCheckBoxes: - bool_1 = True - else: - bool_1 = False - if "NoAcceptedAnswer" in getCheckBoxes: - bool_2 = True - else: - bool_2 = False - if "Bounty" in getCheckBoxes: - bool_3 = True - else: - bool_3 = False - - # No Answers - if bool_1 and bool_2 == False and bool_3 == False: - print("Only First is True, Without Query") - questions = Question.objects.all().annotate( - answers=Count('answer')).filter( - answers=0, is_deleted=False).order_by('-active_date') - - # No Accepted Answer - if bool_2 and bool_1 == False and bool_3 == False: - print("Only Second is True") - questions = Question.objects.all().filter( - answer__accepted=False, is_deleted=False).distinct().order_by('-active_date') - - # Has Bounty - if bool_3 and bool_1 == False and bool_2 == False: - questions = Question.objects.all().exclude( - is_bountied=False, is_deleted=True).order_by('-active_date') - print("Only Third is True") - - # No Answers and No Accepted Answer - if bool_1 and bool_2 and bool_3 == False: - questions = Question.objects.all().exclude( - answer__accepted=True, - is_deleted=True).annotate( - answers=Count('answer')).filter( - answers=0).order_by('-active_date') - print("First and Second is True") - - # No Answers and Bounty - if bool_1 and bool_3 and bool_2 == False: - questions = Question.objects.all().exclude( - is_bountied=False, - is_deleted=True).annotate( - answers=Count('answer')).filter( - answers=0).order_by('-active_date') - print("First and Third is True") - - # No Accepted Answers and Bounty - if bool_2 and bool_3 and bool_1 == False: - questions = Question.objects.all().exclude( - is_bountied=False, - answer__accepted=True, - is_deleted=True).order_by('-active_date') - print("Second and Third is True") - - # ALl Filters are True - if bool_1 and bool_2 and bool_3: - questions = Question.objects.all().exclude( - is_bountied=False, - answer__accepted=True).annotate( - answers=Count('answer')).filter( - answer=0, - is_deleted=False).order_by('-active_date') - print("All Are True") - - # Clear Filters - if bool_1 == False and bool_2 == False and bool_3 == False: - questions = Question.objects.all().exclude( - is_bountied=True, is_deleted=True).order_by('-active_date') - - elif "Newest" in this: - selected = "Newest" - if query: - relatedTags = Tag.objects.filter(name__icontains=query) - if "NoAnswers" in getCheckBoxes: - bool_1 = True - else: - bool_1 = False - if "NoAcceptedAnswer" in getCheckBoxes: - bool_2 = True - else: - bool_2 = False - if "Bounty" in getCheckBoxes: - bool_3 = True - else: - bool_3 = False - - # No Answers - if bool_1 and bool_2 == False and bool_3 == False: - print("Only First is True") - questions = Question.objects.filter( - tags__name__icontains=query, - is_deleted=False).annotate( - answers=Count('answer')).filter( - answers=0).order_by('-date') - - # No Accepted Answer - if bool_2 and bool_1 == False and bool_3 == False: - print("Only Second is True") - questions = Question.objects.filter( - tags__name__icontains=query, is_deleted=False).filter( - answer__accepted=False).distinct().order_by('-date') - - # Has Bounty - if bool_3 and bool_1 == False and bool_2 == False: - questions = Question.objects.filter( - tags__name__icontains=query, - is_deleted=False, - is_bountied=True).order_by('-date') - print("Only Third is True") - - # No Answers and No Accepted Answer - if bool_1 and bool_2 and bool_3 == False: - questions = Question.objects.filter( - tags__name__icontains=query, - answer__accepted=False, - is_deleted=False).annotate( - answers=Count('answer')).filter( - answers=0).order_by('-date') - print("First and Second is True") - - # No Answers and Bounty - if bool_1 and bool_3 and bool_2 == False: - questions = Question.objects.filter( - tags__name__icontains=query, - is_bountied=True, - is_deleted=False).annotate( - answers=Count('answer')).filter( - answers=0).order_by('-date') - print("First and Third is True") - - # No Accepted Answers and Bounty - if bool_2 and bool_3 and bool_1 == False: - questions = Question.objects.filter( - tags__name__icontains=query, - is_bountied=True, - is_deleted=False, - answer__accepted=False).order_by('-date') - print("Second and Third is True") - - # ALl Filters are True - if bool_1 and bool_2 and bool_3: - questions = Question.objects.filter( - tags__name__icontains=query, - is_bountied=True, - is_deleted=False, - answer__accepted=False).annotate( - answers=Count('answer')).filter( - answer=0).order_by('-date') - print("All Are True") - - # Clear Filters - if bool_1 == False and bool_2 == False and bool_3 == False: - questions = Question.objects.filter( - tags__name__icontains=query, is_deleted=False).order_by('-date') - - else: - if "NoAnswers" in getCheckBoxes: - bool_1 = True - else: - bool_1 = False - if "NoAcceptedAnswer" in getCheckBoxes: - bool_2 = True - else: - bool_2 = False - if "Bounty" in getCheckBoxes: - bool_3 = True - else: - bool_3 = False - - # No Answers - if bool_1 and bool_2 == False and bool_3 == False: - print("Only First is True, Without Query") - questions = Question.objects.all().annotate( - answers=Count('answer')).filter( - answers=0, is_deleted=False).order_by('-date') - - # No Accepted Answer - if bool_2 and bool_1 == False and bool_3 == False: - print("Only Second is True") - questions = Question.objects.all().filter( - answer__accepted=False, is_deleted=False).distinct().order_by('-date') - - # Has Bounty - if bool_3 and bool_1 == False and bool_2 == False: - questions = Question.objects.all().exclude( - is_bountied=False, is_deleted=True).order_by('-date') - print("Only Third is True") - - # No Answers and No Accepted Answer - if bool_1 and bool_2 and bool_3 == False: - questions = Question.objects.all().exclude( - answer__accepted=True).annotate( - answers=Count('answer')).filter( - answers=0, - is_deleted=True).order_by('-date') - print("First and Second is True") - - # No Answers and Bounty - if bool_1 and bool_3 and bool_2 == False: - questions = Question.objects.all().exclude( - is_bountied=False).annotate( - answers=Count('answer')).filter( - answers=0, - is_deleted=True).order_by('-date') - print("First and Third is True") - - # No Accepted Answers and Bounty - if bool_2 and bool_3 and bool_1 == False: - questions = Question.objects.all().exclude( - is_bountied=False, answer__accepted=True, is_deleted=True).order_by('-date') - print("Second and Third is True") - - # ALl Filters are True - if bool_1 and bool_2 and bool_3: - questions = Question.objects.all().exclude( - is_bountied=False, - answer__accepted=True, - is_deleted=True).annotate( - answers=Count('answer')).filter( - answer=0).order_by('-date') - print("All Are True") - - # Clear Filters - if bool_1 == False and bool_2 == False and bool_3 == False: - questions = Question.objects.all().exclude( - is_bountied=True, is_deleted=True).order_by('-date') - - elif "MostVotes" in this: - selected = "MostVotes" - - if query: - relatedTags = Tag.objects.filter(name__icontains=query) - if "NoAnswers" in getCheckBoxes: - bool_1 = True - else: - bool_1 = False - if "NoAcceptedAnswer" in getCheckBoxes: - bool_2 = True - else: - bool_2 = False - if "Bounty" in getCheckBoxes: - bool_3 = True - else: - bool_3 = False - - # No Answers - if bool_1 and bool_2 == False and bool_3 == False: - print("Only First is True") - questions = Question.objects.filter( - tags__name__icontains=query).annotate( - answers=Count('answer')).filter( - answers=0, - is_deleted=False).annotate( - mostVotes=Count('qupvote')).order_by('-mostVotes') - - # No Accepted Answer - if bool_2 and bool_1 == False and bool_3 == False: - print("Only Second is True") - questions = Question.objects.filter( - tags__name__icontains=query).filter( - answer__accepted=False, - is_deleted=False).distinct().annotate( - mostVotes=Count('qupvote')).order_by('-mostVotes') - - # Has Bounty - if bool_3 and bool_1 == False and bool_2 == False: - questions = Question.objects.filter( - tags__name__icontains=query, is_bountied=True, is_deleted=False).annotate( - mostVotes=Count('qupvote')).order_by('-mostVotes') - print("Only Third is True") - - # No Answers and No Accepted Answer - if bool_1 and bool_2 and bool_3 == False: - questions = Question.objects.filter( - tags__name__icontains=query, - answer__accepted=False, - is_deleted=False).annotate( - answers=Count('answer')).filter( - answers=0).annotate( - mostVotes=Count('qupvote')).order_by('-mostVotes') - print("First and Second is True") - - # No Answers and Bounty - if bool_1 and bool_3 and bool_2 == False: - questions = Question.objects.filter( - tags__name__icontains=query, - is_bountied=True, - is_deleted=False).annotate( - answers=Count('answer')).filter( - answers=0).annotate( - mostVotes=Count('qupvote')).order_by('-mostVotes') - print("First and Third is True") - - # No Accepted Answers and Bounty - if bool_2 and bool_3 and bool_1 == False: - questions = Question.objects.filter( - tags__name__icontains=query, - is_bountied=True, - answer__accepted=False, - is_deleted=False).annotate( - mostVotes=Count('qupvote')).order_by('-mostVotes') - print("Second and Third is True") - - # ALl Filters are True - if bool_1 and bool_2 and bool_3: - questions = Question.objects.filter( - tags__name__icontains=query, - is_bountied=True, - answer__accepted=False, - is_deleted=False).annotate( - answers=Count('answer')).filter( - answer=0).annotate( - mostVotes=Count('qupvote')).order_by('-mostVotes') - print("All Are True") - - # Clear Filters - if bool_1 == False and bool_2 == False and bool_3 == False: - questions = Question.objects.filter( - tags__name__icontains=query, is_deleted=False).annotate( - mostVotes=Count('qupvote')).order_by('-mostVotes') - - else: - if "NoAnswers" in getCheckBoxes: - bool_1 = True - else: - bool_1 = False - if "NoAcceptedAnswer" in getCheckBoxes: - bool_2 = True - else: - bool_2 = False - if "Bounty" in getCheckBoxes: - bool_3 = True - else: - bool_3 = False - - # No Answers - if bool_1 and bool_2 == False and bool_3 == False: - print("Only First is True, Without Query") - questions = Question.objects.all().annotate( - answers=Count('answer')).filter( - answers=0, is_deleted=False).annotate( - mostVotes=Count('qupvote')).order_by('-mostVotes') - - # No Accepted Answer - if bool_2 and bool_1 == False and bool_3 == False: - print("Only Second is True") - questions = Question.objects.all().exclude( - answer__accepted=True, is_deleted=True).annotate( - mostVotes=Count('qupvote')).order_by('-mostVotes').distinct() - - # Has Bounty - if bool_3 and bool_1 == False and bool_2 == False: - questions = Question.objects.all().exclude( - is_bountied=False, is_deleted=True).annotate( - mostVotes=Count('qupvote')).order_by('-mostVotes') - print("Only Third is True") - - # No Answers and No Accepted Answer - if bool_1 and bool_2 and bool_3 == False: - questions = Question.objects.all().exclude( - answer__accepted=True).annotate( - answers=Count('answer')).filter( - answers=0, - is_deleted=False).annotate( - mostVotes=Count('qupvote')).order_by('-mostVotes') - print("First and Second is True") - - # No Answers and Bounty - if bool_1 and bool_3 and bool_2 == False: - questions = Question.objects.all().exclude( - is_bountied=False, - is_deleted=True).annotate( - answers=Count('answer')).filter( - answers=0).annotate( - mostVotes=Count('qupvote')).order_by('-mostVotes') - print("First and Third is True") - - # No Accepted Answers and Bounty - if bool_2 and bool_3 and bool_1 == False: - questions = Question.objects.all().exclude( - is_bountied=False, is_deleted=True, answer__accepted=True).annotate( - mostVotes=Count('qupvote')).order_by('-mostVotes') - print("Second and Third is True") - - # ALl Filters are True - if bool_1 and bool_2 and bool_3: - questions = Question.objects.all().exclude( - is_bountied=False, - answer__accepted=True, - is_deleted=True).annotate( - answers=Count('answer')).filter( - answer=0).annotate( - mostVotes=Count('qupvote')).order_by('-mostVotes') - print("All Are True") - - # Clear Filters - if bool_1 == False and bool_2 == False and bool_3 == False: - questions = Question.objects.all().exclude( - is_bountied=True, is_deleted=True).annotate( - mostVotes=Count('qupvote')).order_by('-mostVotes') - - # elif "MostFrequent" in this: - # selected = "MostFrequent" - else: - selected = "BountyEndingSoon" - if query: - relatedTags = Tag.objects.filter(name__icontains=query) - if "NoAnswers" in getCheckBoxes: - bool_1 = True - else: - bool_1 = False - if "NoAcceptedAnswer" in getCheckBoxes: - bool_2 = True - else: - bool_2 = False - if "Bounty" in getCheckBoxes: - bool_3 = True - else: - bool_3 = False - - minutes_10 = timezone.now() - timedelta(hours=23) - # questions = Question.objects.filter(bounty_date_announced__lt=minutes_10, is_bountied=True) - - # No Answers - if bool_1 and bool_2 == False and bool_3 == False: - print("Only First is True") - questions = Question.objects.filter( - tags__name__icontains=query).annotate( - answers=Count('answer')).filter( - answers=0).filter( - bounty_date_announced__lt=minutes_10, is_bountied=True, is_deleted=False) - - # No Accepted Answer - if bool_2 and bool_1 == False and bool_3 == False: - print("Only Second is True, In Bounty Ending Soon") - questions = Question.objects.filter( - tags__name__icontains=query).filter( - answer__accepted=False).filter( - bounty_date_announced__lt=minutes_10, - is_bountied=True, - is_deleted=False).distinct() - - # Has Bounty - if bool_3 and bool_1 == False and bool_2 == False: - questions = Question.objects.filter( - tags__name__icontains=query, is_bountied=True, is_deleted=False).filter( - bounty_date_announced__lt=minutes_10) - print("Only Third is True") - - # No Answers and No Accepted Answer - if bool_1 and bool_2 and bool_3 == False: - questions = Question.objects.filter( - tags__name__icontains=query, answer__accepted=False).annotate( - answers=Count('answer')).filter(answers=0).filter( - bounty_date_announced__lt=minutes_10, is_bountied=True, is_deleted=False) - print("First and Second is True") - - # No Answers and Bounty - if bool_1 and bool_3 and bool_2 == False: - questions = Question.objects.filter( - tags__name__icontains=query, - is_bountied=True).annotate( - answers=Count('answer')).filter( - answers=0).filter( - bounty_date_announced__lt=minutes_10, - is_bountied=True, - is_deleted=False) - print("First and Third is True") - - # No Accepted Answers and Bounty - if bool_2 and bool_3 and bool_1 == False: - questions = Question.objects.filter( - tags__name__icontains=query, is_bountied=True, answer__accepted=False).filter( - bounty_date_announced__lt=minutes_10, is_bountied=True, is_deleted=False) - print("Second and Third is True") - - # ALl Filters are True - if bool_1 and bool_2 and bool_3: - questions = Question.objects.filter( - tags__name__icontains=query, - is_bountied=True, - answer__accepted=False).annotate( - answers=Count('answer')).filter( - answer=0, - is_deleted=False).annotate( - mostVotes=Count('qupvote')).order_by('-mostVotes') - print("All Are True") - - # Clear Filters - if bool_1 == False and bool_2 == False and bool_3 == False: - questions = Question.objects.filter(tags__name__icontains=query).filter( - bounty_date_announced__lt=minutes_10, is_deleted=False, is_bountied=True) - - else: - if "NoAnswers" in getCheckBoxes: - bool_1 = True - else: - bool_1 = False - if "NoAcceptedAnswer" in getCheckBoxes: - bool_2 = True - else: - bool_2 = False - if "Bounty" in getCheckBoxes: - bool_3 = True - else: - bool_3 = False - minutes_10 = timezone.now() - timedelta(hours=23) - - # No Answers - if bool_1 and bool_2 == False and bool_3 == False: - print("Only First is True, Without Query") - questions = Question.objects.filter( - bounty_date_announced__lt=minutes_10, - is_bountied=True, - is_deleted=False).annotate( - answers=Count('answer')).filter( - answers=0) - - # No Accepted Answer - if bool_2 and bool_1 == False and bool_3 == False: - print("Only Second is True") - questions = Question.objects.filter( - bounty_date_announced__lt=minutes_10, - is_bountied=True, - is_deleted=False).exclude( - answer__accepted=True).distinct() - - # Has Bounty - if bool_3 and bool_1 == False and bool_2 == False: - questions = Question.objects.filter( - bounty_date_announced__lt=minutes_10, is_bountied=True, is_deleted=False) - print("Only Third is True") - - # No Answers and No Accepted Answer - if bool_1 and bool_2 and bool_3 == False: - questions = Question.objects.filter( - bounty_date_announced__lt=minutes_10, - is_bountied=True).exclude( - answer__accepted=True).annotate( - answers=Count('answer')).filter( - answers=0, - is_deleted=False) - print("First and Second is True") - - # No Answers and Bounty - if bool_1 and bool_3 and bool_2 == False: - questions = Question.objects.filter( - bounty_date_announced__lt=minutes_10, - is_bountied=True, - is_deleted=False).annotate( - answers=Count('answer')).filter( - answers=0).annotate( - mostVotes=Count('qupvote')).order_by('-mostVotes') - print("First and Third is True") - - # No Accepted Answers and Bounty - if bool_2 and bool_3 and bool_1 == False: - questions = Question.objects.filter( - bounty_date_announced__lt=minutes_10, - is_bountied=True, - is_deleted=False).exclude( - answer__accepted=True) - print("Second and Third is True") - - # ALl Filters are True - if bool_1 and bool_2 and bool_3: - questions = Question.objects.filter( - bounty_date_announced__lt=minutes_10, - is_bountied=True).exclude( - answer__accepted=True).annotate( - answers=Count('answer')).filter( - answer=0, - is_deleted=False) - print("All Are True") - - # Clear Filters - if bool_1 == False and bool_2 == False and bool_3 == False: - questions = Question.objects.filter( - bounty_date_announced__lt=minutes_10, is_bountied=True, is_deleted=False) - - else: - selected = False - questions = Question.objects.filter( - is_deleted=False, is_bountied=False).order_by('-date') - query = '' - bool_1 = '' - bool_2 = '' - bool_3 = '' - relatedTags = '' - - # EXCLUDED QUESTIONS WHICH HAVE BOUNTY - objs = Question.objects.all() # .exclude(is_bountied=True) - if request.user.is_authenticated: - notifics = Notification.objects.filter( - noti_receiver=request.user).order_by('-date_created') - else: - notifics = '' - minutes_10 = timezone.now() - timedelta(hours=23) -# POSTS BEFORE 4 HOURS - bount_older = Question.objects.filter( - bounty_date_announced__lt=minutes_10, is_bountied=True) - - bountied = '' - object_list = '' - - page = request.GET.get('page', 1) - - paginator = Paginator(questions, 9) - try: - questions = paginator.page(page) - except PageNotAnInteger: - questions = paginator.page(1) - except EmptyPage: - questions = paginator.page(paginator.num_pages) - - countQuestions = Question.objects.count() - # print("Printing Query") - # print(query) - context = { - 'bool_1': bool_1, - 'countQuestions': countQuestions, - 'bool_2': bool_2, - 'bool_3': bool_3, - 'bountied': bountied, - 'query': query, - 'object_list': object_list, - 'questions': questions, - 'selected': selected, - 'notifics': notifics, - 'objs': objs, - 'bount_older': bount_older, - 'relatedTags': relatedTags, - } - - return render(request, 'qa/Questions_List.html', context) diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 0adfaf5..0000000 --- a/requirements.txt +++ /dev/null @@ -1,62 +0,0 @@ -asgiref==3.4.1 -atomicwrites==1.4.0 -attrs==21.2.0 -autopep8==1.5.7 -django-adminactions==1.13.1 -black==21.8b0 -certifi==2021.5.30 -charset-normalizer==2.0.4 -click==8.0.1 -colorama==0.4.4 -dj-database-url==0.5.0 -Django==3.2.15 -django-compat==1.0.15 -django-crispy-forms==1.12.0 -django-heroku==0.3.1 -django-js-asset==1.2.2 -django-markdown-deux==1.0.5 -django-model-utils==4.1.1 -django-online-users==0.3 -django-redis==5.0.0 -django-simple-history==3.0.0 -django-taggit==1.5.1 -djangorestframework==3.12.4 -gunicorn==20.1.0 -humanize==3.11.0 -idna==3.2 -importlib-metadata==4.8.1 -iniconfig==1.1.1 -Markdown==3.3.4 -markdown2==2.4.2 -martor==1.6.4 -mypy-extensions==0.4.3 -packaging==21.0 -pathspec==0.9.0 -Pillow==9.0.1 -platformdirs==2.3.0 -pluggy==1.0.0 -portalocker==2.3.2 -psycopg2==2.9.1 -py==1.10.0 -pycodestyle==2.7.0 -pyparsing==2.4.7 -pytest==6.2.5 -python-slugify==5.0.2 -pytz==2021.1 -redis==3.5.3 -regex==2021.8.28 -requests==2.26.0 -six==1.16.0 -sqlparse==0.4.1 -text-unidecode==1.3 -toml==0.10.2 -tomli==1.2.1 -typed-ast==1.4.3 -typing-extensions==3.10.0.0 -tzlocal==2.1 -urllib3==1.26.6 -whitenoise==5.3.0 -xlrd==2.0.1 -xlwt==1.3.0 -yapf==0.31.0 -zipp==3.5.0 diff --git a/review/__init__.py b/review/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/review/admin.py b/review/admin.py deleted file mode 100644 index fba3240..0000000 --- a/review/admin.py +++ /dev/null @@ -1,40 +0,0 @@ -from django.contrib import admin - -from .models import FirstAnswerReview,FirstQuestionReview -from .models import LateAnswerReview -# from .models import QuestionEdit -from .models import CloseQuestionVotes, ReviewQuestionReOpenVotes -from .models import ReviewCloseVotes,ReOpenQuestionVotes,QuestionEditVotes -from .models import ReviewQuestionEdit,LowQualityPostsCheck,ReviewLowQualityPosts -from .models import ReviewFlagPost,FlagComment,ReviewFlagComment,FlagPost -# admin.site.register(QuestionEdit) - -admin.site.register(FirstAnswerReview) - -admin.site.register(FirstQuestionReview) - -admin.site.register(LateAnswerReview) - -admin.site.register(CloseQuestionVotes) - -admin.site.register(ReviewCloseVotes) - -admin.site.register(ReOpenQuestionVotes) - -admin.site.register(ReviewQuestionReOpenVotes) - -admin.site.register(QuestionEditVotes) - -admin.site.register(ReviewQuestionEdit) - -admin.site.register(LowQualityPostsCheck) - -admin.site.register(ReviewLowQualityPosts) - -admin.site.register(FlagComment) - -admin.site.register(ReviewFlagPost) - -admin.site.register(ReviewFlagComment) - -admin.site.register(FlagPost) \ No newline at end of file diff --git a/review/apps.py b/review/apps.py deleted file mode 100644 index ea7c86f..0000000 --- a/review/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class ReviewConfig(AppConfig): - default_auto_field = 'django.db.models.BigAutoField' - name = 'review' diff --git a/review/context_processors.py b/review/context_processors.py deleted file mode 100644 index 9496dbc..0000000 --- a/review/context_processors.py +++ /dev/null @@ -1,269 +0,0 @@ -from qa.models import Question,Answer -from django.shortcuts import render, redirect -import datetime -from django.utils import timezone -from datetime import timedelta -from django.db.models import Avg, Count, Min, Sum -# cp = CONTEXT_PROCESSORS -# from .models import QuestionEdit -from django.db.models import Avg, Count, Min, Sum -from django.db.models import Q -from .models import ReviewCloseVotes,ReOpenQuestionVotes,ReviewQuestionReOpenVotes -from .models import QuestionEditVotes,ReviewQuestionEdit,ReviewLowQualityPosts,ReviewFlagPost -from .models import ReviewFlagComment - - -def reviewAnswer_cp(request): - time = timezone.now() - timedelta(minutes=200) - post_ids_subquery_2 = Answer.objects.filter( - date__gt=time).values('answer_owner').annotate( - min_id=Min('id')).values('min_id') - next_blog = '' - if request.user.is_authenticated: - next_blog = Answer.objects.filter( - firstanswerreview__actions__isnull=True).exclude(answer_owner=request.user).filter( - id__in=post_ids_subquery_2).order_by('id').first() - return { - 'next_blog':next_blog - } - -def returnTrue(request): - time = timezone.now() - timedelta(minutes=200) - post_ids_subquery_2 = Answer.objects.filter( - date__gt=time).values('answer_owner').annotate( - min_id=Min('id')).values('min_id') - counting = 0 - if request.user.is_authenticated: - counting = Answer.objects.filter( - firstanswerreview__actions__isnull=True).exclude(answer_owner=request.user).filter( - id__in=post_ids_subquery_2).count() - - if counting >= 1: - can_show = True - else: - can_show = False - - return { - 'can_show':can_show, - } - -def reviewQuestion_cp(request): - time = timezone.now() - timedelta(minutes=200) - post_ids_subquery = '' - next_question = '' - - if request.user.is_authenticated: - post_ids_subquery = Question.objects.filter( - date__gt=time - ).values( - 'post_owner' - ).annotate( - min_id=Min('id') - ).values('min_id') - - next_question = Question.objects.filter( - firstquestionreview__QuestionReviewBy__isnull=True).exclude(post_owner=request.user).filter( - id__in=post_ids_subquery).order_by('id').first() - return { - 'next_question':next_question - } - - -def returnTrue_or_False(request): - time = timezone.now() - timedelta(minutes=200) - post_ids_subquery = '' - counting = 0 - if request.user.is_authenticated: - post_ids_subquery = Question.objects.filter( - date__gt=time - ).values( - 'post_owner' - ).annotate( - min_id=Min('id') - ).values('min_id') - - counting = Question.objects.filter(firstquestionreview__QuestionReviewBy__isnull=True).exclude(post_owner=request.user).filter(id__in=post_ids_subquery).count() - - if counting >= 1: - can_review = True - else: - can_review = False - - return { - 'can_review':can_review - } - -def reviewLateAnswer_cp(request): - isOlderThanFiveHours = timezone.now() - timedelta(minutes=10) - questionIDS = Answer.objects.filter( - lateanswerreview__L_AnswerActions__isnull=True).filter( - questionans__date__gt=timezone.now() - timedelta(hours=100)).filter( - date__gt=timezone.now() - timedelta(minutes=100)).order_by('id').first() - - # next_question = Question.objects.filter(firstquestionreview__QuestionReviewBy__isnull=True).filter(id__in=post_ids_subquery).order_by('id').first() - return { - 'questionIDS':questionIDS - } - -def returnLateReview_True_or_False(request): - # time = timezone.now() - timedelta(minutes=200) - isOlderThanFiveHours = timezone.now() - timedelta(minutes=10) - # lateAnswers = Question.objects.filter( - # date__gt=timezone.now() - timedelta(hours=100)).filter( - # answer__date_added__gt=isOlderThanFiveHours) - - counting = Answer.objects.filter( - lateanswerreview__L_AnswerActions__isnull=True).filter( - questionans__date__gt=timezone.now() - timedelta(hours=100)).filter( - date__gt=timezone.now() - timedelta(minutes=10)).count() - - if counting >= 1: - cal_LateRev = True - else: - cal_LateRev = False - - return { - 'cal_LateRev':cal_LateRev - } - - -def reviewClosedQuestions(request): - reviewCloseQuestionID = '' - if request.user.is_authenticated: - # Edit .exclude(question_to_closed__is_closed=True), Exclude those questions why are closed on the spot (In Question Detail) without waiting in review queue. - reviewCloseQuestionID = ReviewCloseVotes.objects.filter(is_completed=False).exclude(question_to_closed__is_closed=True).exclude(reviewed_by=request.user).order_by('id').first() - - return { - 'reviewCloseQuestionID':reviewCloseQuestionID, - } - -def returnTrue_or_FalseClosedQuestions(request): - counting = 0 - if request.user.is_authenticated: - # Edit .exclude(question_to_closed__is_closed=True), Exclude those questions why are closed on the spot (In Question Detail) without waiting in review queue. - counting = ReviewCloseVotes.objects.filter(is_completed=False).exclude(question_to_closed__is_closed=True).exclude(reviewed_by=request.user).count() - - if counting >= 1: - areClosedQuestions_Available = True - else: - areClosedQuestions_Available = False - - return { - 'areClosedQuestions_Available':areClosedQuestions_Available, - } - - -def reviewReOpenQuestion_sVotes(request): - reviewTo_ReOpenQuestionID = '' - if request.user.is_authenticated: - reviewTo_ReOpenQuestionID = ReviewQuestionReOpenVotes.objects.filter(is_completed=False).exclude(reopen_reviewed_by=request.user).order_by('id').first() - - return { - 'reviewTo_ReOpenQuestionID':reviewTo_ReOpenQuestionID, - } - -def returnTrue_or_FalseUnCloseQuestion_s(request): - counting = 0 - if request.user.is_authenticated: - counting = ReviewQuestionReOpenVotes.objects.filter(is_completed=False).exclude(reopen_reviewed_by=request.user).count() - - if counting >= 1: - questionToReOpen_available = True - else: - questionToReOpen_available = False - - return { - 'questionToReOpen_available':questionToReOpen_available, - } - -def reviewEditedPosts(request): - reviewEditedPts = '' - if request.user.is_authenticated: - reviewEditedPts = ReviewQuestionEdit.objects.filter(is_reviewed=False).exclude(edit_reviewed_by=request.user).order_by('id').first() - - return { - 'reviewEditedPts':reviewEditedPts, - } - -def returnTrue_or_FalseEditPosts(request): - counting = 0 - if request.user.is_authenticated: - counting = ReviewQuestionEdit.objects.filter(is_reviewed=False).exclude(edit_reviewed_by=request.user).count() - - if counting >= 1: - editQuestions_review_Available = True - else: - editQuestions_review_Available = False - - return { - 'editQuestions_review_Available':editQuestions_review_Available, - } - -def reviewLowQualityPosts(request): - reviewLowPts = '' - if request.user.is_authenticated: - reviewLowPts = ReviewLowQualityPosts.objects.filter(is_reviewed=False).exclude(reviewers=request.user).order_by('id').first() - - return { - 'reviewLowPts':reviewLowPts - } - -def returnTrue_or_FalseLowPosts(request): - counting = 0 - if request.user.is_authenticated: - counting = ReviewLowQualityPosts.objects.filter(is_reviewed=False).exclude(reviewers=request.user).count() - - if counting >= 1: - reviewLowPosts = True - else: - reviewLowPosts = False - - return { - 'reviewLowPosts':reviewLowPosts, - } - -def reviewFlagPosts(request): - reviewFlagPts = '' - if request.user.is_authenticated: - reviewFlagPts = ReviewFlagPost.objects.filter(flag_is_reviewed=False).exclude(flag_reviewed_by=request.user).order_by('id').first() - - return { - 'reviewFlagPts':reviewFlagPts - } - -def returnTrue_or_FalseFlagPosts(request): - counting = 0 - if request.user.is_authenticated: - counting = ReviewFlagPost.objects.filter(flag_is_reviewed=False).exclude(flag_reviewed_by=request.user).count() - - if counting >= 1: - is_available_FlagPosts = True - else: - is_available_FlagPosts = False - - return { - 'is_available_FlagPosts':is_available_FlagPosts - } - -def reviewFlagComments(request): - reviewFlagCmnts = '' - if request.user.is_authenticated: - reviewFlagCmnts = ReviewFlagComment.objects.filter(c_is_reviewed=False).exclude(c_flag_reviewed_by=request.user).order_by('id').first() - - return { - 'reviewFlagCmnts':reviewFlagCmnts - } - -def returnTrue_or_FalseFlagComments(request): - counting = 0 - if request.user.is_authenticated: - counting = ReviewFlagComment.objects.filter(c_is_reviewed=False).exclude(c_flag_reviewed_by=request.user).count() - - if counting >= 1: - is_available_FlagComments = True - else: - is_available_FlagComments = False - - return { - 'is_available_FlagComments':is_available_FlagComments - } \ No newline at end of file diff --git a/review/decorators.py b/review/decorators.py deleted file mode 100644 index e377e7b..0000000 --- a/review/decorators.py +++ /dev/null @@ -1,125 +0,0 @@ -from django.shortcuts import redirect,render -from django.contrib.auth import logout -from django.core.exceptions import PermissionDenied -import time -from qa.models import Question,Answer -from .models import ReviewQuestionEdit -from qa.models import Reputation -import datetime -from django.utils import timezone -from datetime import timedelta -from django.db.models import Count,BooleanField, ExpressionWrapper, Q,Exists, OuterRef,Avg, Min,Max, Sum,F, IntegerField, FloatField,Case, Value, When -# https://stackoverflow.com/questions/31197517/how-to-test-user-ownership-of-object-using-django-decorators - -def timeit(method): - - def timed(*args, **kw): - ts = time.time() - result = method(*args, **kw) - te = time.time() - print('%r (%r, %r) %2.2f sec' % (method.__name__, args, kw, te - ts)) - return result - - return timed - -def awardReputation(function): - def awardIt(request, *args, **kwargs): - if request.user.is_authenticated: - print("Printing Decorator Stuff \n") - pk = kwargs["question_id"] - getQuestion = Question.objects.get(pk=pk) - print(getQuestion) - print(pk) - user = request.user - print(user) - last_24_hours = timezone.now() - timedelta(hours=3) - getReputationEarnedInLast_24Hours = Reputation.objects.filter( - awarded_to=getQuestion.post_owner, date_earned__gte=last_24_hours).aggregate( - Sum('answer_rep_C'),Sum('question_rep_C')) - # if getReputationEarnedInLast_24Hours - d1 = getReputationEarnedInLast_24Hours['question_rep_C__sum'] - totling2 = getReputationEarnedInLast_24Hours['question_rep_C__sum'] if d1 else 0 - # print(getAlltheReputation) - s2 = getReputationEarnedInLast_24Hours['answer_rep_C__sum'] - totlingAnsRep2 = getReputationEarnedInLast_24Hours['answer_rep_C__sum'] if s2 else 0 - - print("Printing reputation earned in last 24 Hours :-:") - print(totling2 + totlingAnsRep2) - finalReputation = totling2 + totlingAnsRep2 - - if finalReputation >= 10: - request.user.profile.reputation += 500 - request.user.profile.save() - print("Award the Badge that have to award at 200 reputation earn in 24 Hours") - print("\n") - return function(request, *args, **kwargs) - else: - return redirect('users:login_request') - - return awardIt - - -def required_500_RepToReview(function): - def redirectFunc(request, *args, **kwargs): - if request.user.is_authenticated: - if request.user.profile.access_review_queues: - return function(request, *args, **kwargs) - else: - return render(request, 'Denied/requiredRep_500.html') - else: - return redirect('users:login_request') - - return redirectFunc - -def required_3000_RepToReview(function): -# def required_3000_RepToReview(function, obj): - def redirectFunc(request, *args, **kwargs): - if request.user.is_authenticated: - # if request.user == obj.post_owner or request.user == obj.answer_owner: - if request.user.profile.cast_close_AND_Reopen_votes: - return function(request, *args, **kwargs) - else: - # DIDN'T CREATE THE TEMPLATE YET. - return render(request, 'Denied/requiredRep_3000.html') - else: - return redirect('users:login_request') - - return redirectFunc - -def required_2000_RepToReview(function): - def redirectFunc(request, *args, **kwargs): - pk = kwargs['reviewquestionedit_id'] - getReviewing_item = ReviewQuestionEdit.objects.get(id=pk) - if getReviewing_item.question_to_view: - getQuestion = Question.objects.get(reviewquestionedit=pk) - else: - getAnswer = Answer.objects.get(reviewquestionedit=pk) - if request.user.is_authenticated: - if request.user.profile.review_close_votes: - print("Redirect through First Statement") - return function(request, *args, **kwargs) - elif getReviewing_item.question_to_view and request.user == getQuestion.post_owner: - print("Redirect through Second Statement") - return function(request, *args, **kwargs) - elif getReviewing_item.answer_to_view_if and request.user == getAnswer.answer_owner: - print("Redirect through Third Statement") - return function(request, *args, **kwargs) - else: - return render(request, 'Denied/requiredRep_2000.html') - else: - return redirect('users:login_request') - - return redirectFunc - - -def required_10000_RepToTools(function): - def redirectFunc(request, *args, **kwargs): - if request.user.is_authenticated: - if request.user.profile.accessTo_moderatorTools: - return function(request, *args, **kwargs) - else: - return render(request, 'Denied/requiredRep_10000.html') - else: - return redirect('users:login_request') - - return redirectFunc \ No newline at end of file diff --git a/review/forms.py b/review/forms.py deleted file mode 100644 index e36971f..0000000 --- a/review/forms.py +++ /dev/null @@ -1,152 +0,0 @@ -from django import forms -from .models import FirstAnswerReview,FirstQuestionReview,LateAnswerReview -# from .models import QuestionEdit -from .models import ReOpenQuestionVotes,ReviewQuestionReOpenVotes,CloseQuestionVotes -from .models import ReviewCloseVotes,ReviewQuestionEdit,ReviewLowQualityPosts -from .models import ReviewFlagPost,FlagPost,FlagComment,ReviewFlagComment - -class FlagQuestionForm(forms.ModelForm): - # like = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect) - - class Meta: - model = FlagPost - fields = ['actions_Flag_Q'] - widgets = { - 'actions_Flag_Q': forms.RadioSelect() - } - -class AnswerFlagForm(forms.ModelForm): - - class Meta: - model = FlagPost - fields = ['actions_Flag_Q'] - widgets = { - 'actions_Flag_Q': forms.RadioSelect() - } - -class ReviewFlagCommentForm(forms.ModelForm): - - class Meta: - model = ReviewFlagComment - fields = ['c_flagReviewActions'] - widgets = { - 'c_flagReviewActions': forms.RadioSelect() - } - -class CommentFlagForm(forms.ModelForm): - - class Meta: - model = FlagComment - fields = ['why_flagging'] - -class LowQualityReviewForm(forms.ModelForm): - - class Meta: - model = ReviewLowQualityPosts - fields = ['reviewActions'] - widgets = { - 'reviewActions': forms.RadioSelect() - } - -class FlagPostForm(forms.ModelForm): - - class Meta: - model = ReviewFlagPost - fields = ['flagReviewActions'] - widgets = { - 'flagReviewActions': forms.RadioSelect() - } - -# class ReviewForm(forms.ModelForm): - -# class Meta: -# model = Review -# fields = ['actions'] -# widgets = { -# 'actions': forms.RadioSelect() -# } - -class SuggesstedEditForm(forms.ModelForm): - - class Meta: - model = ReviewQuestionEdit - fields = ['reviewActions'] - widgets = { - 'reviewActions': forms.RadioSelect() - } - - -class CloseForm_Q(forms.ModelForm): - - class Meta: - model = CloseQuestionVotes - fields = ['why_closing','duplicate_of'] - widgets = { - 'why_closing': forms.RadioSelect() - } - - -class AnswerReviewForm(forms.ModelForm): - - class Meta: - model = FirstAnswerReview - fields = ['actions'] - widgets = { - 'actions': forms.RadioSelect() - } - -class QuestionReviewForm(forms.ModelForm): - - class Meta: - model = FirstQuestionReview - fields = ['questionActions'] - widgets = { - 'questionActions': forms.RadioSelect() - } - -class LateAnswerReviewForm(forms.ModelForm): - - class Meta: - model = LateAnswerReview - fields = ['L_AnswerActions'] - widgets = { - 'L_AnswerActions': forms.RadioSelect() - } - -# class EditReviewQuestion(forms.ModelForm): - -# class Meta: -# model = QuestionEdit -# fields = ['approval_from_user'] -# widgets = { -# 'approval_from_user': forms.RadioSelect() -# } - - - - -class ReviewReOpenForm(forms.ModelForm): - - class Meta: - model = ReviewQuestionReOpenVotes - fields = ['reviewActions'] - widgets = { - 'reviewActions': forms.RadioSelect() - } -class VoteToReOpenForm(forms.ModelForm): - - class Meta: - model = ReOpenQuestionVotes - fields = ['why_opening'] - widgets = { - 'why_opening' : forms.RadioSelect() - } - -class ReviewCloseForm(forms.ModelForm): - - class Meta: - model = ReviewCloseVotes - fields = ['reviewActions'] - widgets = { - 'reviewActions' : forms.RadioSelect() - } diff --git a/review/migrations/0001_initial.py b/review/migrations/0001_initial.py deleted file mode 100644 index 4fd60de..0000000 --- a/review/migrations/0001_initial.py +++ /dev/null @@ -1,218 +0,0 @@ -# Generated by Django 3.2.6 on 2022-01-04 20:58 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('qa', '0001_initial'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='CloseQuestionVotes', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date', models.DateTimeField(auto_now_add=True)), - ('duplicate_of', models.CharField(blank=True, default='', max_length=1000, null=True)), - ('why_closing', models.CharField(choices=[('DUPLICATE', 'duplicate'), ('OPINION_BASED', 'Opinion Based'), ('OFF_TOPIC', 'Off Topic'), ('NEEDS_DETAILS_OR_CLARITY', 'Needs details or Clarity'), ('NEED_MORE_FOCUS', 'Need More Focus')], max_length=30)), - ('how_many_votes_on_Close', models.IntegerField(default=0)), - ('how_many_votes_on_Leave_open', models.IntegerField(default=0)), - ('ended', models.BooleanField(blank=True, default=False, null=True)), - ('question_to_closing', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qa.question')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.CreateModel( - name='FlagComment', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('why_flagging', models.CharField(choices=[('HARRASSMENT', 'Harrassment'), ('UNKIND', 'UnKind'), ('NOT_NEEDED', 'No longer Needed'), ('SOMETHING_ELSE', 'Something Else')], max_length=30)), - ('something_else', models.CharField(blank=True, max_length=30, null=True)), - ('date', models.DateTimeField(auto_now_add=True)), - ('how_many_votes_on_notNeeded_unkind', models.IntegerField(default=0)), - ('how_many_votes_on_harr_else', models.IntegerField(default=0)), - ('ended', models.BooleanField(default=False)), - ('comment_flagged_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ('comment_of', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qa.commentq')), - ], - ), - migrations.CreateModel( - name='FlagPost', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('actions_Flag_Q', models.CharField(choices=[('SPAM', 'Spam'), ('RUDE_OR_ABUSIVE', 'Rude or Abusive'), ('NOT_AN_ANSWER', 'Not an Answer'), ('IN_NEED_OF_MODERATOR_INTERVATION', 'In Need of Moderator Intervation'), ('VERY_LOW_QUALITY', 'Very Low Quality'), ('NEEDS_IMPROVEMENT', 'Needs Improvement'), ('DUPLICATE', 'Duplicate'), ('OPINION_BASED', 'Opinion Based'), ('NEED_MORE_FOCUS', 'Need More Focus# = QUESTION'), ('NEED_ADDITIONAL_DETAILS', 'Needs Additional Details'), ('A_COMMUNITY_SPECIFIC_REASON', 'A Community specific reason'), ('ABOUT_GENERAL_COMPUTING_HAR', 'About General'), ('ABOUT_PROFESSIONAL', 'About Professional'), ('SEEKING_RECCOMENDATIONS', 'Seeking Reccomendations'), ('NEED_DEBUGGING', 'Need Debugging Details'), ('NOT_REPRODUCIBLE', 'Not Reproducible'), ('BLANTANLTY_OR_CLARITY', 'Blantanlity or Clarity')], max_length=300)), - ('how_many_votes_on_spamANDRude', models.IntegerField(default=0)), - ('how_many_votes_on_notAnAnswer', models.IntegerField(default=0)), - ('how_many_votes_on_others', models.IntegerField(default=0)), - ('flagged_at', models.DateTimeField(auto_now_add=True)), - ('ended', models.BooleanField(default=False)), - ('answer_forFlag', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.answer')), - ('flagged_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ('question_forFlag', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.question')), - ], - ), - migrations.CreateModel( - name='LowQualityPostsCheck', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('suggested_through', models.CharField(choices=[('User', 'User'), ('Automatic', 'Automatic')], max_length=30)), - ('why_low_quality', models.CharField(choices=[('Answer_Less_Than_200', 'Answer is Less than 200 Words'), ('Question_Less_Than_200', 'Question is Less than 200 Words'), ('Comment_As_Answer', 'Comment as Answer')], max_length=30)), - ('is_completed', models.BooleanField(default=False)), - ('how_many_votes_on_OK', models.IntegerField(default=0)), - ('how_many_votes_on_deleteIt', models.IntegerField(default=0)), - ('how_many_votes_on_close', models.IntegerField(default=0)), - ('at', models.DateTimeField(auto_now_add=True)), - ('low_ans_is', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.answer')), - ('low_is', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.question')), - ('suggested_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.CreateModel( - name='MyModel', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('this', models.CharField(default='', max_length=30)), - ], - ), - migrations.CreateModel( - name='QuestionEditVotes', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('edited_suggested_at', models.DateTimeField(auto_now_add=True)), - ('how_many_votes_on_approve', models.IntegerField(default=0)), - ('how_many_votes_on_reject', models.IntegerField(default=0)), - ('rev_Action', models.CharField(blank=True, max_length=30, null=True)), - ('is_completed', models.BooleanField(default=False)), - ('edit_suggested_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ('edited_answer', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.answer')), - ('edited_question', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.question')), - ], - ), - migrations.CreateModel( - name='ReOpenQuestionVotes', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date_opening', models.DateTimeField(auto_now_add=True)), - ('why_opening', models.CharField(choices=[('IT_IS_BETTER_NOW', 'It is Better Now'), ('CLOSED_BY_MISTAKE', 'Closed By Mistake'), ('OTHER', 'Other')], max_length=30)), - ('if_other', models.CharField(blank=True, default='', max_length=30, null=True)), - ('how_many_votes_on_Open', models.IntegerField(default=0)), - ('how_many_votes_on_Leave_close', models.IntegerField(default=0)), - ('ended', models.BooleanField(blank=True, default=False, null=True)), - ('question_to_opening', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qa.question')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.CreateModel( - name='ReviewQuestionReOpenVotes', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('reviewActions', models.CharField(blank=True, choices=[('OPEN', 'Open'), ('LEAVE_CLOSED', 'Leave Closed'), ('EDIT', 'EDIT')], max_length=30, null=True)), - ('is_completed', models.BooleanField(default=False)), - ('what_happend', models.CharField(blank=True, default='', max_length=30, null=True)), - ('date', models.DateTimeField(auto_now_add=True)), - ('question_opened', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qa.question')), - ('reopen_reviewed_by', models.ManyToManyField(related_name='reopen_reviewed_by', to=settings.AUTH_USER_MODEL)), - ('review_of', models.ForeignKey(default='', null=True, on_delete=django.db.models.deletion.CASCADE, to='review.reopenquestionvotes')), - ], - ), - migrations.CreateModel( - name='ReviewQuestionEdit', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date_reviewed', models.DateTimeField(auto_now_add=True)), - ('reviewActions', models.CharField(blank=True, choices=[('Approve', 'Approve'), ('Improve_Edit', 'Improve Edit'), ('Reject_and_Edit', 'Reject and Edit'), ('Reject', 'Reject'), ('Edit', 'Edit'), ('Skip', 'Skip')], max_length=30, null=True)), - ('is_reviewed', models.BooleanField(blank=True, default=False, null=True)), - ('answer_to_view_if', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.answer')), - ('edit_reviewed_by', models.ManyToManyField(related_name='edit_reviewed_by', to=settings.AUTH_USER_MODEL)), - ('question_to_view', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.question')), - ('queue_of', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='review.questioneditvotes')), - ], - ), - migrations.CreateModel( - name='ReviewLowQualityPosts', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('reviewActions', models.CharField(blank=True, choices=[('Looks_OK', 'Looks Ok'), ('Edit', 'Edit'), ('Recommend_Delete', 'Recommend Delete'), ('Recommend_Close', 'Recommend Close'), ('Skip', 'Skip')], max_length=30, null=True)), - ('is_reviewed', models.BooleanField(default=False)), - ('reviewed_at', models.DateTimeField(auto_now_add=True)), - ('is_answer', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.answer')), - ('is_question', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.question')), - ('review_of', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='review.lowqualitypostscheck')), - ('reviewers', models.ManyToManyField(related_name='reviewers', to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.CreateModel( - name='ReviewFlagPost', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('flagReviewActions', models.CharField(choices=[('DELETE_IT', 'Delete It'), ('STAY_AS_IT_IS', 'No Actions Needed, Stay Open'), ('CLOSE_IT', 'Close It'), ('SKIP', 'Skip')], max_length=30)), - ('flag_is_reviewed', models.BooleanField(blank=True, default=False, null=True)), - ('flag_answer_to_view_if', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.answer')), - ('flag_of', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='review.flagpost')), - ('flag_question_to_view', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qa.question')), - ('flag_reviewed_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.CreateModel( - name='ReviewFlagComment', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('c_flagReviewActions', models.CharField(choices=[('DELETE_IT', 'Delete It'), ('STAY_AS_IT_IS', 'No Actions Needed'), ('SKIP', 'Skip')], max_length=30)), - ('c_is_reviewed', models.BooleanField(default=False)), - ('c_flag_reviewed_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ('flag_of', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qa.commentq')), - ('review_of', models.ForeignKey(default='', null=True, on_delete=django.db.models.deletion.CASCADE, to='review.flagcomment')), - ], - ), - migrations.CreateModel( - name='ReviewCloseVotes', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('reviewActions', models.CharField(blank=True, choices=[('Close', 'Close'), ('Leave_open', 'Leave_open'), ('Edit', 'Edit')], max_length=30, null=True)), - ('is_completed', models.BooleanField(default=False)), - ('how_Ended', models.CharField(blank=True, choices=[('THROUGH_CLOSE', 'Through Close'), ('THROUGH_LEAVE_OPEN', 'Through Leave Open')], max_length=30, null=True)), - ('finalResult', models.CharField(blank=True, default='', max_length=30, null=True)), - ('date', models.DateTimeField(auto_now_add=True)), - ('question_to_closed', models.ForeignKey(default='', on_delete=django.db.models.deletion.CASCADE, to='qa.question')), - ('review_of', models.ForeignKey(default='', null=True, on_delete=django.db.models.deletion.CASCADE, to='review.closequestionvotes')), - ('reviewed_by', models.ManyToManyField(related_name='reviewed_by', to=settings.AUTH_USER_MODEL)), - ], - ), - migrations.CreateModel( - name='LateAnswerReview', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('L_AnswerActions', models.CharField(choices=[('LOOKS_OK', 'Looks Ok'), ('EDIT', 'Edit'), ('RECOMMEND_DELETION', 'Recommend Deletion'), ('SKIPPED', 'Skip')], max_length=30, null=True, verbose_name='Late Answers Review')), - ('date', models.DateTimeField(auto_now_add=True)), - ('L_AnswerReviewdBy', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ('L_answerReview', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qa.answer')), - ], - ), - migrations.CreateModel( - name='FirstQuestionReview', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date', models.DateTimeField(auto_now_add=True)), - ('questionActions', models.CharField(choices=[('LOOKS_OK', 'Looks Ok'), ('EDIT', 'Edit'), ('SHARE_FEEDBACK', 'Share Feedback'), ('SKIPPED', 'Skip')], max_length=30, null=True)), - ('QuestionReviewBy', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ('questionReview', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qa.question')), - ], - ), - migrations.CreateModel( - name='FirstAnswerReview', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('actions', models.CharField(choices=[('LOOKS_OK', 'Looks Ok'), ('EDIT', 'Edit'), ('SHARE_FEEDBACK', 'Share Feedback'), ('SKIPPED', 'Skip')], max_length=30, null=True)), - ('date', models.DateTimeField(auto_now_add=True)), - ('AnswerReviewedBy', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), - ('answerReview', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qa.answer')), - ], - ), - ] diff --git a/review/migrations/__init__.py b/review/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/review/models.py b/review/models.py deleted file mode 100644 index 802d5e4..0000000 --- a/review/models.py +++ /dev/null @@ -1,498 +0,0 @@ -from django.db import models -from django.contrib.auth.models import User -from django.urls import reverse -import datetime -from django.utils import timezone -from datetime import timedelta -from qa.models import Answer,Question -from simple_history.models import HistoricalRecords -from qa.models import CommentQ - -REVIEW_ANSWER_ACTION_CHOICES = [ - - ('LOOKS_OK','Looks Ok'), - ('EDIT', 'Edit'), - ('SHARE_FEEDBACK','Share Feedback'), - ('SKIPPED','Skip'), - -] - -# Need 500 Rep -class FirstAnswerReview(models.Model): - AnswerReviewedBy = models.ForeignKey(User, on_delete=models.CASCADE) - answerReview = models.ForeignKey(Answer, on_delete=models.CASCADE) - actions = models.CharField(max_length=30, choices=REVIEW_ANSWER_ACTION_CHOICES,null=True) - # testEdit = models.BooleanField(default=False) - date = models.DateTimeField(auto_now_add=True) - - def __str__(self): - return f'[Answer] - {self.answerReview}' - -REVIEW_QUESTION_ACTIONS_CHOICES = [ - - ('LOOKS_OK','Looks Ok'), - ('EDIT', 'Edit'), - ('SHARE_FEEDBACK','Share Feedback'), - ('SKIPPED','Skip'), - -] - -# Need 500 Rep -class FirstQuestionReview(models.Model): - QuestionReviewBy = models.ForeignKey(User, on_delete=models.CASCADE) - questionReview = models.ForeignKey(Question, on_delete=models.CASCADE) - date = models.DateTimeField(auto_now_add=True) - questionActions = models.CharField(max_length=30, choices=REVIEW_QUESTION_ACTIONS_CHOICES,null=True) - - def __str__(self): - return f"[QUESTION] - {self.QuestionReviewBy}" - -LATE_ANSWER_ACTIONS_CHOICES = [ - - ('LOOKS_OK','Looks Ok'), - ('EDIT', 'Edit'), - ('RECOMMEND_DELETION','Recommend Deletion'), - ('SKIPPED','Skip'), - -] - -# Need 500 Rep -class LateAnswerReview(models.Model): - L_AnswerReviewdBy = models.ForeignKey(User, on_delete=models.CASCADE) - L_answerReview = models.ForeignKey(Answer, on_delete=models.CASCADE) - L_AnswerActions = models.CharField(max_length=30, choices=LATE_ANSWER_ACTIONS_CHOICES,null=True, verbose_name='Late Answers Review') - date = models.DateTimeField(auto_now_add=True) - - def __str__(self): - return f"[ANSWER] - {self.L_answerReview}" - -APPROVAL_CHOICES = [ - - ('None','None'), - ('Approve', 'Approve'), - ('Reject', 'Reject'), - -] - -# QUESTION EDIT REVIEW - START==================================================== - -# Need 2000 Rep -class QuestionEditVotes(models.Model): - edit_suggested_by = models.ForeignKey(User, on_delete=models.CASCADE) - edited_question = models.ForeignKey(Question, on_delete=models.CASCADE, null=True, blank=True) - edited_answer = models.ForeignKey(Answer, on_delete=models.CASCADE, null=True, blank=True) - edited_suggested_at = models.DateTimeField(auto_now_add=True) - how_many_votes_on_approve = models.IntegerField(default=0) - how_many_votes_on_reject = models.IntegerField(default=0) - rev_Action = models.CharField(max_length=30, blank=True, null=True) - is_completed = models.BooleanField(default=False) - - def __str__(self): - if self.edited_question: - return f"[Question] = {self.edited_question.title} = {self.rev_Action} = {self.is_completed}" - else: - return f"[Answer] = {self.rev_Action} = {self.is_completed}" - - # return f"{self.edited_question.title} = {self.rev_Action}" - -EDIT_REVIEW_ACTIONS = [ - - ('Approve', 'Approve'), # DONE - ('Improve_Edit' , 'Improve Edit'), # DONE - ('Reject_and_Edit', 'Reject and Edit'), - ('Reject', 'Reject'), # DONE - ('Edit', 'Edit'), # DONE - ('Skip', 'Skip'), # DONE - -] - -# Need 2000 Rep -class ReviewQuestionEdit(models.Model): - question_to_view = models.ForeignKey(Question, on_delete=models.CASCADE, blank=True, null=True) - answer_to_view_if = models.ForeignKey(Answer, on_delete=models.CASCADE, blank=True, null=True) - edit_reviewed_by = models.ManyToManyField(User, related_name="edit_reviewed_by") - queue_of = models.ForeignKey(QuestionEditVotes, on_delete=models.CASCADE, blank=True, null=True) - date_reviewed = models.DateTimeField(auto_now_add=True) - reviewActions = models.CharField(max_length=30, choices=EDIT_REVIEW_ACTIONS, blank=True, null=True) - is_reviewed = models.BooleanField(default=False, blank=True, null=True) - - # def get_absolute_url(self): - # # 'slug':self.slug}) - # return reverse('review:reviewSuggesstedEdit', kwargs={'pk': self.queue_of.edited_question.id, }) - - - def __str__(self): - if self.is_reviewed: - return f"Reviewed" - else: - return f"On-Going" - - # def get_absolute_url(self): - # return reverse('review:reviewSuggesstedEdit', kwargs={'pk': self.ReviewQuestionEdit.id}) - -# QUESTION EDIT REVIEW - END==================================================== - - - -# CLOSE QUESTION VOTES============================================================ - - -CLOSE_ACTIONS_Q = [ - - ('DUPLICATE','duplicate'), - ('OPINION_BASED','Opinion Based'), - ('OFF_TOPIC','Off Topic'), - ('NEEDS_DETAILS_OR_CLARITY','Needs details or Clarity'), - ('NEED_MORE_FOCUS','Need More Focus'), - -] - -# Need 3000 Rep -class CloseQuestionVotes(models.Model): - user = models.ForeignKey(User, on_delete=models.CASCADE) - question_to_closing = models.ForeignKey(Question,on_delete=models.CASCADE) - date = models.DateTimeField(auto_now_add=True) - # CHANGE duplicate_of's CharField into URLField - duplicate_of = models.CharField(max_length=1000, default='', null=True, blank=True) - why_closing = models.CharField(max_length=30,choices=CLOSE_ACTIONS_Q) - how_many_votes_on_Close = models.IntegerField(default=0) - how_many_votes_on_Leave_open = models.IntegerField(default=0) - ended = models.BooleanField(default=False, blank=True, null=True) - - def __str__(self): - return f"{self.user} - {self.question_to_closing.title} [WHY] - {self.why_closing}" - - - -CLOSE_REVIEW_ACTION_CHOICES = [ - - ('Close', 'Close'), - ("Leave_open", "Leave_open"), - ('Edit', 'Edit'), - -] - -# class ReviewClosed_Question(models.Model): - -ENDED_CHOICES = [ - - ('THROUGH_CLOSE', 'Through Close'), - ('THROUGH_LEAVE_OPEN', 'Through Leave Open') - -] - -# Need 3000 Rep -class ReviewCloseVotes(models.Model): - question_to_closed = models.ForeignKey(Question, on_delete=models.CASCADE,default='') - review_of = models.ForeignKey(CloseQuestionVotes, on_delete=models.CASCADE,default='', null=True) - reviewActions = models.CharField(max_length=30,choices=CLOSE_REVIEW_ACTION_CHOICES, blank=True, null=True) - reviewed_by = models.ManyToManyField(User, related_name="reviewed_by") - is_completed = models.BooleanField(default=False) - how_Ended = models.CharField(max_length=30, choices=ENDED_CHOICES, blank=True, null=True) - finalResult = models.CharField(max_length=30, default='', blank=True, null=True) - date = models.DateTimeField(auto_now_add=True) - - def __str__(self): - if self.is_completed: - return f"{self.how_Ended} - Reviewed" - else: - return f"{self.how_Ended} - OnGoing" - - @property - def get_close_votes(self): - return self.review_of.how_many_votes_on_Close - - @property - def get_lveopen_votes(self): - return self.review_of.how_many_votes_on_Close - - -# CLOSE QUESTION VOTES============================================================ - - - -# REOPEN QUESTION VOTES============================================================ - -REOPEN_CLOSED_Q_CHOICES = [ - - ('IT_IS_BETTER_NOW', 'It is Better Now'), - ('CLOSED_BY_MISTAKE', 'Closed By Mistake'), - ('OTHER', 'Other') - -] - -REOPEN_ENDED_CHOICES = [ - - ('THROUGH_OPENED', 'Through Opened'), - ('THROUGH_LEAVE_CLOSED', 'Through Leave Closed'), - -] - -# Need 3000 Rep -class ReOpenQuestionVotes(models.Model): - user = models.ForeignKey(User, on_delete=models.CASCADE) - question_to_opening = models.ForeignKey(Question, on_delete=models.CASCADE) - date_opening = models.DateTimeField(auto_now_add=True) - why_opening = models.CharField(max_length=30, choices=REOPEN_CLOSED_Q_CHOICES) - if_other = models.CharField(max_length=30, default='', null=True, blank=True) - how_many_votes_on_Open = models.IntegerField(default=0) - how_many_votes_on_Leave_close = models.IntegerField(default=0) - # how_Ended = models.CharField(max_length=30, choices=REOPEN_ENDED_CHOICES, blank=True, null=True) - ended = models.BooleanField(default=False, blank=True, null=True) - - def __str__(self): - return f"{self.why_opening} = {self.question_to_opening.title}" - -REVIEW_REOPEN_ACTION_CHOICES = [ - - ('OPEN', 'Open'), - ('LEAVE_CLOSED', 'Leave Closed'), - ('EDIT', 'EDIT'), -] - -# Need 3000 Rep -class ReviewQuestionReOpenVotes(models.Model): - question_opened = models.ForeignKey(Question, on_delete=models.CASCADE) - review_of = models.ForeignKey(ReOpenQuestionVotes, on_delete=models.CASCADE,default='', null=True) - reviewActions = models.CharField(max_length=30, choices=REVIEW_REOPEN_ACTION_CHOICES, blank=True, null=True) - reopen_reviewed_by = models.ManyToManyField(User, related_name='reopen_reviewed_by') - is_completed = models.BooleanField(default=False) - what_happend = models.CharField(max_length=30, default='',blank=True, null=True) - date = models.DateTimeField(auto_now_add=True) - - def __str__(self): - if self.is_completed: - return f"{self.review_of.question_to_opening.title} - Reviewed" - else: - return f"{self.review_of.question_to_opening.title} - On-Going" - - @property - def count_open_votes(self): - return self.review_of.how_many_votes_on_Open - - @property - def count_leaveClose_votes(self): - return self.review_of.how_many_votes_on_Leave_close - -# REOPEN QUESTION VOTES============================================================ - -LOW_QUALITY_CHOICES = [ - - ('Looks_OK', 'Looks Ok'), - ('Edit', 'Edit'), - ('Recommend_Delete', 'Recommend Delete'), - ('Recommend_Close', 'Recommend Close'), - ('Skip', 'Skip'), - -] - -WHY_LOW_QUALTY = [ - - ('Answer_Less_Than_200', 'Answer is Less than 200 Words'), - ('Question_Less_Than_200', 'Question is Less than 200 Words'), - ('Comment_As_Answer', 'Comment as Answer'), - -] - -SUGGEST_CHOICES = [ - - ('User', 'User'), - ('Automatic', 'Automatic') - -] - -# Need 2000 Rep -class LowQualityPostsCheck(models.Model): - suggested_by = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True) - suggested_through = models.CharField(max_length=30, choices=SUGGEST_CHOICES) - low_is = models.ForeignKey(Question, on_delete=models.CASCADE, null=True, blank=True) - low_ans_is = models.ForeignKey(Answer, on_delete=models.CASCADE, null=True, blank=True) - why_low_quality = models.CharField(max_length=30, choices=WHY_LOW_QUALTY) - is_completed = models.BooleanField(default=False) - - how_many_votes_on_OK = models.IntegerField(default=0) - how_many_votes_on_deleteIt = models.IntegerField(default=0) - how_many_votes_on_close = models.IntegerField(default=0) - - at = models.DateTimeField(auto_now_add=True) - - def __str__(self): - if self.low_is: - return f"[Q] {self.why_low_quality} - [Q] - {self.low_is.title}" - else: - return f"[A] {self.why_low_quality} - [A] - {self.low_ans_is.body}" - - - -# Need 2000 Rep -class ReviewLowQualityPosts(models.Model): - reviewers = models.ManyToManyField(User, related_name="reviewers") - review_of = models.ForeignKey(LowQualityPostsCheck, on_delete=models.CASCADE) - reviewActions = models.CharField(max_length=30, choices=LOW_QUALITY_CHOICES, blank=True, null=True) - is_answer = models.ForeignKey(Answer, on_delete=models.CASCADE, blank=True, null=True) - is_question = models.ForeignKey(Question, on_delete=models.CASCADE, blank=True, null=True) - is_reviewed = models.BooleanField(default=False) - reviewed_at = models.DateTimeField(auto_now_add=True) - - def __str__(self): - if self.is_reviewed: - return f"Reviewed" - else: - return f"Pending" - -# ---------------------------------------FLAG Q/A-------START - -Q_Flags_Choices = [ - - ('SPAM', 'Spam'), # Automatic = POST - ('RUDE_OR_ABUSIVE', 'Rude or Abusive'), # Automatic = POST - ('NOT_AN_ANSWER', 'Not an Answer'), # Only For Answer = ANSWER - ('IN_NEED_OF_MODERATOR_INTERVATION', 'In Need of Moderator Intervation'), # Can only seen by moderators = POST - # It needs a text field. - # ('NEED_ADDITIONAL_DETAILS','Needs Additional Details'), # = QUESTION - # ('NEED_TO_MORE_FOCUSED','Needs to be More Focused'), # Will be = QUESTION - - ('VERY_LOW_QUALITY', 'Very Low Quality'), # Will be pushed to Low Quality Posts = QUESTION - - - ('NEEDS_IMPROVEMENT', 'Needs Improvement'),# = QUESTION - ('DUPLICATE', 'Duplicate'), # ----Close Review---- - ('OPINION_BASED', 'Opinion Based'),# = QUESTION # ----Close Review---- - ('NEED_MORE_FOCUS', 'Need More Focus# = QUESTION'),# = QUESTION # ----Close Review---- - ('NEED_ADDITIONAL_DETAILS','Needs Additional Details'), # = QUESTION # ----Close Review---- - ('A_COMMUNITY_SPECIFIC_REASON', 'A Community specific reason'),# = QUESTION - - ('ABOUT_GENERAL_COMPUTING_HAR', 'About General'),# = QUESTION # ----Close Review---- - ('ABOUT_PROFESSIONAL', 'About Professional'),# = QUESTION # ----Close Review---- - ('SEEKING_RECCOMENDATIONS', 'Seeking Reccomendations'),# = QUESTION # ----Close Review---- - ('NEED_DEBUGGING', 'Need Debugging Details'),# = QUESTION # ----Close Review---- - ('NOT_REPRODUCIBLE', 'Not Reproducible'),# = QUESTION # ----Close Review---- - ('BLANTANLTY_OR_CLARITY', 'Blantanlity or Clarity'),# = QUESTION # ----Close Review---- - -] - -""" - -needs improvement - - a community specific reason - - about general computing hardware and software - - about professional server-or networking-related infrastructure administration - - seeking recommendations for books - - need deubugging details - - not reproducible or was caused by type - - blatanlty off-topic - - needs details or clarity - - needs more focus - - opinion based - -""" - -""" -Don't Review Spam and Rude, just count them and if post -got 3 of them. - -Not an anser and Very low quality and NEED_TO_MORE_FOCUSED and NEED_ADDITIONAL_DETAILS are of Very Low Qualities thing. - -IN_NEED_OF_MODERATOR_INTERVATION will only see to moderators. -""" - -class FlagPost(models.Model): - flagged_by = models.ForeignKey(User, on_delete=models.CASCADE) - question_forFlag = models.ForeignKey(Question, on_delete=models.CASCADE, blank=True, null=True) - answer_forFlag = models.ForeignKey(Answer, on_delete=models.CASCADE, blank=True, null=True) - actions_Flag_Q = models.CharField(max_length=300, choices=Q_Flags_Choices) - - how_many_votes_on_spamANDRude = models.IntegerField(default=0) - how_many_votes_on_notAnAnswer = models.IntegerField(default=0) - how_many_votes_on_others = models.IntegerField(default=0) - - flagged_at = models.DateTimeField(auto_now_add=True) - ended = models.BooleanField(default=False) - - def __str__(self): - return f"[WHY-FLAG] - {self.actions_Flag_Q}" - -FLAG_REVIEW_CHOICES = [ - - ('DELETE_IT', 'Delete It'), - ('STAY_AS_IT_IS', 'No Actions Needed, Stay Open'), - ('CLOSE_IT', 'Close It'), - ('SKIP', 'Skip') - -] - -class ReviewFlagPost(models.Model): - flag_question_to_view = models.ForeignKey(Question, on_delete=models.CASCADE, blank=True, null=True) - flag_answer_to_view_if = models.ForeignKey(Answer, on_delete=models.CASCADE, blank=True, null=True) - flag_reviewed_by = models.ForeignKey(User, on_delete=models.CASCADE, blank=True, null=True) - flag_of = models.ForeignKey(FlagPost, on_delete=models.CASCADE, blank=True, null=True) - flagReviewActions = models.CharField(max_length=30, choices=FLAG_REVIEW_CHOICES) - flag_is_reviewed = models.BooleanField(default=False, blank=True, null=True) - - def __str__(self): - if self.flag_is_reviewed: - return f"Reviewed" - else: - return f"On-Going" - -# ---------------------------------------FLAG Q/A-------END - - - - - -# ---------------------------------------FLAG COMMENT-------START - -COMMENT_FLAG_CHOICES = [ - - ('HARRASSMENT', 'Harrassment'), - ('UNKIND', 'UnKind'), - ('NOT_NEEDED', 'No longer Needed'), - ('SOMETHING_ELSE', 'Something Else'), - -] - -class FlagComment(models.Model): - comment_of = models.ForeignKey(CommentQ, on_delete=models.CASCADE) - comment_flagged_by = models.ForeignKey(User, on_delete=models.CASCADE) - why_flagging = models.CharField(max_length=30, choices=COMMENT_FLAG_CHOICES) - something_else = models.CharField(max_length=30, blank=True, null=True) - date = models.DateTimeField(auto_now_add=True) - how_many_votes_on_notNeeded_unkind = models.IntegerField(default=0) - how_many_votes_on_harr_else = models.IntegerField(default=0) - ended = models.BooleanField(default=False) - - def __str__(self): - return f"{self.comment_of}" - - -C_FLAG_ACTIONS = [ - - ('DELETE_IT', 'Delete It'), - ('STAY_AS_IT_IS', 'No Actions Needed'), - ('SKIP', 'Skip'), - -] - -class ReviewFlagComment(models.Model): - flag_of = models.ForeignKey(CommentQ, on_delete=models.CASCADE) - review_of = models.ForeignKey(FlagComment, on_delete=models.CASCADE, default='',null=True) - c_flag_reviewed_by = models.ForeignKey(User, on_delete=models.CASCADE, null=True) - c_flagReviewActions = models.CharField(max_length=30, choices=C_FLAG_ACTIONS) - c_is_reviewed = models.BooleanField(default=False) - - def __str__(self): - if self.c_is_reviewed: - return f"Reviewed" - else: - return f"On-Going" - -# ---------------------------------------FLAG COMMENT------END - - - -class MyModel(models.Model): - this = models.CharField(max_length=30, default='') - -# class MyModel_1(models.Model): -# field_2 = models.CharField(max_length=30, default='') \ No newline at end of file diff --git a/review/templatetags/__init__.py b/review/templatetags/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/review/templatetags/review_tags.py b/review/templatetags/review_tags.py deleted file mode 100644 index 073dcba..0000000 --- a/review/templatetags/review_tags.py +++ /dev/null @@ -1,12 +0,0 @@ -from django import template - -register = template.Library() - -@register.filter -def sortIt(queryset, order): - return queryset.order_by(order)[:5] - - -# @register.filter -# def filterIt(queryset, by): -# return queryset.filter(by) \ No newline at end of file diff --git a/review/tests.py b/review/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/review/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/review/urls.py b/review/urls.py deleted file mode 100644 index 0b0390d..0000000 --- a/review/urls.py +++ /dev/null @@ -1,62 +0,0 @@ -from django.urls import path -from django.conf import settings -from django.conf.urls.static import static -from . import views - -app_name = 'review' - -urlpatterns = [ - - path('review_FirstAns//', views.review_FirstAns, name='review_FirstAns'), - - path('review_answer_page/', views.review_answer_page, name='review_answer_page'), - - path('editFromReview//', views.editFromReview, name='editFromReview'), - - path('post/ajax/EditAllowanceAjaxForm//', views.EditAllowanceAjaxForm, name = "EditAllowanceAjaxForm"), - - path('post/ajax/EditQuestionAjax//', views.EditQuestionAjax, name = "EditQuestionAjax"), - - path('review_FirstQns//', views.review_FirstQns, name='review_FirstQns'), - - path('review_LateAnswers//', views.review_LateAnswers, name='review_LateAnswers'), - - # path('reviewEdited_questions//', views.reviewEdited_questions, name='reviewEdited_questions'), - - path('reviewClosedQuestions//', views.reviewClosedQuestions, name='reviewClosedQuestions'), - - path('reOpen_Question_Review//', views.reOpen_Question_Review, name='reOpen_Question_Review'), - - # path('edit_in_Closing//', views.edit_in_Closing, name='edit_in_Closing'), - - path('edit_in_Closing_Ajax//', views.edit_in_Closing_Ajax, name='edit_in_Closing_Ajax'), - - # path('reviewCloseInThis//', views.reviewCloseInThis, name='reviewCloseInThis'), - - # path('reOpenReview//', views.reOpenReview, name='reOpenReview'), - - path('retract_Close_Flag//', views.retract_Close_Flag, name='retract_Close_Flag'), - - path('reviewSuggesstedEdit//', views.reviewSuggesstedEdit, name='reviewSuggesstedEdit'), - - path('reviewFlagPosts//', views.reviewFlagPosts, name='reviewFlagPosts'), - - path('reviewLowQualityPosts//', views.reviewLowQualityPosts, name='reviewLowQualityPosts'), - - path('reviewFlagComments//', views.reviewFlagComments, name='reviewFlagComments'), - - path('Edit_Q_In_SuggesstedEdits//', views.Edit_Q_In_SuggesstedEdits, name='Edit_Q_In_SuggesstedEdits'), - - path('Edit_Answer_In_SuggesstedEdits//', views.Edit_Answer_In_SuggesstedEdits, name='Edit_Answer_In_SuggesstedEdits'), - - path('retract_Flag_Form//', views.retract_Flag_Form, name='retract_Flag_Form'), - - path('suggesstedEditHistory_Question//', views.suggesstedEditHistory_Question, name='suggesstedEditHistory_Question'), - - path('questionCloseHistory//', views.questionCloseHistory, name='questionCloseHistory'), - - path('flag_Posts_History//', views.flag_Posts_History, name='flag_Posts_History'), - - path('reOpen_Question_History//', views.reOpen_Question_History, name='reOpen_Question_History'), - -] \ No newline at end of file diff --git a/review/views.py b/review/views.py deleted file mode 100644 index b93f529..0000000 --- a/review/views.py +++ /dev/null @@ -1,3898 +0,0 @@ -from django.shortcuts import render, redirect, get_object_or_404 -from .forms import AnswerReviewForm, QuestionReviewForm, LateAnswerReviewForm, ReviewCloseForm, LowQualityReviewForm -from .forms import CloseForm_Q, VoteToReOpenForm, ReviewReOpenForm, SuggesstedEditForm, FlagPostForm, ReviewFlagCommentForm -from django.http import JsonResponse -from django.contrib import messages -import datetime -from django.utils import timezone -from datetime import timedelta -from qa.forms import EditAnswerForm, UpdateQuestion -from django.core import serializers -from django.db.models import Avg, Count, Min, Sum -from django.db.models import Q -from .models import ReviewCloseVotes, CloseQuestionVotes, Question, Answer, ReOpenQuestionVotes, ReviewQuestionReOpenVotes, FirstQuestionReview, LateAnswerReview, FirstAnswerReview -# from config import QUESTION_OLDER_THAN -from .models import CloseQuestionVotes, ReOpenQuestionVotes, ReviewQuestionReOpenVotes, LowQualityPostsCheck, ReviewFlagComment -from .models import ReviewCloseVotes, QuestionEditVotes, ReviewQuestionEdit, ReviewLowQualityPosts, FlagPost, ReviewFlagPost, FlagComment -from .decorators import required_3000_RepToReview, required_2000_RepToReview, required_500_RepToReview -from qa.models import Reputation, CommentQ -from qa.decorators import highModRequired -from notification.models import PrivRepNotification -from tagbadge.models import TagBadge -from django.contrib.auth.decorators import login_required - -# Close Question History -DONE -# Question Edit History - DONE -# Flag Question History - DONE -# ReOpen Question History - DONE - -""" -The HttpRequest.is_ajax() method is removed in DJANGO 4, -so i used is_ajax function to check if the request is -ajax or Not by identifying 'XMLHttpRequest' -Also replaced is_ajax method with this is_ajax function. -""" -def is_ajax(request): - return request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest' - -def reOpen_Question_History(request, reviewquestionreopenvotes_id): - getReviewItem = get_object_or_404( - ReviewQuestionReOpenVotes, - pk=reviewquestionreopenvotes_id) - data = get_object_or_404(Question, reviewquestionreopenvotes=getReviewItem) - getHistory = ReOpenQuestionVotes.objects.filter(question_to_opening=data) - - context = {'getHistory': getHistory, 'getReviewItem': getReviewItem} - return render(request, 'review/reOpen_Question_History.html', context) - - -def flag_Posts_History(request, reviewflagpost_id): - getReviewItem = get_object_or_404(ReviewFlagPost, pk=reviewflagpost_id) - if getReviewItem.flag_question_to_view: - data = get_object_or_404(Question, reviewflagpost=getReviewItem) - ItIsQuestion = True - getAllReviewingItems = FlagPost.objects.filter(question_forFlag=data) - else: - print("Answer's else statement is Excecuting") - data = get_object_or_404(Answer, reviewflagpost=getReviewItem) - ItIsQuestion = False - getAllReviewingItems = FlagPost.objects.filter(answer_forFlag=data) - - context = { - 'getAllReviewingItems': getAllReviewingItems, - 'getReviewItem': getReviewItem, - } - return render(request, 'review/Flag_Post_History.html', context) - - -def questionCloseHistory(request, reviewclosevotes_id): - getReviewItem = get_object_or_404(ReviewCloseVotes, pk=reviewclosevotes_id) - # getQuestion = get_object_or_404(Question, question_to_closed=getReviewItem) - data = Question.objects.get(reviewclosevotes=getReviewItem) - getHistory = CloseQuestionVotes.objects.filter(question_to_closing=data) - - context = {'getHistory': getHistory, 'getReviewItem': getReviewItem, } - return render(request, 'review/Close_Q_History.html', context) - - -def suggesstedEditHistory_Question(request, reviewquestionedit_id): - getReviewItem = get_object_or_404( - ReviewQuestionEdit, pk=reviewquestionedit_id) - if getReviewItem.question_to_view: - data = Question.objects.get(reviewquestionedit=getReviewItem) - ItIsQuestion = True - getQuestionHistory = data.his.first() - getAnswerHitory = '' - getAllReviewingItems = QuestionEditVotes.objects.filter( - edited_question=data).exclude(rev_Action=None) - else: - ItIsQuestion = False - data = Answer.objects.get(reviewquestionedit=getReviewItem) - getAnswerHitory = data.anshis.first() - getQuestionHistory = '' - getAllReviewingItems = QuestionEditVotes.objects.filter( - edited_answer=data).exclude(rev_Action=None) - - context = { - 'getAllReviewingItems': getAllReviewingItems, - 'getReviewItem': getReviewItem, - } - return render(request, 'review/Suggessted_Edit_History.html', context) - - -@highModRequired -def reviewFlagComments(request, reviewflagcomment_id): - commentToReview = get_object_or_404( - ReviewFlagComment, id=reviewflagcomment_id) - data = CommentQ.objects.get(reviewflagcomment=commentToReview) - - counting = ReviewFlagComment.objects.filter( - c_is_reviewed=False).exclude( - c_flag_reviewed_by=request.user).count() - - getFlagHistory = FlagComment.objects.filter(comment_of=data, ended=False) - - getFlaggerUserProfile = FlagComment.objects.filter( - comment_of=data, ended=False).first() - - if request.method == 'POST': - # if counting >= 1: - form = ReviewFlagCommentForm( - instance=data, - data=request.POST, - files=request.FILES) - if form.is_valid(): - new_post = form.save(commit=False) - formData = form.cleaned_data['c_flagReviewActions'] - if formData == "DELETE_IT": - create_a_NewInstance = FlagComment.objects.create( - comment_flagged_by=request.user, comment_of=data, why_flagging="DeleteIt") - commentToReview.c_flag_reviewed_by = request.user - commentToReview.c_is_reviewed = True - commentToReview.c_flagReviewActions = formData - commentToReview.save() - getFlaggerUserProfile.comment_flagged_by.profile.helpful_flags_counter += 1 - getFlaggerUserProfile.comment_flagged_by.profile.save() - for s in getFlagHistory: - s.ended = True - s.save() - # data.delete() - # return redirect('') - else: - # create_a_NewInstance = FlagComment.objects.create(comment_flagged_by=request.user, comment_of=getComment, why_flagging="DeleteIt") - commentToReview.c_flag_reviewed_by = request.user - commentToReview.c_flagReviewActions = formData - - # commentToReview.c_is_reviewed = True - commentToReview.save() - # getFlagHistory.ended = True - # getFlagHistory.save() - # return redirect('') - next_flag = ReviewFlagComment.objects.filter( - c_is_reviewed=False).exclude( - c_flag_reviewed_by=request.user).order_by('id').first() - counting_2 = ReviewFlagComment.objects.filter( - c_is_reviewed=False).exclude( - c_flag_reviewed_by=request.user).count() - if counting_2 >= 1: - return redirect( - 'review:reviewFlagComments', - reviewflagcomment_id=next_flag.id) - else: - messages.error(request, 'No More Comment Flags To Review') - return redirect('profile:home') - - # else: - # messages.error(request, "No More Flags to Review") - - else: - form = ReviewFlagCommentForm(request.POST or None, - request.FILES or None, instance=data) - - getThisItemFromReview = ReviewFlagComment.objects.filter( - flag_of=data).first() - - if getThisItemFromReview: - actionWas = '' - if getThisItemFromReview.c_flagReviewActions == "DELETE_IT": - actionWas = "Delete_It" - elif getThisItemFromReview.c_flagReviewActions == "STAY_AS_IT_IS": - actionWas = "No_Action_Required" - elif getThisItemFromReview.c_flagReviewActions == "SKIP": - actionWas = "Skipped" - else: - actionWas = '' - if getThisItemFromReview.c_flag_reviewed_by == request.user: - is_reviewed = True - else: - is_reviewed = False - # print(actionWas) - - context = {'is_reviewed': is_reviewed, 'form': form, 'data': data, } - return render(request, 'review/Flag_Comment_Review.html', context) - -# @required_2000_RepToReview - - -def reviewLowQualityPosts(request, reviewlowqualityposts_id): - getReviewItem = get_object_or_404( - ReviewLowQualityPosts, - pk=reviewlowqualityposts_id) - - if getReviewItem.is_question: - print("Question to Review") - else: - print("Answer to Review") - - if request.method == 'POST': - form = LowQualityReviewForm( - instance=getReviewItem, - data=request.POST, - files=request.FILES) - if form.is_valid(): - formData = form.cleaned_data['reviewActions'] - if getReviewItem.is_question: - getQuestion = Question.objects.get( - reviewlowqualityposts=getReviewItem) - getLowQualityItem = LowQualityPostsCheck.objects.filter( - low_is=getQuestion, is_completed=False).first() - getAllVotes_ForSetToReviewed = LowQualityPostsCheck.objects.filter( - low_is=getQuestion, is_completed=False) - - if formData == "Looks_OK": - create_NegligibleInstance = LowQualityPostsCheck.objects.create( - suggested_by=request.user, - suggested_through="User-Reviewed", - low_is=getQuestion, - why_low_quality="Reviewed") - getReviewItem.reviewers.add(request.user) - getLowQualityItem.how_many_votes_on_OK += 1 - getLowQualityItem.save() - if getLowQualityItem.how_many_votes_on_OK >= 3: - getLowQualityItem.is_completed = True - getReviewItem.is_reviewed = True - getReviewItem.save() - getLowQualityItem.save() - for s in getAllVotes_ForSetToReviewed: - s.is_completed = True - s.save() - print("All the Votes are Reviewed and set to True \n") - print("Question is Good and Will Stay Open \n") - - # getReviewItem.reviewActions = None - getReviewItem.save() - - getAllLowQualityTask = ReviewLowQualityPosts.objects.filter( - reviewers=request.user).count() - - if not ReviewLowQualityPosts.objects.filter( - reviewers=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Custodian", - description="Complete at least one review task. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Reviewer", - description="Complete at least 250 review tasks. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Steward", - description="Complete at least 1000 review tasks. This badge is awarded once per review type" - ) - - elif formData == "Edit": - create_NegligibleInstance = LowQualityPostsCheck.objects.create( - suggested_by=request.user, - suggested_through="User-Reviewed", - low_is=getQuestion, - why_low_quality="Reviewed-Edited") - getReviewItem.reviewers.add(request.user) - getLowQualityItem.how_many_votes_on_OK += 1 - getLowQualityItem.save() - if getLowQualityItem.how_many_votes_on_OK >= 3: - getLowQualityItem.is_completed = True - getReviewItem.is_reviewed = True - getReviewItem.save() - getLowQualityItem.save() - for s in getAllVotes_ForSetToReviewed: - s.is_completed = True - s.save() - print("All the Votes are Reviewed and set to True \n") - print("Question is Good and Will Stay Open \n") - - # getReviewItem.reviewActions = None - getReviewItem.save() - - getAllLowQualityTask = ReviewLowQualityPosts.objects.filter( - reviewers=request.user).count() - - if not ReviewLowQualityPosts.objects.filter( - reviewers=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Custodian", - description="Complete at least one review task. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Reviewer", - description="Complete at least 250 review tasks. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Steward", - description="Complete at least 1000 review tasks. This badge is awarded once per review type" - ) - - elif formData == "Recommend_Delete": - create_NegligibleInstance = LowQualityPostsCheck.objects.create( - suggested_by=request.user, - suggested_through="User-Reviewed", - low_is=getQuestion, - why_low_quality="Reviewed-Edited") - getReviewItem.reviewers.add(request.user) - getLowQualityItem.how_many_votes_on_deleteIt += 1 - getLowQualityItem.save() - if getLowQualityItem.how_many_votes_on_deleteIt >= 3: - getLowQualityItem.is_completed = True - getReviewItem.is_reviewed = True - getReviewItem.save() - getLowQualityItem.save() - getQuestion.is_deleted = True - getQuestion.save() - for s in getAllVotes_ForSetToReviewed: - s.is_completed = True - s.save() - print("All the Votes are Reviewed and set to True \n") - print("Question is Good and Will Stay Open \n") - - # getReviewItem.reviewActions = None - getReviewItem.save() - getAllLowQualityTask = ReviewLowQualityPosts.objects.filter( - reviewers=request.user).count() - - if not ReviewLowQualityPosts.objects.filter( - reviewers=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Custodian", - description="Complete at least one review task. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Reviewer", - description="Complete at least 250 review tasks. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Steward", - description="Complete at least 1000 review tasks. This badge is awarded once per review type" - ) - - elif formData == "Recommend_Close": - create_NegligibleInstance = LowQualityPostsCheck.objects.create( - suggested_by=request.user, - suggested_through="User-Reviewed", - low_is=getQuestion, - why_low_quality="Reviewed-Edited") - getReviewItem.reviewers.add(request.user) - getLowQualityItem.how_many_votes_on_deleteIt += 1 - getLowQualityItem.save() - if getLowQualityItem.how_many_votes_on_deleteIt >= 3: - getLowQualityItem.is_completed = True - getReviewItem.is_reviewed = True - getReviewItem.save() - getLowQualityItem.save() - getQuestion.is_closed = True - getQuestion.closed_at = timezone.now() - getQuestion.save() - for s in getAllVotes_ForSetToReviewed: - s.is_completed = True - s.save() - print("All the Votes are Reviewed and set to True \n") - print("Question is Good and Will Stay Open \n") - - # getReviewItem.reviewActions = None - getReviewItem.save() - getAllLowQualityTask = ReviewLowQualityPosts.objects.filter( - reviewers=request.user).count() - - if not ReviewLowQualityPosts.objects.filter( - reviewers=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Custodian", - description="Complete at least one review task. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Reviewer", - description="Complete at least 250 review tasks. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Steward", - description="Complete at least 1000 review tasks. This badge is awarded once per review type" - ) - - elif formData == "Skip": - getReviewItem.reviewers.add(request.user) - next_LowQuality_Post = ReviewLowQualityPosts.objects.filter( - is_reviewed=False).exclude(reviewers=request.user).order_by('id').first() - counting_2 = ReviewLowQualityPosts.objects.filter( - is_reviewed=False).exclude( - reviewers=request.user).count() - - if counting_2 >= 1: - return redirect( - 'review:reviewLowQualityPosts', - reviewlowqualityposts_id=next_LowQuality_Post.id) - else: - messages.error( - request, 'No More Posts to Review Low Quality Posts') - return redirect('profile:home') - - else: - getAnswer = Answer.objects.get( - reviewlowqualityposts=getReviewItem) - getLowQualityItem = LowQualityPostsCheck.objects.filter( - low_ans_is=getAnswer, is_completed=False).first() - getAllVotes_ForSetToReviewed = LowQualityPostsCheck.objects.filter( - low_ans_is=getAnswer, is_completed=False) - - if formData == "Looks_OK": - create_NegligibleInstance = LowQualityPostsCheck.objects.create( - suggested_by=request.user, - suggested_through="User-Reviewed", - low_ans_is=getAnswer, - why_low_quality="Reviewed") - getReviewItem.reviewers.add(request.user) - getLowQualityItem.how_many_votes_on_OK += 1 - getLowQualityItem.save() - if getLowQualityItem.how_many_votes_on_OK >= 3: - getLowQualityItem.is_completed = True - getReviewItem.is_reviewed = True - getReviewItem.save() - getLowQualityItem.save() - for s in getAllVotes_ForSetToReviewed: - s.is_completed = True - s.save() - print("All the Votes are Reviewed and set to True \n") - print("Question is Good and Will Stay Open \n") - - # getReviewItem.reviewActions = None - getReviewItem.save() - getAllLowQualityTask = ReviewLowQualityPosts.objects.filter( - reviewers=request.user).count() - - if not ReviewLowQualityPosts.objects.filter( - reviewers=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Custodian", - description="Complete at least one review task. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Reviewer", - description="Complete at least 250 review tasks. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Steward", - description="Complete at least 1000 review tasks. This badge is awarded once per review type" - ) - - elif formData == "Edit": - create_NegligibleInstance = LowQualityPostsCheck.objects.create( - suggested_by=request.user, - suggested_through="User-Reviewed", - low_ans_is=getAnswer, - why_low_quality="Reviewed-Edited") - getReviewItem.reviewers.add(request.user) - getLowQualityItem.how_many_votes_on_OK += 1 - getLowQualityItem.save() - if getLowQualityItem.how_many_votes_on_OK >= 3: - getLowQualityItem.is_completed = True - getReviewItem.is_reviewed = True - getReviewItem.save() - getLowQualityItem.save() - for s in getAllVotes_ForSetToReviewed: - s.is_completed = True - s.save() - print("All the Votes are Reviewed and set to True \n") - print("Question is Good and Will Stay Open \n") - - # getReviewItem.reviewActions = None - getReviewItem.save() - getAllLowQualityTask = ReviewLowQualityPosts.objects.filter( - reviewers=request.user).count() - - if not ReviewLowQualityPosts.objects.filter( - reviewers=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Custodian", - description="Complete at least one review task. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Reviewer", - description="Complete at least 250 review tasks. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Steward", - description="Complete at least 1000 review tasks. This badge is awarded once per review type" - ) - - elif formData == "Recommend_Delete": - create_NegligibleInstance = LowQualityPostsCheck.objects.create( - suggested_by=request.user, - suggested_through="User-Reviewed", - low_ans_is=getAnswer, - why_low_quality="Reviewed-Edited") - getReviewItem.reviewers.add(request.user) - getLowQualityItem.how_many_votes_on_deleteIt += 1 - getLowQualityItem.save() - if getLowQualityItem.how_many_votes_on_deleteIt >= 3: - getLowQualityItem.is_completed = True - getReviewItem.is_reviewed = True - getReviewItem.save() - getLowQualityItem.save() - getAnswer.is_deleted = True - getAnswer.save() - for s in getAllVotes_ForSetToReviewed: - s.is_completed = True - s.save() - print("All the Votes are Reviewed and set to True \n") - print("Question is Good and Will Stay Open \n") - - # getReviewItem.reviewActions = None - getReviewItem.save() - getAllLowQualityTask = ReviewLowQualityPosts.objects.filter( - reviewers=request.user).count() - - if not ReviewLowQualityPosts.objects.filter( - reviewers=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Custodian", - description="Complete at least one review task. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Reviewer", - description="Complete at least 250 review tasks. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Steward", - description="Complete at least 1000 review tasks. This badge is awarded once per review type" - ) - elif formData == "Skip": - getReviewItem.reviewers.add(request.user) - - next_LowQuality_Post = ReviewLowQualityPosts.objects.filter( - is_reviewed=False).exclude(reviewers=request.user).order_by('id').first() - counting_2 = ReviewLowQualityPosts.objects.filter( - is_reviewed=False).exclude( - reviewers=request.user).count() - - if counting_2 >= 1: - return redirect( - 'review:reviewLowQualityPosts', - reviewlowqualityposts_id=next_LowQuality_Post.id) - else: - messages.error( - request, 'No More Posts to Review Low Quality Posts') - return redirect('profile:home') - - else: - form = LowQualityReviewForm( - instance=getReviewItem, - data=request.POST, - files=request.FILES) - - # data = get_object_or_404(Question, reviewlowqualityposts=getReviewItem) - - if getReviewItem.is_question: - print("Question to Review In FrontEnd") - is_question = True - is_answer = False - # data = Question.objects.filter(reviewflagpost=getReviewItem).first() - data = get_object_or_404(Question, reviewlowqualityposts=getReviewItem) - getThisItemFromReview = ReviewLowQualityPosts.objects.filter( - is_question=data).first() - getReviewersByVote = LowQualityPostsCheck.objects.filter( - low_is=data).first() - lastVoteWas = ReviewLowQualityPosts.objects.filter( - is_question=data, is_reviewed=True).last() - reviewers = getReviewItem.reviewers.all() - - # Question UpVote and DownVote - likepost = data.qupvote_set.filter(upvote_by_q=request.user).first() - likeDownpost = data.qdownvote_set.filter( - downvote_by_q=request.user).first() - upvotesCount = data.qupvote_set.all().count() - downvotesCount = data.qdownvote_set.all().count() - allToShowVotes = upvotesCount - downvotesCount - getPostComments = data.commentq_set.all().exclude(deleted=True) - - elif getReviewItem.is_answer: - print("Answer to Review In FrontEnd") - is_question = False - is_answer = True - # data = Answer.objects.filter(reviewflagpost=getReviewItem).first() - data = get_object_or_404(Answer, reviewlowqualityposts=getReviewItem) - getThisItemFromReview = ReviewLowQualityPosts.objects.filter( - is_answer=data).first() - getReviewersByVote = LowQualityPostsCheck.objects.filter( - low_ans_is=data).first() - lastVoteWas = ReviewLowQualityPosts.objects.filter( - is_answer=data, is_reviewed=True).last() - getQuestionFromAnswer = Question.objects.get(answer=data) - # reviewers = ReviewLowQualityPosts.objects.filter(pk=getReviewItem) - reviewers = getReviewItem.reviewers.all() - getPostComments = data.commentq_set.all().exclude(deleted=True) - - # Answer UpVote and DownVote - likepost = data.questionans.qupvote_set.filter( - upvote_by_q=request.user).first() - likeDownpost = data.questionans.qdownvote_set.filter( - downvote_by_q=request.user).first() - upvotesCount = getQuestionFromAnswer.qupvote_set.all().count() - downvotesCount = getQuestionFromAnswer.qdownvote_set.all().count() - allToShowVotes = upvotesCount - downvotesCount - - is_reviewed = '' - if getThisItemFromReview: - if request.user in getThisItemFromReview.reviewers.all(): - is_reviewed = True - else: - is_reviewed = False - - context = { - 'getPostComments': getPostComments, - 'reviewers': reviewers, - 'getReviewersByVote': getReviewersByVote, - 'is_reviewed': is_reviewed, - 'likepost': likepost, - 'likeDownpost': likeDownpost, - 'data': data, - 'is_question': is_question, - 'lastVoteWas': lastVoteWas, - 'is_answer': is_answer, - 'allToShowVotes': allToShowVotes, - 'form': form, - 'getReviewItem': getReviewItem, - } - return render(request, 'review/Low_Quality_Post_Review.html', context) - - -@required_2000_RepToReview -def reviewClosedQuestions(request, reviewclosevotes_id): - questionClose = get_object_or_404(ReviewCloseVotes, id=reviewclosevotes_id) - data = Question.objects.get(reviewclosevotes=questionClose) - getCloseHistorys = CloseQuestionVotes.objects.filter( - question_to_closing=data).exclude(ended=True).first() - - # getClose_only_Leave_Open = CloseQuestionVotes.objects.filter(question_to_closing=data).filter(why_closing="Leave_open").first() - getAllTheVotes = CloseQuestionVotes.objects.filter( - question_to_closing=data).exclude(ended=True) - - # getClose_only_Leave_Open = CloseQuestionVotes.objects.filter( - # question_to_closing=data).filter(Q( - # why_closing="Leave_open")).first() - - # getLast_completed_reason_of_review = ReviewCloseVotes.objects.filter(id=reviewclosevotes_id) - - # getLast_completed_reason_of_review = Question.objects.filter(reviewclosevotes__question_to_closed=data).first() - - getLast_completed_reason_of_review = data.reviewclosevotes_set.filter( - is_completed=True).first() - - counting = ReviewCloseVotes.objects.filter( - is_completed=False).exclude( - reviewed_by=request.user).count() - - # if getLast_completed_reason_of_review == None: - # print("None sa") - - # print(getCloseHistorys) - # print(data) - - if request.method == 'POST': - if counting >= 1: - form = ReviewCloseForm( - instance=questionClose, - data=request.POST, - files=request.FILES) - if form.is_valid(): - new_post = form.save(commit=False) - formData = form.cleaned_data['reviewActions'] -# COMMENTED OUT WORKING - START - if formData == "Close": - getAllLowQualityTask = ReviewCloseVotes.objects.filter( - reviewed_by=request.user).count() - - if not ReviewCloseVotes.objects.filter( - reviewed_by=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Custodian", - description="Complete at least one review task. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Reviewer", - description="Complete at least 250 review tasks. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Steward", - description="Complete at least 1000 review tasks. This badge is awarded once per review type" - ) - - create_a_NewInstance = CloseQuestionVotes.objects.create( - user=request.user, question_to_closing=data, why_closing="Close") - questionClose.reviewed_by.add(request.user) - getCloseHistorys.how_many_votes_on_Close += 1 - getCloseHistorys.save() - if getLast_completed_reason_of_review: - if getLast_completed_reason_of_review.how_Ended == "THROUGH_LEAVE_OPEN": - print("First Statement is Excecuting") - if getCloseHistorys.how_many_votes_on_Close >= getCloseHistorys.how_many_votes_on_Leave_open + 3: - questionClose.is_completed = True - print( - "Added 1 to parent review user profile's helpful_close_votes \n") - # print(getCloseHistorys.user.profile) - getCloseHistorys.user.profile.helpful_close_votes += 1 - getCloseHistorys.user.profile.save() - if getCloseHistorys.flagged_by.profile.helpful_flags_counter >= 80: - TagBadge.objects.get_or_create( - awarded_to_user=getCloseHistorys.user, - badge_type="SILVER", - tag_name="Deputy", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=getCloseHistorys.user, type_of_PrivNotify="BADGE_EARNED") - PrivRepNotification.objects.get_or_create( - for_user=getCloseHistorys.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Deputy", - description="Raise 80 helpful flags" - ) - if getCloseHistorys.flagged_by.profile.helpful_flags_counter >= 500: - TagBadge.objects.get_or_create( - awarded_to_user=getCloseHistorys.user, - badge_type="GOLD", - tag_name="Marshal", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=getCloseHistorys.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Marshal", - description="Raise 500 helpful flags" - ) - - data.is_closed = True - data.closed_at = timezone.now() - data.save() - questionClose.finalResult = questionClose.review_of.why_closing - for s in getAllTheVotes: - s.ended = True - s.save() - questionClose.reviewed_by.add(request.user) - questionClose.how_Ended = "THROUGH_CLOSE" - questionClose.reviewActions = None - questionClose.save() - print("Second Statement is Excecuting") - print("Now Closed Successfully") - else: - # print("First Time Close") - if getCloseHistorys.how_many_votes_on_Close >= 3 and getCloseHistorys.how_many_votes_on_Close > getCloseHistorys.how_many_votes_on_Leave_open + 2: - questionClose.is_completed = True - getCloseHistorys.user.profile.helpful_close_votes += 1 - getCloseHistorys.user.profile.save() - if getCloseHistorys.flagged_by.profile.helpful_flags_counter >= 80: - # createMainTag = Tag.objects.get_or_create(name="Deputy") - TagBadge.objects.get_or_create( - awarded_to_user=getCloseHistorys.user, - badge_type="SILVER", - tag_name="Deputy", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=getCloseHistorys.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Deputy", - description="Raise 80 helpful flags" - ) - if getCloseHistorys.flagged_by.profile.helpful_flags_counter >= 500: - # createMainTag = Tag.objects.get_or_create(name="Deputy") - TagBadge.objects.get_or_create( - awarded_to_user=getCloseHistorys.user, - badge_type="GOLD", - tag_name="Marshal", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=getCloseHistorys.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Marshal", - description="Raise 500 helpful flags" - ) - - print( - "Added 1 to parent review user profile's helpful_close_votes \n") - # print(getCloseHistorys.user.profile) - questionClose.reviewed_by.add(request.user) - questionClose.how_Ended = "THROUGH_CLOSE" - questionClose.finalResult = questionClose.review_of.why_closing - data.is_closed = True - data.closed_at = timezone.now() - data.save() - for s in getAllTheVotes: - s.ended = True - s.save() - print("Third Statement is Excecuting in Closing") - questionClose.reviewActions = None - questionClose.save() - - else: - # CHANGE GREATER THAN 3 INTO - # "getCloseHistorys.how_many_votes_on_Close > - # getCloseHistorys.how_many_votes_on_Leave_open + 2" - if getCloseHistorys.how_many_votes_on_Close >= 3 and getCloseHistorys.how_many_votes_on_Close > getCloseHistorys.how_many_votes_on_Leave_open: - questionClose.is_completed = True - questionClose.reviewed_by.add(request.user) - print( - "Added 1 to parent review user profile's helpful_close_votes \n") - # print(getCloseHistorys.user.profile) - getCloseHistorys.user.profile.helpful_close_votes += 1 - getCloseHistorys.user.profile.save() - if getCloseHistorys.user.profile.helpful_flags_counter >= 80: - # createMainTag = Tag.objects.get_or_create(name="Deputy") - TagBadge.objects.get_or_create( - awarded_to_user=getCloseHistorys.user, - badge_type="SILVER", - tag_name="Deputy", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=getCloseHistorys.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Deputy", - description="Raise 80 helpful flags" - ) - if getCloseHistorys.user.profile.helpful_flags_counter >= 500: - # createMainTag = Tag.objects.get_or_create(name="Deputy") - TagBadge.objects.get_or_create( - awarded_to_user=getCloseHistorys.user, - badge_type="GOLD", - tag_name="Marshal", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=getCloseHistorys.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Marshal", - description="Raise 500 helpful flags" - ) - - questionClose.how_Ended = "THROUGH_CLOSE" - # questionClose.finalResult = questionClose.review_of.why_closing - questionClose.reviewActions = None - data.is_closed = True - data.closed_at = timezone.now() - for s in getAllTheVotes: - s.ended = True - s.save() - data.save() - print("Fourth Statement is Excecuting") - questionClose.save() - getAllLowQualityTask = ReviewCloseVotes.objects.filter( - reviewed_by=request.user).count() - - if not ReviewCloseVotes.objects.filter( - reviewed_by=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Custodian", - description="Complete at least one review task. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Reviewer", - description="Complete at least 250 review tasks. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Steward", - description="Complete at least 1000 review tasks. This badge is awarded once per review type" - ) - - next_blog = ReviewCloseVotes.objects.filter( - is_completed=False).exclude( - reviewed_by=request.user).order_by('id').first() - counting_2 = ReviewCloseVotes.objects.filter( - is_completed=False).exclude( - reviewed_by=request.user).count() - - if counting_2 >= 1: - return redirect( - 'review:reviewClosedQuestions', - reviewclosevotes_id=next_blog.id) - else: - messages.error( - request, 'No More Posts to Review Close Question Votes') - return redirect('profile:home') -# COMMENTED OUT WORKING - END - - -# COMMENTED OUT NOT-WORKING - START - elif formData == "Leave_open": - create_a_NewInstance = CloseQuestionVotes.objects.create( - user=request.user, question_to_closing=data, why_closing="Leave_open") - getCloseHistorys.how_many_votes_on_Leave_open += 1 - questionClose.reviewed_by.add(request.user) - getCloseHistorys.save() - if getLast_completed_reason_of_review: - if getLast_completed_reason_of_review.how_Ended == "THROUGH_CLOSE": - if getCloseHistorys.how_many_votes_on_Leave_open >= 3 and getCloseHistorys.how_many_votes_on_Leave_open > getCloseHistorys.how_many_votes_on_Close: - questionClose.how_Ended = "THROUGH_LEAVE_OPEN" - questionClose.reviewed_by.add(request.user) - questionClose.is_completed = True - questionClose.reviewActions = None - for s in getAllTheVotes: - s.ended = True - s.save() - questionClose.save() - - else: - if getCloseHistorys.how_many_votes_on_Leave_open >= 3 and getCloseHistorys.how_many_votes_on_Leave_open > getCloseHistorys.how_many_votes_on_Close: - questionClose.is_completed = True - questionClose.how_Ended = "THROUGH_LEAVE_OPEN" - questionClose.reviewed_by.add(request.user) - for s in getAllTheVotes: - s.ended = True - s.save() - questionClose.reviewActions = None - questionClose.save() - else: - # print("First Time Leave Open") - if getCloseHistorys.how_many_votes_on_Leave_open >= 3 and getCloseHistorys.how_many_votes_on_Leave_open > getCloseHistorys.how_many_votes_on_Close: - questionClose.is_completed = True - for s in getAllTheVotes: - s.ended = True - s.save() - print("Leave Open Third Statement is Excecuting") - questionClose.how_Ended = "THROUGH_LEAVE_OPEN" - questionClose.reviewed_by.add(request.user) - questionClose.reviewActions = None - questionClose.save() - next_blog = ReviewCloseVotes.objects.filter( - is_completed=False).exclude( - reviewed_by=request.user).order_by('id').first() - counting_2 = ReviewCloseVotes.objects.filter( - is_completed=False).exclude( - reviewed_by=request.user).count() - getAllLowQualityTask = ReviewCloseVotes.objects.filter( - reviewed_by=request.user).count() - - if not ReviewCloseVotes.objects.filter( - reviewed_by=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Custodian", - description="Complete at least one review task. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Reviewer", - description="Complete at least 250 review tasks. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Steward", - description="Complete at least 1000 review tasks. This badge is awarded once per review type" - ) - - if counting_2 >= 1: - return redirect( - 'review:reviewClosedQuestions', - reviewclosevotes_id=next_blog.id) - else: - messages.error( - request, 'No More Posts to Review Close Question Votes') - return redirect('profile:home') -# COMMENTED OUT NOT-WORKING - END - - elif formData == "Edit": - create_a_NewInstance = CloseQuestionVotes.objects.create( - user=request.user, question_to_closing=data, why_closing="Leave_open") - getCloseHistorys.how_many_votes_on_Leave_open += 1 - questionClose.reviewed_by.add(request.user) - getCloseHistorys.save() - if getLast_completed_reason_of_review: - if getLast_completed_reason_of_review.how_Ended == "THROUGH_CLOSE": - if getCloseHistorys.how_many_votes_on_Leave_open >= 3 and getCloseHistorys.how_many_votes_on_Leave_open > getCloseHistorys.how_many_votes_on_Close: - questionClose.how_Ended = "THROUGH_LEAVE_OPEN" - print("Leave Open First Statement is Excecuting") - questionClose.reviewed_by.add(request.user) - questionClose.is_completed = True - questionClose.reviewActions = None - for s in getAllTheVotes: - s.ended = True - s.save() - questionClose.save() - - else: - if getCloseHistorys.how_many_votes_on_Leave_open >= 3 and getCloseHistorys.how_many_votes_on_Leave_open > getCloseHistorys.how_many_votes_on_Close: - questionClose.is_completed = True - print("Leave Open Second Statement is Excecuting") - questionClose.how_Ended = "THROUGH_LEAVE_OPEN" - questionClose.reviewed_by.add(request.user) - for s in getAllTheVotes: - s.ended = True - s.save() - questionClose.reviewActions = None - questionClose.save() - else: - # print("First Time Leave Open") - if getCloseHistorys.how_many_votes_on_Leave_open >= 3 and getCloseHistorys.how_many_votes_on_Leave_open > getCloseHistorys.how_many_votes_on_Close: - questionClose.is_completed = True - for s in getAllTheVotes: - s.ended = True - s.save() - print("Leave Open Third Statement is Excecuting") - questionClose.how_Ended = "THROUGH_LEAVE_OPEN" - questionClose.reviewed_by.add(request.user) - questionClose.reviewActions = None - questionClose.save() - getAllLowQualityTask = ReviewCloseVotes.objects.filter( - reviewed_by=request.user).count() - - if not ReviewCloseVotes.objects.filter( - reviewed_by=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Custodian", - description="Complete at least one review task. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Reviewer", - description="Complete at least 250 review tasks. This badge is awarded once per review type" - ) - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Steward", - description="Complete at least 1000 review tasks. This badge is awarded once per review type" - ) - - next_blog = ReviewCloseVotes.objects.filter( - is_completed=False).exclude( - reviewed_by=request.user).order_by('id').first() - counting_2 = ReviewCloseVotes.objects.filter( - is_completed=False).exclude( - reviewed_by=request.user).count() - - if counting_2 >= 1: - return redirect( - 'review:reviewClosedQuestions', - reviewclosevotes_id=next_blog.id) - else: - messages.error( - request, 'No More Posts to Review Close Question Votes') - return redirect('profile:home') - - elif formData == "Skip": - questionClose.reviewed_by.add(request.user) - next_blog = ReviewCloseVotes.objects.filter( - is_completed=False).exclude( - reviewed_by=request.user).order_by('id').first() - counting_2 = ReviewCloseVotes.objects.filter( - is_completed=False).exclude( - reviewed_by=request.user).count() - - else: - messages.error( - request, 'No More Posts to Review Close Question Votes') - return redirect('profile:home') - - else: - form = ReviewCloseForm(request.POST or None, - request.FILES or None, instance=questionClose) - - getAll_Votes_required_in_close_and_completed = CloseQuestionVotes.objects.filter( - question_to_closing=data).filter( - Q( - why_closing="NEED_TO_MORE_FOCUSED") | Q( - why_closing="DUPLICATE") | Q( - why_closing="NEED_ADDITIONAL_DETAILS") | Q( - why_closing="OPINION_BASED") | Q( - why_closing="Close") | Q( - why_closing="Leave_open")).exclude( - ended=True) - - if request.method == 'POST': - editQ = UpdateQuestion( - instance=data, - data=request.POST, - files=request.FILES) - - if editQ.is_valid(): - editQ.save() - # next_blog = Question.objects.filter(reviewclosevotes__reviewActions__isnull=True).order_by('id').first() - # return - # redirect('review:reviewClosedQuestions',question_id=next_blog.id) - - else: - editQ = UpdateQuestion( - request.POST or None, - request.FILES or None, - instance=data) - - upvotesCount = data.qupvote_set.all().count() - downvotesCount = data.qdownvote_set.all().count() - allToShowVotes = upvotesCount - downvotesCount - - getThisItemFromReview = ReviewCloseVotes.objects.filter( - question_to_closed=data).first() - - is_reviewed = '' - if getThisItemFromReview: - if request.user in getThisItemFromReview.reviewed_by.all(): - is_reviewed = True - else: - is_reviewed = False - # print(actionWas) - - # getReviewers = getThisItemFromReview.reviewed_by.all() - - getReviewersByVote = CloseQuestionVotes.objects.filter( - question_to_closing=data) - - # for rev in getReviewersByVote: - # print(getReviewersByVote) - - if getThisItemFromReview: - endedThrough = '' - if getThisItemFromReview.how_Ended == "THROUGH_CLOSE": - endedThrough = "voted_For_Close" - elif getThisItemFromReview.how_Ended == "THROUGH_LEAVE_OPEN": - endedThrough = "voted_For_Leave_Open" - elif getThisItemFromReview.how_Ended == "THROUGH_LEAVE_OPEN": - endedThrough = "Edited_and_Leave_Open" - else: - endedThrough = '' - print(endedThrough) - - context = { - 'getReviewersByVote': getReviewersByVote, - 'getThisItemFromReview': getThisItemFromReview, - 'endedThrough': endedThrough, - 'is_reviewed': is_reviewed, - 'editQ': editQ, - 'data': data, - 'questionClose': questionClose, - 'form': form, - 'getAll_Votes_required_in_close_and_completed': getAll_Votes_required_in_close_and_completed, - } - return render(request, 'review/Close_Q_Review.html', context) - - -# Uncomment it without testing -# @highModRequired -def reviewFlagPosts(request, reviewflagpost_id): - getReviewItem = get_object_or_404(ReviewFlagPost, pk=reviewflagpost_id) - # getQuestion = Question.objects.get(reviewflagpost=getReviewItem) - - if getReviewItem.flag_question_to_view: - print("Question Flag to Review") - else: - print("Answer Flag to Review") - - if request.method == 'POST': - form = FlagPostForm( - instance=getReviewItem, - data=request.POST, - files=request.FILES) - if form.is_valid(): - formData = form.cleaned_data['flagReviewActions'] - - if getReviewItem.flag_question_to_view: - getQuestion = Question.objects.get( - reviewflagpost=getReviewItem) - getFlagVoteItem = FlagPost.objects.filter( - question_forFlag=getQuestion, ended=False).first() - - if formData == "DELETE_IT": - getQuestion.is_deleted = True - getReviewItem.flag_reviewed_by = request.user - getFlagVoteItem.ended = True - getReviewItem.flag_is_reviewed = True - getQuestion.save() - getReviewItem.save() - getFlagVoteItem.save() - getFlagVoteItem.flagged_by.profile.helpful_flags_counter += 1 - getFlagVoteItem.flagged_by.profile.save() - if getFlagVoteItem.flagged_by.profile.helpful_flags_counter >= 80: - TagBadge.objects.get_or_create( - awarded_to_user=getFlagVoteItem.flagged_by, - badge_type="SILVER", - tag_name="Deputy", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=getCloseHistorys.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Deputy", - description="Raise 80 helpful flags" - ) - if getFlagVoteItem.flagged_by.profile.helpful_flags_counter >= 500: - TagBadge.objects.get_or_create( - awarded_to_user=getFlagVoteItem.flagged_by, - badge_type="GOLD", - tag_name="Marshal", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=getCloseHistorys.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Marshal", - description="Raise 500 helpful flags" - ) - - elif formData == "CLOSE_IT": - # getQuestion.is_closed = True - # getQuestion.closed_at = timezone.now() - getReviewItem.flag_reviewed_by = request.user - getFlagVoteItem.ended = True - getReviewItem.flag_is_reviewed = True - getQuestion.is_closed = True - data.closed_at = timezone.now() - getQuestion.save() - getReviewItem.save() - getFlagVoteItem.save() - getFlagVoteItem.flagged_by.profile.helpful_flags_counter += 1 - getFlagVoteItem.flagged_by.profile.save() - if getFlagVoteItem.flagged_by.profile.helpful_flags_counter >= 80: - # createMainTag = Tag.objects.get_or_create(name="Deputy") - TagBadge.objects.get_or_create( - awarded_to_user=getFlagVoteItem.flagged_by, - badge_type="SILVER", - tag_name="Deputy", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=getCloseHistorys.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Deputy", - description="Raise 80 helpful flags" - ) - if getFlagVoteItem.flagged_by.profile.helpful_flags_counter >= 500: - # createMainTag = Tag.objects.get_or_create(name="Deputy") - TagBadge.objects.get_or_create( - awarded_to_user=getFlagVoteItem.flagged_by, - badge_type="GOLD", - tag_name="Marshal", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=getCloseHistorys.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Marshal", - description="Raise 500 helpful flags" - ) - - elif formData == "STAY_AS_IT_IS": - getReviewItem.flag_is_reviewed = True - getFlagVoteItem.ended = True - getReviewItem.flag_reviewed_by = request.user - getQuestion.save() - getReviewItem.save() - getFlagVoteItem.save() - - else: - # messages.error(request, "Skip is Typed") - getReviewItem.flag_reviewed_by = request.user - getReviewItem.save() - - next_flag_post = ReviewFlagPost.objects.filter( - flag_is_reviewed=False).exclude( - flag_reviewed_by=request.user).order_by('id').first() - counting = ReviewFlagPost.objects.filter( - flag_is_reviewed=False).exclude( - flag_reviewed_by=request.user).count() - - if counting >= 1: - return redirect( - 'review:reviewFlagPosts', - reviewflagpost_id=next_flag_post.id) - else: - messages.error(request, 'No More Post Flags To Review') - return redirect('profile:home') - else: - getAnswer = Answer.objects.get(reviewflagpost=getReviewItem) - getFlagVoteItem = FlagPost.objects.filter( - answer_forFlag=getAnswer, ended=False).first() - - if formData == "DELETE_IT": - getAnswer.is_deleted = True - getReviewItem.flag_reviewed_by = request.user - getFlagVoteItem.ended = True - getReviewItem.flag_is_reviewed = True - getAnswer.save() - getReviewItem.save() - getFlagVoteItem.save() - getFlagVoteItem.flagged_by.profile.helpful_flags_counter += 1 - getFlagVoteItem.flagged_by.profile.save() - if getFlagVoteItem.flagged_by.profile.helpful_flags_counter >= 80: - # createMainTag = Tag.objects.get_or_create(name="Deputy") - TagBadge.objects.get_or_create( - awarded_to_user=getFlagVoteItem.flagged_by, - badge_type="SILVER", - tag_name="Deputy", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=getCloseHistorys.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Deputy", - description="Raise 80 helpful flags" - ) - if getFlagVoteItem.flagged_by.profile.helpful_flags_counter >= 500: - # createMainTag = Tag.objects.get_or_create(name="Deputy") - TagBadge.objects.get_or_create( - awarded_to_user=getFlagVoteItem.flagged_by, - badge_type="GOLD", - tag_name="Marshal", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=getCloseHistorys.user, - type_of_PrivNotify="BADGE_EARNED", - url="#", - for_if="Marshal", - description="Raise 500 helpful flags" - ) - # Answer cannot be closed - # elif formData == "CLOSE_IT": - # getAnswer.is_closed = True - # getReviewItem.flag_reviewed_by.add(request.user) - # getFlagVoteItem.ended = True - # getReviewItem.flag_is_reviewed = True - # getAnswer.save() - # getReviewItem.save() - # getFlagVoteItem.save() - - elif formData == "STAY_AS_IT_IS": - getReviewItem.flag_is_reviewed = True - getFlagVoteItem.ended = True - getReviewItem.flag_reviewed_by = request.user - getAnswer.save() - getReviewItem.save() - getFlagVoteItem.save() - - else: - # messages.error(request, "Skip is Typed") - getReviewItem.flag_reviewed_by = request.user - getReviewItem.save() - - next_flag_post = ReviewFlagPost.objects.filter( - flag_is_reviewed=False).exclude( - flag_reviewed_by=request.user).order_by('id').first() - counting = ReviewFlagPost.objects.filter( - flag_is_reviewed=False).exclude( - flag_reviewed_by=request.user).count() - - if counting >= 1: - return redirect( - 'review:reviewFlagPosts', - reviewflagpost_id=next_flag_post.id) - else: - messages.error(request, 'No More Post Flags To Review') - return redirect('profile:home') - - else: - form = FlagPostForm( - instance=getReviewItem, - data=request.POST, - files=request.FILES) - - if getReviewItem.flag_question_to_view: - print("Question to Review") - is_question = True - is_answer = False - data = Question.objects.filter(reviewflagpost=getReviewItem).first() - # Try to implement this in models - likepost = data.qupvote_set.filter(upvote_by_q=request.user).first() - likeDownpost = data.qdownvote_set.filter( - downvote_by_q=request.user).first() - getThisItemFromReview = ReviewFlagPost.objects.filter( - flag_question_to_view=data).first() - getReviewersByVote = FlagPost.objects.filter( - question_forFlag=data).first() - lastVoteWas = ReviewFlagPost.objects.filter( - flag_question_to_view=data, flag_is_reviewed=True).last() - upvotesCount = data.qupvote_set.all().count() - downvotesCount = data.qdownvote_set.all().count() - allToShowVotes = upvotesCount - downvotesCount - elif getReviewItem.flag_answer_to_view_if: - print("Answer to Review") - is_question = False - is_answer = True - data = Answer.objects.filter(reviewflagpost=getReviewItem).first() - getThisItemFromReview = ReviewFlagPost.objects.filter( - flag_answer_to_view_if=data).first() - getReviewersByVote = FlagPost.objects.filter( - answer_forFlag=data).first() - lastVoteWas = ReviewFlagPost.objects.filter( - flag_answer_to_view_if=data, flag_is_reviewed=True).last() - getQuestionFromAnswer = Question.objects.get(answer=data) - # Try to implement this in models - likepost = data.questionans.qupvote_set.filter( - upvote_by_q=request.user).first() - likeDownpost = data.questionans.qdownvote_set.filter( - downvote_by_q=request.user).first() - upvotesCount = getQuestionFromAnswer.qupvote_set.all().count() - downvotesCount = getQuestionFromAnswer.qdownvote_set.all().count() - allToShowVotes = upvotesCount - downvotesCount - - is_reviewed = '' - if getThisItemFromReview: - if getThisItemFromReview.flag_is_reviewed: - is_reviewed = True - else: - is_reviewed = False - - context = { - 'getReviewItem': getReviewItem, - 'getReviewersByVote': getReviewersByVote, - 'likeDownpost': likeDownpost, - 'likepost': likepost, - 'allToShowVotes': allToShowVotes, - 'lastVoteWas': lastVoteWas, - 'getThisItemFromReview': getThisItemFromReview, - 'getReviewersByVote': getReviewersByVote, - 'is_reviewed': is_reviewed, - 'data': data, - 'is_question': is_question, - 'is_answer': is_answer, - 'form': form} - return render(request, 'review/Flag_Post_Review.html', context) - - -def rewardPrivielege(request, which_user): - """ - This view will reward privilege to user when called - within a view with "user" argument to award - """ - getAlltheReputation = Reputation.objects.filter( - awarded_to=which_user).aggregate( - Sum('answer_rep_C'), Sum('question_rep_C')) - Q_rep = getAlltheReputation['question_rep_C__sum'] - final_Q_Rep = getAlltheReputation['question_rep_C__sum'] if Q_rep else 0 - A_rep = getAlltheReputation['answer_rep_C__sum'] - final_A_Rep = getAlltheReputation['answer_rep_C__sum'] if A_rep else 0 - totalReputation = final_Q_Rep + final_A_Rep - - if totalReputation >= 10: - # Create Wiki Posts - DONE - which_user.profile.create_wiki_posts = True - # Answer Protect Questions - DONE - which_user.profile.remove_new_user_restrictions = True - which_user.profile.save() - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - type_of_PrivNotify="Privilege_Earned") - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Create Wiki Posts", - type_of_PrivNotify="Privilege_Earned") - else: - # Create Wiki Posts - DONE - which_user.profile.create_wiki_posts = False - # Answer Protect Questions - DONE - which_user.profile.remove_new_user_restrictions = False - which_user.profile.save() - - if totalReputation >= 15: - # Vote Up Priv - DONE - which_user.profile.voteUpPriv = True - # FlagPost - DONE But Not, Need to Save Flag Request through Ajax - which_user.profile.flag_posts = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Up Vote", - type_of_PrivNotify="Privilege_Earned") - which_user.profile.save() - else: - # Vote Up Priv - DONE - which_user.profile.voteUpPriv = False - # FlagPost - DONE But Not, Need to Save Flag Request through Ajax - which_user.profile.flag_posts = False - which_user.profile.save() - - if totalReputation >= 50: - # Comment EveryWhere - DONE - which_user.profile.comment_everywhere_Priv = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Comment Everywhere", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - # Comment EveryWhere - DONE - which_user.profile.comment_everywhere_Priv = False - which_user.profile.save() - - if totalReputation >= 75: - # Set Bounties - DONE - which_user.profile.set_bounties = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Set Bounties", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - # Set Bounties - DONE - which_user.profile.set_bounties = False - which_user.profile.save() - - if totalReputation >= 125: - # Vote Down - DONE - which_user.profile.voteDownPriv = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Vote Down", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - # Vote Down - DONE - which_user.profile.voteDownPriv = False - which_user.profile.save() - - if totalReputation >= 250: - which_user.profile.view_close_votes_Priv = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="View Close Votes", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - which_user.profile.view_close_votes_Priv = False - which_user.profile.save() - - if totalReputation >= 500: - which_user.profile.access_review_queues = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Access Review Queues", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - which_user.profile.access_review_queues = False - which_user.profile.save() - - if totalReputation >= 1000: - which_user.profile.established_user_Priv = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Established User", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - which_user.profile.established_user_Priv = False - which_user.profile.save() - - if totalReputation >= 1500: - which_user.profile.create_tags = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Create Tags", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - which_user.profile.create_tags = False - which_user.profile.save() - - if totalReputation >= 2000: - which_user.profile.edit_questions_answers = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Edit Question and Answers", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - which_user.profile.edit_questions_answers = False - which_user.profile.save() - - if totalReputation >= 10000: - which_user.profile.accessTo_moderatorTools = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Access to Moderator Tools", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - which_user.profile.accessTo_moderatorTools = False - which_user.profile.save() - - if totalReputation >= 15000: - which_user.profile.protect_questions = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Protect Questions", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - which_user.profile.protect_questions = False - which_user.profile.save() - - if totalReputation >= 20000: - which_user.profile.trusted_user_Priv = True - PrivRepNotification.objects.get_or_create( - for_user=which_user, - privilegeURL="#", - for_if="Trusted User", - type_of_PrivNotify="Privilege_Earned" - ) - which_user.profile.save() - else: - which_user.profile.trusted_user_Priv = False - which_user.profile.save() - - return HttpResponse(status=202) - - -@required_2000_RepToReview -def reviewSuggesstedEdit(request, reviewquestionedit_id): - getReviewItem = get_object_or_404( - ReviewQuestionEdit, pk=reviewquestionedit_id) - # getVoteItem = QuestionEditVotes.objects.filter(reviewquestionedit=getReviewItem).first() - # if getReviewItem.question_to_view: - # getQuestion = Question.objects.get(reviewquestionedit=getReviewItem) - # getQuestion = QuestionEditVotes.objects.filter(edited_question=getQuestion).first() - # else: - # getAnswer = Answer.objects.get(reviewquestionedit=getReviewItem) - - if getReviewItem.question_to_view: - data = Question.objects.get(reviewquestionedit=getReviewItem) - ItIsQuestion = True - getQuestionHistory = data.his.first() - getAnswerHitory = '' - else: - ItIsQuestion = False - data = Answer.objects.get(reviewquestionedit=getReviewItem) - getAnswerHitory = data.anshis.first() - getQuestionHistory = '' - - if getReviewItem.question_to_view: - getQuestion = Question.objects.get(reviewquestionedit=getReviewItem) - if request.method == 'POST': - edit_Q_Form = UpdateQuestion( - instance=getQuestion, - data=request.POST, - files=request.FILES) - if edit_Q_Form.is_valid(): - edit_Q_Form.save() - # next_question = Question.objects.filter(firstquestionreview__QuestionReviewBy__isnull=True).order_by('id').first() - return redirect( - 'review:review_FirstQns', - question_id=next_question.id) - - else: - edit_Q_Form = UpdateQuestion(request.POST or None, - request.FILES or None, - instance=getQuestion) - else: - edit_Q_Form = '' - - if getReviewItem.answer_to_view_if: - getAnswer = Answer.objects.get(reviewquestionedit=getReviewItem) - if request.method == 'POST': - editAnswerForm = EditAnswerForm(instance=getAnswer, - data=request.POST, - files=request.FILES) - if editAnswerForm.is_valid(): - editAnswerForm.save() - # next_blog = Answer.objects.filter(firstanswerreview__actions__isnull=True).order_by('id').first() - return redirect( - 'review:review_FirstAns', - answer_id=next_blog.id) - - else: - messages.error(request, 'Something went Wrong !') - - else: - editAnswerForm = EditAnswerForm(request.POST or None, - request.FILES or None, - instance=getAnswer) - else: - editAnswerForm = '' - - if getReviewItem.question_to_view: - print("Question to Review") - else: - print("Answer to Review") - - # getQuestion = Question.objects.get(reviewquestionedit=getReviewItem) - # getQuestion = get_object_or_404(Question, reviewquestionedit=getReviewItem) - # getQuestion = '' - # getVoteItem = getQuestion.reviewquestionedit_set.filter(is_reviewed=True).first() - - if request.method != 'POST': - form = SuggesstedEditForm( - instance=getReviewItem, - data=request.POST, - files=request.FILES) - - else: - form = SuggesstedEditForm( - instance=getReviewItem, - data=request.POST, - files=request.FILES) - if form.is_valid(): - formData = form.cleaned_data['reviewActions'] - - if getReviewItem.question_to_view: - getQuestion = Question.objects.get( - reviewquestionedit=getReviewItem) - # getQuestion = QuestionEditVotes.objects.filter(edited_question=getQuestion).first() - getVoteItem = QuestionEditVotes.objects.filter( - edited_question=getQuestion, is_completed=False, rev_Action=None).first() - -# If last vote is not reviewed yet then alert the popup - - if getQuestion.post_owner == request.user: - if formData == "Approve": - print("Reviewed by Owner") - create_a_NewInstance = QuestionEditVotes.objects.create( - edit_suggested_by=request.user, edited_question=getQuestion, rev_Action="Approve") - getReviewItem.edit_reviewed_by.add(request.user) - getVoteItem.how_many_votes_on_approve += 1 - # getReviewItem.reviewActions = None - getVoteItem.is_completed = True - getReviewItem.is_reviewed = True - getVoteItem.edit_suggested_by.profile.suggested_Edit_counter += 1 - getVoteItem.edit_suggested_by.profile.save() - getReviewItem.save() - getVoteItem.save() - question_URL = request.build_absolute_uri( - getQuestion.get_absolute_url()) - createARep_Notification = PrivRepNotification.objects.get_or_create( - for_user=data.post_owner, - url=question_URL, - type_of_PrivNotify="EDIT_GOT_APPROVED", - missingReputation=2) - getAllEditVotes = QuestionEditVotes.objects.filter( - edited_question=getQuestion) - for _metaReview in getAllEditVotes: - # print("Printing the Error on Line 865") - _metaReview.is_completed = True - _metaReview.save() - return redirect('profile:home') - - if formData == "Reject": - print("Reviewed by Owner") - create_a_NewInstance = QuestionEditVotes.objects.create( - edit_suggested_by=request.user, edited_question=getQuestion, rev_Action="Reject") - getReviewItem.edit_reviewed_by.add(request.user) - getVoteItem.how_many_votes_on_approve += 1 - # getReviewItem.reviewActions = None - getVoteItem.is_completed = True - getReviewItem.is_reviewed = True - getVoteItem.edit_suggested_by.profile.suggested_Edit_counter += 1 - getVoteItem.edit_suggested_by.profile.save() - getReviewItem.save() - getVoteItem.save() - getDat = getQuestion.history.first() - getNextRecord = getQuestion.history.earliest().delete() - - getQuestion.body = getDat.prev_record.body - getQuestion.title = getDat.prev_record.title - getQuestion.save() - getDat = getQuestion.history.first() - deletePrev = getDat.prev_record.delete() - print("Deleting and Editing Previous Record is Done") - getAllLowQualityTask = ReviewQuestionEdit.objects.filter( - edit_reviewed_by=request.user).count() - - if not ReviewQuestionEdit.objects.filter( - edit_reviewed_by=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - getAllEditVotes = QuestionEditVotes.objects.filter( - edited_question=getQuestion) - for _metaReview in getAllEditVotes: - # print("Printing the Error on Line 865") - _metaReview.is_completed = True - _metaReview.save() - return redirect('profile:home') - else: - if formData == "Approve": - create_a_NewInstance = QuestionEditVotes.objects.create( - edit_suggested_by=request.user, edited_question=getQuestion, rev_Action="Approve") - getReviewItem.edit_reviewed_by.add(request.user) - getVoteItem.how_many_votes_on_approve += 1 - getVoteItem.save() - # getReviewItem.reviewActions = None - getReviewItem.save() - if getVoteItem.how_many_votes_on_approve > getVoteItem.how_many_votes_on_reject and getVoteItem.how_many_votes_on_approve > 2: - awardUser = Reputation.objects.create( - awarded_to=getVoteItem.edit_suggested_by, - question_O=getQuestion, - question_rep_C=2, - reputation_on_what="EDIT") - rewardPrivielege( - request, getVoteItem.edit_suggested_by) - getVoteItem.is_completed = True - question_URL = request.build_absolute_uri( - getQuestion.get_absolute_url()) - createARep_Notification = PrivRepNotification.objects.get_or_create( - for_user=data.post_owner, - url=question_URL, - type_of_PrivNotify="EDIT_GOT_APPROVED", - missingReputation=2) - - getReviewItem.is_reviewed = True - getReviewItem.save() - getVoteItem.save() - getAllEditVotes = QuestionEditVotes.objects.filter( - edited_question=getQuestion) - for _metaReview in getAllEditVotes: - # print("Printing the Error on Line 865") - _metaReview.is_completed = True - _metaReview.save() - request.user.profile.suggested_Edit_counter += 1 - request.user.profile.save() - if request.user.profile.suggested_Edit_counter == 100: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Proofreader", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - next_blog = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).order_by('id').first() - counting_2 = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).count() - getAllLowQualityTask = ReviewQuestionEdit.objects.filter( - edit_reviewed_by=request.user).count() - - if not ReviewQuestionEdit.objects.filter( - edit_reviewed_by=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if counting_2 >= 1: - return redirect( - 'review:reviewSuggesstedEdit', - reviewquestionedit_id=next_blog.id) - else: - messages.error( - request, 'No More Suggessted Edits to Review') - return redirect('profile:home') - - elif formData == "Reject": - print("User is Rejecting") - create_a_NewInstance = QuestionEditVotes.objects.create( - edit_suggested_by=request.user, edited_question=getQuestion, rev_Action="Reject") - getReviewItem.edit_reviewed_by.add(request.user) - getVoteItem.how_many_votes_on_reject += 1 - getVoteItem.save() - # getReviewItem.reviewActions = None - getReviewItem.save() - if getVoteItem.how_many_votes_on_reject > getVoteItem.how_many_votes_on_approve and getVoteItem.how_many_votes_on_reject > 2: - # getDat = getQuestion.history.first() - # getNextRecord = getDat.prev_record.delete() - getVoteItem.is_completed = True - getReviewItem.is_reviewed = True - getReviewItem.save() - getVoteItem.save() - # request.user.profile.suggested_Edit_counter += 1 - # request.user.profile.save() - getDat = getQuestion.history.first() - getNextRecord = getQuestion.history.earliest().delete() - - getQuestion.body = getDat.prev_record.body - getQuestion.title = getDat.prev_record.title - getQuestion.save() - getDat = getQuestion.history.first() - deletePrev = getDat.prev_record.delete() - - getAllEditVotes = QuestionEditVotes.objects.filter( - edited_question=getQuestion) - for _metaReview in getAllEditVotes: - # print("Printing the Error on Line 865") - _metaReview.is_completed = True - _metaReview.save() - if request.user.profile.suggested_Edit_counter == 100: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Proofreader", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - getAllLowQualityTask = ReviewQuestionEdit.objects.filter( - edit_reviewed_by=request.user).count() - - if not ReviewQuestionEdit.objects.filter( - edit_reviewed_by=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - next_blog = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).order_by('id').first() - counting_2 = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).count() - - if counting_2 >= 1: - return redirect( - 'review:reviewSuggesstedEdit', - reviewquestionedit_id=next_blog.id) - else: - messages.error( - request, 'No More Suggessted Edits to Review') - return redirect('profile:home') - - elif formData == "Edit": - create_a_NewInstance = QuestionEditVotes.objects.create( - edit_suggested_by=request.user, - edited_question=getQuestion, - rev_Action="Approve_Through_Edit") - getReviewItem.edit_reviewed_by.add(request.user) - # getVoteItem.how_many_votes_on_reject += 1 - # getVoteItem.save() - # getReviewItem.reviewActions = None - getReviewItem.save() - # if getVoteItem.how_many_votes_on_reject > - # getVoteItem.how_many_votes_on_approve and - # getVoteItem.how_many_votes_on_reject > 2: - awardUser = Reputation.objects.create( - awarded_to=getVoteItem.edit_suggested_by, - question_O=getQuestion, - question_rep_C=2, - reputation_on_what="EDIT") - rewardPrivielege(request, getVoteItem.edit_suggested_by) - getVoteItem.is_completed = True - getReviewItem.is_reviewed = True - create_a_NewInstance.is_completed = True - create_a_NewInstance.save() - getReviewItem.save() - getVoteItem.save() - next_blog = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).order_by('id').first() - counting_2 = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).count() - getAllLowQualityTask = ReviewQuestionEdit.objects.filter( - edit_reviewed_by=request.user).count() - - if not ReviewQuestionEdit.objects.filter( - edit_reviewed_by=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if counting_2 >= 1: - return redirect( - 'review:reviewSuggesstedEdit', - reviewquestionedit_id=next_blog.id) - else: - messages.error( - request, 'No More Suggessted Edits to Review') - return redirect('profile:home') - -# FULLY COMMENTED - START - elif formData == "Improve_Edit": - create_a_NewInstance = QuestionEditVotes.objects.create( - edit_suggested_by=request.user, - is_completed=True, - edited_question=getQuestion, - rev_Action="Approve_Through_Edit") - getReviewItem.edit_reviewed_by.add(request.user) - # getVoteItem.how_many_votes_on_reject += 1 - # getVoteItem.save() - # getReviewItem.reviewActions = None - getReviewItem.save() - # if getVoteItem.how_many_votes_on_reject > - # getVoteItem.how_many_votes_on_approve and - # getVoteItem.how_many_votes_on_reject > 2: - awardUser = Reputation.objects.create( - awarded_to=getVoteItem.edit_suggested_by, - question_O=getQuestion, - question_rep_C=2, - reputation_on_what="EDIT") - rewardPrivielege(request, getVoteItem.edit_suggested_by) - - rewardPrivielege(request, getVoteItem.edit_suggested_by) - print("Rewarding is not causing any errors") - - # getVoteItem.is_completed = True - getReviewItem.is_reviewed = True - getReviewItem.save() - getVoteItem.save() - create_a_NewInstance.is_completed = True - create_a_NewInstance.save() - # getAllEditVotes = QuestionEditVotes.objects.filter(edited_question=getQuestion) - # for _metaReviewQuestion in getAllEditVotes: - # print("Printing the Error on Line 865") - # _metaReviewQuestion.is_completed = True - # _metaReviewQuestion.save() - next_blog = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).order_by('id').first() - counting_2 = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).count() - getAllLowQualityTask = ReviewQuestionEdit.objects.filter( - edit_reviewed_by=request.user).count() - - if not ReviewQuestionEdit.objects.filter( - edit_reviewed_by=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if counting_2 >= 1: - return redirect( - 'review:reviewSuggesstedEdit', - reviewquestionedit_id=next_blog.id) - else: - messages.error( - request, 'No More Suggessted Edits to Review') - return redirect('profile:home') -# FULLY COMMENTED - END - - elif formData == "Reject_and_Edit": - - if request.method == 'POST': - edit_Q_Form = UpdateQuestion( - instance=data, data=request.POST, files=request.FILES) - if edit_Q_Form.is_valid(): - edit_Q_Form.save() - next_question = Question.objects.filter( - firstquestionreview__QuestionReviewBy__isnull=True).order_by('id').first() - return redirect( - 'review:review_FirstQns', - question_id=next_question.id) - - else: - messages.error(request, 'Something went wrong !') - - else: - edit_Q_Form = UpdateQuestion(request.POST or None, - request.FILES or None, - instance=data) - - create_a_NewInstance = QuestionEditVotes.objects.create( - edit_suggested_by=request.user, edited_question=getQuestion, rev_Action="Reject") - getReviewItem.edit_reviewed_by.add(request.user) - getVoteItem.how_many_votes_on_reject += 1 - getVoteItem.save() - # getReviewItem.reviewActions = None - getReviewItem.save() - if getVoteItem.how_many_votes_on_reject > getVoteItem.how_many_votes_on_approve and getVoteItem.how_many_votes_on_reject > 2: - # getDat = getQuestion.history.first() - # getNextRecord = getDat.prev_record.delete() - getVoteItem.is_completed = True - getReviewItem.is_reviewed = True - getReviewItem.save() - getVoteItem.save() - getDat = getQuestion.history.first() - getNextRecord = getQuestion.history.earliest().delete() - - getQuestion.body = getDat.prev_record.body - getQuestion.title = getDat.prev_record.title - getQuestion.save() - getDat = getQuestion.history.first() - deletePrev = getDat.prev_record.delete() - - getAllEditVotes = QuestionEditVotes.objects.filter( - edited_question=getQuestion) - for _metaReview in getAllEditVotes: - # print("Printing the Error on Line 865") - _metaReview.is_completed = True - _metaReview.save() - request.user.profile.suggested_Edit_counter += 1 - request.user.profile.save() - if request.user.profile.suggested_Edit_counter == 100: - TagBadge.objects.get_or_create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Proofreader", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - next_blog = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).order_by('id').first() - counting_2 = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).count() - getAllLowQualityTask = ReviewQuestionEdit.objects.filter( - edit_reviewed_by=request.user).count() - - if not ReviewQuestionEdit.objects.filter( - edit_reviewed_by=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if counting_2 >= 1: - return redirect( - 'review:reviewSuggesstedEdit', - reviewquestionedit_id=next_blog.id) - else: - messages.error( - request, 'No More Suggessted Edits to Review') - return redirect('profile:home') - - elif formData == "Skip": - getReviewItem.edit_reviewed_by.add(request.user) - next_blog = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).order_by('id').first() - counting_2 = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).count() - - if counting_2 >= 1: - return redirect( - 'review:reviewSuggesstedEdit', - reviewquestionedit_id=next_blog.id) - else: - messages.error( - request, 'No More Suggessted Edits to Review') - return redirect('profile:home') - -# ANSWER REVIEW - - else: - getAnswer = Answer.objects.get(reviewquestionedit=getReviewItem) - getVoteItem = QuestionEditVotes.objects.filter( - edited_answer=getAnswer, rev_Action=None, is_completed=False).first() - if getAnswer.answer_owner == request.user: - if formData == "Approve": - print("Reviewed by Owner") - create_a_NewInstance = QuestionEditVotes.objects.create( - edit_suggested_by=request.user, edited_answer=getAnswer, rev_Action="Approve") - getReviewItem.edit_reviewed_by.add(request.user) - getVoteItem.how_many_votes_on_approve += 1 - # getReviewItem.reviewActions = None - getVoteItem.is_completed = True - getReviewItem.is_reviewed = True - getAnswer.why_editing_answer = None - getAnswer.save() - getVoteItem.edit_suggested_by.profile.suggested_Edit_counter += 1 - getVoteItem.edit_suggested_by.profile.save() - getReviewItem.save() - getVoteItem.save() - question_URL = request.build_absolute_uri( - getAnswer.questionans.get_absolute_url()) - createARep_Notification = PrivRepNotification.objects.get_or_create( - for_user=getAnswer.answer_owner, - url=question_URL, - type_of_PrivNotify="EDIT_GOT_APPROVED", - missingReputation=2) - return redirect( - 'qa:questionDetailView', - pk=getAnswer.questionans.id) - # messages.info(request, "Reviewed by Owner") - return redirect('profile:home') - elif formData == "Reject": - print("Reviewed by Owner") - create_a_NewInstance = QuestionEditVotes.objects.create( - edit_suggested_by=request.user, edited_answer=getAnswer, rev_Action="Reject") - getReviewItem.edit_reviewed_by.add(request.user) - getVoteItem.how_many_votes_on_approve += 1 - # getReviewItem.reviewActions = None - getVoteItem.is_completed = True - getReviewItem.is_reviewed = True - getAnswer.why_editing_answer = None - getVoteItem.edit_suggested_by.profile.suggested_Edit_counter += 1 - getVoteItem.edit_suggested_by.profile.save() - getReviewItem.save() - getVoteItem.save() - getDat = getAnswer.history.first() - getNextRecord = getAnswer.history.earliest().delete() - - getAnswer.body = getDat.prev_record.body - getQuestion.title = getDat.prev_record.title - getAnswer.save() - getDat = getAnswer.history.first() - deletePrev = getDat.prev_record.delete() - # messages.info(request, "Reviewed by Owner") - return redirect('profile:home') - else: - if formData == "Approve": - print("Line 849 statement is Excecuting") - create_a_NewInstance = QuestionEditVotes.objects.create( - edit_suggested_by=request.user, edited_answer=getAnswer, rev_Action="Approve") - getReviewItem.edit_reviewed_by.add(request.user) - getVoteItem.how_many_votes_on_approve += 1 - getVoteItem.save() - # getReviewItem.reviewActions = None - getReviewItem.save() - # if getVoteItem.how_many_votes_on_approve > - # getVoteItem.how_many_votes_on_reject and - # getVoteItem.how_many_votes_on_approve >= 3: - if getVoteItem.how_many_votes_on_approve >= 3: - print("Line 858 statement is Excecuting") - awardUser = Reputation.objects.create( - awarded_to=getVoteItem.edit_suggested_by, - answer_O=getAnswer, - question_rep_C=2, - reputation_on_what="EDIT") - rewardPrivielege( - request, getVoteItem.edit_suggested_by) - getVoteItem.is_completed = True - getReviewItem.is_reviewed = True - getReviewItem.save() - getVoteItem.save() - getAnswer.why_editing_answer = None - getAnswer.save() - getAllEditVotes = QuestionEditVotes.objects.filter( - edited_answer=getAnswer) - question_URL = request.build_absolute_uri( - getAnswer.questionans.get_absolute_url()) - createARep_Notification = PrivRepNotification.objects.get_or_create( - for_user=getAnswer.answer_owner, - url=question_URL, - type_of_PrivNotify="EDIT_GOT_APPROVED", - missingReputation=2) - - for _metaReview in getAllEditVotes: - # print("Printing the Error on Line 865") - _metaReview.is_completed = True - _metaReview.save() - next_blog = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).order_by('id').first() - counting_2 = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).count() - getAllLowQualityTask = ReviewQuestionEdit.objects.filter( - edit_reviewed_by=request.user).count() - - if not ReviewQuestionEdit.objects.filter( - edit_reviewed_by=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if counting_2 >= 1: - return redirect( - 'review:reviewSuggesstedEdit', - reviewquestionedit_id=next_blog.id) - else: - messages.error( - request, 'No More Suggessted Edits to Review') - return redirect('profile:home') - - elif formData == "Reject": - create_a_NewInstance = QuestionEditVotes.objects.create( - edit_suggested_by=request.user, edited_answer=getAnswer, rev_Action="Reject") - getReviewItem.edit_reviewed_by.add(request.user) - getVoteItem.how_many_votes_on_reject += 1 - getVoteItem.save() - # getReviewItem.reviewActions = None - getReviewItem.save() - if getVoteItem.how_many_votes_on_reject > getVoteItem.how_many_votes_on_approve and getVoteItem.how_many_votes_on_reject > 2: - getVoteItem.is_completed = True - getReviewItem.is_reviewed = True - getReviewItem.save() - getVoteItem.save() - getDat = getAnswer.history.first() - getNextRecord = getAnswer.history.earliest().delete() - getAnswer.why_editing_answer = None - getQuestion.title = getDat.prev_record.title - getAnswer.body = getDat.prev_record.body - getAnswer.save() - getDat = getAnswer.history.first() - deletePrev = getDat.prev_record.delete() - - next_blog = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).order_by('id').first() - counting_2 = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).count() - getAllLowQualityTask = ReviewQuestionEdit.objects.filter( - edit_reviewed_by=request.user).count() - - if not ReviewQuestionEdit.objects.filter( - edit_reviewed_by=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if counting_2 >= 1: - return redirect( - 'review:reviewSuggesstedEdit', - reviewquestionedit_id=next_blog.id) - else: - messages.error( - request, 'No More Suggessted Edits to Review') - return redirect('profile:home') - - elif formData == "Edit": - create_a_NewInstance = QuestionEditVotes.objects.create( - edit_suggested_by=request.user, - edited_answer=getAnswer, - rev_Action="Approve_Through_Edit") - getReviewItem.edit_reviewed_by.add(request.user) - getVoteItem.how_many_votes_on_reject += 1 - getVoteItem.save() - # getReviewItem.reviewActions = None - # getReviewItem.save() - awardUser = Reputation.objects.create( - awarded_to=getVoteItem.edit_suggested_by, - answer_O=getAnswer, - question_rep_C=2, - reputation_on_what="EDIT") - rewardPrivielege(request, getVoteItem.edit_suggested_by) - getAnswer.why_editing_answer = None - getAnswer.save() - # getVoteItem.is_completed = True - getReviewItem.is_reviewed = True - create_a_NewInstance.is_completed = True - create_a_NewInstance.save() - getReviewItem.save() - getVoteItem.save() - - # if getVoteItem.how_many_votes_on_reject > getVoteItem.how_many_votes_on_approve and getVoteItem.how_many_votes_on_reject > 2: - # awardUser = Reputation.objects.create(awarded_to=getVoteItem.edit_suggested_by, answer_O=getAnswer, question_rep_C=2, reputation_on_what="EDIT") - # getVoteItem.is_completed = True - # getReviewItem.is_reviewed = True - # getReviewItem.save() - # getVoteItem.save() - next_blog = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).order_by('id').first() - counting_2 = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).count() - getAllLowQualityTask = ReviewQuestionEdit.objects.filter( - edit_reviewed_by=request.user).count() - - if not ReviewQuestionEdit.objects.filter( - edit_reviewed_by=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if counting_2 >= 1: - return redirect( - 'review:reviewSuggesstedEdit', - reviewquestionedit_id=next_blog.id) - else: - messages.error( - request, 'No More Suggessted Edits to Review') - return redirect('profile:home') - - elif formData == "Skip": - getReviewItem.edit_reviewed_by.add(request.user) - next_blog = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).order_by('id').first() - counting_2 = ReviewQuestionEdit.objects.filter( - is_reviewed=False).exclude( - edit_reviewed_by=request.user).count() - - if counting_2 >= 1: - return redirect( - 'review:reviewSuggesstedEdit', - reviewquestionedit_id=next_blog.id) - else: - messages.error( - request, 'No More Suggessted Edits to Review') - return redirect('profile:home') - - # previousHistory = data.prev_record - - if getReviewItem.question_to_view: - print("Question to Review In FrontEnd") - is_question = True - is_answer = False - # data = Question.objects.filter(reviewflagpost=getReviewItem).first() - data = get_object_or_404(Question, reviewquestionedit=getReviewItem) - getThisItemFromReview = ReviewQuestionEdit.objects.filter( - question_to_view=data, is_reviewed=False).first() - # Bug in This - getReviewersByVote = QuestionEditVotes.objects.filter( - edited_question=data, - is_completed=False).exclude( - rev_Action=None) - lastVoteWas = ReviewQuestionEdit.objects.filter( - question_to_view=data, is_reviewed=True).last() - reviewers = getReviewItem.edit_reviewed_by.all() - - # Question UpVote and DownVote - likepost = data.qupvote_set.filter(upvote_by_q=request.user).first() - likeDownpost = data.qdownvote_set.filter( - downvote_by_q=request.user).first() - upvotesCount = data.qupvote_set.all().count() - downvotesCount = data.qdownvote_set.all().count() - allToShowVotes = upvotesCount - downvotesCount - comments = data.commentq_set.all().exclude(deleted=True) - - getThisItemFromReview_ForLastVote = ReviewQuestionEdit.objects.filter( - question_to_view=data).last() - getReviewersByVote_ForLastVote = QuestionEditVotes.objects.filter( - edited_question=data).exclude(rev_Action=None) - - # Previous History. - That was edited that's why this review - # created - getDat = data.history.first() - previousHistory = getDat.prev_record.title - previousHistoryBody = getDat.prev_record.body - - # New History. - With new Edits - getNewEdit = data.history.earliest() - getNewEdit_Body = data.body - getNewEdit_Title = data.title - - answers_of_questions = data.answer_set.all().exclude(deletedHistory="DELETED") - STORING_THE_ORIGINAL = [] - - for anss in answers_of_questions: - getAnsHistory = anss.history.first() - getLastEditVotes = QuestionEditVotes.objects.filter( - edited_answer=anss).last() - if getLastEditVotes: - if getLastEditVotes.rev_Action == "Approve" and getLastEditVotes.is_completed or getLastEditVotes.rev_Action == "Approve_Through_Edit" and getLastEditVotes.is_completed: - getTheOriginal = anss - print("First Statement in Storing is Excecuting") - STORING_THE_ORIGINAL.append(getTheOriginal) - else: - print("Second Statement in Storing is Excecuting") - getTheOriginal = getAnsHistory.prev_record - STORING_THE_ORIGINAL.append(getTheOriginal) - else: - getTheOriginal = anss - STORING_THE_ORIGINAL.append(getTheOriginal) - print("Third Statement is Excecuting") - - elif getReviewItem.answer_to_view_if: - print("Answer to Review In FrontEnd") - is_question = False - is_answer = True - # data = Answer.objects.filter(reviewflagpost=getReviewItem).first() - data = get_object_or_404(Answer, reviewquestionedit=getReviewItem) - getThisItemFromReview = ReviewQuestionEdit.objects.filter( - answer_to_view_if=data, is_reviewed=False).first() - getReviewersByVote = QuestionEditVotes.objects.filter( - edited_answer=data, is_completed=True).first() - lastVoteWas = ReviewQuestionEdit.objects.filter( - answer_to_view_if=data).last() - getQuestionFromAnswer = Question.objects.get(answer=data) - # reviewers = ReviewQuestionEdit.objects.filter(pk=getReviewItem) - reviewers = getReviewItem.edit_reviewed_by.all() - comments = data.commentq_set.all().exclude(deleted=True) - - STORING_THE_ORIGINAL = [] - answers_of_questions = '' - - # Answer UpVote and DownVote - likepost = data.questionans.qupvote_set.filter( - upvote_by_q=request.user).first() - likeDownpost = data.questionans.qdownvote_set.filter( - downvote_by_q=request.user).first() - upvotesCount = getQuestionFromAnswer.qupvote_set.all().count() - downvotesCount = getQuestionFromAnswer.qdownvote_set.all().count() - allToShowVotes = upvotesCount - downvotesCount - getNewEdit_Title = '' - previousHistory = '' - - # Previous History. - That was edited that's why this review - # created - getDat = data.anshis.first() - # previousHistory = getDat.prev_record.title - previousHistoryBody = getDat.prev_record.body - - # New History. - With new Edits - getNewEdit = data.anshis.earliest() - getNewEdit_Body = data.body - - getThisItemFromReview_ForLastVote = ReviewQuestionEdit.objects.filter( - answer_to_view_if=data).last() - getReviewersByVote_ForLastVote = QuestionEditVotes.objects.filter( - edited_answer=data).exclude(rev_Action=None) - - is_reviewed = '' - if getThisItemFromReview_ForLastVote: - if request.user in getThisItemFromReview_ForLastVote.edit_reviewed_by.all(): - is_reviewed = True - else: - is_reviewed = False - - is_stopped = '' - if getThisItemFromReview_ForLastVote: - if getThisItemFromReview_ForLastVote.is_reviewed: - is_stopped = True - else: - is_stopped = False - - context = { - 'is_reviewed': is_reviewed, - 'is_question': is_question, - 'is_answer': is_answer, - 'is_stopped': is_stopped, - 'getThisItemFromReview': getThisItemFromReview, - # 'getReviewItem':getReviewItem, - 'allToShowVotes': allToShowVotes, - 'likepost': likepost, - 'likeDownpost': likeDownpost, - 'getNewEdit_Title': getNewEdit_Title, - 'STORING_THE_ORIGINAL': STORING_THE_ORIGINAL, - 'answers_of_questions': answers_of_questions, - 'comments': comments, - - 'getReviewersByVote': getReviewersByVote, - 'previousHistory': previousHistory, - 'previousHistoryBody': previousHistoryBody, - 'getNewEdit': getNewEdit, - 'getNewEdit_Body': getNewEdit_Body, - 'getAnswerHitory': getAnswerHitory, - 'getQuestionHistory': getQuestionHistory, - 'data': data, - 'ItIsQuestion': ItIsQuestion, - 'editAnswerForm': editAnswerForm, - 'edit_Q_Form': edit_Q_Form, - 'getReviewItem': getReviewItem, - 'form': form - } - return render(request, 'review/Suggessted_Edit_Review.html', context) - - -""" -If user's close flag was not the parent and delete only the vote - -But if user's flag was parent and voted on how_many_close_votes are 1 (of course it would be self) then delete the CloseQuestionVotes and Reviewing Instance -But if vote is more than 1 then only delete the vote of user on retract. - -Because if the flag was made by mistake and that mistake review got 1 more close vote then mistake will not be considered as mistake. -""" -# It is Working But I am thinking about making it with Ajax. - - -def retract_Close_Flag(request, question_id): - getQuestion = get_object_or_404(Question, pk=question_id) - - # getCreatedObject = CloseQuestionVotes.objects.filter(question_to_closing=getQuestion).exclude(ended=True).first() - - getCreatedObject_if_Exist = CloseQuestionVotes.objects.filter( - question_to_closing=getQuestion).exclude(ended=True).exists() - - getCreatedObject_2 = CloseQuestionVotes.objects.filter( - question_to_closing=getQuestion).exclude( - ended=True).first() - - getReviewingObject = ReviewCloseVotes.objects.filter( - review_of=getCreatedObject_2, is_completed=False).first() - - if getCreatedObject_if_Exist: - if getCreatedObject_2.user == request.user and getCreatedObject_2.how_many_votes_on_Close < 1: - getCreatedObject_2.delete() - getReviewingObject.delete() - else: - getCreatedObject_2.how_many_votes_on_Close -= 1 - getReviewingObject.reviewed_by.remove(request.user) - getCreatedObject_2.save() - - return redirect('qa:questionDetailView', pk=question_id) - - -def retract_Flag_Form(request, question_id): - getQuestion = get_object_or_404(Question, pk=question_id) - - getCreateObject_If_Exist = FlagPost.objects.filter( - question_forFlag=getQuestion).exclude( - ended=True).exists() - - getCreatedObject_2 = FlagPost.objects.filter( - flagged_by=request.user, - question_forFlag=getQuestion).exclude( - ended=True).first() - - getReviewingObject = ReviewFlagPost.objects.filter( - flag_question_to_view=getQuestion, flag_is_reviewed=True).first() - - if getCreatedObject_if_Exist: - if getCreatedObject_2.flagged_by == request.user and getCreatedObject_2.how_many_votes_on_spamANDRude < 1 or getCreatedObject_2.how_many_votes_on_notAnAnswer < 1 or getCreatedObject_2.how_many_votes_on_others < 1: - getCreatedObject_2.delete() - getReviewingObject.delete() - else: - getCreatedObject_2.delete() - getCreatedObject_2.flag_reviewed_by.remove(request.user) - getCreatedObject_2.save() - - return redirect('qa:questionDetailView', pk=question_id) - - -# def retract_ReOpen_Flag(request): -# getQuestion = get_object_or_404(Question, pk=question_id) - -# getCreatedObject_if_Exist = ReOpenQuestionVotes.objects.filter(question_to_opening=getQuestion).exclude(ended=True).exists() - -# getCreatedObject_2 = ReOpenQuestionVotes.objects.filter(re) - - -# REVIEW FIRST ANSWER -@required_500_RepToReview -def review_FirstAns(request, answer_id): - data = get_object_or_404(Answer, pk=answer_id) - time = timezone.now() - timedelta(seconds=200) - counting = Answer.objects.filter( - firstanswerreview__actions__isnull=True).exclude( - answer_owner=request.user).count() - post_ids_subquery_2 = Answer.objects.filter( - date__gt=time - ).values( - 'answer_owner' - ).annotate( - min_id=Min('id') - ).values('min_id') - - if request.method == 'POST': - if counting >= 1: - form = AnswerReviewForm(data=request.POST) - if form.is_valid(): - # pos = Answer.objects.get(id=answer_id) - new_post = form.save(commit=False) - new_post.AnswerReviewedBy = request.user - new_post.answerReview = data - new_post.save() - - # if new_post.actions == 'EDIT': - # return redirect('review:editFromReview', answer_id=data.id) - - next_blog = Answer.objects.filter( - firstanswerreview__actions__isnull=True).filter( - id__in=post_ids_subquery_2).order_by('id').first() - counting = Answer.objects.filter( - firstanswerreview__actions__isnull=True).exclude( - answer_owner=request.user).filter( - id__in=post_ids_subquery_2).count() - - getAllLowQualityTask = FirstAnswerReview.objects.filter( - AnswerReviewedBy=request.user).count() - if not FirstAnswerReview.objects.filter( - AnswerReviewedBy=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if counting >= 1: - return redirect( - 'review:review_FirstAns', - answer_id=next_blog.id) - else: - messages.error(request, 'No More First Answers to Review') - return redirect('profile:home') - else: - messages.error(request, 'No More First Answers to Review') - return redirect('profile:home') - - else: - form = AnswerReviewForm() - - # post = Answer.objects.get(id=answer_id) - # post_owner = post.answer_owner - - if request.method == 'POST': - editForm = EditAnswerForm(instance=data, - data=request.POST, - files=request.FILES) - if editForm.is_valid(): - editForm.save() - next_blog = Answer.objects.filter( - firstanswerreview__actions__isnull=True).order_by('id').first() - return redirect('review:review_FirstAns', answer_id=next_blog.id) - - else: - editForm = EditAnswerForm(request.POST or None, - request.FILES or None, - instance=data) - - getThisItemFromReview = FirstAnswerReview.objects.filter( - answerReview=data).first() - - if getThisItemFromReview: - actionWas = '' - if getThisItemFromReview.actions == "LOOKS_OK": - actionWas = "Approved" - elif getThisItemFromReview.actions == "EDIT": - actionWas = "Edit_and_Approve" - elif getThisItemFromReview.actions == "SKIPPED": - actionWas = "Skipped" - else: - actionWas = '' - if getThisItemFromReview is not None: - is_reviewed = True - else: - is_reviewed = False - # print(actionWas) - - context = { - 'getThisItemFromReview': getThisItemFromReview, - 'is_reviewed': is_reviewed, - 'actionWas': actionWas, - 'form': form, - 'data': data, - 'editForm': editForm} - return render(request, 'review/First_Answer_Review.html', context) - -# REVIEW LATE ANSWER - - -@required_500_RepToReview -def review_LateAnswers(request, answer_id): - data = get_object_or_404(Answer, pk=answer_id) - likepost = data.questionans.qupvote_set.filter( - upvote_by_q=request.user).first() - likeDownpost = data.questionans.qdownvote_set.filter( - downvote_by_q=request.user).first() - # time = timezone.now() - timedelta(minutes=20) - isOlderThanFiveHours = timezone.now() - timedelta(minutes=10) - counting = Answer.objects.filter( - questionans__date__gt=timezone.now() - timedelta(hours=100)).filter( - date__gt=isOlderThanFiveHours).count() - # lateAnswers = Answer.objects.filter(questionans__date__gt=timezone.now() - timedelta(hours=100)).filter(date__gt=isOlderThanFiveHours) - - if request.method == 'POST': - if counting >= 1: - form = LateAnswerReviewForm(data=request.POST) - if form.is_valid(): - new_post = form.save(commit=False) - new_post.L_AnswerReviewdBy = request.user - new_post.L_answerReview = data - new_post.save() - - next_blog = Answer.objects.filter( - lateanswerreview__L_AnswerActions__isnull=True).filter( - questionans__date__gt=timezone.now() - - timedelta( - hours=100)).filter( - date__gt=isOlderThanFiveHours).order_by('id').first() - - counting = Answer.objects.filter( - lateanswerreview__L_AnswerActions__isnull=True).filter( - questionans__date__gt=timezone.now() - - timedelta( - hours=100)).filter( - date__gt=isOlderThanFiveHours).count() - getAllLowQualityTask = LateAnswerReview.objects.filter( - L_AnswerReviewdBy=request.user).count() - if not LateAnswerReview.objects.filter( - L_AnswerReviewdBy=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - if getAllLowQualityTask == 250: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - if getAllLowQualityTask == 1000: - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - - if counting >= 1: - return redirect( - 'review:review_LateAnswers', - answer_id=next_blog.id) - else: - messages.error(request, 'No More Late Answers to Review') - return redirect('profile:home') - else: - messages.error(request, 'No More Late Answers to Review') - return redirect('profile:home') - - else: - form = LateAnswerReviewForm() - - if request.method == 'POST': - editForm = EditAnswerForm(instance=data, - data=request.POST, - files=request.FILES) - if editForm.is_valid(): - editForm.save() - next_blog = Answer.objects.filter( - firstanswerreview__actions__isnull=True).order_by('id').first() - return redirect('review:review_FirstAns', answer_id=next_blog.id) - - else: - editForm = EditAnswerForm(request.POST or None, - request.FILES or None, - instance=data) - - upvotesCount = data.questionans.qupvote_set.all().count() - downvotesCount = data.questionans.qdownvote_set.all().count() - allToShowVotes = upvotesCount - downvotesCount - - getThisItemFromReview = LateAnswerReview.objects.filter( - L_answerReview=data).first() - - if getThisItemFromReview: - actionWas = '' - if getThisItemFromReview.L_AnswerActions == "LOOKS_OK": - actionWas = "Approved" - elif getThisItemFromReview.L_AnswerActions == "EDIT": - actionWas = "Edit_and_Approve" - elif getThisItemFromReview.L_AnswerActions == "RECOMMEND_DELETION": - actionWas = "Recommend_Delete" - elif getThisItemFromReview.L_AnswerActions == "SKIPPED": - actionWas = "Skipped" - else: - actionWas = '' - if getThisItemFromReview is not None: - is_reviewed = True - else: - is_reviewed = False - - context = { - 'getThisItemFromReview': getThisItemFromReview, - 'actionWas': actionWas, - 'is_reviewed': is_reviewed, - 'form': form, - 'data': data, - 'editForm': editForm, - 'likepost': likepost, - 'likeDownpost': likeDownpost, - 'allToShowVotes': allToShowVotes, - } - return render(request, 'review/Late_Answer_Review.html', context) - -# REVIEW FIRST QUESTION - - -@required_500_RepToReview -def review_FirstQns(request, question_id): - data = get_object_or_404(Question, pk=question_id) - likepost = data.qupvote_set.filter(upvote_by_q=request.user).first() - likeDownpost = data.qdownvote_set.filter( - downvote_by_q=request.user).first() - time = timezone.now() - timedelta(minutes=20) - counting = Question.objects.filter( - firstquestionreview__QuestionReviewBy__isnull=True).count() - post_ids_subquery = Question.objects.filter( - date__gt=time - ).values( - 'post_owner' - ).annotate( - min_id=Min('id') - ).values('min_id') - - if request.method == 'POST': - if counting >= 1: - form = QuestionReviewForm(data=request.POST) - if form.is_valid(): - new_post = form.save(commit=False) - new_post.QuestionReviewBy = request.user - new_post.questionReview = data - new_post.save() - - next_question = Question.objects.filter( - firstquestionreview__QuestionReviewBy__isnull=True).filter( - id__in=post_ids_subquery).order_by('id').first() - counting = Question.objects.filter( - firstquestionreview__QuestionReviewBy__isnull=True).filter( - id__in=post_ids_subquery).count() - getAllLowQualityTask = FirstQuestionReview.objects.filter( - QuestionReviewBy=request.user).count() - if not FirstQuestionReview.objects.filter( - QuestionReviewBy=request.user).exists(): - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="BRONZE", - tag_name="Custodian", - bade_position="BADGE") - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - if getAllLowQualityTask == 250: - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="SILVER", - tag_name="Reviewer", - bade_position="BADGE") - if getAllLowQualityTask == 1000: - PrivRepNotification.objects.get_or_create( - for_user=request.user, type_of_PrivNotify="BADGE_EARNED") - TagBadge.objects.create( - awarded_to_user=request.user, - badge_type="GOLD", - tag_name="Steward", - bade_position="BADGE") - - if counting >= 1: - return redirect( - 'review:review_FirstQns', - question_id=next_question.id) - else: - messages.error( - request, 'No More FirsT Questions to Review') - return redirect('profile:home') - - else: - messages.error(request, 'No More FirsT Questions to Review') - return redirect('profile:home') - - else: - form = QuestionReviewForm() - - if request.method == 'POST': - edit_Q_Form = UpdateQuestion( - instance=data, - data=request.POST, - files=request.FILES) - if edit_Q_Form.is_valid(): - edit_Q_Form.save() - next_question = Question.objects.filter( - firstquestionreview__QuestionReviewBy__isnull=True).order_by('id').first() - return redirect( - 'review:review_FirstQns', - question_id=next_question.id) - - else: - edit_Q_Form = UpdateQuestion(request.POST or None, - request.FILES or None, - instance=data) - - upvotesCount = data.qupvote_set.all().count() - downvotesCount = data.qdownvote_set.all().count() - allToShowVotes = upvotesCount - downvotesCount - - getThisItemFromReview = FirstQuestionReview.objects.filter( - questionReview=data).first() - - if getThisItemFromReview: - actionWas = '' - if getThisItemFromReview.questionActions == "LOOKS_OK": - actionWas = "Approved" - elif getThisItemFromReview.questionActions == "EDIT": - actionWas = "Edit_and_Approve" - elif getThisItemFromReview.questionActions == "SKIPPED": - actionWas = "Skipped" - else: - actionWas = '' - if getThisItemFromReview is not None: - is_reviewed = True - else: - is_reviewed = False - # print(actionWas) - - context = { - 'likeDownpost': likeDownpost, - 'actionWas': actionWas, - 'is_reviewed': is_reviewed, - 'form': form, - 'data': data, - 'edit_Q_Form': edit_Q_Form, - 'likepost': likepost, - 'allToShowVotes': allToShowVotes, - 'getThisItemFromReview': getThisItemFromReview, - } - return render(request, 'review/First_Question_Review.html', context) - -# EDIT FIRST QUESTION (THROUGH AJAX) - - -def EditQuestionAjax(request, question_id): - data = get_object_or_404(Question, pk=question_id) - # request should be ajax and method should be POST. - if is_ajax(request) and request.method == "POST": - # get the form data - edit_Q_Form = UpdateQuestion(instance=data, - data=request.POST, - files=request.FILES) - # save the data and after fetch the object in instance - if edit_Q_Form.is_valid(): - instance = edit_Q_Form.save() - # serialize in new friend object in json - ser_instance = serializers.serialize('json', [ - instance, - ]) - # send to client side. - return JsonResponse({"instance": ser_instance}, status=200) - else: - # some form errors occured. - return JsonResponse({"error": edit_Q_Form.errors}, status=400) - - # some error occured - return JsonResponse({"error": ""}, status=400) - - -def Edit_Q_In_SuggesstedEdits(request, question_id): - data = get_object_or_404(Question, pk=question_id) - # request should be ajax and method should be POST. - if is_ajax(request) and request.method == "POST": - # get the form data - edit_Q_Form = UpdateQuestion(instance=data, - data=request.POST, - files=request.FILES) - # save the data and after fetch the object in instance - if edit_Q_Form.is_valid(): - instance = edit_Q_Form.save() - # serialize in new friend object in json - ser_instance = serializers.serialize('json', [ - instance, - ]) - # send to client side. - return JsonResponse({"instance": ser_instance}, status=200) - else: - # some form errors occured. - return JsonResponse({"error": form.errors}, status=400) - - # some error occured - return JsonResponse({"error": ""}, status=400) - - -def Edit_Answer_In_SuggesstedEdits(request, answer_id): - data = get_object_or_404(Answer, pk=answer_id) - # request should be ajax and method should be POST. - if is_ajax(request) and request.method == "POST": - # get the form data - edit_Q_Form = EditAnswerForm(instance=data, - data=request.POST, - files=request.FILES) - # save the data and after fetch the object in instance - if edit_Q_Form.is_valid(): - instance = edit_Q_Form.save() - # serialize in new friend object in json - ser_instance = serializers.serialize('json', [ - instance, - ]) - # send to client side. - return JsonResponse({"instance": ser_instance}, status=200) - else: - # some form errors occured. - return JsonResponse({"error": form.errors}, status=400) - - # some error occured - return JsonResponse({"error": ""}, status=400) - -# EDIT FIRST ANSWER (THROUGH AJAX) - - -def EditAllowanceAjaxForm(request, answer_id): - data = get_object_or_404(Answer, pk=answer_id) - # request should be ajax and method should be POST. - if is_ajax(request) and request.method == "POST": - # get the form data - editForm = EditAnswerForm(instance=data, - data=request.POST, - files=request.FILES) - # save the data and after fetch the object in instance - if editForm.is_valid(): - instance = editForm.save() - # serialize in new friend object in json - ser_instance = serializers.serialize('json', [ - instance, - ]) - # send to client side. - return JsonResponse({"instance": ser_instance}, status=200) - else: - # some form errors occured. - return JsonResponse({"error": form.errors}, status=400) - - # some error occured - return JsonResponse({"error": ""}, status=400) - - -def edit_in_Closing_Ajax(request, question_id): - data = get_object_or_404(Question, pk=question_id) - if is_ajax(request) and request.method == "POST": - editForm = UpdateQuestion( - instance=data, - data=request.POST, - files=request.FILES) - - if editForm.is_valid(): - instance = editForm.save() - ser_instance = serializers.serialize('json', [instance, ]) - - return JsonResponse({'instance': ser_instance}, status=200) - else: - return JsonResponse({'error': editForm.errors}, status=400) - - return JsonResponse({'error': ""}, status=400) - -# CAN COMMENT - IN - - -def editFromReview(request, answer_id): - post = Answer.objects.get(id=answer_id) - # post_owner = post.answer_owner - - if request.method == 'POST': - form = EditAnswerForm(instance=post, - data=request.POST, - files=request.FILES) - if form.is_valid(): - form.save() - next_blog = Answer.objects.filter( - firstanswerreview__actions__isnull=True).order_by('id').first() - return redirect('review:review_FirstAns', answer_id=next_blog.id) - - else: - messages.error(request, 'Something went Wrong!') - - else: - form = EditAnswerForm(request.POST or None, - request.FILES or None, - instance=post) - - context = {'form': form} - return render(request, 'review/editFromReview.html', context) - -# ReviewCloseVotes.objects.filter(is_completed=False).exclude(reviewed_by=request.user).order_by('id').first() - -# CAN COMMENT - IN - - -def review_answer_page(request): - next_blogs = Answer.objects.filter( - firstanswerreview__actions__isnull=True).order_by('id').first() - counting = Answer.objects.filter( - firstanswerreview__actions__isnull=True).count() - - if counting >= 1: - can_show = True - else: - can_show = False - context = {'next_blogs': next_blogs, 'can_show': can_show} - return render(request, 'review/review_answer_page.html', context) - - -@required_2000_RepToReview -def reOpen_Question_Review(request, reviewquestionreopenvotes_id): - questionUNClose = get_object_or_404( - ReviewQuestionReOpenVotes, - id=reviewquestionreopenvotes_id) - data = Question.objects.get(reviewquestionreopenvotes=questionUNClose) - getUNCloseHistorys = ReOpenQuestionVotes.objects.filter( - question_to_opening=data).filter( - Q( - why_opening="IT_IS_BETTER_NOW") | Q( - why_opening="CLOSED_BY_MISTAKE") | Q( - why_opening="OTHER") | Q( - why_opening="Open")).exclude( - ended=True).first() - - toTurnEnded = ReOpenQuestionVotes.objects.filter( - question_to_opening=data).filter( - Q( - why_opening="IT_IS_BETTER_NOW") | Q( - why_opening="CLOSED_BY_MISTAKE") | Q( - why_opening="OTHER") | Q( - why_opening="Open")).exclude( - ended=True) - - getLast_completed_reason_of_review = data.reviewquestionreopenvotes_set.filter( - is_completed=True).last() - -# THROUGH_OPENED -# THROUGH_LEAVE_CLOSED - - if request.method != 'POST': - form = ReviewReOpenForm( - instance=questionUNClose, - data=request.POST, - files=request.FILES) - - else: - form = ReviewReOpenForm( - instance=questionUNClose, - data=request.POST, - files=request.FILES) - if form.is_valid(): - formData = form.cleaned_data['reviewActions'] - - if formData == "OPEN": - create_a_NewInstance = ReOpenQuestionVotes.objects.create( - user=request.user, question_to_opening=data, why_opening="Open") - questionUNClose.reopen_reviewed_by.add(request.user) - getUNCloseHistorys.how_many_votes_on_Open += 1 - getUNCloseHistorys.save() - if getLast_completed_reason_of_review: - # print("Something is There") - if getLast_completed_reason_of_review.what_happend == "Ended_Through_Leave_Closed": - if getUNCloseHistorys.how_many_votes_on_Open > getUNCloseHistorys.how_many_votes_on_Leave_close + 2: - decRep = Reputation.objects.get_or_create( - awarded_to=getUNCloseHistorys.user.post_owner, - question_O=post, - question_rep_C=+2, - reputation_on_what='question_reopen_voted') - rewardPrivielege( - request, getUNCloseHistorys.user.post_owner) - questionUNClose.is_completed = True - questionUNClose.what_happend = "Ended_Through_Open" - # REOPEN THE QUESTION - HERE - - for s in toTurnEnded: - s.ended = True - s.save() - # questionUNClose.reviewActions = None - data.is_closed = False - data.save() - questionUNClose.save() - print( - "THROUGH SECOND TIME Leave Open SuccessFully Saved and Completed is Saved in") - - elif getUNCloseHistorys.how_many_votes_on_Open >= 3 and getUNCloseHistorys.how_many_votes_on_Open > getUNCloseHistorys.how_many_votes_on_Leave_close: - questionUNClose.is_completed = True - questionUNClose.what_happend = "Ended_Through_Open" - # REOPEN THE QUESTION - HERE - - data.is_closed = False - for s in toTurnEnded: - s.ended = True - s.save() - data.save() - # questionUNClose.reviewActions = None - questionUNClose.save() - print( - "There was a Previous Record But not with 'Ended Through Leave Closed' So saved in new") - - elif getUNCloseHistorys.how_many_votes_on_Open >= 3 and getUNCloseHistorys.how_many_votes_on_Open > getUNCloseHistorys.how_many_votes_on_Leave_close: - questionUNClose.is_completed = True - questionUNClose.what_happend = "Ended_Through_Open" - questionUNClose.reviewActions = None - data.is_closed = False - for s in toTurnEnded: - s.ended = True - s.save() - data.save() - questionUNClose.save() - print("No Previous Record is Saved, So I saved existed instance") - - next_blog = ReviewQuestionReOpenVotes.objects.filter( - is_completed=False).exclude( - reopen_reviewed_by=request.user).order_by('id').first() - counting_2 = ReviewQuestionReOpenVotes.objects.filter( - is_completed=False).exclude( - reopen_reviewed_by=request.user).count() - - if counting_2 >= 1: - return redirect( - 'review:reOpen_Question_Review', - reviewquestionreopenvotes_id=next_blog.id) - else: - messages.error( - request, 'No More ReOpen Post Votes to Review') - return redirect('profile:home') - - elif formData == "LEAVE_CLOSED": - create_a_NewInstance = ReOpenQuestionVotes.objects.create( - user=request.user, question_to_opening=data, why_opening="Leave_closed") - questionUNClose.reopen_reviewed_by.add(request.user) - getUNCloseHistorys.how_many_votes_on_Leave_close += 1 - getUNCloseHistorys.save() - if getLast_completed_reason_of_review: - if getLast_completed_reason_of_review.what_happend == "Ended_Through_Open": - if getUNCloseHistorys.how_many_votes_on_Leave_close > getUNCloseHistorys.how_many_votes_on_Open + 2: - getUNCloseHistorys.is_completed = True - questionUNClose.what_happend = "Ended_Through_Leave_Closed" - # questionUNClose.reviewActions = None - for s in toTurnEnded: - s.ended = True - s.save() - questionUNClose.save() - print( - "THROUGH SECOND TIME Close SuccessFully Saved and Completed is Saved") - - elif getUNCloseHistorys.how_many_votes_on_Leave_close >= 3 and getUNCloseHistorys.how_many_votes_on_Leave_close > getUNCloseHistorys.how_many_votes_on_Open: - questionUNClose.is_completed = True - questionUNClose.what_happend = "Ended_Through_Leave_Closed" - # questionUNClose.reviewActions = None - for s in toTurnEnded: - s.ended = True - s.save() - questionUNClose.save() - print( - "There was Previous Record But not with 'Ended Through Open' So saved in new") - - elif getUNCloseHistorys.how_many_votes_on_Leave_close >= 3 and getUNCloseHistorys.how_many_votes_on_Leave_close > getUNCloseHistorys.how_many_votes_on_Open: - questionUNClose.is_completed = True - questionUNClose.what_happend = "Ended_Through_Leave_Closed" - # questionUNClose.reviewActions = None - for s in toTurnEnded: - s.ended = True - s.save() - questionUNClose.save() - print("Close Successfully Saved and Completed is Saved") - - next_blog = ReviewQuestionReOpenVotes.objects.filter( - is_completed=False).exclude( - reopen_reviewed_by=request.user).order_by('id').first() - counting_2 = ReviewQuestionReOpenVotes.objects.filter( - is_completed=False).exclude( - reopen_reviewed_by=request.user).count() - - if counting_2 >= 1: - return redirect( - 'review:reOpen_Question_Review', - reviewquestionreopenvotes_id=next_blog.id) - else: - messages.error( - request, 'No More ReOpen Post Votes to Review') - return redirect('profile:home') - - else: - messages.error(request, 'Something went wrong') - - getReviewersByVote = ReOpenQuestionVotes.objects.filter( - question_to_opening=data) - - likepost = data.qupvote_set.filter(upvote_by_q=request.user).first() - likeDownpost = data.qdownvote_set.filter( - downvote_by_q=request.user).first() - - upvotesCount = data.qupvote_set.all().count() - downvotesCount = data.qdownvote_set.all().count() - allToShowVotes = upvotesCount - downvotesCount - - getThisItemFromReview = ReviewQuestionReOpenVotes.objects.filter( - question_opened=data).first() - print(getThisItemFromReview.reviewActions) - if getThisItemFromReview: - endedThrough = '' - if getThisItemFromReview.reviewActions == "OPEN": - endedThrough = "Open" - elif getThisItemFromReview.reviewActions == "LEAVE_CLOSED": - endedThrough = "Leave_Close" - elif getThisItemFromReview.reviewActions == "EDIT": - endedThrough = "Edited" - else: - endedThrough = '' - - is_reviewed = '' - if getThisItemFromReview: - if request.user in getThisItemFromReview.reopen_reviewed_by.all(): - is_reviewed = True - else: - is_reviewed = False - - context = { - 'questionUNClose': questionUNClose, - 'endedThrough': endedThrough, - 'likepost': likepost, - 'likeDownpost': likeDownpost, - 'allToShowVotes': allToShowVotes, - 'is_reviewed': is_reviewed, - 'getReviewersByVote': getReviewersByVote, - 'data': data, - 'form': form, - 'getUNCloseHistorys': getUNCloseHistorys} - return render(request, 'review/ReOpenQuestionReview.html', context) diff --git a/static/For_button.css b/static/For_button.css deleted file mode 100644 index ceb87e7..0000000 --- a/static/For_button.css +++ /dev/null @@ -1,19387 +0,0 @@ - \ No newline at end of file diff --git a/static/MarkDown-Editor/dicts/README.md b/static/MarkDown-Editor/dicts/README.md deleted file mode 100644 index 9fc8a05..0000000 --- a/static/MarkDown-Editor/dicts/README.md +++ /dev/null @@ -1,7 +0,0 @@ -The text below is copied from @cfinke's [Typo.js project](https://github.com/cfinke/Typo.js/tree/master/typo/dictionaries/en_US): - -2006-02-07 release. - -This dictionary is based on a subset of the original English wordlist created by Kevin Atkinson for Pspell and Aspell and thus is covered by his original LGPL license. The affix file is a heavily modified version of the original english.aff file which was released as part of Geoff Kuenning's Ispell and as such is covered by his BSD license. - -Thanks to both authors for their wonderful work. diff --git a/static/MarkDown-Editor/dicts/en_US.aff b/static/MarkDown-Editor/dicts/en_US.aff deleted file mode 100644 index d56330e..0000000 --- a/static/MarkDown-Editor/dicts/en_US.aff +++ /dev/null @@ -1,201 +0,0 @@ -SET ISO8859-1 -TRY esianrtolcdugmphbyfvkwzESIANRTOLCDUGMPHBYFVKWZ' -NOSUGGEST ! - -# ordinal numbers -COMPOUNDMIN 1 -# only in compounds: 1th, 2th, 3th -ONLYINCOMPOUND c -# compound rules: -# 1. [0-9]*1[0-9]th (10th, 11th, 12th, 56714th, etc.) -# 2. [0-9]*[02-9](1st|2nd|3rd|[4-9]th) (21st, 22nd, 123rd, 1234th, etc.) -COMPOUNDRULE 2 -COMPOUNDRULE n*1t -COMPOUNDRULE n*mp -WORDCHARS 0123456789 - -PFX A Y 1 -PFX A 0 re . - -PFX I Y 1 -PFX I 0 in . - -PFX U Y 1 -PFX U 0 un . - -PFX C Y 1 -PFX C 0 de . - -PFX E Y 1 -PFX E 0 dis . - -PFX F Y 1 -PFX F 0 con . - -PFX K Y 1 -PFX K 0 pro . - -SFX V N 2 -SFX V e ive e -SFX V 0 ive [^e] - -SFX N Y 3 -SFX N e ion e -SFX N y ication y -SFX N 0 en [^ey] - -SFX X Y 3 -SFX X e ions e -SFX X y ications y -SFX X 0 ens [^ey] - -SFX H N 2 -SFX H y ieth y -SFX H 0 th [^y] - -SFX Y Y 1 -SFX Y 0 ly . - -SFX G Y 2 -SFX G e ing e -SFX G 0 ing [^e] - -SFX J Y 2 -SFX J e ings e -SFX J 0 ings [^e] - -SFX D Y 4 -SFX D 0 d e -SFX D y ied [^aeiou]y -SFX D 0 ed [^ey] -SFX D 0 ed [aeiou]y - -SFX T N 4 -SFX T 0 st e -SFX T y iest [^aeiou]y -SFX T 0 est [aeiou]y -SFX T 0 est [^ey] - -SFX R Y 4 -SFX R 0 r e -SFX R y ier [^aeiou]y -SFX R 0 er [aeiou]y -SFX R 0 er [^ey] - -SFX Z Y 4 -SFX Z 0 rs e -SFX Z y iers [^aeiou]y -SFX Z 0 ers [aeiou]y -SFX Z 0 ers [^ey] - -SFX S Y 4 -SFX S y ies [^aeiou]y -SFX S 0 s [aeiou]y -SFX S 0 es [sxzh] -SFX S 0 s [^sxzhy] - -SFX P Y 3 -SFX P y iness [^aeiou]y -SFX P 0 ness [aeiou]y -SFX P 0 ness [^y] - -SFX M Y 1 -SFX M 0 's . - -SFX B Y 3 -SFX B 0 able [^aeiou] -SFX B 0 able ee -SFX B e able [^aeiou]e - -SFX L Y 1 -SFX L 0 ment . - -REP 88 -REP a ei -REP ei a -REP a ey -REP ey a -REP ai ie -REP ie ai -REP are air -REP are ear -REP are eir -REP air are -REP air ere -REP ere air -REP ere ear -REP ere eir -REP ear are -REP ear air -REP ear ere -REP eir are -REP eir ere -REP ch te -REP te ch -REP ch ti -REP ti ch -REP ch tu -REP tu ch -REP ch s -REP s ch -REP ch k -REP k ch -REP f ph -REP ph f -REP gh f -REP f gh -REP i igh -REP igh i -REP i uy -REP uy i -REP i ee -REP ee i -REP j di -REP di j -REP j gg -REP gg j -REP j ge -REP ge j -REP s ti -REP ti s -REP s ci -REP ci s -REP k cc -REP cc k -REP k qu -REP qu k -REP kw qu -REP o eau -REP eau o -REP o ew -REP ew o -REP oo ew -REP ew oo -REP ew ui -REP ui ew -REP oo ui -REP ui oo -REP ew u -REP u ew -REP oo u -REP u oo -REP u oe -REP oe u -REP u ieu -REP ieu u -REP ue ew -REP ew ue -REP uff ough -REP oo ieu -REP ieu oo -REP ier ear -REP ear ier -REP ear air -REP air ear -REP w qu -REP qu w -REP z ss -REP ss z -REP shun tion -REP shun sion -REP shun cion diff --git a/static/MarkDown-Editor/dicts/en_US.dic b/static/MarkDown-Editor/dicts/en_US.dic deleted file mode 100644 index ae35fa9..0000000 --- a/static/MarkDown-Editor/dicts/en_US.dic +++ /dev/null @@ -1,62120 +0,0 @@ -62118 -0/nm -1/n1 -2/nm -3/nm -4/nm -5/nm -6/nm -7/nm -8/nm -9/nm -0th/pt -1st/p -1th/tc -2nd/p -2th/tc -3rd/p -3th/tc -4th/pt -5th/pt -6th/pt -7th/pt -8th/pt -9th/pt -a -A -AA -AAA -Aachen/M -aardvark/SM -Aaren/M -Aarhus/M -Aarika/M -Aaron/M -AB -aback -abacus/SM -abaft -Abagael/M -Abagail/M -abalone/SM -abandoner/M -abandon/LGDRS -abandonment/SM -abase/LGDSR -abasement/S -abaser/M -abashed/UY -abashment/MS -abash/SDLG -abate/DSRLG -abated/U -abatement/MS -abater/M -abattoir/SM -Abba/M -Abbe/M -abb�/S -abbess/SM -Abbey/M -abbey/MS -Abbie/M -Abbi/M -Abbot/M -abbot/MS -Abbott/M -abbr -abbrev -abbreviated/UA -abbreviates/A -abbreviate/XDSNG -abbreviating/A -abbreviation/M -Abbye/M -Abby/M -ABC/M -Abdel/M -abdicate/NGDSX -abdication/M -abdomen/SM -abdominal/YS -abduct/DGS -abduction/SM -abductor/SM -Abdul/M -ab/DY -abeam -Abelard/M -Abel/M -Abelson/M -Abe/M -Aberdeen/M -Abernathy/M -aberrant/YS -aberrational -aberration/SM -abet/S -abetted -abetting -abettor/SM -Abeu/M -abeyance/MS -abeyant -Abey/M -abhorred -abhorrence/MS -abhorrent/Y -abhorrer/M -abhorring -abhor/S -abidance/MS -abide/JGSR -abider/M -abiding/Y -Abidjan/M -Abie/M -Abigael/M -Abigail/M -Abigale/M -Abilene/M -ability/IMES -abjection/MS -abjectness/SM -abject/SGPDY -abjuration/SM -abjuratory -abjurer/M -abjure/ZGSRD -ablate/VGNSDX -ablation/M -ablative/SY -ablaze -abler/E -ables/E -ablest -able/U -abloom -ablution/MS -Ab/M -ABM/S -abnegate/NGSDX -abnegation/M -Abner/M -abnormality/SM -abnormal/SY -aboard -abode/GMDS -abolisher/M -abolish/LZRSDG -abolishment/MS -abolitionism/SM -abolitionist/SM -abolition/SM -abominable -abominably -abominate/XSDGN -abomination/M -aboriginal/YS -aborigine/SM -Aborigine/SM -aborning -abortionist/MS -abortion/MS -abortiveness/M -abortive/PY -abort/SRDVG -Abo/SM! -abound/GDS -about/S -aboveboard -aboveground -above/S -abracadabra/S -abrader/M -abrade/SRDG -Abraham/M -Abrahan/M -Abra/M -Abramo/M -Abram/SM -Abramson/M -Abran/M -abrasion/MS -abrasiveness/S -abrasive/SYMP -abreaction/MS -abreast -abridge/DSRG -abridged/U -abridger/M -abridgment/SM -abroad -abrogate/XDSNG -abrogation/M -abrogator/SM -abruptness/SM -abrupt/TRYP -ABS -abscess/GDSM -abscissa/SM -abscission/SM -absconder/M -abscond/SDRZG -abseil/SGDR -absence/SM -absenteeism/SM -absentee/MS -absentia/M -absentmindedness/S -absentminded/PY -absent/SGDRY -absinthe/SM -abs/M -absoluteness/SM -absolute/NPRSYTX -absolution/M -absolutism/MS -absolutist/SM -absolve/GDSR -absolver/M -absorb/ASGD -absorbed/U -absorbency/MS -absorbent/MS -absorber/SM -absorbing/Y -absorption/MS -absorptive -absorptivity/M -abstainer/M -abstain/GSDRZ -abstemiousness/MS -abstemious/YP -abstention/SM -abstinence/MS -abstinent/Y -abstractedness/SM -abstracted/YP -abstracter/M -abstractionism/M -abstractionist/SM -abstraction/SM -abstractness/SM -abstractor/MS -abstract/PTVGRDYS -abstruseness/SM -abstruse/PRYT -absurdity/SM -absurdness/SM -absurd/PRYST -Abuja -abundance/SM -abundant/Y -abused/E -abuse/GVZDSRB -abuser/M -abuses/E -abusing/E -abusiveness/SM -abusive/YP -abut/LS -abutment/SM -abutted -abutter/MS -abutting -abuzz -abysmal/Y -abyssal -Abyssinia/M -Abyssinian -abyss/SM -AC -acacia/SM -academe/MS -academia/SM -academical/Y -academicianship -academician/SM -academic/S -academy/SM -Acadia/M -acanthus/MS -Acapulco/M -accede/SDG -accelerated/U -accelerate/NGSDXV -accelerating/Y -acceleration/M -accelerator/SM -accelerometer/SM -accented/U -accent/SGMD -accentual/Y -accentuate/XNGSD -accentuation/M -acceptability/SM -acceptability's/U -acceptableness/SM -acceptable/P -acceptably/U -acceptance/SM -acceptant -acceptation/SM -accepted/Y -accepter/M -accepting/PY -acceptor/MS -accept/RDBSZVG -accessed/A -accessibility/IMS -accessible/IU -accessibly/I -accession/SMDG -accessors -accessory/SM -access/SDMG -accidence/M -accidentalness/M -accidental/SPY -accident/MS -acclaimer/M -acclaim/SDRG -acclamation/MS -acclimate/XSDGN -acclimation/M -acclimatisation -acclimatise/DG -acclimatization/AMS -acclimatized/U -acclimatize/RSDGZ -acclimatizes/A -acclivity/SM -accolade/GDSM -accommodated/U -accommodate/XVNGSD -accommodating/Y -accommodation/M -accommodativeness/M -accommodative/P -accompanied/U -accompanier/M -accompaniment/MS -accompanist/SM -accompany/DRSG -accomplice/MS -accomplished/U -accomplisher/M -accomplishment/SM -accomplish/SRDLZG -accordance/SM -accordant/Y -accorder/M -according/Y -accordionist/SM -accordion/MS -accord/SZGMRD -accost/SGD -accountability/MS -accountability's/U -accountableness/M -accountable/U -accountably/U -accountancy/SM -accountant/MS -account/BMDSGJ -accounted/U -accounting/M -accouter/GSD -accouterments -accouterment's -accoutrement/M -Accra/M -accreditation/SM -accredited/U -accredit/SGD -accretion/SM -accrual/MS -accrue/SDG -acct -acculturate/XSDVNG -acculturation/M -accumulate/VNGSDX -accumulation/M -accumulativeness/M -accumulative/YP -accumulator/MS -accuracy/IMS -accurate/IY -accurateness/SM -accursedness/SM -accursed/YP -accusal/M -accusation/SM -accusative/S -accusatory -accused/M -accuser/M -accuse/SRDZG -accusing/Y -accustomedness/M -accustomed/P -accustom/SGD -ac/DRG -aced/M -acerbate/DSG -acerbic -acerbically -acerbity/MS -ace/SM -acetaminophen/S -acetate/MS -acetic -acetone/SM -acetonic -acetylene/MS -Acevedo/M -Achaean/M -Achebe/M -ached/A -ache/DSG -achene/SM -Achernar/M -aches/A -Acheson/M -achievable/U -achieved/UA -achieve/LZGRSDB -achievement/SM -achiever/M -Achilles -aching/Y -achoo -achromatic -achy/TR -acidic -acidification/M -acidify/NSDG -acidity/SM -acidness/M -acidoses -acidosis/M -acid/SMYP -acidulous -acing/M -Ackerman/M -acknowledgeable -acknowledgedly -acknowledged/U -acknowledge/GZDRS -acknowledger/M -acknowledgment/SAM -ACLU -Ac/M -ACM -acme/SM -acne/MDS -acolyte/MS -Aconcagua/M -aconite/MS -acorn/SM -Acosta/M -acoustical/Y -acoustician/M -acoustic/S -acoustics/M -acquaintance/MS -acquaintanceship/S -acquainted/U -acquaint/GASD -acquiesce/GSD -acquiescence/SM -acquiescent/Y -acquirable -acquire/ASDG -acquirement/SM -acquisition's/A -acquisition/SM -acquisitiveness/MS -acquisitive/PY -acquit/S -acquittal/MS -acquittance/M -acquitted -acquitter/M -acquitting -acreage/MS -acre/MS -acridity/MS -acridness/SM -acrid/TPRY -acrimoniousness/MS -acrimonious/YP -acrimony/MS -acrobatically -acrobatic/S -acrobatics/M -acrobat/SM -acronym/SM -acrophobia/SM -Acropolis/M -acropolis/SM -across -acrostic/SM -Acrux/M -acrylate/M -acrylic/S -ACT -Actaeon/M -Acta/M -ACTH -acting/S -actinic -actinide/SM -actinium/MS -actinometer/MS -action/DMSGB -actions/AI -action's/IA -activate/AXCDSNGI -activated/U -activation/AMCI -activator/SM -active/APY -actively/I -activeness/MS -actives -activism/MS -activist/MS -activities/A -activity/MSI -Acton/M -actor/MAS -actress/SM -act's -Acts -act/SADVG -actuality/SM -actualization/MAS -actualize/GSD -actualizes/A -actual/SY -actuarial/Y -actuary/MS -actuate/GNXSD -actuation/M -actuator/SM -acuity/MS -acumen/SM -acupressure/S -acupuncture/SM -acupuncturist/S -acuteness/MS -acute/YTSRP -acyclic -acyclically -acyclovir/S -AD -adage/MS -adagio/S -Adah/M -Adair/M -Adaline/M -Ada/M -adamant/SY -Adamo/M -Adam/SM -Adamson/M -Adana/M -Adan/M -adaptability/MS -adaptable/U -adaptation/MS -adaptedness/M -adapted/P -adapter/M -adapting/A -adaption -adaptively -adaptiveness/M -adaptive/U -adaptivity -adapt/SRDBZVG -Adara/M -ad/AS -ADC -Adda/M -Addams -addenda -addend/SM -addendum/M -adder/M -Addia/M -addiction/MS -addictive/P -addict/SGVD -Addie/M -Addi/M -Addison/M -additional/Y -addition/MS -additive/YMS -additivity -addle/GDS -addressability -addressable/U -addressed/A -addressee/SM -addresser/M -addresses/A -address/MDRSZGB -Addressograph/M -adduce/GRSD -adducer/M -adduct/DGVS -adduction/M -adductor/M -Addy/M -add/ZGBSDR -Adelaida/M -Adelaide/M -Adela/M -Adelbert/M -Adele/M -Adelheid/M -Adelice/M -Adelina/M -Adelind/M -Adeline/M -Adella/M -Adelle/M -Adel/M -Ade/M -Adena/M -Adenauer/M -adenine/SM -Aden/M -adenoidal -adenoid/S -adeptness/MS -adept/RYPTS -adequacy/IMS -adequate/IPY -adequateness's/I -adequateness/SM -Adey/M -Adham/M -Adhara/M -adherence/SM -adherent/YMS -adherer/M -adhere/ZGRSD -adhesion/MS -adhesiveness/MS -adhesive/PYMS -adiabatic -adiabatically -Adiana/M -Adidas/M -adieu/S -Adi/M -Adina/M -adi�s -adipose/S -Adirondack/SM -adj -adjacency/MS -adjacent/Y -adjectival/Y -adjective/MYS -adjoin/SDG -adjoint/M -adjourn/DGLS -adjournment/SM -adjudge/DSG -adjudicate/VNGXSD -adjudication/M -adjudicator/SM -adjudicatory -adjunct/VSYM -adjuration/SM -adjure/GSD -adjustable/U -adjustably -adjust/DRALGSB -adjusted/U -adjuster's/A -adjuster/SM -adjustive -adjustment/MAS -adjustor's -adjutant/SM -Adkins/M -Adlai/M -Adler/M -adman/M -admen -administer/GDJS -administrable -administrate/XSDVNG -administration/M -administrative/Y -administrator/MS -administratrix/M -admirableness/M -admirable/P -admirably -admiral/SM -admiralty/MS -Admiralty/S -admiration/MS -admirer/M -admire/RSDZBG -admiring/Y -admissibility/ISM -admissible/I -admissibly -admission/AMS -admit/AS -admittance/MS -admitted/A -admittedly -admitting/A -admix/SDG -admixture/SM -Adm/M -Ad/MN -admonisher/M -admonish/GLSRD -admonishing/Y -admonishment/SM -admonition/MS -admonitory -adobe/MS -adolescence/MS -adolescent/SYM -Adolf/M -Adolfo/M -Adolphe/M -Adolph/M -Adolpho/M -Adolphus/M -Ado/M -ado/MS -Adonis/SM -adopted/AU -adopter/M -adoption/MS -adoptive/Y -adopt/RDSBZVG -adopts/A -adorableness/SM -adorable/P -adorably -Adora/M -adoration/SM -adore/DSRGZB -Adoree/M -Adore/M -adorer/M -adoring/Y -adorned/U -Adorne/M -adornment/SM -adorn/SGLD -ADP -Adrea/M -adrenalin -adrenaline/MS -Adrenalin/MS -adrenal/YS -Adria/MX -Adriana/M -Adriane/M -Adrian/M -Adrianna/M -Adrianne/M -Adriano/M -Adriatic -Adriena/M -Adrien/M -Adrienne/M -adrift -adroitness/MS -adroit/RTYP -ads -ad's -adsorbate/M -adsorbent/S -adsorb/GSD -adsorption/MS -adsorptive/Y -adulate/GNDSX -adulation/M -adulator/SM -adulatory -adulterant/SM -adulterated/U -adulterate/NGSDX -adulteration/M -adulterer/SM -adulteress/MS -adulterous/Y -adultery/SM -adulthood/MS -adult/MYPS -adultness/M -adumbrate/XSDVGN -adumbration/M -adumbrative/Y -adv -advance/DSRLZG -advancement/MS -advancer/M -advantage/GMEDS -advantageous/EY -advantageousness/M -Adventist/M -adventist/S -adventitiousness/M -adventitious/PY -adventive/Y -Advent/SM -advent/SVM -adventurer/M -adventuresome -adventure/SRDGMZ -adventuress/SM -adventurousness/SM -adventurous/YP -adverbial/MYS -adverb/SM -adversarial -adversary/SM -adverse/DSRPYTG -adverseness/MS -adversity/SM -advert/GSD -advertised/U -advertise/JGZSRDL -advertisement/SM -advertiser/M -advertising/M -advertorial/S -advice/SM -Advil/M -advisability/SIM -advisable/I -advisableness/M -advisably -advisedly/I -advised/YU -advisee/MS -advisement/MS -adviser/M -advise/ZRSDGLB -advisor/S -advisor's -advisory/S -advocacy/SM -advocate/NGVDS -advocation/M -advt -adze's -adz/MDSG -Aegean -aegis/SM -Aelfric/M -Aeneas -Aeneid/M -aeolian -Aeolus/M -aeon's -aerate/XNGSD -aeration/M -aerator/MS -aerialist/MS -aerial/SMY -Aeriela/M -Aeriell/M -Aeriel/M -aerie/SRMT -aeroacoustic -aerobatic/S -aerobically -aerobic/S -aerodrome/SM -aerodynamically -aerodynamic/S -aerodynamics/M -aeronautical/Y -aeronautic/S -aeronautics/M -aerosolize/D -aerosol/MS -aerospace/SM -Aeschylus/M -Aesculapius/M -Aesop/M -aesthete/S -aesthetically -aestheticism/MS -aesthetics/M -aesthetic/U -aether/M -aetiology/M -AF -AFAIK -afar/S -AFB -AFC -AFDC -affability/MS -affable/TR -affably -affair/SM -affectation/MS -affectedness/EM -affected/UEYP -affect/EGSD -affecter/M -affecting/Y -affectionate/UY -affectioned -affection/EMS -affectioning -affective/MY -afferent/YS -affiance/GDS -affidavit/SM -affiliated/U -affiliate/EXSDNG -affiliation/EM -affine -affinity/SM -affirm/ASDG -affirmation/SAM -affirmative/SY -affix/SDG -afflatus/MS -afflict/GVDS -affliction/SM -afflictive/Y -affluence/SM -affluent/YS -afford/DSBG -afforest/A -afforestation/SM -afforested -afforesting -afforests -affray/MDSG -affricate/VNMS -affrication/M -affricative/M -affright -affront/GSDM -Afghani/SM -Afghanistan/M -afghan/MS -Afghan/SM -aficionado/MS -afield -afire -aflame -afloat -aflutter -afoot -afore -aforementioned -aforesaid -aforethought/S -afoul -Afr -afraid/U -afresh -Africa/M -African/MS -Afrikaans/M -Afrikaner/SM -afro -Afrocentric -Afrocentrism/S -Afro/MS -afterbirth/M -afterbirths -afterburner/MS -aftercare/SM -aftereffect/MS -afterglow/MS -afterimage/MS -afterlife/M -afterlives -aftermath/M -aftermaths -aftermost -afternoon/SM -aftershave/S -aftershock/SM -afters/M -aftertaste/SM -afterthought/MS -afterward/S -afterworld/MS -Afton/M -aft/ZR -Agace/M -again -against -Agamemnon/M -agapae -agape/S -agar/MS -Agassiz/M -Agata/M -agate/SM -Agatha/M -Agathe/M -agave/SM -agedness/M -aged/PY -age/GJDRSMZ -ageism/S -ageist/S -agelessness/MS -ageless/YP -agency/SM -agenda/MS -agent/AMS -agented -agenting -agentive -ageratum/M -Aggie/M -Aggi/M -agglomerate/XNGVDS -agglomeration/M -agglutinate/VNGXSD -agglutination/M -agglutinin/MS -aggrandize/LDSG -aggrandizement/SM -aggravate/SDNGX -aggravating/Y -aggravation/M -aggregated/U -aggregate/EGNVD -aggregately -aggregateness/M -aggregates -aggregation/SM -aggregative/Y -aggression/SM -aggressively -aggressiveness/S -aggressive/U -aggressor/MS -aggrieved/Y -aggrieve/GDS -Aggy/SM -aghast -agile/YTR -agility/MS -agitated/Y -agitate/XVNGSD -agitation/M -agitator/SM -agitprop/MS -Aglaia/M -agleam -aglitter -aglow -Ag/M -Agna/M -Agnella/M -Agnese/M -Agnes/M -Agnesse/M -Agneta/M -Agnew/M -Agni/M -Agnola/M -agnosticism/MS -agnostic/SM -ago -agog -agonizedly/S -agonized/Y -agonize/ZGRSD -agonizing/Y -agony/SM -agoraphobia/MS -agoraphobic/S -Agosto/M -Agra/M -agrarianism/MS -agrarian/S -agreeable/EP -agreeableness/SME -agreeably/E -agreeing/E -agree/LEBDS -agreement/ESM -agreer/S -Agretha/M -agribusiness/SM -Agricola/M -agriculturalist/S -agricultural/Y -agriculture/MS -agriculturist/SM -Agrippa/M -Agrippina/M -agrochemicals -agronomic/S -agronomist/SM -agronomy/MS -aground -Aguascalientes/M -ague/MS -Aguie/M -Aguilar/M -Aguinaldo/M -Aguirre/M -Aguistin/M -Aguste/M -Agustin/M -ah -Ahab/M -Aharon/M -aha/S -ahead -ahem/S -Ahmadabad -Ahmad/M -Ahmed/M -ahoy/S -Ahriman/M -AI -Aida/M -Aidan/M -aided/U -aide/MS -aider/M -AIDS -aid/ZGDRS -Aigneis/M -aigrette/SM -Aiken/M -Aila/M -Ailbert/M -Ailee/M -Aileen/M -Aile/M -Ailene/M -aileron/MS -Ailey/M -Ailina/M -Aili/SM -ail/LSDG -ailment/SM -Ailsun/M -Ailyn/M -Aimee/M -Aime/M -aimer/M -Aimil/M -aimlessness/MS -aimless/YP -aim/ZSGDR -Aindrea/M -Ainslee/M -Ainsley/M -Ainslie/M -ain't -Ainu/M -airbag/MS -airbase/S -airborne -airbrush/SDMG -Airbus/M -airbus/SM -aircraft/MS -aircrew/M -airdrop/MS -airdropped -airdropping -Airedale/SM -Aires -airfare/S -airfield/MS -airflow/SM -airfoil/MS -airframe/MS -airfreight/SGD -airhead/MS -airily -airiness/MS -airing/M -airlessness/S -airless/P -airlift/MDSG -airliner/M -airline/SRMZ -airlock/MS -airmail/DSG -airman/M -airmass -air/MDRTZGJS -airmen -airpark -airplane/SM -airplay/S -airport/MS -airship/MS -airsickness/SM -airsick/P -airspace/SM -airspeed/SM -airstrip/MS -airtightness/M -airtight/P -airtime -airwaves -airway/SM -airworthiness/SM -airworthy/PTR -airy/PRT -Aisha/M -aisle/DSGM -aitch/MS -ajar -Ajax/M -Ajay/M -AK -aka -Akbar/M -Akihito/M -akimbo -Akim/M -akin -Akita/M -Akkad/M -Akron/M -Aksel/M -AL -Alabama/M -Alabaman/S -Alabamian/MS -alabaster/MS -alack/S -alacrity/SM -Aladdin/M -Alaine/M -Alain/M -Alair/M -Alameda/M -Alamogordo/M -Alamo/SM -ala/MS -Ala/MS -Alanah/M -Alana/M -Aland/M -Alane/M -alanine/M -Alan/M -Alanna/M -Alano/M -Alanson/M -Alard/M -Alaric/M -Alar/M -alarming/Y -alarmist/MS -alarm/SDG -Alasdair/M -Alaska/M -Alaskan/S -alas/S -Alastair/M -Alasteir/M -Alaster/M -Alayne/M -albacore/SM -alba/M -Alba/M -Albania/M -Albanian/SM -Albany/M -albatross/SM -albedo/M -Albee/M -albeit -Alberich/M -Alberik/M -Alberio/M -Alberta/M -Albertan/S -Albertina/M -Albertine/M -Albert/M -Alberto/M -Albie/M -Albigensian -Albina/M -albinism/SM -albino/MS -Albion/M -Albireo/M -alb/MS -Albrecht/M -albumen/M -albumin/MS -albuminous -album/MNXS -Albuquerque/M -Alcatraz/M -Alcestis/M -alchemical -alchemist/SM -alchemy/MS -Alcibiades/M -Alcmena/M -Alcoa/M -alcoholically -alcoholic/MS -alcoholism/SM -alcohol/MS -Alcott/M -alcove/MSD -Alcuin/M -Alcyone/M -Aldan/M -Aldebaran/M -aldehyde/M -Alden/M -Alderamin/M -alderman/M -aldermen -alder/SM -alderwoman -alderwomen -Aldin/M -Aldis/M -Aldo/M -Aldon/M -Aldous/M -Aldrich/M -Aldric/M -Aldridge/M -Aldrin/M -Aldus/M -Aldwin/M -aleatory -Alecia/M -Aleck/M -Alec/M -Aleda/M -alee -Aleece/M -Aleen/M -alehouse/MS -Aleichem/M -Alejandra/M -Alejandrina/M -Alejandro/M -Alejoa/M -Aleksandr/M -Alembert/M -alembic/SM -ale/MVS -Alena/M -Alene/M -aleph/M -Aleppo/M -Aler/M -alerted/Y -alertness/MS -alert/STZGPRDY -Alessandra/M -Alessandro/M -Aleta/M -Alethea/M -Aleutian/S -Aleut/SM -alewife/M -alewives -Alexa/M -Alexander/SM -Alexandra/M -Alexandre/M -Alexandria/M -Alexandrian/S -Alexandrina/M -Alexandr/M -Alexandro/MS -Alexei/M -Alexia/M -Alexina/M -Alexine/M -Alexio/M -Alexi/SM -Alex/M -alfalfa/MS -Alfa/M -Alfie/M -Alfi/M -Alf/M -Alfonse/M -Alfons/M -Alfonso/M -Alfonzo/M -Alford/M -Alfreda/M -Alfred/M -Alfredo/M -alfresco -Alfy/M -algae -algaecide -algal -alga/M -algebraic -algebraical/Y -algebraist/M -algebra/MS -Algenib/M -Algeria/M -Algerian/MS -Alger/M -Algernon/M -Algieba/M -Algiers/M -alginate/SM -ALGOL -Algol/M -Algonquian/SM -Algonquin/SM -algorithmic -algorithmically -algorithm/MS -Alhambra/M -Alhena/M -Alia/M -alias/GSD -alibi/MDSG -Alica/M -Alicea/M -Alice/M -Alicia/M -Alick/M -Alic/M -Alida/M -Alidia/M -Alie/M -alienable/IU -alienate/SDNGX -alienation/M -alienist/MS -alien/RDGMBS -Alighieri/M -alight/DSG -aligned/U -aligner/SM -align/LASDG -alignment/SAM -Alika/M -Alikee/M -alikeness/M -alike/U -alimentary -aliment/SDMG -alimony/MS -Ali/MS -Alina/M -Aline/M -alinement's -Alioth/M -aliquot/S -Alisa/M -Alisander/M -Alisha/M -Alison/M -Alissa/M -Alistair/M -Alister/M -Alisun/M -aliveness/MS -alive/P -Alix/M -aliyah/M -aliyahs -Aliza/M -Alkaid/M -alkalies -alkali/M -alkaline -alkalinity/MS -alkalize/SDG -alkaloid/MS -alkyd/S -alkyl/M -Allahabad/M -Allah/M -Alla/M -Allan/M -Allard/M -allay/GDS -Allayne/M -Alleen/M -allegation/SM -alleged/Y -allege/SDG -Allegheny/MS -allegiance/SM -allegiant -allegoric -allegoricalness/M -allegorical/YP -allegorist/MS -allegory/SM -Allegra/M -allegretto/MS -allegri -allegro/MS -allele/SM -alleluia/S -allemande/M -Allendale/M -Allende/M -Allene/M -Allen/M -Allentown/M -allergenic -allergen/MS -allergic -allergically -allergist/MS -allergy/MS -alleviate/SDVGNX -alleviation/M -alleviator/MS -Alley/M -alley/MS -Alleyn/M -alleyway/MS -Allhallows -alliance/MS -Allianora/M -Allie/M -allier -allies/M -alligator/DMGS -Alli/MS -Allina/M -Allin/M -Allison/M -Allissa/M -Allister/M -Allistir/M -alliterate/XVNGSD -alliteration/M -alliterative/Y -Allix/M -allocable/U -allocatable -allocate/ACSDNGX -allocated/U -allocation/AMC -allocative -allocator/AMS -allophone/MS -allophonic -allotment/MS -allotments/A -allotrope/M -allotropic -allots/A -allot/SDL -allotted/A -allotter/M -allotting/A -allover/S -allowableness/M -allowable/P -allowably -allowance/GSDM -allowed/Y -allowing/E -allow/SBGD -allows/E -alloyed/U -alloy/SGMD -all/S -allspice/MS -Allstate/M -Allsun/M -allude/GSD -allure/GLSD -allurement/SM -alluring/Y -allusion/MS -allusiveness/MS -allusive/PY -alluvial/S -alluvions -alluvium/MS -Allx/M -ally/ASDG -Allyce/M -Ally/MS -Allyn/M -Allys -Allyson/M -alma -Almach/M -Almaden/M -almagest -Alma/M -almanac/MS -Almaty/M -Almeda/M -Almeria/M -Almeta/M -almightiness/M -Almighty/M -almighty/P -Almira/M -Almire/M -almond/SM -almoner/MS -almost -Al/MRY -alms/A -almshouse/SM -almsman/M -alnico -Alnilam/M -Alnitak/M -aloe/MS -aloft -aloha/SM -Aloin/M -Aloise/M -Aloisia/M -aloneness/M -alone/P -along -alongshore -alongside -Alon/M -Alonso/M -Alonzo/M -aloofness/MS -aloof/YP -aloud -Aloysia/M -Aloysius/M -alpaca/SM -Alpert/M -alphabetical/Y -alphabetic/S -alphabetization/SM -alphabetizer/M -alphabetize/SRDGZ -alphabet/SGDM -alpha/MS -alphanumerical/Y -alphanumeric/S -Alphard/M -Alphecca/M -Alpheratz/M -Alphonse/M -Alphonso/M -Alpine -alpine/S -alp/MS -Alps -already -Alric/M -alright -Alsace/M -Alsatian/MS -also -Alsop/M -Alston/M -Altaic/M -Altai/M -Altair/M -Alta/M -altar/MS -altarpiece/SM -alterable/UI -alteration/MS -altercate/NX -altercation/M -altered/U -alternate/SDVGNYX -alternation/M -alternativeness/M -alternative/YMSP -alternator/MS -alter/RDZBG -Althea/M -although -altimeter/SM -Altiplano/M -altitude/SM -altogether/S -Alton/M -alto/SM -Altos/M -altruism/SM -altruistic -altruistically -altruist/SM -alt/RZS -ALU -Aludra/M -Aluin/M -Aluino/M -alumina/SM -aluminum/MS -alumnae -alumna/M -alumni -alumnus/MS -alum/SM -alundum -Alva/M -Alvan/M -Alvarado/M -Alvarez/M -Alvaro/M -alveolar/Y -alveoli -alveolus/M -Alvera/M -Alverta/M -Alvie/M -Alvina/M -Alvinia/M -Alvin/M -Alvira/M -Alvis/M -Alvy/M -alway/S -Alwin/M -Alwyn/M -Alyce/M -Alyda/M -Alyosha/M -Alysa/M -Alyse/M -Alysia/M -Alys/M -Alyson/M -Alyss -Alyssa/M -Alzheimer/M -AM -AMA -Amabelle/M -Amabel/M -Amadeus/M -Amado/M -amain -Amalea/M -Amalee/M -Amaleta/M -amalgamate/VNGXSD -amalgamation/M -amalgam/MS -Amalia/M -Amalie/M -Amalita/M -Amalle/M -Amanda/M -Amandie/M -Amandi/M -Amandy/M -amanuenses -amanuensis/M -Amara/M -amaranth/M -amaranths -amaretto/S -Amargo/M -Amarillo/M -amaryllis/MS -am/AS -amasser/M -amass/GRSD -Amata/M -amateurishness/MS -amateurish/YP -amateurism/MS -amateur/SM -Amati/M -amatory -amazed/Y -amaze/LDSRGZ -amazement/MS -amazing/Y -amazonian -Amazonian -amazon/MS -Amazon/SM -ambassadorial -ambassador/MS -ambassadorship/MS -ambassadress/SM -ambergris/SM -Amberly/M -amber/MS -Amber/YM -ambiance/MS -ambidexterity/MS -ambidextrous/Y -ambience's -ambient/S -ambiguity/MS -ambiguously/U -ambiguousness/M -ambiguous/YP -ambition/GMDS -ambitiousness/MS -ambitious/PY -ambit/M -ambivalence/SM -ambivalent/Y -amble/GZDSR -Amble/M -ambler/M -ambrose -Ambrose/M -ambrosial/Y -ambrosia/SM -Ambrosi/M -Ambrosio/M -Ambrosius/M -Ambros/M -ambulance/MS -ambulant/S -ambulate/DSNGX -ambulation/M -ambulatory/S -Ambur/M -ambuscade/MGSRD -ambuscader/M -ambusher/M -ambush/MZRSDG -Amby/M -Amdahl/M -ameba's -Amelia/M -Amelie/M -Amelina/M -Ameline/M -ameliorate/XVGNSD -amelioration/M -Amelita/M -amenability/SM -amenably -amended/U -amender/M -amendment/SM -amen/DRGTSB -amend/SBRDGL -amends/M -Amenhotep/M -amenity/MS -amenorrhea/M -Amerada/M -Amerasian/S -amercement/MS -amerce/SDLG -Americana/M -Americanism/SM -Americanization/SM -americanized -Americanize/SDG -American/MS -America/SM -americium/MS -Amerigo/M -Amerindian/MS -Amerind/MS -Amer/M -Amery/M -Ameslan/M -Ame/SM -amethystine -amethyst/MS -Amharic/M -Amherst/M -amiability/MS -amiableness/M -amiable/RPT -amiably -amicability/SM -amicableness/M -amicable/P -amicably -amide/SM -amid/S -amidships -amidst -Amie/M -Amiga/M -amigo/MS -Amii/M -Amil/M -Ami/M -amines -aminobenzoic -amino/M -amir's -Amish -amiss -Amitie/M -Amity/M -amity/SM -Ammamaria/M -Amman/M -Ammerman/M -ammeter/MS -ammo/MS -ammoniac -ammonia/MS -ammonium/M -Am/MR -ammunition/MS -amnesiac/MS -amnesia/SM -amnesic/S -amnesty/GMSD -amniocenteses -amniocentesis/M -amnion/SM -amniotic -Amoco/M -amoeba/SM -amoebic -amoeboid -amok/MS -among -amongst -Amontillado/M -amontillado/MS -amorality/MS -amoral/Y -amorousness/SM -amorous/PY -amorphousness/MS -amorphous/PY -amortization/SUM -amortized/U -amortize/SDG -Amory/M -Amos -amount/SMRDZG -amour/MS -Amparo/M -amperage/SM -Ampere/M -ampere/MS -ampersand/MS -Ampex/M -amphetamine/MS -amphibian/SM -amphibiousness/M -amphibious/PY -amphibology/M -amphitheater/SM -amphorae -amphora/M -ampleness/M -ample/PTR -amplification/M -amplifier/M -amplify/DRSXGNZ -amplitude/MS -ampoule's -amp/SGMDY -ampule/SM -amputate/DSNGX -amputation/M -amputee/SM -Amritsar/M -ams -Amsterdam/M -amt -Amtrak/M -amuck's -amulet/SM -Amundsen/M -Amur/M -amused/Y -amuse/LDSRGVZ -amusement/SM -amuser/M -amusingness/M -amusing/YP -Amway/M -Amye/M -amylase/MS -amyl/M -Amy/M -Anabal/M -Anabaptist/SM -Anabella/M -Anabelle/M -Anabel/M -anabolic -anabolism/MS -anachronism/SM -anachronistic -anachronistically -Anacin/M -anaconda/MS -Anacreon/M -anaerobe/SM -anaerobic -anaerobically -anaglyph/M -anagrammatic -anagrammatically -anagrammed -anagramming -anagram/MS -Anaheim/M -Analects/M -analgesia/MS -analgesic/S -Analiese/M -Analise/M -Anallese/M -Anallise/M -analogical/Y -analogize/SDG -analogousness/MS -analogous/YP -analog/SM -analogue/SM -analogy/MS -anal/Y -analysand/MS -analyses -analysis/AM -analyst/SM -analytical/Y -analyticity/S -analytic/S -analytics/M -analyzable/U -analyze/DRSZGA -analyzed/U -analyzer/M -Ana/M -anamorphic -Ananias/M -anapaest's -anapestic/S -anapest/SM -anaphora/M -anaphoric -anaphorically -anaplasmosis/M -anarchic -anarchical/Y -anarchism/MS -anarchistic -anarchist/MS -anarchy/MS -Anastasia/M -Anastasie/M -Anastassia/M -anastigmatic -anastomoses -anastomosis/M -anastomotic -anathema/MS -anathematize/GSD -Anatola/M -Anatole/M -Anatolia/M -Anatolian -Anatollo/M -Anatol/M -anatomic -anatomical/YS -anatomist/MS -anatomize/GSD -anatomy/MS -Anaxagoras/M -Ancell/M -ancestor/SMDG -ancestral/Y -ancestress/SM -ancestry/SM -Anchorage/M -anchorage/SM -anchored/U -anchorite/MS -anchoritism/M -anchorman/M -anchormen -anchorpeople -anchorperson/S -anchor/SGDM -anchorwoman -anchorwomen -anchovy/MS -ancientness/MS -ancient/SRYTP -ancillary/S -an/CS -Andalusia/M -Andalusian -Andaman -andante/S -and/DZGS -Andean/M -Andeee/M -Andee/M -Anderea/M -Andersen/M -Anders/N -Anderson/M -Andes -Andie/M -Andi/M -andiron/MS -Andonis/M -Andorra/M -Andover/M -Andra/SM -Andrea/MS -Andreana/M -Andree/M -Andrei/M -Andrej/M -Andre/SM -Andrew/MS -Andrey/M -Andria/M -Andriana/M -Andriette/M -Andris -androgenic -androgen/SM -androgynous -androgyny/SM -android/MS -Andromache/M -Andromeda/M -Andropov/M -Andros/M -Andrus/M -Andy/M -anecdotal/Y -anecdote/SM -anechoic -anemia/SM -anemically -anemic/S -anemometer/MS -anemometry/M -anemone/SM -anent -aneroid -Anestassia/M -anesthesia/MS -anesthesiologist/MS -anesthesiology/SM -anesthetically -anesthetic/SM -anesthetist/MS -anesthetization/SM -anesthetizer/M -anesthetize/ZSRDG -Anet/M -Anetta/M -Anette/M -Anett/M -aneurysm/MS -anew -Angara/M -Angela/M -Angeleno/SM -Angele/SM -angelfish/SM -Angelia/M -angelic -angelical/Y -Angelica/M -angelica/MS -Angelico/M -Angelika/M -Angeli/M -Angelina/M -Angeline/M -Angelique/M -Angelita/M -Angelle/M -Angel/M -angel/MDSG -Angelo/M -Angelou/M -Ange/M -anger/GDMS -Angevin/M -Angie/M -Angil/M -angina/MS -angiography -angioplasty/S -angiosperm/MS -Angkor/M -angle/GMZDSRJ -angler/M -Angles -angleworm/MS -Anglia/M -Anglicanism/MS -Anglican/MS -Anglicism/SM -Anglicization/MS -anglicize/SDG -Anglicize/SDG -angling/M -Anglo/MS -Anglophile/SM -Anglophilia/M -Anglophobe/MS -Anglophobia/M -Angola/M -Angolan/S -angora/MS -Angora/MS -angrily -angriness/M -angry/RTP -angst/MS -�ngstr�m/M -angstrom/MS -Anguilla/M -anguish/DSMG -angularity/MS -angular/Y -Angus/M -Angy/M -Anheuser/M -anhydride/M -anhydrite/M -anhydrous/Y -Aniakchak/M -Ania/M -Anibal/M -Anica/M -aniline/SM -animadversion/SM -animadvert/DSG -animalcule/MS -animal/MYPS -animated/A -animatedly -animately/I -animateness/MI -animates/A -animate/YNGXDSP -animating/A -animation/AMS -animator/SM -animism/SM -animistic -animist/S -animized -animosity/MS -animus/SM -anionic/S -anion/MS -aniseed/MS -aniseikonic -anise/MS -anisette/SM -anisotropic -anisotropy/MS -Anissa/M -Anita/M -Anitra/M -Anjanette/M -Anjela/M -Ankara/M -ankh/M -ankhs -anklebone/SM -ankle/GMDS -anklet/MS -Annabal/M -Annabela/M -Annabella/M -Annabelle/M -Annabell/M -Annabel/M -Annadiana/M -Annadiane/M -Annalee/M -Annaliese/M -Annalise/M -annalist/MS -annal/MNS -Anna/M -Annamaria/M -Annamarie/M -Annapolis/M -Annapurna/M -anneal/DRSZG -annealer/M -Annecorinne/M -annelid/MS -Anneliese/M -Annelise/M -Anne/M -Annemarie/M -Annetta/M -Annette/M -annexation/SM -annexe/M -annex/GSD -Annice/M -Annie/M -annihilate/XSDVGN -annihilation/M -annihilator/MS -Anni/MS -Annissa/M -anniversary/MS -Ann/M -Annmaria/M -Annmarie/M -Annnora/M -Annora/M -annotated/U -annotate/VNGXSD -annotation/M -annotator/MS -announced/U -announcement/SM -announcer/M -announce/ZGLRSD -annoyance/MS -annoyer/M -annoying/Y -annoy/ZGSRD -annualized -annual/YS -annuitant/MS -annuity/MS -annular/YS -annuli -annulled -annulling -annulment/MS -annul/SL -annulus/M -annum -annunciate/XNGSD -annunciation/M -Annunciation/S -annunciator/SM -Anny/M -anode/SM -anodic -anodize/GDS -anodyne/SM -anoint/DRLGS -anointer/M -anointment/SM -anomalousness/M -anomalous/YP -anomaly/MS -anomic -anomie/M -anon/S -anonymity/MS -anonymousness/M -anonymous/YP -anopheles/M -anorak/SM -anorectic/S -anorexia/SM -anorexic/S -another/M -Anouilh/M -Ansell/M -Ansel/M -Anselma/M -Anselm/M -Anselmo/M -Anshan/M -ANSI/M -Ansley/M -ans/M -Anson/M -Anstice/M -answerable/U -answered/U -answerer/M -answer/MZGBSDR -antacid/MS -Antaeus/M -antagonism/MS -antagonistic -antagonistically -antagonist/MS -antagonized/U -antagonize/GZRSD -antagonizing/U -Antananarivo/M -antarctic -Antarctica/M -Antarctic/M -Antares -anteater/MS -antebellum -antecedence/MS -antecedent/SMY -antechamber/SM -antedate/GDS -antediluvian/S -anteing -antelope/MS -ante/MS -antenatal -antennae -antenna/MS -anterior/SY -anteroom/SM -ant/GSMD -Anthea/M -Anthe/M -anthem/MGDS -anther/MS -Anthia/M -Anthiathia/M -anthill/S -anthologist/MS -anthologize/GDS -anthology/SM -Anthony/M -anthraces -anthracite/MS -anthrax/M -anthropic -anthropocentric -anthropogenic -anthropoid/S -anthropological/Y -anthropologist/MS -anthropology/SM -anthropometric/S -anthropometry/M -anthropomorphic -anthropomorphically -anthropomorphism/SM -anthropomorphizing -anthropomorphous -antiabortion -antiabortionist/S -antiaircraft -antibacterial/S -antibiotic/SM -antibody/MS -anticancer -Antichrist/MS -anticipated/U -anticipate/XVGNSD -anticipation/M -anticipative/Y -anticipatory -anticked -anticking -anticlerical/S -anticlimactic -anticlimactically -anticlimax/SM -anticline/SM -anticlockwise -antic/MS -anticoagulant/S -anticoagulation/M -anticommunism/SM -anticommunist/SM -anticompetitive -anticyclone/MS -anticyclonic -antidemocratic -antidepressant/SM -antidisestablishmentarianism/M -antidote/DSMG -Antietam/M -antifascist/SM -antiformant -antifreeze/SM -antifundamentalist/M -antigenic -antigenicity/SM -antigen/MS -antigone -Antigone/M -Antigua/M -antiheroes -antihero/M -antihistamine/MS -antihistorical -antiknock/MS -antilabor -Antillean -Antilles -antilogarithm/SM -antilogs -antimacassar/SM -antimalarial/S -antimatter/SM -antimicrobial/S -antimissile/S -antimony/SM -anting/M -Antin/M -antinomian -antinomy/M -antinuclear -Antioch/M -antioxidant/MS -antiparticle/SM -Antipas/M -antipasti -antipasto/MS -antipathetic -antipathy/SM -antipersonnel -antiperspirant/MS -antiphonal/SY -antiphon/SM -antipodal/S -antipodean/S -antipode/MS -Antipodes -antipollution/S -antipoverty -antiquarianism/MS -antiquarian/MS -antiquary/SM -antiquate/NGSD -antiquation/M -antique/MGDS -antiquity/SM -antiredeposition -antiresonance/M -antiresonator -anti/S -antisemitic -antisemitism/M -antisepses -antisepsis/M -antiseptically -antiseptic/S -antiserum/SM -antislavery/S -antisocial/Y -antispasmodic/S -antisubmarine -antisymmetric -antisymmetry -antitank -antitheses -antithesis/M -antithetic -antithetical/Y -antithyroid -antitoxin/MS -antitrust/MR -antivenin/MS -antiviral/S -antivivisectionist/S -antiwar -antler/SDM -Antofagasta/M -Antoine/M -Antoinette/M -Antonella/M -Antone/M -Antonetta/M -Antonia/M -Antonie/M -Antonietta/M -Antoni/M -Antonina/M -Antonin/M -Antonino/M -Antoninus/M -Antonio/M -Antonius/M -Anton/MS -Antonovics/M -Antony/M -antonymous -antonym/SM -antral -antsy/RT -Antwan/M -Antwerp/M -Anubis/M -anus/SM -anvil/MDSG -anxiety/MS -anxiousness/SM -anxious/PY -any -Anya/M -anybody/S -anyhow -Any/M -anymore -anyone/MS -anyplace -anything/S -anytime -anyway/S -anywhere/S -anywise -AOL/M -aorta/MS -aortic -AP -apace -apache/MS -Apache/MS -Apalachicola/M -apartheid/SM -apart/LP -apartment/MS -apartness/M -apathetic -apathetically -apathy/SM -apatite/MS -APB -aped/A -apelike -ape/MDRSG -Apennines -aper/A -aperiodic -aperiodically -aperiodicity/M -aperitif/S -aperture/MDS -apex/MS -aphasia/SM -aphasic/S -aphelia -aphelion/SM -aphid/MS -aphonic -aphorism/MS -aphoristic -aphoristically -aphrodisiac/SM -Aphrodite/M -Apia/M -apiarist/SM -apiary/SM -apical/YS -apices's -apiece -apishness/M -apish/YP -aplenty -aplomb/SM -APO -Apocalypse/M -apocalypse/MS -apocalyptic -apocryphalness/M -apocryphal/YP -apocrypha/M -Apocrypha/M -apogee/MS -apolar -apolitical/Y -Apollinaire/M -Apollonian -Apollo/SM -apologetically/U -apologetic/S -apologetics/M -apologia/SM -apologist/MS -apologize/GZSRD -apologizer/M -apologizes/A -apologizing/U -apology/MS -apoplectic -apoplexy/SM -apostasy/SM -apostate/SM -apostatize/DSG -apostleship/SM -apostle/SM -apostolic -apostrophe/SM -apostrophized -apothecary/MS -apothegm/MS -apotheoses -apotheosis/M -apotheosized -apotheosizes -apotheosizing -Appalachia/M -Appalachian/MS -appalling/Y -appall/SDG -Appaloosa/MS -appaloosa/S -appanage/M -apparatus/SM -apparel/SGMD -apparency -apparently/I -apparentness/M -apparent/U -apparition/SM -appealer/M -appealing/UY -appeal/SGMDRZ -appear/AEGDS -appearance/AMES -appearer/S -appease/DSRGZL -appeased/U -appeasement/MS -appeaser/M -appellant/MS -appellate/VNX -appellation/M -appellative/MY -appendage/MS -appendectomy/SM -appendices -appendicitis/SM -appendix/SM -append/SGZDR -appertain/DSG -appetite/MVS -appetizer/SM -appetizing/YU -Appia/M -Appian/M -applauder/M -applaud/ZGSDR -applause/MS -applecart/M -applejack/MS -Apple/M -apple/MS -applesauce/SM -Appleseed/M -Appleton/M -applet/S -appliance/SM -applicabilities -applicability/IM -applicable/I -applicably -applicant/MS -applicate/V -application/MA -applicative/Y -applicator/MS -applier/SM -appliqu�d -appliqu�/MSG -apply/AGSDXN -appointee/SM -appoint/ELSADG -appointer/MS -appointive -appointment/ASEM -Appolonia/M -Appomattox/M -apportion/GADLS -apportionment/SAM -appose/SDG -appositeness/MS -apposite/XYNVP -apposition/M -appositive/SY -appraisal/SAM -appraised/A -appraisees -appraiser/M -appraises/A -appraise/ZGDRS -appraising/Y -appreciable/I -appreciably/I -appreciated/U -appreciate/XDSNGV -appreciation/M -appreciativeness/MI -appreciative/PIY -appreciator/MS -appreciatory -apprehend/DRSG -apprehender/M -apprehensible -apprehension/SM -apprehensiveness/SM -apprehensive/YP -apprentice/DSGM -apprenticeship/SM -apprise/DSG -apprizer/SM -apprizingly -apprizings -approachability/UM -approachable/UI -approach/BRSDZG -approacher/M -approbate/NX -approbation/EMS -appropriable -appropriated/U -appropriately/I -appropriateness/SMI -appropriate/XDSGNVYTP -appropriation/M -appropriator/SM -approval/ESM -approve/DSREG -approved/U -approver's/E -approver/SM -approving/YE -approx -approximate/XGNVYDS -approximation/M -approximative/Y -appurtenance/MS -appurtenant/S -APR -apricot/MS -Aprilette/M -April/MS -Apr/M -apron/SDMG -apropos -apse/MS -apsis/M -apter -aptest -aptitude/SM -aptness/SMI -aptness's/U -apt/UPYI -Apuleius/M -aquaculture/MS -aqualung/SM -aquamarine/SM -aquanaut/SM -aquaplane/GSDM -aquarium/MS -Aquarius/MS -aqua/SM -aquatically -aquatic/S -aquavit/SM -aqueduct/MS -aqueous/Y -aquiculture's -aquifer/SM -Aquila/M -aquiline -Aquinas/M -Aquino/M -Aquitaine/M -AR -Arabela/M -Arabele/M -Arabella/M -Arabelle/M -Arabel/M -arabesque/SM -Arabia/M -Arabian/MS -Arabic/M -arability/MS -Arabist/MS -arable/S -Arab/MS -Araby/M -Araceli/M -arachnid/MS -arachnoid/M -arachnophobia -Arafat/M -Araguaya/M -Araldo/M -Aral/M -Ara/M -Aramaic/M -Aramco/M -Arapahoes -Arapahoe's -Arapaho/MS -Ararat/M -Araucanian/M -Arawakan/M -Arawak/M -arbiter/MS -arbitrage/GMZRSD -arbitrager/M -arbitrageur/S -arbitrament/MS -arbitrarily -arbitrariness/MS -arbitrary/P -arbitrate/SDXVNG -arbitration/M -arbitrator/SM -arbor/DMS -arboreal/Y -arbores -arboretum/MS -arborvitae/MS -arbutus/SM -ARC -arcade/SDMG -Arcadia/M -Arcadian -arcana/M -arcane/P -arc/DSGM -archaeological/Y -archaeologist/SM -archaically -archaic/P -Archaimbaud/M -archaism/SM -archaist/MS -archaize/GDRSZ -archaizer/M -Archambault/M -archangel/SM -archbishopric/SM -archbishop/SM -archdeacon/MS -archdiocesan -archdiocese/SM -archduchess/MS -archduke/MS -Archean -archenemy/SM -archeologist's -archeology/MS -archer/M -Archer/M -archery/MS -archetypal -archetype/SM -archfiend/SM -archfool -Archibald/M -Archibaldo/M -Archibold/M -Archie/M -archiepiscopal -Archimedes/M -arching/M -archipelago/SM -architect/MS -architectonic/S -architectonics/M -architectural/Y -architecture/SM -architrave/MS -archival -archive/DRSGMZ -archived/U -archivist/MS -Arch/MR -archness/MS -arch/PGVZTMYDSR -archway/SM -Archy/M -arclike -ARCO/M -arcsine -arctangent -Arctic/M -arctic/S -Arcturus/M -Ardabil -Arda/MH -Ardath/M -Ardeen/M -Ardelia/M -Ardelis/M -Ardella/M -Ardelle/M -ardency/M -Ardene/M -Ardenia/M -Arden/M -ardent/Y -Ardine/M -Ardisj/M -Ardis/M -Ardith/M -ardor/SM -Ardra/M -arduousness/SM -arduous/YP -Ardyce/M -Ardys -Ardyth/M -areal -area/SM -areawide -are/BS -Arel/M -arenaceous -arena/SM -aren't -Arequipa/M -Ares -Aretha/M -Argentina/M -Argentinean/S -Argentine/SM -Argentinian/S -argent/MS -arginine/MS -Argonaut/MS -argonaut/S -argon/MS -Argonne/M -Argo/SM -argosy/SM -argot/SM -arguable/IU -arguably/IU -argue/DSRGZ -arguer/M -argumentation/SM -argumentativeness/MS -argumentative/YP -argument/SM -Argus/M -argyle/S -Ariadne/M -Ariana/M -Arianism/M -Arianist/SM -aria/SM -Aridatha/M -aridity/SM -aridness/M -arid/TYRP -Ariela/M -Ariella/M -Arielle/M -Ariel/M -Arie/SM -Aries/S -aright -Ari/M -Arin/M -Ario/M -Ariosto/M -arise/GJSR -arisen -Aristarchus/M -Aristides -aristocracy/SM -aristocratic -aristocratically -aristocrat/MS -Aristophanes/M -Aristotelean -Aristotelian/M -Aristotle/M -arithmetical/Y -arithmetician/SM -arithmetic/MS -arithmetize/SD -Arius/M -Ariz/M -Arizona/M -Arizonan/S -Arizonian/S -Arjuna/M -Arkansan/MS -Arkansas/M -Arkhangelsk/M -Ark/M -ark/MS -Arkwright/M -Arlana/M -Arlan/M -Arlee/M -Arleen/M -Arlena/M -Arlene/M -Arlen/M -Arleta/M -Arlette/M -Arley/M -Arleyne/M -Arlie/M -Arliene/M -Arlina/M -Arlinda/M -Arline/M -Arlington/M -Arlin/M -Arluene/M -Arly/M -Arlyne/M -Arlyn/M -Armada/M -armada/SM -armadillo/MS -Armageddon/SM -Armagnac/M -armament/EAS -armament's/E -Armand/M -Armando/M -Arman/M -arm/ASEDG -Armata/M -armature/MGSD -armband/SM -armchair/MS -Armco/M -armed/U -Armenia/M -Armenian/MS -armer/MES -armful/SM -armhole/MS -arming/M -Arminius/M -Armin/M -armistice/MS -armless -armlet/SM -armload/M -Armonk/M -armored/U -armorer/M -armorial/S -armory/DSM -armor/ZRDMGS -Armour/M -armpit/MS -armrest/MS -arm's -Armstrong/M -Ar/MY -army/SM -Arnaldo/M -Arneb/M -Arne/M -Arney/M -Arnhem/M -Arnie/M -Arni/M -Arnold/M -Arnoldo/M -Arno/M -Arnuad/M -Arnulfo/M -Arny/M -aroma/SM -aromatherapist/S -aromatherapy/S -aromatically -aromaticity/M -aromaticness/M -aromatic/SP -Aron/M -arose -around -arousal/MS -aroused/U -arouse/GSD -ARPA/M -Arpanet/M -ARPANET/M -arpeggio/SM -arrack/M -Arragon/M -arraignment/MS -arraign/SDGL -arrangeable/A -arranged/EA -arrangement/AMSE -arranger/M -arranges/EA -arrange/ZDSRLG -arranging/EA -arrant/Y -arras/SM -arrayer -array/ESGMD -arrear/SM -arrest/ADSG -arrestee/MS -arrester/MS -arresting/Y -arrestor/MS -Arrhenius/M -arrhythmia/SM -arrhythmic -arrhythmical -Arri/M -arrival/MS -arriver/M -arrive/SRDG -arrogance/MS -arrogant/Y -arrogate/XNGDS -arrogation/M -Arron/M -arrowhead/SM -arrowroot/MS -arrow/SDMG -arroyo/MS -arr/TV -arsenal/MS -arsenate/M -arsenic/MS -arsenide/M -arsine/MS -arsonist/MS -arson/SM -Artair/M -Artaxerxes/M -artefact's -Arte/M -Artemas -Artemis/M -Artemus/M -arterial/SY -arteriolar -arteriole/SM -arterioscleroses -arteriosclerosis/M -artery/SM -artesian -artfulness/SM -artful/YP -Arther/M -arthritic/S -arthritides -arthritis/M -arthrogram/MS -arthropod/SM -arthroscope/S -arthroscopic -Arthurian -Arthur/M -artichoke/SM -article/GMDS -articulable/I -articular -articulated/EU -articulately/I -articulateness/IMS -articulates/I -articulate/VGNYXPSD -articulation/M -articulator/SM -articulatory -Artie/M -artifact/MS -artificer/M -artifice/ZRSM -artificiality/MS -artificialness/M -artificial/PY -artillerist -artilleryman/M -artillerymen -artillery/SM -artiness/MS -artisan/SM -artiste/SM -artistically/I -artistic/I -artist/MS -artistry/SM -artlessness/MS -artless/YP -Art/M -art/SM -artsy/RT -Artur/M -Arturo/M -Artus/M -artwork/MS -Arty/M -arty/TPR -Aruba/M -arum/MS -Arvie/M -Arvin/M -Arv/M -Arvy/M -Aryan/MS -Aryn/M -as -As -A's -Asa/M -Asama/M -asap -ASAP -asbestos/MS -Ascella/M -ascend/ADGS -ascendancy/MS -ascendant/SY -ascender/SM -Ascension/M -ascension/SM -ascent/SM -ascertain/DSBLG -ascertainment/MS -ascetically -asceticism/MS -ascetic/SM -ASCII -ascot/MS -ascribe/GSDB -ascription/MS -ascriptive -Ase/M -aseptically -aseptic/S -asexuality/MS -asexual/Y -Asgard/M -ashame/D -ashamed/UY -Ashanti/M -Ashbey/M -Ashby/M -ashcan/SM -Ashely/M -Asher/M -Asheville/M -Ashia/M -Ashien/M -Ashil/M -Ashkenazim -Ashkhabad/M -Ashla/M -Ashland/M -Ashlan/M -ashlar/GSDM -Ashlee/M -Ashleigh/M -Ashlen/M -Ashley/M -Ashlie/M -Ashli/M -Ashlin/M -Ashly/M -ashman/M -ash/MNDRSG -Ashmolean/M -Ash/MRY -ashore -ashram/SM -Ashton/M -ashtray/MS -Ashurbanipal/M -ashy/RT -Asia/M -Asian/MS -Asiatic/SM -aside/S -Asilomar/M -Asimov -asinine/Y -asininity/MS -askance -ask/DRZGS -asked/U -asker/M -askew/P -ASL -aslant -asleep -Asmara/M -asocial/S -Asoka/M -asparagus/MS -aspartame/S -ASPCA -aspect/SM -Aspell/M -aspen/M -Aspen/M -asperity/SM -asper/M -aspersion/SM -asphalt/MDRSG -asphodel/MS -asphyxia/MS -asphyxiate/GNXSD -asphyxiation/M -aspic/MS -Aspidiske/M -aspidistra/MS -aspirant/MS -aspirate/NGDSX -aspirational -aspiration/M -aspirator/SM -aspire/GSRD -aspirer/M -aspirin/SM -asplenium -asp/MNRXS -Asquith/M -Assad/M -assailable/U -assailant/SM -assail/BGDS -Assamese/M -Assam/M -assassinate/DSGNX -assassination/M -assassin/MS -assaulter/M -assaultive/YP -assault/SGVMDR -assayer/M -assay/SZGRD -assemblage/MS -assemble/ADSREG -assembled/U -assembler/EMS -assemblies/A -assembly/EAM -assemblyman/M -assemblymen -Assembly/MS -assemblywoman -assemblywomen -assent/SGMRD -assert/ADGS -asserter/MS -assertional -assertion/AMS -assertiveness/SM -assertive/PY -assess/BLSDG -assessed/A -assesses/A -assessment/SAM -assessor/MS -asset/SM -asseverate/XSDNG -asseveration/M -asshole/MS! -assiduity/SM -assiduousness/SM -assiduous/PY -assign/ALBSGD -assignation/MS -assigned/U -assignee/MS -assigner/MS -assignment/MAS -assignor/MS -assigns/CU -assimilate/VNGXSD -assimilationist/M -assimilation/M -Assisi/M -assistance/SM -assistantship/SM -assistant/SM -assisted/U -assister/M -assist/RDGS -assize/MGSD -ass/MNS -assn -assoc -associable -associated/U -associate/SDEXNG -associateship -associational -association/ME -associative/Y -associativity/S -associator/MS -assonance/SM -assonant/S -assorter/M -assort/LRDSG -assortment/SM -asst -assuaged/U -assuage/SDG -assumability -assumer/M -assume/SRDBJG -assuming/UA -assumption/SM -assumptive -assurance/AMS -assure/AGSD -assuredness/M -assured/PYS -assurer/SM -assuring/YA -Assyria/M -Assyrian/SM -Assyriology/M -Astaire/SM -Astarte/M -astatine/MS -aster/ESM -asteria -asterisked/U -asterisk/SGMD -astern -asteroidal -asteroid/SM -asthma/MS -asthmatic/S -astigmatic/S -astigmatism/SM -astir -astonish/GSDL -astonishing/Y -astonishment/SM -Aston/M -Astoria/M -Astor/M -astounding/Y -astound/SDG -astraddle -Astrakhan/M -astrakhan/SM -astral/SY -Astra/M -astray -astride -Astrid/M -astringency/SM -astringent/YS -Astrix/M -astrolabe/MS -astrologer/MS -astrological/Y -astrologist/M -astrology/SM -astronautical -astronautic/S -astronautics/M -astronaut/SM -astronomer/MS -astronomic -astronomical/Y -astronomy/SM -astrophysical -astrophysicist/SM -astrophysics/M -Astroturf/M -AstroTurf/S -Asturias/M -astuteness/MS -astute/RTYP -Asunci�n/M -asunder -Aswan/M -asylum/MS -asymmetric -asymmetrical/Y -asymmetry/MS -asymptomatic -asymptomatically -asymptote/MS -asymptotically -asymptotic/Y -asynchronism/M -asynchronous/Y -asynchrony -at -Atacama/M -Atahualpa/M -Atalanta/M -Atari/M -Atat�rk/M -atavism/MS -atavistic -atavist/MS -ataxia/MS -ataxic/S -atelier/SM -atemporal -ate/S -Athabasca/M -Athabascan's -Athabaskan/MS -Athabaska's -atheism/SM -atheistic -atheist/SM -Athena/M -Athene/M -Athenian/SM -Athens/M -atheroscleroses -atherosclerosis/M -athirst -athlete/MS -athletically -athleticism/M -athletic/S -athletics/M -athwart -atilt -Atkins/M -Atkinson/M -Atlanta/M -Atlante/MS -atlantes -Atlantic/M -Atlantis/M -atlas/SM -Atlas/SM -At/M -Atman -ATM/M -atmosphere/DSM -atmospherically -atmospheric/S -atoll/MS -atomically -atomicity/M -atomic/S -atomics/M -atomistic -atomization/SM -atomize/GZDRS -atomizer/M -atom/SM -atonality/MS -atonal/Y -atone/LDSG -atonement/SM -atop -ATP -Atreus/M -atria -atrial -Atria/M -atrium/M -atrociousness/SM -atrocious/YP -atrocity/SM -atrophic -atrophy/DSGM -atropine/SM -Atropos/M -Ats -attach/BLGZMDRS -attached/UA -attacher/M -attach�/S -attachment/ASM -attacker/M -attack/GBZSDR -attainabilities -attainability/UM -attainableness/M -attainable/U -attainably/U -attain/AGSD -attainder/MS -attained/U -attainer/MS -attainment/MS -attar/MS -attempt/ADSG -attempter/MS -attendance/MS -attendant/SM -attended/U -attendee/SM -attender/M -attend/SGZDR -attentional -attentionality -attention/IMS -attentiveness/IMS -attentive/YIP -attenuated/U -attenuate/SDXGN -attenuation/M -attenuator/MS -attestation/SM -attested/U -attester/M -attest/GSDR -Attic -Attica/M -attic/MS -Attila/M -attire/SDG -attitude/MS -attitudinal/Y -attitudinize/SDG -Attlee/M -attn -Attn -attorney/SM -attractant/SM -attract/BSDGV -attraction/MS -attractivenesses -attractiveness/UM -attractive/UYP -attractor/MS -attributable/U -attribute/BVNGRSDX -attributed/U -attributer/M -attributional -attribution/M -attributive/SY -attrition/MS -Attucks -attune/SDG -atty -ATV/S -atwitter -Atwood/M -atypical/Y -Aube/M -Auberge/M -aubergine/MS -Auberon/M -Auberta/M -Aubert/M -Aubine/M -Aubree/M -Aubrette/M -Aubrey/M -Aubrie/M -Aubry/M -auburn/SM -Auckland/M -auctioneer/SDMG -auction/MDSG -audaciousness/SM -audacious/PY -audacity/MS -Auden/M -audibility/MSI -audible/I -audibles -audibly/I -Audie/M -audience/MS -Audi/M -audiogram/SM -audiological -audiologist/MS -audiology/SM -audiometer/MS -audiometric -audiometry/M -audiophile/SM -audio/SM -audiotape/S -audiovisual/S -audited/U -audition/MDSG -auditorium/MS -auditor/MS -auditory/S -audit/SMDVG -Audra/M -Audre/M -Audrey/M -Audrie/M -Audrye/M -Audry/M -Audubon/M -Audy/M -Auerbach/M -Augean -auger/SM -aught/S -Augie/M -Aug/M -augmentation/SM -augmentative/S -augment/DRZGS -augmenter/M -augur/GDMS -augury/SM -Augusta/M -Augustan/S -Auguste/M -Augustina/M -Augustine/M -Augustinian/S -Augustin/M -augustness/SM -Augusto/M -August/SM -august/STPYR -Augustus/M -Augy/M -auk/MS -Au/M -Aundrea/M -auntie/MS -aunt/MYS -aunty's -aural/Y -Aura/M -aura/SM -Aurea/M -Aurelea/M -Aurelia/M -Aurelie/M -Aurelio/M -Aurelius/M -Aurel/M -aureole/GMSD -aureomycin -Aureomycin/M -Auria/M -auric -auricle/SM -auricular -Aurie/M -Auriga/M -Aurilia/M -Aurlie/M -Auroora/M -auroral -Aurora/M -aurora/SM -Aurore/M -Aurthur/M -Auschwitz/M -auscultate/XDSNG -auscultation/M -auspice/SM -auspicious/IPY -auspiciousnesses -auspiciousness/IM -Aussie/MS -Austen/M -austereness/M -austere/TYRP -austerity/SM -Austina/M -Austine/M -Austin/SM -austral -Australasia/M -Australasian/S -australes -Australia/M -Australian/MS -Australis/M -australites -Australoid -Australopithecus/M -Austria/M -Austrian/SM -Austronesian -authentically -authenticated/U -authenticate/GNDSX -authentication/M -authenticator/MS -authenticity/MS -authentic/UI -author/DMGS -authoress/S -authorial -authoritarianism/MS -authoritarian/S -authoritativeness/SM -authoritative/PY -authority/SM -authorization/MAS -authorize/AGDS -authorized/U -authorizer/SM -authorizes/U -authorship/MS -autism/MS -autistic/S -autobahn/MS -autobiographer/MS -autobiographic -autobiographical/Y -autobiography/MS -autoclave/SDGM -autocollimator/M -autocorrelate/GNSDX -autocorrelation/M -autocracy/SM -autocratic -autocratically -autocrat/SM -autodial/R -autodidact/MS -autofluorescence -autograph/MDG -autographs -autoignition/M -autoimmune -autoimmunity/S -autoloader -automaker/S -automata's -automate/NGDSX -automatically -automatic/S -automation/M -automatism/SM -automatize/DSG -automaton/SM -automobile/GDSM -automorphism/SM -automotive -autonavigator/SM -autonomic/S -autonomous/Y -autonomy/MS -autopilot/SM -autopsy/MDSG -autoregressive -autorepeat/GS -auto/SDMG -autostart -autosuggestibility/M -autotransformer/M -autoworker/S -autumnal/Y -Autumn/M -autumn/MS -aux -auxiliary/S -auxin/MS -AV -availability/USM -availableness/M -available/U -availably -avail/BSZGRD -availing/U -avalanche/MGSD -Avalon/M -Ava/M -avant -avarice/SM -avariciousness/M -avaricious/PY -avast/S -avatar/MS -avaunt/S -avdp -Aveline/M -Ave/MS -avenged/U -avenger/M -avenge/ZGSRD -Aventine/M -Aventino/M -avenue/MS -average/DSPGYM -Averell/M -Averill/M -Averil/M -Avernus/M -averred -averrer -averring -Averroes/M -averseness/M -averse/YNXP -aversion/M -avers/V -avert/GSD -Averyl/M -Avery/M -ave/S -aves/C -Avesta/M -avg -avian/S -aviary/SM -aviate/NX -aviation/M -aviator/SM -aviatrices -aviatrix/SM -Avicenna/M -Avictor/M -avidity/MS -avid/TPYR -Avie/M -Avigdor/M -Avignon/M -Avila/M -avionic/S -avionics/M -Avior/M -Avis -avitaminoses -avitaminosis/M -Avivah/M -Aviva/M -Aviv/M -avocado/MS -avocational -avocation/SM -Avogadro/M -avoidable/U -avoidably/U -avoidance/SM -avoider/M -avoid/ZRDBGS -avoirdupois/MS -Avon/M -avouch/GDS -avowal/EMS -avowed/Y -avower/M -avow/GEDS -Avram/M -Avril/M -Avrit/M -Avrom/M -avuncular -av/ZR -AWACS -await/SDG -awake/GS -awakened/U -awakener/M -awakening/S -awaken/SADG -awarder/M -award/RDSZG -awareness/MSU -aware/TRP -awash -away/PS -aweigh -awe/SM -awesomeness/SM -awesome/PY -awestruck -awfuller -awfullest -awfulness/SM -awful/YP -aw/GD -awhile/S -awkwardness/MS -awkward/PRYT -awl/MS -awning/DM -awn/MDJGS -awoke -awoken -AWOL -awry/RT -ax/DRSZGM -axehead/S -Axel/M -Axe/M -axeman -axial/Y -axillary -axiological/Y -axiology/M -axiomatically -axiomatic/S -axiomatization/MS -axiomatize/GDS -axiom/SM -axion/SM -axis/SM -axle/MS -axletree/MS -Ax/M -axolotl/SM -axon/SM -ayah/M -ayahs -Ayala/M -ayatollah -ayatollahs -aye/MZRS -Ayers -Aylmar/M -Aylmer/M -Aymara/M -Aymer/M -Ayn/M -AZ -azalea/SM -Azania/M -Azazel/M -Azerbaijan/M -azimuthal/Y -azimuth/M -azimuths -Azores -Azov/M -AZT -Aztecan -Aztec/MS -azure/MS -BA -Baal/SM -baa/SDG -Babara/M -Babar's -Babbage/M -Babbette/M -Babbie/M -babbitt/GDS -Babbitt/M -babbler/M -babble/RSDGZ -Babb/M -Babcock/M -Babel/MS -babel/S -babe/SM -Babette/M -Babita/M -Babka/M -baboon/MS -Bab/SM -babushka/MS -babyhood/MS -babyish -Babylonia/M -Babylonian/SM -Babylon/MS -babysat -babysit/S -babysitter/S -babysitting -baby/TDSRMG -Bacall/M -Bacardi/M -baccalaureate/MS -baccarat/SM -bacchanalia -Bacchanalia/M -bacchanalian/S -bacchanal/SM -Bacchic -Bacchus/M -bachelorhood/SM -bachelor/SM -Bach/M -bacillary -bacilli -bacillus/MS -backache/SM -backarrow -backbencher/M -backbench/ZR -backbiter/M -backbite/S -backbitten -backbit/ZGJR -backboard/SM -backbone/SM -backbreaking -backchaining -backcloth/M -backdate/GDS -backdrop/MS -backdropped -backdropping -backed/U -backer/M -backfield/SM -backfill/SDG -backfire/GDS -backgammon/MS -background/SDRMZG -back/GZDRMSJ -backhanded/Y -backhander/M -backhand/RDMSZG -backhoe/S -backing/M -backlash/GRSDM -backless -backlogged -backlogging -backlog/MS -backorder -backpacker/M -backpack/ZGSMRD -backpedal/DGS -backplane/MS -backplate/SM -backrest/MS -backscatter/SMDG -backseat/S -backside/SM -backslapper/MS -backslapping/M -backslash/DSG -backslider/M -backslide/S -backslid/RZG -backspace/GSD -backspin/SM -backstabber/M -backstabbing -backstage -backstair/S -backstitch/GDSM -backstop/MS -backstopped -backstopping -backstreet/M -backstretch/SM -backstroke/GMDS -backtalk/S -backtrack/SDRGZ -backup/SM -Backus/M -backwardness/MS -backward/YSP -backwash/SDMG -backwater/SM -backwood/S -backwoodsman/M -backwoodsmen -backyard/MS -baconer/M -Bacon/M -bacon/SRM -bacterial/Y -bacteria/MS -bactericidal -bactericide/SM -bacteriologic -bacteriological -bacteriologist/MS -bacteriology/SM -bacterium/M -Bactria/M -badder -baddest -baddie/MS -bade -Baden/M -badge/DSRGMZ -badger/DMG -badinage/DSMG -badland/S -Badlands/M -badman/M -badmen -badminton/MS -badmouth/DG -badmouths -badness/SM -bad/PSNY -Baedeker/SM -Baez/M -Baffin/M -bafflement/MS -baffler/M -baffle/RSDGZL -baffling/Y -bagatelle/MS -bagel/SM -bagful/MS -baggageman -baggagemen -baggage/SM -bagged/M -bagger/SM -baggily -bagginess/MS -bagging/M -baggy/PRST -Baghdad/M -bagpiper/M -bagpipe/RSMZ -Bagrodia/MS -bag/SM -baguette/SM -Baguio/M -bah -Baha'i -Bahama/MS -Bahamanian/S -Bahamian/MS -Baha'ullah -Bahia/M -Bahrain/M -bahs -Baikal/M -Bailey/SM -bail/GSMYDRB -Bailie/M -bailiff/SM -bailiwick/MS -Baillie/M -Bail/M -bailout/MS -bailsman/M -bailsmen -Baily/M -Baird/M -bairn/SM -baiter/M -bait/GSMDR -baize/GMDS -Baja/M -baked/U -bakehouse/M -Bakelite/M -baker/M -Baker/M -Bakersfield/M -bakery/SM -bakeshop/S -bake/ZGJDRS -baking/M -baklava/M -baksheesh/SM -Baku/M -Bakunin/M -balaclava/MS -balalaika/MS -balanced/A -balancedness -balancer/MS -balance's -balance/USDG -Balanchine/M -Balboa/M -balboa/SM -balcony/MSD -balderdash/MS -Balder/M -baldfaced -Bald/MR -baldness/MS -bald/PYDRGST -baldric/SM -Balduin/M -Baldwin/M -baldy -Balearic/M -baleen/MS -balefuller -balefullest -balefulness/MS -baleful/YP -Bale/M -bale/MZGDRS -baler/M -Balfour/M -Bali/M -Balinese -balkanization -balkanize/DG -Balkan/SM -balker/M -balk/GDRS -Balkhash/M -balkiness/M -balky/PRT -balladeer/MS -ballade/MS -balladry/MS -ballad/SM -Ballard/SM -ballast/SGMD -ballcock/S -ballerina/MS -baller/M -balletic -ballet/MS -ballfields -ballgame/S -ball/GZMSDR -ballistic/S -ballistics/M -Ball/M -balloonist/S -balloon/RDMZGS -balloter/M -ballot/MRDGS -ballpark/SM -ballplayer/SM -ballpoint/SM -ballroom/SM -ballsy/TR -ballyhoo/SGMD -balminess/SM -balm/MS -balmy/PRT -baloney/SM -balsam/GMDS -balsamic -balsa/MS -Balthazar/M -Baltic/M -Baltimore/M -Baluchistan/M -baluster/MS -balustrade/SM -Balzac/M -Ba/M -Bamako/M -Bamberger/M -Bambie/M -Bambi/M -bamboo/SM -bamboozle/GSD -Bamby/M -Banach/M -banality/MS -banal/TYR -banana/SM -Bancroft/M -bandager/M -bandage/RSDMG -bandanna/SM -bandbox/MS -bandeau/M -bandeaux -band/EDGS -bander/M -banding/M -bandit/MS -banditry/MS -bandmaster/MS -bandoleer/SM -bandpass -band's -bandsman/M -bandsmen -bandstand/SM -bandstop -Bandung/M -bandwagon/MS -bandwidth/M -bandwidths -bandy/TGRSD -banefuller -banefullest -baneful/Y -bane/MS -Bangalore/M -banger/M -bang/GDRZMS -bangkok -Bangkok/M -Bangladeshi/S -Bangladesh/M -bangle/MS -Bangor/M -Bangui/M -bani -banisher/M -banishment/MS -banish/RSDGL -banister/MS -Banjarmasin/M -banjoist/SM -banjo/MS -Banjul/M -bankbook/SM -bankcard/S -banker/M -bank/GZJDRMBS -banking/M -Bank/MS -banknote/S -bankroll/DMSG -bankruptcy/MS -bankrupt/DMGS -Banky/M -Ban/M -banned/U -Banneker/M -banner/SDMG -banning/U -Bannister/M -bannister's -bannock/SM -banns -banqueter/M -banquet/SZGJMRD -banquette/MS -ban/SGMD -banshee/MS -bans/U -bantam/MS -bantamweight/MS -banterer/M -bantering/Y -banter/RDSG -Banting/M -Bantu/SM -banyan/MS -banzai/S -baobab/SM -Baotou/M -baptismal/Y -baptism/SM -Baptiste/M -baptistery/MS -baptist/MS -Baptist/MS -baptistry's -baptized/U -baptizer/M -baptize/SRDZG -baptizes/U -Barabbas/M -Barbabas/M -Barbabra/M -Barbadian/S -Barbados/M -Barbaraanne/M -Barbara/M -Barbarella/M -barbarianism/MS -barbarian/MS -barbaric -barbarically -barbarism/MS -barbarity/SM -barbarize/SDG -Barbarossa/M -barbarousness/M -barbarous/PY -Barbary/M -barb/DRMSGZ -barbecue/DRSMG -barbed/P -Barbee/M -barbell/SM -barbel/MS -Barbe/M -barbeque's -barber/DMG -barbered/U -Barber/M -barberry/MS -barbershop/MS -Barbette/M -Barbey/M -Barbie/M -Barbi/M -barbital/M -barbiturate/MS -Barbour/M -Barbra/M -Barb/RM -Barbuda/M -barbwire/SM -Barby/M -barcarole/SM -Barcelona/M -Barclay/M -Bardeen/M -Barde/M -bardic -Bard/M -bard/MDSG -bareback/D -barefacedness/M -barefaced/YP -barefoot/D -barehanded -bareheaded -barelegged -bareness/MS -Barents/M -bare/YSP -barfly/SM -barf/YDSG -bargainer/M -bargain/ZGSDRM -barge/DSGM -bargeman/M -bargemen -bargepole/M -barhopped -barhopping -barhop/S -Bari/M -baritone/MS -barium/MS -barked/C -barkeeper/M -barkeep/SRZ -barker/M -Barker/M -bark/GZDRMS -Barkley/M -barks/C -barleycorn/MS -barley/MS -Barlow/M -barmaid/SM -barman/M -barmen -Bar/MH -Barnabas -Barnabe/M -Barnaby/M -barnacle/MDS -Barnard/M -Barnaul/M -Barnebas/M -Barnes -Barnett/M -Barney/M -barnful -barn/GDSM -Barnhard/M -Barnie/M -Barn/M -barnsful -barnstorm/DRGZS -barnstormer/M -Barnum/M -barnyard/MS -Barny/M -Baroda/M -barometer/MS -barometric -barometrically -baronage/MS -baroness/MS -baronetcy/SM -baronet/MS -baronial -Baron/M -baron/SM -barony/SM -baroque/SPMY -barque's -Barquisimeto/M -barracker/M -barrack/SDRG -barracuda/MS -barrage/MGSD -Barranquilla/M -barred/ECU -barre/GMDSJ -barrel/SGMD -barrenness/SM -barren/SPRT -Barrera/M -Barret/M -barrette/SM -Barrett/M -barricade/SDMG -Barrie/M -barrier/MS -barring/R -barrio/SM -Barri/SM -barrister/MS -Barr/M -Barron/M -barroom/SM -barrow/MS -Barry/M -Barrymore/MS -bars/ECU -barstool/SM -Barstow/M -Bartel/M -bartender/M -bartend/ZR -barterer/M -barter/SRDZG -bar/TGMDRS -Barthel/M -Barth/M -Bartholdi/M -Bartholemy/M -Bartholomeo/M -Bartholomeus/M -Bartholomew/M -Bartie/M -Bartlet/M -Bartlett/M -Bart/M -Bart�k/M -Bartolemo/M -Bartolomeo/M -Barton/M -Bartram/M -Barty/M -barycenter -barycentre's -barycentric -Bary/M -baryon/SM -Baryram/M -Baryshnikov/M -basaltic -basalt/SM -basal/Y -Bascom/M -bas/DRSTG -baseball/MS -baseband -baseboard/MS -base/CGRSDL -baseless -baseline/SM -Basel/M -basely -Base/M -baseman/M -basemen -basement/CSM -baseness/MS -baseplate/M -base's -basetting -bashfulness/MS -bashful/PY -bash/JGDSR -Basho/M -Basia/M -BASIC -basically -basic/S -Basie/M -basilar -Basile/M -basilica/SM -Basilio/M -basilisk/SM -Basilius/M -Basil/M -basil/MS -basin/DMS -basinful/S -basis/M -basketball/MS -basketry/MS -basket/SM -basketwork/SM -bask/GSD -basophilic -Basque/SM -Basra/M -Basseterre/M -basset/GMDS -Bassett/M -bassinet/SM -bassist/MS -Bass/M -basso/MS -bassoonist/MS -bassoon/MS -bass/SM -basswood/SM -bastardization/MS -bastardized/U -bastardize/SDG -bastard/MYS -bastardy/MS -baste/NXS -baster/M -Bastian/M -Bastien/M -Bastille/M -basting/M -bastion/DM -bast/SGZMDR -Basutoland/M -Bataan/M -Batavia/M -batch/MRSDG -bated/U -bate/KGSADC -bater/AC -Bates -bathe -bather/M -bathetic -bathhouse/SM -bath/JMDSRGZ -bathmat/S -Batholomew/M -bathos/SM -bathrobe/MS -bathroom/SDM -baths -Bathsheba/M -bathtub/MS -bathwater -bathyscaphe's -bathysphere/MS -batik/DMSG -Batista/M -batiste/SM -Bat/M -batman/M -Batman/M -batmen -baton/SM -Batsheva/M -batsman/M -bat/SMDRG -batsmen -battalion/MS -batted -batten/SDMG -batter/SRDZG -battery/MS -batting/MS -battledore/MS -battledress -battlefield/SM -battlefront/SM -battle/GMZRSDL -battleground/SM -Battle/M -battlement/SMD -battler/M -battleship/MS -batty/RT -Batu/M -batwings -bauble/SM -Baudelaire/M -baud/M -Baudoin/M -Baudouin/M -Bauer/M -Bauhaus/M -baulk/GSDM -Bausch/M -bauxite/SM -Bavaria/M -Bavarian/S -bawdily -bawdiness/MS -bawd/SM -bawdy/PRST -bawler/M -bawl/SGDR -Baxie/M -Bax/M -Baxter/M -Baxy/M -Bayamon -Bayard/M -bayberry/MS -Bayda/M -Bayer/M -Bayes -Bayesian -bay/GSMDY -Baylor/M -Bay/MR -bayonet/SGMD -Bayonne/M -bayou/MS -Bayreuth/M -bazaar/MS -bazillion/S -bazooka/MS -BB -BBB -BBC -bbl -BBQ -BBS -BC -BCD -bdrm -beachcomber/SM -beachhead/SM -Beach/M -beach/MSDG -beachwear/M -beacon/DMSG -beading/M -Beadle/M -beadle/SM -bead/SJGMD -beadsman/M -beadworker -beady/TR -beagle/SDGM -beaker/M -beak/ZSDRM -Beale/M -Bealle/M -Bea/M -beam/MDRSGZ -beanbag/SM -bean/DRMGZS -beanie/SM -Bean/M -beanpole/MS -beanstalk/SM -bearable/U -bearably/U -beard/DSGM -bearded/P -beardless -Beard/M -Beardmore/M -Beardsley/M -bearer/M -bearing/M -bearishness/SM -bearish/PY -bearlike -Bear/M -Bearnaise/M -Bearnard/M -bearskin/MS -bear/ZBRSJG -Beasley/M -beasties -beastings/M -beastliness/MS -beastly/PTR -beast/SJMY -beatable/U -beatably/U -beaten/U -beater/M -beatific -beatifically -beatification/M -beatify/GNXDS -beating/M -beatitude/MS -Beatlemania/M -Beatles/M -beatnik/SM -beat/NRGSBZJ -Beatrice/M -Beatrisa/M -Beatrix/M -Beatriz/M -Beauchamps -Beaufort/M -Beaujolais/M -Beau/M -Beaumarchais/M -Beaumont/M -beau/MS -Beauregard/M -beauteousness/M -beauteous/YP -beautician/MS -beautification/M -beautifier/M -beautifully/U -beautifulness/M -beautiful/PTYR -beautify/SRDNGXZ -beaut/SM -beauty/SM -Beauvoir/M -beaux's -beaver/DMSG -Beaverton/M -Bebe/M -bebop/MS -becalm/GDS -became -because -Becca/M -Bechtel/M -Becka/M -Becker/M -Becket/M -Beckett/M -beck/GSDM -Beckie/M -Becki/M -beckon/SDG -Beck/RM -Becky/M -becloud/SGD -become/GJS -becoming/UY -Becquerel/M -bedaub/GDS -bedazzle/GLDS -bedazzlement/SM -bedbug/SM -bedchamber/M -bedclothes -bedded -bedder/MS -bedding/MS -bedeck/DGS -Bede/M -bedevil/DGLS -bedevilment/SM -bedfast -bedfellow/MS -Bedford/M -bedimmed -bedimming -bedim/S -bedizen/DGS -bedlam/MS -bedlinen -bedmaker/SM -bedmate/MS -bed/MS -Bedouin/SM -bedpan/SM -bedpost/SM -bedraggle/GSD -bedridden -bedrock/SM -bedroll/SM -bedroom/DMS -bedsheets -bedside/MS -bedsit -bedsitter/M -bedsore/MS -bedspread/SM -bedspring/SM -bedstead/SM -bedstraw/M -bedtime/SM -Beebe/M -beebread/MS -Beecher/M -beech/MRSN -beechnut/MS -beechwood -beefburger/SM -beefcake/MS -beef/GZSDRM -beefiness/MS -beefsteak/MS -beefy/TRP -beehive/MS -beekeeper/MS -beekeeping/SM -beeline/MGSD -Beelzebub/M -Bee/M -bee/MZGJRS -been/S -beeper/M -beep/GZSMDR -Beerbohm/M -beer/M -beermat/S -beery/TR -beeswax/DSMG -Beethoven/M -beetle/GMRSD -Beeton/M -beetroot/M -beet/SM -beeves/M -befall/SGN -befell -befit/SM -befitted -befitting/Y -befogged -befogging -befog/S -before -beforehand -befoul/GSD -befriend/DGS -befuddle/GLDS -befuddlement/SM -began -beget/S -begetting -beggar/DYMSG -beggarliness/M -beggarly/P -beggary/MS -begged -begging -Begin/M -beginner/MS -beginning/MS -begin/S -begone/S -begonia/SM -begot -begotten -begrime/SDG -begrudge/GDRS -begrudging/Y -beg/S -beguilement/SM -beguiler/M -beguile/RSDLZG -beguiling/Y -beguine/SM -begum/MS -begun -behalf/M -behalves -Behan/M -behave/GRSD -behavioral/Y -behaviorism/MS -behavioristic/S -behaviorist/S -behavior/SMD -behead/GSD -beheld -behemoth/M -behemoths -behest/SM -behindhand -behind/S -beholder/M -behold/ZGRNS -behoofs -behoove/SDJMG -behooving/YM -Behring/M -Beiderbecke/M -beige/MS -Beijing -Beilul/M -being/M -Beirut/M -Beitris/M -bejewel/SDG -Bekesy/M -Bekki/M -be/KS -belabor/MDSG -Bela/M -Belarus -belate/D -belatedness/M -belated/PY -Belau/M -belay/GSD -belch/GSD -beleaguer/GDS -Belem/M -Belfast/M -belfry/SM -Belgian/MS -Belgium/M -Belg/M -Belgrade/M -Belia/M -Belicia/M -belie -belief/ESUM -belier/M -believability's -believability/U -believable/U -believably/U -believed/U -believe/EZGDRS -believer/MUSE -believing/U -Belinda/M -Belita/M -belittlement/MS -belittler/M -belittle/RSDGL -Belize/M -belladonna/MS -Bella/M -Bellamy/M -Bellanca/M -Bellatrix/M -bellboy/MS -belled/A -Belle/M -belle/MS -belletristic -belletrist/SM -Belleville/M -bellflower/M -bell/GSMD -bellhop/MS -bellicoseness/M -bellicose/YP -bellicosity/MS -belligerence/SM -belligerency/MS -belligerent/SMY -Bellina/M -belling/A -Bellini/M -Bell/M -bellman/M -bellmen -Bellovin/M -bellow/DGS -Bellow/M -bellows/M -bells/A -bellwether/MS -Bellwood/M -bellyacher/M -bellyache/SRDGM -bellybutton/MS -bellyfull -bellyful/MS -belly/SDGM -Bel/M -Belmont/M -Belmopan/M -Beloit/M -belong/DGJS -belonging/MP -Belorussian/S -Belorussia's -belove/D -beloved/S -below/S -Belshazzar/M -belted/U -belt/GSMD -belting/M -Belton/M -Beltran/M -Beltsville/M -beltway/SM -beluga/SM -Belushi/M -Belva/M -belvedere/M -Belvia/M -bely/DSRG -beman -Be/MH -bemire/SDG -bemoan/GDS -bemused/Y -bemuse/GSDL -bemusement/SM -Benacerraf/M -Benares's -bencher/M -benchmark/GDMS -bench/MRSDG -bend/BUSG -bended -Bender/M -bender/MS -Bendick/M -Bendicty/M -Bendite/M -Bendix/M -beneath -Benedetta/M -Benedetto/M -Benedick/M -Benedicta/M -Benedictine/MS -benediction/MS -Benedict/M -Benedicto/M -benedictory -Benedikta/M -Benedikt/M -benefaction/MS -benefactor/MS -benefactress/S -benefice/MGSD -beneficence/SM -beneficent/Y -beneficialness/M -beneficial/PY -beneficiary/MS -benefiter/M -benefit/SRDMZG -Benelux/M -Benet/M -Benetta/M -Benetton/M -benevolence/SM -benevolentness/M -benevolent/YP -Bengali/M -Bengal/SM -Benghazi/M -Bengt/M -Beniamino/M -benightedness/M -benighted/YP -benignant -benignity/MS -benign/Y -Beninese -Benin/M -Benita/M -Benito/M -Benjamen/M -Benjamin/M -Benjie/M -Benji/M -Benjy/M -Ben/M -Bennett/M -Bennie/M -Benni/M -Bennington/M -Benn/M -Benny/M -Benoite/M -Benoit/M -Benson/M -Bentham/M -Bentlee/M -Bentley/MS -Bent/M -Benton/M -bents -bent/U -bentwood/SM -benumb/SGD -Benyamin/M -Benzedrine/M -benzene/MS -benzine/SM -Benz/M -Beograd's -Beowulf/M -bequeath/GSD -bequeaths -bequest/MS -berate/GSD -Berber/MS -bereave/GLSD -bereavement/MS -bereft -Berenice/M -Beret/M -beret/SM -Bergen/M -Bergerac/M -Berger/M -Berget/M -Berglund/M -Bergman/M -Berg/NRM -berg/NRSM -Bergson/M -Bergsten/M -Bergstrom/M -beribbon/D -beriberi/SM -Beringer/M -Bering/RM -Berkeley/M -berkelium/SM -Berke/M -Berkie/M -Berkley/M -Berkly/M -Berkowitz/M -Berkshire/SM -Berky/M -Berk/YM -Berle/M -Berliner/M -Berlin/SZRM -Berlioz/M -Berlitz/M -Berman/M -Ber/MG -berm/SM -Bermuda/MS -Bermudan/S -Bermudian/S -Bernadene/M -Bernadette/M -Bernadina/M -Bernadine/M -Berna/M -Bernardina/M -Bernardine/M -Bernardino/M -Bernard/M -Bernardo/M -Bernarr/M -Bernays/M -Bernbach/M -Bernelle/M -Berne's -Bernese -Bernete/M -Bernetta/M -Bernette/M -Bernhard/M -Bernhardt/M -Bernice/M -Berniece/M -Bernie/M -Berni/M -Bernini/M -Bernita/M -Bern/M -Bernoulli/M -Bernstein/M -Berny/M -Berra/M -Berrie/M -Berri/M -berrylike -Berry/M -berry/SDMG -berserker/M -berserk/SR -Berta/M -Berte/M -Bertha/M -Berthe/M -berth/MDGJ -berths -Bertie/M -Bertillon/M -Berti/M -Bertina/M -Bertine/M -Bert/M -Berton/M -Bertram/M -Bertrand/M -Bertrando/M -Berty/M -Beryle/M -beryllium/MS -Beryl/M -beryl/SM -Berzelius/M -bes -beseecher/M -beseeching/Y -beseech/RSJZG -beseem/GDS -beset/S -besetting -beside/S -besieger/M -besiege/SRDZG -besmear/GSD -besmirch/GSD -besom/GMDS -besot/S -besotted -besotting -besought -bespangle/GSD -bespatter/SGD -bespeak/SG -bespectacled -bespoke -bespoken -Bess -Bessel/M -Bessemer/M -Bessie/M -Bessy/M -best/DRSG -bestiality/MS -bestial/Y -bestiary/MS -bestirred -bestirring -bestir/S -Best/M -bestowal/SM -bestow/SGD -bestrew/DGS -bestrewn -bestridden -bestride/SG -bestrode -bestseller/MS -bestselling -bestubble/D -betaken -betake/SG -beta/SM -betatron/M -betcha -Betelgeuse/M -betel/MS -Bethanne/M -Bethany/M -bethel/M -Bethe/M -Bethena/M -Bethesda/M -Bethina/M -bethink/GS -Bethlehem/M -beth/M -Beth/M -bethought -Bethune -betide/GSD -betimes -bet/MS -betoken/GSD -betook -betrayal/SM -betrayer/M -betray/SRDZG -betrothal/SM -betrothed/U -betroth/GD -betroths -Betsey/M -Betsy/M -Betta/M -Betteanne/M -Betteann/M -Bette/M -betterment/MS -better/SDLG -Bettie/M -Betti/M -Bettina/M -Bettine/M -betting -bettor/SM -Bettye/M -Betty/SM -betweenness/M -between/SP -betwixt -Beulah/M -Bevan/M -bevel/SJGMRD -beverage/MS -Beverie/M -Beverlee/M -Beverley/M -Beverlie/M -Beverly/M -Bevin/M -Bevon/M -Bev's -Bevvy/M -bevy/SM -bewail/GDS -beware/GSD -bewhisker/D -bewigged -bewildered/PY -bewildering/Y -bewilder/LDSG -bewilderment/SM -bewitching/Y -bewitch/LGDS -bewitchment/SM -bey/MS -beyond/S -bezel/MS -bf -B/GT -Bhopal/M -Bhutanese -Bhutan/M -Bhutto/M -Bialystok/M -Bianca/M -Bianco/M -Bianka/M -biannual/Y -bias/DSMPG -biased/U -biathlon/MS -biaxial/Y -bibbed -Bibbie/M -bibbing -Bibbye/M -Bibby/M -Bibi/M -bible/MS -Bible/MS -biblical/Y -biblicists -bibliographer/MS -bibliographical/Y -bibliographic/S -bibliography/MS -bibliophile/MS -Bib/M -bib/MS -bibulous -bicameral -bicameralism/MS -bicarb/MS -bicarbonate/MS -bicentenary/S -bicentennial/S -bicep/S -biceps/M -bichromate/DM -bickerer/M -bickering/M -bicker/SRDZG -biconcave -biconnected -biconvex -bicuspid/S -bicycler/M -bicycle/RSDMZG -bicyclist/SM -biddable -bidden/U -bidder/MS -Biddie/M -bidding/MS -Biddle/M -Biddy/M -biddy/SM -bider/M -bide/S -bidet/SM -Bidget/M -bid/GMRS -bidiagonal -bidirectional/Y -bids/A -biennial/SY -biennium/SM -Bienville/M -Bierce/M -bier/M -bifocal/S -bifurcate/SDXGNY -bifurcation/M -bigamist/SM -bigamous -bigamy/SM -Bigelow/M -Bigfoot -bigged -bigger -biggest -biggie/SM -bigging -biggish -bighead/MS -bigheartedness/S -bighearted/P -bighorn/MS -bight/SMDG -bigmouth/M -bigmouths -bigness/SM -bigoted/Y -bigot/MDSG -bigotry/MS -big/PYS -bigwig/MS -biharmonic -bijection/MS -bijective/Y -bijou/M -bijoux -bike/MZGDRS -biker/M -bikini/SMD -Biko/M -bilabial/S -bilateralness/M -bilateral/PY -bilayer/S -Bilbao/M -bilberry/MS -Bilbo/M -bile/SM -bilge/GMDS -biliary -Bili/M -bilinear -bilingualism/SM -bilingual/SY -biliousness/SM -bilious/P -bilker/M -bilk/GZSDR -billboard/MDGS -biller/M -billet/MDGS -billfold/MS -billiard/SM -Billie/M -Billi/M -billing/M -billingsgate/SM -Billings/M -billionaire/MS -billion/SHM -billionths -bill/JGZSBMDR -Bill/JM -billow/DMGS -billowy/RT -billposters -Billye/M -Billy/M -billy/SM -Bil/MY -bi/M -Bi/M -bimbo/MS -bimetallic/S -bimetallism/MS -Bimini/M -bimodal -bimolecular/Y -bimonthly/S -binary/S -binaural/Y -binder/M -bindery/MS -binding/MPY -bindingness/M -bind/JDRGZS -bindle/M -binds/AU -bindweed/MS -binge/MS -bing/GNDM -Bingham/M -Binghamton/M -Bing/M -bingo/MS -Bini/M -Bink/M -Binky/M -binnacle/MS -binned -Binnie/M -Binni/M -binning -Binny/M -binocular/SY -binodal -binomial/SYM -bin/SM -binuclear -biochemical/SY -biochemist/MS -biochemistry/MS -biodegradability/S -biodegradable -biodiversity/S -bioengineering/M -bioethics -biofeedback/SM -biographer/M -biographic -biographical/Y -biograph/RZ -biography/MS -biog/S -Bioko/M -biol -biological/SY -biologic/S -biologist/SM -biology/MS -biomass/SM -biomedical -biomedicine/M -biometric/S -biometrics/M -biometry/M -biomolecule/S -biomorph -bionically -bionic/S -bionics/M -biophysical/Y -biophysicist/SM -biophysic/S -biophysics/M -biopic/S -biopsy/SDGM -biorhythm/S -BIOS -bioscience/S -biosphere/MS -biostatistic/S -biosynthesized -biotechnological -biotechnologist -biotechnology/SM -biotic -biotin/SM -bipartisan -bipartisanship/MS -bipartite/YN -bipartition/M -bipedal -biped/MS -biplane/MS -bipolar -bipolarity/MS -biracial -Birch/M -birch/MRSDNG -birdbath/M -birdbaths -birdbrain/SDM -birdcage/SM -birder/M -birdhouse/MS -birdieing -Birdie/M -birdie/MSD -birdlike -birdlime/MGDS -Bird/M -birdseed/MS -Birdseye/M -bird/SMDRGZ -birdsong -birdtables -birdwatch/GZR -birefringence/M -birefringent -biretta/SM -Birgit/M -Birgitta/M -Birkenstock/M -Birk/M -Birmingham/M -Biro/M -Biron/M -birthday/SM -birthmark/MS -birth/MDG -birthplace/SM -birthrate/MS -birthright/MS -birth's/A -births/A -birthstone/SM -bis -Biscay/M -Biscayne/M -biscuit/MS -bisect/DSG -bisection/MS -bisector/MS -biserial -bisexuality/MS -bisexual/YMS -Bishkek -bishop/DGSM -Bishop/M -bishopric/SM -Bismarck/M -Bismark/M -bismuth/M -bismuths -bison/M -bisque/SM -Bissau/M -bistable -bistate -bistro/SM -bisyllabic -bitblt/S -bitchily -bitchiness/MS -bitch/MSDG -bitchy/PTR -biter/M -bite/S -biting/Y -bitmap/SM -bit/MRJSZG -BITNET/M -bit's/C -bits/C -bitser/M -bitted -bitten -bitterness/SM -bittern/SM -bitternut/M -bitter/PSRDYTG -bitterroot/M -bittersweet/YMSP -bitting -bitty/PRT -bitumen/MS -bituminous -bitwise -bivalent/S -bivalve/MSD -bivariate -bivouacked -bivouacking -bivouac/MS -biweekly/S -biyearly -bizarreness/M -bizarre/YSP -Bizet/M -biz/M -bizzes -Bjorn/M -bk -b/KGD -Bk/M -blabbed -blabber/GMDS -blabbermouth/M -blabbermouths -blabbing -blab/S -blackamoor/SM -blackball/SDMG -blackberry/GMS -blackbirder/M -blackbird/SGDRM -blackboard/SM -blackbody/S -Blackburn/M -blackcurrant/M -blackener/M -blacken/GDR -Blackfeet -Blackfoot/M -blackguard/MDSG -blackhead/SM -blacking/M -blackish -blackjack/SGMD -blackleg/M -blacklist/DRMSG -blackmail/DRMGZS -blackmailer/M -Blackman/M -Blackmer/M -blackness/MS -blackout/SM -Blackpool/M -Black's -black/SJTXPYRDNG -blacksmith/MG -blacksmiths -blacksnake/MS -blackspot -Blackstone/M -blackthorn/MS -blacktop/MS -blacktopped -blacktopping -Blackwell/MS -bladder/MS -bladdernut/M -bladderwort/M -blade/DSGM -blah/MDG -blahs -Blaine/M -Blaire/M -Blair/M -Blakelee/M -Blakeley/M -Blake/M -Blakey/M -blame/DSRBGMZ -blamelessness/SM -blameless/YP -blamer/M -blameworthiness/SM -blameworthy/P -Blanca/M -Blancha/M -Blanchard/M -blanch/DRSG -Blanche/M -blancher/M -Blanch/M -blanc/M -blancmange/SM -blandishment/MS -blandish/SDGL -blandness/MS -bland/PYRT -Blane/M -Blankenship/M -blanketing/M -blanket/SDRMZG -blankness/MS -blank/SPGTYRD -Blanton/M -Blantyre/M -blare/DSG -blarney/DMGS -blas� -blasphemer/M -blaspheme/RSDZG -blasphemousness/M -blasphemous/PY -blasphemy/SM -blaster/M -blasting/M -blastoff/SM -blast/SMRDGZ -blatancy/SM -blatant/YP -blather/DRGS -blatting -Blatz/M -Blavatsky/M -Blayne/M -blaze/DSRGMZ -blazer/M -blazing/Y -blazoner/M -blazon/SGDR -bl/D -bldg -bleach/DRSZG -bleached/U -bleacher/M -bleakness/MS -bleak/TPYRS -blear/GDS -blearily -bleariness/SM -bleary/PRT -bleater/M -bleat/RDGS -bleeder/M -bleed/ZRJSG -Bleeker/M -bleep/GMRDZS -blemish/DSMG -blemished/U -blench/DSG -blender/M -blend/GZRDS -Blenheim/M -blessedness/MS -blessed/PRYT -blessing/M -bless/JGSD -Blevins/M -blew -Bligh/M -blighter/M -blight/GSMDR -blimey/S -blimp/MS -blinded/U -blinder/M -blindfold/SDG -blinding/MY -blind/JGTZPYRDS -blindness/MS -blindside/SDG -blinker/MDG -blinking/U -blink/RDGSZ -blinks/M -Blinnie/M -Blinni/M -Blinny/M -blintze/M -blintz/SM -blip/MS -blipped -blipping -Blisse/M -blissfulness/MS -blissful/PY -Bliss/M -bliss/SDMG -blistering/Y -blister/SMDG -blistery -Blithe/M -blitheness/SM -blither/G -blithesome -blithe/TYPR -blitz/GSDM -blitzkrieg/SM -blizzard/MS -bloater/M -bloat/SRDGZ -blobbed -blobbing -blob/MS -Bloch/M -blockader/M -blockade/ZMGRSD -blockage/MS -blockbuster/SM -blockbusting/MS -blocker/MS -blockhead/MS -blockhouse/SM -block's -block/USDG -blocky/R -bloc/MS -Bloemfontein/M -bloke/SM -Blomberg/M -Blomquist/M -Blondelle/M -Blondell/M -blonde's -Blondie/M -blondish -blondness/MS -blond/SPMRT -Blondy/M -bloodbath -bloodbaths -bloodcurdling -bloodhound/SM -bloodied/U -bloodiness/MS -bloodlessness/SM -bloodless/PY -bloodletting/MS -bloodline/SM -bloodmobile/MS -bloodroot/M -bloodshed/SM -bloodshot -blood/SMDG -bloodsport/S -bloodstain/MDS -bloodstock/SM -bloodstone/M -bloodstream/SM -bloodsucker/SM -bloodsucking/S -bloodthirstily -bloodthirstiness/MS -bloodthirsty/RTP -bloodworm/M -bloodymindedness -bloody/TPGDRS -bloomer/M -Bloomer/M -Bloomfield/M -Bloomington/M -Bloom/MR -bloom/SMRDGZ -blooper/M -bloop/GSZRD -blossom/DMGS -blossomy -blotch/GMDS -blotchy/RT -blot/MS -blotted -blotter/MS -blotting -blotto -blouse/GMSD -blower/M -blowfish/M -blowfly/MS -blowgun/SM -blow/GZRS -blowing/M -blown/U -blowout/MS -blowpipe/SM -blowtorch/SM -blowup/MS -blowy/RST -blowzy/RT -BLT -blubber/GSDR -blubbery -Blucher/M -bludgeon/GSMD -blueback -Bluebeard/M -bluebell/MS -blueberry/SM -bluebill/M -bluebird/MS -bluebonnet/SM -bluebook/M -bluebottle/MS -bluebush -bluefish/SM -bluegill/SM -bluegrass/MS -blueing's -blueish -bluejacket/MS -bluejeans -blue/JMYTGDRSP -blueness/MS -bluenose/MS -bluepoint/SM -blueprint/GDMS -bluer/M -bluest/M -bluestocking/SM -bluesy/TR -bluet/MS -bluffer/M -bluffness/MS -bluff/SPGTZYRD -bluing/M -bluishness/M -bluish/P -Blumenthal/M -Blum/M -blunderbuss/MS -blunderer/M -blunder/GSMDRJZ -blundering/Y -bluntness/MS -blunt/PSGTYRD -blurb/GSDM -blur/MS -blurred/Y -blurriness/S -blurring/Y -blurry/RPT -blurt/GSRD -blusher/M -blushing/UY -blush/RSDGZ -blusterer/M -blustering/Y -blusterous -bluster/SDRZG -blustery -blvd -Blvd -Blythe/M -BM -BMW/M -BO -boarded -boarder/SM -boardgames -boardinghouse/SM -boarding/SM -board/IS -boardroom/MS -board's -boardwalk/SM -boar/MS -boa/SM -boaster/M -boastfulness/MS -boastful/YP -boast/SJRDGZ -boatclubs -boater/M -boathouse/SM -boating/M -boatload/SM -boatman/M -boat/MDRGZJS -boatmen -boatswain/SM -boatyard/SM -bobbed -Bobbee/M -Bobbe/M -Bobbette/M -Bobbie/M -Bobbi/M -bobbing/M -bobbin/MS -Bobbitt/M -bobble/SDGM -Bobbsey/M -Bobbye/M -Bobby/M -bobby/SM -bobbysoxer's -bobcat/MS -Bobette/M -Bobina/M -Bobine/M -Bobinette/M -Bob/M -bobolink/SM -Bobrow/M -bobsledded -bobsledder/MS -bobsledding/M -bobsled/MS -bobsleigh/M -bobsleighs -bobs/M -bob/SM -bobtail/SGDM -bobwhite/SM -Boca/M -Boccaccio/M -boccie/SM -bock/GDS -bockwurst -bodega/MS -Bodenheim/M -bode/S -Bodhidharma/M -bodhisattva -Bodhisattva/M -bodice/SM -bodied/M -bodiless -bodily -boding/M -bodkin/SM -bod/SGMD -bodybuilder/SM -bodybuilding/S -body/DSMG -bodyguard/MS -bodying/M -bodysuit/S -bodyweight -bodywork/SM -Boeing/M -Boeotia/M -Boeotian -Boer/M -Bogartian/M -Bogart/M -Bogey/M -bogeyman/M -bogeymen -bogey/SGMD -bogged -bogging -boggle/SDG -boggling/Y -boggy/RT -bogie's -bog/MS -Bogot�/M -bogus -bogyman -bogymen -bogy's -Boheme/M -bohemianism/S -bohemian/S -Bohemian/SM -Bohemia/SM -Bohr/M -Boigie/M -boiled/AU -boiler/M -boilermaker/MS -boilerplate/SM -boil/JSGZDR -boils/A -Boise/M -Bois/M -boisterousness/MS -boisterous/YP -bola/SM -boldface/SDMG -boldness/MS -bold/YRPST -bole/MS -bolero/MS -Boleyn/M -bolivares -Bolivar/M -bolivar/MS -Bolivia/M -Bolivian/S -bollard/SM -bollix/GSD -boll/MDSG -Bologna/M -bologna/MS -bolometer/MS -bolo/MS -boloney's -Bolshevik/MS -Bolshevism/MS -Bolshevistic/M -Bolshevist/MS -Bolshoi/M -bolsterer/M -bolster/SRDG -bolted/U -bolter/M -bolt/MDRGS -Bolton/M -bolts/U -Boltzmann/M -bolus/SM -bombardier/MS -bombard/LDSG -bombardment/SM -bombastic -bombastically -bombast/RMS -Bombay/M -bomber/M -bombproof -bomb/SGZDRJ -bombshell/SM -Bo/MRZ -bona -bonanza/MS -Bonaparte/M -Bonaventure/M -bonbon/SM -bondage/SM -bonder/M -bondholder/SM -Bondie/M -bond/JMDRSGZ -Bond/M -bondman/M -bondmen -Bondon/M -bonds/A -bondsman/M -bondsmen -bondwoman/M -bondwomen -Bondy/M -boned/U -bonehead/SDM -boneless -Bone/M -bone/MZDRSG -boner/M -bonfire/MS -bong/GDMS -bongo/MS -Bonham/M -bonhomie/MS -Boniface/M -boniness/MS -Bonita/M -bonito/MS -bonjour -bonkers -Bonnee/M -Bonner/M -bonneted/U -bonnet/SGMD -Bonneville/M -Bonnibelle/M -bonnie -Bonnie/M -Bonni/M -Bonn/RM -Bonny/M -bonny/RT -bonsai/SM -Bontempo/M -bonus/SM -bony/RTP -bonzes -boob/DMSG -booby/SM -boodle/GMSD -boogeyman's -boogieing -boogie/SD -boo/GSDH -boohoo/GDS -bookbinder/M -bookbindery/SM -bookbinding/M -bookbind/JRGZ -bookcase/MS -booked/U -bookend/SGD -Booker/M -book/GZDRMJSB -bookie/SM -booking/M -bookishness/M -bookish/PY -bookkeeper/M -bookkeep/GZJR -bookkeeping/M -booklet/MS -bookmaker/MS -bookmaking/MS -bookmark/MDGS -bookmobile/MS -bookplate/SM -bookseller/SM -bookshelf/M -bookshelves -bookshop/MS -bookstall/MS -bookstore/SM -bookwork/M -bookworm/MS -Boolean -boolean/S -Boole/M -boom/DRGJS -boomerang/MDSG -boomer/M -boomtown/S -boondocks -boondoggle/DRSGZ -boondoggler/M -Boone/M -Boonie/M -boonies -boon/MS -Boony/M -boorishness/SM -boorish/PY -boor/MS -boosterism -booster/M -boost/SGZMRD -boot/AGDS -bootblack/MS -bootee/MS -Boote/M -Bo�tes -Boothe/M -booth/M -Booth/M -booths -bootie's -bootlaces -bootlegged/M -bootlegger/SM -bootlegging/M -bootleg/S -Bootle/M -bootless -Boot/M -bootprints -boot's -bootstrapped -bootstrapping -bootstrap/SM -booty/SM -booze/DSRGMZ -boozer/M -boozy/TR -bopped -bopping -bop/S -borate/MSD -borax/MS -Bordeaux/M -bordello/MS -Borden/M -borderer/M -border/JRDMGS -borderland/SM -borderline/MS -Bordie/M -Bord/MN -Bordon/M -Bordy/M -Borealis/M -Boreas/M -boredom/MS -boreholes -borer/M -bore/ZGJDRS -Borges -Borgia/M -Borg/M -boric -boring/YMP -Boris -Bork/M -born/AIU -Borneo/M -borne/U -Born/M -Borodin/M -boron/SM -borosilicate/M -borough/M -boroughs -Borroughs/M -borrower/M -borrowing/M -borrow/JZRDGBS -borscht/SM -borstal/MS -Boru/M -borzoi/MS -Bosch/M -Bose/M -bosh/MS -Bosnia/M -Bosnian/S -bosom's -bosom/SGUD -bosomy/RT -boson/SM -Bosporus/M -boss/DSRMG -bossily -bossiness/MS -bossism/MS -bossy/PTSR -Bostitch/M -Bostonian/SM -Boston/MS -bosun's -Boswell/MS -botanical/SY -botanic/S -botanist/SM -botany/SM -botcher/M -botch/SRDGZ -botfly/M -bother/DG -bothersome -bothy/M -both/ZR -bot/S -Botswana/M -Botticelli/M -bottle/GMZSRD -bottleneck/GSDM -bottler/M -bottomlessness/M -bottomless/YP -bottommost -bottom/SMRDG -botulin/M -botulinus/M -botulism/SM -Boucher/M -boudoir/MS -bouffant/S -bougainvillea/SM -bough/MD -boughs -bought/N -bouillabaisse/MS -bouillon/MS -boulder/GMDS -Boulder/M -boulevard/MS -bouncer/M -bounce/SRDGZ -bouncily -bouncing/Y -bouncy/TRP -boundary/MS -bound/AUDI -boundedness/MU -bounded/UP -bounden -bounder/AM -bounders -bounding -boundlessness/SM -boundless/YP -bounds/IA -bounteousness/MS -bounteous/PY -bountifulness/SM -bountiful/PY -bounty/SDM -bouquet/SM -Bourbaki/M -bourbon/SM -Bourbon/SM -bourgeoisie/SM -bourgeois/M -Bourke/M -Bourne/M -Bournemouth/M -boutique/MS -bout/MS -boutonni�re/MS -Bouvier -Bovary/M -bovine/YS -Bowditch/M -bowdlerization/MS -bowdlerize/GRSD -bowed/U -bowel/GMDS -Bowell/M -Bowen/M -bower/DMG -Bowers -Bowery/M -Bowes -bowie -Bowie/M -bowing/M -bowlder's -bowlegged -bowleg/SM -bowler/M -bowlful/S -bowl/GZSMDR -bowline/MS -bowling/M -bowman/M -Bowman/M -bowmen -bowser/M -bowsprit/SM -bows/R -bowstring/GSMD -bow/SZGNDR -bowwow/DMGS -boxcar/SM -box/DRSJZGM -boxer/M -boxful/M -boxing/M -boxlike -boxtops -boxwood/SM -boxy/TPR -Boyce/M -Boycey/M -Boycie/M -boycotter/M -boycott/RDGS -Boyd/M -Boyer/M -boyfriend/MS -boyhood/SM -boyishness/MS -boyish/PY -Boyle/M -Boy/MR -boy/MRS -boyscout -boysenberry/SM -bozo/SM -bpi -bps -BR -brace/DSRJGM -braced/U -bracelet/MS -bracer/M -brachia -brachium/M -bracken/SM -bracketed/U -bracketing/M -bracket/SGMD -brackishness/SM -brackish/P -bract/SM -Bradan/M -bradawl/M -Bradbury/M -Bradburys -bradded -bradding -Braddock/M -Brade/M -Braden/M -Bradford/M -Bradley/M -Bradly/M -Brad/MYN -Bradney/M -Bradshaw/M -brad/SM -Bradstreet/M -Brady/M -brae/SM -braggadocio/SM -braggart/SM -bragged -bragger/MS -braggest -bragging -Bragg/M -brag/S -Brahe/M -Brahma/MS -Brahmanism/MS -Brahman/SM -Brahmaputra/M -Brahmin's -Brahms -braider/M -braiding/M -braid/RDSJG -braille/DSG -Braille/GDSM -Brainard/SM -braincell/S -brainchild/M -brainchildren -brain/GSDM -braininess/MS -brainlessness/M -brainless/YP -Brain/M -brainpower/M -brainstorm/DRMGJS -brainstorming/M -brainteaser/S -brainteasing -brainwasher/M -brainwashing/M -brainwash/JGRSD -brainwave/S -brainy/RPT -braise/SDG -brake/DSGM -brakeman/M -brakemen/M -bramble/DSGM -brambling/M -brambly/RT -Bram/M -Brampton/M -bra/MS -Brana/M -branched/U -branching/M -branchlike -Branch/M -branch/MDSJG -Branchville/M -Brandais/M -Brandea/M -branded/U -Brandeis/M -Brandel/M -Brande/M -Brandenburg/M -Branden/M -brander/GDM -Brander/M -Brandice/M -Brandie/M -Brandi/M -Brandise/M -brandish/GSD -Brand/MRN -Brando/M -Brandon/M -brand/SMRDGZ -Brandt/M -Brandtr/M -brandy/GDSM -Brandy/M -Brandyn/M -brandywine -Braniff/M -Bran/M -branned -branning -Brannon/M -bran/SM -Brantley/M -Brant/M -Braque/M -brashness/MS -brash/PYSRT -Brasilia -brasserie/SM -brass/GSDM -brassiere/MS -brassily -brassiness/SM -brassy/RSPT -Bratislava/M -brat/SM -Brattain/M -bratty/RT -bratwurst/MS -Braun/M -bravadoes -bravado/M -brave/DSRGYTP -braveness/MS -bravery/MS -bravest/M -bravo/SDG -bravura/SM -brawler/M -brawl/MRDSGZ -brawniness/SM -brawn/MS -brawny/TRP -brayer/M -Bray/M -bray/SDRG -braze/GZDSR -brazenness/MS -brazen/PYDSG -brazer/M -brazier/SM -Brazilian/MS -Brazil/M -Brazos/M -Brazzaville/M -breacher/M -breach/MDRSGZ -breadbasket/SM -breadboard/SMDG -breadbox/S -breadcrumb/S -breadfruit/MS -breadline/MS -bread/SMDHG -breadth/M -breadths -breadwinner/MS -breakables -breakable/U -breakage/MS -breakaway/MS -breakdown/MS -breaker/M -breakfaster/M -breakfast/RDMGZS -breakfront/S -breaking/M -breakneck -breakout/MS -breakpoint/SMDG -break/SZRBG -breakthroughs -breakthrough/SM -breakup/SM -breakwater/SM -bream/SDG -Breanne/M -Brear/M -breastbone/MS -breastfed -breastfeed/G -breasting/M -breast/MDSG -breastplate/SM -breaststroke/SM -breastwork/MS -breathable/U -breathalyser/S -Breathalyzer/SM -breathe -breather/M -breathing/M -breathlessness/SM -breathless/PY -breaths -breathtaking/Y -breathy/TR -breath/ZBJMDRSG -Brecht/M -Breckenridge/M -bred/DG -bredes -breeching/M -breech/MDSG -breeder/I -breeder's -breeding/IM -breeds/I -breed/SZJRG -Bree/M -Breena/M -breeze/GMSD -breezeway/SM -breezily -breeziness/SM -breezy/RPT -Bremen/M -bremsstrahlung/M -Brena/M -Brenda/M -Brendan/M -Brenden/M -Brendin/M -Brendis/M -Brendon/M -Bren/M -Brenna/M -Brennan/M -Brennen/M -Brenner/M -Brenn/RNM -Brent/M -Brenton/M -Bresenham/M -Brest/M -brethren -Bret/M -Breton -Brett/M -breve/SM -brevet/MS -brevetted -brevetting -breviary/SM -brevity/MS -brew/DRGZS -brewer/M -Brewer/M -brewery/MS -brewing/M -brewpub/S -Brew/RM -Brewster/M -Brezhnev/M -Bria/M -Briana/M -Brian/M -Brianna/M -Brianne/M -Briano/M -Briant/M -briar's -bribe/GZDSR -briber/M -bribery/MS -Brice/M -brickbat/SM -brick/GRDSM -bricklayer/MS -bricklaying/SM -brickmason/S -brickwork/SM -brickyard/M -bridal/S -Bridalveil/M -bridegroom/MS -Bride/M -bride/MS -bridesmaid/MS -Bridewell/M -bridgeable/U -bridged/U -bridgehead/MS -Bridgeport/M -Bridger/M -Bridges -bridge/SDGM -Bridget/M -Bridgetown/M -Bridgette/M -Bridgett/M -Bridgewater/M -bridgework/MS -bridging/M -Bridgman/M -Bridie/M -bridled/U -bridle/SDGM -bridleway/S -briefcase/SM -briefed/C -briefing/M -briefness/MS -briefs/C -brief/YRDJPGTS -Brien/M -Brier/M -brier/MS -Brie/RSM -Brietta/M -brigade/GDSM -brigadier/MS -Brigadoon -brigandage/MS -brigand/MS -brigantine/MS -Brigg/MS -Brigham/M -brightener/M -brighten/RDZG -bright/GXTPSYNR -Bright/M -brightness/SM -Brighton/M -Brigida/M -Brigid/M -Brigit/M -Brigitta/M -Brigitte/M -Brig/M -brig/SM -brilliance/MS -brilliancy/MS -brilliantine/MS -brilliantness/M -brilliant/PSY -Brillo -Brillouin/M -brimful -brimless -brimmed -brimming -brim/SM -brimstone/MS -Brina/M -Brindisi/M -brindle/DSM -brine/GMDSR -briner/M -Briney/M -bringer/M -bring/RGZS -brininess/MS -Brinkley/M -brinkmanship/SM -brink/MS -Brinna/M -Brinn/M -Briny/M -briny/PTSR -brioche/SM -Brion/M -briquet's -briquette/MGSD -Brisbane/M -brisket/SM -briskness/MS -brisk/YRDPGTS -bristle/DSGM -bristly/TR -Bristol/M -bristol/S -Britain/M -Brita/M -Britannia/M -Britannic -Britannica/M -britches -Briticism/MS -Britisher/M -Britishly/M -British/RYZ -Brit/MS -Britney/M -Britni/M -Briton/MS -Britta/M -Brittaney/M -Brittani/M -Brittan/M -Brittany/MS -Britte/M -Britten/M -Britteny/M -brittleness/MS -brittle/YTPDRSG -Britt/MN -Brittne/M -Brittney/M -Brittni/M -Brnaba/M -Brnaby/M -Brno/M -broach/DRSG -broacher/M -broadband -broadcaster/M -broadcast/RSGZJ -broadcasts/A -broadcloth/M -broadcloths -broaden/JGRDZ -broadleaved -broadloom/SM -broadminded/P -broadness/S -broadsheet/MS -broadside/SDGM -broadsword/MS -broad/TXSYRNP -Broadway/SM -Brobdingnagian -Brobdingnag/M -brocade/DSGM -broccoli/MS -brochette/SM -brochure/SM -Brockie/M -Brock/M -Brocky/M -Broddie/M -Broddy/M -Broderick/M -Broderic/M -Brodie/M -Brod/M -Brody/M -brogan/MS -Broglie/M -brogue/MS -broiler/M -broil/RDSGZ -brokenhearted/Y -brokenness/MS -broken/YP -brokerage/MS -broker/DMG -broke/RGZ -Brok/M -bromide/MS -bromidic -bromine/MS -bronchial -bronchi/M -bronchiolar -bronchiole/MS -bronchiolitis -bronchitic/S -bronchitis/MS -broncho's -bronchus/M -broncobuster/SM -bronco/SM -bronc/S -Bron/M -Bronnie/M -Bronny/M -Bronson/M -Bronte -brontosaur/SM -brontosaurus/SM -Bronx/M -bronzed/M -bronze/SRDGM -bronzing/M -brooch/MS -brooder/M -broodiness/M -brooding/Y -broodmare/SM -brood/SMRDGZ -broody/PTR -Brookdale/M -Brooke/M -Brookfield/M -Brookhaven/M -brooklet/MS -Brooklyn/M -Brookmont/M -brook/SGDM -brookside -Brook/SM -broom/SMDG -broomstick/MS -Bros -Brose/M -bro/SH -bros/S -brothel/MS -brother/DYMG -brotherhood/SM -brotherliness/MS -brotherly/P -broths -broth/ZMR -brougham/MS -brought -brouhaha/MS -browbeat/NSG -brow/MS -Brownell/M -Browne/M -Brownian/M -Brownie/MS -brownie/MTRS -browning/M -Browning/M -brownish -Brown/MG -brownness/MS -brownout/MS -brownstone/MS -Brownsville/M -brown/YRDMSJGTP -browse -browser/M -brows/SRDGZ -brr -Br/TMN -Brubeck/M -brucellosis/M -Bruce/M -Brucie/M -Bruckner/M -Bruegel/M -Brueghel's -bruin/MS -bruised/U -bruise/JGSRDZ -bruiser/M -Bruis/M -bruit/DSG -Brumidi/M -Brummel/M -brunch/MDSG -Brunei/M -Brunelleschi/M -brunet/S -brunette/SM -Brunhilda/M -Brunhilde/M -Bruno/M -Brunswick/M -brunt/GSMD -brusher/M -brushfire/MS -brushlike -brush/MSRDG -brushoff/S -brushwood/SM -brushwork/MS -brushy/R -brusqueness/MS -brusque/PYTR -Brussels -brutality/SM -brutalization/SM -brutalized/U -brutalizes/AU -brutalize/SDG -brutal/Y -brute/DSRGM -brutishness/SM -brutish/YP -Brutus/M -Bruxelles/M -Bryana/M -Bryan/M -Bryant/M -Bryanty/M -Bryce/M -Bryna/M -Bryn/M -Brynna/M -Brynne/M -Brynner/M -Brynn/RM -Bryon/M -Brzezinski/M -B's -BS -BSA -BSD -Btu -BTU -BTW -bu -bubblegum/S -bubbler/M -bubble/RSDGM -bubbly/TRS -Buber/M -bub/MS -buboes -bubo/M -bubonic -buccaneer/GMDS -Buchanan/M -Bucharest/M -Buchenwald/M -Buchwald/M -buckaroo/SM -buckboard/SM -bucker/M -bucketful/MS -bucket/SGMD -buckeye/SM -buck/GSDRM -buckhorn/M -Buckie/M -Buckingham/M -buckled/U -buckler/MDG -buckle/RSDGMZ -buckles/U -Buckley/M -buckling's -buckling/U -Buck/M -Buckner/M -buckram/GSDM -bucksaw/SM -buckshot/MS -buckskin/SM -buckteeth -bucktooth/DM -buckwheat/SM -Bucky/M -bucolically -bucolic/S -Budapest/M -budded -Buddha/MS -Buddhism/SM -Buddhist/SM -Buddie/M -budding/S -Budd/M -buddy/GSDM -Buddy/M -budge/GDS -budgerigar/MS -budgetary -budgeter/M -budget/GMRDZS -budgie/MS -budging/U -Bud/M -bud/MS -Budweiser/MS -Buehring/M -Buena/M -buffaloes -Buffalo/M -buffalo/MDG -buff/ASGD -buffered/U -bufferer/M -buffer/RDMSGZ -buffet/GMDJS -bufflehead/M -buffoonery/MS -buffoonish -buffoon/SM -buff's -Buffy/M -Buford/M -bugaboo/SM -Bugatti/M -bugbear/SM -bug/CS -bugeyed -bugged/C -buggered -buggering -bugger/SCM! -buggery/M -bugging/C -buggy/RSMT -bugle/GMDSRZ -bugler/M -bug's -Buick/M -builder/SM -building/SM -build/SAG -buildup/MS -built/AUI -Buiron/M -Bujumbura/M -Bukhara/M -Bukharin/M -Bulawayo/M -Bulba/M -bulb/DMGS -bulblet -bulbous -Bulfinch/M -Bulganin/M -Bulgaria/M -Bulgarian/S -bulge/DSGM -bulgy/RT -bulimarexia/S -bulimia/MS -bulimic/S -bulk/GDRMS -bulkhead/SDM -bulkiness/SM -bulky/RPT -bulldogged -bulldogger -bulldogging -bulldog/SM -bulldoze/GRSDZ -bulldozer/M -bullet/GMDS -bulletin/SGMD -bulletproof/SGD -bullfighter/M -bullfighting/M -bullfight/SJGZMR -bullfinch/MS -bullfrog/SM -bullhead/DMS -bullheadedness/SM -bullheaded/YP -bullhide -bullhorn/SM -bullied/M -bullion/SM -bullishness/SM -bullish/PY -bull/MDGS -Bullock/M -bullock/MS -bullpen/MS -bullring/SM -bullseye -bullshit/MS! -bullshitted/! -bullshitter/S! -bullshitting/! -bullwhackers -Bullwinkle/M -bullyboy/MS -bullying/M -bully/TRSDGM -bulrush/SM -Bultmann/M -bulwark/GMDS -bumblebee/MS -bumble/JGZRSD -bumbler/M -bumbling/Y -Bumbry/M -bummed/M -bummer/MS -bummest -bumming/M -bumper/DMG -bump/GZDRS -bumpiness/MS -bumpkin/MS -Bumppo/M -bumptiousness/SM -bumptious/PY -bumpy/PRT -bum/SM -Bunche/M -bunch/MSDG -bunchy/RT -buncombe's -bunco's -Bundestag/M -bundled/U -bundle/GMRSD -bundler/M -Bundy/M -bungalow/MS -bungee/SM -bung/GDMS -bunghole/MS -bungle/GZRSD -bungler/M -bungling/Y -Bunin/M -bunion/SM -bunk/CSGDR -Bunker/M -bunker's/C -bunker/SDMG -bunkhouse/SM -bunkmate/MS -bunko's -bunk's -bunkum/SM -Bunnie/M -Bunni/M -Bunny/M -bunny/SM -Bunsen/SM -bun/SM -bunt/GJZDRS -bunting/M -Bu�uel/M -Bunyan/M -buoyancy/MS -buoyant/Y -buoy/SMDG -Burbank/M -burbler/M -burble/RSDG -burbs -Burch/M -burden's -burdensomeness/M -burdensome/PY -burden/UGDS -burdock/SM -bureaucracy/MS -bureaucratically -bureaucratic/U -bureaucratization/MS -bureaucratize/SDG -bureaucrat/MS -bureau/MS -burgeon/GDS -burger/M -Burger/M -Burgess/M -burgess/MS -burgher/M -burgh/MRZ -burghs -burglarize/GDS -burglarproof/DGS -burglar/SM -burglary/MS -burgle/SDG -burgomaster/SM -Burgoyne/M -Burg/RM -burg/SZRM -Burgundian/S -Burgundy/MS -burgundy/S -burial/ASM -buried/U -burier/M -Burke/M -Burk/SM -burlap/MS -burler/M -burlesquer/M -burlesque/SRDMYG -burley/M -Burlie/M -burliness/SM -Burlingame/M -Burlington/M -Burl/M -burl/SMDRG -burly/PRT -Burma/M -Burmese -bur/MYS -burnable/S -Burnaby/M -Burnard/M -burned/U -Burne/MS -burner/M -Burnett/M -burn/GZSDRBJ -burning/Y -burnisher/M -burnish/GDRSZ -burnoose/MS -burnout/MS -Burns -Burnside/MS -burnt/YP -burp/SGMD -burr/GSDRM -Burris/M -burrito/S -Burr/M -burro/SM -Burroughs/M -burrower/M -burrow/GRDMZS -bursae -bursa/M -Bursa/M -bursar/MS -bursary/MS -bursitis/MS -burster/M -burst/SRG -Burtie/M -Burt/M -Burton/M -Burty/M -Burundian/S -Burundi/M -bury/ASDG -busboy/MS -busby/SM -Busch/M -buses/A -busgirl/S -bus/GMDSJ -bushel/MDJSG -Bushido/M -bushiness/MS -bushing/M -bush/JMDSRG -bushland -Bush/M -bushman/M -bushmaster/SM -bushmen -Bushnell/M -bushwhacker/M -bushwhacking/M -bushwhack/RDGSZ -bushy/PTR -busily -businesslike -businessman/M -businessmen -business/MS -businesspeople -businessperson/S -businesswoman/M -businesswomen -busker/M -busk/GRM -buskin/SM -bus's/A -buss/D -bustard/MS -buster/M -bustle/GSD -bustling/Y -bust/MSDRGZ -busty/RT -busybody/MS -busy/DSRPTG -busyness/MS -busywork/SM -but/ACS -butane/MS -butcherer/M -butcher/MDRYG -butchery/MS -Butch/M -butch/RSZ -butene/M -Butler/M -butler/SDMG -butted/A -butte/MS -butterball/MS -buttercup/SM -buttered/U -butterfat/MS -Butterfield/M -butterfingered -butterfingers/M -butterfly/MGSD -buttermilk/MS -butternut/MS -butter/RDMGZ -butterscotch/SM -buttery/TRS -butting/M -buttock/SGMD -buttoner/M -buttonhole/GMRSD -buttonholer/M -button's -button/SUDG -buttonweed -buttonwood/SM -buttress/MSDG -butt/SGZMDR -butyl/M -butyrate/M -buxomness/M -buxom/TPYR -Buxtehude/M -buyback/S -buyer/M -buyout/S -buy/ZGRS -buzzard/MS -buzz/DSRMGZ -buzzer/M -buzzword/SM -buzzy -bx -bxs -byelaw's -Byelorussia's -bye/MZS -Byers/M -bygone/S -bylaw/SM -byliner/M -byline/RSDGM -BYOB -bypass/GSDM -bypath/M -bypaths -byplay/S -byproduct/SM -Byram/M -Byran/M -Byrann/M -Byrd/M -byre/SM -Byrle/M -Byrne/M -byroad/MS -Byrom/M -Byronic -Byronism/M -Byron/M -bystander/SM -byte/SM -byway/SM -byword/SM -byzantine -Byzantine/S -Byzantium/M -by/ZR -C -ca -CA -cabala/MS -caballed -caballero/SM -caballing -cabal/SM -cabana/MS -cabaret/SM -cabbage/MGSD -cabbed -cabbing -cabby's -cabdriver/SM -caber/M -Cabernet/M -cabinetmaker/SM -cabinetmaking/MS -cabinet/MS -cabinetry/SM -cabinetwork/MS -cabin/GDMS -cablecast/SG -cable/GMDS -cablegram/SM -cabochon/MS -caboodle/SM -caboose/MS -Cabot/M -Cabrera/M -Cabrini/M -cabriolet/MS -cab/SMR -cabstand/MS -cacao/SM -cacciatore -cache/DSRGM -cachepot/MS -cachet/MDGS -Cacilia/M -Cacilie/M -cackler/M -cackle/RSDGZ -cackly -CACM -cacophonist -cacophonous -cacophony/SM -cacti -cactus/M -CAD -cadaverous/Y -cadaver/SM -caddishness/SM -caddish/PY -Caddric/M -caddy/GSDM -cadence/CSM -cadenced -cadencing -cadent/C -cadenza/MS -cadet/SM -Cadette/S -cadge/DSRGZ -cadger/M -Cadillac/MS -Cadiz/M -Cad/M -cadmium/MS -cadre/SM -cad/SM -caducei -caduceus/M -Caedmon/M -Caesar/MS -caesura/SM -caf�/MS -cafeteria/SM -caffeine/SM -caftan/SM -caged/U -Cage/M -cage/MZGDRS -cager/M -cagey/P -cagier -cagiest -cagily -caginess/MS -Cagney/M -Cahokia/M -cahoot/MS -Cahra/M -CAI -Caiaphas/M -caiman's -Caine/M -Cain/MS -Cairistiona/M -cairn/SDM -Cairo/M -caisson/SM -caitiff/MS -Caitlin/M -Caitrin/M -cajole/LGZRSD -cajolement/MS -cajoler/M -cajolery/SM -Cajun/MS -cake/MGDS -cakewalk/SMDG -calabash/SM -calaboose/MS -Calais/M -calamari/S -calamine/GSDM -calamitousness/M -calamitous/YP -calamity/MS -cal/C -calcareousness/M -calcareous/PY -calciferous -calcification/M -calcify/XGNSD -calcimine/GMSD -calcine/SDG -calcite/SM -calcium/SM -Calcomp/M -CalComp/M -CALCOMP/M -calculability/IM -calculable/IP -calculate/AXNGDS -calculated/PY -calculatingly -calculating/U -calculation/AM -calculative -calculator/SM -calculi -calculus/M -Calcutta/M -caldera/SM -Calder/M -Calderon/M -caldron's -Caldwell/M -Caleb/M -Caledonia/M -Cale/M -calendar/MDGS -calender/MDGS -calf/M -calfskin/SM -Calgary/M -Calhoun/M -Caliban/M -caliber/SM -calibrated/U -calibrater's -calibrate/XNGSD -calibrating/A -calibration/M -calibrator/MS -calicoes -calico/M -Calida/M -Calif/M -California/M -Californian/MS -californium/SM -calif's -Caligula/M -Cali/M -caliper/SDMG -caliphate/SM -caliph/M -caliphs -calisthenic/S -calisthenics/M -Callaghan/M -call/AGRDBS -Callahan/M -calla/MS -Calla/MS -Callao/M -callback/S -Callean/M -called/U -callee/M -caller/MS -Calley/M -Callida/M -Callie/M -calligrapher/M -calligraphic -calligraphist/MS -calligraph/RZ -calligraphy/MS -Calli/M -calling/SM -Calliope/M -calliope/SM -callisthenics's -Callisto/M -callosity/MS -callousness/SM -callous/PGSDY -callowness/MS -callow/RTSP -callus/SDMG -Cally/M -calming/Y -calmness/MS -calm/PGTYDRS -Cal/MY -Caloocan/M -caloric/S -calorie/SM -calorific -calorimeter/MS -calorimetric -calorimetry/M -Caltech/M -Calumet/M -calumet/MS -calumniate/NGSDX -calumniation/M -calumniator/SM -calumnious -calumny/MS -calvary/M -Calvary/M -calve/GDS -Calvert/M -calves/M -Calvinism/MS -Calvinistic -Calvinist/MS -Calvin/M -Calv/M -calyces's -Calypso/M -calypso/SM -calyx/MS -Ca/M -CAM -Camacho/M -Camala/M -camaraderie/SM -camber/DMSG -cambial -cambium/SM -Cambodia/M -Cambodian/S -Cambrian/S -cambric/MS -Cambridge/M -camcorder/S -Camden/M -camelhair's -Camella/M -Camellia/M -camellia/MS -Camel/M -Camelopardalis/M -Camelot/M -camel/SM -Camembert/MS -cameo/GSDM -camerae -cameraman/M -cameramen -camera/MS -camerawoman -camerawomen -Cameron/M -Cameroonian/S -Cameroon/SM -came/N -Camey/M -Camila/M -Camile/M -Camilla/M -Camille/M -Cami/M -Camino/M -camion/M -camisole/MS -Cam/M -cammed -Cammie/M -Cammi/M -cam/MS -Cammy/M -Camoens/M -camomile's -camouflage/DRSGZM -camouflager/M -campaigner/M -campaign/ZMRDSG -campanile/SM -campanological -campanologist/SM -campanology/MS -Campbell/M -Campbellsport/M -camper/SM -campesinos -campest -campfire/SM -campground/MS -camphor/MS -Campinas/M -camping/S -Campos -camp's -camp/SCGD -campsite/MS -campus/GSDM -campy/RT -Camry/M -camshaft/SM -Camus/M -Canaanite/SM -Canaan/M -Canada/M -Canadianism/SM -Canadian/S -Canad/M -Canaletto/M -canalization/MS -canalize/GSD -canal/SGMD -canap�/S -canard/MS -Canaries -canary/SM -canasta/SM -Canaveral/M -Canberra/M -cancan/SM -cancelate/D -canceled/U -canceler/M -cancellation/MS -cancel/RDZGS -cancer/MS -Cancer/MS -cancerous/Y -Cancun/M -Candace/M -candelabra/S -candelabrum/M -Candice/M -candidacy/MS -Candida/M -candidate/SM -candidature/S -Candide/M -candidly/U -candidness/SM -candid/TRYPS -Candie/M -Candi/SM -candle/GMZRSD -candlelight/SMR -candlelit -candlepower/SM -candler/M -candlestick/SM -Candlewick/M -candlewick/MS -candor/MS -Candra/M -candy/GSDM -Candy/M -canebrake/SM -caner/M -cane/SM -canine/S -caning/M -Canis/M -canister/SGMD -cankerous -canker/SDMG -Can/M -can/MDRSZGJ -cannabis/MS -canned -cannelloni -canner/SM -cannery/MS -Cannes -cannibalism/MS -cannibalistic -cannibalization/SM -cannibalize/GSD -cannibal/SM -cannily/U -canninesses -canniness/UM -canning/M -cannister/SM -cannonade/SDGM -cannonball/SGDM -Cannon/M -cannon/SDMG -cannot -canny/RPUT -canoe/DSGM -canoeist/SM -Canoga/M -canonic -canonicalization -canonicalize/GSD -canonical/SY -canonist/M -canonization/MS -canonized/U -canonize/SDG -canon/SM -Canopus/M -canopy/GSDM -canst -can't -cantabile/S -Cantabrigian -cantaloupe/MS -cantankerousness/SM -cantankerous/PY -cantata/SM -cant/CZGSRD -canted/IA -canteen/MS -Canterbury/M -canter/CM -cantered -cantering -canticle/SM -cantilever/SDMG -canto/MS -cantonal -Cantonese/M -Canton/M -cantonment/SM -canton/MGSLD -Cantor/M -cantor/MS -Cantrell/M -cant's -cants/A -Cantu/M -Canute/M -canvasback/MS -canvas/RSDMG -canvasser/M -canvass/RSDZG -canyon/MS -CAP -capability/ISM -capableness/IM -capable/PI -capabler -capablest -capably/I -capaciousness/MS -capacious/PY -capacitance/SM -capacitate/V -capacitive/Y -capacitor/MS -capacity/IMS -caparison/SDMG -Capek/M -Capella/M -caper/GDM -capeskin/SM -cape/SM -Capet/M -Capetown/M -Caph/M -capillarity/MS -capillary/S -Capistrano/M -capitalism/SM -capitalistic -capitalistically -capitalist/SM -capitalization/SMA -capitalized/AU -capitalizer/M -capitalize/RSDGZ -capitalizes/A -capital/SMY -capita/M -Capitan/M -capitation/CSM -Capitoline/M -Capitol/MS -capitol/SM -capitulate/AXNGSD -capitulation/MA -caplet/S -cap/MDRSZB -Capone/M -capon/SM -capo/SM -Capote/M -capped/UA -capping/M -cappuccino/MS -Cappy/M -Capra/M -Caprice/M -caprice/MS -capriciousness/MS -capricious/PY -Capricorn/MS -Capri/M -caps/AU -capsicum/MS -capsize/SDG -capstan/MS -capstone/MS -capsular -capsule/MGSD -capsulize/GSD -captaincy/MS -captain/SGDM -caption/GSDRM -captiousness/SM -captious/PY -captivate/XGNSD -captivation/M -captivator/SM -captive/MS -captivity/SM -Capt/M -captor/SM -capture/AGSD -capturer/MS -capt/V -Capulet/M -Caputo/M -Caracalla/M -Caracas/M -caracul's -carafe/SM -Caralie/M -Cara/M -caramelize/SDG -caramel/MS -carapace/SM -carapaxes -carat/SM -Caravaggio/M -caravan/DRMGS -caravaner/M -caravansary/MS -caravanserai's -caravel/MS -caraway/MS -carbide/MS -carbine/MS -carbohydrate/MS -carbolic -Carboloy/M -carbonaceous -carbonate/SDXMNG -carbonation/M -Carbondale/M -Carbone/MS -carbonic -carboniferous -Carboniferous -carbonization/SAM -carbonizer/AS -carbonizer's -carbonizes/A -carbonize/ZGRSD -carbon/MS -carbonyl/M -carborundum -Carborundum/MS -carboy/MS -carbuncle/SDM -carbuncular -carburetor/MS -carburetter/S -carburettor/SM -carcase/MS -carcass/SM -Carce/M -carcinogenic -carcinogenicity/MS -carcinogen/SM -carcinoma/SM -cardamom/MS -cardboard/MS -card/EDRSG -Cardenas/M -carder/MS -carder's/E -cardholders -cardiac/S -Cardiff/M -cardigan/SM -cardinality/SM -cardinal/SYM -carding/M -Cardin/M -Cardiod/M -cardiogram/MS -cardiograph/M -cardiographs -cardioid/M -cardiologist/SM -cardiology/MS -cardiomegaly/M -cardiopulmonary -cardiovascular -card's -cardsharp/ZSMR -CARE -cared/U -careen/DSG -careerism/M -careerist/MS -career/SGRDM -carefree -carefuller -carefullest -carefulness/MS -careful/PY -caregiver/S -carelessness/MS -careless/YP -Care/M -Carena/M -Caren/M -carer/M -care/S -Caresa/M -Caressa/M -Caresse/M -caresser/M -caressing/Y -caressive/Y -caress/SRDMVG -caretaker/SM -caret/SM -careworn -Carey/M -carfare/MS -cargoes -cargo/M -carhopped -carhopping -carhop/SM -Caria/M -Caribbean/S -Carib/M -caribou/MS -caricature/GMSD -caricaturisation -caricaturist/MS -caricaturization -Carie/M -caries/M -carillonned -carillonning -carillon/SM -Caril/M -Carilyn/M -Cari/M -Carina/M -Carine/M -caring/U -Carin/M -Cariotta/M -carious -Carissa/M -Carita/M -Caritta/M -carjack/GSJDRZ -Carla/M -Carlee/M -Carleen/M -Carlene/M -Carlen/M -Carletonian/M -Carleton/M -Carley/M -Carlie/M -Carlina/M -Carline/M -Carling/M -Carlin/M -Carlita/M -Carl/MNG -carload/MSG -Carlo/SM -Carlota/M -Carlotta/M -Carlsbad/M -Carlson/M -Carlton/M -Carlye/M -Carlyle/M -Carly/M -Carlyn/M -Carlynne/M -Carlynn/M -Carma/M -Carmela/M -Carmelia/M -Carmelina/M -Carmelita/M -Carmella/M -Carmelle/M -Carmel/M -Carmelo/M -Carmencita/M -Carmen/M -Carmichael/M -Carmina/M -Carmine/M -carmine/MS -Carmita/M -Car/MNY -Carmon/M -carnage/MS -carnality/SM -carnal/Y -Carnap/M -carnation/IMS -Carnegie/M -carnelian/SM -Carney/M -carney's -carnival/MS -carnivore/SM -carnivorousness/MS -carnivorous/YP -Carnot/M -Carny/M -carny/SDG -carob/SM -Carola/M -Carolan/M -Carolann/M -Carolee/M -Carole/M -caroler/M -Carolina/MS -Caroline/M -Carolingian -Carolinian/S -Carolin/M -Caroljean/M -Carol/M -carol/SGZMRD -Carolus/M -Carolyne/M -Carolyn/M -Carolynn/M -Caro/M -carom/GSMD -Caron/M -carotene/MS -carotid/MS -carousal/MS -carousel/MS -carouser/M -carouse/SRDZG -carpal/SM -Carpathian/MS -carpel/SM -carpenter/DSMG -carpentering/M -Carpenter/M -carpentry/MS -carper/M -carpetbagged -carpetbagger/MS -carpetbagging -carpetbag/MS -carpeting/M -carpet/MDJGS -carpi/M -carping/Y -carp/MDRSGZ -carpool/DGS -carport/MS -carpus/M -carrageen/M -Carree/M -carrel/SM -carriage/SM -carriageway/SM -Carrie/M -carrier/M -Carrier/M -Carrillo/M -Carri/M -carrion/SM -Carrissa/M -Carr/M -Carroll/M -Carrol/M -carrot/MS -carroty/RT -carrousel's -carryall/MS -Carry/MR -carryout/S -carryover/S -carry/RSDZG -carsickness/SM -carsick/P -Carson/M -cartage/MS -cartel/SM -carte/M -carter/M -Carter/M -Cartesian -Carthage/M -Carthaginian/S -carthorse/MS -Cartier/M -cartilage/MS -cartilaginous -cartload/MS -cart/MDRGSZ -Cart/MR -cartographer/MS -cartographic -cartography/MS -carton/GSDM -cartoon/GSDM -cartoonist/MS -cartridge/SM -cartwheel/MRDGS -Cartwright/M -Carty/RM -Caruso/M -carve/DSRJGZ -carven -carver/M -Carver/M -carving/M -caryatid/MS -Caryl/M -Cary/M -Caryn/M -car/ZGSMDR -casaba/SM -Casablanca/M -Casals/M -Casandra/M -Casanova/SM -Casar/M -casbah/M -cascade/MSDG -Cascades/M -cascara/MS -casebook/SM -case/DSJMGL -cased/U -caseharden/SGD -casein/SM -caseload/MS -Case/M -casement/SM -caseworker/M -casework/ZMRS -Casey/M -cashbook/SM -cashew/MS -cash/GZMDSR -cashier/SDMG -cashless -Cash/M -cashmere/MS -Casie/M -Casi/M -casing/M -casino/MS -casket/SGMD -cask/GSDM -Caspar/M -Casper/M -Caspian -Cass -Cassandra/SM -Cassandre/M -Cassandry/M -Cassatt/M -Cassaundra/M -cassava/MS -casserole/MGSD -cassette/SM -Cassey/M -cassia/MS -Cassie/M -Cassi/M -cassino's -Cassiopeia/M -Cassite/M -Cassius/M -cassock/SDM -Cassondra/M -cassowary/SM -Cassy/M -Castaneda/M -castanet/SM -castaway/SM -castellated -caste/MHS -caster/M -cast/GZSJMDR -castigate/XGNSD -castigation/M -castigator/SM -Castile's -Castillo/M -casting/M -castle/GMSD -castoff/S -Castor/M -castor's -castrate/DSNGX -castration/M -Castries/M -Castro/M -casts/A -casualness/SM -casual/SYP -casualty/SM -casuistic -casuist/MS -casuistry/SM -cataclysmal -cataclysmic -cataclysm/MS -catacomb/MS -catafalque/SM -Catalan/MS -catalepsy/MS -cataleptic/S -Catalina/M -cataloger/M -catalog/SDRMZG -Catalonia/M -catalpa/SM -catalysis/M -catalyst/SM -catalytic -catalytically -catalyze/DSG -catamaran/MS -catapult/MGSD -cataract/MS -Catarina/M -catarrh/M -catarrhs -catastrophe/SM -catastrophic -catastrophically -catatonia/MS -catatonic/S -Catawba/M -catbird/MS -catboat/SM -catcall/SMDG -catchable/U -catchall/MS -catch/BRSJLGZ -catcher/M -catchment/SM -catchpenny/S -catchphrase/S -catchup/MS -catchword/MS -catchy/TR -catechism/MS -catechist/SM -catechize/SDG -catecholamine/MS -categoric -categorical/Y -categorization/MS -categorized/AU -categorize/RSDGZ -category/MS -Cate/M -catenate/NF -catenation/MF -catercorner -caterer/M -cater/GRDZ -Caterina/M -catering/M -Caterpillar -caterpillar/SM -caterwaul/DSG -catfish/MS -catgut/SM -Catha/M -Catharina/M -Catharine/M -catharses -catharsis/M -cathartic/S -Cathay/M -cathedral/SM -Cathee/M -Catherina/M -Catherine/M -Catherin/M -Cather/M -Cathe/RM -catheterize/GSD -catheter/SM -Cathie/M -Cathi/M -Cathleen/M -Cathlene/M -cathode/MS -cathodic -catholicism -Catholicism/SM -catholicity/MS -catholic/MS -Catholic/S -Cathrine/M -Cathrin/M -Cathryn/M -Cathyleen/M -Cathy/M -Catie/M -Catiline/M -Cati/M -Catina/M -cationic -cation/MS -catkin/SM -Catlaina/M -Catlee/M -catlike -Catlin/M -catnapped -catnapping -catnap/SM -catnip/MS -Cato/M -Catrina/M -Catriona/M -Catskill/SM -cat/SMRZ -catsup's -cattail/SM -catted -cattery/M -cattily -cattiness/SM -catting -cattle/M -cattleman/M -cattlemen -Catt/M -catty/PRST -Catullus/M -CATV -catwalk/MS -Caty/M -Caucasian/S -Caucasoid/S -Caucasus/M -Cauchy/M -caucus/SDMG -caudal/Y -caught/U -cauldron/MS -cauliflower/MS -caulker/M -caulk/JSGZRD -causality/SM -causal/YS -causate/XVN -causation/M -causative/SY -cause/DSRGMZ -caused/U -causeless -causerie/MS -causer/M -causeway/SGDM -caustically -causticity/MS -caustic/YS -cauterization/SM -cauterized/U -cauterize/GSD -cautionary -cautioner/M -caution/GJDRMSZ -cautiousness's/I -cautiousness/SM -cautious/PIY -cavalcade/MS -cavalierness/M -cavalier/SGYDP -cavalryman/M -cavalrymen -cavalry/MS -caveat/SM -caveatted -caveatting -cave/GFRSD -caveman/M -cavemen -Cavendish/M -caver/M -cavern/GSDM -cavernous/Y -cave's -caviar/MS -caviler/M -cavil/SJRDGZ -caving/MS -cavity/MFS -cavort/SDG -Cavour/M -caw/SMDG -Caxton/M -Caye/M -Cayenne/M -cayenne/SM -Cayla/M -Cayman/M -cayman/SM -cay's -cay/SC -Cayuga/M -cayuse/SM -Caz/M -Cazzie/M -c/B -CB -CBC -Cb/M -CBS -cc -Cchaddie/M -CCTV -CCU -CD -CDC/M -Cd/M -CDT -Ce -cease/DSCG -ceasefire/S -ceaselessness/SM -ceaseless/YP -ceasing/U -Ceausescu/M -Cebuano/M -Cebu/M -ceca -cecal -Cecelia/M -Cece/M -Cecile/M -Ceciley/M -Cecilia/M -Cecilio/M -Cecilius/M -Cecilla/M -Cecil/M -Cecily/M -cecum/M -cedar/SM -ceded/A -cede/FRSDG -ceder's/F -ceder/SM -cedes/A -cedilla/SM -ceding/A -Ced/M -Cedric/M -ceilidh/M -ceiling/MDS -Ceil/M -celandine/MS -Celanese/M -Celebes's -celebrant/MS -celebratedness/M -celebrated/P -celebrate/XSDGN -celebration/M -celebrator/MS -celebratory -celebrity/MS -Cele/M -Celene/M -celerity/SM -celery/SM -Celesta/M -celesta/SM -Celeste/M -celestial/YS -Celestia/M -Celestina/M -Celestine/M -Celestyna/M -Celestyn/M -Celia/M -celibacy/MS -celibate/SM -Celie/M -Celina/M -Celinda/M -Celine/M -Celinka/M -Celisse/M -Celka/M -cellarer/M -cellar/RDMGS -Celle/M -cell/GMDS -Cellini/M -cellist/SM -Cello/M -cello/MS -cellophane/SM -cellphone/S -cellular/SY -cellulite/S -celluloid/SM -cellulose/SM -Celsius/S -Celtic/SM -Celt/MS -cementa -cementer/M -cementum/SM -cement/ZGMRDS -cemetery/MS -cenobite/MS -cenobitic -cenotaph/M -cenotaphs -Cenozoic -censer/MS -censored/U -censor/GDMS -censorial -censoriousness/MS -censorious/YP -censorship/MS -censure/BRSDZMG -censurer/M -census/SDMG -centaur/SM -Centaurus/M -centavo/SM -centenarian/MS -centenary/S -centennial/YS -center/AC -centerboard/SM -centered -centerer/S -centerfold/S -centering/SM -centerline/SM -centerpiece/SM -center's -Centigrade -centigrade/S -centigram/SM -centiliter/MS -centime/SM -centimeter/SM -centipede/MS -Centralia/M -centralism/M -centralist/M -centrality/MS -centralization/CAMS -centralize/CGSD -centralizer/SM -centralizes/A -central/STRY -centrefold's -Centrex -CENTREX/M -centric/F -centrifugal/SY -centrifugate/NM -centrifugation/M -centrifuge/GMSD -centripetal/Y -centrist/MS -centroid/MS -cent/SZMR -centurion/MS -century/MS -CEO -cephalic/S -Cepheid -Cepheus/M -ceramicist/S -ceramic/MS -ceramist/MS -cerate/MD -Cerberus/M -cereal/MS -cerebellar -cerebellum/MS -cerebra -cerebral/SY -cerebrate/XSDGN -cerebration/M -cerebrum/MS -cerement/SM -ceremonial/YSP -ceremoniousness/MS -ceremoniousness's/U -ceremonious/YUP -ceremony/MS -Cerenkov/M -Ceres/M -Cerf/M -cerise/SM -cerium/MS -cermet/SM -CERN/M -certainer -certainest -certainty/UMS -certain/UY -cert/FS -certifiable -certifiably -certificate/SDGM -certification/AMC -certified/U -certifier/M -certify/DRSZGNX -certiorari/M -certitude/ISM -cerulean/MS -Cervantes/M -cervical -cervices/M -cervix/M -Cesarean -cesarean/S -Cesare/M -Cesar/M -Cesaro/M -cesium/MS -cessation/SM -cession/FAMSK -Cessna/M -cesspit/M -cesspool/SM -Cesya/M -cetacean/S -cetera/S -Cetus/M -Ceylonese -Ceylon/M -Cezanne/S -cf -CF -CFC -Cf/M -CFO -cg -Chablis/SM -Chaddie/M -Chadd/M -Chaddy/M -Chadian/S -Chad/M -Chadwick/M -chafe/GDSR -chafer/M -chaffer/DRG -chafferer/M -Chaffey/M -chaff/GRDMS -chaffinch/SM -Chagall/M -chagrin/DGMS -Chaim/M -chainlike -chain's -chainsaw/SGD -chain/SGUD -chairlady/M -chairlift/MS -chairman/MDGS -chairmanship/MS -chairmen -chairperson/MS -chair/SGDM -chairwoman/M -chairwomen -chaise/SM -chalcedony/MS -Chaldea/M -Chaldean/M -chalet/SM -chalice/DSM -chalkboard/SM -chalk/DSMG -chalkiness/S -chalkline -chalky/RPT -challenged/U -challenger/M -challenge/ZGSRD -challenging/Y -challis/SM -Chalmers -chamberer/M -Chamberlain/M -chamberlain/MS -chambermaid/MS -chamberpot/S -Chambers/M -chamber/SZGDRM -chambray/MS -chameleon/SM -chamfer/DMGS -chammy's -chamois/DSMG -chamomile/MS -champagne/MS -champaign/M -champ/DGSZ -champion/MDGS -championship/MS -Champlain/M -chanced/M -chance/GMRSD -chancellery/SM -chancellorship/SM -chancellor/SM -Chancellorsville/M -chancel/SM -Chance/M -chancery/SM -Chancey/M -chanciness/S -chancing/M -chancre/SM -chancy/RPT -Chandal/M -Chanda/M -chandelier/SM -Chandigarh/M -Chandler/M -chandler/MS -Chandragupta/M -Chandra/M -Chandrasekhar/M -Chandy/M -Chanel/M -Chane/M -Chaney/M -Changchun/M -changeabilities -changeability/UM -changeableness/SM -changeable/U -changeably/U -changed/U -change/GZRSD -changeless -changeling/M -changeover/SM -changer/M -changing/U -Chang/M -Changsha/M -Chan/M -Channa/M -channeler/M -channeling/M -channelization/SM -channelize/GDS -channellings -channel/MDRZSG -Channing/M -chanson/SM -Chantalle/M -Chantal/M -chanter/M -chanteuse/MS -chantey/SM -chanticleer/SM -Chantilly/M -chantry/MS -chant/SJGZMRD -chanty's -Chanukah's -Chao/M -chaos/SM -chaotic -chaotically -chaparral/MS -chapbook/SM -chapeau/MS -chapel/MS -chaperonage/MS -chaperoned/U -chaperone's -chaperon/GMDS -chaplaincy/MS -chaplain/MS -chaplet/SM -Chaplin/M -Chapman/M -chap/MS -Chappaquiddick/M -chapped -chapping -chapter/SGDM -Chara -charabanc/MS -characterful -characteristically/U -characteristic/SM -characterizable/MS -characterization/MS -characterize/DRSBZG -characterized/U -characterizer/M -characterless -character/MDSG -charade/SM -charbroil/SDG -charcoal/MGSD -Chardonnay -chardonnay/S -chard/SM -chargeableness/M -chargeable/P -charged/U -charge/EGRSDA -charger/AME -chargers -char/GS -Charil/M -charily -chariness/MS -Charin/M -charioteer/GSDM -Chariot/M -chariot/SMDG -Charis -charisma/M -charismata -charismatically -charismatic/S -Charissa/M -Charisse/M -charitablenesses -charitableness/UM -charitable/UP -charitably/U -Charita/M -Charity/M -charity/MS -charlady/M -Charla/M -charlatanism/MS -charlatanry/SM -charlatan/SM -Charlean/M -Charleen/M -Charlemagne/M -Charlena/M -Charlene/M -Charles/M -Charleston/SM -Charley/M -Charlie/M -Charline/M -Charlot/M -Charlotta/M -Charlotte/M -Charlottesville/M -Charlottetown/M -Charlton/M -Charmaine/M -Charmain/M -Charmane/M -charmer/M -Charmian/M -Charmine/M -charming/RYT -Charmin/M -Charmion/M -charmless -charm/SGMZRD -Charolais -Charo/M -Charon/M -charred -charring -charted/U -charter/AGDS -chartered/U -charterer/SM -charter's -chartist/SM -Chartres/M -chartreuse/MS -chartroom/S -chart/SJMRDGBZ -charwoman/M -charwomen -Charybdis/M -Charyl/M -chary/PTR -Chas -chase/DSRGZ -Chase/M -chaser/M -chasing/M -Chasity/M -chasm/SM -chassis/M -chastely -chasteness/SM -chasten/GSD -chaste/UTR -chastisement/SM -chastiser/M -chastise/ZGLDRS -Chastity/M -chastity/SM -chastity's/U -chasuble/SM -Chateaubriand -ch�teau/M -chateaus -ch�teaux -ch�telaine/SM -chat/MS -Chattahoochee/M -Chattanooga/M -chatted -chattel/MS -chatterbox/MS -chatterer/M -Chatterley/M -chatter/SZGDRY -Chatterton/M -chattily -chattiness/SM -chatting -chatty/RTP -Chaucer/M -chauffeur/GSMD -Chaunce/M -Chauncey/M -Chautauqua/M -chauvinism/MS -chauvinistic -chauvinistically -chauvinist/MS -Chavez/M -chaw -Chayefsky/M -cheapen/DG -cheapish -cheapness/MS -cheapskate/MS -cheap/YRNTXSP -cheater/M -cheat/RDSGZ -Chechen/M -Chechnya/M -checkable/U -checkbook/MS -checked/UA -checkerboard/MS -checker/DMG -check/GZBSRDM -checklist/S -checkmate/MSDG -checkoff/SM -checkout/S -checkpoint/MS -checkroom/MS -check's/A -checks/A -checksummed -checksumming -checksum/SM -checkup/MS -Cheddar/MS -cheddar/S -cheekbone/SM -cheek/DMGS -cheekily -cheekiness/SM -cheeky/PRT -cheep/GMDS -cheerer/M -cheerfuller -cheerfullest -cheerfulness/MS -cheerful/YP -cheerily -cheeriness/SM -cheerio/S -Cheerios/M -cheerleader/SM -cheerlessness/SM -cheerless/PY -cheers/S -cheery/PTR -cheer/YRDGZS -cheeseburger/SM -cheesecake/SM -cheesecloth/M -cheesecloths -cheeseparing/S -cheese/SDGM -cheesiness/SM -cheesy/PRT -cheetah/M -cheetahs -Cheeto/M -Cheever/M -cheffed -cheffing -chef/SM -Chekhov/M -chelate/XDMNG -chelation/M -Chelsae/M -Chelsea/M -Chelsey/M -Chelsie/M -Chelsy/M -Chelyabinsk/M -chem -Che/M -chemic -chemical/SYM -chemiluminescence/M -chemiluminescent -chemise/SM -chemistry/SM -chemist/SM -chemotherapeutic/S -chemotherapy/SM -chemurgy/SM -Chengdu -Cheng/M -chenille/SM -Chen/M -Cheops/M -Chere/M -Cherey/M -Cherianne/M -Cherice/M -Cherida/M -Cherie/M -Cherilyn/M -Cherilynn/M -Cheri/M -Cherin/M -Cherise/M -cherisher/M -cherish/GDRS -Cherish/M -Cheriton/M -Cherlyn/M -Cher/M -Chernenko/M -Chernobyl/M -Cherokee/MS -cheroot/MS -Cherri/M -Cherrita/M -Cherry/M -cherry/SM -chert/MS -cherubic -cherubim/S -cherub/SM -chervil/MS -Cherye/M -Cheryl/M -Chery/M -Chesapeake/M -Cheshire/M -Cheslie/M -chessboard/SM -chessman/M -chessmen -chess/SM -Chesterfield/M -chesterfield/MS -Chester/M -Chesterton/M -chestful/S -chest/MRDS -chestnut/SM -Cheston/M -chesty/TR -Chet/M -Chevalier/M -chevalier/SM -Cheviot/M -cheviot/S -Chev/M -Chevrolet/M -chevron/DMS -Chevy/M -chewer/M -chew/GZSDR -chewiness/S -chewy/RTP -Cheyenne/SM -chg -chge -Chiang/M -chianti/M -Chianti/S -chiaroscuro/SM -Chiarra/M -Chiba/M -Chicagoan/SM -Chicago/M -Chicana/MS -chicane/MGDS -chicanery/MS -Chicano/MS -chichi/RTS -chickadee/SM -Chickasaw/SM -chickenfeed -chicken/GDM -chickenhearted -chickenpox/MS -Chickie/M -Chick/M -chickpea/MS -chickweed/MS -chick/XSNM -Chicky/M -chicle/MS -Chic/M -chicness/S -Chico/M -chicory/MS -chic/SYRPT -chide/GDS -chiding/Y -chiefdom/MS -chieftain/SM -chief/YRMST -chiffonier/MS -chiffon/MS -chigger/MS -chignon/MS -Chihuahua/MS -chihuahua/S -chilblain/MS -childbearing/MS -childbirth/M -childbirths -childcare/S -childes -child/GMYD -childhood/MS -childishness/SM -childish/YP -childlessness/SM -childless/P -childlikeness/M -childlike/P -childminders -childproof/GSD -childrearing -children/M -Chilean/S -Chile/MS -chile's -chilies -chili/M -chiller/M -chilliness/MS -chilling/Y -chilli's -chill/MRDJGTZPS -chillness/MS -chilly/TPRS -Chilton/M -Chi/M -chimaera's -chimaerical -Chimborazo/M -chime/DSRGMZ -Chimera/S -chimera/SM -chimeric -chimerical -chimer/M -Chimiques -chimney/SMD -chimpanzee/SM -chimp/MS -chi/MS -Chimu/M -Ch'in -China/M -Chinaman/M -Chinamen -china/MS -Chinatown/SM -chinchilla/SM -chine/MS -Chinese/M -Ching/M -chink/DMSG -chinless -Chin/M -chinned -chinner/S -chinning -chino/MS -Chinook/MS -chin/SGDM -chinstrap/S -chintz/SM -chintzy/TR -chipboard/M -Chipewyan/M -Chip/M -chipmunk/SM -chipped -Chippendale/M -chipper/DGS -Chippewa/MS -chipping/MS -chip/SM -Chiquia/M -Chiquita/M -chiral -Chirico/M -chirography/SM -chiropodist/SM -chiropody/MS -chiropractic/MS -chiropractor/SM -chirp/GDS -chirpy/RT -chirrup/DGS -chiseler/M -chisel/ZGSJMDR -Chisholm/M -Chisinau/M -chitchat/SM -chitchatted -chitchatting -chitinous -chitin/SM -chit/SM -Chittagong/M -chitterlings -chivalric -chivalrously/U -chivalrousness/MS -chivalrous/YP -chivalry/SM -chive/GMDS -chivvy/D -chivying -chlamydiae -chlamydia/S -Chloe/M -Chloette/M -Chlo/M -chloral/MS -chlorate/M -chlordane/MS -chloride/MS -chlorinated/C -chlorinates/C -chlorinate/XDSGN -chlorination/M -chlorine/MS -Chloris -chlorofluorocarbon/S -chloroform/DMSG -chlorophyll/SM -chloroplast/MS -chloroquine/M -chm -Ch/MGNRS -chockablock -chock/SGRDM -chocoholic/S -chocolate/MS -chocolaty -Choctaw/MS -choiceness/M -choice/RSMTYP -choirboy/MS -choirmaster/SM -choir/SDMG -chokeberry/M -chokecherry/SM -choke/DSRGZ -choker/M -chokes/M -choking/Y -cholera/SM -choleric -choler/SM -cholesterol/SM -choline/M -cholinesterase/M -chomp/DSG -Chomsky/M -Chongqing -choose/GZRS -chooser/M -choosiness/S -choosy/RPT -chophouse/SM -Chopin/M -chopped -chopper/SDMG -choppily -choppiness/MS -chopping -choppy/RPT -chop/S -chopstick/SM -chorale/MS -choral/SY -chordal -chordata -chordate/MS -chording/M -chord/SGMD -chorea/MS -chore/DSGNM -choreographer/M -choreographic -choreographically -choreographs -choreography/MS -choreograph/ZGDR -chorines -chorion/M -chorister/SM -choroid/S -chortler/M -chortle/ZGDRS -chorus/GDSM -chosen/U -chose/S -Chou/M -chowder/SGDM -chow/DGMS -Chretien/M -Chris/M -chrism/SM -chrissake -Chrisse/M -Chrissie/M -Chrissy/M -Christabella/M -Christabel/M -Christalle/M -Christal/M -Christa/M -Christan/M -Christchurch/M -Christean/M -Christel/M -Christendom/MS -christened/U -christening/SM -Christen/M -christen/SAGD -Christensen/M -Christenson/M -Christiana/M -Christiane/M -Christianity/SM -Christianize/GSD -Christian/MS -Christiano/M -Christiansen/M -Christians/N -Christie/SM -Christi/M -Christina/M -Christine/M -Christin/M -Christlike -Christmas/SM -Christmastide/SM -Christmastime/S -Christoffel/M -Christoffer/M -Christoforo/M -Christoper/M -Christophe/M -Christopher/M -Christoph/MR -Christophorus/M -Christos/M -Christ/SMN -Christye/M -Christyna/M -Christy's -Chrisy/M -chroma/M -chromate/M -chromatically -chromaticism/M -chromaticness/M -chromatic/PS -chromatics/M -chromatin/MS -chromatogram/MS -chromatograph -chromatographic -chromatography/M -chrome/GMSD -chromic -chromite/M -chromium/SM -chromosomal -chromosome/MS -chromosphere/M -chronically -chronicled/U -chronicler/M -chronicle/SRDMZG -chronic/S -chronograph/M -chronographs -chronography -chronological/Y -chronologist/MS -chronology/MS -chronometer/MS -chronometric -Chrotoem/M -chrysalids -chrysalis/SM -Chrysa/M -chrysanthemum/MS -Chrysler/M -Chrysostom/M -Chrystal/M -Chrystel/M -Chryste/M -chubbiness/SM -chubby/RTP -chub/MS -Chucho/M -chuck/GSDM -chuckhole/SM -chuckle/DSG -chuckling/Y -Chuck/M -chuff/DM -chugged -chugging -chug/MS -Chukchi/M -chukka/S -Chumash/M -chummed -chummily -chumminess/MS -chumming -chum/MS -chummy/SRTP -chumping/M -chump/MDGS -Chungking's -Chung/M -chunkiness/MS -chunk/SGDM -chunky/RPT -chuntering -churchgoer/SM -churchgoing/SM -Churchillian -Churchill/M -churchliness/M -churchly/P -churchman/M -church/MDSYG -churchmen -Church/MS -churchwarden/SM -churchwoman/M -churchwomen -churchyard/SM -churlishness/SM -churlish/YP -churl/SM -churner/M -churning/M -churn/SGZRDM -chute/DSGM -chutney/MS -chutzpah/M -chutzpahs -chutzpa/SM -Chuvash/M -ch/VT -chyme/SM -Ci -CIA -ciao/S -cicada/MS -cicatrice/S -cicatrix's -Cicely/M -Cicero/M -cicerone/MS -ciceroni -Ciceronian -Cicily/M -CID -cider's/C -cider/SM -Cid/M -Ciel/M -cigarette/MS -cigarillo/MS -cigar/SM -cilantro/S -cilia/M -ciliate/FDS -ciliately -cilium/M -Cilka/M -cinch/MSDG -cinchona/SM -Cincinnati/M -cincture/MGSD -Cinda/M -Cindee/M -Cindelyn/M -cinder/DMGS -Cinderella/MS -Cindie/M -Cindi/M -Cindra/M -Cindy/M -cine/M -cinema/SM -cinematic -cinematographer/MS -cinematographic -cinematography/MS -Cinerama/M -cinnabar/MS -Cinnamon/M -cinnamon/MS -ciphered/C -cipher/MSGD -ciphers/C -cir -circa -circadian -Circe/M -circler/M -circle/RSDGM -circlet/MS -circuital -circuit/GSMD -circuitousness/MS -circuitous/YP -circuitry/SM -circuity/MS -circulant -circularity/SM -circularize/GSD -circularness/M -circular/PSMY -circulate/ASDNG -circulation/MA -circulations -circulative -circulatory -circumcise/DRSXNG -circumcised/U -circumciser/M -circumcision/M -circumference/SM -circumferential/Y -circumflex/MSDG -circumlocution/MS -circumlocutory -circumnavigate/DSNGX -circumnavigational -circumnavigation/M -circumpolar -circumscribe/GSD -circumscription/SM -circumspection/SM -circumspect/Y -circumsphere -circumstance/SDMG -circumstantial/YS -circumvention/MS -circumvent/SBGD -circus/SM -Cirillo/M -Cirilo/M -Ciro/M -cirque/SM -cirrhoses -cirrhosis/M -cirrhotic/S -cirri/M -cirrus/M -Cissiee/M -Cissy/M -cistern/SM -citadel/SM -citations/I -citation/SMA -cit/DSG -cite/ISDAG -Citibank/M -citified -citizenry/SM -citizenship/MS -citizen/SYM -citrate/DM -citric -Citroen/M -citronella/MS -citron/MS -citrus/SM -city/DSM -cityscape/MS -citywide -civet/SM -civic/S -civics/M -civilian/SM -civility/IMS -civilizational/MS -civilization/AMS -civilizedness/M -civilized/PU -civilize/DRSZG -civilizer/M -civilizes/AU -civil/UY -civvies -ck/C -clack/SDG -cladding/SM -clads -clad/U -Claiborne/M -Claiborn/M -claimable -claimant/MS -claim/CDRSKAEGZ -claimed/U -claimer/KMACE -Claire/M -Clair/M -Clairol/M -clairvoyance/MS -clairvoyant/YS -clambake/MS -clamberer/M -clamber/SDRZG -clammed -clammily -clamminess/MS -clamming -clam/MS -clammy/TPR -clamorer/M -clamor/GDRMSZ -clamorousness/UM -clamorous/PUY -clampdown/SM -clamper/M -clamp/MRDGS -clamshell/MS -Clancy/M -clandestineness/M -clandestine/YP -clanger/M -clangor/MDSG -clangorous/Y -clang/SGZRD -clanking/Y -clank/SGDM -clan/MS -clannishness/SM -clannish/PY -clansman/M -clansmen -clapboard/SDGM -Clapeyron/M -clapped -clapper/GMDS -clapping -clap/S -Clapton/M -claptrap/SM -claque/MS -Clarabelle/M -Clara/M -Clarance/M -Clare/M -Claremont/M -Clarence/M -Clarendon/M -Claresta/M -Clareta/M -claret/MDGS -Claretta/M -Clarette/M -Clarey/M -Claribel/M -Clarice/M -Clarie/M -clarification/M -clarifier/M -clarify/NGXDRS -Clari/M -Clarinda/M -Clarine/M -clarinetist/SM -clarinet/SM -clarinettist's -clarion/GSMD -Clarissa/M -Clarisse/M -Clarita/M -clarities -clarity/UM -Clarke/M -Clark/M -Clarridge/M -Clary/M -clasher/M -clash/RSDG -clasped/M -clasper/M -clasp's -clasp/UGSD -classer/M -class/GRSDM -classical/Y -classicism/SM -classicist/SM -classic/S -classics/M -classifiable/U -classification/AMC -classificatory -classified/S -classifier/SM -classify/CNXASDG -classiness/SM -classless/P -classmate/MS -classroom/MS -classwork/M -classy/PRT -clatterer/M -clattering/Y -clatter/SGDR -clattery -Claudelle/M -Claudell/M -Claude/M -Claudetta/M -Claudette/M -Claudia/M -Claudian/M -Claudianus/M -Claudie/M -Claudina/M -Claudine/M -Claudio/M -Claudius/M -clausal -clause/MS -Clausen/M -Clausewitz/M -Clausius/M -Claus/NM -claustrophobia/SM -claustrophobic -clave/RM -clave's/F -clavichord/SM -clavicle/MS -clavier/MS -clawer/M -claw/GDRMS -Clayborne/M -Clayborn/M -Claybourne/M -clayey -clayier -clayiest -Clay/M -clay/MDGS -claymore/MS -Clayson/M -Clayton/M -Clea/M -cleanable -cleaner/MS -cleaning/SM -cleanliness/UMS -cleanly/PRTU -cleanness/MSU -cleanse -cleanser/M -cleans/GDRSZ -cleanup/MS -clean/UYRDPT -clearance/MS -clearcut -clearer/M -clearheadedness/M -clearheaded/PY -clearinghouse/S -clearing/MS -clearly -clearness/MS -clears -clear/UTRD -Clearwater/M -clearway/M -cleat/MDSG -cleavage/MS -cleaver/M -cleave/RSDGZ -Cleavland/M -clef/SM -cleft/MDGS -clematis/MS -clemence -Clemenceau/M -Clemence/M -clemency/ISM -Clemente/M -Clementia/M -Clementina/M -Clementine/M -Clementius/M -clement/IY -Clement/MS -clements -Clemmie/M -Clemmy/M -Clemons -Clemson/M -Clem/XM -clenches -clenching -clench/UD -Cleo/M -Cleon/M -Cleopatra/M -Clerc/M -clerestory/MS -clergyman/M -clergymen -clergy/MS -clergywoman -clergywomen -clericalism/SM -clerical/YS -cleric/SM -Clerissa/M -clerk/SGYDM -clerkship/MS -Cletis -Cletus/M -Cleveland/M -Cleve/M -cleverness/SM -clever/RYPT -Clevey/M -Clevie/M -clevis/SM -clew/DMGS -cl/GJ -Cliburn/M -clich�d -clich�/SM -clicker/M -click/GZSRDM -client�le/SM -client/SM -cliffhanger/MS -cliffhanging -Cliff/M -Clifford/M -cliff/SM -Clifton/M -climacteric/SM -climactic -climate/MS -climatic -climatically -climatological/Y -climatologist/SM -climatology/MS -climax/MDSG -climbable/U -climb/BGZSJRD -climbdown -climbed/U -climber/M -clime/SM -Clim/M -clinch/DRSZG -clincher/M -clinching/Y -Cline/M -clinger/MS -clinging -cling/U -clingy/TR -clinical/Y -clinician/MS -clinic/MS -clinker/GMD -clink/RDGSZ -clinometer/MIS -Clint/M -Clinton/M -Clio/M -cliometrician/S -cliometric/S -clipboard/SM -clipped/U -clipper/MS -clipping/SM -clip/SM -clique/SDGM -cliquey -cliquier -cliquiest -cliquishness/SM -cliquish/YP -clitoral -clitorides -clitoris/MS -Clive/M -cloacae -cloaca/M -cloakroom/MS -cloak's -cloak/USDG -clobber/DGS -cloche/MS -clocker/M -clockmaker/M -clock/SGZRDMJ -clockwatcher -clockwise -clockwork/MS -clodded -clodding -cloddishness/M -cloddish/P -clodhopper/SM -clod/MS -Cloe/M -clogged/U -clogging/U -clog's -clog/US -cloisonn� -cloisonnes -cloister/MDGS -cloistral -Clo/M -clomp/MDSG -clonal -clone/DSRGMZ -clonk/SGD -clopped -clopping -clop/S -Cloris/M -closed/U -close/EDSRG -closefisted -closely -closemouthed -closeness/MS -closeout/MS -closer/EM -closers -closest -closet/MDSG -closeup/S -closing/S -closured -closure/EMS -closure's/I -closuring -clothbound -clothesbrush -clotheshorse/MS -clothesline/SDGM -clothesman -clothesmen -clothespin/MS -clothe/UDSG -cloth/GJMSD -clothier/MS -clothing/M -Clotho/M -cloths -Clotilda/M -clot/MS -clotted -clotting -cloture/MDSG -cloudburst/MS -clouded/U -cloudiness/SM -cloudlessness/M -cloudless/YP -cloudscape/SM -cloud/SGMD -cloudy/TPR -clout/GSMD -cloven -cloverleaf/MS -clover/M -clove/SRMZ -Clovis/M -clown/DMSG -clownishness/SM -clownish/PY -cloy/DSG -cloying/Y -clubbed/M -clubbing/M -clubfeet -clubfoot/DM -clubhouse/SM -club/MS -clubroom/SM -cluck/GSDM -clueless -clue/MGDS -Cluj/M -clump/MDGS -clumpy/RT -clumsily -clumsiness/MS -clumsy/PRT -clung -clunk/SGZRDM -clunky/PRYT -clustered/AU -clusters/A -cluster/SGJMD -clutch/DSG -cluttered/U -clutter/GSD -Cl/VM -Clyde/M -Clydesdale/M -Cly/M -Clytemnestra/M -Clyve/M -Clywd/M -cm -Cm/M -CMOS -cnidarian/MS -CNN -CNS -CO -coacher/M -coachman/M -coachmen -coach/MSRDG -coachwork/M -coadjutor/MS -coagulable -coagulant/SM -coagulate/GNXSD -coagulation/M -coagulator/S -coaler/M -coalesce/GDS -coalescence/SM -coalescent -coalface/SM -coalfield/MS -coalitionist/SM -coalition/MS -coal/MDRGS -coalminers -coarseness/SM -coarsen/SGD -coarse/TYRP -coastal -coaster/M -coastguard/MS -coastline/SM -coast/SMRDGZ -coated/U -Coates/M -coating/M -coat/MDRGZJS -coattail/S -coattest -coauthor/MDGS -coaxer/M -coax/GZDSR -coaxial/Y -coaxing/Y -Cobain/M -cobalt/MS -cobbed -Cobbie/M -cobbing -cobbler/M -cobble/SRDGMZ -cobblestone/MSD -Cobb/M -Cobby/M -coble/M -Cob/M -COBOL -Cobol/M -cobra/MS -cob/SM -cobwebbed -cobwebbing -cobwebby/RT -cobweb/SM -cocaine/MS -coca/MS -cocci/MS -coccus/M -coccyges -coccyx/M -Cochabamba/M -cochineal/SM -Cochin/M -Cochise/M -cochleae -cochlear -cochlea/SM -Cochran/M -cockade/SM -cockamamie -cockatoo/SM -cockatrice/MS -cockcrow/MS -cockerel/MS -cocker/M -cockeye/DM -cockeyed/PY -cockfighting/M -cockfight/MJSG -cock/GDRMS -cockily -cockiness/MS -cocklebur/M -cockle/SDGM -cockleshell/SM -Cockney -cockney/MS -cockpit/MS -cockroach/SM -cockscomb/SM -cockshies -cocksucker/S! -cocksure -cocktail/GDMS -cocky/RPT -cocoa/SM -coco/MS -coconut/SM -cocoon/GDMS -Cocteau/M -COD -coda/SM -codded -codding -coddle/GSRD -coddler/M -codebook/S -codebreak/R -coded/UA -Codee/M -codeine/MS -codename/D -codependency/S -codependent/S -coder/CM -code's -co/DES -codes/A -code/SCZGJRD -codetermine/S -codeword/SM -codex/M -codfish/SM -codger/MS -codices/M -codicil/SM -Codie/M -codification/M -codifier/M -codify/NZXGRSD -Codi/M -coding/M -codling/M -Cod/M -cod/MDRSZGJ -codpiece/MS -Cody/M -coedited -coediting -coeditor/MS -coedits -coed/SM -coeducational -coeducation/SM -coefficient/SYM -coelenterate/MS -coequal/SY -coercer/M -coerce/SRDXVGNZ -coercible/I -coercion/M -coerciveness/M -coercive/PY -coeval/YS -coexistence/MS -coexistent -coexist/GDS -coextensive/Y -cofactor/MS -coffeecake/SM -coffeecup -coffeehouse/SM -coffeemaker/S -coffeepot/MS -coffee/SM -cofferdam/SM -coffer/DMSG -Coffey/M -coffin/DMGS -Coffman/M -cogency/MS -cogent/Y -cogged -cogging -cogitate/DSXNGV -cogitation/M -cogitator/MS -cog/MS -Cognac/M -cognac/SM -cognate/SXYN -cognation/M -cognitional -cognition/SAM -cognitive/SY -cognizable -cognizance/MAI -cognizances/A -cognizant/I -cognomen/SM -cognoscente -cognoscenti -cogwheel/SM -cohabitant/MS -cohabitational -cohabitation/SM -cohabit/SDG -Cohan/M -coheir/MS -Cohen/M -cohere/GSRD -coherence/SIM -coherencies -coherency/I -coherent/IY -coherer/M -cohesion/MS -cohesiveness/SM -cohesive/PY -Cohn/M -cohoes -coho/MS -cohort/SM -coiffed -coiffing -coiffure/MGSD -coif/SM -coil/UGSAD -Coimbatore/M -coinage's/A -coinage/SM -coincide/GSD -coincidence/MS -coincidental/Y -coincident/Y -coined/U -coiner/M -coin/GZSDRM -coinsurance/SM -Cointon/M -cointreau -coital/Y -coitus/SM -coke/MGDS -Coke/MS -COL -COLA -colander/SM -Colan/M -Colas -cola/SM -colatitude/MS -Colbert/M -Colby/M -coldblooded -coldish -coldness/MS -cold/YRPST -Coleen/M -Cole/M -Coleman/M -Colene/M -Coleridge/M -coleslaw/SM -Colet/M -Coletta/M -Colette/M -coleus/SM -Colfax/M -Colgate/M -colicky -colic/SM -coliform -Colin/M -coliseum/SM -colitis/MS -collaborate/VGNXSD -collaboration/M -collaborative/SY -collaborator/SM -collage/MGSD -collagen/M -collapse/SDG -collapsibility/M -collapsible -collarbone/MS -collar/DMGS -collard/SM -collarless -collated/U -collateral/SYM -collate/SDVNGX -collation/M -collator/MS -colleague/SDGM -collectedness/M -collected/PY -collectible/S -collection/AMS -collective/SY -collectivism/SM -collectivist/MS -collectivity/MS -collectivization/MS -collectivize/DSG -collector/MS -collect/SAGD -Colleen/M -colleen/SM -college/SM -collegiality/S -collegian/SM -collegiate/Y -Collen/M -Collete/M -Collette/M -coll/G -collide/SDG -Collie/M -collie/MZSRD -collier/M -Collier/M -colliery/MS -collimate/C -collimated/U -collimates -collimating -collimation/M -collimator/M -collinear -collinearity/M -Colline/M -Collin/MS -collisional -collision/SM -collocate/XSDGN -collocation/M -colloidal/Y -colloid/MS -colloq -colloquialism/MS -colloquial/SY -colloquies -colloquium/SM -colloquy/M -collude/SDG -collusion/SM -collusive -collying -Colly/RM -Colman/M -Col/MY -Cologne/M -cologne/MSD -Colo/M -Colombia/M -Colombian/S -Colombo/M -colonelcy/MS -colonel/MS -colonialism/MS -colonialist/MS -colonial/SPY -colonist/SM -colonization/ACSM -colonize/ACSDG -colonized/U -colonizer/MS -colonizes/U -Colon/M -colonnade/MSD -colon/SM -colony/SM -colophon/SM -Coloradan/S -Coloradoan/S -Colorado/M -colorant/SM -coloration/EMS -coloratura/SM -colorblindness/S -colorblind/P -colored/USE -colorer/M -colorfastness/SM -colorfast/P -colorfulness/MS -colorful/PY -colorimeter/SM -colorimetry -coloring/M -colorization/S -colorize/GSD -colorizing/C -colorlessness/SM -colorless/PY -colors/EA -color/SRDMGZJ -colossal/Y -Colosseum/M -colossi -colossus/M -colostomy/SM -colostrum/SM -col/SD -colter/M -coltishness/M -coltish/PY -Colt/M -colt/MRS -Coltrane/M -Columbia/M -Columbian -Columbine/M -columbine/SM -Columbus/M -columnar -columnist/MS -columnize/GSD -column/SDM -Colver/M -Co/M -comae -comaker/SM -Comanche/MS -coma/SM -comatose -combatant/SM -combativeness/MS -combative/PY -combat/SVGMD -combed/U -comber/M -combinational/A -combination/ASM -combinatorial/Y -combinatoric/S -combinator/SM -combined/AU -combiner/M -combines/A -combine/ZGBRSD -combining/A -combo/MS -comb/SGZDRMJ -Combs/M -combusted -combustibility/SM -combustible/SI -combustion/MS -combustive -Comdex/M -Comdr/M -comeback/SM -comedian/SM -comedic -comedienne/SM -comedown/MS -comedy/SM -come/IZSRGJ -comeliness/SM -comely/TPR -comer/IM -comes/M -comestible/MS -cometary -cometh -comet/SM -comeuppance/SM -comfit's -comfit/SE -comfortability/S -comfortableness/MS -comfortable/U -comfortably/U -comforted/U -comforter/MS -comfort/ESMDG -comforting/YE -comfy/RT -comicality/MS -comical/Y -comic/MS -Cominform/M -comity/SM -com/LJRTZG -comm -Com/M -comma/MS -commandant/MS -commandeer/SDG -commander/M -commanding/Y -commandment/SM -commando/SM -command/SZRDMGL -commemorate/SDVNGX -commemoration/M -commemorative/YS -commemorator/S -commence/ALDSG -commencement/AMS -commencer/M -commendably -commendation/ASM -commendatory/A -commender/AM -commend/GSADRB -commensurable/I -commensurate/IY -commensurates -commensuration/SM -commentary/MS -commentate/GSD -commentator/SM -commenter/M -comment's -comment/SUGD -commerce/MGSD -commercialism/MS -commercialization/SM -commercialize/GSD -commercial/PYS -Commie -commie/SM -commingle/GSD -commiserate/VGNXSD -commiseration/M -commissariat/MS -commissar/MS -commissary/MS -commission/ASCGD -commissioner/SM -commission's/A -commitment/SM -commit/SA -committable -committal/MA -committals -committed/UA -committeeman/M -committeemen -committee/MS -committeewoman/M -committeewomen -committing/A -commode/MS -commodes/IE -commodiousness/MI -commodious/YIP -commodity/MS -commodore/SM -commonality/MS -commonalty/MS -commoner/MS -commonness/MSU -commonplaceness/M -commonplace/SP -common/RYUPT -commonsense -commons/M -Commons/M -commonweal/SHM -commonwealth/M -Commonwealth/M -commonwealths -Commonwealths -commotion/MS -communality/M -communal/Y -commune/XSDNG -communicability/MS -communicable/IU -communicably -communicant/MS -communicate/VNGXSD -communicational -communication/M -communicativeness/M -communicative/PY -communicator/SM -communion/M -Communion/SM -communique/S -communism/MS -Communism/S -communistic -communist/MS -Communist/S -communitarian/M -community/MS -communize/SDG -commutable/I -commutate/XVGNSD -commutation/M -commutative/Y -commutativity -commutator/MS -commute/BZGRSD -commuter/M -Comoros -compaction/M -compactness/MS -compactor/MS -compact/TZGSPRDY -companionableness/M -companionable/P -companionably -companion/GBSMD -companionship/MS -companionway/MS -company/MSDG -Compaq/M -comparabilities -comparability/IM -comparableness/M -comparable/P -comparably/I -comparativeness/M -comparative/PYS -comparator/SM -compare/GRSDB -comparer/M -comparison/MS -compartmental -compartmentalization/SM -compartmentalize/DSG -compartment/SDMG -compassionateness/M -compassionate/PSDGY -compassion/MS -compass/MSDG -compatibility/IMS -compatibleness/M -compatible/SI -compatibly/I -compatriot/SM -compeer/DSGM -compellable -compelled -compelling/YM -compel/S -compendious -compendium/MS -compensable -compensated/U -compensate/XVNGSD -compensation/M -compensator/M -compensatory -compete/GSD -competence/ISM -competency/IS -competency's -competent/IY -competition/SM -competitiveness/SM -competitive/YP -competitor/MS -comp/GSYD -compilable/U -compilation/SAM -compile/ASDCG -compiler/CS -compiler's -complacence/S -complacency/SM -complacent/Y -complainant/MS -complainer/M -complain/GZRDS -complaining/YU -complaint/MS -complaisance/SM -complaisant/Y -complected -complementariness/M -complementarity -complementary/SP -complementation/M -complementer/M -complement/ZSMRDG -complete/BTYVNGPRSDX -completed/U -completely/I -completeness/ISM -completer/M -completion/MI -complexional -complexion/DMS -complexity/MS -complexness/M -complex/TGPRSDY -compliance/SM -compliant/Y -complicatedness/M -complicated/YP -complicate/SDG -complication/M -complicator/SM -complicit -complicity/MS -complier/M -complimentary/U -complimenter/M -compliment/ZSMRDG -comply/ZXRSDNG -component/SM -comport/GLSD -comportment/SM -compose/CGASDE -composedness/M -composed/PY -composer/CM -composers -composite/YSDXNG -compositional/Y -composition/CMA -compositions/C -compositor/MS -compost/DMGS -composure/ESM -compote/MS -compounded/U -compounder/M -compound/RDMBGS -comprehend/DGS -comprehending/U -comprehensibility/SIM -comprehensibleness/IM -comprehensible/PI -comprehensibly/I -comprehension/IMS -comprehensiveness/SM -comprehensive/YPS -compressed/Y -compressibility/IM -compressible/I -compressional -compression/CSM -compressive/Y -compressor/MS -compress/SDUGC -comprise/GSD -compromiser/M -compromise/SRDGMZ -compromising/UY -Compton/M -comptroller/SM -compulsion/SM -compulsiveness/MS -compulsive/PYS -compulsivity -compulsorily -compulsory/S -compunction/MS -Compuserve/M -CompuServe/M -computability/M -computable/UI -computably -computational/Y -computation/SM -computed/A -computerese -computerization/MS -computerize/SDG -computer/M -compute/RSDZBG -computes/A -computing/A -comradely/P -comradeship/MS -comrade/YMS -Comte/M -Conakry/M -Conan/M -Conant/M -concatenate/XSDG -concaveness/MS -concave/YP -conceal/BSZGRDL -concealed/U -concealer/M -concealing/Y -concealment/MS -conceded/Y -conceitedness/SM -conceited/YP -conceit/SGDM -conceivable/IU -conceivably/I -conceive/BGRSD -conceiver/M -concentrate/VNGSDX -concentration/M -concentrator/MS -concentrically -Concepci�n/M -conceptional -conception/MS -concept/SVM -conceptuality/M -conceptualization/A -conceptualizations -conceptualization's -conceptualize/DRSG -conceptualizing/A -conceptual/Y -concerned/YU -concern/USGD -concerted/PY -concert/EDSG -concertina/MDGS -concertize/GDS -concertmaster/MS -concerto/SM -concert's -concessionaire/SM -concessional -concessionary -concession/R -Concetta/M -Concettina/M -Conchita/M -conch/MDG -conchs -concierge/SM -conciliar -conciliate/GNVX -conciliation/ASM -conciliator/MS -conciliatory/A -conciseness/SM -concise/TYRNPX -concision/M -conclave/S -concluder/M -conclude/RSDG -conclusion/SM -conclusive/IPY -conclusiveness/ISM -concocter/M -concoction/SM -concoct/RDVGS -concomitant/YS -concordance/MS -concordant/Y -concordat/SM -Concorde/M -Concordia/M -Concord/MS -concourse -concreteness/MS -concrete/NGXRSDPYM -concretion/M -concubinage/SM -concubine/SM -concupiscence/SM -concupiscent -concurrence/MS -concur/S -concussion/MS -concuss/VD -condemnate/XN -condemnation/M -condemnatory -condemner/M -condemn/ZSGRDB -condensate/NMXS -condensation/M -condenser/M -condense/ZGSD -condensible -condescend -condescending/Y -condescension/MS -condign -condiment/SM -condition/AGSJD -conditionals -conditional/UY -conditioned/U -conditioner/MS -conditioning/M -condition's -condole -condolence/MS -condominium/MS -condom/SM -condone/GRSD -condoner/M -Condorcet/M -condor/MS -condo/SM -conduce/VGSD -conduciveness/M -conducive/P -conductance/SM -conductibility/SM -conductible -conduction/MS -conductive/Y -conductivity/MS -conductor/MS -conductress/MS -conduct/V -conduit/MS -coneflower/M -Conestoga -coney's -confabbed -confabbing -confab/MS -confabulate/XSDGN -confabulation/M -confectioner/M -confectionery/SM -confectionist -confection/RDMGZS -confect/S -Confederacy/M -confederacy/MS -confederate/M -Confederate/S -conferee/MS -conference/DSGM -conferrable -conferral/SM -conferred -conferrer/SM -conferring -confer/SB -confessed/Y -confessional/SY -confession/MS -confessor/SM -confetti/M -confidante/SM -confidant/SM -confidence/SM -confidentiality/MS -confidentialness/M -confidential/PY -confident/Y -confider/M -confide/ZGRSD -confiding/PY -configuration/ASM -configure/AGSDB -confined/U -confine/L -confinement/MS -confiner/M -confirm/AGDS -confirmation/ASM -confirmatory -confirmedness/M -confirmed/YP -confiscate/DSGNX -confiscation/M -confiscator/MS -confiscatory -conflagration/MS -conflate/NGSDX -conflation/M -conflicting/Y -conflict/SVGDM -confluence/MS -conformable/U -conformal -conformance/SM -conformational/Y -conform/B -conformer/M -conformism/SM -conformist/SM -conformities -conformity/MUI -confounded/Y -confound/R -confr�re/MS -confrontational -confrontation/SM -confronter/M -confront/Z -Confucianism/SM -Confucian/S -Confucius/M -confusedness/M -confused/PY -confuse/RBZ -confusing/Y -confutation/MS -confute/GRSD -confuter/M -conga/MDG -congeal/GSDL -congealment/MS -congeniality/UM -congenial/U -congeries/M -conger/SM -congestion/MS -congest/VGSD -conglomerate/XDSNGVM -conglomeration/M -Cong/M -Congolese -Congo/M -congrats -congratulate/NGXSD -congratulation/M -congratulatory -congregate/DSXGN -congregational -Congregational -congregationalism/MS -congregationalist/MS -Congregationalist/S -congregation/M -congressional/Y -congressman/M -congressmen -Congress/MS -congress/MSDG -congresspeople -congressperson/S -congresswoman/M -congresswomen -Congreve/M -congruence/IM -congruences -congruency/M -congruential -congruent/YI -congruity/MSI -congruousness/IM -congruous/YIP -conicalness/M -conical/PSY -conic/S -conics/M -conifer/MS -coniferous -conjectural/Y -conjecture/GMDRS -conjecturer/M -conjoint -conjugacy -conjugal/Y -conjugate/XVNGYSDP -conjugation/M -conjunct/DSV -conjunctiva/MS -conjunctive/YS -conjunctivitis/SM -conjuration/MS -conjurer/M -conjure/RSDZG -conjuring/M -conker/M -conk/ZDR -Conley/M -Con/M -conman -connect/ADGES -connectedly/E -connectedness/ME -connected/U -connectible -Connecticut/M -connection/AME -connectionless -connections/E -connective/SYM -connectivity/MS -connector/MS -Connelly/M -Conner/M -Connery/M -connexion/MS -Conney/M -conn/GVDR -Connie/M -Conni/M -conniption/MS -connivance/MS -conniver/M -connive/ZGRSD -connoisseur/MS -Connor/SM -connotative/Y -Conn/RM -connubial/Y -Conny/M -conquerable/U -conquered/AU -conqueror/MS -conquer/RDSBZG -conquers/A -conquest/ASM -conquistador/MS -Conrade/M -Conrad/M -Conrado/M -Conrail/M -Conroy/M -Consalve/M -consanguineous/Y -consanguinity/SM -conscienceless -conscientiousness/MS -conscientious/YP -conscionable/U -consciousness/MUS -conscious/UYSP -conscription/SM -consecrated/AU -consecrates/A -consecrate/XDSNGV -consecrating/A -consecration/AMS -consecutiveness/M -consecutive/YP -consensus/SM -consenter/M -consenting/Y -consent/SZGRD -consequence -consequentiality/S -consequential/IY -consequentialness/M -consequently/I -consequent/PSY -conservancy/SM -conservationism -conservationist/SM -conservation/SM -conservatism/SM -conservativeness/M -Conservative/S -conservative/SYP -conservator/MS -conservatory/MS -con/SGM -considerable/I -considerables -considerably/I -considerateness/MSI -considerate/XIPNY -consideration/ASMI -considered/U -considerer/M -consider/GASD -considering/S -consign/ASGD -consignee/SM -consignment/SM -consist/DSG -consistence/S -consistency/IMS -consistent/IY -consistory/MS -consolable/I -Consolata/M -consolation/MS -consolation's/E -consolatory -consoled/U -consoler/M -console/ZBG -consolidated/AU -consolidate/NGDSX -consolidates/A -consolidation/M -consolidator/SM -consoling/Y -consomm�/S -consonance/IM -consonances -consonantal -consonant/MYS -consortia -consortium/M -conspectus/MS -conspicuousness/IMS -conspicuous/YIP -conspiracy/MS -conspiratorial/Y -conspirator/SM -constable -Constable/M -constabulary/MS -constance -Constance/M -Constancia/M -constancy/IMS -Constancy/M -Constanta/M -Constantia/M -Constantina/M -Constantine/M -Constantin/M -Constantino/M -Constantinople/M -constant/IY -constants -constellation/SM -consternate/XNGSD -consternation/M -constipate/XDSNG -constipation/M -constituency/MS -constituent/SYM -constituted/A -constitute/NGVXDS -constitutes/A -constituting/A -Constitution -constitutionality's -constitutionality/US -constitutionally/U -constitutional/SY -constitution/AMS -constitutive/Y -constrain -constrainedly -constrained/U -constraint/MS -constriction/MS -constrictor/MS -constrict/SDGV -construable -construct/ASDGV -constructibility -constructible/A -constructional/Y -constructionist/MS -construction/MAS -constructions/C -constructiveness/SM -constructive/YP -constructor/MS -construe/GSD -Consuela/M -Consuelo/M -consular/S -consulate/MS -consul/KMS -consulship/MS -consultancy/S -consultant/MS -consultation/SM -consultative -consulted/A -consulter/M -consult/RDVGS -consumable/S -consumed/Y -consume/JZGSDB -consumerism/MS -consumerist/S -consumer/M -consuming/Y -consummate/DSGVY -consummated/U -consumption/SM -consumptive/YS -cont -contact/BGD -contacted/A -contact's/A -contacts/A -contagion/SM -contagiousness/MS -contagious/YP -containerization/SM -containerize/GSD -container/M -containment/SM -contain/SLZGBRD -contaminant/SM -contaminated/AU -contaminates/A -contaminate/SDCXNG -contaminating/A -contamination/CM -contaminative -contaminator/MS -contd -cont'd -contemn/SGD -contemplate/DVNGX -contemplation/M -contemplativeness/M -contemplative/PSY -contemporaneity/MS -contemporaneousness/M -contemporaneous/PY -contemptibleness/M -contemptible/P -contemptibly -contempt/M -contemptuousness/SM -contemptuous/PY -contentedly/E -contentedness/SM -contented/YP -content/EMDLSG -contention/MS -contentiousness/SM -contentious/PY -contently -contentment/ES -contentment's -conterminous/Y -contestable/I -contestant/SM -contested/U -contextualize/GDS -contiguity/MS -contiguousness/M -contiguous/YP -continence/ISM -Continental/S -continental/SY -continent/IY -Continent/M -continents -continent's -contingency/SM -contingent/SMY -continua -continuable -continual/Y -continuance/ESM -continuant/M -continuation/ESM -continue/ESDG -continuer/M -continuity/SEM -continuousness/M -continuous/YE -continuum/M -contortionist/SM -contortion/MS -contort/VGD -contour -contraband/SM -contrabass/M -contraception/SM -contraceptive/S -contract/DG -contractible -contractile -contractual/Y -contradict/GDS -contradiction/MS -contradictorily -contradictoriness/M -contradictory/PS -contradistinction/MS -contraflow/S -contrail/M -contraindicate/SDVNGX -contraindication/M -contralto/SM -contrapositive/S -contraption/MS -contrapuntal/Y -contrariety/MS -contrarily -contrariness/MS -contrariwise -contrary/PS -contra/S -contrasting/Y -contrastive/Y -contrast/SRDVGZ -contravene/GSRD -contravener/M -contravention/MS -Contreras/M -contretemps/M -contribute/XVNZRD -contribution/M -contributive/Y -contributorily -contributor/SM -contributory/S -contriteness/M -contrite/NXP -contrition/M -contrivance/SM -contriver/M -contrive/ZGRSD -control/CS -controllability/M -controllable/IU -controllably/U -controlled/CU -controller/SM -controlling/C -control's -controversialists -controversial/UY -controversy/MS -controvert/DGS -controvertible/I -contumacious/Y -contumacy/MS -contumelious -contumely/MS -contuse/NGXSD -contusion/M -conundrum/SM -conurbation/MS -convalesce/GDS -convalescence/SM -convalescent/S -convect/DSVG -convectional -convection/MS -convector -convene/ASDG -convener/MS -convenience/ISM -convenient/IY -conventicle/SM -conventionalism/M -conventionalist/M -conventionality/SUM -conventionalize/GDS -conventional/UY -convention/MA -conventions -convergence/MS -convergent -conversant/Y -conversationalist/SM -conversational/Y -conversation/SM -conversazione/M -converse/Y -conversion/AM -conversioning -converted/U -converter/MS -convert/GADS -convertibility's/I -convertibility/SM -convertibleness/M -convertible/PS -convexity/MS -convex/Y -conveyance/DRSGMZ -conveyancer/M -conveyancing/M -convey/BDGS -conveyor/MS -conviction/MS -convict/SVGD -convinced/U -convincer/M -convince/RSDZG -convincingness/M -convincing/PUY -conviviality/MS -convivial/Y -convoke/GSD -convolute/XDNY -convolution/M -convolve/C -convolved -convolves -convolving -convoy/GMDS -convulse/SDXVNG -convulsion/M -convulsiveness/M -convulsive/YP -Conway/M -cony/SM -coo/GSD -cookbook/SM -cooked/AU -Cooke/M -cooker/M -cookery/MS -cook/GZDRMJS -Cookie/M -cookie/SM -cooking/M -Cook/M -cookout/SM -cooks/A -cookware/SM -cooky's -coolant/SM -cooled/U -cooler/M -Cooley/M -coolheaded -Coolidge/M -coolie/MS -coolness/MS -cool/YDRPJGZTS -coon/MS! -coonskin/MS -cooperage/MS -cooperate/VNGXSD -cooperation/M -cooperativeness/SM -cooperative/PSY -cooperator/MS -cooper/GDM -Cooper/M -coop/MDRGZS -Coop/MR -coordinated/U -coordinateness/M -coordinate/XNGVYPDS -coordination/M -coordinator/MS -Coors/M -cootie/SM -coot/MS -copay/S -Copeland/M -Copenhagen/M -coper/M -Copernican -Copernicus/M -cope/S -copied/A -copier/M -copies/A -copilot/SM -coping/M -copiousness/SM -copious/YP -coplanar -Copland/M -Copley/M -copolymer/MS -copora -copped -Copperfield/M -copperhead/MS -copper/MSGD -copperplate/MS -coppersmith/M -coppersmiths -coppery -coppice's -copping -Coppola/M -copra/MS -coprolite/M -coprophagous -copse/M -cops/GDS -cop/SJMDRG -copter/SM -Coptic/M -copula/MS -copulate/XDSNGV -copulation/M -copulative/S -copybook/MS -copycat/SM -copycatted -copycatting -copyist/SM -copy/MZBDSRG -copyrighter/M -copyright/MSRDGZ -copywriter/MS -coquetry/MS -coquette/DSMG -coquettish/Y -Corabella/M -Corabelle/M -Corabel/M -coracle/SM -Coralie/M -Coraline/M -coralline -Coral/M -coral/SM -Coralyn/M -Cora/M -corbel/GMDJS -Corbet/M -Corbett/M -Corbie/M -Corbin/M -Corby/M -cordage/MS -corded/AE -Cordelia/M -Cordelie/M -Cordell/M -corder/AM -Cordey/M -cord/FSAEM -cordiality/MS -cordialness/M -cordial/PYS -Cordie/M -cordillera/MS -Cordilleras -Cordi/M -cording/MA -cordite/MS -cordless -Cord/M -Cordoba -cordon/DMSG -cordovan/SM -Cordula/M -corduroy/GDMS -Cordy/M -cored/A -Coreen/M -Corella/M -core/MZGDRS -Corenda/M -Corene/M -corer/M -corespondent/MS -Coretta/M -Corette/M -Corey/M -Corfu/M -corgi/MS -coriander/SM -Corie/M -Corilla/M -Cori/M -Corina/M -Corine/M -coring/M -Corinna/M -Corinne/M -Corinthian/S -Corinthians/M -Corinth/M -Coriolanus/M -Coriolis/M -Corissa/M -Coriss/M -corked/U -corker/M -cork/GZDRMS -Cork/M -corkscrew/DMGS -corks/U -Corliss/M -Corly/M -Cormack/M -corm/MS -cormorant/MS -Cornall/M -cornball/SM -cornbread/S -corncob/SM -corncrake/M -corneal -cornea/SM -Corneille/M -Cornela/M -Cornelia/M -Cornelius/M -Cornelle/M -Cornell/M -corner/GDM -cornerstone/MS -cornet/SM -Corney/M -cornfield/SM -cornflake/S -cornflour/M -cornflower/SM -corn/GZDRMS -cornice/GSDM -Cornie/M -cornily -corniness/S -Cornish/S -cornmeal/S -cornrow/GDS -cornstalk/MS -cornstarch/SM -cornucopia/MS -Cornwallis/M -Cornwall/M -Corny/M -corny/RPT -corolla/MS -corollary/SM -Coronado/M -coronal/MS -coronary/S -corona/SM -coronate/NX -coronation/M -coroner/MS -coronet/DMS -Corot/M -coroutine/SM -Corp -corporal/SYM -corpora/MS -corporate/INVXS -corporately -corporation/MI -corporatism/M -corporatist -corporeality/MS -corporeal/IY -corporealness/M -corp/S -corpse/M -corpsman/M -corpsmen -corps/SM -corpulence/MS -corpulentness/S -corpulent/YP -corpuscle/SM -corpuscular -corpus/M -corr -corralled -corralling -corral/MS -correctable/U -correct/BPSDRYTGV -corrected/U -correctional -correction/MS -corrective/YPS -correctly/I -correctness/MSI -corrector/MS -Correggio/M -correlated/U -correlate/SDXVNG -correlation/M -correlative/YS -Correna/M -correspond/DSG -correspondence/MS -correspondent/SM -corresponding/Y -Correy/M -Corrianne/M -corridor/SM -Corrie/M -corrigenda -corrigendum/M -corrigible/I -Corri/M -Corrina/M -Corrine/M -Corrinne/M -corroborated/U -corroborate/GNVXDS -corroboration/M -corroborative/Y -corroborator/MS -corroboratory -corrode/SDG -corrodible -corrosion/SM -corrosiveness/M -corrosive/YPS -corrugate/NGXSD -corrugation/M -corrupt/DRYPTSGV -corrupted/U -corrupter/M -corruptibility/SMI -corruptible/I -corruption/IM -corruptions -corruptive/Y -corruptness/MS -Corry/M -corsage/MS -corsair/SM -corset/GMDS -Corsica/M -Corsican/S -cort�ge/MS -Cortes/S -cortex/M -Cortez's -cortical/Y -cortices -corticosteroid/SM -Cortie/M -cortisone/SM -Cortland/M -Cort/M -Cortney/M -Corty/M -corundum/MS -coruscate/XSDGN -coruscation/M -Corvallis/M -corvette/MS -Corvus/M -Cory/M -Cos -Cosby/M -Cosetta/M -Cosette/M -cos/GDS -cosignatory/MS -cosign/SRDZG -cosily -Cosimo/M -cosine/MS -cosiness/MS -Cosme/M -cosmetically -cosmetician/MS -cosmetic/SM -cosmetologist/MS -cosmetology/MS -cosmic -cosmical/Y -cosmogonist/MS -cosmogony/SM -cosmological/Y -cosmologist/MS -cosmology/SM -Cosmo/M -cosmonaut/MS -cosmopolitanism/MS -cosmopolitan/SM -cosmos/SM -cosponsor/DSG -cossack/S -Cossack/SM -cosset/GDS -Costa/M -Costanza/M -costarred -costarring -costar/S -Costello/M -costiveness/M -costive/PY -costless -costliness/SM -costly/RTP -cost/MYGVJS -Costner/M -costumer/M -costume/ZMGSRD -cotangent/SM -Cote/M -cote/MS -coterie/MS -coterminous/Y -cotillion/SM -Cotonou/M -Cotopaxi/M -cot/SGMD -cottager/M -cottage/ZMGSRD -cottar's -cotted -cotter/SDM -cotton/GSDM -Cotton/M -cottonmouth/M -cottonmouths -cottonseed/MS -cottontail/SM -cottonwood/SM -cottony -cotyledon/MS -couching/M -couch/MSDG -cougar/MS -cougher/M -cough/RDG -coughs -couldn't -could/T -could've -coul�e/MS -Coulomb/M -coulomb/SM -councilman/M -councilmen -councilor/MS -councilperson/S -council/SM -councilwoman/M -councilwomen -counsel/GSDM -counsellings -counselor/MS -countability/E -countable/U -countably/U -countdown/SM -counted/U -count/EGARDS -countenance/EGDS -countenancer/M -countenance's -counteract/DSVG -counteraction/SM -counterargument/SM -counterattack/DRMGS -counterbalance/MSDG -counterclaim/GSDM -counterclockwise -counterculture/MS -countercyclical -counterespionage/MS -counterexample/S -counterfeiter/M -counterfeit/ZSGRD -counterflow -counterfoil/MS -counterforce/M -counter/GSMD -counterinsurgency/MS -counterintelligence/MS -counterintuitive -countermand/DSG -counterman/M -countermeasure/SM -countermen -counteroffensive/SM -counteroffer/SM -counterpane/SM -counterpart/SM -counterpoint/GSDM -counterpoise/GMSD -counterproductive -counterproposal/M -counterrevolutionary/MS -counterrevolution/MS -counter's/E -counters/E -countersignature/MS -countersign/SDG -countersink/SG -counterspy/MS -counterstrike -countersunk -countertenor/SM -countervail/DSG -counterweight/GMDS -countess/MS -countless/Y -countrify/D -countryman/M -countrymen -country/MS -countryside/MS -countrywide -countrywoman/M -countrywomen -county/SM -coup/ASDG -coupe/MS -Couperin/M -couple/ACU -coupled/CU -coupler/C -couplers -coupler's -couple's -couples/CU -couplet/SM -coupling's/C -coupling/SM -coupon/SM -coup's -courage/MS -courageously -courageousness/MS -courageous/U -courages/E -Courbet/M -courgette/MS -courier/GMDS -course/EGSRDM -courser's/E -courser/SM -course's/AF -courses/FA -coursework -coursing/M -Courtenay/M -courteousness/EM -courteousnesses -courteous/PEY -courtesan/MS -courtesied -courtesy/ESM -courtesying -court/GZMYRDS -courthouse/MS -courtier/SM -courtliness/MS -courtly/RTP -Court/M -Courtnay/M -Courtney/M -courtroom/MS -courtship/SM -courtyard/SM -couscous/MS -cousinly/U -cousin/YMS -Cousteau/M -couture/SM -couturier/SM -covalent/Y -covariance/SM -covariant/S -covariate/SN -covary -cove/DRSMZG -covenanted/U -covenanter/M -covenant/SGRDM -coven/SM -Covent/M -Coventry/MS -coverable/E -cover/AEGUDS -coverage/MS -coverall/DMS -coverer/AME -covering/MS -coverlet/MS -coversheet -covers/M -covertness/SM -covert/YPS -coveter/M -coveting/Y -covetousness/SM -covetous/PY -covet/SGRD -covey/SM -covington -cowardice/MS -cowardliness/MS -cowardly/P -Coward/M -coward/MYS -cowbell/MS -cowbird/MS -cowboy/MS -cowcatcher/SM -cowed/Y -cowering/Y -cower/RDGZ -cowgirl/MS -cowhand/S -cowherd/SM -cowhide/MGSD -Cowley/M -cowlick/MS -cowling/M -cowl/SGMD -cowman/M -cow/MDRSZG -cowmen -coworker/MS -Cowper/M -cowpoke/MS -cowpony -cowpox/MS -cowpuncher/M -cowpunch/RZ -cowrie/SM -cowshed/SM -cowslip/MS -coxcomb/MS -Cox/M -cox/MDSG -coxswain/GSMD -coy/CDSG -coyer -coyest -coyly -Coy/M -coyness/MS -coyote/SM -coypu/SM -cozenage/MS -cozen/SGD -cozily -coziness/MS -Cozmo/M -Cozumel/M -cozy/DSRTPG -CPA -cpd -CPI -cpl -Cpl -CPO -CPR -cps -CPU/SM -crabapple -crabbedness/M -crabbed/YP -Crabbe/M -crabber/MS -crabbily -crabbiness/S -crabbing/M -crabby/PRT -crabgrass/S -crablike -crab/MS -crackable/U -crackdown/MS -crackerjack/S -cracker/M -crackle/GJDS -crackling/M -crackly/RT -crackpot/SM -crackup/S -crack/ZSBYRDG -cradler/M -cradle/SRDGM -cradling/M -craftily -craftiness/SM -Craft/M -craft/MRDSG -craftsman/M -craftsmanship/SM -craftsmen -craftspeople -craftspersons -craftswoman -craftswomen -crafty/TRP -Craggie/M -cragginess/SM -Craggy/M -craggy/RTP -crag/SM -Craig/M -Cramer/M -crammed -crammer/M -cramming -cramper/M -cramp/MRDGS -crampon/SM -cram/S -Cranach/M -cranberry/SM -Crandall/M -crane/DSGM -cranelike -Crane/M -Cranford/M -cranial -cranium/MS -crankcase/MS -crankily -crankiness/MS -crank/SGTRDM -crankshaft/MS -cranky/TRP -Cranmer/M -cranny/DSGM -Cranston/M -crape/SM -crapped -crappie/M -crapping -crappy/RST -crapshooter/SM -crap/SMDG! -crasher/M -crashing/Y -crash/SRDGZ -crassness/MS -crass/TYRP -crate/DSRGMZ -crater/DMG -Crater/M -cravat/SM -cravatted -cravatting -crave/DSRGJ -cravenness/SM -craven/SPYDG -craver/M -craving/M -crawdad/S -crawfish's -Crawford/M -crawler/M -crawl/RDSGZ -crawlspace/S -crawlway -crawly/TRS -craw/SYM -crayfish/GSDM -Crayola/M -crayon/GSDM -Cray/SM -craze/GMDS -crazily -craziness/MS -crazy/SRTP -creakily -creakiness/SM -creak/SDG -creaky/PTR -creamer/M -creamery/MS -creamily -creaminess/SM -cream/SMRDGZ -creamy/TRP -creased/CU -crease/IDRSG -crease's -creases/C -creasing/C -created/U -create/XKVNGADS -creationism/MS -creationist/MS -Creation/M -creation/MAK -creativeness/SM -creative/YP -creativities -creativity/K -creativity's -Creator/M -creator/MS -creatureliness/M -creaturely/P -creature/YMS -cr�che/SM -credence/MS -credent -credential/SGMD -credenza/SM -credibility/IMS -credible/I -credibly/I -creditability/M -creditableness/M -creditable/P -creditably/E -credited/U -credit/EGBSD -creditor/MS -credit's -creditworthiness -credo/SM -credulity/ISM -credulous/IY -credulousness/SM -creedal -creed/C -creeds -creed's -creekside -creek/SM -Creek/SM -creel/SMDG -Cree/MDS -creeper/M -creepily -creepiness/SM -creep/SGZR -creepy/PRST -Creigh/M -Creight/M -Creighton/M -cremate/XDSNG -cremation/M -crematoria -crematorium/MS -crematory/S -creme/S -crenelate/XGNSD -crenelation/M -Creole/MS -creole/SM -Creon/M -creosote/MGDS -crepe/DSGM -crept -crescendoed -crescendoing -crescendo/SCM -crescent/MS -cress/S -crestfallenness/M -crestfallen/PY -cresting/M -crestless -crest/SGMD -Crestview/M -cretaceous -Cretaceously/M -Cretaceous/Y -Cretan/S -Crete/M -cretinism/MS -cretin/MS -cretinous -cretonne/SM -crevasse/DSMG -crevice/SM -crew/DMGS -crewel/SM -crewelwork/SM -crewman/M -crewmen -cribbage/SM -cribbed -cribber/SM -cribbing/M -crib/SM -Crichton/M -cricketer/M -cricket/SMZRDG -crick/GDSM -Crick/M -cried/C -crier/CM -cries/C -Crimea/M -Crimean -crime/GMDS -criminality/MS -criminalization/C -criminalize/GC -criminal/SYM -criminologist/SM -criminology/MS -crimper/M -crimp/RDGS -crimson/DMSG -cringer/M -cringe/SRDG -crinkle/DSG -crinkly/TRS -Crin/M -crinoline/SM -cripple/GMZDRS -crippler/M -crippling/Y -Crisco/M -crises -crisis/M -Cris/M -crisper/M -crispiness/SM -crispness/MS -crisp/PGTYRDS -crispy/RPT -criss -crisscross/GDS -Crissie/M -Crissy/M -Cristabel/M -Cristal/M -Crista/M -Cristen/M -Cristian/M -Cristiano/M -Cristie/M -Cristi/M -Cristina/M -Cristine/M -Cristin/M -Cristionna/M -Cristobal/M -Cristy/M -criteria -criterion/M -criticality -critically/U -criticalness/M -critical/YP -criticism/MS -criticized/U -criticize/GSRDZ -criticizer/M -criticizes/A -criticizingly/S -criticizing/UY -critic/MS -critique/MGSD -critter/SM -Cr/M -croaker/M -croak/SRDGZ -croaky/RT -Croatia/M -Croatian/S -Croat/SM -Croce/M -crocheter/M -crochet/RDSZJG -crockery/SM -Crockett/M -Crockpot/M -crock/SGRDM -crocodile/MS -crocus/SM -Croesus/SM -crofter/M -croft/MRGZS -croissant/MS -Croix/M -Cromwellian -Cromwell/M -crone/SM -Cronin/M -Cronkite/M -Cronus/M -crony/SM -crookedness/SM -crooked/TPRY -Crookes/M -crookneck/MS -crook/SGDM -crooner/M -croon/SRDGZ -cropland/MS -crop/MS -cropped -cropper/SM -cropping -croquet/MDSG -croquette/SM -Crosby/M -crosier/SM -crossarm -crossbarred -crossbarring -crossbar/SM -crossbeam/MS -crossbones -crossbowman/M -crossbowmen -crossbow/SM -crossbred/S -crossbreed/SG -crosscheck/SGD -crosscurrent/SM -crosscut/SM -crosscutting -crossed/UA -crosses/UA -crossfire/SM -crosshatch/GDS -crossing/M -Cross/M -crossness/MS -crossover/MS -crosspatch/MS -crosspiece/SM -crosspoint -crossproduct/S -crossroad/GSM -crossroads/M -crosstalk/M -crosstown -crosswalk/MS -crossway/M -crosswind/SM -crosswise -crossword/MS -cross/ZTYSRDMPBJG -crotchetiness/M -crotchet/MS -crotchety/P -crotchless -crotch/MDS -crouch/DSG -croupier/M -croup/SMDG -croupy/TZR -cro�ton/MS -crowbait -crowbarred -crowbarring -crowbar/SM -crowdedness/M -crowded/P -crowd/MRDSG -crowfeet -crowfoot/M -crow/GDMS -Crowley/M -crowned/U -crowner/M -crown/RDMSJG -crozier's -CRT/S -crucial/Y -crucible/MS -crucifiable -crucifixion/MS -Crucifixion/MS -crucifix/SM -cruciform/S -crucify/NGDS -crudded -crudding -cruddy/TR -crudeness/MS -crude/YSP -crudit�s -crudity/MS -crud/STMR -cruelness/MS -cruelty/SM -cruel/YRTSP -cruet/MS -cruft -crufty -Cruikshank/M -cruise/GZSRD -cruiser/M -cruller/SM -crumb/GSYDM -crumble/DSJG -crumbliness/MS -crumbly/PTRS -crumby/RT -crumminess/S -crummy/SRTP -crump -crumpet/SM -crumple/DSG -crunch/DSRGZ -crunchiness/MS -crunchy/TRP -crupper/MS -crusade/GDSRMZ -crusader/M -cruse/MS -crushable/U -crusher/M -crushing/Y -crushproof -crush/SRDBGZ -Crusoe/M -crustacean/MS -crustal -crust/GMDS -crustily -crustiness/SM -crusty/SRTP -crutch/MDSG -Crux/M -crux/MS -Cruz/M -crybaby/MS -cry/JGDRSZ -cryogenic/S -cryogenics/M -cryostat/M -cryosurgery/SM -cryptanalysis/M -cryptanalyst/M -cryptanalytic -crypt/CS -cryptic -cryptically -cryptogram/MS -cryptographer/MS -cryptographic -cryptographically -cryptography/MS -cryptologic -cryptological -cryptologist/M -cryptology/M -Cryptozoic/M -crypt's -crystalline/S -crystallite/SM -crystallization/AMS -crystallized/UA -crystallizes/A -crystallize/SRDZG -crystallizing/A -crystallographer/MS -crystallographic -crystallography/M -Crystal/M -crystal/SM -Crysta/M -Crystie/M -Cs -C's -cs/EA -cs's -CST -ct -CT -Cthrine/M -Ct/M -ctn -ctr -Cuba/M -Cuban/S -cubbed -cubbing -cubbyhole/MS -cuber/M -cube/SM -cubical/Y -cubicle/SM -cubic/YS -cubism/SM -cubist/MS -cubit/MS -cub/MDRSZG -cuboid -Cuchulain/M -cuckold/GSDM -cuckoldry/MS -cuckoo/SGDM -cucumber/MS -cuddle/GSD -cuddly/TRP -cu/DG -cudgel/GSJMD -cud/MS -cue/MS -cuff/GSDM -Cuisinart/M -cuisine/MS -Culbertson/M -culinary -Cullan/M -cull/DRGS -cullender's -Cullen/M -culler/M -Culley/M -Cullie/M -Cullin/M -Cull/MN -Cully/M -culminate/XSDGN -culmination/M -culotte/S -culpability/MS -culpable/I -culpableness/M -culpably -culpa/SM -culprit/SM -cultism/SM -cultist/SM -cultivable -cultivated/U -cultivate/XBSDGN -cultivation/M -cultivator/SM -cult/MS -cultural/Y -cultured/U -culture/SDGM -Culver/MS -culvert/SM -Cu/M -cumber/DSG -Cumberland/M -cumbersomeness/MS -cumbersome/YP -cumbrous -cumin/MS -cummerbund/MS -Cummings -cumquat's -cum/S -cumulate/XVNGSD -cumulation/M -cumulative/Y -cumuli -cumulonimbi -cumulonimbus/M -cumulus/M -Cunard/M -cuneiform/S -cunnilingus/SM -Cunningham/M -cunningness/M -cunning/RYSPT -cunt/SM! -cupboard/SM -cupcake/SM -Cupertino/M -cupful/SM -cupidinously -cupidity/MS -Cupid/M -cupid/S -cup/MS -cupola/MDGS -cupped -cupping/M -cupric -cuprous -curability/MS -curable/IP -curableness/MI -curably/I -Curacao/M -curacy/SM -curare/MS -curate/VGMSD -curative/YS -curatorial -curator/KMS -curbing/M -curbside -curb/SJDMG -curbstone/MS -Curcio/M -curdle/SDG -curd/SMDG -cured/U -cure/KBDRSGZ -curer/MK -curettage/SM -curfew/SM -curfs -curiae -curia/M -cur/IBS -Curie/M -curie/SM -curiosity/SM -curio/SM -curiousness/SM -curious/TPRY -Curitiba/M -curium/MS -curler/SM -curlew/MS -curlicue/MGDS -curliness/SM -curling/M -curl/UDSG -curlycue's -curly/PRT -curmudgeon/MYS -Curran/M -currant/SM -curred/AFI -currency's -currency/SF -current/FSY -currently/A -currentness/M -Currey/M -curricle/M -curricula -curricular -curriculum/M -Currie/M -currier/M -Currier/M -curring/FAI -Curr/M -currycomb/DMGS -Curry/MR -curry/RSDMG -cur's -curs/ASDVG -curse/A -cursedness/M -cursed/YRPT -curse's -cursive/EPYA -cursiveness/EM -cursives -cursor/DMSG -cursorily -cursoriness/SM -cursory/P -curtailer/M -curtail/LSGDR -curtailment/SM -curtain/GSMD -Curtice/M -Curtis/M -Curt/M -curtness/MS -curtsey's -curtsy/SDMG -curt/TYRP -curvaceousness/S -curvaceous/YP -curvature/MS -curved/A -curved's -curve/DSGM -curvilinearity/M -curvilinear/Y -curving/M -curvy/RT -cushion/SMDG -Cushman/M -cushy/TR -cuspid/MS -cuspidor/MS -cusp/MS -cussedness/M -cussed/YP -cuss/EGDSR -cusses/F -cussing/F -cuss's -custard/MS -Custer/M -custodial -custodianship/MS -custodian/SM -custody/MS -customarily -customariness/M -customary/PS -customer/M -customhouse/S -customization/SM -customize/ZGBSRD -custom/SMRZ -cutaneous/Y -cutaway/SM -cutback/SM -cuteness/MS -cute/SPY -cutesy/RT -cuticle/SM -cutlass/MS -cutler/SM -cutlery/MS -cutlet/SM -cut/MRST -cutoff/MS -cutout/SM -cutter/SM -cutthroat/SM -cutting/MYS -cuttlebone/SM -cuttlefish/MS -cuttle/M -cutup/MS -cutworm/MS -Cuvier/M -Cuzco/M -CV -cw -cwt -Cyanamid/M -cyanate/M -cyanic -cyanide/GMSD -cyan/MS -cyanogen/M -Cybele/M -cybernetic/S -cybernetics/M -cyberpunk/S -cyberspace/S -Cybill/M -Cybil/M -Cyb/M -cyborg/S -Cyclades -cyclamen/MS -cycle/ASDG -cycler -cycle's -cycleway/S -cyclic -cyclical/SY -cycling/M -cyclist/MS -cyclohexanol -cycloidal -cycloid/SM -cyclometer/MS -cyclone/SM -cyclonic -cyclopean -cyclopedia/MS -cyclopes -Cyclopes -cyclops -Cyclops/M -cyclotron/MS -cyder/SM -cygnet/MS -Cygnus/M -cylinder/GMDS -cylindric -cylindrical/Y -Cy/M -cymbalist/MS -cymbal/SM -Cymbre/M -Cynde/M -Cyndia/M -Cyndie/M -Cyndi/M -Cyndy/M -cynical/UY -cynicism/MS -cynic/MS -cynosure/SM -Cynthea/M -Cynthia/M -Cynthie/M -Cynthy/M -cypher/MGSD -cypreses -cypress/SM -Cyprian -Cypriot/SM -Cyprus/M -Cyrano/M -Cyrille/M -Cyrillic -Cyrill/M -Cyrillus/M -Cyril/M -Cyrus/M -cystic -cyst/MS -cytochemistry/M -cytochrome/M -cytologist/MS -cytology/MS -cytolysis/M -cytoplasmic -cytoplasm/SM -cytosine/MS -cytotoxic -CZ -czarevitch/M -czarina/SM -czarism/M -czarist/S -czarship -czar/SM -Czech -Czechoslovakia/M -Czechoslovakian/S -Czechoslovak/S -Czechs -Czerniak/M -Czerny/M -D -DA -dabbed -dabber/MS -dabbing -dabbler/M -dabble/RSDZG -dab/S -Dacca's -dace/MS -Dacey/M -dacha/SM -Dachau/M -dachshund/SM -Dacia/M -Dacie/M -Dacron/MS -dactylic/S -dactyl/MS -Dacy/M -Dadaism/M -dadaism/S -Dadaist/M -dadaist/S -Dada/M -daddy/SM -Dade/M -dado/DMG -dadoes -dad/SM -Daedalus/M -Dael/M -daemonic -daemon/SM -Daffie/M -Daffi/M -daffiness/S -daffodil/MS -Daffy/M -daffy/PTR -daftness/MS -daft/TYRP -DAG -dagger/DMSG -Dag/M -Dagmar/M -Dagny/M -Daguerre/M -daguerreotype/MGDS -Dagwood/M -Dahlia/M -dahlia/MS -Dahl/M -Dahomey/M -Daile/M -dailiness/MS -daily/PS -Daimler/M -daintily -daintiness/MS -dainty/TPRS -daiquiri/SM -dairying/M -dairyland -dairymaid/SM -dairyman/M -dairymen -dairy/MJGS -dairywoman/M -dairywomen -Daisey/M -Daisie/M -Daisi/M -dais/SM -Daisy/M -daisy/SM -Dakar/M -Dakotan -Dakota/SM -Dale/M -Dalenna/M -dale/SMH -daleth/M -Daley/M -Dalhousie/M -Dalia/M -Dalian/M -Dalila/M -Dali/SM -Dallas/M -dalliance/SM -dallier/M -Dalli/MS -Dall/M -Dallon/M -dally/ZRSDG -Dal/M -Dalmatia/M -dalmatian/S -Dalmatian/SM -Daloris/M -Dalston/M -Dalt/M -Dalton/M -Daly/M -damageable -damaged/U -damage/MZGRSD -damager/M -damaging/Y -Damara/M -Damaris/M -Damascus/M -damask/DMGS -dame/SM -Dame/SMN -Damian/M -Damiano/M -Damien/M -Damion/M -Damita/M -dam/MDS -dammed -damming -dammit/S -damnably -damnation/MS -damnedest/MS -damned/TR -damn/GSBRD -damning/Y -Damocles/M -Damon/M -damped/U -dampener/M -dampen/RDZG -damper/M -dampness/MS -damp/SGZTXYRDNP -damselfly/MS -damsel/MS -damson/MS -Dana� -Dana/M -Danbury/M -dancelike -dancer/M -dance/SRDJGZ -dandelion/MS -dander/DMGS -dandify/SDG -dandily -dandle/GSD -dandruff/MS -dandy/TRSM -Danelaw/M -Danella/M -Danell/M -Dane/SM -Danette/M -danger/DMG -Dangerfield/M -dangerousness/M -dangerous/YP -dangler/M -dangle/ZGRSD -dangling/Y -dang/SGZRD -Danial/M -Dania/M -Danica/M -Danice/M -Daniela/M -Daniele/M -Daniella/M -Danielle/M -Daniel/SM -Danielson/M -Danie/M -Danika/M -Danila/M -Dani/M -Danish -danish/S -Danita/M -Danit/M -dankness/MS -dank/TPYR -Danna/M -Dannel/M -Dannie/M -Danni/M -Dannye/M -Danny/M -danseuse/SM -Dan/SM -Dante/M -Danton/M -Danube/M -Danubian -Danville/M -Danya/M -Danyelle/M -Danyette/M -Danzig/M -Daphene/M -Daphna/M -Daphne/M -dapperness/M -dapper/PSTRY -dapple/SDG -Dara/M -Darbee/M -Darbie/M -Darb/M -Darby/M -Darcee/M -Darcey/M -Darcie/M -Darci/M -D'Arcy -Darcy/M -Darda/M -Dardanelles -daredevil/MS -daredevilry/S -Dareen/M -Darelle/M -Darell/M -Dare/M -Daren/M -darer/M -daresay -dare/ZGDRSJ -d'Arezzo -Daria/M -Darice/M -Darill/M -Dari/M -daringness/M -daring/PY -Darin/M -Dario/M -Darius/M -Darjeeling/M -darkener/M -darken/RDZG -dark/GTXYRDNSP -darkish -darkly/TR -darkness/MS -darkroom/SM -Darla/M -Darleen/M -Darlene/M -Darline/M -Darling/M -darlingness/M -Darlington/M -darling/YMSP -Darlleen/M -Dar/MNH -Darnall/M -darned/TR -Darnell/M -darner/M -darn/GRDZS -darning/M -Darn/M -Daron/M -DARPA/M -Darrelle/M -Darrell/M -Darrel/M -Darren/M -Darrick/M -Darrin/M -Darrow/M -Darryl/M -Darsey/M -Darsie/M -d'art -dartboard/SM -darter/M -Darth/M -Dartmouth/M -dart/MRDGZS -Darvon/M -Darwinian/S -Darwinism/MS -Darwinist/MS -Darwin/M -Darya/M -Daryle/M -Daryl/M -Daryn/M -Dasha/M -dashboard/SM -dasher/M -dash/GZSRD -dashiki/SM -dashing/Y -Dasie/M -Dasi/M -dastardliness/SM -dastardly/P -dastard/MYS -Dasya/M -DAT -database/DSMG -datafile -datagram/MS -data/M -Datamation/M -Datamedia/M -dataset/S -datedly -datedness -date/DRSMZGV -dated/U -dateless -dateline/DSMG -dater/M -Datha/M -dative/S -Datsun/M -datum/MS -dauber/M -daub/RDSGZ -Daugherty/M -daughter/MYS -Daumier/M -Daune/M -daunt/DSG -daunted/U -daunting/Y -dauntlessness/SM -dauntless/PY -dauphin/SM -Davao/M -Daveen/M -Dave/M -Daven/M -Davenport/M -davenport/MS -Daveta/M -Davey/M -Davida/M -Davidde/M -Davide/M -David/SM -Davidson/M -Davie/M -Davina/M -Davine/M -Davinich/M -Davin/M -Davis/M -Davita/M -davit/SM -Dav/MN -Davon/M -Davy/SM -dawdler/M -dawdle/ZGRSD -Dawes/M -Dawna/M -dawn/GSDM -Dawn/M -Dawson/M -daybed/S -daybreak/SM -daycare/S -daydreamer/M -daydream/RDMSZG -Dayle/M -daylight/GSDM -Day/M -Dayna/M -daysack -day/SM -daytime/SM -Dayton/M -dazed/PY -daze/DSG -dazzler/M -dazzle/ZGJRSD -dazzling/Y -db -DB -dbl -dB/M -DBMS -DC -DD -Ddene/M -DDS -DDT -DE -deacon/DSMG -deaconess/MS -deadbeat/SM -deadbolt/S -deadener/M -deadening/MY -deaden/RDG -deadhead/MS -deadline/MGDS -deadliness/SM -deadlock/MGDS -deadly/RPT -deadness/M -deadpanned -deadpanner -deadpanning -deadpan/S -dead/PTXYRN -deadwood/SM -deafening/MY -deafen/JGD -deafness/MS -deaf/TXPYRN -dealer/M -dealership/MS -dealing/M -deallocator -deal/RSGZJ -dealt -Deana/M -dean/DMG -Deandre/M -Deane/M -deanery/MS -Dean/M -Deanna/M -Deanne/M -Deann/M -deanship/SM -Dearborn/M -dearness/MS -dearth/M -dearths -dear/TYRHPS -deary/MS -deassign -deathbed/MS -deathblow/SM -deathless/Y -deathlike -deathly/TR -death/MY -deaths -deathtrap/SM -deathward -deathwatch/MS -debacle/SM -debarkation/SM -debark/G -debar/L -debarment/SM -debarring -debaser/M -debatable/U -debate/BMZ -debater/M -debauchedness/M -debauched/PY -debauchee/SM -debaucher/M -debauchery/SM -debauch/GDRS -Debbie/M -Debbi/M -Debby/M -Debee/M -debenture/MS -Debera/M -debilitate/NGXSD -debilitation/M -debility/MS -Debi/M -debit/DG -deb/MS -Deb/MS -debonairness/SM -debonair/PY -Deborah/M -Debora/M -Debor/M -debouch/DSG -Debra/M -debrief/GJ -debris/M -debtor/SM -debt/SM -Debussy/M -d�butante/SM -debut/MDG -decade/MS -decadency/S -decadent/YS -decaffeinate/DSG -decaf/S -decagon/MS -Decalogue/M -decal/SM -decamp/L -decampment/MS -decapitate/GSD -decapitator/SM -decathlon/SM -Decatur/M -decay/GRD -Decca/M -Deccan/M -decease/M -decedent/MS -deceitfulness/SM -deceitful/PY -deceit/SM -deceived/U -deceiver/M -deceives/U -deceive/ZGRSD -deceivingly -deceiving/U -decelerate/XNGSD -deceleration/M -decelerator/SM -December/SM -decency/ISM -decennial/SY -decent/TIYR -deception/SM -deceptiveness/SM -deceptive/YP -decertify/N -dechlorinate/N -decibel/MS -decidability/U -decidable/U -decidedness/M -decided/PY -decide/GRSDB -deciduousness/M -deciduous/YP -decile/SM -deciliter/SM -decimal/SYM -decimate/XNGDS -decimation/M -decimeter/MS -decipherable/IU -decipher/BRZG -decipherer/M -decisional -decisioned -decisioning -decision/ISM -decisive/IPY -decisiveness/MSI -deckchair -decker/M -Decker/M -deck/GRDMSJ -deckhand/S -decking/M -Deck/RM -declamation/SM -declamatory -declarable -declaration/MS -declaration's/A -declarative/SY -declarator/MS -declaratory -declare/AGSD -declared/U -declarer/MS -declension/SM -declination/MS -decliner/M -decline/ZGRSD -declivity/SM -Dec/M -DEC/M -DECNET -DECnet/M -deco -d�colletage/S -d�collet� -decolletes -decolorising -decomposability/M -decomposable/IU -decompose/B -decompress/R -decongestant/S -deconstruction -deconvolution -decorated/AU -decorate/NGVDSX -decorates/A -decorating/A -decoration/ASM -decorativeness/M -decorative/YP -decorator/SM -decorousness/MS -decorousness's/I -decorous/PIY -decor/S -decorticate/GNDS -decortication/M -decorum/MS -decoupage/MGSD -decouple/G -decoy/M -decrease -decreasing/Y -decreeing -decree/RSM -decremental -decrement/DMGS -decrepit -decrepitude/SM -decriminalization/S -decriminalize/DS -decry/G -decrypt/GD -decryption -DECstation/M -DECsystem/M -DECtape/M -decustomised -Dedekind/M -Dede/M -dedicate/AGDS -dedicated/Y -dedication/MS -dedicative -dedicator/MS -dedicatory -Dedie/M -Dedra/M -deduce/RSDG -deducible -deductibility/M -deductible/S -deduction/SM -deductive/Y -deduct/VG -Deeanne/M -Deeann/M -deeded -Deedee/M -deeding -deed/IS -deed's -deejay/MDSG -Dee/M -deem/ADGS -deemphasis -Deena/M -deepen/DG -deepish -deepness/MS -deep/PTXSYRN -Deerdre/M -Deere/M -deerskin/MS -deer/SM -deerstalker/SM -deerstalking/M -Deeyn/M -deface/LZ -defacement/SM -defaecate -defalcate/NGXSD -defalcation/M -defamation/SM -defamatory -defamer/M -defame/ZR -defaulter/M -default/ZR -defeated/U -defeater/M -defeatism/SM -defeatist/SM -defeat/ZGD -defecate/DSNGX -defecation/M -defection/SM -defectiveness/MS -defective/PYS -defect/MDSVG -defector/MS -defendant/SM -defended/U -defenestrate/GSD -defenselessness/MS -defenseless/PY -defenses/U -defense/VGSDM -defensibility/M -defensible/I -defensibly/I -defensiveness/MS -defensive/PSY -deference/MS -deferential/Y -deferent/S -deferrable -deferral/SM -deferred -deferrer/MS -deferring -deffer -defiance/MS -defiant/Y -defibrillator/M -deficiency/MS -deficient/SY -deficit/MS -defier/M -defile/L -defilement/MS -definable/UI -definably/I -define/AGDRS -defined/U -definer/SM -definite/IPY -definiteness/IMS -definitional -definition/ASM -definitiveness/M -definitive/SYP -defis -deflate/XNGRSDB -deflationary -deflation/M -deflect/DSGV -deflected/U -deflection/MS -deflector/MS -defocus -defocussing -Defoe/M -defog -defogger/S -defoliant/SM -defoliator/SM -deformational -deform/B -deformed/U -deformity/SM -defrauder/M -defraud/ZGDR -defrayal/SM -defroster/M -defrost/RZ -deftness/MS -deft/TYRP -defunct/S -defying/Y -defy/RDG -def/Z -deg -Degas/M -degassing -degauss/GD -degeneracy/MS -degenerateness/M -degenerate/PY -degrade/B -degradedness/M -degraded/YP -degrading/Y -degrease -degree/SM -degum -Dehlia/M -dehumanize -dehydrator/MS -deicer/M -deice/ZR -deictic -Deidre/M -deification/M -deify/SDXGN -deign/DGS -Deimos/M -Deina/M -Deirdre/MS -deistic -deist/SM -Deity/M -deity/SM -deja -deject/DSG -dejectedness/M -dejected/PY -dejection/SM -Dejesus/M -DeKalb/M -DeKastere/M -Delacroix/M -Delacruz/M -Delainey/M -Dela/M -Delaney/M -Delano/M -Delawarean/SM -Delaware/MS -delay/D -delayer/G -Delbert/M -Delcina/M -Delcine/M -delectableness/M -delectable/SP -delectably -delectation/MS -delegable -Deleon/M -deleted/U -deleteriousness/M -deleterious/PY -delete/XBRSDNG -deletion/M -delfs -Delft/M -delft/MS -delftware/S -Delgado/M -Delhi/M -Delia/M -deliberateness/SM -deliberate/PVY -deliberativeness/M -deliberative/PY -Delibes/M -delicacy/IMS -delicate/IYP -delicatenesses -delicateness/IM -delicates -delicatessen/MS -deliciousness/MS -delicious/YSP -delicti -delightedness/M -delighted/YP -delightfulness/M -delightful/YP -Delilah/M -Delilahs -Delila/M -Delinda/M -delineate/SDXVNG -delineation/M -delinquency/MS -delinquent/SYM -deliquesce/GSD -deliquescent -deliriousness/MS -delirious/PY -delirium/SM -deli/SM -Delius/M -deliverables -deliverable/U -deliver/AGSD -deliverance/SM -delivered/U -deliverer/SM -delivery/AM -deliverymen/M -Della/M -Dell/M -dell/SM -Dellwood/M -Delly/M -Delmar/M -Delmarva/M -Delmer/M -Delmonico -Delmore/M -Delmor/M -Del/MY -Delora/M -Delores/M -Deloria/M -Deloris/M -Delphic -Delphi/M -Delphine/M -Delphinia/M -delphinium/SM -Delphinus/M -Delta/M -delta/MS -deltoid/SM -deluder/M -delude/RSDG -deluding/Y -deluge/SDG -delusional -delusion/SM -delusiveness/M -delusive/PY -deluxe -delve/GZSRD -delver/M -demagnify/N -demagogic -demagogue/GSDM -demagoguery/SM -demagogy/MS -demander/M -demand/GSRD -demandingly -demanding/U -demarcate/SDNGX -demarcation/M -Demavend/M -demean/GDS -demeanor/SM -dementedness/M -demented/YP -dementia/MS -Demerol/M -demesne/SM -Demeter/M -Demetra/M -Demetre/M -Demetria/M -Demetri/MS -Demetrius/M -demigod/MS -demijohn/MS -demimondaine/SM -demimonde/SM -demineralization/SM -Deming/M -demise/DMG -demit -demitasse/MS -demitted -demitting -Dem/MG -democracy/MS -Democratic -democratically/U -democratic/U -democratization/MS -democratize/DRSG -democratizes/U -Democrat/MS -democrat/SM -Democritus/M -d�mod� -demo/DMPG -demographer/MS -demographical/Y -demographic/S -demography/MS -demolisher/M -demolish/GSRD -demolition/MS -demonetization/S -demoniacal/Y -demoniac/S -demonic -demonology/M -demon/SM -demonstrable/I -demonstrableness/M -demonstrably/I -demonstrate/XDSNGV -demonstration/M -demonstrativenesses -demonstrativeness/UM -demonstratives -demonstrative/YUP -demonstrator/MS -demoralization/M -demoralizer/M -demoralizing/Y -DeMorgan/M -Demosthenes/M -demote/DGX -demotic/S -Demott/M -demount/B -Dempsey/M -demulcent/S -demultiplex -demureness/SM -demure/YP -demurral/MS -demurred -demurrer/MS -demurring -demur/RTS -demythologization/M -demythologize/R -den -Dena/M -dendrite/MS -Deneb/M -Denebola/M -Deneen/M -Dene/M -Deng/M -dengue/MS -deniable/U -denial/SM -Denice/M -denier/M -denigrate/VNGXSD -denigration/M -denim/SM -Denise/M -Deni/SM -denizen/SMDG -Den/M -De/NM -Denmark/M -Denna/M -denned -Dennet/M -Denney/M -Dennie/M -Denni/MS -denning -Dennison/M -Denny/M -denominate/V -denominational/Y -denote/B -denouement/MS -denounce/LZRSDG -denouncement/SM -denouncer/M -dense/FR -densely -denseness/SM -densitometer/MS -densitometric -densitometry/M -density/MS -dens/RT -dental/YS -dentifrice/SM -dentine's -dentin/SM -dent/ISGD -dentistry/MS -dentist/SM -dentition/MS -dent's -denture/IMS -denuclearize/GSD -denudation/SM -denude/DG -denuder/M -denunciate/VNGSDX -denunciation/M -Denver/M -denying/Y -Deny/M -Denys -Denyse/M -deny/SRDZG -deodorant/SM -deodorization/SM -deodorize/GZSRD -deodorizer/M -Deon/M -Deonne/M -deoxyribonucleic -depart/L -departmentalization/SM -departmentalize/DSG -departmental/Y -department/MS -departure/MS -dependability/MS -dependableness/M -dependable/P -dependably -Dependant/MS -depend/B -dependence/ISM -dependency/MS -dependent/IYS -dependent's -depicted/U -depicter/M -depiction/SM -depict/RDSG -depilatory/S -deplete/VGNSDX -depletion/M -deplorableness/M -deplorable/P -deplorably -deplorer/M -deplore/SRDBG -deploring/Y -deployable -deploy/AGDLS -deployment/SAM -depolarize -deponent/S -deportation/MS -deportee/SM -deport/LG -deportment/MS -depose -deposit/ADGS -depositary/M -deposition/A -depositor/SAM -depository/MS -depravedness/M -depraved/PY -deprave/GSRD -depraver/M -depravity/SM -deprecate/XSDNG -deprecating/Y -deprecation/M -deprecatory -depreciable -depreciate/XDSNGV -depreciating/Y -depreciation/M -depreciative/Y -depressant/S -depressible -depression/MS -depressive/YS -depressor/MS -depress/V -deprive/GSD -depth/M -depths -Dept/M -deputation/SM -depute/SDG -deputize/DSG -deputy/MS -dequeue -derail/L -d�railleur/MS -derailment/MS -derange/L -derangement/MS -Derbyshire/M -derby/SM -Derby/SM -dereference/Z -Derek/M -dereliction/SM -derelict/S -Derick/M -deride/D -deriding/Y -derision/SM -derisiveness/MS -derisive/PY -derisory -derivable/U -derivate/XNV -derivation/M -derivativeness/M -derivative/SPYM -derive/B -derived/U -Derk/M -Der/M -dermal -dermatitides -dermatitis/MS -dermatological -dermatologist/MS -dermatology/MS -dermis/SM -Dermot/M -derogate/XDSNGV -derogation/M -derogatorily -derogatory -Derrek/M -Derrick/M -derrick/SMDG -Derrida/M -derri�re/S -Derrik/M -Derril/M -derringer/SM -Derron/M -Derry/M -dervish/SM -Derward/M -Derwin/M -Des -desalinate/NGSDX -desalination/M -desalinization/MS -desalinize/GSD -desalt/G -descant/M -Descartes/M -descendant/SM -descended/FU -descendent's -descender/M -descending/F -descends/F -descend/ZGSDR -descent -describable/I -describe/ZB -description/MS -descriptiveness/MS -descriptive/SYP -descriptor/SM -descry/SDG -Desdemona/M -desecrater/M -desecrate/SRDGNX -desecration/M -deserter/M -desertification -desertion/MS -desert/ZGMRDS -deservedness/M -deserved/YU -deserve/J -deserving/Y -d�shabill�'s -desiccant/S -desiccate/XNGSD -desiccation/M -desiccator/SM -desiderata -desideratum/M -designable -design/ADGS -designate/VNGSDX -designational -designation/M -designator/SM -designed/Y -designer/M -designing/U -Desi/M -desirabilia -desirability's -desirability/US -desirableness/SM -desirableness's/U -desirable/UPS -desirably/U -Desirae/M -desire/BR -desired/U -Desiree/M -desirer/M -Desiri/M -desirousness/M -desirous/PY -desist/DSG -desk/SM -desktop/S -Desmond/M -Desmund/M -desolateness/SM -desolate/PXDRSYNG -desolater/M -desolating/Y -desolation/M -desorption/M -despairer/M -despairing/Y -despair/SGDR -desperadoes -desperado/M -desperateness/SM -desperate/YNXP -desperation/M -despicable -despicably -despiser/M -despise/SRDG -despoil/L -despoilment/MS -despond -despondence/S -despondency/MS -despondent/Y -despotic -despotically -despotism/SM -dessert/SM -dessicate/DN -d'Estaing -destinate/NX -destination/M -destine/GSD -destiny/MS -destituteness/M -destitute/NXP -destitution/M -destroy/BZGDRS -destroyer/M -destructibility/SMI -destructible/I -destruction/SM -destructiveness/MS -destructive/YP -destructor/M -destruct/VGSD -desuetude/MS -desultorily -desultoriness/M -desultory/P -detachedness/M -detached/YP -detacher/M -detach/LSRDBG -detachment/SM -detailedness/M -detailed/YP -detainee/S -detainer/M -detain/LGRDS -detainment/MS -d'etat -detectability/U -detectable/U -detectably/U -detect/DBSVG -detected/U -detection/SM -detective/MS -detector/MS -d�tente -detentes -detention/SM -detergency/M -detergent/SM -deteriorate/XDSNGV -deterioration/M -determent/SM -determinability/M -determinable/IP -determinableness/IM -determinacy/I -determinant/MS -determinateness/IM -determinate/PYIN -determination/IM -determinativeness/M -determinative/P -determinedly -determinedness/M -determined/U -determine/GASD -determiner/SM -determinism/MS -determinism's/I -deterministically -deterministic/I -deterred/U -deterrence/SM -deterrent/SMY -deterring -detersive/S -deter/SL -deters/V -detestableness/M -detestable/P -detestably -detestation/SM -dethrone/L -dethronement/SM -detonable -detonated/U -detonate/XDSNGV -detonation/M -detonator/MS -detour/G -detoxification/M -detoxify/NXGSD -detox/SDG -detract/GVD -detractive/Y -d'etre -detribalize/GSD -detrimental/SY -detriment/SM -detritus/M -Detroit/M -deuced/Y -deuce/SDGM -deus -deuterium/MS -deuteron/M -Deuteronomy/M -Deutsch/M -Deva/M -Devanagari/M -Devan/M -devastate/XVNGSD -devastating/Y -devastation/M -devastator/SM -develop/ALZSGDR -developed/U -developer/MA -developmental/Y -development/ASM -deviance/MS -deviancy/S -deviant/YMS -deviated/U -deviate/XSDGN -deviating/U -deviation/M -devilishness/MS -devilish/PY -devilment/SM -devilry/MS -devil/SLMDG -deviltry/MS -Devi/M -Devina/M -Devin/M -Devinne/M -deviousness/SM -devious/YP -devise/JR -deviser/M -Devland/M -Devlen/M -Devlin/M -Dev/M -devoice -devolution/MS -devolve/GSD -Devondra/M -Devonian -Devon/M -Devonna/M -Devonne/M -Devonshire/M -Devora/M -devoted/Y -devotee/MS -devote/XN -devotional/YS -devotion/M -devourer/M -devour/SRDZG -devoutness/MS -devout/PRYT -Devy/M -Dewain/M -dewar -Dewar/M -Dewayne/M -dewberry/MS -dewclaw/SM -dewdrop/MS -Dewey/M -Dewie/M -dewiness/MS -Dewitt/M -dewlap/MS -Dew/M -dew/MDGS -dewy/TPR -Dexedrine/M -dexes/I -Dex/M -dexter -dexterity/MS -Dexter/M -dexterousness/MS -dexterous/PY -dextrose/SM -DH -Dhaka -Dhaulagiri/M -dhoti/SM -dhow/MS -DI -diabase/M -diabetes/M -diabetic/S -diabolic -diabolicalness/M -diabolical/YP -diabolism/M -diachronic/P -diacritical/YS -diacritic/MS -diadem/GMDS -diaereses -diaeresis/M -Diaghilev/M -diagnometer/SM -diagnosable/U -diagnose/BGDS -diagnosed/U -diagnosis/M -diagnostically -diagnostician/SM -diagnostic/MS -diagnostics/M -diagonalize/GDSB -diagonal/YS -diagrammable -diagrammatic -diagrammaticality -diagrammatically -diagrammed -diagrammer/SM -diagramming -diagram/MS -Diahann/M -dialectal/Y -dialectical/Y -dialectic/MS -dialect/MS -dialed/A -dialer/M -dialing/M -dial/MRDSGZJ -dialogged -dialogging -dialog/MS -dials/A -dialysis/M -dialyzed/U -dialyzes -diam -diamagnetic -diameter/MS -diametric -diametrical/Y -diamondback/SM -diamond/GSMD -Diana/M -Diandra/M -Diane/M -Dianemarie/M -Dian/M -Dianna/M -Dianne/M -Diann/M -Diannne/M -diapason/MS -diaper/SGDM -diaphanousness/M -diaphanous/YP -diaphragmatic -diaphragm/SM -diarist/SM -Diarmid/M -diarrheal -diarrhea/MS -diary/MS -diaspora -Diaspora/SM -diastase/SM -diastole/MS -diastolic -diathermy/SM -diathesis/M -diatomic -diatom/SM -diatonic -diatribe/MS -Diaz's -dibble/SDMG -dibs -DiCaprio/M -dice/GDRS -dicer/M -dicey -dichloride/M -dichotomization/M -dichotomize/DSG -dichotomous/PY -dichotomy/SM -dicier -diciest -dicing/M -Dickensian/S -dickens/M -Dickens/M -dicker/DG -Dickerson/M -dickey/SM -dick/GZXRDMS! -Dickie/M -dickier -dickiest -Dickinson/M -Dickson/M -Dick/XM -Dicky/M -dicky's -dicotyledonous -dicotyledon/SM -dicta/M -Dictaphone/SM -dictate/SDNGX -dictation/M -dictatorialness/M -dictatorial/YP -dictator/MS -dictatorship/SM -dictionary/SM -diction/MS -dictum/M -didactically -didactic/S -didactics/M -did/AU -diddler/M -diddle/ZGRSD -Diderot/M -Didi/M -didn't -didoes -dido/M -Dido/M -didst -die/DS -Diefenbaker/M -Diego/M -dieing -dielectric/MS -diem -Diem/M -Diena/M -Dierdre/M -diereses -dieresis/M -diesel/GMDS -Diesel's -dies's -dies/U -dietary/S -dieter/M -Dieter/M -dietetic/S -dietetics/M -diethylaminoethyl -diethylstilbestrol/M -dietitian/MS -diet/RDGZSM -Dietrich/M -Dietz/M -difference/DSGM -difference's/I -differences/I -differentiability -differentiable -differential/SMY -differentiated/U -differentiate/XSDNG -differentiation/M -differentiator/SM -differentness -different/YI -differ/SZGRD -difficile -difficult/Y -difficulty/SM -diffidence/MS -diffident/Y -diffract/GSD -diffraction/SM -diffractometer/SM -diffuseness/MS -diffuse/PRSDZYVXNG -diffuser/M -diffusible -diffusional -diffusion/M -diffusiveness/M -diffusive/YP -diffusivity/M -digerati -digested/IU -digester/M -digestibility/MS -digestible/I -digestifs -digestion/ISM -digestive/YSP -digest/RDVGS -digger/MS -digging/S -digitalis/M -digitalization/MS -digitalized -digitalizes -digitalizing -digital/SY -digitization/M -digitizer/M -digitize/ZGDRS -digit/SM -dignified/U -dignify/DSG -dignitary/SM -dignity/ISM -digram -digraph/M -digraphs -digress/GVDS -digression/SM -digressiveness/M -digressive/PY -dig/TS -dihedral -Dijkstra/M -Dijon/M -dike/DRSMG -diker/M -diktat/SM -Dilan/M -dilapidate/XGNSD -dilapidation/M -dilatation/SM -dilated/YP -dilate/XVNGSD -dilation/M -dilatoriness/M -dilator/SM -dilatory/P -Dilbert/M -dilemma/MS -dilettante/MS -dilettantish -dilettantism/MS -diligence/SM -diligentness/M -diligent/YP -dilithium -Dillard/M -Dillie/M -Dillinger/M -dilling/R -dillis -Dill/M -Dillon/M -dill/SGMD -dillydally/GSD -Dilly/M -dilly/SM -dilogarithm -diluent -diluted/U -diluteness/M -dilute/RSDPXYVNG -dilution/M -Di/M -DiMaggio/M -dimensionality/M -dimensional/Y -dimensionless -dimension/MDGS -dimer/M -dime/SM -dimethylglyoxime -dimethyl/M -diminished/U -diminish/SDGBJ -diminuendo/SM -diminution/SM -diminutiveness/M -diminutive/SYP -Dimitri/M -Dimitry/M -dimity/MS -dimmed/U -dimmer/MS -dimmest -dimming -dimness/SM -dimorphism/M -dimple/MGSD -dimply/RT -dim/RYPZS -dimwit/MS -dimwitted -Dinah/M -Dina/M -dinar/SM -diner/M -dine/S -dinette/MS -dingbat/MS -ding/GD -dinghy/SM -dingily -dinginess/SM -dingle/MS -dingoes -dingo/MS -dingus/SM -dingy/PRST -dinky/RST -din/MDRZGS -dinned -dinner/SM -dinnertime/S -dinnerware/MS -Dinnie/M -dinning -Dinny/M -Dino/M -dinosaur/MS -dint/SGMD -diocesan/S -diocese/SM -Diocletian/M -diode/SM -Diogenes/M -Dione/M -Dionisio/M -Dionis/M -Dion/M -Dionne/M -Dionysian -Dionysus/M -Diophantine/M -diopter/MS -diorama/SM -Dior/M -dioxalate -dioxide/MS -dioxin/S -diphtheria/SM -diphthong/SM -diplexers -diploid/S -diplomacy/SM -diploma/SMDG -diplomata -diplomatically -diplomatic/S -diplomatics/M -diplomatist/SM -diplomat/MS -dipodic -dipody/M -dipole/MS -dipped -Dipper/M -dipper/SM -dipping/S -dippy/TR -dip/S -dipsomaniac/MS -dipsomania/SM -dipstick/MS -dipterous -diptych/M -diptychs -Dir -Dirac/M -directed/IUA -directionality -directional/SY -direction/MIS -directions/A -directive/SM -directivity/M -directly/I -directness/ISM -director/AMS -directorate/SM -directorial -directorship/SM -directory/SM -direct/RDYPTSVG -directrix/MS -directs/IA -direful/Y -direness/M -dire/YTRP -dirge/GSDM -Dirichlet/M -dirigible/S -dirk/GDMS -Dirk/M -dirndl/MS -dirtily -dirtiness/SM -dirt/MS -dirty/GPRSDT -Dis -disable/LZGD -disablement/MS -disabler/M -disabuse -disadvantaged/P -disagreeable/S -disallow/D -disambiguate/DSGNX -disappointed/Y -disappointing/Y -disarming/Y -disarrange/L -disastrous/Y -disband/L -disbandment/SM -disbar/L -disbarment/MS -disbarring -disbelieving/Y -disbursal/S -disburse/GDRSL -disbursement/MS -disburser/M -discerner/M -discernibility -discernible/I -discernibly -discerning/Y -discernment/MS -discern/SDRGL -disc/GDM -discharged/U -disciple/DSMG -discipleship/SM -disciplinarian/SM -disciplinary -disciplined/U -discipline/IDM -discipliner/M -disciplines -disciplining -disclosed/U -discography/MS -discolored/MP -discoloreds/U -discolor/G -discombobulate/SDGNX -discomfit/DG -discomfiture/MS -disco/MG -discommode/DG -disconcerting/Y -disconnectedness/S -disconnected/P -disconnecter/M -disconnect/R -disconsolate/YN -discordance/SM -discordant/Y -discord/G -discorporate/D -discotheque/MS -discount/B -discourage/LGDR -discouragement/MS -discouraging/Y -discoverable/I -discover/ADGS -discovered/U -discoverer/S -discovery/SAM -discreetly/I -discreetness's/I -discreetness/SM -discreet/TRYP -discrepancy/SM -discrepant/Y -discreteness/SM -discrete/YPNX -discretionary -discretion/IMS -discretization -discretized -discriminable -discriminant/MS -discriminated/U -discriminate/SDVNGX -discriminating/YI -discrimination/MI -discriminator/MS -discriminatory -discursiveness/S -discussant/MS -discussed/UA -discusser/M -discussion/SM -discus/SM -disdainfulness/M -disdainful/YP -disdain/MGSD -disease/G -disembowelment/SM -disembowel/SLGD -disengage/L -disfigure/L -disfigurement/MS -disfranchise/L -disfranchisement/MS -disgorge -disgrace/R -disgracer/M -disgruntle/DSLG -disgruntlement/MS -disguised/UY -disguise/R -disguiser/M -disgust -disgusted/Y -disgustful/Y -disgusting/Y -dishabille/SM -disharmonious -dishcloth/M -dishcloths -dishevel/LDGS -dishevelment/MS -dish/GD -dishonest -dishonored/U -dishpan/MS -dishrag/SM -dishtowel/SM -dishwasher/MS -dishwater/SM -disillusion/LGD -disillusionment/SM -disinfectant/MS -disinherit -disinterestedness/SM -disinterested/P -disinvest/L -disjoin -disjointedness/S -disjunctive/YS -disjunct/VS -disk/D -diskette/S -dislike/G -dislodge/LG -dislodgement/M -dismalness/M -dismal/PSTRY -dismantle/L -dismantlement/SM -dismay/D -dismayed/U -dismaying/Y -dis/MB -dismember/LG -dismemberment/MS -dismissive/Y -dismiss/RZ -Disneyland/M -Disney/M -disoblige/G -disorderedness/M -disordered/YP -disorderliness/M -disorderly/P -disorder/Y -disorganize -disorganized/U -disparagement/MS -disparager/M -disparage/RSDLG -disparaging/Y -disparateness/M -disparate/PSY -dispatch/Z -dispelled -dispelling -dispel/S -dispensable/I -dispensary/MS -dispensate/NX -dispensation/M -dispenser/M -dispense/ZGDRSB -dispersal/MS -dispersant/M -dispersed/Y -disperser/M -disperse/XDRSZLNGV -dispersible -dispersion/M -dispersiveness/M -dispersive/PY -dispirit/DSG -displace/L -display/AGDS -displayed/U -displeased/Y -displease/G -displeasure -disport -disposable/S -disposal/SM -dispose/IGSD -dispositional -disposition/ISM -disproportional -disproportionate/N -disproportionation/M -disprove/B -disputable/I -disputably/I -disputant/SM -disputation/SM -disputatious/Y -disputed/U -disputer/M -dispute/ZBGSRD -disquieting/Y -disquiet/M -disquisition/SM -Disraeli/M -disregardful -disrepair/M -disreputableness/M -disreputable/P -disrepute/M -disrespect -disrupted/U -disrupter/M -disrupt/GVDRS -disruption/MS -disruptive/YP -disruptor/M -dissatisfy -dissect/DG -dissed -dissembler/M -dissemble/ZGRSD -disseminate/XGNSD -dissemination/M -dissension/SM -dissenter/M -dissent/ZGSDR -dissertation/SM -disservice -disses -dissever -dissidence/SM -dissident/MS -dissimilar/S -dissing -dissipatedly -dissipatedness/M -dissipated/U -dissipater/M -dissipate/XRSDVNG -dissipation/M -dissociable/I -dissociate/DSXNGV -dissociated/U -dissociation/M -dissociative/Y -dissoluble/I -dissoluteness/SM -dissolute/PY -dissolve/ASDG -dissolved/U -dissonance/SM -dissonant/Y -dissuade/GDRS -dissuader/M -dissuasive -dist -distaff/SM -distal/Y -distance/DSMG -distantness/M -distant/YP -distaste -distemper -distend -distension -distention/SM -distillate/XNMS -distillation/M -distillery/MS -distincter -distinctest -distinction/MS -distinctiveness/MS -distinctive/YP -distinct/IYVP -distinctness/MSI -distinguishable/I -distinguishably/I -distinguish/BDRSG -distinguished/U -distinguisher/M -distort/BGDR -distorted/U -distorter/M -distortion/MS -distract/DG -distractedness/M -distracted/YP -distracting/Y -distrait -distraught/Y -distress -distressful -distressing/Y -distribute/ADXSVNGB -distributed/U -distributer -distributional -distribution/AM -distributiveness/M -distributive/SPY -distributivity -distributorship/M -distributor/SM -district/GSAD -district's -distrust/G -disturbance/SM -disturbed/U -disturber/M -disturbing/Y -disturb/ZGDRS -disulfide/M -disuse/M -disyllable/M -Dita/M -ditcher/M -ditch/MRSDG -dither/RDZSG -ditsy/TR -ditto/DMGS -ditty/SDGM -Ditzel/M -ditz/S -diuresis/M -diuretic/S -diurnal/SY -divalent/S -diva/MS -divan/SM -dived/M -divergence/SM -divergent/Y -diverge/SDG -diver/M -diverseness/MS -diverse/XYNP -diversification/M -diversifier/M -diversify/GSRDNX -diversionary -diversion/M -diversity/SM -divert/GSD -diverticulitis/SM -divertimento/M -dive/S -divestiture/MS -divest/LDGS -divestment/S -dividable -divide/AGDS -divided/U -dividend/MS -divider/MS -divination/SM -diviner/M -divine/RSDTZYG -divinity/MS -divisibility/IMS -divisible/I -divisional -division/SM -divisiveness/MS -divisive/PY -divisor/SM -divorc�e/MS -divorce/GSDLM -divorcement/MS -divot/MS -div/TZGJDRS -divulge/GSD -divvy/GSDM -Dixiecrat/MS -dixieland -Dixieland/MS -Dixie/M -Dix/M -Dixon/M -dizzily -dizziness/SM -dizzying/Y -dizzy/PGRSDT -DJ -Djakarta's -djellabah's -djellaba/S -d/JGVX -Djibouti/M -DMD -Dmitri/M -DMZ -DNA -Dnepropetrovsk/M -Dnepr's -Dnieper's -Dniester/M -Dniren/M -DOA -doable -DOB -Dobbin/M -dobbin/MS -Doberman -Dobro/M -docent/SM -docile/Y -docility/MS -docker/M -docket/GSMD -dock/GZSRDM -dockland/MS -dockside/M -dockworker/S -dockyard/SM -doc/MS -Doctor -doctoral -doctorate/SM -doctor/GSDM -Doctorow/M -doctrinaire/S -doctrinal/Y -doctrine/SM -docudrama/S -documentary/MS -documentation/MS -documented/U -document/RDMZGS -DOD -dodder/DGS -dodecahedra -dodecahedral -dodecahedron/M -Dode/M -dodge/GZSRD -Dodge/M -dodgem/S -dodger/M -Dodgson/M -Dodie/M -Dodi/M -Dodington/M -Dodoma/M -dodo/SM -Dodson/M -Dody/M -DOE -Doe/M -doe/MS -doer/MU -does/AU -doeskin/MS -doesn't -d'oeuvre -doff/SGD -dogcart/SM -dogcatcher/MS -dogeared -Doge/M -doge/SM -dogfight/GMS -dogfish/SM -dogfought -doggedness/SM -dogged/PY -doggerel/SM -dogging -doggone/RSDTG -doggy/SRMT -doghouse/SM -dogie/SM -doglegged -doglegging -dogleg/SM -dogma/MS -dogmatically/U -dogmatic/S -dogmatics/M -dogmatism/SM -dogmatist/SM -dogsbody/M -dog/SM -dogtooth/M -Dogtown/M -dogtrot/MS -dogtrotted -dogtrotting -dogwood/SM -dogy's -Doha/M -doh's -doily/SM -doing/MU -Dolby/SM -doldrum/S -doldrums/M -doled/F -dolefuller -dolefullest -dolefulness/MS -doleful/PY -Dole/M -dole/MGDS -doles/F -Dolf/M -doling/F -dollar/SM -Dolley/M -Dollie/M -Dolli/M -Doll/M -doll/MDGS -dollop/GSMD -Dolly/M -dolly/SDMG -dolmen/MS -dolomite/SM -dolomitic -Dolores/M -Dolorita/SM -dolorous/Y -dolor/SM -dolphin/SM -Dolph/M -doltishness/SM -doltish/YP -dolt/MS -domain/MS -dome/DSMG -Domenic/M -Domenico/M -Domeniga/M -Domesday/M -domestically -domesticate/DSXGN -domesticated/U -domestication/M -domesticity/MS -domestic/S -domicile/SDMG -domiciliary -dominance/MS -dominant/YS -dominate/VNGXSD -domination/M -dominator/M -dominatrices -dominatrix -domineer/DSG -domineeringness/M -domineering/YP -Dominga/M -Domingo/M -Dominguez/M -Dominica/M -Dominican/MS -Dominick/M -Dominic/M -Dominik/M -Domini/M -dominion/MS -Dominique/M -dominoes -domino/M -Domitian/M -Dom/M -Donahue/M -Donald/M -Donaldson/M -Donall/M -Donal/M -Donalt/M -Dona/M -dona/MS -Donatello/M -donate/XVGNSD -donation/M -donative/M -Donaugh/M -Donavon/M -done/AUF -Donella/M -Donelle/M -Donetsk/M -Donetta/M -dong/GDMS -dongle/S -Donia/M -Donica/M -Donielle/M -Donizetti/M -donkey/MS -Donna/M -Donnamarie/M -donned -Donnell/M -Donnelly/M -Donne/M -Donner/M -Donnie/M -Donni/M -donning -donnishness/M -donnish/YP -Donn/RM -donnybrook/MS -Donny/M -donor/MS -Donovan/M -don/S -Don/SM -don't -donut/MS -donutted -donutting -doodad/MS -doodlebug/MS -doodler/M -doodle/SRDZG -doohickey/MS -Dooley/M -Doolittle/M -doom/MDGS -doomsday/SM -Doonesbury/M -doorbell/SM -door/GDMS -doorhandles -doorkeeper/M -doorkeep/RZ -doorknob/SM -doorman/M -doormat/SM -doormen -doornail/M -doorplate/SM -doors/I -doorstep/MS -doorstepped -doorstepping -doorstop/MS -doorway/MS -dooryard/SM -dopamine -dopant/M -dopa/SM -dope/DRSMZG -doper/M -dopey -dopier -dopiest -dopiness/S -Doppler/M -Dorado/M -Doralia/M -Doralin/M -Doralyn/M -Doralynne/M -Doralynn/M -Dora/M -Dorcas -Dorchester/M -Doreen/M -Dorelia/M -Dorella/M -Dorelle/M -Dor�/M -Dorena/M -Dorene/M -Doretta/M -Dorette/M -Dorey/M -Doria/M -Dorian/M -Doric -Dorice/M -Dorie/M -Dori/MS -Dorine/M -Dorisa/M -Dorise/M -Dorita/M -dork/S -dorky/RT -dormancy/MS -dormant/S -dormer/M -dormice -dormitory/SM -dorm/MRZS -dormouse/M -Dorolice/M -Dorolisa/M -Doro/M -Dorotea/M -Doroteya/M -Dorothea/M -Dorothee/M -Dorothy/M -Dorree/M -Dorrie/M -Dorri/SM -Dorry/M -dorsal/YS -Dorsey/M -Dorthea/M -Dorthy/M -Dortmund/M -Dory/M -dory/SM -DOS -dosage/SM -dose/M -dos/GDS -Dosi/M -dosimeter/MS -dosimetry/M -dossier/MS -dost -Dostoevsky/M -DOT -dotage/SM -dotard/MS -doter/M -dote/S -Doti/M -doting/Y -Dot/M -dot/MDRSJZG -Dotson/M -dotted -Dottie/M -Dotti/M -dottiness/M -dotting -Dotty/M -dotty/PRT -do/TZRHGJ -Douala/M -Douay/M -Doubleday/M -doubled/UA -double/GPSRDZ -doubleheader/MS -doubleness/M -doubler/M -doubles/M -doublespeak/S -doublethink/M -doublet/MS -doubleton/M -doubling/A -doubloon/MS -doubly -doubt/AGSDMB -doubted/U -doubter/SM -doubtfulness/SM -doubtful/YP -doubting/Y -doubtlessness/M -doubtless/YP -douche/GSDM -Dougherty/M -dough/M -doughs -doughty/RT -doughy/RT -Dougie/M -Douglas/M -Douglass -Doug/M -Dougy/M -dourness/MS -Douro/M -dour/TYRP -douser/M -douse/SRDG -dovecote/MS -Dover/M -dove/RSM -dovetail/GSDM -dovish -Dov/MR -dowager/SM -dowdily -dowdiness/MS -dowdy/TPSR -dowel/GMDS -dower/GDMS -Dow/M -downbeat/SM -downcast/S -downdraft/M -downer/M -Downey/M -downfall/NMS -downgrade/GSD -down/GZSRD -downheartedness/MS -downhearted/PY -downhill/RS -downland -download/DGS -downpipes -downplay/GDS -downpour/MS -downrange -downrightness/M -downright/YP -downriver -Downs -downscale/GSD -downside/S -downsize/DSG -downslope -downspout/SM -downstage/S -downstairs -downstate/SR -downstream -downswing/MS -downtime/SM -downtowner/M -downtown/MRS -downtrend/M -downtrodden -downturn/MS -downwardness/M -downward/YPS -downwind -downy/RT -dowry/SM -dowse/GZSRD -dowser/M -doxology/MS -doyenne/SM -doyen/SM -Doyle/M -Doy/M -doze -dozen/GHD -dozenths -dozer/M -doz/XGNDRS -dozy -DP -DPs -dpt -DPT -drabbed -drabber -drabbest -drabbing -drabness/MS -drab/YSP -drachma/MS -Draco/M -draconian -Draconian -Dracula/M -draft/AMDGS -draftee/SM -drafter/MS -draftily -draftiness/SM -drafting/S -draftsman/M -draftsmanship/SM -draftsmen -draftsperson -draftswoman -draftswomen -drafty/PTR -dragged -dragger/M -dragging/Y -draggy/RT -drag/MS -dragnet/MS -dragonfly/SM -dragonhead/M -dragon/SM -dragoon/DMGS -drainage/MS -drainboard/SM -drained/U -drainer/M -drainpipe/MS -drain/SZGRDM -Drake/M -drake/SM -Dramamine/MS -drama/SM -dramatically/U -dramatical/Y -dramatic/S -dramatics/M -dramatist/MS -dramatization/MS -dramatized/U -dramatizer/M -dramatize/SRDZG -dramaturgy/M -Drambuie/M -drammed -dramming -dram/MS -drank -Drano/M -draper/M -drapery/MS -drape/SRDGZ -drastic -drastically -drat/S -dratted -dratting -Dravidian/M -drawable -draw/ASG -drawback/MS -drawbridge/SM -drawer/SM -drawing/SM -drawler/M -drawling/Y -drawl/RDSG -drawly -drawn/AI -drawnly -drawnness -drawstring/MS -dray/SMDG -dreadfulness/SM -dreadful/YPS -dreadlocks -dreadnought/SM -dread/SRDG -dreamboat/SM -dreamed/U -dreamer/M -dreamily -dreaminess/SM -dreaming/Y -dreamland/SM -dreamlessness/M -dreamless/PY -dreamlike -dream/SMRDZG -dreamworld/S -dreamy/PTR -drearily -dreariness/SM -drear/S -dreary/TRSP -Dreddy/M -dredge/MZGSRD -dredger/M -Dredi/M -dreg/MS -Dreiser/M -Dre/M -drencher/M -drench/GDRS -Dresden/M -dress/ADRSG -dressage/MS -dressed/U -dresser/MS -dresser's/A -dresses/U -dressiness/SM -dressing/MS -dressmaker/MS -dressmaking/SM -dressy/PTR -drew/A -Drew/M -Drexel/M -Dreyfus/M -Dreyfuss -dribble/DRSGZ -dribbler/M -driblet/SM -drib/SM -dried/U -drier/M -drifter/M -drifting/Y -drift/RDZSG -driftwood/SM -driller/M -drilling/M -drillmaster/SM -drill/MRDZGS -drinkable/S -drink/BRSZG -drinker/M -dripped -dripping/MS -drippy/RT -drip/SM -driveler/M -drivel/GZDRS -driven/P -driver/M -drive/SRBGZJ -driveway/MS -drizzle/DSGM -drizzling/Y -drizzly/TR -Dr/M -drogue/MS -drollery/SM -drollness/MS -droll/RDSPTG -drolly -dromedary/MS -Drona/M -drone/SRDGM -droning/Y -drool/GSRD -droopiness/MS -drooping/Y -droop/SGD -droopy/PRT -drophead -dropkick/S -droplet/SM -dropout/MS -dropped -dropper/SM -dropping/MS -dropsical -drop/SM -dropsy/MS -drosophila/M -dross/SM -drought/SM -drover/M -drove/SRDGZ -drowner/M -drown/RDSJG -drowse/SDG -drowsily -drowsiness/SM -drowsy/PTR -drubbed -drubber/MS -drubbing/SM -drub/S -Drucie/M -Drucill/M -Druci/M -Drucy/M -drudge/MGSRD -drudger/M -drudgery/SM -drudging/Y -Drud/M -drugged -druggie/SRT -drugging -druggist/SM -Drugi/M -drugless -drug/SM -drugstore/SM -druidism/MS -druid/MS -Druid's -Dru/M -drumbeat/SGM -drumhead/M -drumlin/MS -drummed -drummer/SM -drumming -Drummond/M -drum/SM -drumstick/SM -drunkard/SM -drunkenness/SM -drunken/YP -drunk/SRNYMT -drupe/SM -Drury/M -Drusie/M -Drusilla/M -Drusi/M -Drusy/M -druthers -dryad/MS -Dryden/M -dryer/MS -dry/GYDRSTZ -dryish -dryness/SM -drys -drystone -drywall/GSD -D's -d's/A -Dshubba/M -DST -DTP -dualism/MS -dualistic -dualist/M -duality/MS -dual/YS -Duane/M -Dubai/M -dubbed -dubber/S -dubbing/M -dubbin/MS -Dubcek/M -Dubhe/M -dubiety/MS -dubiousness/SM -dubious/YP -Dublin/M -Dubrovnik/M -dub/S -Dubuque/M -ducal -ducat/SM -duce/CAIKF -duce's -Duchamp/M -duchess/MS -duchy/SM -duckbill/SM -ducker/M -duck/GSRDM -duckling/SM -duckpins -duckpond -duckweed/MS -ducky/RSMT -ducted/CFI -ductile/I -ductility/SM -ducting/F -duct/KMSF -ductless -duct's/A -ducts/CI -ductwork/M -dudder -dude/MS -dudgeon/SM -dud/GMDS -Dudley/M -Dud/M -duelist/MS -duel/MRDGZSJ -dueness/M -duenna/MS -due/PMS -duet/MS -duetted -duetting -duffel/M -duffer/M -duff/GZSRDM -Duffie/M -Duff/M -Duffy/M -Dugald/M -dugout/SM -dug/S -duh -DUI -Duisburg/M -dukedom/SM -duke/DSMG -Duke/M -Dukey/M -Dukie/M -Duky/M -Dulcea/M -Dulce/M -dulcet/SY -Dulcia/M -Dulciana/M -Dulcie/M -dulcify -Dulci/M -dulcimer/MS -Dulcinea/M -Dulcine/M -Dulcy/M -dullard/MS -Dulles/M -dullness/MS -dull/SRDPGT -dully -dulness's -Dulsea/M -Duluth/M -duly/U -Du/M -Dumas -dumbbell/MS -dumbfound/GSDR -dumbness/MS -Dumbo/M -dumb/PSGTYRD -dumbstruck -dumbwaiter/SM -dumdum/MS -dummy/SDMG -Dumont/M -dumper/UM -dumpiness/MS -dumpling/MS -dump/SGZRD -dumpster/S -Dumpster/S -Dumpty/M -dumpy/PRST -Dunant/M -Dunbar/M -Duncan/M -dunce/MS -Dunc/M -Dundee/M -dunderhead/MS -Dunedin/M -dune/SM -dungaree/SM -dungeon/GSMD -dunghill/MS -dung/SGDM -Dunham/M -dunker/M -dunk/GSRD -Dunkirk/M -Dunlap/M -Dun/M -dunned -Dunne/M -dunner -dunnest -dunning -Dunn/M -dunno/M -dun/S -Dunstan/M -duodecimal/S -duodena -duodenal -duodenum/M -duologue/M -duo/MS -duopolist -duopoly/M -dupe/NGDRSMZ -duper/M -dupion/M -duple -duplexer/M -duplex/MSRDG -duplicability/M -duplicable -duplicate/ADSGNX -duplication/AM -duplicative -duplicator/MS -duplicitous -duplicity/SM -Dupont/MS -DuPont/MS -durability/MS -durableness/M -durable/PS -durably -Duracell/M -durance/SM -Durand/M -Duran/M -Durante/M -Durant/M -durational -duration/MS -Durban/M -D�rer/M -duress/SM -Durex/M -Durham/MS -during -Durkee/M -Durkheim/M -Dur/M -Durocher/M -durst -durum/MS -Durward/M -Duse/M -Dusenberg/M -Dusenbury/M -Dushanbe/M -dusk/GDMS -duskiness/MS -dusky/RPT -D�sseldorf -dustbin/MS -dustcart/M -dustcover -duster/M -dustily -dustiness/MS -dusting/M -Dustin/M -dustless -dustman/M -dustmen -dust/MRDGZS -dustpan/SM -Dusty/M -dusty/RPT -Dutch/M -Dutchman/M -Dutchmen -dutch/MS -Dutchwoman -Dutchwomen -duteous/Y -dutiable -dutifulness/S -dutiful/UPY -duty/SM -Duvalier/M -duvet/SM -duxes -Dvina/M -Dvor�k/M -Dwain/M -dwarfish -dwarfism/MS -dwarf/MTGSPRD -Dwayne/M -dweeb/S -dweller/SM -dwell/IGS -dwelling/MS -dwelt/I -DWI -Dwight/M -dwindle/GSD -dyadic -dyad/MS -Dyana/M -Dyane/M -Dyan/M -Dyanna/M -Dyanne/M -Dyann/M -dybbukim -dybbuk/SM -dyed/A -dyeing/M -dye/JDRSMZG -dyer/M -Dyer/M -dyes/A -dyestuff/SM -dying/UA -Dyke/M -dyke's -Dylan/M -Dy/M -Dynah/M -Dyna/M -dynamical/Y -dynamic/S -dynamics/M -dynamism/SM -dynamiter/M -dynamite/RSDZMG -dynamized -dynamo/MS -dynastic -dynasty/MS -dyne/M -dysentery/SM -dysfunctional -dysfunction/MS -dyslectic/S -dyslexia/MS -dyslexically -dyslexic/S -dyspepsia/MS -dyspeptic/S -dysprosium/MS -dystopia/M -dystrophy/M -dz -Dzerzhinsky/M -E -ea -each -Eachelle/M -Eada/M -Eadie/M -Eadith/M -Eadmund/M -eagerness/MS -eager/TSPRYM -eagle/SDGM -eaglet/SM -Eakins/M -Ealasaid/M -Eal/M -Eamon/M -earache/SM -eardrum/SM -earful/MS -ear/GSMDYH -Earhart/M -earing/M -earldom/MS -Earle/M -Earlene/M -Earlie/M -Earline/M -earliness/SM -Earl/M -earl/MS -earlobe/S -Early/M -early/PRST -earmark/DGSJ -earmuff/SM -earned/U -earner/M -Earnestine/M -Earnest/M -earnestness/MS -earnest/PYS -earn/GRDZTSJ -earning/M -earphone/MS -earpieces -earplug/MS -Earp/M -earring/MS -earshot/MS -earsplitting -Eartha/M -earthbound -earthed/U -earthenware/MS -earthiness/SM -earthliness/M -earthling/MS -earthly/TPR -earth/MDNYG -earthmen -earthmover/M -earthmoving -earthquake/SDGM -earthshaking -earths/U -earthward/S -earthwork/MS -earthworm/MS -earthy/PTR -Earvin/M -earwax/MS -earwigged -earwigging -earwig/MS -eased/E -ease/LDRSMG -easel/MS -easement/MS -easer/M -ease's/EU -eases/UE -easies -easily/U -easiness/MSU -easing/M -eastbound -easterly/S -Easter/M -easterner/M -Easterner/M -easternmost -Eastern/RZ -eastern/ZR -easter/Y -east/GSMR -Easthampton/M -easting/M -Eastland/M -Eastman/M -eastward/S -Eastwick/M -Eastwood/M -East/ZSMR -easygoingness/M -easygoing/P -easy/PUTR -eatables -eatable/U -eaten/U -eater/M -eatery/MS -eating/M -Eaton/M -eat/SJZGNRB -eavesdropped -eavesdropper/MS -eavesdropping -eavesdrop/S -eave/SM -Eba/M -Ebba/M -ebb/DSG -EBCDIC -Ebeneezer/M -Ebeneser/M -Ebenezer/M -Eben/M -Eberhard/M -Eberto/M -Eb/MN -Ebola -Ebonee/M -Ebonics -Ebony/M -ebony/SM -Ebro/M -ebullience/SM -ebullient/Y -ebullition/SM -EC -eccentrically -eccentricity/SM -eccentric/MS -eccl -Eccles -Ecclesiastes/M -ecclesiastical/Y -ecclesiastic/MS -ECG -echelon/SGDM -echinoderm/SM -echo/DMG -echoed/A -echoes/A -echoic -echolocation/SM -�clair/MS -�clat/MS -eclectically -eclecticism/MS -eclectic/S -eclipse/MGSD -ecliptic/MS -eclogue/MS -ecocide/SM -ecol -Ecole/M -ecologic -ecological/Y -ecologist/MS -ecology/MS -Eco/M -econ -Econometrica/M -econometricians -econometric/S -econometrics/M -economical/YU -economic/S -economics/M -economist/MS -economization -economize/GZSRD -economizer/M -economizing/U -economy/MS -ecosystem/MS -ecru/SM -ecstasy/MS -Ecstasy/S -ecstatically -ecstatic/S -ectoplasm/M -Ecuadoran/S -Ecuadorean/S -Ecuadorian/S -Ecuador/M -ecumenical/Y -ecumenicism/SM -ecumenicist/MS -ecumenic/MS -ecumenics/M -ecumenism/SM -ecumenist/MS -eczema/MS -Eda/M -Edam/SM -Edan/M -ed/ASC -Edda/M -Eddie/M -Eddi/M -Edd/M -Eddy/M -eddy/SDMG -Edee/M -Edeline/M -edelweiss/MS -Ede/M -edema/SM -edematous -eden -Eden/M -Edgard/M -Edgardo/M -Edgar/M -edge/DRSMZGJ -edgeless -edger/M -Edgerton/M -Edgewater/M -edgewise -Edgewood/M -edgily -edginess/MS -edging/M -edgy/TRP -edibility/MS -edibleness/SM -edible/SP -edict/SM -Edie/M -edification/M -edifice/SM -edifier/M -edifying/U -edify/ZNXGRSD -Edik/M -Edi/MH -Edinburgh/M -Edin/M -Edison/M -editable -Edita/M -edited/IU -Editha/M -Edithe/M -Edith/M -edition/SM -editorialist/M -editorialize/DRSG -editorializer/M -editorial/YS -editor/MS -editorship/MS -edit/SADG -Ediva/M -Edlin/M -Edmond/M -Edmon/M -Edmonton/M -Edmund/M -Edna/M -Edouard/M -EDP -eds -Edsel/M -Edsger/M -EDT -Eduard/M -Eduardo/M -educability/SM -educable/S -educated/YP -educate/XASDGN -educationalists -educational/Y -education/AM -educationists -educative -educator/MS -educ/DBG -educe/S -eduction/M -Eduino/M -edutainment/S -Edvard/M -Edwardian -Edwardo/M -Edward/SM -Edwina/M -Edwin/M -Ed/XMN -Edy/M -Edythe/M -Edyth/M -EEC -EEG -eek/S -eelgrass/M -eel/MS -e'en -EEO -EEOC -e'er -eerie/RT -eerily -eeriness/MS -Eeyore/M -effaceable/I -effacement/MS -effacer/M -efface/SRDLG -effectiveness/ISM -effectives -effective/YIP -effector/MS -effect/SMDGV -effectual/IYP -effectualness/MI -effectuate/SDGN -effectuation/M -effeminacy/MS -effeminate/SY -effendi/MS -efferent/SY -effervesce/GSD -effervescence/SM -effervescent/Y -effeteness/SM -effete/YP -efficacious/IPY -efficaciousness/MI -efficacy/IMS -efficiency/MIS -efficient/ISY -Effie/M -effigy/SM -effloresce -efflorescence/SM -efflorescent -effluence/SM -effluent/MS -effluvia -effluvium/M -effluxion -efflux/M -effortlessness/SM -effortless/PY -effort/MS -effrontery/MS -effulgence/SM -effulgent -effuse/XSDVGN -effusion/M -effusiveness/MS -effusive/YP -EFL -e/FMDS -Efrain/M -Efrem/M -Efren/M -EFT -egad -egalitarian/I -egalitarianism/MS -egalitarians -EGA/M -Egan/M -Egbert/M -Egerton/M -eggbeater/SM -eggcup/MS -egger/M -egg/GMDRS -eggheaded/P -egghead/SDM -eggnog/SM -eggplant/MS -eggshell/SM -egis's -eglantine/MS -egocentrically -egocentricity/SM -egocentric/S -egoism/SM -egoistic -egoistical/Y -egoist/SM -egomaniac/MS -egomania/MS -Egon/M -Egor/M -ego/SM -egotism/SM -egotistic -egotistical/Y -egotist/MS -egregiousness/MS -egregious/PY -egress/SDMG -egret/SM -Egyptian/S -Egypt/M -Egyptology/M -eh -Ehrlich/M -Eichmann/M -eiderdown/SM -eider/SM -eidetic -Eiffel/M -eigenfunction/MS -eigenstate/S -eigenvalue/SM -eigenvector/MS -eighteen/MHS -eighteenths -eightfold -eighth/MS -eighths -eightieths -eightpence -eight/SM -eighty/SHM -Eileen/M -Eilis/M -Eimile/M -Einsteinian -einsteinium/MS -Einstein/SM -Eire/M -Eirena/M -Eisenhower/M -Eisenstein/M -Eisner/M -eisteddfod/M -either -ejaculate/SDXNG -ejaculation/M -ejaculatory -ejecta -ejection/SM -ejector/SM -eject/VGSD -Ekaterina/M -Ekberg/M -eked/A -eke/DSG -EKG -Ekstrom/M -Ektachrome/M -elaborateness/SM -elaborate/SDYPVNGX -elaboration/M -elaborators -Elaina/M -Elaine/M -Elana/M -eland/SM -Elane/M -�lan/M -Elanor/M -elans -elapse/SDG -el/AS -elastically/I -elasticated -elasticity/SM -elasticize/GDS -elastic/S -elastodynamics -elastomer/M -elatedness/M -elated/PY -elater/M -elate/SRDXGN -elation/M -Elayne/M -Elba/MS -Elbe/M -Elberta/M -Elbertina/M -Elbertine/M -Elbert/M -elbow/GDMS -elbowroom/SM -Elbrus/M -Elden/M -elderberry/MS -elderflower -elderliness/M -elderly/PS -elder/SY -eldest -Eldin/M -Eldon/M -Eldorado's -Eldredge/M -Eldridge/M -Eleanora/M -Eleanore/M -Eleanor/M -Eleazar/M -electable/U -elect/ASGD -elected/U -electioneer/GSD -election/SAM -electiveness/M -elective/SPY -electoral/Y -electorate/SM -elector/SM -Electra/M -electress/M -electricalness/M -electrical/PY -electrician/SM -electricity/SM -electric/S -electrification/M -electrifier/M -electrify/ZXGNDRS -electrocardiogram/MS -electrocardiograph/M -electrocardiographs -electrocardiography/MS -electrochemical/Y -electrocute/GNXSD -electrocution/M -electrode/SM -electrodynamics/M -electrodynamic/YS -electroencephalogram/SM -electroencephalographic -electroencephalograph/M -electroencephalographs -electroencephalography/MS -electrologist/MS -electroluminescent -electrolysis/M -electrolyte/SM -electrolytic -electrolytically -electrolyze/SDG -electro/M -electromagnetic -electromagnetically -electromagnetism/SM -electromagnet/SM -electromechanical -electromechanics -electromotive -electromyograph -electromyographic -electromyographically -electromyography/M -electronegative -electronically -electronic/S -electronics/M -electron/MS -electrophoresis/M -electrophorus/M -electroplate/DSG -electroscope/MS -electroscopic -electroshock/GDMS -electrostatic/S -electrostatics/M -electrotherapist/M -electrotype/GSDZM -electroweak -eleemosynary -Eleen/M -elegance/ISM -elegant/YI -elegiacal -elegiac/S -elegy/SM -elem -elemental/YS -elementarily -elementariness/M -elementary/P -element/MS -Elena/M -Elene/M -Eleni/M -Elenore/M -Eleonora/M -Eleonore/M -elephantiases -elephantiasis/M -elephantine -elephant/SM -elevated/S -elevate/XDSNG -elevation/M -elevator/SM -eleven/HM -elevens/S -elevenths -elev/NX -Elfie/M -elfin/S -elfish -elf/M -Elfreda/M -Elfrida/M -Elfrieda/M -Elga/M -Elgar/M -Elianora/M -Elianore/M -Elia/SM -Elicia/M -elicitation/MS -elicit/GSD -elide/GSD -Elie/M -eligibility/ISM -eligible/SI -Elihu/M -Elijah/M -Eli/M -eliminate/XSDYVGN -elimination/M -eliminator/SM -Elinore/M -Elinor/M -Eliot/M -Elisabeth/M -Elisabet/M -Elisabetta/M -Elisa/M -Elise/M -Eliseo/M -Elisha/M -elision/SM -Elissa/M -Elita/M -elite/MPS -elitism/SM -elitist/SM -elixir/MS -Elizabethan/S -Elizabeth/M -Elizabet/M -Eliza/M -Elka/M -Elke/M -Elkhart/M -elk/MS -Elladine/M -Ella/M -Ellary/M -Elle/M -Ellene/M -Ellen/M -Ellerey/M -Ellery/M -Ellesmere/M -Ellette/M -Ellie/M -Ellington/M -Elliot/M -Elliott/M -ellipse/MS -ellipsis/M -ellipsoidal -ellipsoid/MS -ellipsometer/MS -ellipsometry -elliptic -elliptical/YS -ellipticity/M -Elli/SM -Ellison/M -Ellissa/M -ell/MS -Ellswerth/M -Ellsworth/M -Ellwood/M -Elly/M -Ellyn/M -Ellynn/M -Elma/M -Elmer/M -Elmhurst/M -Elmira/M -elm/MRS -Elmo/M -Elmore/M -Elmsford/M -El/MY -Elna/MH -Elnar/M -Elnath/M -Elnora/M -Elnore/M -elocutionary -elocutionist/MS -elocution/SM -elodea/S -Elohim/M -Eloisa/M -Eloise/M -elongate/NGXSD -elongation/M -Elonore/M -elopement/MS -eloper/M -elope/SRDLG -eloquence/SM -eloquent/IY -Elora/M -Eloy/M -Elroy/M -els -Elsa/M -Elsbeth/M -else/M -Else/M -Elset/M -elsewhere -Elsey/M -Elsie/M -Elsi/M -Elsinore/M -Elspeth/M -Elston/M -Elsworth/M -Elsy/M -Eltanin/M -Elton/M -eluate/SM -elucidate/SDVNGX -elucidation/M -elude/GSD -elusiveness/SM -elusive/YP -elute/DGN -elution/M -Elva/M -elven -Elvera/M -elver/SM -elves/M -Elvia/M -Elvina/M -Elvin/M -Elvira/M -elvish -Elvis/M -Elvyn/M -Elwin/M -Elwira/M -Elwood/M -Elwyn/M -Ely/M -Elyn/M -Elys�e/M -Elysees -Elyse/M -Elysha/M -Elysia/M -elysian -Elysian -Elysium/SM -Elyssa/M -EM -emaciate/NGXDS -emaciation/M -emacs/M -Emacs/M -email/SMDG -Emalee/M -Emalia/M -Ema/M -emanate/XSDVNG -emanation/M -emancipate/DSXGN -emancipation/M -emancipator/MS -Emanuele/M -Emanuel/M -emasculate/GNDSX -emasculation/M -embalmer/M -embalm/ZGRDS -embank/GLDS -embankment/MS -embarcadero -embargoes -embargo/GMD -embark/ADESG -embarkation/EMS -embarrassedly -embarrassed/U -embarrassing/Y -embarrassment/MS -embarrass/SDLG -embassy/MS -embattle/DSG -embeddable -embedded -embedder -embedding/MS -embed/S -embellished/U -embellisher/M -embellish/LGRSD -embellishment/MS -ember/MS -embezzle/LZGDRS -embezzlement/MS -embezzler/M -embitter/LGDS -embitterment/SM -emblazon/DLGS -emblazonment/SM -emblematic -emblem/GSMD -embodier/M -embodiment/ESM -embody/ESDGA -embolden/DSG -embolism/SM -embosom -embosser/M -emboss/ZGRSD -embouchure/SM -embower/GSD -embraceable -embracer/M -embrace/RSDVG -embracing/Y -embrasure/MS -embrittle -embrocation/SM -embroiderer/M -embroider/SGZDR -embroidery/MS -embroilment/MS -embroil/SLDG -embryologist/SM -embryology/MS -embryonic -embryo/SM -emceeing -emcee/SDM -Emelda/M -Emelen/M -Emelia/M -Emelina/M -Emeline/M -Emelita/M -Emelyne/M -emendation/MS -emend/SRDGB -emerald/SM -Emera/M -emerge/ADSG -emergence/MAS -emergency/SM -emergent/S -emerita -emeritae -emeriti -emeritus -Emerson/M -Emery/M -emery/MGSD -emetic/S -emf/S -emigrant/MS -emigrate/SDXNG -emigration/M -�migr�/S -Emilee/M -Emile/M -Emilia/M -Emilie/M -Emili/M -Emiline/M -Emilio/M -Emil/M -Emily/M -eminence/MS -Eminence/MS -eminent/Y -emirate/SM -emir/SM -emissary/SM -emission/AMS -emissivity/MS -emit/S -emittance/M -emitted -emitter/SM -emitting -Emlen/M -Emlyn/M -Emlynne/M -Emlynn/M -em/M -Em/M -Emmalee/M -Emmaline/M -Emmalyn/M -Emmalynne/M -Emmalynn/M -Emma/M -Emmanuel/M -Emmeline/M -Emmerich/M -Emmery/M -Emmet/M -Emmett/M -Emmey/M -Emmie/M -Emmi/M -Emmit/M -Emmott/M -Emmye/M -Emmy/SM -Emogene/M -emollient/S -emolument/SM -Emory/M -emote/SDVGNX -emotionalism/MS -emotionality/M -emotionalize/GDS -emotional/UY -emotionless -emotion/M -emotive/Y -empaneled -empaneling -empath -empathetic -empathetical/Y -empathic -empathize/SDG -empathy/MS -emperor/MS -emphases -emphasis/M -emphasize/ZGCRSDA -emphatically/U -emphatic/U -emphysema/SM -emphysematous -empire/MS -empirical/Y -empiricism/SM -empiricist/SM -empiric/SM -emplace/L -emplacement/MS -employability/UM -employable/US -employed/U -employee/SM -employer/SM -employ/LAGDS -employment/UMAS -emporium/MS -empower/GLSD -empowerment/MS -empress/MS -emptier/M -emptily -emptiness/SM -empty/GRSDPT -empyrean/SM -ems/C -EMT -emulate/SDVGNX -emulation/M -emulative/Y -emulator/MS -emulsification/M -emulsifier/M -emulsify/NZSRDXG -emulsion/SM -emu/SM -Emylee/M -Emyle/M -enabler/M -enable/SRDZG -enactment/ASM -enact/SGALD -enameler/M -enamelware/SM -enamel/ZGJMDRS -enamor/DSG -en/BM -enc -encamp/LSDG -encampment/MS -encapsulate/SDGNX -encapsulation/M -encase/GSDL -encasement/SM -encephalitic -encephalitides -encephalitis/M -encephalographic -encephalopathy/M -enchain/SGD -enchanter/MS -enchant/ESLDG -enchanting/Y -enchantment/MSE -enchantress/MS -enchilada/SM -encipherer/M -encipher/SRDG -encircle/GLDS -encirclement/SM -encl -enclave/MGDS -enclosed/U -enclose/GDS -enclosure/SM -encoder/M -encode/ZJGSRD -encomium/SM -encompass/GDS -encore/GSD -encounter/GSD -encouragement/SM -encourager/M -encourage/SRDGL -encouraging/Y -encroacher/M -encroach/LGRSD -encroachment/MS -encrustation/MS -encrust/DSG -encrypt/DGS -encrypted/U -encryption/SM -encumbered/U -encumber/SEDG -encumbrancer/M -encumbrance/SRM -ency -encyclical/SM -encyclopaedia's -encyclopedia/SM -encyclopedic -encyst/GSLD -encystment/MS -endanger/DGSL -endangerment/SM -endear/GSLD -endearing/Y -endearment/MS -endeavored/U -endeavorer/M -endeavor/GZSMRD -endemically -endemicity -endemic/S -ender/M -endgame/M -Endicott/M -ending/M -endive/SM -endlessness/MS -endless/PY -endmost -endnote/MS -endocrine/S -endocrinologist/SM -endocrinology/SM -endogamous -endogamy/M -endogenous/Y -endomorphism/SM -endorse/DRSZGL -endorsement/MS -endorser/M -endoscope/MS -endoscopic -endoscopy/SM -endosperm/M -endothelial -endothermic -endow/GSDL -endowment/SM -endpoint/MS -endue/SDG -endungeoned -endurable/U -endurably/U -endurance/SM -endure/BSDG -enduringness/M -enduring/YP -endways -Endymion/M -end/ZGVMDRSJ -ENE -enema/SM -enemy/SM -energetically -energetic/S -energetics/M -energized/U -energizer/M -energize/ZGDRS -energy/MS -enervate/XNGVDS -enervation/M -enfeeble/GLDS -enfeeblement/SM -enfilade/MGDS -enfold/SGD -enforceability/M -enforceable/U -enforced/Y -enforce/LDRSZG -enforcement/SM -enforcer/M -enforcible/U -enfranchise/ELDRSG -enfranchisement/EMS -enfranchiser/M -engage/ADSGE -engagement/SEM -engaging/Y -Engelbert/M -Engel/MS -engender/DGS -engineer/GSMDJ -engineering/MY -engine/MGSD -England/M -england/ZR -Englebert/M -Englewood/M -English/GDRSM -Englishman/M -Englishmen -Englishwoman/M -Englishwomen -Eng/M -engorge/LGDS -engorgement/MS -Engracia/M -engram/MS -engraver/M -engrave/ZGDRSJ -engraving/M -engrossed/Y -engrosser/M -engross/GLDRS -engrossing/Y -engrossment/SM -engulf/GDSL -engulfment/SM -enhanceable -enhance/LZGDRS -enhancement/MS -enhancer/M -enharmonic -Enid/M -Enif/M -enigma/MS -enigmatic -enigmatically -Eniwetok/M -enjambement's -enjambment/MS -enjoinder -enjoin/GSD -enjoyability -enjoyableness/M -enjoyable/P -enjoyably -enjoy/GBDSL -enjoyment/SM -Enkidu/M -enlargeable -enlarge/LDRSZG -enlargement/MS -enlarger/M -enlightened/U -enlighten/GDSL -enlightening/U -enlightenment/SM -enlistee/MS -enlister/M -enlistment/SAM -enlist/SAGDL -enliven/LDGS -enlivenment/SM -enmesh/DSLG -enmeshment/SM -enmity/MS -Ennis/M -ennoble/LDRSG -ennoblement/SM -ennobler/M -ennui/SM -Enoch/M -enormity/SM -enormousness/MS -enormous/YP -Enos -enough -enoughs -enplane/DSG -enqueue/DS -enquirer/S -enquiringly -enrage/SDG -enrapture/GSD -Enrica/M -enricher/M -Enrichetta/M -enrich/LDSRG -enrichment/SM -Enrico/M -Enrika/M -Enrique/M -Enriqueta/M -enrobed -enrollee/SM -enroll/LGSD -enrollment/SM -ens -ensconce/DSG -ensemble/MS -enshrine/DSLG -enshrinement/SM -enshroud/DGS -ensign/SM -ensilage/DSMG -enslavement/MS -enslaver/M -enslave/ZGLDSR -ensnare/GLDS -ensnarement/SM -Ensolite/M -ensue/SDG -ensurer/M -ensure/SRDZG -entailer/M -entailment/MS -entail/SDRLG -entangle/EGDRSL -entanglement/ESM -entangler/EM -entente/MS -enter/ASDG -entered/U -enterer/M -enteritides -enteritis/SM -enterprise/GMSR -Enterprise/M -enterpriser/M -enterprising/Y -entertainer/M -entertaining/Y -entertainment/SM -entertain/SGZRDL -enthalpy/SM -enthrall/GDSL -enthrallment/SM -enthrone/GDSL -enthronement/MS -enthuse/DSG -enthusiasm/SM -enthusiastically/U -enthusiastic/U -enthusiast/MS -enticement/SM -entice/SRDJLZG -enticing/Y -entire/SY -entirety/SM -entitle/GLDS -entitlement/MS -entity/SM -entomb/GDSL -entombment/MS -entomological -entomologist/S -entomology/MS -entourage/SM -entr'acte/S -entrails -entrainer/M -entrain/GSLDR -entrancement/MS -entrance/MGDSL -entranceway/M -entrancing/Y -entrant/MS -entrapment/SM -entrapped -entrapping -entrap/SL -entreating/Y -entreat/SGD -entreaty/SM -entr�e/S -entrench/LSDG -entrenchment/MS -entrepreneurial -entrepreneur/MS -entrepreneurship/M -entropic -entropy/MS -entrust/DSG -entry/ASM -entryway/SM -entwine/DSG -enumerable -enumerate/AN -enumerated/U -enumerates -enumerating -enumeration's/A -enumeration/SM -enumerative -enumerator/SM -enunciable -enunciated/U -enunciate/XGNSD -enunciation/M -enureses -enuresis/M -envelope/MS -enveloper/M -envelopment/MS -envelop/ZGLSDR -envenom/SDG -enviableness/M -enviable/U -enviably -envied/U -envier/M -enviousness/SM -envious/PY -environ/LGSD -environmentalism/SM -environmentalist/SM -environmental/Y -environment/MS -envisage/DSG -envision/GSD -envoy/SM -envying/Y -envy/SRDMG -enzymatic -enzymatically -enzyme/SM -enzymology/M -Eocene -EOE -eohippus/M -Eolanda/M -Eolande/M -eolian -eon/SM -EPA -epaulet/SM -�p�e/S -ephedrine/MS -ephemeral/SY -ephemera/MS -ephemerids -ephemeris/M -Ephesian/S -Ephesians/M -Ephesus/M -Ephraim/M -Ephrayim/M -Ephrem/M -epically -epicenter/SM -epic/SM -Epictetus/M -Epicurean -epicurean/S -epicure/SM -Epicurus/M -epicycle/MS -epicyclic -epicyclical/Y -epicycloid/M -epidemically -epidemic/MS -epidemiological/Y -epidemiologist/MS -epidemiology/MS -epidermal -epidermic -epidermis/MS -epidural -epigenetic -epiglottis/SM -epigrammatic -epigram/MS -epigrapher/M -epigraph/RM -epigraphs -epigraphy/MS -epilepsy/SM -epileptic/S -epilogue/SDMG -Epimethius/M -epinephrine/SM -epiphany/SM -Epiphany/SM -epiphenomena -episcopacy/MS -episcopalian -Episcopalian/S -Episcopal/S -episcopal/Y -episcopate/MS -episode/SM -episodic -episodically -epistemic -epistemological/Y -epistemology/M -epistle/MRS -Epistle/SM -epistolary/S -epistolatory -epitaph/GMD -epitaphs -epitaxial/Y -epitaxy/M -epithelial -epithelium/MS -epithet/MS -epitome/MS -epitomized/U -epitomizer/M -epitomize/SRDZG -epochal/Y -epoch/M -epochs -eponymous -epoxy/GSD -epsilon/SM -Epsom/M -Epstein/M -equability/MS -equableness/M -equable/P -equably -equaling -equality/ISM -equalization/MS -equalize/DRSGJZ -equalized/U -equalizer/M -equalizes/U -equal/USDY -equanimity/MS -equate/NGXBSD -equation/M -equatorial/S -equator/SM -equerry/MS -equestrianism/SM -equestrian/S -equestrienne/SM -equiangular -equidistant/Y -equilateral/S -equilibrate/GNSD -equilibration/M -equilibrium/MSE -equine/S -equinoctial/S -equinox/MS -equipage/SM -equipartition/M -equip/AS -equipment/SM -equipoise/GMSD -equipotent -equipped/AU -equipping/A -equiproportional -equiproportionality -equiproportionate -equitable/I -equitableness/M -equitably/I -equitation/SM -equity/IMS -equiv -equivalence/DSMG -equivalent/SY -equivocalness/MS -equivocal/UY -equivocate/NGSDX -equivocation/M -equivocator/SM -Equuleus/M -ER -ERA -eradicable/I -eradicate/SDXVGN -eradication/M -eradicator/SM -era/MS -Eran/M -erase/N -eraser/M -erasion/M -Erasmus/M -eras/SRDBGZ -Erastus/M -erasure/MS -Erato/M -Eratosthenes/M -erbium/SM -Erda/M -ere -Erebus/M -erect/GPSRDY -erectile -erection/SM -erectness/MS -erector/SM -Erek/M -erelong -eremite/MS -Erena/M -ergo -ergodic -ergodicity/M -ergonomically -ergonomics/M -ergonomic/U -ergophobia -ergosterol/SM -ergot/SM -erg/SM -Erhard/M -Erhart/M -Erica/M -Ericha/M -Erich/M -Ericka/M -Erick/M -Erickson/M -Eric/M -Ericson's -Ericsson's -Eridanus/M -Erie/SM -Erika/M -Erik/M -Erikson/M -Erina/M -Erin/M -Erinna/M -Erinn/M -eris -Eris -Eritrea/M -Erlang/M -Erlenmeyer/M -Erl/M -Er/M -Erma/M -Ermanno/M -Ermengarde/M -Ermentrude/M -Ermina/M -ermine/MSD -Erminia/M -Erminie/M -Ermin/M -Ernaline/M -Erna/M -Ernesta/M -Ernestine/M -Ernest/M -Ernesto/M -Ernestus/M -Ernie/M -Ernst/M -Erny/M -erode/SDG -erodible -erogenous -erosible -erosional -erosion/SM -erosiveness/M -erosive/P -Eros/SM -erotically -erotica/M -eroticism/MS -erotic/S -errancy/MS -errand/MS -errantry/M -errant/YS -errata/SM -erratically -erratic/S -erratum/MS -err/DGS -Errick/M -erring/UY -Erroll/M -Errol/M -erroneousness/M -erroneous/YP -error/SM -ersatz/S -Erse/M -Erskine/M -erst -erstwhile -Ertha/M -eructation/MS -eruct/DGS -erudite/NYX -erudition/M -erupt/DSVG -eruption/SM -eruptive/SY -Ervin/M -ErvIn/M -Erv/M -Erwin/M -Eryn/M -erysipelas/SM -erythrocyte/SM -es -e's -Es -E's -Esau/M -escadrille/M -escalate/CDSXGN -escalation/MC -escalator/SM -escallop/SGDM -escapable/I -escapade/SM -escapee/MS -escape/LGSRDB -escapement/MS -escaper/M -escapism/SM -escapist/S -escapology -escarole/MS -escarpment/MS -eschatology/M -Escherichia/M -Escher/M -eschew/SGD -Escondido/M -escort/SGMD -escritoire/SM -escrow/DMGS -escudo/MS -escutcheon/SM -Esdras/M -ESE -Eskimo/SM -ESL -Esma/M -Esmaria/M -Esmark/M -Esme/M -Esmeralda/M -esophageal -esophagi -esophagus/M -esoteric -esoterica -esoterically -esp -ESP -espadrille/MS -Espagnol/M -espalier/SMDG -especial/Y -Esperanto/M -Esperanza/M -Espinoza/M -espionage/SM -esplanade/SM -Esp/M -Esposito/M -espousal/MS -espouser/M -espouse/SRDG -espresso/SM -esprit/SM -espy/GSD -Esq/M -esquire/GMSD -Esquire/S -Esra/M -Essa/M -essayer/M -essayist/SM -essay/SZMGRD -essence/MS -Essene/SM -Essen/M -essentialist/M -essentially -essentialness/M -essential/USI -Essequibo/M -Essex/M -Essie/M -Essy/M -EST -established/U -establisher/M -establish/LAEGSD -establishment/EMAS -Establishment/MS -Esta/M -estate/GSDM -Esteban/M -esteem/EGDS -Estela/M -Estele/M -Estella/M -Estelle/M -Estell/M -Estel/M -Esterh�zy/M -ester/M -Ester/M -Estes -Estevan/M -Esther/M -esthete's -esthetically -esthetic's -esthetics's -estimable/I -estimableness/M -estimate/XDSNGV -estimating/A -estimation/M -estimator/SM -Estonia/M -Estonian/S -estoppal -Estrada/M -estrange/DRSLG -estrangement/SM -estranger/M -Estrella/M -Estrellita/M -estrogen/SM -estrous -estrus/SM -est/RZ -estuarine -estuary/SM -et -ET -ETA -Etan/M -eta/SM -etc -etcetera/SM -etcher/M -etch/GZJSRD -etching/M -ETD -eternalness/SM -eternal/PSY -eternity/SM -ethane/SM -Ethan/M -ethanol/MS -Ethelbert/M -Ethelda/M -Ethelind/M -Etheline/M -Ethelin/M -Ethel/M -Ethelred/M -Ethelyn/M -Ethe/M -etherealness/M -ethereal/PY -etherized -Ethernet/MS -ether/SM -ethically/U -ethicalness/M -ethical/PYS -ethicist/S -ethic/MS -Ethiopia/M -Ethiopian/S -ethnically -ethnicity/MS -ethnic/S -ethnocentric -ethnocentrism/MS -ethnographers -ethnographic -ethnography/M -ethnological -ethnologist/SM -ethnology/SM -ethnomethodology -ethological -ethologist/MS -ethology/SM -ethos/SM -ethylene/MS -Ethyl/M -ethyl/SM -Etienne/M -etiologic -etiological -etiology/SM -etiquette/SM -Etna/M -Etruria/M -Etruscan/MS -Etta/M -Ettie/M -Etti/M -Ettore/M -Etty/M -�tude/MS -etymological/Y -etymologist/SM -etymology/MS -EU -eucalypti -eucalyptus/SM -Eucharistic -Eucharist/SM -euchre/MGSD -euclidean -Euclid/M -Eudora/M -Euell/M -Eugene/M -Eugenia/M -eugenically -eugenicist/SM -eugenic/S -eugenics/M -Eugenie/M -Eugenio/M -Eugenius/M -Eugen/M -Eugine/M -Eulalie/M -Eula/M -Eulerian/M -Euler/M -eulogistic -eulogist/MS -eulogized/U -eulogize/GRSDZ -eulogizer/M -eulogy/MS -Eu/M -Eumenides -Eunice/M -eunuch/M -eunuchs -Euphemia/M -euphemism/MS -euphemistic -euphemistically -euphemist/M -euphonious/Y -euphonium/M -euphony/SM -euphoria/SM -euphoric -euphorically -Euphrates/M -Eurasia/M -Eurasian/S -eureka/S -Euripides/M -Eur/M -Eurodollar/SM -Europa/M -Europeanization/SM -Europeanized -European/MS -Europe/M -europium/MS -Eurydice/M -Eustace/M -Eustachian/M -Eustacia/M -eutectic -Euterpe/M -euthanasia/SM -euthenics/M -evacuate/DSXNGV -evacuation/M -evacuee/MS -evader/M -evade/SRDBGZ -Evaleen/M -evaluable -evaluate/ADSGNX -evaluated/U -evaluational -evaluation/MA -evaluative -evaluator/MS -Eva/M -evanescence/MS -evanescent -Evangelia/M -evangelic -evangelicalism/SM -Evangelical/S -evangelical/YS -Evangelina/M -Evangeline/M -Evangelin/M -evangelism/SM -evangelistic -evangelist/MS -Evangelist/MS -evangelize/GDS -Evania/M -Evan/MS -Evanne/M -Evanston/M -Evansville/M -evaporate/VNGSDX -evaporation/M -evaporative/Y -evaporator/MS -evasion/SM -evasiveness/SM -evasive/PY -Eveleen/M -Evelina/M -Eveline/M -Evelin/M -Evelyn/M -Eve/M -evened -evener/M -evenhanded/YP -evening/SM -Evenki/M -Even/M -evenness/MSU -even/PUYRT -evens -evensong/MS -eventfulness/SM -eventful/YU -eventide/SM -event/SGM -eventuality/MS -eventual/Y -eventuate/GSD -Everard/M -Eveready/M -Evered/M -Everest/M -Everette/M -Everett/M -everglade/MS -Everglades -evergreen/S -Everhart/M -everlastingness/M -everlasting/PYS -everliving -evermore -EverReady/M -eve/RSM -ever/T -every -everybody/M -everydayness/M -everyday/P -everyman -everyone/MS -everyplace -everything -everywhere -eve's/A -eves/A -Evey/M -evict/DGS -eviction/SM -evidence/MGSD -evidential/Y -evident/YS -Evie/M -evildoer/SM -evildoing/MS -evilness/MS -evil/YRPTS -evince/SDG -Evin/M -eviscerate/GNXDS -evisceration/M -Evita/M -Ev/MN -evocable -evocate/NVX -evocation/M -evocativeness/M -evocative/YP -evoke/SDG -evolute/NMXS -evolutionarily -evolutionary -evolutionist/MS -evolution/M -evolve/SDG -Evonne/M -Evvie/M -Evvy/M -Evy/M -Evyn/M -Ewan/M -Eward/M -Ewart/M -Ewell/M -ewe/MZRS -Ewen/M -ewer/M -Ewing/M -exacerbate/NGXDS -exacerbation/M -exacter/M -exactingness/M -exacting/YP -exaction/SM -exactitude/ISM -exactly/I -exactness/MSI -exact/TGSPRDY -exaggerate/DSXNGV -exaggerated/YP -exaggeration/M -exaggerative/Y -exaggerator/MS -exaltation/SM -exalted/Y -exalter/M -exalt/ZRDGS -examen/M -examination/AS -examination's -examine/BGZDRS -examined/AU -examinees -examiner/M -examines/A -examining/A -exam/MNS -example/DSGM -exampled/U -exasperate/DSXGN -exasperated/Y -exasperating/Y -exasperation/M -Excalibur/M -excavate/NGDSX -excavation/M -excavator/SM -Excedrin/M -exceeder/M -exceeding/Y -exceed/SGDR -excelled -excellence/SM -excellency/MS -Excellency/MS -excellent/Y -excelling -excel/S -excelsior/S -except/DSGV -exceptionable/U -exceptionalness/M -exceptional/YU -exception/BMS -excerpter/M -excerpt/GMDRS -excess/GVDSM -excessiveness/M -excessive/PY -exchangeable -exchange/GDRSZ -exchanger/M -exchequer/SM -Exchequer/SM -excise/XMSDNGB -excision/M -excitability/MS -excitableness/M -excitable/P -excitably -excitation/SM -excitatory -excited/Y -excitement/MS -exciter/M -excite/RSDLBZG -excitingly -exciting/U -exciton/M -exclaimer/M -exclaim/SZDRG -exclamation/MS -exclamatory -exclude/DRSG -excluder/M -exclusionary -exclusioner/M -exclusion/SZMR -exclusiveness/SM -exclusive/SPY -exclusivity/MS -excommunicate/XVNGSD -excommunication/M -excoriate/GNXSD -excoriation/M -excremental -excrement/SM -excrescence/MS -excrescent -excreta -excrete/NGDRSX -excreter/M -excretion/M -excretory/S -excruciate/NGDS -excruciating/Y -excruciation/M -exculpate/XSDGN -exculpation/M -exculpatory -excursionist/SM -excursion/MS -excursiveness/SM -excursive/PY -excursus/MS -excusable/IP -excusableness/IM -excusably/I -excuse/BGRSD -excused/U -excuser/M -exec/MS -execrableness/M -execrable/P -execrably -execrate/DSXNGV -execration/M -executable/MS -execute/NGVZBXDRS -executer/M -executional -executioner/M -execution/ZMR -executive/SM -executor/SM -executrices -executrix/M -exegeses -exegesis/M -exegete/M -exegetical -exegetic/S -exemplariness/M -exemplar/MS -exemplary/P -exemplification/M -exemplifier/M -exemplify/ZXNSRDG -exemption/MS -exempt/SDG -exerciser/M -exercise/ZDRSGB -exertion/MS -exert/SGD -Exeter/M -exeunt -exhalation/SM -exhale/GSD -exhausted/Y -exhauster/M -exhaustible/I -exhausting/Y -exhaustion/SM -exhaustiveness/MS -exhaustive/YP -exhaust/VGRDS -exhibitioner/M -exhibitionism/MS -exhibitionist/MS -exhibition/ZMRS -exhibitor/SM -exhibit/VGSD -exhilarate/XSDVNG -exhilarating/Y -exhilaration/M -exhortation/SM -exhort/DRSG -exhorter/M -exhumation/SM -exhume/GRSD -exhumer/M -exigence/S -exigency/SM -exigent/SY -exiguity/SM -exiguous -exile/SDGM -existence/MS -existent/I -existentialism/MS -existentialistic -existentialist/MS -existential/Y -existents -exist/SDG -exit/MDSG -exobiology/MS -exocrine -Exodus/M -exodus/SM -exogamous -exogamy/M -exogenous/Y -exonerate/SDVGNX -exoneration/M -exorbitance/MS -exorbitant/Y -exorcise/SDG -exorcism/SM -exorcist/SM -exorcizer/M -exoskeleton/MS -exosphere/SM -exothermic -exothermically -exotica -exotically -exoticism/SM -exoticness/M -exotic/PS -exp -expandability/M -expand/DRSGZB -expanded/U -expander/M -expanse/DSXGNVM -expansible -expansionary -expansionism/MS -expansionist/MS -expansion/M -expansiveness/S -expansive/YP -expatiate/XSDNG -expatiation/M -expatriate/SDNGX -expatriation/M -expectancy/MS -expectant/YS -expectational -expectation/MS -expected/UPY -expecting/Y -expectorant/S -expectorate/NGXDS -expectoration/M -expect/SBGD -expedience/IS -expediency/IMS -expedients -expedient/YI -expediter/M -expedite/ZDRSNGX -expeditionary -expedition/M -expeditiousness/MS -expeditious/YP -expeditor's -expellable -expelled -expelling -expel/S -expendable/S -expended/U -expender/M -expenditure/SM -expend/SDRGB -expense/DSGVM -expensive/IYP -expensiveness/SMI -experienced/U -experience/ISDM -experiencing -experiential/Y -experimentalism/M -experimentalist/SM -experimental/Y -experimentation/SM -experimenter/M -experiment/GSMDRZ -experted -experting -expertise/SM -expertize/GD -expertnesses -expertness/IM -expert/PISY -expert's -expiable/I -expiate/XGNDS -expiation/M -expiatory -expiration/MS -expired/U -expire/SDG -expiry/MS -explainable/UI -explain/ADSG -explained/U -explainer/SM -explanation/MS -explanatory -expletive/SM -explicable/I -explicate/VGNSDX -explication/M -explicative/Y -explicitness/SM -explicit/PSY -explode/DSRGZ -exploded/U -exploder/M -exploitation/MS -exploitative -exploited/U -exploiter/M -exploit/ZGVSMDRB -exploration/MS -exploratory -explore/DSRBGZ -explored/U -explorer/M -explosion/MS -explosiveness/SM -explosive/YPS -expo/MS -exponential/SY -exponentiate/XSDNG -exponentiation/M -exponent/MS -exportability -exportable -export/AGSD -exportation/SM -exporter/MS -export's -expose -exposed/U -exposer/M -exposit/D -exposition/SM -expositor/MS -expository -expos/RSDZG -expostulate/DSXNG -expostulation/M -exposure/SM -expounder/M -expound/ZGSDR -expressed/U -expresser/M -express/GVDRSY -expressibility/I -expressible/I -expressibly/I -expressionism/SM -expressionistic -expressionist/S -expressionless/YP -expression/MS -expressive/IYP -expressiveness/MS -expressiveness's/I -expressway/SM -expropriate/XDSGN -expropriation/M -expropriator/SM -expulsion/MS -expunge/GDSR -expunger/M -expurgated/U -expurgate/SDGNX -expurgation/M -exquisiteness/SM -exquisite/YPS -ex/S -ext -extant -extemporaneousness/MS -extemporaneous/YP -extempore/S -extemporization/SM -extemporizer/M -extemporize/ZGSRD -extendability/M -extendedly -extendedness/M -extended/U -extender/M -extendibility/M -extendibles -extend/SGZDR -extensibility/M -extensible/I -extensional/Y -extension/SM -extensiveness/SM -extensive/PY -extensor/MS -extent/SM -extenuate/XSDGN -extenuation/M -exterior/MYS -exterminate/XNGDS -extermination/M -exterminator/SM -externalities -externalization/SM -externalize/GDS -external/YS -extern/M -extinct/DGVS -extinction/MS -extinguishable/I -extinguish/BZGDRS -extinguisher/M -extirpate/XSDVNG -extirpation/M -extolled -extoller/M -extolling -extol/S -extort/DRSGV -extorter/M -extortionate/Y -extortioner/M -extortionist/SM -extortion/ZSRM -extracellular/Y -extract/GVSBD -extraction/SM -extractive/Y -extractor/SM -extracurricular/S -extradite/XNGSDB -extradition/M -extragalactic -extralegal/Y -extramarital -extramural -extraneousness/M -extraneous/YP -extraordinarily -extraordinariness/M -extraordinary/PS -extrapolate/XVGNSD -extrapolation/M -extra/S -extrasensory -extraterrestrial/S -extraterritorial -extraterritoriality/MS -extravagance/MS -extravagant/Y -extravaganza/SM -extravehicular -extravert's -extrema -extremal -extreme/DSRYTP -extremeness/MS -extremism/SM -extremist/MS -extremity/SM -extricable/I -extricate/XSDNG -extrication/M -extrinsic -extrinsically -extroversion/SM -extrovert/GMDS -extrude/GDSR -extruder/M -extrusion/MS -extrusive -exuberance/MS -exuberant/Y -exudate/XNM -exudation/M -exude/GSD -exultant/Y -exultation/SM -exult/DGS -exulting/Y -exurban -exurbanite/SM -exurbia/MS -exurb/MS -Exxon/M -Eyck/M -Eyde/M -Eydie/M -eyeball/GSMD -eyebrow/MS -eyed/P -eyedropper/MS -eyeful/MS -eye/GDRSMZ -eyeglass/MS -eyelash/MS -eyeless -eyelet/GSMD -eyelid/SM -eyeliner/MS -eyeopener/MS -eyeopening -eyepiece/SM -eyer/M -eyeshadow -eyesight/MS -eyesore/SM -eyestrain/MS -eyeteeth -eyetooth/M -eyewash/MS -eyewitness/SM -Eyre/M -eyrie's -Eysenck/M -Ezechiel/M -Ezekiel/M -Ezequiel/M -Eziechiele/M -Ezmeralda/M -Ezra/M -Ezri/M -F -FAA -Fabe/MR -Faberg�/M -Faber/M -Fabiano/M -Fabian/S -Fabien/M -Fabio/M -fable/GMSRD -fabler/M -fabricate/SDXNG -fabrication/M -fabricator/MS -fabric/MS -fabulists -fabulousness/M -fabulous/YP -facade/GMSD -face/AGCSD -facecloth -facecloths -faceless/P -faceplate/M -facer/CM -face's -facetiousness/MS -facetious/YP -facet/SGMD -facial/YS -facileness/M -facile/YP -facilitate/VNGXSD -facilitation/M -facilitator/SM -facilitatory -facility/MS -facing/MS -facsimileing -facsimile/MSD -factional -factionalism/SM -faction/SM -factiousness/M -factious/PY -factitious -fact/MS -facto -factoid/S -factorial/MS -factoring/A -factoring's -factorisable -factorization/SM -factorize/GSD -factor/SDMJG -factory/MS -factotum/MS -factuality/M -factualness/M -factual/PY -faculty/MS -faddish -faddist/SM -fadedly -faded/U -fadeout -fader/M -fade/S -fading's -fading/U -fad/ZGSMDR -Fae/M -faerie/MS -Faeroe/M -faery's -Fafnir/M -fagged -fagging -faggoting's -Fagin/M -fag/MS -fagoting/M -fagot/MDSJG -Fahd/M -Fahrenheit/S -fa�ence/S -failing's -failing/UY -fail/JSGD -faille/MS -failsafe -failure/SM -Faina/M -fain/GTSRD -fainter/M -fainthearted -faintness/MS -faint/YRDSGPT -Fairbanks -Fairchild/M -faired -Fairfax/M -Fairfield/M -fairgoer/S -fairground/MS -fairing/MS -fairish -Fairleigh/M -fairless -Fairlie/M -Fair/M -Fairmont/M -fairness's -fairness/US -Fairport/M -fairs -fair/TURYP -Fairview/M -fairway/MS -fairyland/MS -fairy/MS -fairytale -Faisalabad -Faisal/M -faithed -faithfulness/MSU -faithfuls -faithful/UYP -faithing -faithlessness/SM -faithless/YP -Faith/M -faiths -faith's -faith/U -fajitas -faker/M -fake/ZGDRS -fakir/SM -falafel -falconer/M -falconry/MS -falcon/ZSRM -Falito/M -Falkland/MS -Falk/M -Falkner/M -fallaciousness/M -fallacious/PY -fallacy/MS -faller/M -fallibility/MSI -fallible/I -fallibleness/MS -fallibly/I -falloff/S -Fallon/M -fallopian -Fallopian/M -fallout/MS -fallowness/M -fallow/PSGD -fall/SGZMRN -falsehood/SM -falseness/SM -false/PTYR -falsetto/SM -falsie/MS -falsifiability/M -falsifiable/U -falsification/M -falsifier/M -falsify/ZRSDNXG -falsity/MS -Falstaff/M -falterer/M -faltering/UY -falter/RDSGJ -Falwell/M -fa/M -famed/C -fame/DSMG -fames/C -familial -familiarity/MUS -familiarization/MS -familiarized/U -familiarizer/M -familiarize/ZGRSD -familiarizing/Y -familiarly/U -familiarness/M -familiar/YPS -family/MS -famine/SM -faming/C -famish/GSD -famously/I -famousness/M -famous/PY -fanaticalness/M -fanatical/YP -fanaticism/MS -fanatic/SM -Fanchette/M -Fanchon/M -fancied -Fancie/M -fancier/SM -fanciest -fancifulness/MS -fanciful/YP -fancily -fanciness/SM -fancying -fancy/IS -Fancy/M -fancywork/SM -fandango/SM -Fanechka/M -fanfare/SM -fanfold/M -fang/DMS -fangled -Fania/M -fanlight/SM -Fan/M -fanned -Fannie/M -Fanni/M -fanning -fanny/SM -Fanny/SM -fanout -fan/SM -fantail/SM -fantasia/SM -fantasist/M -fantasize/SRDG -fantastical/Y -fantastic/S -fantasy/GMSD -Fanya/M -fanzine/S -FAQ/SM -Faraday/M -farad/SM -Farah/M -Fara/M -Farand/M -faraway -Farber/M -farce/SDGM -farcical/Y -fare/MS -farer/M -farewell/DGMS -farfetchedness/M -far/GDR -Fargo/M -Farica/M -farinaceous -farina/MS -Farkas/M -Farlay/M -Farlee/M -Farleigh/M -Farley/M -Farlie/M -Farly/M -farmer/M -Farmer/M -farmhand/S -farmhouse/SM -farming/M -Farmington/M -farmland/SM -farm/MRDGZSJ -farmstead/SM -farmworker/S -Far/MY -farmyard/MS -faro/MS -farragoes -farrago/M -Farragut/M -Farrah/M -Farrakhan/M -Farra/M -Farrand/M -Farrell/M -Farrel/M -farrier/SM -Farris/M -Farr/M -farrow/DMGS -farseeing -farsightedness/SM -farsighted/YP -farther -farthermost -farthest -farthing/SM -fart/MDGS! -fas -fascia/SM -fascicle/DSM -fasciculate/DNX -fasciculation/M -fascinate/SDNGX -fascinating/Y -fascination/M -fascism/MS -Fascism's -fascistic -Fascist's -fascist/SM -fashionableness/M -fashionable/PS -fashionably/U -fashion/ADSG -fashioner/SM -fashion's -Fassbinder/M -fastback/MS -fastball/S -fasten/AGUDS -fastener/MS -fastening/SM -fast/GTXSPRND -fastidiousness/MS -fastidious/PY -fastness/MS -fatalism/MS -fatalistic -fatalistically -fatalist/MS -fatality/MS -fatal/SY -fatback/SM -fatefulness/MS -fateful/YP -fate/MS -Fates -fatheaded/P -fathead/SMD -father/DYMGS -fathered/U -fatherhood/MS -fatherland/SM -fatherless -fatherliness/M -fatherly/P -Father/SM -fathomable/U -fathomless -fathom/MDSBG -fatigued/U -fatigue/MGSD -fatiguing/Y -Fatima/M -fatness/SM -fat/PSGMDY -fatso/M -fatted -fattener/M -fatten/JZGSRD -fatter -fattest/M -fattiness/SM -fatting -fatty/RSPT -fatuity/MS -fatuousness/SM -fatuous/YP -fatwa/SM -faucet/SM -Faulknerian -Faulkner/M -fault/CGSMD -faultfinder/MS -faultfinding/MS -faultily -faultiness/MS -faultlessness/SM -faultless/PY -faulty/RTP -fauna/MS -Faunie/M -Faun/M -faun/MS -Fauntleroy/M -Faustian -Faustina/M -Faustine/M -Faustino/M -Faust/M -Faustus/M -fauvism/S -favorableness/MU -favorable/UMPS -favorably/U -favoredness/M -favored's/U -favored/YPSM -favorer/EM -favor/ESMRDGZ -favoring/MYS -favorings/U -favorite/SMU -favoritism/MS -favors/A -Fawkes/M -Fawne/M -fawner/M -fawn/GZRDMS -Fawnia/M -fawning/Y -Fawn/M -fax/GMDS -Fax/M -Faydra/M -Faye/M -Fayette/M -Fayetteville/M -Fayina/M -Fay/M -fay/MDRGS -Fayre/M -Faythe/M -Fayth/M -faze/DSG -FBI -FCC -FD -FDA -FDIC -FDR/M -fealty/MS -fearfuller -fearfullest -fearfulness/MS -fearful/YP -fearlessness/MS -fearless/PY -fear/RDMSG -fearsomeness/M -fearsome/PY -feasibility/SM -feasibleness/M -feasible/UI -feasibly/U -feaster/M -feast/GSMRD -feater/C -featherbed -featherbedding/SM -featherbrain/MD -feathered/U -feathering/M -featherless -featherlight -Featherman/M -feathertop -featherweight/SM -feathery/TR -feather/ZMDRGS -feat/MYRGTS -feats/C -featureless -feature/MGSD -Feb/M -febrile -February/MS -fecal -feces -fecklessness/M -feckless/PY -fecundability -fecundate/XSDGN -fecundation/M -fecund/I -fecundity/SM -federalism/SM -Federalist -federalist/MS -federalization/MS -federalize/GSD -Federal/S -federal/YS -federated/U -federate/FSDXVNG -federation/FM -federative/Y -Federica/M -Federico/M -FedEx/M -Fedora/M -fedora/SM -feds -Fed/SM -fed/U -feebleness/SM -feeble/TPR -feebly -feedback/SM -feedbag/MS -feeder/M -feed/GRZJS -feeding/M -feedlot/SM -feedstock -feedstuffs -feeing -feeler/M -feel/GZJRS -feelingly/U -feeling/MYP -feelingness/M -Fee/M -fee/MDS -feet/M -feigned/U -feigner/M -feign/RDGS -feint/MDSG -feisty/RT -Felder/M -Feldman/M -feldspar/MS -Felecia/M -Felicdad/M -Felice/M -Felicia/M -Felicio/M -felicitate/XGNSD -felicitation/M -felicitous/IY -felicitousness/M -felicity/IMS -Felicity/M -Felicle/M -Felic/M -Felike/M -Feliks/M -feline/SY -Felipa/M -Felipe/M -Felisha/M -Felita/M -Felix/M -Feliza/M -Felizio/M -fella/S -fellatio/SM -felled/A -feller/M -felling/A -Fellini/M -fellness/M -fellowman -fellowmen -fellow/SGDYM -fellowshipped -fellowshipping -fellowship/SM -fell/PSGZTRD -feloniousness/M -felonious/PY -felon/MS -felony/MS -felt/GSD -felting/M -Fe/M -female/MPS -femaleness/SM -feminineness/M -feminine/PYS -femininity/MS -feminism/MS -feminist/MS -femme/MS -femoral -fem/S -femur/MS -fenced/U -fencepost/M -fencer/M -fence/SRDJGMZ -fencing/M -fender/CM -fend/RDSCZG -Fenelia/M -fenestration/CSM -Fenian/M -fenland/M -fen/MS -fennel/SM -Fenwick/M -Feodora/M -Feodor/M -feral -Ferber/M -Ferdie/M -Ferdinanda/M -Ferdinande/M -Ferdinand/M -Ferdinando/M -Ferd/M -Ferdy/M -fer/FLC -Fergus/M -Ferguson/M -Ferlinghetti/M -Fermat/M -fermentation/MS -fermented -fermenter -ferment/FSCM -fermenting -Fermi/M -fermion/MS -fermium/MS -Fernanda/M -Fernande/M -Fernandez/M -Fernandina/M -Fernando/M -Ferne/M -fernery/M -Fern/M -fern/MS -ferny/TR -ferociousness/MS -ferocious/YP -ferocity/MS -Ferrari/M -Ferraro/M -Ferreira/M -Ferrell/M -Ferrel/M -Ferrer/M -ferreter/M -ferret/SMRDG -ferric -ferris -Ferris -ferrite/M -ferro -ferroelectric -ferromagnetic -ferromagnet/M -ferrous -ferrule/MGSD -ferryboat/MS -ferryman/M -ferrymen -ferry/SDMG -fertileness/M -fertile/YP -fertility/IMS -fertilization/ASM -fertilized/U -fertilizer/M -fertilizes/A -fertilize/SRDZG -ferule/SDGM -fervency/MS -fervent/Y -fervidness/M -fervid/YP -fervor/MS -fess/KGFSD -Fess/M -fess's -festal/S -fester/GD -festival/SM -festiveness/SM -festive/PY -festivity/SM -festoon/SMDG -fest/RVZ -fetal -feta/MS -fetcher/M -fetching/Y -fetch/RSDGZ -feted -f�te/MS -fetich's -fetidness/SM -fetid/YP -feting -fetishism/SM -fetishistic -fetishist/SM -fetish/MS -fetlock/MS -fetter's -fetter/UGSD -fettle/GSD -fettling/M -fettuccine/S -fetus/SM -feudalism/MS -feudalistic -feudal/Y -feudatory/M -feud/MDSG -feverishness/SM -feverish/PY -fever/SDMG -fewness/MS -few/PTRS -Fey/M -Feynman/M -fey/RT -fez/M -Fez/M -fezzes -ff -FHA -fianc�e/S -fianc�/MS -Fianna/M -Fiann/M -fiascoes -fiasco/M -Fiat/M -fiat/MS -fibbed -fibber/MS -fibbing -fiberboard/MS -fiber/DM -fiberfill/S -Fiberglas/M -fiberglass/DSMG -Fibonacci/M -fibrillate/XGNDS -fibrillation/M -fibril/MS -fibrin/MS -fibroblast/MS -fibroid/S -fibroses -fibrosis/M -fibrousness/M -fibrous/YP -fib/SZMR -fibulae -fibula/M -fibular -FICA -fices -fiche/SM -Fichte/M -fichu/SM -fickleness/MS -fickle/RTP -ficos -fictionalization/MS -fictionalize/DSG -fictional/Y -fiction/SM -fictitiousness/M -fictitious/PY -fictive/Y -ficus -fiddle/GMZJRSD -fiddler/M -fiddlestick/SM -fiddly -fide/F -Fidela/M -Fidelia/M -Fidelio/M -fidelity/IMS -Fidelity/M -Fidel/M -fidget/DSG -fidgety -Fidole/M -Fido/M -fiducial/Y -fiduciary/MS -fiefdom/S -fief/MS -fielded -fielder/IM -fielding -Fielding/M -Field/MGS -fieldstone/M -fieldworker/M -fieldwork/ZMRS -field/ZISMR -fiendishness/M -fiendish/YP -fiend/MS -fierceness/SM -fierce/RPTY -fierily -fieriness/MS -fiery/PTR -fie/S -fies/C -fiesta/MS -fife/DRSMZG -fifer/M -Fifi/M -Fifine/M -FIFO -fifteen/HRMS -fifteenths -fifths -fifth/Y -fiftieths -fifty/HSM -Figaro/M -figged -figging -fightback -fighter/MIS -fighting/IS -fight/ZSJRG -figment/MS -fig/MLS -Figueroa/M -figural -figuration/FSM -figurativeness/M -figurative/YP -figure/GFESD -figurehead/SM -figurer/SM -figure's -figurine/SM -figuring/S -Fijian/SM -Fiji/M -filamentary -filament/MS -filamentous -Filberte/M -Filbert/M -filbert/MS -Filberto/M -filch/SDG -filed/AC -file/KDRSGMZ -filename/SM -filer/KMCS -files/AC -filet's -filial/UY -Filia/M -filibusterer/M -filibuster/MDRSZG -Filide/M -filigreeing -filigree/MSD -filing/AC -filings -Filipino/SM -Filip/M -Filippa/M -Filippo/M -fill/BAJGSD -filled/U -filler/MS -filleting/M -fillet/MDSG -filling/M -fillip/MDGS -Fillmore/M -filly/SM -filmdom/M -Filmer/M -filminess/SM -filming/M -filmmaker/S -Filmore/M -film/SGMD -filmstrip/SM -filmy/RTP -Filofax/S -filtered/U -filterer/M -filter/RDMSZGB -filthily -filthiness/SM -filth/M -filths -filthy/TRSDGP -filtrated/I -filtrate/SDXMNG -filtrates/I -filtrating/I -filtration/IMS -finagler/M -finagle/RSDZG -finale/MS -finalist/MS -finality/MS -finalization/SM -finalize/GSD -final/SY -Fina/M -financed/A -finance/MGSDJ -finances/A -financial/Y -financier/DMGS -financing/A -Finch/M -finch/MS -findable/U -find/BRJSGZ -finder/M -finding/M -Findlay/M -Findley/M -fine/FGSCRDA -finely -fineness/MS -finery/MAS -fine's -finespun -finesse/SDMG -fingerboard/SM -fingerer/M -fingering/M -fingerless -fingerling/M -fingernail/MS -fingerprint/SGDM -finger/SGRDMJ -fingertip/MS -finial/SM -finical -finickiness/S -finicky/RPT -fining/M -finished/UA -finisher/M -finishes/A -finish/JZGRSD -finis/SM -finite/ISPY -finitely/C -finiteness/MIC -fink/GDMS -Finland/M -Finlay/M -Finley/M -Fin/M -Finnbogadottir/M -finned -Finnegan/M -finner -finning -Finnish -Finn/MS -finny/RT -fin/TGMDRS -Fiona/M -Fionna/M -Fionnula/M -fiord's -Fiorello/M -Fiorenze/M -Fiori/M -f/IRAC -firearm/SM -fireball/SM -fireboat/M -firebomb/MDSG -firebox/MS -firebrand/MS -firebreak/SM -firebrick/SM -firebug/SM -firecracker/SM -firedamp/SM -fired/U -firefight/JRGZS -firefly/MS -Firefox/M -fireguard/M -firehouse/MS -firelight/GZSM -fireman/M -firemen -fire/MS -fireplace/MS -fireplug/MS -firepower/SM -fireproof/SGD -firer/M -firesafe -fireside/SM -Firestone/M -firestorm/SM -firetrap/SM -firetruck/S -firewall/S -firewater/SM -firewood/MS -firework/MS -firing/M -firkin/M -firmament/MS -firmer -firmest -firm/ISFDG -firmly/I -firmness/MS -firm's -firmware/MS -firring -firstborn/S -firsthand -first/SY -firth/M -firths -fir/ZGJMDRHS -fiscal/YS -Fischbein/M -Fischer/M -fishbowl/MS -fishcake/S -fisher/M -Fisher/M -fisherman/M -fishermen/M -fishery/MS -fishhook/MS -fishily -fishiness/MS -fishing/M -fish/JGZMSRD -Fishkill/M -fishmeal -fishmonger/MS -fishnet/SM -fishpond/SM -fishtail/DMGS -fishtanks -fishwife/M -fishwives -fishy/TPR -Fiske/M -Fisk/M -fissile -fissionable/S -fission/BSDMG -fissure/MGSD -fistfight/SM -fistful/MS -fisticuff/SM -fist/MDGS -fistula/SM -fistulous -Fitchburg/M -Fitch/M -fitfulness/SM -fitful/PY -fitments -fitness/USM -fits/AK -fit's/K -fitted/UA -fitter/SM -fittest -fitting/AU -fittingly -fittingness/M -fittings -fit/UYPS -Fitzgerald/M -Fitz/M -Fitzpatrick/M -Fitzroy/M -fivefold -five/MRS -fiver/M -fixable -fixate/VNGXSD -fixatifs -fixation/M -fixative/S -fixedness/M -fixed/YP -fixer/SM -fixes/I -fixing/SM -fixity/MS -fixture/SM -fix/USDG -Fizeau/M -fizzer/M -fizzle/GSD -fizz/SRDG -fizzy/RT -fjord/SM -FL -flabbergast/GSD -flabbergasting/Y -flabbily -flabbiness/SM -flabby/TPR -flab/MS -flaccidity/MS -flaccid/Y -flack/SGDM -flagella/M -flagellate/DSNGX -flagellation/M -flagellum/M -flagged -flaggingly/U -flagging/SMY -flagman/M -flagmen -flag/MS -flagon/SM -flagpole/SM -flagrance/MS -flagrancy/SM -flagrant/Y -flagship/MS -flagstaff/MS -flagstone/SM -flail/SGMD -flair/SM -flaker/M -flake/SM -flakiness/MS -flak/RDMGS -flaky/PRT -Fla/M -flamb�/D -flambeing -flambes -flamboyance/MS -flamboyancy/MS -flamboyant/YS -flamenco/SM -flamen/M -flameproof/DGS -flamer/IM -flame's -flame/SIGDR -flamethrower/SM -flamingo/SM -flaming/Y -flammability/ISM -flammable/SI -flam/MRNDJGZ -Flanagan/M -Flanders/M -flange/GMSD -flanker/M -flank/SGZRDM -flan/MS -flannel/DMGS -flannelet/MS -flannelette's -flapjack/SM -flap/MS -flapped -flapper/SM -flapping -flaps/M -flare/SDG -flareup/S -flaring/Y -flashback/SM -flashbulb/SM -flashcard/S -flashcube/MS -flasher/M -flashgun/S -flashily -flashiness/SM -flashing/M -flash/JMRSDGZ -flashlight/MS -flashy/TPR -flask/SM -flatbed/S -flatboat/MS -flatcar/MS -flatfeet -flatfish/SM -flatfoot/SGDM -flathead/M -flatiron/SM -flatland/RS -flatmate/M -flat/MYPS -flatness/MS -flatted -flattener/M -flatten/SDRG -flatter/DRSZG -flatterer/M -flattering/YU -flattery/SM -flattest/M -flatting -flattish -Flatt/M -flattop/MS -flatulence/SM -flatulent/Y -flatus/SM -flatware/MS -flatworm/SM -Flaubert/M -flaunting/Y -flaunt/SDG -flautist/SM -flavored/U -flavorer/M -flavorful -flavoring/M -flavorless -flavor/SJDRMZG -flavorsome -flaw/GDMS -flawlessness/MS -flawless/PY -flax/MSN -flaxseed/M -flayer/M -flay/RDGZS -fleabag/MS -fleabites -flea/SM -fleawort/M -fleck/GRDMS -Fledermaus/M -fledged/U -fledge/GSD -fledgling/SM -fleecer/M -fleece/RSDGMZ -fleeciness/SM -fleecy/RTP -fleeing -flee/RS -fleetingly/M -fleetingness/SM -fleeting/YP -fleet/MYRDGTPS -fleetness/MS -Fleischer/M -Fleischman/M -Fleisher/M -Fleming/M -Flemished/M -Flemish/GDSM -Flemishing/M -Flem/JGM -Flemming/M -flesher/M -fleshiness/M -flesh/JMYRSDG -fleshless -fleshly/TR -fleshpot/SM -fleshy/TPR -fletch/DRSGJ -fletcher/M -Fletcher/M -fletching/M -Fletch/MR -Fleurette/M -Fleur/M -flew/S -flews/M -flexed/I -flexibility/MSI -flexible/I -flexibly/I -flexitime's -flex/MSDAG -flextime/S -flexural -flexure/M -fl/GJD -flibbertigibbet/MS -flicker/GD -flickering/Y -flickery -flick/GZSRD -flier/M -flight/GMDS -flightiness/SM -flightless -flightpath -flighty/RTP -flimflammed -flimflamming -flimflam/MS -flimsily -flimsiness/MS -flimsy/PTRS -flincher/M -flinch/GDRS -flinching/U -flinger/M -fling/RMG -Flin/M -Flinn/M -flintiness/M -flintless -flintlock/MS -Flint/M -flint/MDSG -Flintstones -flinty/TRP -flipflop -flippable -flippancy/MS -flippant/Y -flipped -flipper/SM -flippest -flipping -flip/S -flirtation/SM -flirtatiousness/MS -flirtatious/PY -flirt/GRDS -flit/S -flitted -flitting -floater/M -float/SRDGJZ -floaty -flocculate/GNDS -flocculation/M -flock/SJDMG -floe/MS -flogged -flogger/SM -flogging/SM -flog/S -Flo/M -floodgate/MS -floodlight/DGMS -floodlit -floodplain/S -flood/SMRDG -floodwater/SM -floorboard/MS -floorer/M -flooring/M -floor/SJRDMG -floorspace -floorwalker/SM -floozy/SM -flophouse/SM -flop/MS -flopped -flopper/M -floppily -floppiness/SM -flopping -floppy/TMRSP -floral/SY -Flora/M -Florance/M -flora/SM -Florella/M -Florence/M -Florencia/M -Florentia/M -Florentine/S -Florenza/M -florescence/MIS -florescent/I -Flore/SM -floret/MS -Florette/M -Floria/M -Florian/M -Florida/M -Floridan/S -Floridian/S -floridness/SM -florid/YP -Florie/M -Florina/M -Florinda/M -Florine/M -florin/MS -Flori/SM -florist/MS -Flor/M -Florrie/M -Florri/M -Florry/M -Flory/M -floss/GSDM -Flossie/M -Flossi/M -Flossy/M -flossy/RST -flotation/SM -flotilla/SM -flotsam/SM -flounce/GDS -flouncing/M -flouncy/RT -flounder/SDG -flourisher/M -flourish/GSRD -flourishing/Y -flour/SGDM -floury/TR -flouter/M -flout/GZSRD -flowchart/SG -flowed -flowerbed/SM -flower/CSGD -flowerer/M -floweriness/SM -flowerless -flowerpot/MS -flower's -Flowers -flowery/TRP -flowing/Y -flow/ISG -flown -flowstone -Floyd/M -Flss/M -flt -flubbed -flubbing -flub/S -fluctuate/XSDNG -fluctuation/M -fluency/MS -fluently -fluent/SF -flue/SM -fluffiness/SM -fluff/SGDM -fluffy/PRT -fluidity/SM -fluidized -fluid/MYSP -fluidness/M -fluke/SDGM -fluky/RT -flume/SDGM -flummox/DSG -flu/MS -flung -flunkey's -flunk/SRDG -flunky/MS -fluoresce/GSRD -fluorescence/MS -fluorescent/S -fluoridate/XDSGN -fluoridation/M -fluoride/SM -fluorimetric -fluorinated -fluorine/SM -fluorite/MS -fluorocarbon/MS -fluoroscope/MGDS -fluoroscopic -flurry/GMDS -flushness/M -flush/TRSDPBG -fluster/DSG -fluter/M -flute/SRDGMJ -fluting/M -flutist/MS -flutter/DRSG -flutterer/M -fluttery -fluxed/A -fluxes/A -flux/IMS -fluxing -flyaway -flyblown -flyby/M -flybys -flycatcher/MS -flyer's -fly/JGBDRSTZ -flyleaf/M -flyleaves -Flynn/M -flyover/MS -flypaper/MS -flysheet/S -flyspeck/MDGS -flyswatter/S -flyway/MS -flyweight/MS -flywheel/MS -FM -Fm/M -FNMA/M -foal/MDSG -foaminess/MS -foam/MRDSG -foamy/RPT -fobbed -fobbing -fob/SM -focal/F -focally -Foch/M -foci's -focused/AU -focuser/M -focuses/A -focus/SRDMBG -fodder/GDMS -foe/SM -foetid -FOFL -fogbound -fogged/C -foggily -fogginess/MS -fogging/C -foggy/RPT -foghorn/SM -fogs/C -fog/SM -fogyish -fogy/SM -foible/MS -foil/GSD -foist/GDS -Fokker/M -foldaway/S -folded/AU -folder/M -foldout/MS -fold/RDJSGZ -folds/UA -Foley/M -foliage/MSD -foliate/CSDXGN -foliation/CM -folio/SDMG -folklike -folklore/MS -folkloric -folklorist/SM -folk/MS -folksiness/MS -folksinger/S -folksinging/S -folksong/S -folksy/TPR -folktale/S -folkway/S -foll -follicle/SM -follicular -follower/M -follow/JSZBGRD -followup's -folly/SM -Folsom -fol/Y -Fomalhaut/M -fomentation/SM -fomenter/M -foment/RDSG -Fonda/M -fondant/SM -fondle/GSRD -fondler/M -fondness/MS -fond/PMYRDGTS -fondue/MS -Fons -Fonsie/M -Fontainebleau/M -Fontaine/M -Fontana/M -fontanelle's -fontanel/MS -font/MS -Fonzie/M -Fonz/M -foodie/S -food/MS -foodstuff/MS -foolery/MS -foolhardily -foolhardiness/SM -foolhardy/PTR -foolishness/SM -foolish/PRYT -fool/MDGS -foolproof -foolscap/MS -footage/SM -football/SRDMGZ -footbridge/SM -Foote/M -footer/M -footfall/SM -foothill/SM -foothold/MS -footing/M -footless -footlights -footling -footlocker/SM -footloose -footman/M -footmarks -footmen -footnote/MSDG -footpad/SM -footpath/M -footpaths -footplate/M -footprint/MS -footrace/S -footrest/MS -footsie/SM -foot/SMRDGZJ -footsore -footstep/SM -footstool/SM -footwear/M -footwork/SM -fop/MS -fopped -foppery/MS -fopping -foppishness/SM -foppish/YP -forage/GSRDMZ -forager/M -forayer/M -foray/SGMRD -forbade -forbearance/SM -forbearer/M -forbear/MRSG -Forbes/M -forbidden -forbiddingness/M -forbidding/YPS -forbid/S -forbore -forborne -forced/Y -forcefield/MS -forcefulness/MS -forceful/PY -forceps/M -forcer/M -force/SRDGM -forcibleness/M -forcible/P -forcibly -fordable/U -Fordham/M -Ford/M -ford/SMDBG -forearm/GSDM -forebear/MS -forebode/GJDS -forebodingness/M -foreboding/PYM -forecaster/M -forecastle/MS -forecast/SZGR -foreclose/GSD -foreclosure/MS -forecourt/SM -foredoom/SDG -forefather/SM -forefeet -forefinger/MS -forefoot/M -forefront/SM -foregoer/M -foregoing/S -foregone -foregos -foreground/MGDS -forehand/S -forehead/MS -foreigner/M -foreignness/SM -foreign/PRYZS -foreknew -foreknow/GS -foreknowledge/MS -foreknown -foreleg/MS -forelimb/MS -forelock/MDSG -foreman/M -Foreman/M -foremast/SM -foremen -foremost -forename/DSM -forenoon/SM -forensically -forensic/S -forensics/M -foreordain/DSG -forepart/MS -forepaws -forepeople -foreperson/S -foreplay/MS -forequarter/SM -forerunner/MS -fore/S -foresail/SM -foresaw -foreseeable/U -foreseeing -foreseen/U -foreseer/M -foresee/ZSRB -foreshadow/SGD -foreshore/M -foreshorten/DSG -foresightedness/SM -foresighted/PY -foresight/SMD -foreskin/SM -forestaller/M -forestall/LGSRD -forestallment/M -forestation/MCS -forestations/A -forest/CSAGD -Forester/M -forester/SM -forestland/S -Forest/MR -forestry/MS -forest's -foretaste/MGSD -foreteller/M -foretell/RGS -forethought/MS -foretold -forevermore -forever/PS -forewarner/M -forewarn/GSJRD -forewent -forewoman/M -forewomen -foreword/SM -forfeiter/M -forfeiture/MS -forfeit/ZGDRMS -forfend/GSD -forgather/GSD -forgave -forged/A -forge/JVGMZSRD -forger/M -forgery/MS -forges/A -forgetfulness/SM -forgetful/PY -forget/SV -forgettable/U -forgettably/U -forgetting -forging/M -forgivable/U -forgivably/U -forgiven -forgiveness/SM -forgiver/M -forgive/SRPBZG -forgivingly -forgivingness/M -forgiving/UP -forgoer/M -forgoes -forgone -forgo/RSGZ -forgot -forgotten/U -for/HT -forkful/S -fork/GSRDM -forklift/DMSG -forlornness/M -forlorn/PTRY -formability/AM -formaldehyde/SM -formalin/M -formalism/SM -formalistic -formalist/SM -formality/SMI -formal/IY -formalization/SM -formalized/U -formalizer/M -formalizes/I -formalize/ZGSRD -formalness/M -formals -formant/MIS -format/AVS -formate/MXGNSD -formation/AFSCIM -formatively/I -formativeness/IM -formative/SYP -format's -formatted/UA -formatter/A -formatters -formatter's -formatting/A -form/CGSAFDI -formed/U -former/FSAI -formerly -formfitting -formic -Formica/MS -formidableness/M -formidable/P -formidably -formlessness/MS -formless/PY -Formosa/M -Formosan -form's -formulaic -formula/SM -formulate/AGNSDX -formulated/U -formulation/AM -formulator/SM -fornicate/GNXSD -fornication/M -fornicator/SM -Forrester/M -Forrest/RM -forsaken -forsake/SG -forsook -forsooth -Forster/M -forswear/SG -forswore -forsworn -forsythia/MS -Fortaleza/M -forte/MS -forthcome/JG -forthcoming/U -FORTH/M -forthrightness/SM -forthright/PYS -forthwith -fortieths -fortification/MS -fortified/U -fortifier/SM -fortify/ADSG -fortiori -fortissimo/S -fortitude/SM -fortnightly/S -fortnight/MYS -FORTRAN -Fortran/M -fortress/GMSD -fort/SM -fortuitousness/SM -fortuitous/YP -fortuity/MS -fortunateness/M -fortunate/YUS -fortune/MGSD -fortuneteller/SM -fortunetelling/SM -forty/SRMH -forum/MS -forwarder/M -forwarding/M -forwardness/MS -forward/PTZSGDRY -forwent -fossiliferous -fossilization/MS -fossilized/U -fossilize/GSD -fossil/MS -Foss/M -fosterer/M -Foster/M -foster/SRDG -Foucault/M -fought -foulard/SM -foulmouth/D -foulness/MS -fouls/M -foul/SYRDGTP -foundational -foundation/SM -founded/UF -founder/MDG -founder's/F -founding/F -foundling/MS -found/RDGZS -foundry/MS -founds/KF -fountainhead/SM -fountain/SMDG -fount/MS -fourfold -Fourier/M -fourpence/M -fourpenny -fourposter/SM -fourscore/S -four/SHM -foursome/SM -foursquare -fourteener/M -fourteen/SMRH -fourteenths -Fourth -fourths -Fourths -fourth/Y -fovea/M -fowler/M -Fowler/M -fowling/M -fowl/SGMRD -foxfire/SM -foxglove/SM -Foxhall/M -foxhole/SM -foxhound/SM -foxily -foxiness/MS -foxing/M -fox/MDSG -Fox/MS -foxtail/M -foxtrot/MS -foxtrotted -foxtrotting -foxy/TRP -foyer/SM -FPO -fps -fr -fracas/SM -fractal/SM -fractional/Y -fractionate/DNG -fractionation/M -fractioned -fractioning -fraction/ISMA -fractiousness/SM -fractious/PY -fracture/MGDS -fragile/Y -fragility/MS -fragmentarily -fragmentariness/M -fragmentary/P -fragmentation/MS -fragment/SDMG -Fragonard/M -fragrance/SM -fragrant/Y -frailness/MS -frail/STPYR -frailty/MS -framed/U -framer/M -frame/SRDJGMZ -framework/SM -framing/M -Francaise/M -France/MS -Francene/M -Francesca/M -Francesco/M -franchisee/S -franchise/ESDG -franchiser/SM -franchise's -Franchot/M -Francie/M -Francine/M -Francis -Francisca/M -Franciscan/MS -Francisco/M -Franciska/M -Franciskus/M -francium/MS -Francklin/M -Francklyn/M -Franck/M -Francoise/M -Francois/M -Franco/M -francophone/M -franc/SM -Francyne/M -frangibility/SM -frangible -Frankel/M -Frankenstein/MS -franker/M -Frankford/M -Frankfort/M -Frankfurter/M -frankfurter/MS -Frankfurt/RM -Frankie/M -frankincense/MS -Frankish/M -franklin/M -Franklin/M -Franklyn/M -frankness/MS -frank/SGTYRDP -Frank/SM -Franky/M -Fran/MS -Frannie/M -Franni/M -Franny/M -Fransisco/M -frantically -franticness/M -frantic/PY -Frants/M -Franzen/M -Franz/NM -frapp� -frappeed -frappeing -frappes -Frasco/M -Fraser/M -Frasier/M -Frasquito/M -fraternal/Y -fraternity/MSF -fraternization/SM -fraternize/GZRSD -fraternizer/M -fraternizing/U -frat/MS -fratricidal -fratricide/MS -fraud/CS -fraud's -fraudsters -fraudulence/S -fraudulent/YP -fraught/SGD -Fraulein/S -Frau/MN -fray/CSDG -Frayda/M -Frayne/M -fray's -Fraze/MR -Frazer/M -Frazier/M -frazzle/GDS -freakishness/SM -freakish/YP -freak/SGDM -freaky/RT -freckle/GMDS -freckly/RT -Freda/M -Freddie/M -Freddi/M -Freddy/M -Fredek/M -Fredelia/M -Frederica/M -Frederich/M -Fredericka/M -Frederick/MS -Frederic/M -Frederico/M -Fredericton/M -Frederigo/M -Frederik/M -Frederique/M -Fredholm/M -Fredia/M -Fredi/M -Fred/M -Fredra/M -Fredrick/M -Fredrickson/M -Fredric/M -Fredrika/M -freebase/GDS -freebie/MS -freebooter/M -freeboot/ZR -freeborn -freedman/M -Freedman/M -freedmen -freedom/MS -freehand/D -freehanded/Y -freeholder/M -freehold/ZSRM -freeing/S -freelance/SRDGZM -Freeland/M -freeloader/M -freeload/SRDGZ -Free/M -freeman/M -Freeman/M -freemasonry/M -Freemasonry/MS -Freemason/SM -freemen -Freemon/M -freeness/M -Freeport/M -freestanding -freestone/SM -freestyle/SM -freethinker/MS -freethinking/S -Freetown/M -freeway/MS -freewheeler/M -freewheeling/P -freewheel/SRDMGZ -freewill -free/YTDRSP -freezable -freezer/SM -freeze/UGSA -freezing/S -Freida/M -freighter/M -freight/ZGMDRS -Fremont/M -Frenchman/M -French/MDSG -Frenchmen -Frenchwoman/M -Frenchwomen -frenetically -frenetic/S -frenzied/Y -frenzy/MDSG -freon/S -Freon/SM -freq -frequency/ISM -frequented/U -frequenter/MS -frequentest -frequenting -frequent/IY -frequentness/M -frequents -fresco/DMG -frescoes -fresh/AZSRNDG -freshener/M -freshen/SZGDR -fresher/MA -freshest -freshet/SM -freshly -freshman/M -freshmen -freshness/MS -freshwater/SM -Fresnel/M -Fresno/M -fretboard -fretfulness/MS -fretful/PY -fret/S -fretsaw/S -fretted -fretting -fretwork/MS -Freudian/S -Freud/M -Freya/M -Frey/M -friableness/M -friable/P -friary/MS -friar/YMS -fricasseeing -fricassee/MSD -frication/M -fricative/MS -Frick/M -frictional/Y -frictionless/Y -friction/MS -Friday/SM -fridge/SM -fried/A -Frieda/M -Friedan/M -friedcake/SM -Friederike/M -Friedman/M -Friedrich/M -Friedrick/M -friendlessness/M -friendless/P -friendlies -friendlily -friendliness/USM -friendly/PUTR -friend/SGMYD -friendship/MS -frier's -fries/M -frieze/SDGM -frigate/SM -Frigga/M -frigged -frigging/S -frighten/DG -frightening/Y -frightfulness/MS -frightful/PY -fright/GXMDNS -Frigidaire/M -frigidity/MS -frigidness/SM -frigid/YP -frig/S -frill/MDGS -frilly/RST -Fri/M -fringe/IGSD -fringe's -frippery/SM -Frisbee/MS -Frisco/M -Frisian/SM -frisker/M -friskily -friskiness/SM -frisk/RDGS -frisky/RTP -frisson/M -Frito/M -fritterer/M -fritter/RDSG -Fritz/M -fritz/SM -frivolity/MS -frivolousness/SM -frivolous/PY -frizz/GYSD -frizzle/DSG -frizzly/RT -frizzy/RT -Fr/MD -Frobisher/M -frocking/M -frock's -frock/SUDGC -frogged -frogging -frogman/M -frogmarched -frogmen -frog/MS -fro/HS -Froissart/M -frolicked -frolicker/SM -frolicking -frolic/SM -frolicsome -from -Fromm/M -frond/SM -frontage/MS -frontal/SY -Frontenac/M -front/GSFRD -frontier/SM -frontiersman/M -frontiersmen -frontispiece/SM -frontrunner's -front's -frontward/S -frosh/M -Frostbelt/M -frostbite/MS -frostbit/G -frostbiting/M -frostbitten -frost/CDSG -frosteds -frosted/U -frostily -frostiness/SM -frosting/MS -Frost/M -frost's -frosty/PTR -froth/GMD -frothiness/SM -froths -frothy/TRP -froufrou/MS -frowardness/MS -froward/P -frowner/M -frowning/Y -frown/RDSG -frowzily -frowziness/SM -frowzy/RPT -frozenness/M -frozen/YP -froze/UA -fructify/GSD -fructose/MS -Fruehauf/M -frugality/SM -frugal/Y -fruitcake/SM -fruiterer/M -fruiter/RM -fruitfuller -fruitfullest -fruitfulness/MS -fruitful/UYP -fruit/GMRDS -fruitiness/MS -fruition/SM -fruitlessness/MS -fruitless/YP -fruity/RPT -frumpish -frump/MS -frumpy/TR -Frunze/M -frustrater/M -frustrate/RSDXNG -frustrating/Y -frustration/M -frustum/SM -Frye/M -fryer/MS -Fry/M -fry/NGDS -F's -f's/KA -FSLIC -ft/C -FTC -FTP -fuchsia/MS -Fuchs/M -fucker/M! -fuck/GZJRDMS! -FUD -fuddle/GSD -fudge/GMSD -fuel/ASDG -fueler/SM -fuel's -Fuentes/M -fugal -Fugger/M -fugitiveness/M -fugitive/SYMP -fugue/GMSD -fuhrer/S -Fuji/M -Fujitsu/M -Fujiyama -Fukuoka/M -Fulani/M -Fulbright/M -fulcrum/SM -fulfilled/U -fulfiller/M -fulfill/GLSRD -fulfillment/MS -fullback/SMG -fuller/DMG -Fuller/M -Fullerton/M -fullish -fullness/MS -full/RDPSGZT -fullstops -fullword/SM -fully -fulminate/XSDGN -fulmination/M -fulness's -fulsomeness/SM -fulsome/PY -Fulton/M -Fulvia/M -fumble/GZRSD -fumbler/M -fumbling/Y -fume/DSG -fumigant/MS -fumigate/NGSDX -fumigation/M -fumigator/SM -fuming/Y -fumy/TR -Funafuti -functionalism/M -functionalist/SM -functionality/S -functional/YS -functionary/MS -function/GSMD -functor/SM -fundamentalism/SM -fundamentalist/SM -fundamental/SY -fund/ASMRDZG -funded/U -fundholders -fundholding -funding/S -Fundy/M -funeral/MS -funerary -funereal/Y -funfair/M -fungal/S -fungible/M -fungicidal -fungicide/SM -fungi/M -fungoid/S -fungous -fungus/M -funicular/SM -funk/GSDM -funkiness/S -funky/RTP -fun/MS -funned -funnel/SGMD -funner -funnest -funnily/U -funniness/SM -funning -funny/RSPT -furbelow/MDSG -furbisher/M -furbish/GDRSA -furiousness/M -furious/RYP -furlong/MS -furlough/DGM -furloughs -furl/UDGS -furn -furnace/GMSD -furnished/U -furnisher/MS -furnish/GASD -furnishing/SM -furniture/SM -furore/MS -furor/MS -fur/PMS -furred -furrier/M -furriness/SM -furring/SM -furrow/DMGS -furry/RTZP -furtherance/MS -furtherer/M -furthermore -furthermost -further/TGDRS -furthest -furtiveness/SM -furtive/PY -fury/SM -furze/SM -fusebox/S -fusee/SM -fuse/FSDAGCI -fuselage/SM -fuse's/A -Fushun/M -fusibility/SM -fusible/I -fusiform -fusilier/MS -fusillade/SDMG -fusion/KMFSI -fussbudget/MS -fusser/M -fussily -fussiness/MS -fusspot/SM -fuss/SRDMG -fussy/PTR -fustian/MS -fustiness/MS -fusty/RPT -fut -futileness/M -futile/PY -futility/MS -futon/S -future/SM -futurism/SM -futuristic/S -futurist/S -futurity/MS -futurologist/S -futurology/MS -futz/GSD -fuze's -Fuzhou/M -Fuzzbuster/M -fuzzily -fuzziness/SM -fuzz/SDMG -fuzzy/PRT -fwd -FWD -fwy -FY -FYI -GA -gabardine/SM -gabbed -Gabbey/M -Gabbie/M -Gabbi/M -gabbiness/S -gabbing -gabble/SDG -Gabby/M -gabby/TRP -Gabe/M -gaberdine's -Gabey/M -gabfest/MS -Gabie/M -Gabi/M -gable/GMSRD -Gable/M -Gabonese -Gabon/M -Gaborone/M -Gabriela/M -Gabriele/M -Gabriella/M -Gabrielle/M -Gabriellia/M -Gabriell/M -Gabriello/M -Gabriel/M -Gabrila/M -gab/S -Gaby/M -Gacrux/M -gadabout/MS -gadded -gadder/MS -gadding -gadfly/MS -gadgetry/MS -gadget/SM -gadolinium/MS -gad/S -Gadsden/M -Gaea/M -Gaelan/M -Gaelic/M -Gael/SM -Gae/M -gaffe/MS -gaffer/M -gaff/SGZRDM -gaga -Gagarin/M -gag/DRSG -Gage/M -gager/M -gage/SM -gagged -gagging -gaggle/SDG -gagwriter/S -gaiety/MS -Gaile/M -Gail/M -gaily -gain/ADGS -gainer/SM -Gaines/M -Gainesville/M -gainfulness/M -gainful/YP -gaining/S -gainly/U -gainsaid -gainsayer/M -gainsay/RSZG -Gainsborough/M -gaiter/M -gait/GSZMRD -Gaithersburg/M -galactic -Galahad/MS -Galapagos/M -gal/AS -gala/SM -Galatea/M -Galatia/M -Galatians/M -Galaxy/M -galaxy/MS -Galbraith/M -Galbreath/M -gale/AS -Gale/M -galen -galena/MS -galenite/M -Galen/M -gale's -Galibi/M -Galilean/MS -Galilee/M -Galileo/M -Galina/M -Gallagher/M -gallanted -gallanting -gallantry/MS -gallants -gallant/UY -Gallard/M -gallbladder/MS -Gallegos/M -galleon/SM -galleria/S -gallery/MSDG -galley/MS -Gallic -Gallicism/SM -gallimaufry/MS -galling/Y -gallium/SM -gallivant/GDS -Gall/M -gallonage/M -gallon/SM -galloper/M -gallop/GSRDZ -Galloway/M -gallows/M -gall/SGMD -gallstone/MS -Gallup/M -Gal/MN -Galois/M -galoot/MS -galore/S -galosh/GMSD -gal's -Galsworthy/M -galumph/GD -galumphs -galvanic -Galvani/M -galvanism/MS -galvanization/SM -galvanize/SDG -Galvan/M -galvanometer/SM -galvanometric -Galven/M -Galveston/M -Galvin/M -Ga/M -Gamaliel/M -Gama/M -Gambia/M -Gambian/S -gambit/MS -gamble/GZRSD -Gamble/M -gambler/M -gambol/SGD -gamecock/SM -gamekeeper/MS -gameness/MS -game/PJDRSMYTZG -gamesmanship/SM -gamesmen -gamester/M -gamest/RZ -gamete/MS -gametic -gamine/SM -gaminess/MS -gaming/M -gamin/MS -gamma/MS -gammon/DMSG -Gamow/M -gamut/MS -gamy/TRP -gander/DMGS -Gandhian -Gandhi/M -gangbusters -ganger/M -Ganges/M -gang/GRDMS -gangland/SM -ganglia/M -gangling -ganglionic -ganglion/M -gangplank/SM -gangrene/SDMG -gangrenous -gangster/SM -Gangtok/M -gangway/MS -Gan/M -gannet/SM -Gannie/M -Gannon/M -Ganny/M -gantlet/GMDS -Gantry/M -gantry/MS -Ganymede/M -GAO -gaoler/M -gaol/MRDGZS -gaper/M -gape/S -gaping/Y -gapped -gapping -gap/SJMDRG -garage/GMSD -Garald/M -garbageman/M -garbage/SDMG -garbanzo/MS -garb/DMGS -garbler/M -garble/RSDG -Garbo/M -Garcia/M -gar�on/SM -gardener/M -Gardener/M -gardenia/SM -gardening/M -garden/ZGRDMS -Gardie/M -Gardiner/M -Gard/M -Gardner/M -Gardy/M -Garek/M -Gare/MH -Gareth/M -Garey/M -Garfield/M -garfish/MS -Garfunkel/M -Gargantua/M -gargantuan -gargle/SDG -gargoyle/DSM -Garibaldi/M -Garik/M -garishness/MS -garish/YP -Garland/M -garland/SMDG -garlicked -garlicking -garlicky -garlic/SM -garment/MDGS -Gar/MH -Garner/M -garner/SGD -Garnet/M -garnet/SM -Garnette/M -Garnett/M -garnish/DSLG -garnisheeing -garnishee/SDM -garnishment/MS -Garold/M -garote's -garotte's -Garrard/M -garred -Garrek/M -Garreth/M -Garret/M -garret/SM -Garrett/M -Garrick/M -Garrik/M -garring -Garrison/M -garrison/SGMD -garroter/M -garrote/SRDMZG -Garrot/M -garrotte's -Garrott/M -garrulity/SM -garrulousness/MS -garrulous/PY -Garry/M -gar/SLM -garter/SGDM -Garth/M -Garvey/M -Garvin/M -Garv/M -Garvy/M -Garwin/M -Garwood/M -Gary/M -Garza/M -gasbag/MS -Gascony/M -gaseousness/M -gaseous/YP -gases/C -gas/FC -gash/GTMSRD -gasification/M -gasifier/M -gasify/SRDGXZN -gasket/SM -gaslight/DMS -gasohol/S -gasoline/MS -gasometer/M -Gaspard/M -Gaspar/M -Gasparo/M -gasper/M -Gasper/M -gasp/GZSRD -gasping/Y -gas's -gassed/C -Gasser/M -gasser/MS -Gasset/M -gassiness/M -gassing/SM -gassy/PTR -Gaston/M -gastric -gastritides -gastritis/MS -gastroenteritides -gastroenteritis/M -gastrointestinal -gastronome/SM -gastronomic -gastronomical/Y -gastronomy/MS -gastropod/SM -gasworks/M -gateau/MS -gateaux -gatecrash/GZSRD -gatehouse/MS -gatekeeper/SM -gate/MGDS -gatepost/SM -Gates -gateway/MS -gathered/IA -gatherer/M -gathering/M -gather/JRDZGS -gathers/A -Gatlinburg/M -Gatling/M -Gatorade/M -gator/MS -Gatsby/M -Gatun/M -gaucheness/SM -gaucherie/SM -gauche/TYPR -gaucho/SM -gaudily -gaudiness/MS -gaudy/PRST -gaugeable -gauger/M -Gauguin/M -Gaulish/M -Gaulle/M -Gaul/MS -Gaultiero/M -gauntlet/GSDM -Gauntley/M -gauntness/MS -gaunt/PYRDSGT -gauss/C -gausses -Gaussian -Gauss/M -gauss's -Gautama/M -Gauthier/M -Gautier/M -gauze/SDGM -gauziness/MS -gauzy/TRP -Gavan/M -gave -gavel/GMDS -Gaven/M -Gavin/M -Gav/MN -gavotte/MSDG -Gavra/M -Gavrielle/M -Gawain/M -Gawen/M -gawkily -gawkiness/MS -gawk/SGRDM -gawky/RSPT -Gayel/M -Gayelord/M -Gaye/M -gayety's -Gayla/M -Gayleen/M -Gaylene/M -Gayler/M -Gayle/RM -Gaylord/M -Gaylor/M -Gay/M -gayness/SM -Gaynor/M -gay/RTPS -Gaza/M -gazebo/SM -gaze/DRSZG -gazelle/MS -gazer/M -gazetteer/SGDM -gazette/MGSD -Gaziantep/M -gazillion/S -gazpacho/MS -GB -G/B -Gdansk/M -Gd/M -GDP -Gearalt/M -Gearard/M -gearbox/SM -gear/DMJSG -gearing/M -gearshift/MS -gearstick -gearwheel/SM -Geary/M -gecko/MS -GED -geegaw's -geeing -geek/SM -geeky/RT -geese/M -geest/M -gee/TDS -geezer/MS -Gehenna/M -Gehrig/M -Geiger/M -Geigy/M -geisha/M -gelatinousness/M -gelatinous/PY -gelatin/SM -gelcap -gelding/M -geld/JSGD -gelid -gelignite/MS -gelled -gelling -gel/MBS -Gelya/M -Ge/M -GE/M -Gemini/SM -gemlike -Gemma/M -gemmed -gemming -gem/MS -gemological -gemologist/MS -gemology/MS -gemstone/SM -gen -Gena/M -Genaro/M -gendarme/MS -gender/DMGS -genderless -genealogical/Y -genealogist/SM -genealogy/MS -Gene/M -gene/MS -generalissimo/SM -generalist/MS -generality/MS -generalizable/SM -generalization/MS -generalized/U -generalize/GZBSRD -generalizer/M -general/MSPY -generalness/M -generalship/SM -genera/M -generate/CXAVNGSD -generational -generation/MCA -generative/AY -generators/A -generator/SM -generically -generic/PS -generosity/MS -generously/U -generousness/SM -generous/PY -Genesco/M -genesis/M -Genesis/M -genes/S -genetically -geneticist/MS -genetic/S -genetics/M -Genet/M -Geneva/M -Genevieve/M -Genevra/M -Genghis/M -geniality/FMS -genially/F -genialness/M -genial/PY -Genia/M -genies/K -genie/SM -genii/M -genitalia -genitals -genital/YF -genitive/SM -genitourinary -genius/SM -Gen/M -Genna/M -Gennie/M -Gennifer/M -Genni/M -Genny/M -Genoa/SM -genocidal -genocide/SM -Geno/M -genome/SM -genotype/MS -Genovera/M -genre/MS -gent/AMS -genteelness/MS -genteel/PRYT -gentian/SM -gentile/S -Gentile's -gentility/MS -gentlefolk/S -gentlemanliness/M -gentlemanly/U -gentleman/YM -gentlemen -gentleness/SM -gentle/PRSDGT -gentlewoman/M -gentlewomen/M -gently -gentrification/M -gentrify/NSDGX -Gentry/M -gentry/MS -genuflect/GDS -genuflection/MS -genuineness/SM -genuine/PY -genus -Genvieve/M -geocentric -geocentrically -geocentricism -geochemical/Y -geochemistry/MS -geochronology/M -geodesic/S -geode/SM -geodesy/MS -geodetic/S -Geoff/M -Geoffrey/M -Geoffry/M -geog -geographer/MS -geographic -geographical/Y -geography/MS -geologic -geological/Y -geologist/MS -geology/MS -geom -Geo/M -geomagnetic -geomagnetically -geomagnetism/SM -geometer/MS -geometrical/Y -geometrician/M -geometric/S -geometry/MS -geomorphological -geomorphology/M -geophysical/Y -geophysicist/MS -geophysics/M -geopolitical/Y -geopolitic/S -geopolitics/M -Georas/M -Geordie/M -Georgeanna/M -Georgeanne/M -Georgena/M -George/SM -Georgeta/M -Georgetown/M -Georgetta/M -Georgette/M -Georgia/M -Georgiana/M -Georgianna/M -Georgianne/M -Georgian/S -Georgie/M -Georgi/M -Georgina/M -Georgine/M -Georg/M -Georgy/M -geostationary -geosynchronous -geosyncline/SM -geothermal -geothermic -Geralda/M -Geraldine/M -Gerald/M -geranium/SM -Gerard/M -Gerardo/M -Gerber/M -gerbil/MS -Gerda/M -Gerek/M -Gerhardine/M -Gerhard/M -Gerhardt/M -Gerianna/M -Gerianne/M -geriatric/S -geriatrics/M -Gerick/M -Gerik/M -Geri/M -Geritol/M -Gerladina/M -Ger/M -Germaine/M -Germain/M -Germana/M -germane -Germania/M -Germanic/M -germanium/SM -germanized -German/SM -Germantown/M -Germany/M -Germayne/M -germen/M -germicidal -germicide/MS -germinal/Y -germinated/U -germinate/XVGNSD -germination/M -germinative/Y -germ/MNS -Gerome/M -Geronimo/M -gerontocracy/M -gerontological -gerontologist/SM -gerontology/SM -Gerrard/M -Gerrie/M -Gerrilee/M -Gerri/M -Gerry/M -gerrymander/SGD -Gershwin/MS -Gerta/M -Gertie/M -Gerti/M -Gert/M -Gertruda/M -Gertrude/M -Gertrudis/M -Gertrud/M -Gerty/M -gerundive/M -gerund/SVM -Gery/M -gestalt/M -gestapo/S -Gestapo/SM -gestate/SDGNX -gestational -gestation/M -gesticulate/XSDVGN -gesticulation/M -gesticulative/Y -gestural -gesture/SDMG -gesundheit -getaway/SM -Gethsemane/M -get/S -getter/SDM -getting -Getty/M -Gettysburg/M -getup/MS -gewgaw/MS -Gew�rztraminer -geyser/GDMS -Ghanaian/MS -Ghana/M -Ghanian's -ghastliness/MS -ghastly/TPR -ghat/MS -Ghats/M -Ghent/M -Gherardo/M -gherkin/SM -ghetto/DGMS -ghettoize/SDG -Ghibelline/M -ghostlike -ghostliness/MS -ghostly/TRP -ghost/SMYDG -ghostwrite/RSGZ -ghostwritten -ghostwrote -ghoulishness/SM -ghoulish/PY -ghoul/SM -GHQ -GI -Giacinta/M -Giacobo/M -Giacometti/M -Giacomo/M -Giacopo/M -Giana/M -Gianina/M -Gian/M -Gianna/M -Gianni/M -Giannini/M -giantess/MS -giantkiller -giant/SM -Giauque/M -Giavani/M -gibber/DGS -gibberish/MS -gibbet/MDSG -Gibbie/M -Gibb/MS -Gibbon/M -gibbon/MS -gibbousness/M -gibbous/YP -Gibby/M -gibe/GDRS -giber/M -giblet/MS -Gib/M -Gibraltar/MS -Gibson/M -giddap -giddily -giddiness/SM -Giddings/M -giddy/GPRSDT -Gide/M -Gideon/MS -Gielgud/M -Gienah/M -Giffard/M -Giffer/M -Giffie/M -Gifford/M -Giff/RM -Giffy/M -giftedness/M -gifted/PY -gift/SGMD -gigabyte/S -gigacycle/MS -gigahertz/M -gigantically -giganticness/M -gigantic/P -gigavolt -gigawatt/M -gigged -gigging -giggler/M -giggle/RSDGZ -giggling/Y -giggly/TR -Gigi/M -gig/MS -GIGO -gigolo/MS -gila -Gila/M -Gilberta/M -Gilberte/M -Gilbertina/M -Gilbertine/M -gilbert/M -Gilbert/M -Gilberto/M -Gilbertson/M -Gilburt/M -Gilchrist/M -Gilda/M -gilder/M -gilding/M -gild/JSGZRD -Gilead/M -Gilemette/M -Giles -Gilgamesh/M -Gilkson/M -Gillan/M -Gilles -Gillespie/M -Gillette/M -Gilliam/M -Gillian/M -Gillie/M -Gilligan/M -Gilli/M -Gill/M -gill/SGMRD -Gilly/M -Gilmore/M -Gil/MY -gilt/S -gimbaled -gimbals -Gimbel/M -gimcrackery/SM -gimcrack/S -gimlet/MDSG -gimme/S -gimmick/GDMS -gimmickry/MS -gimmicky -gimp/GSMD -gimpy/RT -Gina/M -Ginelle/M -Ginevra/M -gingerbread/SM -gingerliness/M -gingerly/P -Ginger/M -ginger/SGDYM -gingersnap/SM -gingery -gingham/SM -gingivitis/SM -Gingrich/M -ginkgoes -ginkgo/M -ginmill -gin/MS -ginned -Ginnie/M -Ginnifer/M -Ginni/M -ginning -Ginny/M -Gino/M -Ginsberg/M -Ginsburg/M -ginseng/SM -Gioconda/M -Giordano/M -Giorgia/M -Giorgi/M -Giorgio/M -Giorgione/M -Giotto/M -Giovanna/M -Giovanni/M -Gipsy's -giraffe/MS -Giralda/M -Giraldo/M -Giraud/M -Giraudoux/M -girded/U -girder/M -girdle/GMRSD -girdler/M -gird/RDSGZ -girlfriend/MS -girlhood/SM -girlie/M -girlishness/SM -girlish/YP -girl/MS -giro/M -girt/GDS -girth/MDG -girths -Gisela/M -Giselbert/M -Gisele/M -Gisella/M -Giselle/M -Gish/M -gist/MS -git/M -Giuditta/M -Giulia/M -Giuliano/M -Giulietta/M -Giulio/M -Giuseppe/M -Giustina/M -Giustino/M -Giusto/M -giveaway/SM -giveback/S -give/HZGRS -given/SP -giver/M -giving/Y -Giza/M -Gizela/M -gizmo's -gizzard/SM -Gk/M -glac�/DGS -glacial/Y -glaciate/XNGDS -glaciation/M -glacier/SM -glaciological -glaciologist/M -glaciology/M -gladded -gladden/GDS -gladder -gladdest -gladding -gladdy -glade/SM -gladiatorial -gladiator/SM -Gladi/M -gladiola/MS -gladioli -gladiolus/M -gladly/RT -Glad/M -gladness/MS -gladsome/RT -Gladstone/MS -Gladys -glad/YSP -glamor/DMGS -glamorization/MS -glamorizer/M -glamorize/SRDZG -glamorousness/M -glamorous/PY -glance/GJSD -glancing/Y -glanders/M -glandes -glandular/Y -gland/ZSM -glans/M -glare/SDG -glaringness/M -glaring/YP -Glaser/M -Glasgow/M -glasnost/S -glassblower/S -glassblowing/MS -glassful/MS -glass/GSDM -glasshouse/SM -glassily -glassiness/SM -glassless -Glass/M -glassware/SM -glasswort/M -glassy/PRST -Glastonbury/M -Glaswegian/S -glaucoma/SM -glaucous -glazed/U -glazer/M -glaze/SRDGZJ -glazier/SM -glazing/M -gleam/MDGS -gleaner/M -gleaning/M -glean/RDGZJS -Gleason/M -Gleda/M -gleed/M -glee/DSM -gleefulness/MS -gleeful/YP -gleeing -Glendale/M -Glenda/M -Glenden/M -Glendon/M -Glenine/M -Glen/M -Glenna/M -Glennie/M -Glennis/M -Glenn/M -glen/SM -glibber -glibbest -glibness/MS -glib/YP -glide/JGZSRD -glider/M -glim/M -glimmer/DSJG -glimmering/M -glimpse/DRSZMG -glimpser/M -glint/DSG -glissandi -glissando/M -glisten/DSG -glister/DGS -glitch/MS -glitter/GDSJ -glittering/Y -glittery -glitz/GSD -glitzy/TR -gloaming/MS -gloater/M -gloating/Y -gloat/SRDG -globalism/S -globalist/S -global/SY -globe/SM -globetrotter/MS -glob/GDMS -globularity/M -globularness/M -globular/PY -globule/MS -globulin/MS -glockenspiel/SM -glommed -gloom/GSMD -gloomily -gloominess/MS -gloomy/RTP -glop/MS -glopped -glopping -gloppy/TR -Gloria/M -Gloriana/M -Gloriane/M -glorification/M -glorifier/M -glorify/XZRSDNG -Glori/M -glorious/IYP -gloriousness/IM -Glory/M -glory/SDMG -glossary/MS -gloss/GSDM -glossily -glossiness/SM -glossolalia/SM -glossy/RSPT -glottal -glottalization/M -glottis/MS -Gloucester/M -gloveless -glover/M -Glover/M -glove/SRDGMZ -glower/GD -glow/GZRDMS -glowing/Y -glowworm/SM -glucose/SM -glue/DRSMZG -glued/U -gluer/M -gluey -gluier -gluiest -glummer -glummest -glumness/MS -glum/SYP -gluon/M -glutamate/M -gluten/M -glutenous -glutinousness/M -glutinous/PY -glut/SMNX -glutted -glutting -glutton/MS -gluttonous/Y -gluttony/SM -glyceride/M -glycerinate/MD -glycerine's -glycerin/SM -glycerolized/C -glycerol/SM -glycine/M -glycogen/SM -glycol/MS -Glynda/M -Glynis/M -Glyn/M -Glynnis/M -Glynn/M -glyph/M -glyphs -gm -GM -GMT -gnarl/SMDG -gnash/SDG -gnat/MS -gnawer/M -gnaw/GRDSJ -gnawing/M -gneiss/SM -Gnni/M -gnomelike -GNOME/M -gnome/SM -gnomic -gnomish -gnomonic -gnosticism -Gnosticism/M -gnostic/K -Gnostic/M -GNP -gnu/MS -goad/MDSG -goalie/SM -goalkeeper/MS -goalkeeping/M -goalless -goal/MDSG -goalmouth/M -goalpost/S -goalscorer -goalscoring -goaltender/SM -Goa/M -goatee/SM -goatherd/MS -goat/MS -goatskin/SM -gobbed -gobbet/MS -gobbing -gobbledegook's -gobbledygook/S -gobbler/M -gobble/SRDGZ -Gobi/M -goblet/MS -goblin/SM -gob/SM -Godard/M -Godart/M -godchild/M -godchildren -goddammit -goddamn/GS -Goddard/M -Goddart/M -goddaughter/SM -godded -goddess/MS -godding -G�del/M -godfather/GSDM -godforsaken -Godfree/M -Godfrey/M -Godfry/M -godhead/S -godhood/SM -Godiva/M -godlessness/MS -godless/P -godlikeness/M -godlike/P -godliness/UMS -godly/UTPR -God/M -godmother/MS -Godot/M -godparent/SM -godsend/MS -god/SMY -godson/MS -Godspeed/S -Godthaab/M -Godunov/M -Godwin/M -Godzilla/M -Goebbels/M -Goering/M -goer/MG -goes -Goethals/M -Goethe/M -gofer/SM -Goff/M -goggler/M -goggle/SRDGZ -Gogh/M -Gog/M -Gogol/M -Goiania/M -going/M -goiter/SM -Golan/M -Golconda/M -Golda/M -Goldarina/M -Goldberg/M -goldbricker/M -goldbrick/GZRDMS -Golden/M -goldenness/M -goldenrod/SM -goldenseal/M -golden/TRYP -goldfinch/MS -goldfish/SM -Goldia/M -Goldie/M -Goldilocks/M -Goldi/M -Goldina/M -Golding/M -Goldman/M -goldmine/S -gold/MRNGTS -goldsmith/M -Goldsmith/M -goldsmiths -Goldstein/M -Goldwater/M -Goldwyn/M -Goldy/M -Goleta/M -golfer/M -golf/RDMGZS -Golgotha/M -Goliath/M -Goliaths -golly/S -Gomez/M -Gomorrah/M -Gompers/M -go/MRHZGJ -gonadal -gonad/SM -gondola/SM -gondolier/MS -Gondwanaland/M -goner/M -gone/RZN -gong/SGDM -gonion/M -gonna -gonorrheal -gonorrhea/MS -Gonzales/M -Gonzalez/M -Gonzalo/M -Goober/M -goober/MS -goodbye/MS -goodhearted -goodie's -goodish -goodly/TR -Good/M -Goodman/M -goodness/MS -goodnight -Goodrich/M -good/SYP -goodwill/MS -Goodwin/M -Goodyear/M -goody/SM -gooey -goofiness/MS -goof/SDMG -goofy/RPT -Google/M -gooier -gooiest -gook/SM -goo/MS -goon/SM -goop/SM -gooseberry/MS -goosebumps -goose/M -goos/SDG -GOP -Gopher -gopher/SM -Goran/M -Goraud/M -Gorbachev -Gordan/M -Gorden/M -Gordian/M -Gordie/M -Gordimer/M -Gordon/M -Gordy/M -gore/DSMG -Gore/M -Goren/M -Gorey/M -Gorgas -gorged/E -gorge/GMSRD -gorgeousness/SM -gorgeous/YP -gorger/EM -gorges/E -gorging/E -Gorgon/M -gorgon/S -Gorgonzola/M -Gorham/M -gorilla/MS -gorily -goriness/MS -goring/M -Gorky/M -gormandizer/M -gormandize/SRDGZ -gormless -gorp/S -gorse/SM -gory/PRT -gos -goshawk/MS -gosh/S -gosling/M -gospeler/M -gospel/MRSZ -Gospel/SM -gossamer/SM -gossipy -gossip/ZGMRDS -gotcha/SM -G�teborg/M -Gotham/M -Gothart/M -Gothicism/M -Gothic/S -Goth/M -Goths -got/IU -goto -GOTO/MS -gotta -gotten/U -Gottfried/M -Goucher/M -Gouda/SM -gouge/GZSRD -gouger/M -goulash/SM -Gould/M -Gounod/M -gourde/SM -gourd/MS -gourmand/MS -gourmet/MS -gout/SM -gouty/RT -governable/U -governance/SM -governed/U -governess/SM -govern/LBGSD -governmental/Y -government/MS -Governor -governor/MS -governorship/SM -gov/S -govt -gown/GSDM -Goya/M -GP -GPA -GPO -GPSS -gr -grabbed -grabber/SM -grabbing/S -grab/S -Gracchus/M -grace/ESDMG -graceful/EYPU -gracefuller -gracefullest -gracefulness/ESM -Graceland/M -gracelessness/MS -graceless/PY -Grace/M -Gracia/M -Graciela/M -Gracie/M -graciousness/SM -gracious/UY -grackle/SM -gradate/DSNGX -gradation/MCS -grade/ACSDG -graded/U -Gradeigh/M -gradely -grader/MC -grade's -Gradey/M -gradient/RMS -grad/MRDGZJS -gradualism/MS -gradualist/MS -gradualness/MS -gradual/SYP -graduand/SM -graduate/MNGDSX -graduation/M -Grady/M -Graehme/M -Graeme/M -Graffias/M -graffiti -graffito/M -Graff/M -grafter/M -grafting/M -graft/MRDSGZ -Grafton/M -Grahame/M -Graham/M -graham/SM -Graig/M -grail/S -Grail/SM -grainer/M -grain/IGSD -graininess/MS -graining/M -grain's -grainy/RTP -gram/KSM -Gram/M -grammarian/SM -grammar/MS -grammaticality/M -grammaticalness/M -grammatical/UY -grammatic/K -gramme/SM -Grammy/S -gramophone/SM -Grampians -grampus/SM -Granada/M -granary/MS -grandam/SM -grandaunt/MS -grandchild/M -grandchildren -granddaddy/MS -granddad/SM -granddaughter/MS -grandee/SM -grandeur/MS -grandfather/MYDSG -grandiloquence/SM -grandiloquent/Y -grandiose/YP -grandiosity/MS -grandkid/SM -grandma/MS -grandmaster/MS -grandmother/MYS -grandnephew/MS -grandness/MS -grandniece/SM -grandpa/MS -grandparent/MS -grandson/MS -grandstander/M -grandstand/SRDMG -grand/TPSYR -granduncle/MS -Grange/MR -grange/MSR -Granger/M -granite/MS -granitic -Gran/M -Grannie/M -Granny/M -granny/MS -granola/S -grantee/MS -granter/M -Grantham/M -Granthem/M -Grantley/M -Grant/M -grantor's -grant/SGZMRD -grantsmanship/S -granularity/SM -granular/Y -granulate/SDXVGN -granulation/M -granule/SM -granulocytic -Granville/M -grapefruit/SM -grape/SDGM -grapeshot/M -grapevine/MS -grapheme/M -graph/GMD -graphical/Y -graphicness/M -graphic/PS -graphics/M -graphite/SM -graphologist/SM -graphology/MS -graphs -grapnel/SM -grapple/DRSG -grappler/M -grappling/M -grasper/M -graspingness/M -grasping/PY -grasp/SRDBG -grass/GZSDM -grasshopper/SM -grassland/MS -Grass/M -grassroots -grassy/RT -Grata/M -gratefuller -gratefullest -gratefulness/USM -grateful/YPU -grater/M -grates/I -grate/SRDJGZ -Gratia/M -Gratiana/M -graticule/M -gratification/M -gratified/U -gratifying/Y -gratify/NDSXG -grating/YM -gratis -gratitude/IMS -gratuitousness/MS -gratuitous/PY -gratuity/SM -gravamen/SM -gravedigger/SM -gravel/SGMYD -graven -graveness/MS -graver/M -graveside/S -Graves/M -grave/SRDPGMZTY -gravestone/SM -graveyard/MS -gravidness/M -gravid/PY -gravimeter/SM -gravimetric -gravitas -gravitate/XVGNSD -gravitational/Y -gravitation/M -graviton/SM -gravity/MS -gravy/SM -graybeard/MS -Grayce/M -grayish -Gray/M -grayness/S -gray/PYRDGTS -Grayson/M -graze/GZSRD -grazer/M -Grazia/M -grazing/M -grease/GMZSRD -greasepaint/MS -greaseproof -greaser/M -greasily -greasiness/SM -greasy/PRT -greatcoat/DMS -greaten/DG -greathearted -greatness/MS -great/SPTYRN -grebe/MS -Grecian/S -Greece/M -greed/C -greedily -greediness/SM -greeds -greed's -greedy/RTP -Greek/SM -Greeley/M -greenback/MS -greenbelt/S -Greenberg/M -Greenblatt/M -Greenbriar/M -Greene/M -greenery/MS -Greenfeld/M -greenfield -Greenfield/M -greenfly/M -greengage/SM -greengrocer/SM -greengrocery/M -greenhorn/SM -greenhouse/SM -greening/M -greenish/P -Greenland/M -Green/M -greenmail/GDS -greenness/MS -Greenpeace/M -greenroom/SM -Greensboro/M -Greensleeves/M -Greensville/M -greensward/SM -green/SYRDMPGT -Greentree/M -Greenville/M -Greenwich/M -greenwood/MS -Greer/M -greeter/M -greeting/M -greets/A -greet/SRDJGZ -gregariousness/MS -gregarious/PY -Gregg/M -Greggory/M -Greg/M -Gregoire/M -Gregoor/M -Gregorian -Gregorio/M -Gregorius/M -Gregor/M -Gregory/M -gremlin/SM -Grenada/M -grenade/MS -Grenadian/S -grenadier/SM -Grenadines -grenadine/SM -Grendel/M -Grenier/M -Grenoble/M -Grenville/M -Gresham/M -Gretal/M -Greta/M -Gretchen/M -Gretel/M -Grete/M -Grethel/M -Gretna/M -Gretta/M -Gretzky/M -grew/A -greybeard/M -greyhound/MS -Grey/M -greyness/M -gridded -griddlecake/SM -griddle/DSGM -gridiron/GSMD -gridlock/DSG -grids/A -grid/SGM -grief/MS -Grieg/M -Grier/M -grievance/SM -griever/M -grieve/SRDGZ -grieving/Y -grievousness/SM -grievous/PY -Griffie/M -Griffin/M -griffin/SM -Griffith/M -Griff/M -griffon's -Griffy/M -griller/M -grille/SM -grill/RDGS -grillwork/M -grimace/DRSGM -grimacer/M -Grimaldi/M -grime/MS -Grimes -griminess/MS -grimmer -grimmest -Grimm/M -grimness/MS -grim/PGYD -grimy/TPR -Grinch/M -grind/ASG -grinder/MS -grinding/SY -grindstone/SM -gringo/SM -grinned -grinner/M -grinning/Y -grin/S -griper/M -gripe/S -grippe/GMZSRD -gripper/M -gripping/Y -grip/SGZMRD -Griselda/M -grisliness/SM -grisly/RPT -Gris/M -Grissel/M -gristle/SM -gristliness/M -gristly/TRP -gristmill/MS -grist/MYS -Griswold/M -grit/MS -gritted -gritter/MS -grittiness/SM -gritting -gritty/PRT -Griz/M -grizzle/DSG -grizzling/M -grizzly/TRS -Gr/M -groaner/M -groan/GZSRDM -groat/SM -grocer/MS -grocery/MS -groggily -grogginess/SM -groggy/RPT -grog/MS -groin/MGSD -grokked -grokking -grok/S -grommet/GMDS -Gromyko/M -groofs -groomer/M -groom/GZSMRD -groomsman/M -groomsmen -Groot/M -groover/M -groove/SRDGM -groovy/TR -groper/M -grope/SRDJGZ -Gropius/M -grosbeak/SM -grosgrain/MS -Gross -Grosset/M -gross/GTYSRDP -Grossman/M -grossness/MS -Grosvenor/M -Grosz/M -grotesqueness/MS -grotesque/PSY -Grotius/M -Groton/M -grottoes -grotto/M -grouch/GDS -grouchily -grouchiness/MS -grouchy/RPT -groundbreaking/S -grounded/U -grounder/M -groundhog/SM -ground/JGZMDRS -groundlessness/M -groundless/YP -groundnut/MS -groundsheet/M -groundskeepers -groundsman/M -groundswell/S -groundwater/S -groundwork/SM -grouped/A -grouper/M -groupie/MS -grouping/M -groups/A -group/ZJSMRDG -grouse/GMZSRD -grouser/M -grouter/M -grout/GSMRD -groveler/M -grovelike -groveling/Y -grovel/SDRGZ -Grover/M -Grove/RM -grove/SRMZ -grower/M -grow/GZYRHS -growing/I -growingly -growler/M -growling/Y -growl/RDGZS -growly/RP -grown/IA -grownup/MS -grows/A -growth/IMA -growths/IA -grubbed -grubber/SM -grubbily -grubbiness/SM -grubbing -grubby/RTP -grub/MS -grubstake/MSDG -grudge/GMSRDJ -grudger/M -grudging/Y -grueling/Y -gruel/MDGJS -gruesomeness/SM -gruesome/RYTP -gruffness/MS -gruff/PSGTYRD -grumble/GZJDSR -grumbler/M -grumbling/Y -Grumman/M -grumpily -grumpiness/MS -grump/MDGS -grumpy/TPR -Grundy/M -Gr�newald/M -grunge/S -grungy/RT -grunion/SM -grunter/M -grunt/SGRD -Grusky/M -Grus/M -Gruy�re -Gruyeres -gryphon's -g's -G's -gs/A -GSA -gt -GU -guacamole/MS -Guadalajara/M -Guadalcanal/M -Guadalquivir/M -Guadalupe/M -Guadeloupe/M -Guallatiri/M -Gualterio/M -Guamanian/SM -Guam/M -Guangzhou -guanine/MS -guano/MS -Guantanamo/M -Guarani/M -guarani/SM -guaranteeing -guarantee/RSDZM -guarantor/SM -guaranty/MSDG -guardedness/UM -guarded/UYP -guarder/M -guardhouse/SM -Guardia/M -guardianship/MS -guardian/SM -guardrail/SM -guard/RDSGZ -guardroom/SM -guardsman/M -guardsmen -Guarnieri/M -Guatemala/M -Guatemalan/S -guava/SM -Guayaquil/M -gubernatorial -Gucci/M -gudgeon/M -Guelph/M -Guendolen/M -Guenevere/M -Guenna/M -Guenther/M -guernsey/S -Guernsey/SM -Guerra/M -Guerrero/M -guerrilla/MS -guessable/U -guess/BGZRSD -guessed/U -guesser/M -guesstimate/DSMG -guesswork/MS -guest/SGMD -Guevara/M -guffaw/GSDM -guff/SM -Guggenheim/M -Guglielma/M -Guglielmo/M -Guhleman/M -GUI -Guiana/M -guidance/MS -guidebook/SM -guided/U -guide/GZSRD -guideline/SM -guidepost/MS -guider/M -Guido/M -Guilbert/M -guilder/M -guildhall/SM -guild/SZMR -guileful -guilelessness/MS -guileless/YP -guile/SDGM -Guillaume/M -Guillema/M -Guillemette/M -guillemot/MS -Guillermo/M -guillotine/SDGM -guiltily -guiltiness/MS -guiltlessness/M -guiltless/YP -guilt/SM -guilty/PTR -Gui/M -Guinea/M -Guinean/S -guinea/SM -Guinevere/M -Guinna/M -Guinness/M -guise's -guise/SDEG -guitarist/SM -guitar/SM -Guiyang -Guizot/M -Gujarati/M -Gujarat/M -Gujranwala/M -gulag/S -gulch/MS -gulden/MS -gulf/DMGS -Gullah/M -gullet/MS -gulley's -gullibility/MS -gullible -Gulliver/M -gull/MDSG -gully/SDMG -gulp/RDGZS -gumboil/MS -gumbo/MS -gumboots -gumdrop/SM -gummed -gumminess/M -gumming/C -gum/MS -gummy/RTP -gumption/SM -gumshoeing -gumshoe/SDM -gumtree/MS -Gunar/M -gunboat/MS -Gunderson/M -gunfighter/M -gunfight/SRMGZ -gunfire/SM -gunflint/M -gunfought -Gunilla/M -gunk/SM -gunky/RT -Gun/M -gunman/M -gunmen -gunmetal/MS -gun/MS -Gunnar/M -gunned -gunnel's -Gunner/M -gunner/SM -gunnery/MS -gunning/M -gunnysack/SM -gunny/SM -gunpoint/MS -gunpowder/SM -gunrunner/MS -gunrunning/MS -gunship/S -gunshot/SM -gunslinger/M -gunsling/GZR -gunsmith/M -gunsmiths -Guntar/M -Gunter/M -Gunther/M -gunwale/MS -Guofeng/M -guppy/SM -Gupta/M -gurgle/SDG -Gurkha/M -gurney/S -guru/MS -Gusella/M -gusher/M -gush/SRDGZ -gushy/TR -Gus/M -Guss -gusset/MDSG -Gussie/M -Gussi/M -gussy/GSD -Gussy/M -Gustaf/M -Gustafson/M -Gusta/M -gustatory -Gustave/M -Gustav/M -Gustavo/M -Gustavus/M -gusted/E -Gustie/M -gustily -Gusti/M -gustiness/M -gusting/E -gust/MDGS -gustoes -gusto/M -gusts/E -Gusty/M -gusty/RPT -Gutenberg/M -Guthrey/M -Guthrie/M -Guthry/M -Gutierrez/M -gutlessness/S -gutless/P -gutser/M -gutsiness/M -gut/SM -guts/R -gutsy/PTR -gutted -gutter/GSDM -guttering/M -guttersnipe/M -gutting -gutturalness/M -guttural/SPY -gutty/RSMT -Guyana/M -Guyanese -Guy/M -guy/MDRZGS -Guzman/M -guzzle/GZRSD -guzzler/M -g/VBX -Gwalior/M -Gwendolen/M -Gwendoline/M -Gwendolin/M -Gwendolyn/M -Gweneth/M -Gwenette/M -Gwen/M -Gwenneth/M -Gwennie/M -Gwenni/M -Gwenny/M -Gwenora/M -Gwenore/M -Gwyneth/M -Gwyn/M -Gwynne/M -gymkhana/SM -gym/MS -gymnasia's -gymnasium/SM -gymnastically -gymnastic/S -gymnastics/M -gymnast/SM -gymnosperm/SM -gynecologic -gynecological/MS -gynecologist/SM -gynecology/MS -gypped -gypper/S -gypping -gyp/S -gypsite -gypster/S -gypsum/MS -gypsy/SDMG -Gypsy/SM -gyrate/XNGSD -gyration/M -gyrator/MS -gyrfalcon/SM -gyrocompass/M -gyro/MS -gyroscope/SM -gyroscopic -gyve/GDS -H -Haag/M -Haas/M -Habakkuk/M -habeas -haberdasher/SM -haberdashery/SM -Haber/M -Haberman/M -Habib/M -habiliment/SM -habitability/MS -habitableness/M -habitable/P -habitant/ISM -habitation/MI -habitations -habitat/MS -habit/IBDGS -habit's -habitualness/SM -habitual/SYP -habituate/SDNGX -habituation/M -habitu�/MS -hacienda/MS -hacker/M -Hackett/M -hack/GZSDRBJ -hackler/M -hackle/RSDMG -hackney/SMDG -hacksaw/SDMG -hackwork/S -Hadamard/M -Hadar/M -Haddad/M -haddock/MS -hades -Hades -had/GD -hadji's -hadj's -Hadlee/M -Hadleigh/M -Hadley/M -Had/M -hadn't -Hadria/M -Hadrian/M -hadron/MS -hadst -haemoglobin's -haemophilia's -haemorrhage's -Hafiz/M -hafnium/MS -haft/GSMD -Hagan/M -Hagar/M -Hagen/M -Hager/M -Haggai/M -haggardness/MS -haggard/SYP -hagged -hagging -haggish -haggis/SM -haggler/M -haggle/RSDZG -Hagiographa/M -hagiographer/SM -hagiography/MS -hag/SMN -Hagstrom/M -Hague/M -ha/H -hahnium/S -Hahn/M -Haifa/M -haiku/M -Hailee/M -hailer/M -Hailey/M -hail/SGMDR -hailstone/SM -hailstorm/SM -Haily/M -Haiphong/M -hairball/SM -hairbreadth/M -hairbreadths -hairbrush/SM -haircare -haircloth/M -haircloths -haircut/MS -haircutting -hairdo/SM -hairdresser/SM -hairdressing/SM -hairdryer/S -hairiness/MS -hairlessness/M -hairless/P -hairlike -hairline/SM -hairnet/MS -hairpiece/MS -hairpin/MS -hairsbreadth -hairsbreadths -hair/SDM -hairsplitter/SM -hairsplitting/MS -hairspray -hairspring/SM -hairstyle/SMG -hairstylist/S -hairy/PTR -Haitian/S -Haiti/M -hajjes -hajji/MS -hajj/M -Hakeem/M -hake/MS -Hakim/M -Hakka/M -Hakluyt/M -halalled -halalling -halal/S -halberd/SM -halcyon/S -Haldane/M -Haleakala/M -Haleigh/M -hale/ISRDG -Hale/M -haler/IM -halest -Halette/M -Haley/M -halfback/SM -halfbreed -halfheartedness/MS -halfhearted/PY -halfpence/S -halfpenny/MS -halfpennyworth -half/PM -halftime/S -halftone/MS -halfway -halfword/MS -halibut/SM -halide/SM -Halie/M -Halifax/M -Hali/M -Halimeda/M -halite/MS -halitoses -halitosis/M -hallelujah -hallelujahs -Halley/M -halliard's -Hallie/M -Halli/M -Hallinan/M -Hall/M -Hallmark/M -hallmark/SGMD -hallo/GDS -halloo's -Halloween/MS -hallowing -hallows -hallow/UD -hall/SMR -Hallsy/M -hallucinate/VNGSDX -hallucination/M -hallucinatory -hallucinogenic/S -hallucinogen/SM -hallway/SM -Hally/M -halocarbon -halogenated -halogen/SM -halon -halo/SDMG -Halpern/M -Halsey/M -Hal/SMY -Halsy/M -halter/GDM -halt/GZJSMDR -halting/Y -halve/GZDS -halves/M -halyard/MS -Ha/M -Hamal/M -Haman/M -hamburger/M -Hamburg/MS -hamburg/SZRM -Hamel/M -Hamey/M -Hamhung/M -Hamid/M -Hamilcar/M -Hamil/M -Hamiltonian/MS -Hamilton/M -Hamish/M -Hamitic/M -Hamlen/M -Hamlet/M -hamlet/MS -Hamlin/M -Ham/M -Hammad/M -Hammarskjold/M -hammed -hammerer/M -hammerhead/SM -hammering/M -hammerless -hammerlock/MS -Hammerstein/M -hammertoe/SM -hammer/ZGSRDM -Hammett/M -hamming -hammock/MS -Hammond/M -Hammurabi/M -hammy/RT -Hamnet/M -hampered/U -hamper/GSD -Hampshire/M -Hampton/M -ham/SM -hamster/MS -hamstring/MGS -hamstrung -Hamsun/M -Hana/M -Hanan/M -Hancock/M -handbagged -handbagging -handbag/MS -handball/SM -handbarrow/MS -handbasin -handbill/MS -handbook/SM -handbrake/M -handcar/SM -handcart/MS -handclasp/MS -handcraft/GMDS -handcuff/GSD -handcuffs/M -handedness/M -handed/PY -Handel/M -hander/S -handful/SM -handgun/SM -handhold/M -handicapped -handicapper/SM -handicapping -handicap/SM -handicraftsman/M -handicraftsmen -handicraft/SMR -handily/U -handiness/SM -handiwork/MS -handkerchief/MS -handleable -handlebar/SM -handle/MZGRSD -handler/M -handless -handling/M -handmade -handmaiden/M -handmaid/NMSX -handout/SM -handover -handpick/GDS -handrail/SM -hand's -handsaw/SM -handset/SM -handshake/GMSR -handshaker/M -handshaking/M -handsomely/U -handsomeness/MS -handsome/RPTY -handspike/SM -handspring/SM -handstand/MS -hand/UDSG -handwork/SM -handwoven -handwrite/GSJ -handwriting/M -handwritten -Handy/M -handyman/M -handymen -handy/URT -Haney/M -hangar/SGDM -hangdog/S -hanged/A -hanger/M -hang/GDRZBSJ -hanging/M -hangman/M -hangmen -hangnail/MS -hangout/MS -hangover/SM -hangs/A -Hangul/M -hangup/S -Hangzhou -Hankel/M -hankerer/M -hanker/GRDJ -hankering/M -hank/GZDRMS -hankie/SM -Hank/M -hanky's -Hannah/M -Hanna/M -Hannibal/M -Hannie/M -Hanni/MS -Hanny/M -Hanoi/M -Hanoverian -Hanover/M -Hansel/M -Hansen/M -Hansiain/M -Han/SM -Hans/N -hansom/MS -Hanson/M -Hanuka/S -Hanukkah/M -Hanukkahs -Hapgood/M -haphazardness/SM -haphazard/SPY -haplessness/MS -hapless/YP -haploid/S -happed -happening/M -happen/JDGS -happenstance/SM -happily/U -happiness/UMS -happing -Happy/M -happy/UTPR -Hapsburg/M -hap/SMY -Harald/M -harangue/GDRS -haranguer/M -Harare -harasser/M -harass/LSRDZG -harassment/SM -Harbert/M -harbinger/DMSG -Harbin/M -harborer/M -harbor/ZGRDMS -Harcourt/M -hardback/SM -hardball/SM -hardboard/SM -hardboiled -hardbound -hardcore/MS -hardcover/SM -hardened/U -hardener/M -hardening/M -harden/ZGRD -hardhat/S -hardheadedness/SM -hardheaded/YP -hardheartedness/SM -hardhearted/YP -hardihood/MS -hardily -hardiness/SM -Harding/M -Hardin/M -hardliner/S -hardness/MS -hardscrabble -hardshell -hardship/MS -hardstand/S -hardtack/MS -hardtop/MS -hardware/SM -hardwire/DSG -hardwood/MS -hardworking -Hardy/M -hard/YNRPJGXTS -hardy/PTRS -harebell/MS -harebrained -harelip/MS -harelipped -hare/MGDS -harem/SM -Hargreaves/M -hark/GDS -Harland/M -Harlan/M -Harlem/M -Harlene/M -Harlen/M -Harlequin -harlequin/MS -Harley/M -Harlie/M -Harli/M -Harlin/M -harlotry/MS -harlot/SM -Harlow/M -Harman/M -harmed/U -harmer/M -harmfulness/MS -harmful/PY -harmlessness/SM -harmless/YP -harm/MDRGS -Harmonia/M -harmonically -harmonica/MS -harmonic/S -harmonics/M -Harmonie/M -harmonious/IPY -harmoniousness/MS -harmoniousness's/I -harmonium/MS -harmonization/A -harmonizations -harmonization's -harmonized/U -harmonizer/M -harmonizes/UA -harmonize/ZGSRD -Harmon/M -harmony/EMS -Harmony/M -harness/DRSMG -harnessed/U -harnesser/M -harnesses/U -Harold/M -Haroun/M -harper/M -Harper/M -harping/M -harpist/SM -harp/MDRJGZS -Harp/MR -harpooner/M -harpoon/SZGDRM -harpsichordist/MS -harpsichord/SM -harpy/SM -Harpy/SM -Harrell/M -harridan/SM -Harrie/M -harrier/M -Harriet/M -Harrietta/M -Harriette/M -Harriett/M -Harrington/M -Harriot/M -Harriott/M -Harrisburg/M -Harri/SM -Harrisonburg/M -Harrison/M -harrower/M -harrow/RDMGS -harrumph/SDG -Harry/M -harry/RSDGZ -harshen/GD -harshness/SM -harsh/TRNYP -Harte/M -Hartford/M -Hartley/M -Hartline/M -Hart/M -Hartman/M -hart/MS -Hartwell/M -Harvard/M -harvested/U -harvester/M -harvestman/M -harvest/MDRZGS -Harvey/MS -Harv/M -Harwell/M -Harwilll/M -has -Hasbro/M -hash/AGSD -Hasheem/M -hasher/M -Hashim/M -hashing/M -hashish/MS -hash's -Hasidim -Haskell/M -Haskel/M -Haskins/M -Haslett/M -hasn't -hasp/GMDS -hassle/MGRSD -hassock/MS -haste/MS -hastener/M -hasten/GRD -hast/GXJDN -Hastie/M -hastily -hastiness/MS -Hastings/M -Hasty/M -hasty/RPT -hatchback/SM -hatcheck/S -hatched/U -hatcher/M -hatchery/MS -hatchet/MDSG -hatching/M -hatch/RSDJG -Hatchure/M -hatchway/MS -hatefulness/MS -hateful/YP -hater/M -hate/S -Hatfield/M -Hathaway/M -hatless -hat/MDRSZG -hatred/SM -hatstands -hatted -Hatteras/M -hatter/SM -Hattie/M -Hatti/M -hatting -Hatty/M -hauberk/SM -Haugen/M -haughtily -haughtiness/SM -haughty/TPR -haulage/MS -hauler/M -haul/SDRGZ -haunch/GMSD -haunter/M -haunting/Y -haunt/JRDSZG -Hauptmann/M -Hausa/M -Hausdorff/M -Hauser/M -hauteur/MS -Havana/SM -Havarti -Havel/M -haven/DMGS -Haven/M -haven't -haver/G -haversack/SM -have/ZGSR -havocked -havocking -havoc/SM -Haw -Hawaiian/S -Hawaii/M -hawker/M -hawk/GZSDRM -Hawking -hawking/M -Hawkins/M -hawkishness/S -hawkish/P -Hawley/M -haw/MDSG -hawser/M -haws/RZ -Hawthorne/M -hawthorn/MS -haycock/SM -Hayden/M -Haydn/M -Haydon/M -Hayes -hayfield/MS -hay/GSMDR -Hayley/M -hayloft/MS -haymow/MS -Haynes -hayrick/MS -hayride/MS -hayseed/MS -Hay/SM -haystack/SM -haywain -Hayward/M -haywire/MS -Haywood/M -Hayyim/M -hazard/MDGS -hazardousness/M -hazardous/PY -haze/DSRJMZG -Hazel/M -hazel/MS -hazelnut/SM -Haze/M -hazer/M -hazily -haziness/MS -hazing/M -Hazlett/M -Hazlitt/M -hazy/PTR -HBO/M -hdqrs -HDTV -headache/MS -headband/SM -headboard/MS -headcount -headdress/MS -header/M -headfirst -headgear/SM -headhunter/M -headhunting/M -headhunt/ZGSRDMJ -headily -headiness/S -heading/M -headlamp/S -headland/MS -headlessness/M -headless/P -headlight/MS -headline/DRSZMG -headliner/M -headlock/MS -headlong -Head/M -headman/M -headmaster/MS -headmastership/M -headmen -headmistress/MS -headphone/SM -headpiece/SM -headpin/MS -headquarter/GDS -headrest/MS -headroom/SM -headscarf/M -headset/SM -headship/SM -headshrinker/MS -head/SJGZMDR -headsman/M -headsmen -headstall/SM -headstand/MS -headstock/M -headstone/MS -headstrong -headwaiter/SM -headwall/S -headwater/S -headway/MS -headwind/SM -headword/MS -heady/PTR -heal/DRHSGZ -healed/U -healer/M -Heall/M -healthfully -healthfulness/SM -healthful/U -healthily/U -healthiness/MSU -health/M -healths -healthy/URPT -heap/SMDG -heard/UA -hearer/M -hearing/AM -hearken/SGD -hearsay/SM -hearse/M -hears/SDAG -Hearst/M -heartache/SM -heartbeat/MS -heartbreak/GMS -heartbreaking/Y -heartbroke -heartbroken -heartburning/M -heartburn/SGM -hearted/Y -hearten/EGDS -heartening/EY -heartfelt -hearth/M -hearthrug -hearths -hearthstone/MS -heartily -heartiness/SM -heartland/SM -heartlessness/SM -heartless/YP -heartrending/Y -heartsickness/MS -heartsick/P -heart/SMDNXG -heartstrings -heartthrob/MS -heartwarming -Heartwood/M -heartwood/SM -hearty/TRSP -hear/ZTSRHJG -heatedly -heated/UA -heater/M -heathendom/SM -heathenish/Y -heathenism/MS -heathen/M -heather/M -Heather/M -heathery -Heathkit/M -heathland -Heathman/M -Heath/MR -heath/MRNZX -heaths -heatproof -heats/A -heat/SMDRGZBJ -heatstroke/MS -heatwave -heave/DSRGZ -heavenliness/M -heavenly/PTR -heaven/SYM -heavenward/S -heaver/M -heaves/M -heavily -heaviness/MS -Heaviside/M -heavyhearted -heavyset -heavy/TPRS -heavyweight/SM -Hebe/M -hebephrenic -Hebert/M -Heb/M -Hebraic -Hebraism/MS -Hebrew/SM -Hebrides/M -Hecate/M -hecatomb/M -heckler/M -heckle/RSDZG -heck/S -hectare/MS -hectically -hectic/S -hectogram/MS -hectometer/SM -Hector/M -hector/SGD -Hecuba/M -he'd -Heda/M -Hedda/M -Heddie/M -Heddi/M -hedge/DSRGMZ -hedgehog/MS -hedgehopped -hedgehopping -hedgehop/S -hedger/M -hedgerow/SM -hedging/Y -Hedi/M -hedonism/SM -hedonistic -hedonist/MS -Hedvige/M -Hedvig/M -Hedwiga/M -Hedwig/M -Hedy/M -heeded/U -heedfulness/M -heedful/PY -heeding/U -heedlessness/SM -heedless/YP -heed/SMGD -heehaw/DGS -heeler/M -heeling/M -heelless -heel/SGZMDR -Heep/M -Hefner/M -heft/GSD -heftily -heftiness/SM -hefty/TRP -Hegelian -Hegel/M -hegemonic -hegemony/MS -Hegira/M -hegira/S -Heida/M -Heidegger/M -Heidelberg/M -Heidie/M -Heidi/M -heifer/MS -Heifetz/M -heighten/GD -height/SMNX -Heimlich/M -Heindrick/M -Heineken/M -Heine/M -Heinlein/M -heinousness/SM -heinous/PY -Heinrich/M -Heinrick/M -Heinrik/M -Heinze/M -Heinz/M -heiress/MS -heirloom/MS -heir/SDMG -Heisenberg/M -Heiser/M -heister/M -heist/GSMRD -Hejira's -Helaina/M -Helaine/M -held -Helena/M -Helene/M -Helenka/M -Helen/M -Helga/M -Helge/M -helical/Y -helices/M -helicon/M -Helicon/M -helicopter/GSMD -heliocentric -heliography/M -Heliopolis/M -Helios/M -heliosphere -heliotrope/SM -heliport/MS -helium/MS -helix/M -he'll -hellbender/M -hellbent -hellcat/SM -hellebore/SM -Hellene/SM -Hellenic -Hellenism/MS -Hellenistic -Hellenist/MS -Hellenization/M -Hellenize -heller/M -Heller/M -Hellespont/M -hellfire/M -hell/GSMDR -hellhole/SM -Helli/M -hellion/SM -hellishness/SM -hellish/PY -Hellman/M -hello/GMS -Hell's -helluva -helmed -helmet/GSMD -Helmholtz/M -helming -helms -helm's -helmsman/M -helmsmen -helm/U -Helmut/M -H�loise/M -helot/S -helper/M -helpfulness/MS -helpful/UY -help/GZSJDR -helping/M -helplessness/SM -helpless/YP -helpline/S -helpmate/SM -helpmeet's -Helsa/M -Helsinki/M -helve/GMDS -Helvetian/S -Helvetius/M -Helyn/M -He/M -hematite/MS -hematologic -hematological -hematologist/SM -hematology/MS -heme/MS -Hemingway/M -hemisphere/MSD -hemispheric -hemispherical -hemline/SM -hemlock/MS -hemmed -hemmer/SM -hemming -hem/MS -hemoglobin/MS -hemolytic -hemophiliac/SM -hemophilia/SM -hemorrhage/GMDS -hemorrhagic -hemorrhoid/MS -hemostat/SM -hemp/MNS -h/EMS -hemstitch/DSMG -henceforth -henceforward -hence/S -Hench/M -henchman/M -henchmen -Henderson/M -Hendrick/SM -Hendrickson/M -Hendrika/M -Hendrik/M -Hendrix/M -henge/M -Henka/M -Henley/M -hen/MS -henna/MDSG -Hennessey/M -henning -henpeck/GSD -Henrie/M -Henrieta/M -Henrietta/M -Henriette/M -Henrik/M -Henri/M -Henryetta/M -henry/M -Henry/M -Hensley/M -Henson/M -heparin/MS -hepatic/S -hepatitides -hepatitis/M -Hepburn/M -Hephaestus/M -Hephzibah/M -hepper -heppest -Hepplewhite -hep/S -heptagonal -heptagon/SM -heptane/M -heptathlon/S -her -Heracles/M -Heraclitus/M -heralded/U -heraldic -herald/MDSG -heraldry/MS -Hera/M -herbaceous -herbage/MS -herbalism -herbalist/MS -herbal/S -Herbart/M -Herbert/M -herbicidal -herbicide/MS -Herbie/M -herbivore/SM -herbivorous/Y -Herb/M -herb/MS -Herby/M -Herc/M -Herculaneum/M -herculean -Herculean -Hercule/MS -Herculie/M -herder/M -Herder/M -herd/MDRGZS -herdsman/M -herdsmen -hereabout/S -hereafter/S -hereby -hereditary -heredity/MS -Hereford/SM -herein -hereinafter -here/IS -hereof -hereon -here's -heres/M -heresy/SM -heretical -heretic/SM -hereto -heretofore -hereunder -hereunto -hereupon -herewith -Heriberto/M -heritable -heritage/MS -heritor/IM -Herkimer/M -Herman/M -Hermann/M -hermaphrodite/SM -hermaphroditic -Hermaphroditus/M -hermeneutic/S -hermeneutics/M -Hermes -hermetical/Y -hermetic/S -Hermia/M -Hermie/M -Hermina/M -Hermine/M -Herminia/M -Hermione/M -hermitage/SM -Hermite/M -hermitian -hermit/MS -Hermon/M -Hermosa/M -Hermosillo/M -Hermy/M -Hernandez/M -Hernando/M -hernial -hernia/MS -herniate/NGXDS -Herod/M -Herodotus/M -heroes -heroically -heroics -heroic/U -heroine/SM -heroin/MS -heroism/SM -Herold/M -hero/M -heron/SM -herpes/M -herpetologist/SM -herpetology/MS -Herrera/M -Herrick/M -herringbone/SDGM -Herring/M -herring/SM -Herrington/M -Herr/MG -Herschel/M -Hersch/M -herself -Hersey/M -Hershel/M -Hershey/M -Hersh/M -Herta/M -Hertha/M -hertz/M -Hertz/M -Hertzog/M -Hertzsprung/M -Herve/M -Hervey/M -Herzegovina/M -Herzl/M -hes -Hesiod/M -hesitance/S -hesitancy/SM -hesitantly -hesitant/U -hesitater/M -hesitate/XDRSNG -hesitating/UY -hesitation/M -Hesperus/M -Hesse/M -Hessian/MS -Hess/M -Hester/M -Hesther/M -Hestia/M -Heston/M -heterodox -heterodoxy/MS -heterodyne -heterogamous -heterogamy/M -heterogeneity/SM -heterogeneousness/M -heterogeneous/PY -heterosexuality/SM -heterosexual/YMS -heterostructure -heterozygous -Hettie/M -Hetti/M -Hetty/M -Heublein/M -heuristically -heuristic/SM -Heusen/M -Heuser/M -he/VMZ -hew/DRZGS -Hewe/M -hewer/M -Hewet/M -Hewett/M -Hewie/M -Hewitt/M -Hewlett/M -Hew/M -hexachloride/M -hexadecimal/YS -hexafluoride/M -hexagonal/Y -hexagon/SM -hexagram/SM -hexameter/SM -hex/DSRG -hexer/M -hey -heyday/MS -Heyerdahl/M -Heywood/M -Hezekiah/M -hf -HF -Hf/M -Hg/M -hgt -hgwy -HHS -HI -Hialeah/M -hiatus/SM -Hiawatha/M -hibachi/MS -hibernate/XGNSD -hibernation/M -hibernator/SM -Hibernia/M -Hibernian/S -hibiscus/MS -hiccup/MDGS -hickey/SM -Hickey/SM -Hickman/M -Hickok/M -hickory/MS -hick/SM -Hicks/M -hi/D -hidden/U -hideaway/SM -hidebound -hideousness/SM -hideous/YP -hideout/MS -hider/M -hide/S -hiding/M -hid/ZDRGJ -hieing -hierarchal -hierarchic -hierarchical/Y -hierarchy/SM -hieratic -hieroglyph -hieroglyphic/S -hieroglyphics/M -hieroglyphs -Hieronymus/M -hie/S -hifalutin -Higashiosaka -Higgins/M -highball/GSDM -highborn -highboy/MS -highbrow/SM -highchair/SM -highfalutin -Highfield/M -highhandedness/SM -highhanded/PY -highish -Highlander/SM -Highlands -highland/ZSRM -highlight/GZRDMS -Highness/M -highness/MS -highpoint -high/PYRT -highroad/MS -highs -hight -hightail/DGS -highwayman/M -highwaymen -highway/MS -hijacker/M -hijack/JZRDGS -hiker/M -hike/ZGDSR -Hilario/M -hilariousness/MS -hilarious/YP -hilarity/MS -Hilarius/M -Hilary/M -Hilbert/M -Hildagarde/M -Hildagard/M -Hilda/M -Hildebrand/M -Hildegaard/M -Hildegarde/M -Hilde/M -Hildy/M -Hillard/M -Hillary/M -hillbilly/MS -Hillcrest/M -Hillel/M -hiller/M -Hillery/M -hill/GSMDR -Hilliard/M -Hilliary/M -Hillie/M -Hillier/M -hilliness/SM -Hill/M -hillman -hillmen -hillock/SM -Hillsboro/M -Hillsdale/M -hillside/SM -hilltop/MS -hillwalking -Hillyer/M -Hilly/RM -hilly/TRP -hilt/MDGS -Hilton/M -Hi/M -Himalaya/MS -Himalayan/S -Himmler/M -him/S -himself -Hinayana/M -Hinda/M -Hindemith/M -Hindenburg/M -hindered/U -hinderer/M -hinder/GRD -Hindi/M -hindmost -hindquarter/SM -hindrance/SM -hind/RSZ -hindsight/SM -Hinduism/SM -Hindu/MS -Hindustani/MS -Hindustan/M -Hines/M -hinger -hinge's -hinge/UDSG -Hinkle/M -Hinsdale/M -hinterland/MS -hinter/M -hint/GZMDRS -Hinton/M -Hinze/M -hipbone/SM -hipness/S -Hipparchus/M -hipped -hipper -hippest -hippie/MTRS -hipping/M -Hippocrates/M -Hippocratic -hippodrome/MS -hippo/MS -hippopotamus/SM -hip/PSM -hippy's -hipster/MS -hiragana -Hiram/M -hire/AGSD -hireling/SM -hirer/SM -Hirey/M -hiring/S -Hirohito/M -Hiroshi/M -Hiroshima/M -Hirsch/M -hirsuteness/MS -hirsute/P -his -Hispanic/SM -Hispaniola/M -hiss/DSRMJG -hisser/M -hissing/M -Hiss/M -histamine/SM -histidine/SM -histochemic -histochemical -histochemistry/M -histogram/MS -histological -histologist/MS -histology/SM -historian/MS -historic -historicalness/M -historical/PY -historicism/M -historicist/M -historicity/MS -historiographer/SM -historiography/MS -history/MS -histrionically -histrionic/S -histrionics/M -hist/SDG -Hitachi/M -Hitchcock/M -hitcher/MS -hitchhike/RSDGZ -hitch/UGSD -hither -hitherto -Hitler/SM -hitless -hit/MS -hittable -hitter/SM -hitting -Hittite/SM -HIV -hive/MGDS -h'm -HM -HMO -Hmong -HMS -hoarder/M -hoarding/M -hoard/RDJZSGM -hoarfrost/SM -hoariness/MS -hoar/M -hoarseness/SM -hoarse/RTYP -hoary/TPR -hoaxer/M -hoax/GZMDSR -Hobard/M -Hobart/M -hobbed -Hobbes/M -hobbing -hobbit -hobbler/M -hobble/ZSRDG -Hobbs/M -hobbyhorse/SM -hobbyist/SM -hobby/SM -Hobday/M -Hobey/M -hobgoblin/MS -Hobie/M -hobnail/GDMS -hobnobbed -hobnobbing -hobnob/S -Hoboken/M -hobo/SDMG -hob/SM -hoc -hocker/M -hockey/SM -hock/GDRMS -Hockney/M -hockshop/SM -hodge/MS -Hodge/MS -hodgepodge/SM -Hodgkin/M -ho/DRYZ -hod/SM -Hoebart/M -hoecake/SM -hoedown/MS -hoeing -hoer/M -hoe/SM -Hoffa/M -Hoff/M -Hoffman/M -Hofstadter/M -Hogan/M -hogan/SM -Hogarth/M -hogback/MS -hogged -hogger -hogging -hoggish/Y -hogshead/SM -hog/SM -hogtie/SD -hogtying -hogwash/SM -Hohenlohe/M -Hohenstaufen/M -Hohenzollern/M -Hohhot/M -hoister/M -hoist/GRDS -hoke/DSG -hokey/PRT -hokier -hokiest -Hokkaido/M -hokum/MS -Hokusai/M -Holbein/M -Holbrook/M -Holcomb/M -holdall/MS -Holden/M -holder/M -Holder/M -holding/IS -holding's -hold/NRBSJGZ -holdout/SM -holdover/SM -holdup/MS -hole/MGDS -holey -holiday/GRDMS -Holiday/M -holidaymaker/S -holier/U -Holiness/MS -holiness/MSU -holistic -holistically -hollandaise -Hollandaise/M -Hollander/M -Holland/RMSZ -holler/GDS -Hollerith/M -Holley/M -Hollie/M -Holli/SM -Hollister/M -Holloway/M -hollowness/MS -hollow/RDYTGSP -hollowware/M -Hollyanne/M -hollyhock/MS -Holly/M -holly/SM -Hollywood/M -Holman/M -Holmes -holmium/MS -Holm/M -Holocaust -holocaust/MS -Holocene -hologram/SM -holograph/GMD -holographic -holographs -holography/MS -Holstein/MS -holster/MDSG -Holst/M -Holt/M -Holyoke/M -holy/SRTP -holystone/MS -Holzman/M -Ho/M -homage/MGSRD -homager/M -hombre/SM -homburg/SM -homebody/MS -homebound -homeboy/S -homebuilder/S -homebuilding -homebuilt -homecoming/MS -home/DSRMYZG -homegrown -homeland/SM -homelessness/SM -homeless/P -homelike -homeliness/SM -homely/RPT -homemade -homemake/JRZG -homemaker/M -homemaking/M -homeomorphic -homeomorphism/MS -homeomorph/M -homeopath -homeopathic -homeopaths -homeopathy/MS -homeostases -homeostasis/M -homeostatic -homeowner/S -homeownership -homepage -Homere/M -homer/GDM -Homeric -homerists -Homer/M -homeroom/MS -Homerus/M -homeschooling/S -homesickness/MS -homesick/P -homespun/S -homesteader/M -homestead/GZSRDM -homestretch/SM -hometown/SM -homeward -homeworker/M -homework/ZSMR -homeyness/MS -homey/PS -homicidal/Y -homicide/SM -homier -homiest -homiletic/S -homily/SM -hominess's -homing/M -hominid/MS -hominy/SM -Hom/MR -homogamy/M -homogenate/MS -homogeneity/ISM -homogeneous/PY -homogenization/MS -homogenize/DRSGZ -homogenizer/M -homograph/M -homographs -homological -homologous -homologue/M -homology/MS -homomorphic -homomorphism/SM -homonym/SM -homophobia/S -homophobic -homophone/MS -homopolymers -homosexuality/SM -homosexual/YMS -homo/SM -homotopy -homozygous/Y -honcho/DSG -Honda/M -Hondo/M -Honduran/S -Honduras/M -Honecker/M -hone/SM -honestly/E -honest/RYT -honesty/ESM -honeybee/SM -honeycomb/SDMG -honeydew/SM -honey/GSMD -honeylocust -Honey/M -honeymooner/M -honeymoon/RDMGZS -honeysuckle/MS -Honeywell/M -hong/M -Honiara/M -honker/M -honk/GZSDRM -honky/SM -Hon/M -hon/MDRSZTG -Honolulu/M -honorableness/SM -honorable/PSM -honorables/U -honorablies/U -honorably/UE -honorarily -honorarium/SM -honorary/S -honored/U -honoree/S -honor/ERDBZGS -honorer/EM -Honoria/M -honorific/S -Honor/M -honor's -honors/A -Honshu/M -hooch/MS -hoodedness/M -hooded/P -hoodlum/SM -Hood/M -hood/MDSG -hoodoo/DMGS -hoodwinker/M -hoodwink/SRDG -hooey/SM -hoof/DRMSG -hoofer/M -hoofmark/S -hookah/M -hookahs -hookedness/M -hooked/P -Hooke/MR -hooker/M -Hooker/M -hookey's -hook/GZDRMS -hooks/U -hookup/SM -hookworm/MS -hooky/SRMT -hooliganism/SM -hooligan/SM -hooper/M -Hooper/M -hoopla/SM -hoop/MDRSG -hooray/SMDG -hoosegow/MS -Hoosier/SM -hootch's -hootenanny/SM -hooter/M -hoot/MDRSGZ -Hoover/MS -hooves/M -hoped/U -hopefulness/MS -hopeful/SPY -hopelessness/SM -hopeless/YP -Hope/M -hoper/M -hope/SM -Hopewell/M -Hopi/SM -Hopkinsian/M -Hopkins/M -hopped -Hopper/M -hopper/MS -hopping/M -hoppled -hopples -hopscotch/MDSG -hop/SMDRG -Horace/M -Horacio/M -Horatia/M -Horatio/M -Horatius/M -horde/DSGM -horehound/MS -horizon/MS -horizontal/YS -Hormel/M -hormonal/Y -hormone/MS -Hormuz/M -hornbeam/M -hornblende/MS -Hornblower/M -hornedness/M -horned/P -Horne/M -hornet/MS -horn/GDRMS -horniness/M -hornless -hornlike -Horn/M -hornpipe/MS -horny/TRP -horologic -horological -horologist/MS -horology/MS -horoscope/MS -Horowitz/M -horrendous/Y -horribleness/SM -horrible/SP -horribly -horridness/M -horrid/PY -horrific -horrifically -horrify/DSG -horrifying/Y -horror/MS -hors/DSGX -horseback/MS -horsedom -horseflesh/M -horsefly/MS -horsehair/SM -horsehide/SM -horselaugh/M -horselaughs -horseless -horselike -horsely -horseman/M -horsemanship/MS -horsemen -horseplayer/M -horseplay/SMR -horsepower/SM -horseradish/SM -horse's -horseshoeing -horseshoe/MRSD -horseshoer/M -horsetail/SM -horse/UGDS -horsewhipped -horsewhipping -horsewhip/SM -horsewoman/M -horsewomen -horsey -horsier -horsiest -horsing/M -Horst/M -hortatory -Horten/M -Hortense/M -Hortensia/M -horticultural -horticulture/SM -horticulturist/SM -Hort/MN -Horton/M -Horus/M -hosanna/SDG -Hosea/M -hose/M -hosepipe -hos/GDS -hosier/MS -hosiery/SM -hosp -hospice/MS -hospitable/I -hospitably/I -hospitality/MS -hospitality's/I -hospitalization/MS -hospitalize/GSD -hospital/MS -hostage/MS -hosteler/M -hostelry/MS -hostel/SZGMRD -hostess/MDSG -hostile/YS -hostility/SM -hostler/MS -Host/MS -host/MYDGS -hotbed/MS -hotblooded -hotbox/MS -hotcake/S -hotchpotch/M -hotelier/MS -hotelman/M -hotel/MS -hotfoot/DGS -hothead/DMS -hotheadedness/SM -hotheaded/PY -hothouse/MGDS -hotness/MS -hotplate/SM -hotpot/M -hot/PSY -hotrod -hotshot/S -hotted -Hottentot/SM -hotter -hottest -hotting -Houdaille/M -Houdini/M -hough/M -hounder/M -hounding/M -hound/MRDSG -hourglass/MS -houri/MS -hourly/S -hour/YMS -house/ASDG -houseboat/SM -housebound -houseboy/SM -housebreaker/M -housebreaking/M -housebreak/JSRZG -housebroke -housebroken -housebuilding -housecleaning/M -houseclean/JDSG -housecoat/MS -housefly/MS -houseful/SM -householder/M -household/ZRMS -househusband/S -housekeeper/M -housekeeping/M -housekeep/JRGZ -houselights -House/M -housemaid/MS -houseman/M -housemen -housemother/MS -housemoving -houseparent/SM -houseplant/S -houser -house's -housetop/MS -housewares -housewarming/MS -housewifeliness/M -housewifely/P -housewife/YM -housewives -houseworker/M -housework/ZSMR -housing/MS -Housman/M -Houston/M -Houyhnhnm/M -HOV -hovel/GSMD -hovercraft/M -hoverer/M -hover/GRD -hove/ZR -Howard/M -howbeit -howdah/M -howdahs -howdy/GSD -Howell/MS -Howe/M -however -Howey/M -Howie/M -howitzer/MS -howler/M -howl/GZSMDR -Howrah/M -how/SM -howsoever -hoyden/DMGS -hoydenish -Hoyle/SM -hoy/M -Hoyt/M -hp -HP -HQ -hr -HR -HRH -Hrothgar/M -hrs -h's -H's -HS -HST -ht -HTML -Hts/M -HTTP -Huang/M -huarache/SM -hubba -Hubbard/M -Hubble/M -hubbub/SM -hubby/SM -hubcap/SM -Huber/M -Hube/RM -Hubert/M -Huberto/M -Hubey/M -Hubie/M -hub/MS -hubris/SM -huckleberry/SM -Huck/M -huckster/SGMD -HUD -Huddersfield/M -huddler/M -huddle/RSDMG -Hudson/M -hue/MDS -Huerta/M -Huey/M -huffily -huffiness/SM -Huff/M -Huffman/M -huff/SGDM -huffy/TRP -hugeness/MS -huge/YP -hugged -hugger -hugging/S -Huggins -Hughie/M -Hugh/MS -Hugibert/M -Hugo/M -hug/RTS -Huguenot/SM -Hugues/M -huh -huhs -Hui/M -Huitzilopitchli/M -hula/MDSG -Hulda/M -hulk/GDMS -hullabaloo/SM -huller/M -hulling/M -Hull/M -hull/MDRGZS -hullo/GSDM -humane/IY -humaneness/SM -humaner -humanest -human/IPY -humanism/SM -humanistic -humanist/SM -humanitarianism/SM -humanitarian/S -humanity/ISM -humanization/CSM -humanized/C -humanizer/M -humanize/RSDZG -humanizes/IAC -humanizing/C -humankind/M -humannesses -humanness/IM -humanoid/S -humans -Humbert/M -Humberto/M -humbleness/SM -humble/TZGPRSDJ -humbly -Humboldt/M -humbugged -humbugging -humbug/MS -humdinger/MS -humdrum/S -Hume/M -humeral/S -humeri -humerus/M -Humfrey/M -Humfrid/M -Humfried/M -humidification/MC -humidifier/CM -humidify/RSDCXGNZ -humidistat/M -humidity/MS -humidor/MS -humid/Y -humiliate/SDXNG -humiliating/Y -humiliation/M -humility/MS -hummed -Hummel/M -hummer/SM -humming -hummingbird/SM -hummock/MDSG -hummocky -hummus/S -humongous -humored/U -humorist/MS -humorlessness/MS -humorless/PY -humorousness/MS -humorous/YP -humor/RDMZGS -humpback/SMD -hump/GSMD -humph/DG -Humphrey/SM -humphs -Humpty/M -hum/S -humus/SM -Humvee -hunchback/DSM -hunch/GMSD -hundredfold/S -hundred/SHRM -hundredths -hundredweight/SM -Hunfredo/M -hung/A -Hungarian/MS -Hungary/M -hunger/SDMG -Hung/M -hungover -hungrily -hungriness/SM -hungry/RTP -hunker/DG -hunky/RST -hunk/ZRMS -Hun/MS -hunter/M -Hunter/M -hunt/GZJDRS -hunting/M -Huntington/M -Huntlee/M -Huntley/M -Hunt/MR -huntress/MS -huntsman/M -huntsmen -Huntsville/M -hurdle/JMZGRSD -hurdler/M -hurl/DRGZJS -Hurlee/M -Hurleigh/M -hurler/M -Hurley/M -hurling/M -Huron/SM -hurray/SDG -hurricane/MS -hurriedness/M -hurried/UY -hurry/RSDG -Hurst/M -hurter/M -hurtfulness/MS -hurtful/PY -hurting/Y -hurtle/SDG -hurts -hurt/U -Hurwitz/M -Hus -Husain's -husbander/M -husband/GSDRYM -husbandman/M -husbandmen -husbandry/SM -Husein/M -hush/DSG -husker/M -huskily -huskiness/MS -husking/M -husk/SGZDRM -husky/RSPT -hussar/MS -Hussein/M -Husserl/M -hussy/SM -hustings/M -hustler/M -hustle/RSDZG -Huston/M -Hutchins/M -Hutchinson/M -Hutchison/M -hutch/MSDG -hut/MS -hutted -hutting -Hutton/M -Hutu/M -Huxley/M -Huygens/M -huzzah/GD -huzzahs -hwy -Hyacintha/M -Hyacinthe/M -Hyacinthia/M -Hyacinthie/M -hyacinth/M -Hyacinth/M -hyacinths -Hyades -hyaena's -Hyannis/M -Hyatt/M -hybridism/SM -hybridization/S -hybridize/GSD -hybrid/MS -Hyde/M -Hyderabad/M -Hydra/M -hydra/MS -hydrangea/SM -hydrant/SM -hydrate/CSDNGX -hydrate's -hydration/MC -hydraulically -hydraulicked -hydraulicking -hydraulic/S -hydraulics/M -hydrazine/M -hydride/MS -hydrocarbon/SM -hydrocephali -hydrocephalus/MS -hydrochemistry -hydrochloric -hydrochloride/M -hydrodynamical -hydrodynamic/S -hydrodynamics/M -hydroelectric -hydroelectrically -hydroelectricity/SM -hydrofluoric -hydrofoil/MS -hydrogenate/CDSGN -hydrogenate's -hydrogenation/MC -hydrogenations -hydrogen/MS -hydrogenous -hydrological/Y -hydrologist/MS -hydrology/SM -hydrolysis/M -hydrolyzed/U -hydrolyze/GSD -hydromagnetic -hydromechanics/M -hydrometer/SM -hydrometry/MS -hydrophilic -hydrophobia/SM -hydrophobic -hydrophone/SM -hydroplane/DSGM -hydroponic/S -hydroponics/M -hydro/SM -hydrosphere/MS -hydrostatic/S -hydrostatics/M -hydrotherapy/SM -hydrothermal/Y -hydrous -hydroxide/MS -hydroxy -hydroxylate/N -hydroxyl/SM -hydroxyzine/M -hyena/MS -hygiene/MS -hygienically -hygienic/S -hygienics/M -hygienist/MS -hygrometer/SM -hygroscopic -hying -Hy/M -Hyman/M -hymeneal/S -Hymen/M -hymen/MS -Hymie/M -hymnal/SM -hymnbook/S -hymn/GSDM -Hynda/M -hype/MZGDSR -hyperactive/S -hyperactivity/SM -hyperbola/MS -hyperbole/MS -hyperbolic -hyperbolically -hyperboloidal -hyperboloid/SM -hypercellularity -hypercritical/Y -hypercube/MS -hyperemia/M -hyperemic -hyperfine -hypergamous/Y -hypergamy/M -hyperglycemia/MS -hyperinflation -Hyperion/M -hypermarket/SM -hypermedia/S -hyperplane/SM -hyperplasia/M -hypersensitiveness/MS -hypersensitive/P -hypersensitivity/MS -hypersonic -hyperspace/M -hypersphere/M -hypertension/MS -hypertensive/S -hypertext/SM -hyperthyroid -hyperthyroidism/MS -hypertrophy/MSDG -hypervelocity -hyperventilate/XSDGN -hyperventilation/M -hyphenated/U -hyphenate/NGXSD -hyphenation/M -hyphen/DMGS -hypnoses -hypnosis/M -hypnotherapy/SM -hypnotically -hypnotic/S -hypnotism/MS -hypnotist/SM -hypnotize/SDG -hypoactive -hypoallergenic -hypocellularity -hypochondriac/SM -hypochondria/MS -hypocrisy/SM -hypocrite/MS -hypocritical/Y -hypodermic/S -hypo/DMSG -hypoglycemia/SM -hypoglycemic/S -hypophyseal -hypophysectomized -hypotenuse/MS -hypothalami -hypothalamic -hypothalamically -hypothalamus/M -hypothermia/SM -hypotheses -hypothesis/M -hypothesizer/M -hypothesize/ZGRSD -hypothetic -hypothetical/Y -hypothyroid -hypothyroidism/SM -hypoxia/M -hyssop/MS -hysterectomy/MS -hysteresis/M -hysteria/SM -hysterical/YU -hysteric/SM -Hyundai/M -Hz -i -I -IA -Iaccoca/M -Iago/M -Iain/M -Ia/M -iambi -iambic/S -iamb/MS -iambus/SM -Ian/M -Ianthe/M -Ibadan/M -Ibbie/M -Ibby/M -Iberia/M -Iberian/MS -Ibero/M -ibex/MS -ibid -ibidem -ibis/SM -IBM/M -Ibo/M -Ibrahim/M -Ibsen/M -ibuprofen/S -Icarus/M -ICBM/S -ICC -iceberg/SM -iceboat/MS -icebound -icebox/MS -icebreaker/SM -icecap/SM -ice/GDSC -Icelander/M -Icelandic -Iceland/MRZ -Ice/M -iceman/M -icemen -icepack -icepick/S -ice's -Ichabod/M -ichneumon/M -ichthyologist/MS -ichthyology/MS -icicle/SM -icily -iciness/SM -icing/MS -icky/RT -iconic -icon/MS -iconoclasm/MS -iconoclastic -iconoclast/MS -iconography/MS -icosahedra -icosahedral -icosahedron/M -ictus/SM -ICU -icy/RPT -I'd -ID -Idahoan/S -Idahoes -Idaho/MS -Idalia/M -Idalina/M -Idaline/M -Ida/M -idealism/MS -idealistic -idealistically -idealist/MS -idealization/MS -idealized/U -idealize/GDRSZ -idealizer/M -ideal/MYS -idealogical -idea/SM -ideate/SN -ideation/M -Idelle/M -Idell/M -idem -idempotent/S -identicalness/M -identical/YP -identifiability -identifiable/U -identifiably -identification/M -identified/U -identifier/M -identify/XZNSRDG -identity/SM -ideogram/MS -ideographic -ideograph/M -ideographs -ideological/Y -ideologist/SM -ideologue/S -ideology/SM -ides -Idette/M -idiocy/MS -idiolect/M -idiomatically -idiomatic/P -idiom/MS -idiopathic -idiosyncrasy/SM -idiosyncratic -idiosyncratically -idiotic -idiotically -idiot/MS -idleness/MS -idle/PZTGDSR -idler/M -id/MY -idolater/MS -idolatress/S -idolatrous -idolatry/SM -idolization/SM -idolized/U -idolizer/M -idolize/ZGDRS -idol/MS -ids -IDs -idyllic -idyllically -idyll/MS -IE -IEEE -Ieyasu/M -if -iffiness/S -iffy/TPR -Ifni/M -ifs -Iggie/M -Iggy/M -igloo/MS -Ignace/M -Ignacio/M -Ignacius/M -Ignatius/M -Ignazio/M -Ignaz/M -igneous -ignitable -ignite/ASDG -igniter/M -ignition/MS -ignobleness/M -ignoble/P -ignobly -ignominious/Y -ignominy/MS -ignoramus/SM -ignorance/MS -ignorantness/M -ignorant/SPY -ignorer/M -ignore/SRDGB -Igor/M -iguana/MS -Iguassu/M -ii -iii -Ijsselmeer/M -Ike/M -Ikey/M -Ikhnaton/M -ikon's -IL -Ilaire/M -Ila/M -Ilario/M -ilea -Ileana/M -Ileane/M -ileitides -ileitis/M -Ilene/M -ileum/M -ilia -iliac -Iliad/MS -Ilise/M -ilium/M -Ilka/M -ilk/MS -I'll -Illa/M -illegality/MS -illegal/YS -illegibility/MS -illegible -illegibly -illegitimacy/SM -illegitimate/SDGY -illiberality/SM -illiberal/Y -illicitness/MS -illicit/YP -illimitableness/M -illimitable/P -Illinoisan/MS -Illinois/M -illiquid -illiteracy/MS -illiterateness/M -illiterate/PSY -Ill/M -illness/MS -illogicality/SM -illogicalness/M -illogical/PY -illogic/M -ill/PS -illume/DG -illuminate/XSDVNG -Illuminati -illuminatingly -illuminating/U -illumination/M -illumine/BGSD -illusionary -illusion/ES -illusionist/MS -illusion's -illusiveness/M -illusive/PY -illusoriness/M -illusory/P -illustrated/U -illustrate/VGNSDX -illustration/M -illustrative/Y -illustrator/SM -illustriousness/SM -illustrious/PY -illus/V -illy -Ilona/M -Ilsa/M -Ilse/M -Ilysa/M -Ilyse/M -Ilyssa/M -Ilyushin/M -I'm -image/DSGM -Imagen/M -imagery/MS -imaginableness -imaginable/U -imaginably/U -imaginariness/M -imaginary/PS -imagination/MS -imaginativeness/M -imaginative/UY -imagined/U -imaginer/M -imagine/RSDJBG -imagoes -imago/M -imam/MS -imbalance/SDM -imbecile/YMS -imbecilic -imbecility/MS -imbiber/M -imbibe/ZRSDG -imbrication/SM -Imbrium/M -imbroglio/MS -imbruing -imbue/GDS -Imelda/M -IMF -IMHO -imitable/I -imitate/SDVNGX -imitation/M -imitativeness/MS -imitative/YP -imitator/SM -immaculateness/SM -immaculate/YP -immanence/S -immanency/MS -immanent/Y -Immanuel/M -immateriality/MS -immaterialness/MS -immaterial/PY -immatureness/M -immature/SPY -immaturity/MS -immeasurableness/M -immeasurable/P -immeasurably -immediacy/MS -immediateness/SM -immediate/YP -immemorial/Y -immenseness/M -immense/PRTY -immensity/MS -immerse/RSDXNG -immersible -immersion/M -immigrant/SM -immigrate/NGSDX -immigration/M -imminence/SM -imminentness/M -imminent/YP -immobile -immobility/MS -immobilization/MS -immobilize/DSRG -immoderateness/M -immoderate/NYP -immoderation/M -immodest/Y -immodesty/SM -immolate/SDNGX -immolation/M -immorality/MS -immoral/Y -immortality/SM -immortalized/U -immortalize/GDS -immortal/SY -immovability/SM -immovableness/M -immovable/PS -immovably -immune/S -immunity/SM -immunization/MS -immunize/GSD -immunoassay/M -immunodeficiency/S -immunodeficient -immunologic -immunological/Y -immunologist/SM -immunology/MS -immure/GSD -immutability/MS -immutableness/M -immutable/P -immutably -IMNSHO -IMO -Imogene/M -Imogen/M -Imojean/M -impaction/SM -impactor/SM -impact/VGMRDS -impaired/U -impairer/M -impair/LGRDS -impairment/SM -impala/MS -impale/GLRSD -impalement/SM -impaler/M -impalpable -impalpably -impanel/DGS -impartation/M -impart/GDS -impartiality/SM -impartial/Y -impassableness/M -impassable/P -impassably -impasse/SXBMVN -impassibility/SM -impassible -impassibly -impassion/DG -impassioned/U -impassiveness/MS -impassive/YP -impassivity/MS -impasto/SM -impatience/SM -impatiens/M -impatient/Y -impeachable/U -impeach/DRSZGLB -impeacher/M -impeachment/MS -impeccability/SM -impeccable/S -impeccably -impecuniousness/MS -impecunious/PY -impedance/MS -impeded/U -impeder/M -impede/S -imped/GRD -impedimenta -impediment/SM -impelled -impeller/MS -impelling -impel/S -impend/DGS -impenetrability/MS -impenetrableness/M -impenetrable/P -impenetrably -impenitence/MS -impenitent/YS -imperativeness/M -imperative/PSY -imperceivable -imperceptibility/MS -imperceptible -imperceptibly -imperceptive -imperf -imperfectability -imperfection/MS -imperfectness/SM -imperfect/YSVP -imperialism/MS -imperialistic -imperialistically -imperialist/SM -imperial/YS -imperil/GSLD -imperilment/SM -imperiousness/MS -imperious/YP -imperishableness/M -imperishable/SP -imperishably -impermanence/MS -impermanent/Y -impermeability/SM -impermeableness/M -impermeable/P -impermeably -impermissible -impersonality/M -impersonalized -impersonal/Y -impersonate/XGNDS -impersonation/M -impersonator/SM -impertinence/SM -impertinent/YS -imperturbability/SM -imperturbable -imperturbably -imperviousness/M -impervious/PY -impetigo/MS -impetuosity/MS -impetuousness/MS -impetuous/YP -impetus/MS -impiety/MS -impinge/LS -impingement/MS -imping/GD -impiousness/SM -impious/PY -impishness/MS -impish/YP -implacability/SM -implacableness/M -implacable/P -implacably -implantation/SM -implant/BGSDR -implanter/M -implausibility/MS -implausible -implausibly -implementability -implementable/U -implementation/A -implementations -implementation's -implemented/AU -implementer/M -implementing/A -implementor/MS -implement/SMRDGZB -implicant/SM -implicate/VGSD -implication/M -implicative/PY -implicitness/SM -implicit/YP -implied/Y -implode/GSD -implore/GSD -imploring/Y -implosion/SM -implosive/S -imply/GNSDX -impoliteness/MS -impolite/YP -impoliticness/M -impolitic/PY -imponderableness/M -imponderable/PS -importance/SM -important/Y -importation/MS -importer/M -importing/A -import/SZGBRD -importunateness/M -importunate/PYGDS -importuner/M -importune/SRDZYG -importunity/SM -imposable -impose/ASDG -imposer/SM -imposingly -imposing/U -imposition/SM -impossibility/SM -impossibleness/M -impossible/PS -impossibly -imposter's -impostor/SM -impost/SGMD -imposture/SM -impotence/MS -impotency/S -impotent/SY -impound/GDS -impoundments -impoverisher/M -impoverish/LGDRS -impoverishment/SM -impracticableness/M -impracticable/P -impracticably -impracticality/SM -impracticalness/M -impractical/PY -imprecate/NGXSD -imprecation/M -impreciseness/MS -imprecise/PYXN -imprecision/M -impregnability/MS -impregnableness/M -impregnable/P -impregnably -impregnate/DSXNG -impregnation/M -impresario/SM -impress/DRSGVL -impressed/U -impresser/M -impressibility/MS -impressible -impressionability/SM -impressionableness/M -impressionable/P -impression/BMS -impressionism/SM -impressionistic -impressionist/MS -impressiveness/MS -impressive/YP -impressment/M -imprimatur/SM -imprinter/M -imprinting/M -imprint/SZDRGM -imprison/GLDS -imprisonment/MS -improbability/MS -improbableness/M -improbable/P -improbably -impromptu/S -improperness/M -improper/PY -impropitious -impropriety/SM -improved/U -improvement/MS -improver/M -improve/SRDGBL -improvidence/SM -improvident/Y -improvisational -improvisation/MS -improvisatory -improviser/M -improvise/RSDZG -imprudence/SM -imprudent/Y -imp/SGMDRY -impudence/MS -impudent/Y -impugner/M -impugn/SRDZGB -impulse/XMVGNSD -impulsion/M -impulsiveness/MS -impulsive/YP -impunity/SM -impureness/M -impure/RPTY -impurity/MS -imputation/SM -impute/SDBG -Imus/M -IN -inaction -inactive -inadequate/S -inadvertence/MS -inadvertent/Y -inalienability/MS -inalienably -inalterableness/M -inalterable/P -Ina/M -inamorata/MS -inane/SRPYT -inanimateness/S -inanimate/P -inanity/MS -inappeasable -inappropriate/P -inarticulate/P -in/AS -inasmuch -inaugural/S -inaugurate/XSDNG -inauguration/M -inauthenticity -inbound/G -inbred/S -inbreed/JG -incalculableness/M -incalculably -incandescence/SM -incandescent/YS -incant -incantation/SM -incantatory -incapable/S -incapacitate/GNSD -incapacitation/M -incarcerate/XGNDS -incarceration/M -incarnadine/GDS -incarnate/AGSDNX -incarnation/AM -Inca/SM -incendiary/S -incense/MGDS -incentive/ESM -incentively -incept/DGVS -inception/MS -inceptive/Y -inceptor/M -incessant/Y -incest/SM -incestuousness/MS -incestuous/PY -inch/GMDS -inchoate/DSG -Inchon/M -inchworm/MS -incidence/MS -incidental/YS -incident/SM -incinerate/XNGSD -incineration/M -incinerator/SM -incipience/SM -incipiency/M -incipient/Y -incise/SDVGNX -incision/M -incisiveness/MS -incisive/YP -incisor/MS -incitement/MS -inciter/M -incite/RZL -incl -inclination/ESM -incline/EGSD -incliner/M -inclining/M -include/GDS -inclusion/MS -inclusiveness/MS -inclusive/PY -Inc/M -incognito/S -incoherency/M -income/M -incommode/DG -incommunicado -incomparable -incompetent/MS -incomplete/P -inconceivability/MS -inconceivableness/M -inconceivable/P -incondensable -incongruousness/S -inconsiderableness/M -inconsiderable/P -inconsistence -inconsolableness/M -inconsolable/P -inconsolably -incontestability/SM -incontestably -incontrovertibly -inconvenience/DG -inconvertibility -inconvertible -incorporable -incorporated/UE -incorporate/GASDXN -incorrect/P -incorrigibility/MS -incorrigibleness/M -incorrigible/SP -incorrigibly -incorruptible/S -incorruptibly -increase/JB -increaser/M -increasing/Y -incredibleness/M -incredible/P -incremental/Y -incrementation -increment/DMGS -incriminate/XNGSD -incrimination/M -incriminatory -incrustation/SM -inc/T -incubate/XNGVDS -incubation/M -incubator/MS -incubus/MS -inculcate/SDGNX -inculcation/M -inculpate/SDG -incumbency/MS -incumbent/S -incunabula -incunabulum -incurable/S -incurious -incursion/SM -ind -indebtedness/SM -indebted/P -indefatigableness/M -indefatigable/P -indefatigably -indefeasible -indefeasibly -indefinableness/M -indefinable/PS -indefinite/S -indelible -indelibly -indemnification/M -indemnify/NXSDG -indemnity/SM -indentation/SM -indented/U -indenter/M -indention/SM -indent/R -indenture/DG -Independence/M -indescribableness/M -indescribable/PS -indescribably -indestructibleness/M -indestructible/P -indestructibly -indeterminably -indeterminacy/MS -indeterminism -indexation/S -indexer/M -index/MRDZGB -India/M -Indiana/M -Indianan/S -Indianapolis/M -Indianian/S -Indian/SM -indicant/MS -indicate/DSNGVX -indication/M -indicative/SY -indicator/MS -indices's -indicter/M -indictment/SM -indict/SGLBDR -indifference -indigence/MS -indigenousness/M -indigenous/YP -indigent/SY -indigestible/S -indignant/Y -indignation/MS -indigo/SM -Indira/M -indirect/PG -indiscreet/P -indiscriminateness/M -indiscriminate/PY -indispensability/MS -indispensableness/M -indispensable/SP -indispensably -indisputableness/M -indisputable/P -indissolubleness/M -indissoluble/P -indissolubly -indistinguishableness/M -indistinguishable/P -indite/SDG -indium/SM -individualism/MS -individualistic -individualistically -individualist/MS -individuality/MS -individualization/SM -individualize/DRSGZ -individualized/U -individualizer/M -individualizes/U -individualizing/Y -individual/YMS -individuate/DSXGN -individuation/M -indivisibleness/M -indivisible/SP -indivisibly -Ind/M -Indochina/M -Indochinese -indoctrinate/GNXSD -indoctrination/M -indoctrinator/SM -indolence/SM -indolent/Y -indomitableness/M -indomitable/P -indomitably -Indonesia/M -Indonesian/S -indoor -Indore/M -Indra/M -indubitableness/M -indubitable/P -indubitably -inducement/MS -inducer/M -induce/ZGLSRD -inducible -inductance/MS -inductee/SM -induct/GV -induction/SM -inductiveness/M -inductive/PY -inductor/MS -indulge/GDRS -indulgence/SDGM -indulgent/Y -indulger/M -Indus/M -industrialism/MS -industrialist/MS -industrialization/MS -industrialized/U -industrialize/SDG -industrial/SY -industriousness/SM -industrious/YP -industry/SM -Indy/SM -inebriate/NGSDX -inebriation/M -inedible -ineducable -ineffability/MS -ineffableness/M -ineffable/P -ineffably -inelastic -ineligibly -ineluctable -ineluctably -ineptitude/SM -ineptness/MS -inept/YP -inequivalent -inerrant -inertial/Y -inertia/SM -inertness/MS -inert/SPY -Ines -inescapably -Inesita/M -Inessa/M -inestimably -inevitability/MS -inevitableness/M -inevitable/P -inevitably -inexact/P -inexhaustibleness/M -inexhaustible/P -inexhaustibly -inexorability/M -inexorableness/M -inexorable/P -inexorably -inexpedience/M -inexplicableness/M -inexplicable/P -inexplicably -inexplicit -inexpressibility/M -inexpressibleness/M -inexpressible/PS -inextricably -Inez/M -infamous -infamy/SM -infancy/M -infanticide/MS -infantile -infant/MS -infantryman/M -infantrymen -infantry/SM -infarction/SM -infarct/SM -infatuate/XNGSD -infatuation/M -infauna -infected/U -infecter -infect/ESGDA -infection/EASM -infectiousness/MS -infectious/PY -infective -infer/B -inference/GMSR -inferential/Y -inferiority/MS -inferior/SMY -infernal/Y -inferno/MS -inferred -inferring -infertile -infestation/MS -infester/M -infest/GSDR -infidel/SM -infighting/M -infill/MG -infiltrate/V -infiltrator/MS -infinitesimal/SY -infinite/V -infinitival -infinitive/YMS -infinitude/MS -infinitum -infinity/SM -infirmary/SM -infirmity/SM -infix/M -inflammableness/M -inflammable/P -inflammation/MS -inflammatory -inflatable/MS -inflate/NGBDRSX -inflater/M -inflationary -inflation/ESM -inflect/GVDS -inflectional/Y -inflection/SM -inflexibleness/M -inflexible/P -inflexion/SM -inflict/DRSGV -inflicter/M -infliction/SM -inflow/M -influenced/U -influencer/M -influence/SRDGM -influent -influential/SY -influenza/MS -infomercial/S -Informatica/M -informatics -informational -information/ES -informativeness/S -informative/UY -informatory -informed/U -informer/M -info/SM -infotainment/S -infra -infrared/SM -infrasonic -infrastructural -infrastructure/MS -infrequence/S -infringe/LR -infringement/SM -infringer/M -infuriate/GNYSD -infuriating/Y -infuriation/M -infuser/M -infuse/RZ -infusibleness/M -infusible/P -inf/ZT -Ingaberg/M -Ingaborg/M -Inga/M -Ingamar/M -Ingar/M -Ingeberg/M -Ingeborg/M -Ingelbert/M -Ingemar/M -ingeniousness/MS -ingenious/YP -ing�nue/S -ingenuity/SM -ingenuous/EY -ingenuousness/MS -Inger/M -Inge/RM -Ingersoll/M -ingest/DGVS -ingestible -ingestion/SM -Inglebert/M -inglenook/MS -Inglewood/M -Inglis/M -Ingmar/M -ingoing -ingot/SMDG -ingrained/Y -Ingra/M -Ingram/M -ingrate/M -ingratiate/DSGNX -ingratiating/Y -ingratiation/M -ingredient/SM -Ingres/M -ingression/M -ingress/MS -Ingrid/M -Ingrim/M -ingrown/P -inguinal -Ingunna/M -inhabitable/U -inhabitance -inhabited/U -inhabiter/M -inhabit/R -inhalant/S -inhalation/SM -inhalator/SM -inhale/Z -inhere/DG -inherent/Y -inheritableness/M -inheritable/P -inheritance/EMS -inherit/BDSG -inherited/E -inheriting/E -inheritor/S -inheritress/MS -inheritrix/MS -inherits/E -inhibit/DVGS -inhibited/U -inhibiter's -inhibition/MS -inhibitor/MS -inhibitory -inhomogeneous -inhospitableness/M -inhospitable/P -inhospitality -Inigo/M -inimical/Y -inimitableness/M -inimitable/P -inimitably -inion -iniquitousness/M -iniquitous/PY -iniquity/MS -initialer/M -initial/GSPRDY -initialization/A -initializations -initialization's -initialize/ASDG -initialized/U -initializer/S -initiates -initiate/UD -initiating -initiation/SM -initiative/SM -initiator/MS -initiatory -injectable/U -inject/GVSDB -injection/MS -injector/SM -injunctive -injured/U -injurer/M -injure/SRDZG -injuriousness/M -injurious/YP -inkblot/SM -inker/M -inkiness/MS -inkling/SM -inkstand/SM -inkwell/SM -inky/TP -ink/ZDRJ -inland -inlander/M -inlay/RG -inletting -inly/G -inmost -Inna/M -innards -innateness/SM -innate/YP -innermost/S -innersole/S -innerspring -innervate/GNSDX -innervation/M -inner/Y -inning/M -Innis/M -innkeeper/MS -innocence/SM -Innocent/M -innocent/SYRT -innocuousness/MS -innocuous/PY -innovate/SDVNGX -innovation/M -innovative/P -innovator/MS -innovatory -Innsbruck/M -innuendo/MDGS -innumerability/M -innumerableness/M -innumerable/P -innumerably -innumerate -inn/ZGDRSJ -inoculate/ASDG -inoculation/MS -inoculative -inoffensive/P -Inonu/M -inopportuneness/M -inopportune/P -inordinateness/M -inordinate/PY -inorganic -inpatient -In/PM -input/MRDG -inquirer/M -inquire/ZR -inquiring/Y -inquiry/MS -inquisitional -inquisition/MS -Inquisition/MS -inquisitiveness/MS -inquisitive/YP -inquisitorial/Y -inquisitor/MS -INRI -inrush/M -ins -INS -insalubrious -insanitary -insatiability/MS -insatiableness/M -insatiable/P -insatiably -inscribe/Z -inscription/SM -inscrutability/SM -inscrutableness/SM -inscrutable/P -inscrutably -inseam -insecticidal -insecticide/MS -insectivore/SM -insectivorous -insecureness/M -insecure/P -inseminate/NGXSD -insemination/M -insensateness/M -insensate/P -insensible/P -insentient -inseparable/S -insert/ADSG -inserter/M -insertion/AMS -insetting -inshore -insider/M -inside/Z -insidiousness/MS -insidious/YP -insightful/Y -insigne's -insignia/SM -insignificant -insinuate/VNGXSD -insinuating/Y -insinuation/M -insinuator/SM -insipidity/MS -insipid/Y -insistence/SM -insistent/Y -insisting/Y -insist/SGD -insociable -insofar -insole/M -insolence/SM -insolent/YS -insolubleness/M -insoluble/P -insolubly -insomniac/S -insomnia/MS -insomuch -insouciance/SM -insouciant/Y -inspect/AGSD -inspection/SM -inspective -inspectorate/MS -inspector/SM -inspirational/Y -inspiration/MS -inspired/U -inspire/R -inspirer/M -inspiring/U -inspirit/DG -Inst -installable -install/ADRSG -installation/SM -installer/MS -installment/MS -instance/GD -instantaneousness/M -instantaneous/PY -instantiated/U -instantiate/SDXNG -instantiation/M -instant/SRYMP -instate/AGSD -inst/B -instead -instigate/XSDVGN -instigation/M -instigator/SM -instillation/SM -instinctive/Y -instinctual -instinct/VMS -instituter/M -institutes/M -institute/ZXVGNSRD -institutionalism/M -institutionalist/M -institutionalization/SM -institutionalize/GDS -institutional/Y -institution/AM -institutor's -instr -instruct/DSVG -instructed/U -instructional -instruction/MS -instructiveness/M -instructive/PY -instructor/MS -instrumentalist/MS -instrumentality/SM -instrumental/SY -instrumentation/SM -instrument/GMDS -insubordinate -insubstantial -insufferable -insufferably -insularity/MS -insular/YS -insulate/DSXNG -insulated/U -insulation/M -insulator/MS -insulin/MS -insult/DRSG -insulter/M -insulting/Y -insuperable -insuperably -insupportableness/M -insupportable/P -insurance/MS -insurance's/A -insure/BZGS -insured/S -insurer/M -insurgence/SM -insurgency/MS -insurgent/MS -insurmountably -insurrectionist/SM -insurrection/SM -intactness/M -intact/P -intaglio/GMDS -intake/M -intangible/M -integer/MS -integrability/M -integrable -integral/SYM -integrand/MS -integrate/AGNXEDS -integration/EMA -integrative/E -integrator/MS -integrity/SM -integument/SM -intellective/Y -intellect/MVS -intellectualism/MS -intellectuality/M -intellectualize/GSD -intellectualness/M -intellectual/YPS -intelligence/MSR -intelligencer/M -intelligentsia/MS -intelligent/UY -intelligibilities -intelligibility/UM -intelligibleness/MU -intelligible/PU -intelligibly/U -Intel/M -Intelsat/M -intemperate/P -intendant/MS -intendedness/M -intended/SYP -intender/M -intensification/M -intensifier/M -intensify/GXNZRSD -intensional/Y -intensiveness/MS -intensive/PSY -intentionality/M -intentional/UY -intention/SDM -intentness/SM -intent/YP -interaction/MS -interactive/PY -interactivity -interact/VGDS -interaxial -interbank -interbred -interbreed/GS -intercalate/GNVDS -intercalation/M -intercase -intercaste -interceder/M -intercede/SRDG -intercensal -intercept/DGS -interception/MS -interceptor/MS -intercession/MS -intercessor/SM -intercessory -interchangeability/M -interchangeableness/M -interchangeable/P -interchangeably -interchange/DSRGJ -interchanger/M -intercity -interclass -intercohort -intercollegiate -intercommunicate/SDXNG -intercommunication/M -intercom/SM -interconnectedness/M -interconnected/P -interconnect/GDS -interconnection/SM -interconnectivity -intercontinental -interconversion/M -intercorrelated -intercourse/SM -Interdata/M -interdenominational -interdepartmental/Y -interdependence/MS -interdependency/SM -interdependent/Y -interdiction/MS -interdict/MDVGS -interdisciplinary -interested/UYE -interest/GEMDS -interestingly/U -interestingness/M -interesting/YP -inter/ESTL -interface/SRDGM -interfacing/M -interfaith -interference/MS -interferer/M -interfere/SRDG -interfering/Y -interferometer/SM -interferometric -interferometry/M -interferon/MS -interfile/GSD -intergalactic -intergenerational -intergeneration/M -interglacial -intergovernmental -intergroup -interim/S -interindex -interindustry -interior/SMY -interj -interject/GDS -interjectional -interjection/MS -interlace/GSD -interlard/SGD -interlayer/G -interleave/SDG -interleukin/S -interlibrary -interlinear/S -interline/JGSD -interlingual -interlingua/M -interlining/M -interlink/GDS -interlisp/M -interlobular -interlocker/M -interlock/RDSG -interlocutor/MS -interlocutory -interlope/GZSRD -interloper/M -interlude/MSDG -intermarriage/MS -intermarry/GDS -intermediary/MS -intermediateness/M -intermediate/YMNGSDP -intermediation/M -interment/SME -intermeshed -intermetrics -intermezzi -intermezzo/SM -interminably -intermingle/DSG -intermission/MS -intermittent/Y -intermix/GSRD -intermodule -intermolecular/Y -internalization/SM -internalize/GDS -internal/SY -Internationale/M -internationalism/SM -internationalist/SM -internationality/M -internationalization/MS -internationalize/DSG -international/YS -internecine -internee/SM -interne's -Internet/M -INTERNET/M -internetwork -internist/SM -intern/L -internment/SM -internship/MS -internuclear -interocular -interoffice -interoperability -interpenetrates -interpersonal/Y -interplanetary -interplay/GSMD -interpol -interpolate/XGNVBDS -interpolation/M -Interpol/M -interpose/GSRD -interposer/M -interposition/MS -interpretable/U -interpret/AGSD -interpretation/MSA -interpretative/Y -interpreted/U -interpreter/SM -interpretive/Y -interpretor/S -interprocess -interprocessor -interquartile -interracial -interred/E -interregional -interregnum/MS -interrelatedness/M -interrelated/PY -interrelate/GNDSX -interrelation/M -interrelationship/SM -interring/E -interrogate/DSXGNV -interrogation/M -interrogative/SY -interrogator/SM -interrogatory/S -interrupted/U -interrupter/M -interruptibility -interruptible -interruption/MS -interrupt/VGZRDS -interscholastic -intersect/GDS -intersection/MS -intersession/MS -interspecies -intersperse/GNDSX -interspersion/M -interstage -interstate/S -interstellar -interstice/SM -interstitial/SY -intersurvey -intertask -intertwine/GSD -interurban/S -interval/MS -intervene/GSRD -intervener/M -intervenor/M -interventionism/MS -interventionist/S -intervention/MS -interview/AMD -interviewed/U -interviewee/SM -interviewer/SM -interviewing -interviews -intervocalic -interweave/GS -interwove -interwoven -intestacy/SM -intestinal/Y -intestine/SM -inti -intifada -intimacy/SM -intimal -intimateness/M -intimater/M -intimate/XYNGPDRS -intimation/M -intimidate/SDXNG -intimidating/Y -intimidation/M -into -intolerableness/M -intolerable/P -intolerant/PS -intonate/NX -intonation/M -intoxicant/MS -intoxicate/DSGNX -intoxicated/Y -intoxication/M -intra -intracellular -intracity -intraclass -intracohort -intractability/M -intractableness/M -intractable/P -intradepartmental -intrafamily -intragenerational -intraindustry -intraline -intrametropolitan -intramural/Y -intramuscular/Y -intranasal -intransigence/MS -intransigent/YS -intransitive/S -intraoffice -intraprocess -intrapulmonary -intraregional -intrasectoral -intrastate -intratissue -intrauterine -intravenous/YS -intrepidity/SM -intrepidness/M -intrepid/YP -intricacy/SM -intricateness/M -intricate/PY -intrigue/DRSZG -intriguer/M -intriguing/Y -intrinsically -intrinsic/S -introduce/ADSG -introducer/M -introduction/ASM -introductory -introit/SM -introject/SD -intro/S -introspection/MS -introspectiveness/M -introspective/YP -introspect/SGVD -introversion/SM -introvert/SMDG -intruder/M -intrude/ZGDSR -intrusion/SM -intrusiveness/MS -intrusive/SYP -intubate/NGDS -intubation/M -intuit/GVDSB -intuitionist/M -intuitiveness/MS -intuitive/YP -int/ZR -Inuit/MS -inundate/SXNG -inundation/M -inure/GDS -invader/M -invade/ZSRDG -invalid/GSDM -invalidism/MS -invariable/P -invariant/M -invasion/SM -invasive/P -invectiveness/M -invective/PSMY -inveigh/DRG -inveigher/M -inveighs -inveigle/DRSZG -inveigler/M -invent/ADGS -invented/U -invention/ASM -inventiveness/MS -inventive/YP -inventor/MS -inventory/SDMG -Inverness/M -inverse/YV -inverter/M -invertible -invert/ZSGDR -invest/ADSLG -investigate/XDSNGV -investigation/MA -investigator/MS -investigatory -investiture/SM -investment/ESA -investment's/A -investor/SM -inveteracy/MS -inveterate/Y -inviability -invidiousness/MS -invidious/YP -invigilate/GD -invigilator/SM -invigorate/ANGSD -invigorating/Y -invigoration/AM -invigorations -invincibility/SM -invincibleness/M -invincible/P -invincibly -inviolability/MS -inviolably -inviolateness/M -inviolate/YP -inviscid -invisibleness/M -invisible/S -invitational/S -invitation/MS -invited/U -invitee/S -inviter/M -invite/SRDG -inviting/Y -invocable -invocate -invoked/A -invoke/GSRDBZ -invoker/M -invokes/A -involuntariness/S -involuntary/P -involute/XYN -involution/M -involutorial -involvedly -involved/U -involve/GDSRL -involvement/SM -involver/M -invulnerability/M -invulnerableness/M -inwardness/M -inward/PY -ioctl -iodate/MGND -iodation/M -iodide/MS -iodinate/DNG -iodine/MS -iodize/GSD -Iolande/M -Iolanthe/M -Io/M -Iona/M -Ionesco/M -Ionian/M -ionic/S -Ionic/S -ionization's -ionization/SU -ionized/UC -ionize/GNSRDJXZ -ionizer's -ionizer/US -ionizes/U -ionizing/U -ionosphere/SM -ionospheric -ion's/I -ion/SMU -Iorgo/MS -Iormina/M -Iosep/M -iota/SM -IOU -Iowan/S -Iowa/SM -IPA -ipecac/MS -Iphigenia/M -ipso -Ipswich/M -IQ -Iqbal/M -Iquitos/M -Ira/M -Iranian/MS -Iran/M -Iraqi/SM -Iraq/M -IRA/S -irascibility/SM -irascible -irascibly -irateness/S -irate/RPYT -ireful -Ireland/M -ire/MGDS -Irena/M -Irene/M -irenic/S -iridescence/SM -iridescent/Y -irides/M -iridium/MS -irids -Irina/M -Iris -iris/GDSM -Irishman/M -Irishmen -Irish/R -Irishwoman/M -Irishwomen -Irita/M -irk/GDS -irksomeness/SM -irksome/YP -Irkutsk/M -Ir/M -Irma/M -ironclad/S -iron/DRMPSGJ -ironer/M -ironic -ironicalness/M -ironical/YP -ironing/M -ironmonger/M -ironmongery/M -ironside/MS -ironstone/MS -ironware/SM -ironwood/SM -ironworker/M -ironwork/MRS -irony/SM -Iroquoian/MS -Iroquois/M -irradiate/XSDVNG -irradiation/M -irrationality/MS -irrationalness/M -irrational/YSP -Irrawaddy/M -irreclaimable -irreconcilability/MS -irreconcilableness/M -irreconcilable/PS -irreconcilably -irrecoverableness/M -irrecoverable/P -irrecoverably -irredeemable/S -irredeemably -irredentism/M -irredentist/M -irreducibility/M -irreducible -irreducibly -irreflexive -irrefutable -irrefutably -irregardless -irregularity/SM -irregular/YS -irrelevance/SM -irrelevancy/MS -irrelevant/Y -irreligious -irremediableness/M -irremediable/P -irremediably -irremovable -irreparableness/M -irreparable/P -irreparably -irreplaceable/P -irrepressible -irrepressibly -irreproachableness/M -irreproachable/P -irreproachably -irreproducibility -irreproducible -irresistibility/M -irresistibleness/M -irresistible/P -irresistibly -irresoluteness/SM -irresolute/PNXY -irresolution/M -irresolvable -irrespective/Y -irresponsibility/SM -irresponsibleness/M -irresponsible/PS -irresponsibly -irretrievable -irretrievably -irreverence/MS -irreverent/Y -irreversible -irreversibly -irrevocableness/M -irrevocable/P -irrevocably -irrigable -irrigate/DSXNG -irrigation/M -irritability/MS -irritableness/M -irritable/P -irritably -irritant/S -irritate/DSXNGV -irritated/Y -irritating/Y -irritation/M -irrupt/GVSD -irruption/SM -IRS -Irtish/M -Irvine/M -Irving/M -Irvin/M -Irv/MG -Irwin/M -Irwinn/M -is -i's -Isaac/SM -Isaak/M -Isabelita/M -Isabella/M -Isabelle/M -Isabel/M -Isacco/M -Isac/M -Isadora/M -Isadore/M -Isador/M -Isahella/M -Isaiah/M -Isak/M -Isa/M -ISBN -Iscariot/M -Iseabal/M -Isfahan/M -Isherwood/M -Ishim/M -Ishmael/M -Ishtar/M -Isiahi/M -Isiah/M -Isidora/M -Isidore/M -Isidor/M -Isidoro/M -Isidro/M -isinglass/MS -Isis/M -Islamabad/M -Islamic/S -Islam/SM -islander/M -island/GZMRDS -Islandia/M -isle/MS -islet/SM -isl/GD -Ismael/M -ism/MCS -isn't -ISO -isobaric -isobar/MS -Isobel/M -isochronal/Y -isochronous/Y -isocline/M -isocyanate/M -isodine -isolate/SDXNG -isolationism/SM -isolationistic -isolationist/SM -isolation/M -isolator/MS -Isolde/M -isomeric -isomerism/SM -isomer/SM -isometrically -isometric/S -isometrics/M -isomorphic -isomorphically -isomorphism/MS -isomorph/M -isoperimetrical -isopleth/M -isopleths -isosceles -isostatic -isothermal/Y -isotherm/MS -isotonic -isotope/SM -isotopic -isotropic -isotropically -isotropy/M -Ispahan's -ispell/M -Ispell/M -Israeli/MS -Israelite/SM -Israel/MS -Issac/M -Issiah/M -Issie/M -Issi/M -issuable -issuance/MS -issuant -issued/A -issue/GMZDSR -issuer/AMS -issues/A -issuing/A -Issy/M -Istanbul/M -isthmian/S -isthmus/SM -Istvan/M -Isuzu/M -It -IT -Itaipu/M -ital -Italianate/GSD -Italian/MS -italicization/MS -italicized/U -italicize/GSD -italic/S -Ital/M -Italy/M -Itasca/M -itch/GMDS -itchiness/MS -Itch/M -itchy/RTP -ITcorp/M -ITCorp/M -it'd -Itel/M -itemization/SM -itemized/U -itemize/GZDRS -itemizer/M -itemizes/A -item/MDSG -iterate/ASDXVGN -iteration/M -iterative/YA -iterator/MS -Ithaca/M -Ithacan -itinerant/SY -itinerary/MS -it'll -it/MUS -Ito/M -its -itself -ITT -IUD/S -IV -Iva/M -Ivanhoe/M -Ivan/M -Ivar/M -I've -Ive/MRS -Iver/M -Ivette/M -Ivett/M -Ivie/M -iv/M -Ivonne/M -Ivor/M -Ivory/M -ivory/SM -IVs -Ivy/M -ivy/MDS -ix -Izaak/M -Izabel/M -Izak/M -Izanagi/M -Izanami/M -Izhevsk/M -Izmir/M -Izvestia/M -Izzy/M -jabbed -jabberer/M -jabber/JRDSZG -jabbing -Jabez/M -Jablonsky/M -jabot/MS -jab/SM -jacaranda/MS -Jacenta/M -Jacinda/M -Jacinta/M -Jacintha/M -Jacinthe/M -jackal/SM -jackass/SM -jackboot/DMS -jackdaw/SM -Jackelyn/M -jacketed/U -jacket/GSMD -jack/GDRMS -jackhammer/MDGS -Jackie/M -Jacki/M -jackknife/MGSD -jackknives -Jacklin/M -Jacklyn/M -Jack/M -Jackman/M -jackpot/MS -Jackqueline/M -Jackquelin/M -jackrabbit/DGS -Jacksonian -Jackson/SM -Jacksonville/M -jackstraw/MS -Jacky/M -Jaclin/M -Jaclyn/M -Jacobean -Jacobian/M -Jacobi/M -Jacobin/M -Jacobite/M -Jacobo/M -Jacobsen/M -Jacob/SM -Jacobs/N -Jacobson/M -Jacobus -Jacoby/M -jacquard/MS -Jacquard/SM -Jacqueline/M -Jacquelin/M -Jacquelyn/M -Jacquelynn/M -Jacquenetta/M -Jacquenette/M -Jacques/M -Jacquetta/M -Jacquette/M -Jacquie/M -Jacqui/M -jacuzzi -Jacuzzi/S -Jacynth/M -Jada/M -jadedness/SM -jaded/PY -jadeite/SM -Jade/M -jade/MGDS -Jaeger/M -Jae/M -jaggedness/SM -jagged/RYTP -Jagger/M -jaggers -jagging -jag/S -jaguar/MS -jailbird/MS -jailbreak/SM -jailer/M -jail/GZSMDR -Jaime/M -Jaimie/M -Jaine/M -Jainism/M -Jain/M -Jaipur/M -Jakarta/M -Jake/MS -Jakie/M -Jakob/M -jalape�o/S -jalopy/SM -jalousie/MS -Jamaal/M -Jamaica/M -Jamaican/S -Jamal/M -Jamar/M -jambalaya/MS -jamb/DMGS -jamboree/MS -Jamel/M -Jame/MS -Jameson/M -Jamestown/M -Jamesy/M -Jamey/M -Jamie/M -Jamill/M -Jamil/M -Jami/M -Jamima/M -Jamison/M -Jammal/M -jammed/U -Jammie/M -jamming/U -jam/SM -Janacek/M -Jana/M -Janaya/M -Janaye/M -Jandy/M -Janean/M -Janeczka/M -Janeen/M -Janeiro/M -Janek/M -Janela/M -Janella/M -Janelle/M -Janell/M -Janel/M -Jane/M -Janene/M -Janenna/M -Janessa/M -Janesville/M -Janeta/M -Janet/M -Janetta/M -Janette/M -Janeva/M -Janey/M -jangler/M -jangle/RSDGZ -jangly -Jania/M -Janice/M -Janie/M -Janifer/M -Janina/M -Janine/M -Janis/M -janissary/MS -Janith/M -janitorial -janitor/SM -Janka/M -Jan/M -Janna/M -Jannelle/M -Jannel/M -Jannie/M -Janos/M -Janot/M -Jansenist/M -Jansen/M -January/MS -Janus/M -Jany/M -Japanese/SM -Japan/M -japanned -japanner -japanning -japan/SM -jape/DSMG -Japura/M -Jaquelin/M -Jaquelyn/M -Jaquenetta/M -Jaquenette/M -Jaquith/M -Jarad/M -jardini�re/MS -Jard/M -Jareb/M -Jared/M -jarful/S -jargon/SGDM -Jarib/M -Jarid/M -Jarlsberg -jar/MS -Jarrad/M -jarred -Jarred/M -Jarret/M -Jarrett/M -Jarrid/M -jarring/SY -Jarrod/M -Jarvis/M -Jase/M -Jasen/M -Jasmina/M -Jasmine/M -jasmine/MS -Jasmin/M -Jason/M -Jasper/M -jasper/MS -Jastrow/M -Jasun/M -jato/SM -jaundice/DSMG -jaundiced/U -jauntily -jauntiness/MS -jaunt/MDGS -jaunty/SRTP -Javanese -Java/SM -javelin/SDMG -Javier/M -jawbone/SDMG -jawbreaker/SM -jawline -jaw/SMDG -Jaxartes/M -Jayapura/M -jaybird/SM -Jaycee/SM -Jaye/M -Jay/M -Jaymee/M -Jayme/M -Jaymie/M -Jaynell/M -Jayne/M -jay/SM -Jayson/M -jaywalker/M -jaywalk/JSRDZG -Jazmin/M -jazziness/M -jazzmen -jazz/MGDS -jazzy/PTR -JCS -jct -JD -Jdavie/M -jealousness/M -jealous/PY -jealousy/MS -Jeana/M -Jeanelle/M -Jeane/M -Jeanette/M -Jeanie/M -Jeanine/M -Jean/M -jean/MS -Jeanna/M -Jeanne/M -Jeannette/M -Jeannie/M -Jeannine/M -Jecho/M -Jedd/M -Jeddy/M -Jedediah/M -Jedidiah/M -Jedi/M -Jed/M -jeep/GZSMD -Jeep/S -jeerer/M -jeering/Y -jeer/SJDRMG -Jeeves/M -jeez -Jefferey/M -Jeffersonian/S -Jefferson/M -Jeffery/M -Jeffie/M -Jeff/M -Jeffrey/SM -Jeffry/M -Jeffy/M -jehad's -Jehanna/M -Jehoshaphat/M -Jehovah/M -Jehu/M -jejuna -jejuneness/M -jejune/PY -jejunum/M -Jekyll/M -Jelene/M -jell/GSD -Jello/M -jello's -jellybean/SM -jellyfish/MS -jellying/M -jellylike -jellyroll/S -jelly/SDMG -Jemie/M -Jemimah/M -Jemima/M -Jemmie/M -jemmy/M -Jemmy/M -Jena/M -Jenda/M -Jenelle/M -Jenica/M -Jeniece/M -Jenifer/M -Jeniffer/M -Jenilee/M -Jeni/M -Jenine/M -Jenkins/M -Jen/M -Jenna/M -Jennee/M -Jenner/M -jennet/SM -Jennette/M -Jennica/M -Jennie/M -Jennifer/M -Jennilee/M -Jenni/M -Jennine/M -Jennings/M -Jenn/RMJ -Jenny/M -jenny/SM -Jeno/M -Jensen/M -Jens/N -jeopard -jeopardize/GSD -jeopardy/MS -Jephthah/M -Jerad/M -Jerald/M -Jeralee/M -Jeramey/M -Jeramie/M -Jere/M -Jereme/M -jeremiad/SM -Jeremiah/M -Jeremiahs -Jeremias/M -Jeremie/M -Jeremy/M -Jericho/M -Jeri/M -jerker/M -jerk/GSDRJ -jerkily -jerkiness/SM -jerkin/SM -jerkwater/S -jerky/RSTP -Jermaine/M -Jermain/M -Jermayne/M -Jeroboam/M -Jerold/M -Jerome/M -Jeromy/M -Jerrie/M -Jerrilee/M -Jerrilyn/M -Jerri/M -Jerrine/M -Jerrod/M -Jerrold/M -Jerrome/M -jerrybuilt -Jerrylee/M -jerry/M -Jerry/M -jersey/MS -Jersey/MS -Jerusalem/M -Jervis/M -Jes -Jessalin/M -Jessalyn/M -Jessa/M -Jessamine/M -jessamine's -Jessamyn/M -Jessee/M -Jesselyn/M -Jesse/M -Jessey/M -Jessica/M -Jessie/M -Jessika/M -Jessi/M -jess/M -Jess/M -Jessy/M -jest/DRSGZM -jester/M -jesting/Y -Jesuit/SM -Jesus -Jeth/M -Jethro/M -jetliner/MS -jet/MS -jetport/SM -jetsam/MS -jetted/M -jetting/M -jettison/DSG -jetty/RSDGMT -jeweler/M -jewelery/S -jewel/GZMRDS -Jewelled/M -Jewelle/M -jewellery's -Jewell/MD -Jewel/M -jewelry/MS -Jewess/SM -Jewishness/MS -Jewish/P -Jew/MS -Jewry/MS -Jezebel/MS -j/F -JFK/M -jg/M -jibbed -jibbing -jibe/S -jib/MDSG -Jidda/M -jiff/S -jiffy/SM -jigged -jigger/SDMG -jigging/M -jiggle/SDG -jiggly/TR -jig/MS -jigsaw/GSDM -jihad/SM -Jilin -Jillana/M -Jillane/M -Jillayne/M -Jilleen/M -Jillene/M -Jillian/M -Jillie/M -Jilli/M -Jill/M -Jilly/M -jilt/DRGS -jilter/M -Jimenez/M -Jim/M -Jimmie/M -jimmy/GSDM -Jimmy/M -jimsonweed/S -Jinan -jingler/M -jingle/RSDG -jingly/TR -jingoism/SM -jingoistic -jingoist/SM -jingo/M -Jinnah/M -jinni's -jinn/MS -Jinny/M -jinrikisha/SM -jinx/GMDS -jitney/MS -jitterbugged -jitterbugger -jitterbugging -jitterbug/SM -jitter/S -jittery/TR -jiujitsu's -Jivaro/M -jive/MGDS -Joachim/M -Joana/M -Joane/M -Joanie/M -Joan/M -Joanna/M -Joanne/SM -Joann/M -Joaquin/M -jobbed -jobber/MS -jobbery/M -jobbing/M -Jobey/M -jobholder/SM -Jobie/M -Jobi/M -Jobina/M -joblessness/MS -jobless/P -Jobrel/M -job/SM -Job/SM -Jobye/M -Joby/M -Jobyna/M -Jocasta/M -Joceline/M -Jocelin/M -Jocelyne/M -Jocelyn/M -jockey/SGMD -jock/GDMS -Jock/M -Jocko/M -jockstrap/MS -jocoseness/MS -jocose/YP -jocosity/SM -jocularity/SM -jocular/Y -jocundity/SM -jocund/Y -Jodee/M -jodhpurs -Jodie/M -Jodi/M -Jody/M -Joeann/M -Joela/M -Joelie/M -Joella/M -Joelle/M -Joellen/M -Joell/MN -Joelly/M -Joellyn/M -Joel/MY -Joelynn/M -Joe/M -Joesph/M -Joete/M -joey/M -Joey/M -jogged -jogger/SM -jogging/S -joggler/M -joggle/SRDG -Jogjakarta/M -jog/S -Johan/M -Johannah/M -Johanna/M -Johannes -Johannesburg/M -Johann/M -Johansen/M -Johanson/M -Johna/MH -Johnathan/M -Johnath/M -Johnathon/M -Johnette/M -Johnie/M -Johnna/M -Johnnie/M -johnnycake/SM -Johnny/M -johnny/SM -Johnsen/M -john/SM -John/SM -Johns/N -Johnson/M -Johnston/M -Johnstown/M -Johny/M -Joice/M -join/ADGFS -joined/U -joiner/FSM -joinery/MS -jointed/EYP -jointedness/ME -joint/EGDYPS -jointer/M -jointly/F -joint's -jointures -joist/GMDS -Jojo/M -joke/MZDSRG -joker/M -jokey -jokier -jokiest -jokily -joking/Y -Jolee/M -Joleen/M -Jolene/M -Joletta/M -Jolie/M -Joliet's -Joli/M -Joline/M -Jolla/M -jollification/MS -jollily -jolliness/SM -jollity/MS -jolly/TSRDGP -Jolson/M -jolt/DRGZS -jolter/M -Joly/M -Jolyn/M -Jolynn/M -Jo/MY -Jonah/M -Jonahs -Jonas -Jonathan/M -Jonathon/M -Jonell/M -Jone/MS -Jones/S -Jonie/M -Joni/MS -Jon/M -jonquil/MS -Jonson/M -Joplin/M -Jordain/M -Jordana/M -Jordanian/S -Jordan/M -Jordanna/M -Jordon/M -Jorey/M -Jorgan/M -Jorge/M -Jorgensen/M -Jorgenson/M -Jorie/M -Jori/M -Jorrie/M -Jorry/M -Jory/M -Joscelin/M -Josee/M -Josefa/M -Josefina/M -Josef/M -Joseito/M -Jose/M -Josepha/M -Josephina/M -Josephine/M -Joseph/M -Josephs -Josephson/M -Josephus/M -Josey/M -josh/DSRGZ -josher/M -Joshia/M -Josh/M -Joshuah/M -Joshua/M -Josiah/M -Josias/M -Josie/M -Josi/M -Josselyn/M -joss/M -jostle/SDG -Josue/M -Josy/M -jot/S -jotted -jotter/SM -jotting/SM -Joule/M -joule/SM -jounce/SDG -jouncy/RT -Jourdain/M -Jourdan/M -journalese/MS -journal/GSDM -journalism/SM -journalistic -journalist/SM -journalize/DRSGZ -journalized/U -journalizer/M -journey/DRMZSGJ -journeyer/M -journeyman/M -journeymen -jouster/M -joust/ZSMRDG -Jovanovich/M -Jove/M -joviality/SM -jovial/Y -Jovian -jowl/SMD -jowly/TR -Joya/M -Joyan/M -Joyann/M -Joycean -Joycelin/M -Joyce/M -Joye/M -joyfuller -joyfullest -joyfulness/SM -joyful/PY -joylessness/MS -joyless/PY -Joy/M -joy/MDSG -Joyner/M -joyousness/MS -joyous/YP -joyridden -joyride/SRZMGJ -joyrode -joystick/S -Jozef/M -JP -Jpn -Jr/M -j's -J's -Jsandye/M -Juana/M -Juanita/M -Juan/M -Juarez -Jubal/M -jubilant/Y -jubilate/XNGDS -jubilation/M -jubilee/SM -Judah/M -Judaic -Judaical -Judaism/SM -Judas/S -juddered -juddering -Judd/M -Judea/M -Jude/M -judge/AGDS -judger/M -judge's -judgeship/SM -judgmental/Y -judgment/MS -judicable -judicatory/S -judicature/MS -judicial/Y -judiciary/S -judicious/IYP -judiciousness/SMI -Judie/M -Judi/MH -Juditha/M -Judith/M -Jud/M -judo/MS -Judon/M -Judson/M -Judye/M -Judy/M -jugate/F -jugful/SM -jugged -Juggernaut/M -juggernaut/SM -jugging -juggler/M -juggle/RSDGZ -jugglery/MS -jug/MS -jugular/S -juice/GMZDSR -juicer/M -juicily -juiciness/MS -juicy/TRP -Juieta/M -jujitsu/MS -jujube/SM -juju/M -jujutsu's -jukebox/SM -juke/GS -Julee/M -Jule/MS -julep/SM -Julia/M -Juliana/M -Juliane/M -Julian/M -Julianna/M -Julianne/M -Juliann/M -Julie/M -julienne/GSD -Julienne/M -Julieta/M -Juliet/M -Julietta/M -Juliette/M -Juli/M -Julina/M -Juline/M -Julio/M -Julissa/M -Julita/M -Julius/M -Jul/M -Julys -July/SM -jumble/GSD -jumbo/MS -jumper/M -jump/GZDRS -jumpily -jumpiness/MS -jumpsuit/S -jumpy/PTR -jun -junco/MS -junction/IMESF -juncture/SFM -Juneau/M -June/MS -Junette/M -Jungfrau/M -Jungian -jungle/SDM -Jung/M -Junia/M -Junie/M -Junina/M -juniority/M -junior/MS -Junior/S -juniper/SM -junkerdom -Junker/SM -junketeer/SGDM -junket/SMDG -junk/GZDRMS -junkie/RSMT -junkyard/MS -Jun/M -Juno/M -junta/MS -Jupiter/M -Jurassic -juridic -juridical/Y -juried -jurisdictional/Y -jurisdiction/SM -jurisprudence/SM -jurisprudent -jurisprudential/Y -juristic -jurist/MS -juror/MS -Jurua/M -jury/IMS -jurying -juryman/M -jurymen -jurywoman/M -jurywomen -justed -Justen/M -juster/M -justest -Justice/M -justice/MIS -justiciable -justifiability/M -justifiable/U -justifiably/U -justification/M -justified/UA -justifier/M -justify/GDRSXZN -Justina/M -Justine/M -justing -Justinian/M -Justin/M -Justinn/M -Justino/M -Justis/M -justness/MS -justness's/U -justs -just/UPY -Justus/M -jute/SM -Jutish -Jutland/M -jut/S -jutted -jutting -Juvenal/M -juvenile/SM -juxtapose/SDG -juxtaposition/SM -JV -J/X -Jyoti/M -Kaaba/M -kabob/SM -kaboom -Kabuki -kabuki/SM -Kabul/M -Kacey/M -Kacie/M -Kacy/M -Kaddish/M -kaddish/S -Kaela/M -kaffeeklatch -kaffeeklatsch/S -Kafkaesque -Kafka/M -kaftan's -Kagoshima/M -Kahaleel/M -Kahlil/M -Kahlua/M -Kahn/M -Kaia/M -Kaifeng/M -Kaila/M -Kaile/M -Kailey/M -Kai/M -Kaine/M -Kain/M -kaiser/MS -Kaiser/SM -Kaitlin/M -Kaitlyn/M -Kaitlynn/M -Kaja/M -Kajar/M -Kakalina/M -Kalahari/M -Kala/M -Kalamazoo/M -Kalashnikov/M -Kalb/M -Kaleb/M -Kaleena/M -kaleidescope -kaleidoscope/SM -kaleidoscopic -kaleidoscopically -Kale/M -kale/MS -Kalgoorlie/M -Kalie/M -Kalila/M -Kalil/M -Kali/M -Kalina/M -Kalinda/M -Kalindi/M -Kalle/M -Kalli/M -Kally/M -Kalmyk -Kalvin/M -Kama/M -Kamchatka/M -Kamehameha/M -Kameko/M -Kamikaze/MS -kamikaze/SM -Kamilah/M -Kamila/M -Kamillah/M -Kampala/M -Kampuchea/M -Kanchenjunga/M -Kandace/M -Kandahar/M -Kandinsky/M -Kandy/M -Kane/M -kangaroo/SGMD -Kania/M -Kankakee/M -Kan/MS -Kannada/M -Kano/M -Kanpur/M -Kansan/S -Kansas -Kantian -Kant/M -Kanya/M -Kaohsiung/M -kaolinite/M -kaolin/MS -Kaplan/M -kapok/SM -Kaposi/M -kappa/MS -kaput/M -Karachi/M -Karaganda/M -Karakorum/M -karakul/MS -Karalee/M -Karalynn/M -Kara/M -Karamazov/M -karaoke/S -karate/MS -karat/SM -Karee/M -Kareem/M -Karel/M -Kare/M -Karena/M -Karenina/M -Karen/M -Karia/M -Karie/M -Karil/M -Karilynn/M -Kari/M -Karim/M -Karina/M -Karine/M -Karin/M -Kariotta/M -Karisa/M -Karissa/M -Karita/M -Karla/M -Karlan/M -Karlee/M -Karleen/M -Karlene/M -Karlen/M -Karlie/M -Karlik/M -Karlis -Karl/MNX -Karloff/M -Karlotta/M -Karlotte/M -Karly/M -Karlyn/M -karma/SM -Karmen/M -karmic -Karna/M -Karney/M -Karola/M -Karole/M -Karolina/M -Karoline/M -Karol/M -Karoly/M -Karon/M -Karo/YM -Karp/M -Karrah/M -Karrie/M -Karroo/M -Karry/M -kart/MS -Karylin/M -Karyl/M -Kary/M -Karyn/M -Kasai/M -Kasey/M -Kashmir/SM -Kaspar/M -Kasparov/M -Kasper/M -Kass -Kassandra/M -Kassey/M -Kassia/M -Kassie/M -Kassi/M -katakana -Katalin/M -Kata/M -Katee/M -Katelyn/M -Kate/M -Katerina/M -Katerine/M -Katey/M -Katha/M -Katharina/M -Katharine/M -Katharyn/M -Kathe/M -Katherina/M -Katherine/M -Katheryn/M -Kathiawar/M -Kathie/M -Kathi/M -Kathleen/M -Kathlin/M -Kath/M -Kathmandu -Kathrine/M -Kathryne/M -Kathryn/M -Kathye/M -Kathy/M -Katie/M -Kati/M -Katina/M -Katine/M -Katinka/M -Katleen/M -Katlin/M -Kat/M -Katmai/M -Katmandu's -Katowice/M -Katrina/M -Katrine/M -Katrinka/M -Kattie/M -Katti/M -Katuscha/M -Katusha/M -Katya/M -katydid/SM -Katy/M -Katz/M -Kauai/M -Kauffman/M -Kaufman/M -Kaunas/M -Kaunda/M -Kawabata/M -Kawasaki/M -kayak/SGDM -Kaycee/M -Kaye/M -Kayla/M -Kaylee/M -Kayle/M -Kayley/M -Kaylil/M -Kaylyn/M -Kay/M -Kayne/M -kayo/DMSG -Kazakh/M -Kazakhstan -Kazan/M -Kazantzakis/M -kazoo/SM -Kb -KB -KC -kcal/M -kc/M -KDE/M -Keane/M -Kean/M -Kearney/M -Keary/M -Keaton/M -Keats/M -kebab/SM -Keck/M -Keefe/MR -Keefer/M -Keegan/M -Keelby/M -Keeley/M -keel/GSMDR -keelhaul/SGD -Keelia/M -Keely/M -Keenan/M -Keene/M -keener/M -keen/GTSPYDR -keening/M -Keen/M -keenness/MS -keeper/M -keep/GZJSR -keeping/M -keepsake/SM -Keewatin/M -kegged -kegging -keg/MS -Keillor/M -Keir/M -Keisha/M -Keith/M -Kelbee/M -Kelby/M -Kelcey/M -Kelcie/M -Kelci/M -Kelcy/M -Kele/M -Kelila/M -Kellby/M -Kellen/M -Keller/M -Kelley/M -Kellia/M -Kellie/M -Kelli/M -Kellina/M -Kellogg/M -Kellsie/M -Kellyann/M -Kelly/M -kelp/GZMDS -Kelsey/M -Kelsi/M -Kelsy/M -Kelt's -Kelvin/M -kelvin/MS -Kelwin/M -Kemerovo/M -Kempis/M -Kemp/M -Kendall/M -Kendal/M -Kendell/M -Kendra/M -Kendre/M -Kendrick/MS -Kenilworth/M -Ken/M -Kenmore/M -ken/MS -Kenna/M -Kennan/M -Kennecott/M -kenned -Kennedy/M -kennel/GSMD -Kenneth/M -Kennett/M -Kennie/M -kenning -Kennith/M -Kenn/M -Kenny/M -keno/M -Kenon/M -Kenosha/M -Kensington/M -Kent/M -Kenton/M -Kentuckian/S -Kentucky/M -Kenya/M -Kenyan/S -Kenyatta/M -Kenyon/M -Keogh/M -Keokuk/M -kepi/SM -Kepler/M -kept -keratin/MS -kerbside -Kerby/M -kerchief/MDSG -Kerensky/M -Kerianne/M -Keriann/M -Keri/M -Kerk/M -Ker/M -Kermie/M -Kermit/M -Kermy/M -kerned -kernel/GSMD -kerning -Kern/M -kerosene/MS -Kerouac/M -Kerrie/M -Kerrill/M -Kerri/M -Kerrin/M -Kerr/M -Kerry/M -Kerstin/M -Kerwin/M -Kerwinn/M -Kesley/M -Keslie/M -Kessiah/M -Kessia/M -Kessler/M -kestrel/SM -ketch/MS -ketchup/SM -ketone/M -ketosis/M -Kettering/M -Kettie/M -Ketti/M -kettledrum/SM -kettleful -kettle/SM -Ketty/M -Kevan/M -Keven/M -Kevina/M -Kevin/M -Kevlar -Kev/MN -Kevon/M -Kevorkian/M -Kevyn/M -Kewaskum/M -Kewaunee/M -Kewpie/M -keyboardist/S -keyboard/RDMZGS -keyclick/SM -keyhole/MS -Key/M -Keynesian/M -Keynes/M -keynoter/M -keynote/SRDZMG -keypad/MS -keypuncher/M -keypunch/ZGRSD -keyring -key/SGMD -keystone/SM -keystroke/SDMG -keyword/SM -k/FGEIS -kg -K/G -KGB -Khabarovsk/M -Khachaturian/M -khaki/SM -Khalid/M -Khalil/M -Khan/M -khan/MS -Kharkov/M -Khartoum/M -Khayyam/M -Khmer/M -Khoisan/M -Khomeini/M -Khorana/M -Khrushchev/SM -Khufu/M -Khulna/M -Khwarizmi/M -Khyber/M -kHz/M -KIA -Kiah/M -Kial/M -kibble/GMSD -kibbutzim -kibbutz/M -kibitzer/M -kibitz/GRSDZ -kibosh/GMSD -Kickapoo/M -kickback/SM -kickball/MS -kicker/M -kick/GZDRS -kickoff/SM -kickstand/MS -kicky/RT -kidded -kidder/SM -kiddie/SD -kidding/YM -kiddish -Kidd/M -kiddo/SM -kiddying -kiddy's -kidless -kid/MS -kidnaper's -kidnaping's -kidnap/MSJ -kidnapped -kidnapper/SM -kidnapping/S -kidney/MS -kidskin/SM -Kieffer/M -kielbasa/SM -kielbasi -Kiele/M -Kiel/M -Kienan/M -kier/I -Kierkegaard/M -Kiersten/M -Kieth/M -Kiev/M -Kigali/M -Kikelia/M -Kikuyu/M -Kilauea/M -Kile/M -Kiley/M -Kilian/M -Kilimanjaro/M -kill/BJGZSDR -killdeer/SM -Killebrew/M -killer/M -Killian/M -Killie/M -killing/Y -killjoy/S -Killy/M -kiln/GDSM -kilobaud/M -kilobit/S -kilobuck -kilobyte/S -kilocycle/MS -kilogauss/M -kilogram/MS -kilohertz/M -kilohm/M -kilojoule/MS -kiloliter/MS -kilometer/SM -kilo/SM -kiloton/SM -kilovolt/SM -kilowatt/SM -kiloword -kilter/M -kilt/MDRGZS -Ki/M -Kimball/M -Kimbell/M -Kimberlee/M -Kimberley/M -Kimberli/M -Kimberly/M -Kimberlyn/M -Kimble/M -Kimbra/M -Kim/M -Kimmie/M -Kimmi/M -Kimmy/M -kimono/MS -Kincaid/M -kinda -kindergarten/MS -kinderg�rtner/SM -kinder/U -kindheartedness/MS -kindhearted/YP -kindle/AGRSD -kindler/M -kindliness/SM -kindliness's/U -kindling/M -kindly/TUPR -kindness's -kindness/US -kind/PSYRT -kindred/S -kinematic/S -kinematics/M -kinesics/M -kine/SM -kinesthesis -kinesthetically -kinesthetic/S -kinetically -kinetic/S -kinetics/M -kinfolk/S -kingbird/M -kingdom/SM -kingfisher/MS -kinglet/M -kingliness/M -kingly/TPR -King/M -kingpin/MS -Kingsbury/M -king/SGYDM -kingship/SM -Kingsley/M -Kingsly/M -Kingston/M -Kingstown/M -Kingwood/M -kink/GSDM -kinkily -kinkiness/SM -kinky/PRT -Kin/M -kin/MS -Kinna/M -Kinney/M -Kinnickinnic/M -Kinnie/M -Kinny/M -Kinsey/M -kinsfolk/S -Kinshasa/M -Kinshasha/M -kinship/SM -Kinsley/M -kinsman/M -kinsmen/M -kinswoman/M -kinswomen -kiosk/SM -Kiowa/SM -Kipling/M -Kip/M -kip/MS -Kippar/M -kipped -kipper/DMSG -Kipper/M -Kippie/M -kipping -Kipp/MR -Kippy/M -Kira/M -Kirbee/M -Kirbie/M -Kirby/M -Kirchhoff/M -Kirchner/M -Kirchoff/M -Kirghistan/M -Kirghizia/M -Kirghiz/M -Kiribati -Kiri/M -Kirinyaga/M -kirk/GDMS -Kirkland/M -Kirk/M -Kirkpatrick/M -Kirkwood/M -Kirov/M -kirsch/S -Kirsteni/M -Kirsten/M -Kirsti/M -Kirstin/M -Kirstyn/M -Kisangani/M -Kishinev/M -kismet/SM -kiss/DSRBJGZ -Kissee/M -kisser/M -Kissiah/M -Kissie/M -Kissinger/M -Kitakyushu/M -kitbag's -kitchener/M -Kitchener/M -kitchenette/SM -kitchen/GDRMS -kitchenware/SM -kiter/M -kite/SM -kith/MDG -kiths -Kit/M -kit/MDRGS -kitsch/MS -kitschy -kitted -kittenishness/M -kittenish/YP -kitten/SGDM -Kittie/M -Kitti/M -kitting -kittiwakes -Kitty/M -kitty/SM -Kiwanis/M -kiwifruit/S -kiwi/SM -Kizzee/M -Kizzie/M -KKK -kl -Klan/M -Klansman/M -Klara/M -Klarika/M -Klarrisa/M -Klaus/M -klaxon/M -Klee/M -Kleenex/SM -Klein/M -Kleinrock/M -Klemens/M -Klement/M -Kleon/M -kleptomaniac/SM -kleptomania/MS -Kliment/M -Kline/M -Klingon/M -Klondike/SDMG -kludger/M -kludge/RSDGMZ -kludgey -klutziness/S -klutz/SM -klutzy/TRP -Klux/M -klystron/MS -km -kn -knacker/M -knack/SGZRDM -knackwurst/MS -Knapp/M -knapsack/MS -Knauer/M -knavery/MS -knave/SM -knavish/Y -kneader/M -knead/GZRDS -kneecap/MS -kneecapped -kneecapping -knee/DSM -kneeing -kneeler/M -kneel/GRS -kneepad/SM -knell/SMDG -knelt -Knesset/M -knew -Kngwarreye/M -Knickerbocker/MS -knickerbocker/S -knickknack/SM -knick/ZR -Knievel/M -knife/DSGM -knighthood/MS -knightliness/MS -knightly/P -Knight/M -knight/MDYSG -knish/MS -knit/AU -knits -knitted -knitter/MS -knitting/SM -knitwear/M -knives/M -knobbly -knobby/RT -Knobeloch/M -knob/MS -knockabout/M -knockdown/S -knocker/M -knock/GZSJRD -knockoff/S -knockout/MS -knockwurst's -knoll/MDSG -Knopf/M -Knossos/M -knothole/SM -knot/MS -knotted -knottiness/M -knotting/M -knotty/TPR -knowable/U -knower/M -know/GRBSJ -knowhow -knowingly/U -knowing/RYT -knowings/U -knowledgeableness/M -knowledgeable/P -knowledgeably -knowledge/SM -Knowles -known/SU -Knox/M -Knoxville/M -knuckleball/R -knuckle/DSMG -knuckleduster -knucklehead/MS -Knudsen/M -Knudson/M -knurl/DSG -Knuth/M -Knutsen/M -Knutson/M -KO -koala/SM -Kobayashi/M -Kobe/M -Kochab/M -Koch/M -Kodachrome/M -Kodak/SM -Kodaly/M -Kodiak/M -Koenig/M -Koenigsberg/M -Koenraad/M -Koestler/M -Kohinoor/M -Kohler/M -Kohl/MR -kohlrabies -kohlrabi/M -kola/SM -Kolyma/M -Kommunizma/M -Kong/M -Kongo/M -Konrad/M -Konstance/M -Konstantine/M -Konstantin/M -Konstanze/M -kookaburra/SM -kook/GDMS -kookiness/S -kooky/PRT -Koo/M -Koontz/M -kopeck/MS -Koppers/M -Koralle/M -Koral/M -Kora/M -Koranic -Koran/SM -Kordula/M -Korea/M -Korean/S -Korella/M -Kore/M -Koren/M -Koressa/M -Korey/M -Korie/M -Kori/M -Kornberg/M -Korney/M -Korrie/M -Korry/M -Kort/M -Kory/M -Korzybski/M -Kosciusko/M -kosher/DGS -Kossuth/M -Kosygin/M -Kovacs/M -Kowalewski/M -Kowalski/M -Kowloon/M -kowtow/SGD -KP -kph -kraal/SMDG -Kraemer/M -kraft/M -Kraft/M -Krakatau's -Krakatoa/M -Krakow/M -Kramer/M -Krasnodar/M -Krasnoyarsk/M -Krause/M -kraut/S! -Krebs/M -Kremlin/M -Kremlinologist/MS -Kremlinology/MS -Kresge/M -Krieger/M -kriegspiel/M -krill/MS -Kringle/M -Krisha/M -Krishnah/M -Krishna/M -Kris/M -Krispin/M -Krissie/M -Krissy/M -Kristal/M -Krista/M -Kristan/M -Kristel/M -Kriste/M -Kristen/M -Kristian/M -Kristie/M -Kristien/M -Kristi/MN -Kristina/M -Kristine/M -Kristin/M -Kristofer/M -Kristoffer/M -Kristofor/M -Kristoforo/M -Kristo/MS -Kristopher/M -Kristy/M -Kristyn/M -Kr/M -Kroc/M -Kroger/M -kr�na/M -Kronecker/M -krone/RM -kronor -kr�nur -Kropotkin/M -Krueger/M -Kruger/M -Krugerrand/S -Krupp/M -Kruse/M -krypton/SM -Krystalle/M -Krystal/M -Krysta/M -Krystle/M -Krystyna/M -ks -K's -KS -k's/IE -kt -Kublai/M -Kubrick/M -kuchen/MS -kudos/M -kudzu/SM -Kuenning/M -Kuhn/M -Kuibyshev/M -Ku/M -Kumar/M -kumquat/SM -Kunming/M -Kuomintang/M -Kurdish/M -Kurdistan/SM -Kurd/SM -Kurosawa/M -Kurtis/M -Kurt/M -kurtosis/M -Kusch/M -Kuwaiti/SM -Kuwait/M -Kuznetsk/M -Kuznets/M -kvetch/DSG -kw -kW -Kwakiutl/M -Kwangchow's -Kwangju/M -Kwanzaa/S -kWh -KY -Kyla/M -kyle/M -Kyle/M -Kylen/M -Kylie/M -Kylila/M -Kylynn/M -Ky/MH -Kym/M -Kynthia/M -Kyoto/M -Kyrgyzstan -Kyrstin/M -Kyushu/M -L -LA -Laban/M -labeled/U -labeler/M -label/GAZRDS -labellings/A -label's -labial/YS -labia/M -labile -labiodental -labium/M -laboratory/MS -laboredness/M -labored/PMY -labored's/U -laborer/M -laboring/MY -laborings/U -laboriousness/MS -laborious/PY -labor/RDMJSZG -laborsaving -Labradorean/S -Labrador/SM -lab/SM -Lab/SM -laburnum/SM -labyrinthine -labyrinth/M -labyrinths -laced/U -Lacee/M -lace/MS -lacerate/NGVXDS -laceration/M -lacer/M -laces/U -lacewing/MS -Lacey/M -Lachesis/M -lachrymal/S -lachrymose -Lacie/M -lacing/M -lackadaisic -lackadaisical/Y -Lackawanna/M -lacker/M -lackey/SMDG -lack/GRDMS -lackluster/S -Lac/M -laconic -laconically -lacquerer/M -lacquer/ZGDRMS -lacrosse/MS -lac/SGMDR -lactate/MNGSDX -lactational/Y -lactation/M -lacteal -lactic -lactose/MS -lacunae -lacuna/M -Lacy/M -lacy/RT -ladder/GDMS -laddie/MS -laded/U -ladened -ladening -laden/U -lade/S -lading/M -ladle/SDGM -Ladoga/M -Ladonna/M -lad/XGSJMND -ladybird/SM -ladybug/MS -ladyfinger/SM -ladylike/U -ladylove/MS -Ladyship/MS -ladyship/SM -lady/SM -Lady/SM -Laetitia/M -laetrile/S -Lafayette/M -Lafitte/M -lager/DMG -laggard/MYSP -laggardness/M -lagged -lagging/MS -lagniappe/SM -lagoon/MS -Lagos/M -Lagrange/M -Lagrangian/M -Laguerre/M -Laguna/M -lag/ZSR -Lahore/M -laid/AI -Laidlaw/M -lain -Laina/M -Lainey/M -Laird/M -laird/MS -lair/GDMS -laissez -laity/SM -Laius/M -lake/DSRMG -Lakehurst/M -Lakeisha/M -laker/M -lakeside -Lakewood/M -Lakisha/M -Lakshmi/M -lallygagged -lallygagging -lallygag/S -Lalo/M -La/M -Lamaism/SM -Lamarck/M -Lamar/M -lamasery/MS -lama/SM -Lamaze -lambada/S -lambaste/SDG -lambda/SM -lambency/MS -lambent/Y -Lambert/M -lambkin/MS -Lamb/M -Lamborghini/M -lambskin/MS -lamb/SRDMG -lambswool -lamebrain/SM -lamed/M -lameness/MS -lamentableness/M -lamentable/P -lamentably -lamentation/SM -lament/DGSB -lamented/U -lame/SPY -la/MHLG -laminae -lamina/M -laminar -laminate/XNGSD -lamination/M -lam/MDRSTG -lammed -lammer -lamming -Lammond/M -Lamond/M -Lamont/M -L'Amour -lampblack/SM -lamplighter/M -lamplight/ZRMS -lampooner/M -lampoon/RDMGS -Lamport/M -lamppost/SM -lamprey/MS -lamp/SGMRD -lampshade/MS -LAN -Lanae/M -Lanai/M -lanai/SM -Lana/M -Lancashire/M -Lancaster/M -Lancelot/M -Lance/M -lancer/M -lance/SRDGMZ -lancet/MS -landau/MS -lander/I -landfall/SM -landfill/DSG -landforms -landholder/M -landhold/JGZR -landing/M -Landis/M -landlady/MS -landless -landlines -landlocked -landlord/MS -landlubber/SM -Land/M -landmark/GSMD -landmass/MS -Landon/M -landowner/MS -landownership/M -landowning/SM -Landry/M -Landsat -landscape/GMZSRD -landscaper/M -lands/I -landslide/MS -landslid/G -landslip -landsman/M -landsmen -land/SMRDJGZ -Landsteiner/M -landward/S -Landwehr/M -Lane/M -lane/SM -Lanette/M -Laney/M -Langeland/M -Lange/M -Langerhans/M -Langford/M -Langland/M -Langley/M -Lang/M -Langmuir/M -Langsdon/M -Langston/M -language/MS -languidness/MS -languid/PY -languisher/M -languishing/Y -languish/SRDG -languorous/Y -languor/SM -Lanie/M -Lani/M -Lanita/M -lankiness/SM -lankness/MS -lank/PTYR -lanky/PRT -Lanna/M -Lannie/M -Lanni/M -Lanny/M -lanolin/MS -Lansing/M -lantern/GSDM -lanthanide/M -lanthanum/MS -lanyard/MS -Lanzhou -Laocoon/M -Lao/SM -Laotian/MS -lapboard/MS -lapdog/S -lapel/MS -lapidary/MS -lapin/MS -Laplace/M -Lapland/ZMR -lapped -lappet/MS -lapping -Lapp/SM -lapsed/A -lapse/KSDMG -lapser/MA -lapses/A -lapsing/A -lap/SM -laps/SRDG -laptop/SM -lapwing/MS -Laraine/M -Lara/M -Laramie/M -larboard/MS -larcenist/S -larcenous -larceny/MS -larch/MS -larder/M -lard/MRDSGZ -Lardner/M -lardy/RT -Laredo/M -largehearted -largemouth -largeness/SM -large/SRTYP -largess/SM -largish -largo/S -lariat/MDGS -Lari/M -Larina/M -Larine/M -Larisa/M -Larissa/M -larker/M -lark/GRDMS -Lark/M -larkspur/MS -Larousse/M -Larry/M -Larsen/M -Lars/NM -Larson/M -larvae -larval -larva/M -laryngeal/YS -larynges -laryngitides -laryngitis/M -larynx/M -Laryssa/M -lasagna/S -lasagne's -Lascaux/M -lasciviousness/MS -lascivious/YP -lase -laser/M -lashed/U -lasher/M -lashing/M -lash/JGMSRD -Lassa/M -Lassen/M -Lassie/M -lassie/SM -lassitude/MS -lassoer/M -lasso/GRDMS -las/SRZG -lass/SM -laster/M -lastingness/M -lasting/PY -last/JGSYRD -Laszlo/M -Latasha/M -Latashia/M -latching/M -latchkey/SM -latch's -latch/UGSD -latecomer/SM -lated/A -late/KA -lately -latency/MS -lateness/MS -latent/YS -later/A -lateral/GDYS -lateralization -Lateran/M -latest/S -LaTeX/M -latex/MS -lathe/M -latherer/M -lather/RDMG -lathery -lathing/M -lath/MSRDGZ -Lathrop/M -laths -Latia/M -latices/M -Latina/SM -Latinate -Latino/S -Latin/RMS -latish -Latisha/M -latitude/SM -latitudinal/Y -latitudinarian/S -latitudinary -Lat/M -Latonya/M -Latoya/M -Latrena/M -Latrina/M -latrine/MS -Latrobe/M -lat/SDRT -latter/YM -latte/SR -lattice/SDMG -latticework/MS -latticing/M -Lattimer/M -Latvia/M -Latvian/S -laudably -laudanum/MS -laudatory -Lauderdale/M -lauder/M -Lauder/M -Laud/MR -laud/RDSBG -lauds/M -Laue/M -laughableness/M -laughable/P -laughably -laugh/BRDZGJ -laugher/M -laughing/MY -laughingstock/SM -laughs -laughter/MS -Laughton/M -Launce/M -launch/AGSD -launcher/MS -launching/S -launchpad/S -laundered/U -launderer/M -launderette/MS -launder/SDRZJG -laundress/MS -laundrette/S -laundromat/S -Laundromat/SM -laundryman/M -laundrymen -laundry/MS -laundrywoman/M -laundrywomen -Lauraine/M -Lauralee/M -Laural/M -laura/M -Laura/M -Laurasia/M -laureate/DSNG -laureateship/SM -Lauree/M -Laureen/M -Laurella/M -Laurel/M -laurel/SGMD -Laure/M -Laurena/M -Laurence/M -Laurene/M -Lauren/SM -Laurentian -Laurent/M -Lauretta/M -Laurette/M -Laurianne/M -Laurice/M -Laurie/M -Lauri/M -Lauritz/M -Lauryn/M -Lausanne/M -lavage/MS -lavaliere/MS -Laval/M -lava/SM -lavatory/MS -lave/GDS -Lavena/M -lavender/MDSG -Laverna/M -Laverne/M -Lavern/M -Lavina/M -Lavinia/M -Lavinie/M -lavishness/MS -lavish/SRDYPTG -Lavoisier/M -Lavonne/M -Lawanda/M -lawbreaker/SM -lawbreaking/MS -Lawford/M -lawfulness/SMU -lawful/PUY -lawgiver/MS -lawgiving/M -lawlessness/MS -lawless/PY -Law/M -lawmaker/MS -lawmaking/SM -lawman/M -lawmen -lawnmower/S -lawn/SM -Lawrence/M -Lawrenceville/M -lawrencium/SM -Lawry/M -law/SMDG -Lawson/M -lawsuit/MS -Lawton/M -lawyer/DYMGS -laxativeness/M -laxative/PSYM -laxer/A -laxes/A -laxity/SM -laxness/SM -lax/PTSRY -layabout/MS -Layamon/M -layaway/S -lay/CZGSR -layered/C -layer/GJDM -layering/M -layer's/IC -layette/SM -Layla/M -Lay/M -layman/M -laymen -Layne/M -Layney/M -layoff/MS -layout/SM -layover/SM -laypeople -layperson/S -lays/AI -Layton/M -layup/MS -laywoman/M -laywomen -Lazare/M -Lazar/M -Lazaro/M -Lazarus/M -laze/DSG -lazily -laziness/MS -lazuli/M -lazybones/M -lazy/PTSRDG -lb -LBJ/M -lbs -LC -LCD -LCM -LDC -leachate -Leach/M -leach/SDG -Leadbelly/M -leaded/U -leadenness/M -leaden/PGDY -leaderless -leader/M -leadership/MS -lead/SGZXJRDN -leadsman/M -leadsmen -leafage/MS -leaf/GSDM -leafhopper/M -leafiness/M -leafless -leaflet/SDMG -leafstalk/SM -leafy/PTR -leaguer/M -league/RSDMZG -Leah/M -leakage/SM -leaker/M -Leakey/M -leak/GSRDM -leakiness/MS -leaky/PRT -Lea/M -lea/MS -Leander/M -Leandra/M -leaner/M -leaning/M -Lean/M -Leanna/M -Leanne/M -leanness/MS -Leann/M -Leanora/M -Leanor/M -lean/YRDGTJSP -leaper/M -leapfrogged -leapfrogging -leapfrog/SM -leap/RDGZS -Lear/M -learnedly -learnedness/M -learned/UA -learner/M -learning/M -learns/UA -learn/SZGJRD -Leary/M -lease/ARSDG -leaseback/MS -leaseholder/M -leasehold/SRMZ -leaser/MA -lease's -leash's -leash/UGSD -leasing/M -leas/SRDGZ -least/S -leastwise -leatherette/S -leather/MDSG -leathern -leatherneck/SM -leathery -leaven/DMJGS -leavened/U -leavening/M -Leavenworth/M -leaver/M -leaves/M -leave/SRDJGZ -leaving/M -Lebanese -Lebanon/M -Lebbie/M -lebensraum -Lebesgue/M -Leblanc/M -lecher/DMGS -lecherousness/MS -lecherous/YP -lechery/MS -lecithin/SM -lectern/SM -lecturer/M -lecture/RSDZMG -lectureship/SM -led -Leda/M -Lederberg/M -ledger/DMG -ledge/SRMZ -LED/SM -Leeanne/M -Leeann/M -leech/MSDG -Leeds/M -leek/SM -Leelah/M -Leela/M -Leeland/M -Lee/M -lee/MZRS -Leena/M -leer/DG -leeriness/MS -leering/Y -leery/PTR -Leesa/M -Leese/M -Leeuwenhoek/M -Leeward/M -leeward/S -leeway/MS -leftism/SM -leftist/SM -leftmost -leftover/MS -Left/S -left/TRS -leftward/S -Lefty/M -lefty/SM -legacy/MS -legalese/MS -legalism/SM -legalistic -legality/MS -legalization/MS -legalize/DSG -legalized/U -legal/SY -legate/AXCNGSD -legatee/MS -legate's/C -legation/AMC -legato/SM -legendarily -legendary/S -Legendre/M -legend/SM -legerdemain/SM -Leger/SM -legged -legginess/MS -legging/MS -leggy/PRT -leghorn/SM -Leghorn/SM -legibility/MS -legible -legibly -legionary/S -legionnaire/SM -legion/SM -legislate/SDXVNG -legislation/M -legislative/SY -legislator/SM -legislature/MS -legitimacy/MS -legitimate/SDNGY -legitimation/M -legitimatize/SDG -legitimization/MS -legitimize/RSDG -legit/S -legless -legman/M -legmen -leg/MS -Lego/M -Legra/M -Legree/M -legroom/MS -legstraps -legume/SM -leguminous -legwork/SM -Lehigh/M -Lehman/M -Leia/M -Leibniz/M -Leicester/SM -Leiden/M -Leif/M -Leigha/M -Leigh/M -Leighton/M -Leilah/M -Leila/M -lei/MS -Leipzig/M -Leisha/M -leisureliness/MS -leisurely/P -leisure/SDYM -leisurewear -leitmotif/SM -leitmotiv/MS -Lek/M -Lelah/M -Lela/M -Leland/M -Lelia/M -Lemaitre/M -Lemar/M -Lemke/M -Lem/M -lemma/MS -lemme/GJ -Lemmie/M -lemming/M -Lemmy/M -lemonade/SM -lemon/GSDM -lemony -Lemuel/M -Lemuria/M -lemur/MS -Lena/M -Lenard/M -Lenci/M -lender/M -lend/SRGZ -Lenee/M -Lenette/M -lengthener/M -lengthen/GRD -lengthily -lengthiness/MS -length/MNYX -lengths -lengthwise -lengthy/TRP -lenience/S -leniency/MS -lenient/SY -Leningrad/M -Leninism/M -Leninist -Lenin/M -lenitive/S -Lenka/M -Len/M -Le/NM -Lenna/M -Lennard/M -Lennie/M -Lennon/M -Lenny/M -Lenoir/M -Leno/M -Lenora/M -Lenore/M -lens/SRDMJGZ -lent/A -lenticular -lentil/SM -lento/S -Lent/SMN -Leodora/M -Leoine/M -Leola/M -Leoline/M -Leo/MS -Leona/M -Leonanie/M -Leonard/M -Leonardo/M -Leoncavallo/M -Leonelle/M -Leonel/M -Leone/M -Leonerd/M -Leonhard/M -Leonidas/M -Leonid/M -Leonie/M -leonine -Leon/M -Leonora/M -Leonore/M -Leonor/M -Leontine/M -Leontyne/M -leopardess/SM -leopard/MS -leopardskin -Leopold/M -Leopoldo/M -Leopoldville/M -Leora/M -leotard/MS -leper/SM -Lepidus/M -Lepke/M -leprechaun/SM -leprosy/MS -leprous -lepta -lepton/SM -Lepus/M -Lerner/M -Leroi/M -Leroy/M -Lesa/M -lesbianism/MS -lesbian/MS -Leshia/M -lesion/DMSG -Lesley/M -Leslie/M -Lesli/M -Lesly/M -Lesotho/M -lessee/MS -lessen/GDS -Lesseps/M -lesser -lesses -Lessie/M -lessing -lesson/DMSG -lessor/MS -less/U -Lester/M -lest/R -Les/Y -Lesya/M -Leta/M -letdown/SM -lethality/M -lethal/YS -Letha/M -lethargic -lethargically -lethargy/MS -Lethe/M -Lethia/M -Leticia/M -Letisha/M -let/ISM -Letitia/M -Letizia/M -Letta/M -letterbox/S -lettered/U -letterer/M -letterhead/SM -lettering/M -letter/JSZGRDM -letterman/M -Letterman/M -lettermen -letterpress/MS -Lettie/M -Letti/M -letting/S -lettuce/SM -Letty/M -letup/MS -leukemia/SM -leukemic/S -leukocyte/MS -Leupold/M -Levant/M -leveeing -levee/SDM -leveled/U -leveler/M -levelheadedness/S -levelheaded/P -leveling/U -levelness/SM -level/STZGRDYP -leverage/MGDS -lever/SDMG -Levesque/M -Levey/M -Leviathan -leviathan/MS -levier/M -Levi/MS -Levine/M -Levin/M -levitate/XNGDS -levitation/M -Leviticus/M -Levitt/M -levity/MS -Lev/M -Levon/M -Levy/M -levy/SRDZG -lewdness/MS -lewd/PYRT -Lewellyn/M -Lewes -Lewie/M -Lewinsky/M -lewis/M -Lewis/M -Lewiss -Lew/M -lex -lexeme/MS -lexical/Y -lexicographer/MS -lexicographic -lexicographical/Y -lexicography/SM -lexicon/SM -Lexie/M -Lexi/MS -Lexine/M -Lexington/M -Lexus/M -Lexy/M -Leyden/M -Leyla/M -Lezley/M -Lezlie/M -lg -Lhasa/SM -Lhotse/M -liability/SAM -liable/AP -liaise/GSD -liaison/SM -Lia/M -Liam/M -Liana/M -Liane/M -Lian/M -Lianna/M -Lianne/M -liar/MS -libation/SM -libbed -Libbey/M -Libbie/M -Libbi/M -libbing -Libby/M -libeler/M -libel/GMRDSZ -libelous/Y -Liberace/M -liberalism/MS -liberality/MS -liberalization/SM -liberalized/U -liberalize/GZSRD -liberalizer/M -liberalness/MS -liberal/YSP -liberate/NGDSCX -liberationists -liberation/MC -liberator/SCM -Liberia/M -Liberian/S -libertarianism/M -libertarian/MS -libertine/MS -liberty/MS -libidinal -libidinousness/M -libidinous/PY -libido/MS -Lib/M -lib/MS -librarian/MS -library/MS -Libra/SM -libretoes -libretos -librettist/MS -libretto/MS -Libreville/M -Librium/M -Libya/M -Libyan/S -lice/M -licensed/AU -licensee/SM -license/MGBRSD -licenser/M -licenses/A -licensing/A -licensor/M -licentiate/MS -licentiousness/MS -licentious/PY -Licha/M -lichee's -lichen/DMGS -Lichtenstein/M -Lichter/M -licit/Y -licked/U -lickerish -licker/M -lick/GRDSJ -licking/M -licorice/SM -Lida/M -lidded -lidding -Lidia/M -lidless -lid/MS -lido/MS -Lieberman/M -Liebfraumilch/M -Liechtenstein/RMZ -lied/MR -lie/DRS -Lief/M -liefs/A -lief/TSR -Liege/M -liege/SR -Lie/M -lien/SM -lier/IMA -lies/A -Liesa/M -lieu/SM -lieut -lieutenancy/MS -lieutenant/SM -Lieut/M -lifeblood/SM -lifeboat/SM -lifebuoy/S -lifeforms -lifeguard/MDSG -lifelessness/SM -lifeless/PY -lifelikeness/M -lifelike/P -lifeline/SM -lifelong -life/MZR -lifer/M -lifesaver/SM -lifesaving/S -lifespan/S -lifestyle/S -lifetaking -lifetime/MS -lifework/MS -LIFO -lifter/M -lift/GZMRDS -liftoff/MS -ligament/MS -ligand/MS -ligate/XSDNG -ligation/M -ligature/DSGM -light/ADSCG -lighted/U -lightener/M -lightening/M -lighten/ZGDRS -lighter/CM -lightered -lightering -lighters -lightest -lightface/SDM -lightheaded -lightheartedness/MS -lighthearted/PY -lighthouse/MS -lighting/MS -lightly -lightness/MS -lightning/SMD -lightproof -light's -lightship/SM -lightweight/S -ligneous -lignite/MS -lignum -likability/MS -likableness/MS -likable/P -likeability's -liked/E -likelihood/MSU -likely/UPRT -likeness/MSU -liken/GSD -liker/E -liker's -likes/E -likest -like/USPBY -likewise -liking/SM -lilac/MS -Lilah/M -Lila/SM -Lilia/MS -Liliana/M -Liliane/M -Lilian/M -Lilith/M -Liliuokalani/M -Lilla/M -Lille/M -Lillian/M -Lillie/M -Lilli/MS -lilliputian/S -Lilliputian/SM -Lilliput/M -Lilllie/M -Lilly/M -Lil/MY -Lilongwe/M -lilting/YP -lilt/MDSG -Lilyan/M -Lily/M -lily/MSD -Lima/M -Limbaugh/M -limbered/U -limberness/SM -limber/RDYTGP -limbers/U -limbic -limbless -Limbo -limbo/GDMS -limb/SGZRDM -Limburger/SM -limeade/SM -lime/DSMG -limekiln/M -limelight/DMGS -limerick/SM -limestone/SM -limitability -limitably -limitation/MCS -limit/CSZGRD -limitedly/U -limitedness/M -limited/PSY -limiter/M -limiting/S -limitlessness/SM -limitless/PY -limit's -limn/GSD -Limoges/M -limo/S -limousine/SM -limper/M -limpet/SM -limpidity/MS -limpidness/SM -limpid/YP -limpness/MS -Limpopo/M -limp/SGTPYRD -Li/MY -limy/TR -linage/MS -Lina/M -linchpin/MS -Linc/M -Lincoln/SM -Linda/M -Lindbergh/M -Lindberg/M -linden/MS -Lindholm/M -Lindie/M -Lindi/M -Lind/M -Lindon/M -Lindquist/M -Lindsay/M -Lindsey/M -Lindstrom/M -Lindsy/M -Lindy/M -line/AGDS -lineage/SM -lineal/Y -Linea/M -lineament/MS -linearity/MS -linearize/SDGNB -linear/Y -linebacker/SM -lined/U -linefeed -Linell/M -lineman/M -linemen -linen/SM -liner/SM -line's -linesman/M -linesmen -Linet/M -Linette/M -lineup/S -lingerer/M -lingerie/SM -lingering/Y -linger/ZGJRD -lingoes -lingo/M -lingual/SY -lingua/M -linguine -linguini's -linguistically -linguistic/S -linguistics/M -linguist/SM -ling/ZR -liniment/MS -lining/SM -linkable -linkage/SM -linked/A -linker/S -linking/S -Link/M -link's -linkup/S -link/USGD -Lin/M -Linnaeus/M -Linnea/M -Linnell/M -Linnet/M -linnet/SM -Linnie/M -Linn/M -Linoel/M -linoleum/SM -lino/M -Linotype/M -linseed/SM -lintel/SM -linter/M -Linton/M -lint/SMR -linty/RST -Linus/M -Linux/M -Linwood/M -Linzy/M -Lionello/M -Lionel/M -lioness/SM -lionhearted -lionization/SM -lionizer/M -lionize/ZRSDG -Lion/M -lion/MS -lipase/M -lipid/MS -lip/MS -liposuction/S -lipped -lipper -Lippi/M -lipping -Lippmann/M -lippy/TR -lipread/GSRJ -Lipschitz/M -Lipscomb/M -lipstick/MDSG -Lipton/M -liq -liquefaction/SM -liquefier/M -liquefy/DRSGZ -liqueur/DMSG -liquidate/GNXSD -liquidation/M -liquidator/SM -liquidity/SM -liquidizer/M -liquidize/ZGSRD -liquidness/M -liquid/SPMY -liquorice/SM -liquorish -liquor/SDMG -lira/M -Lira/M -lire -Lisabeth/M -Lisa/M -Lisbeth/M -Lisbon/M -Lise/M -Lisetta/M -Lisette/M -Lisha/M -Lishe/M -Lisle/M -lisle/SM -lisper/M -lisp/MRDGZS -Lissajous/M -Lissa/M -Lissie/M -Lissi/M -Liss/M -lissomeness/M -lissome/P -lissomness/M -Lissy/M -listed/U -listener/M -listen/ZGRD -Listerine/M -lister/M -Lister/M -listing/M -list/JMRDNGZXS -listlessness/SM -listless/PY -Liston/M -Liszt/M -Lita/M -litany/MS -litchi/SM -literacy/MS -literalism/M -literalistic -literalness/MS -literal/PYS -literariness/SM -literary/P -literate/YNSP -literati -literation/M -literature/SM -liter/M -lite/S -litheness/SM -lithe/PRTY -lithesome -lithium/SM -lithograph/DRMGZ -lithographer/M -lithographic -lithographically -lithographs -lithography/MS -lithology/M -lithosphere/MS -lithospheric -Lithuania/M -Lithuanian/S -litigant/MS -litigate/NGXDS -litigation/M -litigator/SM -litigiousness/MS -litigious/PY -litmus/SM -litotes/M -lit/RZS -litt�rateur/S -litterbug/SM -litter/SZGRDM -Little/M -littleneck/M -littleness/SM -little/RSPT -Littleton/M -Litton/M -littoral/S -liturgical/Y -liturgic/S -liturgics/M -liturgist/MS -liturgy/SM -Liuka/M -livability/MS -livableness/M -livable/U -livably -Liva/M -lived/A -livelihood/SM -liveliness/SM -livelong/S -lively/RTP -liveness/M -liven/SDG -liver/CSGD -liveried -liverish -Livermore/M -Liverpool/M -Liverpudlian/MS -liver's -liverwort/SM -liverwurst/SM -livery/CMS -liveryman/MC -liverymen/C -lives/A -lives's -livestock/SM -live/YHZTGJDSRPB -Livia/M -lividness/M -livid/YP -livingness/M -Livingstone/M -Livingston/M -living/YP -Liv/M -Livonia/M -Livvie/M -Livvy/M -Livvyy/M -Livy/M -Lizabeth/M -Liza/M -lizard/MS -Lizbeth/M -Lizette/M -Liz/M -Lizzie/M -Lizzy/M -l/JGVXT -Ljubljana/M -LL -llama/SM -llano/SM -LLB -ll/C -LLD -Llewellyn/M -Lloyd/M -Llywellyn/M -LNG -lo -loadable -loaded/A -loader/MU -loading/MS -load's/A -loads/A -loadstar's -loadstone's -load/SURDZG -loafer/M -Loafer/S -loaf/SRDMGZ -loam/SMDG -loamy/RT -loaner/M -loaning/M -loan/SGZRDMB -loansharking/S -loanword/S -loathe -loather/M -loathing/M -loath/JPSRDYZG -loathness/M -loathsomeness/MS -loathsome/PY -loaves/M -Lobachevsky/M -lobar -lobbed -lobber/MS -lobbing -lobby/GSDM -lobbyist/MS -lobe/SM -lob/MDSG -lobotomist -lobotomize/GDS -lobotomy/MS -lobster/MDGS -lobularity -lobular/Y -lobule/SM -locale/MS -localisms -locality/MS -localization/MS -localized/U -localizer/M -localizes/U -localize/ZGDRS -local/SGDY -locatable -locate/AXESDGN -locater/M -locational/Y -location/EMA -locative/S -locator's -Lochinvar/M -loch/M -lochs -loci/M -lockable -Lockean/M -locked/A -Locke/M -locker/SM -locket/SM -Lockhart/M -Lockheed/M -Lockian/M -locking/S -lockjaw/SM -Lock/M -locknut/M -lockout/MS -lock's -locksmithing/M -locksmith/MG -locksmiths -lockstep/S -lock/UGSD -lockup/MS -Lockwood/M -locomotion/SM -locomotive/YMS -locomotor -locomotory -loco/SDMG -locoweed/MS -locus/M -locust/SM -locution/MS -lode/SM -lodestar/MS -lodestone/MS -lodged/E -lodge/GMZSRDJ -Lodge/M -lodgepole -lodger/M -lodges/E -lodging/M -lodgment/M -Lodovico/M -Lodowick/M -Lodz -Loeb/M -Loella/M -Loewe/M -Loewi/M -lofter/M -loftily -loftiness/SM -loft/SGMRD -lofty/PTR -loganberry/SM -Logan/M -logarithmic -logarithmically -logarithm/MS -logbook/MS -loge/SMNX -logged/U -loggerhead/SM -logger/SM -loggia/SM -logging/MS -logicality/MS -logicalness/M -logical/SPY -logician/SM -logic/SM -login/S -logion/M -logistical/Y -logistic/MS -logjam/SM -LOGO -logo/SM -logotype/MS -logout -logrolling/SM -log's/K -log/SM -logy/RT -Lohengrin/M -loincloth/M -loincloths -loin/SM -Loire/M -Loise/M -Lois/M -loiterer/M -loiter/RDJSZG -Loki/M -Lola/M -Loleta/M -Lolita/M -loller/M -lollipop/MS -loll/RDGS -Lolly/M -lolly/SM -Lombardi/M -Lombard/M -Lombardy/M -Lomb/M -Lome -Lona/M -Londonderry/M -Londoner/M -London/RMZ -Lonee/M -loneliness/SM -lonely/TRP -loneness/M -lone/PYZR -loner/M -lonesomeness/MS -lonesome/PSY -longboat/MS -longbow/SM -longed/K -longeing -longer/K -longevity/MS -Longfellow/M -longhair/SM -longhand/SM -longhorn/SM -longing/MY -longish -longitude/MS -longitudinal/Y -long/JGTYRDPS -Long/M -longness/M -longshoreman/M -longshoremen -longsighted -longs/K -longstanding -Longstreet/M -longsword -longterm -longtime -Longueuil/M -longueur/SM -longways -longword/SM -Loni/M -Lon/M -Lonna/M -Lonnard/M -Lonnie/M -Lonni/M -Lonny/M -loofah/M -loofahs -lookahead -lookalike/S -looker/M -look/GZRDS -lookout/MS -lookup/SM -looming/M -Loomis/M -loom/MDGS -loon/MS -loony/SRT -looper/M -loophole/MGSD -loop/MRDGS -loopy/TR -loosed/U -looseleaf -loosener/M -looseness/MS -loosen/UDGS -loose/SRDPGTY -looses/U -loosing/M -looter/M -loot/MRDGZS -loper/M -lope/S -Lopez/M -lopped -lopper/MS -lopping -lop/SDRG -lopsidedness/SM -lopsided/YP -loquaciousness/MS -loquacious/YP -loquacity/SM -Loraine/M -Lorain/M -Loralee/M -Loralie/M -Loralyn/M -Lora/M -Lorant/M -lording/M -lordliness/SM -lordly/PTR -Lord/MS -lord/MYDGS -lordship/SM -Lordship/SM -Loree/M -Loreen/M -Lorelei/M -Lorelle/M -lore/MS -Lorena/M -Lorene/M -Loren/SM -Lorentzian/M -Lorentz/M -Lorenza/M -Lorenz/M -Lorenzo/M -Loretta/M -Lorette/M -lorgnette/SM -Loria/M -Lorianna/M -Lorianne/M -Lorie/M -Lorilee/M -Lorilyn/M -Lori/M -Lorinda/M -Lorine/M -Lorin/M -loris/SM -Lorita/M -lorn -Lorna/M -Lorne/M -Lorraine/M -Lorrayne/M -Lorre/M -Lorrie/M -Lorri/M -Lorrin/M -lorryload/S -Lorry/M -lorry/SM -Lory/M -Los -loser/M -lose/ZGJBSR -lossage -lossless -loss/SM -lossy/RT -lost/P -Lothaire/M -Lothario/MS -lotion/MS -Lot/M -lot/MS -Lotta/M -lotted -Lotte/M -lotter -lottery/MS -Lottie/M -Lotti/M -lotting -Lott/M -lotto/MS -Lotty/M -lotus/SM -louden/DG -loudhailer/S -loudly/RT -loudmouth/DM -loudmouths -loudness/MS -loudspeaker/SM -loudspeaking -loud/YRNPT -Louella/M -Louie/M -Louisa/M -Louise/M -Louisette/M -Louisiana/M -Louisianan/S -Louisianian/S -Louis/M -Louisville/M -Lou/M -lounger/M -lounge/SRDZG -Lourdes/M -lour/GSD -louse/CSDG -louse's -lousewort/M -lousily -lousiness/MS -lousy/PRT -loutishness/M -loutish/YP -Loutitia/M -lout/SGMD -louver/DMS -L'Ouverture -Louvre/M -lovableness/MS -lovable/U -lovably -lovebird/SM -lovechild -Lovecraft/M -love/DSRMYZGJB -loved/U -Lovejoy/M -Lovelace/M -Loveland/M -lovelessness/M -loveless/YP -lovelies -lovelinesses -loveliness/UM -Lovell/M -lovelornness/M -lovelorn/P -lovely/URPT -Love/M -lovemaking/SM -lover/YMG -lovesick -lovestruck -lovingly -lovingness/M -loving/U -lowborn -lowboy/SM -lowbrow/MS -lowdown/S -Lowell/M -Lowe/M -lowercase/GSD -lower/DG -lowermost -Lowery/M -lowish -lowland/RMZS -Lowlands/M -lowlife/SM -lowlight/MS -lowliness/MS -lowly/PTR -lowness/MS -low/PDRYSZTG -Lowrance/M -lox/MDSG -loyaler -loyalest -loyal/EY -loyalism/SM -loyalist/SM -loyalty/EMS -Loyang/M -Loydie/M -Loyd/M -Loy/M -Loyola/M -lozenge/SDM -LP -LPG -LPN/S -Lr -ls -l's -L's -LSD -ltd -Ltd/M -Lt/M -Luanda/M -Luann/M -luau/MS -lubber/YMS -Lubbock/M -lube/DSMG -lubricant/SM -lubricate/VNGSDX -lubrication/M -lubricator/MS -lubricious/Y -lubricity/SM -Lubumbashi/M -Lucais/M -Luca/MS -Luce/M -lucent/Y -Lucerne/M -Lucho/M -Lucia/MS -Luciana/M -Lucian/M -Luciano/M -lucidity/MS -lucidness/MS -lucid/YP -Lucie/M -Lucien/M -Lucienne/M -Lucifer/M -Lucila/M -Lucile/M -Lucilia/M -Lucille/M -Luci/MN -Lucina/M -Lucinda/M -Lucine/M -Lucio/M -Lucita/M -Lucite/MS -Lucius/M -luck/GSDM -luckier/U -luckily/U -luckiness/UMS -luckless -Lucknow/M -Lucky/M -lucky/RSPT -lucrativeness/SM -lucrative/YP -lucre/MS -Lucretia/M -Lucretius/M -lucubrate/GNSDX -lucubration/M -Lucy/M -Luddite/SM -Ludhiana/M -ludicrousness/SM -ludicrous/PY -Ludlow/M -Ludmilla/M -ludo/M -Ludovico/M -Ludovika/M -Ludvig/M -Ludwig/M -Luella/M -Luelle/M -luff/GSDM -Lufthansa/M -Luftwaffe/M -luge/MC -Luger/M -luggage/SM -lugged -lugger/SM -lugging -Lugosi/M -lug/RS -lugsail/SM -lugubriousness/MS -lugubrious/YP -Luigi/M -Luisa/M -Luise/M -Luis/M -Lukas/M -Luke/M -lukewarmness/SM -lukewarm/PY -Lula/M -Lulita/M -lullaby/GMSD -lull/SDG -lulu/M -Lulu/M -Lu/M -lumbago/SM -lumbar/S -lumberer/M -lumbering/M -lumberjack/MS -lumberman/M -lumbermen -lumber/RDMGZSJ -lumberyard/MS -lumen/M -Lumi�re/M -luminance/M -luminary/MS -luminescence/SM -luminescent -luminosity/MS -luminousness/M -luminous/YP -lummox/MS -lumper/M -lumpiness/MS -lumpishness/M -lumpish/YP -lump/SGMRDN -lumpy/TPR -lunacy/MS -Luna/M -lunar/S -lunary -lunate/YND -lunatic/S -lunation/M -luncheonette/SM -luncheon/SMDG -luncher/M -lunch/GMRSD -lunchpack -lunchroom/MS -lunchtime/MS -Lundberg/M -Lund/M -Lundquist/M -lune/M -lunge/MS -lunger/M -lungfish/SM -lungful -lung/SGRDM -lunkhead/SM -Lupe/M -lupine/SM -Lupus/M -lupus/SM -Lura/M -lurcher/M -lurch/RSDG -lure/DSRG -lurer/M -Lurette/M -lurex -Luria/M -luridness/SM -lurid/YP -lurker/M -lurk/GZSRD -Lurleen/M -Lurlene/M -Lurline/M -Lusaka/M -Lusa/M -lusciousness/MS -luscious/PY -lushness/MS -lush/YSRDGTP -Lusitania/M -luster/GDM -lustering/M -lusterless -lustfulness/M -lustful/PY -lustily -lustiness/MS -lust/MRDGZS -lustrousness/M -lustrous/PY -lusty/PRT -lutanist/MS -lute/DSMG -lutenist/MS -Lutero/M -lutetium/MS -Lutheranism/MS -Lutheran/SM -Luther/M -luting/M -Lutz -Luxembourgian -Luxembourg/RMZ -Luxemburg's -luxe/MS -luxuriance/MS -luxuriant/Y -luxuriate/GNSDX -luxuriation/M -luxuriousness/SM -luxurious/PY -luxury/MS -Luz/M -Luzon/M -L'vov -Lyallpur/M -lyceum/MS -lychee's -lycopodium/M -Lycra/S -Lycurgus/M -Lyda/M -Lydia/M -Lydian/S -Lydie/M -Lydon/M -lye/JSMG -Lyell/M -lying/Y -Lyle/M -Lyly/M -Lyman/M -Lyme/M -lymphatic/S -lymph/M -lymphocyte/SM -lymphoid -lymphoma/MS -lymphs -Ly/MY -Lynchburg/M -lyncher/M -lynching/M -Lynch/M -lynch/ZGRSDJ -Lynda/M -Lyndell/M -Lyndel/M -Lynde/M -Lyndon/M -Lyndsay/M -Lyndsey/M -Lyndsie/M -Lyndy/M -Lynea/M -Lynelle/M -Lynette/M -Lynett/M -Lyn/M -Lynna/M -Lynnea/M -Lynnelle/M -Lynnell/M -Lynne/M -Lynnet/M -Lynnette/M -Lynnett/M -Lynn/M -Lynsey/M -lynx/MS -Lyon/SM -Lyra/M -lyrebird/MS -lyre/SM -lyricalness/M -lyrical/YP -lyricism/SM -lyricist/SM -lyric/S -Lysenko/M -lysine/M -Lysistrata/M -Lysol/M -Lyssa/M -LyX/M -MA -Maalox/M -ma'am -Mabelle/M -Mabel/M -Mable/M -Mab/M -macabre/Y -macadamize/SDG -macadam/SM -Macao/M -macaque/SM -macaroni/SM -macaroon/MS -Macarthur/M -MacArthur/M -Macaulay/M -macaw/SM -Macbeth/M -Maccabees/M -Maccabeus/M -Macdonald/M -MacDonald/M -MacDraw/M -Macedonia/M -Macedonian/S -Macedon/M -mace/MS -Mace/MS -macerate/DSXNG -maceration/M -macer/M -Macgregor/M -MacGregor/M -machete/SM -Machiavellian/S -Machiavelli/M -machinate/SDXNG -machination/M -machinelike -machine/MGSDB -machinery/SM -machinist/MS -machismo/SM -Mach/M -macho/S -Machs -Macias/M -Macintosh/M -MacIntosh/M -macintosh's -Mackenzie/M -MacKenzie/M -mackerel/SM -Mackinac/M -Mackinaw -mackinaw/SM -mackintosh/SM -mack/M -Mack/M -MacLeish/M -Macmillan/M -MacMillan/M -Macon/SM -MacPaint/M -macram�/S -macrobiotic/S -macrobiotics/M -macrocosm/MS -macrodynamic -macroeconomic/S -macroeconomics/M -macromolecular -macromolecule/SM -macron/MS -macrophage/SM -macroscopic -macroscopically -macrosimulation -macro/SM -macrosocioeconomic -Mac/SGMD -mac/SGMDR -Macy/M -Madagascan/SM -Madagascar/M -Madalena/M -Madalyn/M -Mada/M -madame/M -Madame/MS -madam/SM -madcap/S -Maddalena/M -madded -madden/GSD -maddening/Y -Madden/M -madder/MS -maddest -Maddie/M -Maddi/M -madding -Maddox/M -Maddy/M -made/AU -Madeira/SM -Madelaine/M -Madeleine/M -Madelena/M -Madelene/M -Madelina/M -Madeline/M -Madelin/M -Madella/M -Madelle/M -Madel/M -Madelon/M -Madelyn/M -mademoiselle/MS -Madge/M -madhouse/SM -Madhya/M -Madison/M -Madlen/M -Madlin/M -madman/M -madmen -madness/SM -Madonna/MS -mad/PSY -Madras -madras/SM -Madrid/M -madrigal/MSG -Madsen/M -Madurai/M -madwoman/M -madwomen -Mady/M -Maegan/M -Maelstrom/M -maelstrom/SM -Mae/M -maestro/MS -Maeterlinck/M -Mafia/MS -mafia/S -mafiosi -mafioso/M -Mafioso/S -MAG -magazine/DSMG -Magdaia/M -Magdalena/M -Magdalene/M -Magdalen/M -Magda/M -Magellanic -Magellan/M -magenta/MS -magged -Maggee/M -Maggie/M -Maggi/M -magging -maggot/MS -maggoty/RT -Maggy/M -magi -magical/Y -magician/MS -magicked -magicking -magic/SM -Magill/M -Magi/M -Maginot/M -magisterial/Y -magistracy/MS -magistrate/MS -Mag/M -magma/SM -magnanimity/SM -magnanimosity -magnanimous/PY -magnate/SM -magnesia/MS -magnesite/M -magnesium/SM -magnetically -magnetic/S -magnetics/M -magnetism/SM -magnetite/SM -magnetizable -magnetization/ASCM -magnetize/CGDS -magnetized/U -magnetodynamics -magnetohydrodynamical -magnetohydrodynamics/M -magnetometer/MS -magneto/MS -magnetosphere/M -magnetron/M -magnet/SM -magnification/M -magnificence/SM -magnificent/Y -magnified/U -magnify/DRSGNXZ -magniloquence/MS -magniloquent -Magnitogorsk/M -magnitude/SM -magnolia/SM -Magnum -magnum/SM -Magnuson/M -Magog/M -Magoo/M -magpie/SM -Magritte/M -Magruder/M -mag/S -Magsaysay/M -Maguire/SM -Magus/M -Magyar/MS -Mahabharata -Mahala/M -Mahalia/M -maharajah/M -maharajahs -maharanee's -maharani/MS -Maharashtra/M -maharishi/SM -mahatma/SM -Mahavira/M -Mahayana/M -Mahayanist -Mahdi/M -Mahfouz/M -Mahican/SM -mahjong's -Mahler/M -Mahmoud/M -Mahmud/M -mahogany/MS -Mahomet's -mahout/SM -Maia/M -Maible/M -maidenhair/MS -maidenhead/SM -maidenhood/SM -maidenly/P -maiden/YM -maidservant/MS -maid/SMNX -maier -Maier/M -Maiga/M -Maighdiln/M -Maigret/M -mailbag/MS -mailbox/MS -mail/BSJGZMRD -mailer/M -Mailer/M -Maillol/M -maillot/SM -mailman/M -mailmen -Maiman/M -maimedness/M -maimed/P -maimer/M -Maimonides/M -Mai/MR -maim/SGZRD -mainbrace/M -Maine/MZR -Mainer/M -mainframe/MS -mainlander/M -mainland/SRMZ -mainliner/M -mainline/RSDZG -mainly -mainmast/SM -main/SA -profileail/SM -profile/M -profilepring/SM -profiletay/MS -profiletream/DRMSG -maintainability -maintainable/U -maintain/BRDZGS -maintained/U -maintainer/M -maintenance/SM -maintop/SM -maiolica's -Maire/M -Mair/M -Maisey/M -Maisie/M -maisonette/MS -Maison/M -Maitilde/M -maize/MS -Maj -Maje/M -majestic -majestically -majesty/MS -Majesty/MS -majolica/SM -Majorca/M -major/DMGS -majordomo/S -majorette/SM -majority/SM -Major/M -Majuro/M -makable -Makarios/M -makefile/S -makeover/S -Maker/M -maker/SM -makeshift/S -make/UGSA -makeup/MS -making/SM -Malabar/M -Malabo/M -Malacca/M -Malachi/M -malachite/SM -maladapt/DV -maladjust/DLV -maladjustment/MS -maladministration -maladroitness/MS -maladroit/YP -malady/MS -Malagasy/M -malaise/SM -Mala/M -Malamud/M -malamute/SM -Malanie/M -malaprop -malapropism/SM -Malaprop/M -malarial -malaria/MS -malarious -malarkey/SM -malathion/S -Malawian/S -Malawi/M -Malayalam/M -Malaya/M -Malayan/MS -Malaysia/M -Malaysian/S -Malay/SM -Malchy/M -Malcolm/M -malcontentedness/M -malcontented/PY -malcontent/SMD -Maldive/SM -Maldivian/S -Maldonado/M -maledict -malediction/MS -malefaction/MS -malefactor/MS -malefic -maleficence/MS -maleficent -Male/M -Malena/M -maleness/MS -male/PSM -malevolence/S -malevolencies -malevolent/Y -malfeasance/SM -malfeasant -malformation/MS -malformed -malfunction/SDG -Malia/M -Malian/S -Malibu/M -malice/MGSD -maliciousness/MS -malicious/YU -malignancy/SM -malignant/YS -malign/GSRDYZ -malignity/MS -Mali/M -Malina/M -Malinda/M -Malinde/M -malingerer/M -malinger/GZRDS -Malinowski/M -Malissa/M -Malissia/M -mallard/SM -Mallarm�/M -malleability/SM -malleableness/M -malleable/P -mallet/MS -Mallissa/M -Mallorie/M -Mallory/M -mallow/MS -mall/SGMD -Mal/M -malnourished -malnutrition/SM -malocclusion/MS -malodorous -Malone/M -Malorie/M -Malory/M -malposed -malpractice/SM -Malraux/M -Malta/M -malted/S -Maltese -Malthusian/S -Malthus/M -malting/M -maltose/SM -maltreat/GDSL -maltreatment/S -malt/SGMD -malty/RT -Malva/M -Malvina/M -Malvin/M -Malynda/M -mama/SM -mamba/SM -mambo/GSDM -Mame/M -Mamet/M -ma/MH -Mamie/M -mammalian/SM -mammal/SM -mammary -mamma's -mammogram/S -mammography/S -Mammon's -mammon/SM -mammoth/M -mammoths -mammy/SM -Mamore/M -manacle/SDMG -manageability/S -manageableness -manageable/U -managed/U -management/SM -manageress/M -managerial/Y -manager/M -managership/M -manage/ZLGRSD -Managua/M -Manama/M -ma�ana/M -mananas -Manasseh/M -manatee/SM -Manaus's -Manchester/M -Manchu/MS -Manchuria/M -Manchurian/S -Mancini/M -manciple/M -Mancunian/MS -mandala/SM -Mandalay/M -Manda/M -mandamus/GMSD -Mandarin -mandarin/MS -mandate/SDMG -mandatory/S -Mandela -Mandelbrot/M -Mandel/M -mandible/MS -mandibular -Mandie/M -Mandi/M -Mandingo/M -mandolin/MS -mandrake/MS -mandrel/SM -mandrill/SM -Mandy/M -man�ge/GSD -mane/MDS -Manet/M -maneuverability/MS -maneuverer/M -maneuver/MRDSGB -Manfred/M -manful/Y -manganese/MS -mange/GMSRDZ -manger/M -manginess/S -mangler/M -mangle/RSDG -mangoes -mango/M -mangrove/MS -mangy/PRT -manhandle/GSD -Manhattan/SM -manhole/MS -manhood/MS -manhunt/SM -maniacal/Y -maniac/SM -mania/SM -manically -Manichean/M -manic/S -manicure/MGSD -manicurist/SM -manifestation/SM -manifesto/GSDM -manifest/YDPGS -manifolder/M -manifold/GPYRDMS -manifoldness/M -manikin/MS -Manila/MS -manila/S -manilla's -Mani/M -manioc/SM -manipulability -manipulable -manipulate/SDXBVGN -manipulative/PM -manipulator/MS -manipulatory -Manitoba/M -Manitoulin/M -Manitowoc/M -mankind/M -Mankowski/M -Manley/M -manlike -manliness/SM -manliness's/U -manly/URPT -manna/MS -manned/U -mannequin/MS -mannered/U -mannerism/SM -mannerist/M -mannerliness/MU -mannerly/UP -manner/SDYM -Mann/GM -Mannheim/M -Mannie/M -mannikin's -Manning/M -manning/U -mannishness/SM -mannish/YP -Manny/M -Manolo/M -Mano/M -manometer/SM -Manon/M -manorial -manor/MS -manpower/SM -manqu�/M -man's -mansard/SM -manservant/M -manse/XNM -Mansfield/M -mansion/M -manslaughter/SM -Man/SM -Manson/M -mans/S -manta/MS -Mantegna/M -mantelpiece/MS -mantel/SM -mantes -mantilla/MS -mantissa/SM -mantis/SM -mantle/ESDG -Mantle/M -mantle's -mantling/M -mantra/MS -mantrap/SM -manual/SMY -Manuela/M -Manuel/M -manufacture/JZGDSR -manufacturer/M -manumission/MS -manumit/S -manumitted -manumitting -manure/RSDMZG -manuscript/MS -man/USY -Manville/M -Manx -many -Manya/M -Maoism/MS -Maoist/S -Mao/M -Maori/SM -Maplecrest/M -maple/MS -mapmaker/S -mappable -mapped/UA -mapper/S -mapping/MS -Mapplethorpe/M -maps/AU -map/SM -Maputo/M -Marabel/M -marabou/MS -marabout's -Maracaibo/M -maraca/MS -Mara/M -maraschino/SM -Marathi -marathoner/M -Marathon/M -marathon/MRSZ -Marat/M -marauder/M -maraud/ZGRDS -marbleize/GSD -marble/JRSDMG -marbler/M -marbling/M -Marceau/M -Marcela/M -Marcelia/M -Marcelino/M -Marcella/M -Marcelle/M -Marcellina/M -Marcelline/M -Marcello/M -Marcellus/M -Marcel/M -Marcelo/M -Marchall/M -Marchelle/M -marcher/M -marchioness/SM -March/MS -march/RSDZG -Marcia/M -Marciano/M -Marcie/M -Marcile/M -Marcille/M -Marci/M -Marc/M -Marconi/M -Marco/SM -Marcotte/M -Marcus/M -Marcy/M -Mardi/SM -Marduk/M -Mareah/M -mare/MS -Marena/M -Maren/M -Maressa/M -Margalit/M -Margalo/M -Marga/M -Margareta/M -Margarete/M -Margaretha/M -Margarethe/M -Margaret/M -Margaretta/M -Margarette/M -margarine/MS -Margarita/M -margarita/SM -Margarito/M -Margaux/M -Margeaux/M -Marge/M -Margery/M -Marget/M -Margette/M -Margie/M -Margi/M -marginalia -marginality -marginalization -marginalize/SDG -marginal/YS -margin/GSDM -Margit/M -Margo/M -Margot/M -Margrethe/M -Margret/M -Marguerite/M -Margy/M -mariachi/SM -maria/M -Maria/M -Mariam/M -Mariana/SM -Marian/MS -Marianna/M -Marianne/M -Mariann/M -Mariano/M -Maribelle/M -Maribel/M -Maribeth/M -Maricela/M -Marice/M -Maridel/M -Marieann/M -Mariejeanne/M -Mariele/M -Marielle/M -Mariellen/M -Mariel/M -Marie/M -Marietta/M -Mariette/M -Marigold/M -marigold/MS -Marijn/M -Marijo/M -marijuana/SM -Marika/M -Marilee/M -Marilin/M -Marillin/M -Marilyn/M -marimba/SM -Mari/MS -marinade/MGDS -Marina/M -marina/MS -marinara/SM -marinate/NGXDS -marination/M -mariner/M -Marine/S -marine/ZRS -Marin/M -Marinna/M -Marino/M -Mario/M -marionette/MS -Marion/M -Mariquilla/M -Marisa/M -Mariska/M -Marisol/M -Marissa/M -Maritain/M -marital/Y -Marita/M -maritime/R -Maritsa/M -Maritza/M -Mariupol/M -Marius/M -Mariya/M -Marja/M -Marje/M -Marjie/M -Marji/M -Marj/M -marjoram/SM -Marjorie/M -Marjory/M -Marjy/M -Markab/M -markdown/SM -marked/AU -markedly -marker/M -marketability/SM -marketable/U -Marketa/M -marketeer/S -marketer/M -market/GSMRDJBZ -marketing/M -marketplace/MS -mark/GZRDMBSJ -Markham/M -marking/M -Markism/M -markkaa -markka/M -Mark/MS -Markos -Markov -Markovian -Markovitz/M -marks/A -marksman/M -marksmanship/S -marksmen -markup/SM -Markus/M -Marla/M -Marlane/M -Marlboro/M -Marlborough/M -Marleah/M -Marlee/M -Marleen/M -Marlena/M -Marlene/M -Marley/M -Marlie/M -Marline/M -marlinespike/SM -Marlin/M -marlin/SM -marl/MDSG -Marlo/M -Marlon/M -Marlowe/M -Marlow/M -Marlyn/M -Marmaduke/M -marmalade/MS -Marmara/M -marmoreal -marmoset/MS -marmot/SM -Marna/M -Marne/M -Marney/M -Marnia/M -Marnie/M -Marni/M -maroon/GRDS -marquee/MS -Marquesas/M -marque/SM -marquess/MS -marquetry/SM -Marquette/M -Marquez/M -marquise/M -marquisette/MS -Marquis/M -marquis/SM -Marquita/M -Marrakesh/M -marred/U -marriageability/SM -marriageable -marriage/ASM -married/US -Marrilee/M -marring -Marriott/M -Marris/M -Marrissa/M -marrowbone/MS -marrow/GDMS -marry/SDGA -mar/S -Marseillaise/SM -Marseilles -Marseille's -marshal/GMDRSZ -Marshalled/M -marshaller -Marshall/GDM -Marshalling/M -marshallings -Marshal/M -Marsha/M -marshiness/M -marshland/MS -Marsh/M -marshmallow/SM -marsh/MS -marshy/PRT -Marsiella/M -Mar/SMN -marsupial/MS -Martainn/M -Marta/M -Martelle/M -Martel/M -marten/M -Marten/M -Martguerita/M -Martha/M -Marthe/M -Marthena/M -Martial -martial/Y -Martian/S -Martica/M -Martie/M -Marti/M -Martina/M -martinet/SM -Martinez/M -martingale/MS -martini/MS -Martinique/M -Martin/M -Martino/M -martin/SM -Martinson/M -Martita/M -mart/MDNGXS -Mart/MN -Marty/M -Martyn/M -Martynne/M -martyrdom/SM -martyr/GDMS -Marva/M -marvel/DGS -Marvell/M -marvelous/PY -Marve/M -Marven/M -Marvin/M -Marv/NM -Marwin/M -Marxian/S -Marxism/SM -Marxist/SM -Marx/M -Marya/M -Maryanna/M -Maryanne/M -Maryann/M -Marybelle/M -Marybeth/M -Maryellen/M -Maryjane/M -Maryjo/M -Maryland/MZR -Marylee/M -Marylinda/M -Marylin/M -Maryl/M -Marylou/M -Marylynne/M -Mary/M -Maryrose/M -Marys -Marysa/M -marzipan/SM -Masada/M -Masai/M -Masaryk/M -masc -Mascagni/M -mascara/SGMD -mascot/SM -masculineness/M -masculine/PYS -masculinity/SM -Masefield/M -maser/M -Maseru/M -MASH -Masha/M -Mashhad/M -mash/JGZMSRD -m/ASK -masked/U -masker/M -mask/GZSRDMJ -masks/U -masochism/MS -masochistic -masochistically -masochist/MS -masonic -Masonic -Masonite/M -masonry/MS -mason/SDMG -Mason/SM -masquerader/M -masquerade/RSDGMZ -masquer/M -masque/RSMZ -Massachusetts/M -massacre/DRSMG -massager/M -massage/SRDMG -Massasoit/M -Massenet/M -masseur/MS -masseuse/SM -Massey/M -massif/SM -Massimiliano/M -Massimo/M -massing/R -massiveness/SM -massive/YP -massless -mas/SRZ -Mass/S -mass/VGSD -mastectomy/MS -masterclass -mastered/A -masterfulness/M -masterful/YP -master/JGDYM -masterliness/M -masterly/P -mastermind/GDS -masterpiece/MS -mastership/M -Master/SM -masterstroke/MS -masterwork/S -mastery/MS -mast/GZSMRD -masthead/SDMG -masticate/SDXGN -mastication/M -mastic/SM -mastiff/MS -mastodon/MS -mastoid/S -masturbate/SDNGX -masturbation/M -masturbatory -matador/SM -Mata/M -matchable/U -match/BMRSDZGJ -matchbook/SM -matchbox/SM -matched/UA -matcher/M -matches/A -matchless/Y -matchlock/MS -matchmake/GZJR -matchmaker/M -matchmaking/M -matchplay -match's/A -matchstick/MS -matchwood/SM -mated/U -mate/IMS -Matelda/M -Mateo/M -materialism/SM -materialistic -materialistically -materialist/SM -materiality/M -materialization/SM -materialize/CDS -materialized/A -materializer/SM -materializes/A -materializing -materialness/M -material/SPYM -mat�riel/MS -mater/M -maternal/Y -maternity/MS -mates/U -mathematical/Y -Mathematica/M -mathematician/SM -mathematic/S -mathematics/M -Mathematik/M -Mather/M -Mathe/RM -Mathew/MS -Mathewson/M -Mathian/M -Mathias -Mathieu/M -Mathilda/M -Mathilde/M -Mathis -math/M -maths -Matias/M -Matilda/M -Matilde/M -matin�e/S -mating/M -matins/M -Matisse/SM -matriarchal -matriarch/M -matriarchs -matriarchy/MS -matrices -matricidal -matricide/MS -matriculate/XSDGN -matriculation/M -matrimonial/Y -matrimony/SM -matrix/M -matron/YMS -mat/SJGMDR -Matsumoto/M -matte/JGMZSRD -Mattel/M -Matteo/M -matter/GDM -Matterhorn/M -Matthaeus/M -Mattheus/M -Matthew/MS -Matthias -Matthieu/M -Matthiew/M -Matthus/M -Mattias/M -Mattie/M -Matti/M -matting/M -mattins's -Matt/M -mattock/MS -mattress/MS -matt's -Matty/M -maturate/DSNGVX -maturational -maturation/M -matureness/M -maturer/M -mature/RSDTPYG -maturity/MS -matzo/SHM -matzot -Maude/M -Maudie/M -maudlin/Y -Maud/M -Maugham/M -Maui/M -mauler/M -maul/RDGZS -maunder/GDS -Maupassant/M -Maura/M -Maureene/M -Maureen/M -Maure/M -Maurene/M -Mauriac/M -Maurice/M -Mauricio/M -Maurie/M -Maurine/M -Maurise/M -Maurita/M -Mauritania/M -Mauritanian/S -Mauritian/S -Mauritius/M -Maurits/M -Maurizia/M -Maurizio/M -Maurois/M -Mauro/M -Maury/M -Mauser/M -mausoleum/SM -mauve/SM -maven/S -maverick/SMDG -mavin's -Mavis/M -Mavra/M -mawkishness/SM -mawkish/PY -Mawr/M -maw/SGMD -max/GDS -Maxie/M -maxillae -maxilla/M -maxillary/S -Maxi/M -maximality -maximal/SY -maxima's -Maximilian/M -Maximilianus/M -Maximilien/M -maximization/SM -maximizer/M -maximize/RSDZG -Maxim/M -Maximo/M -maxim/SM -maximum/MYS -Maxine/M -maxi/S -Max/M -Maxtor/M -Maxwellian -maxwell/M -Maxwell/M -Maxy/M -Maya/MS -Mayan/S -Maybelle/M -maybe/S -mayday/S -may/EGS -Maye/M -mayer -Mayer/M -mayest -Mayfair/M -Mayflower/M -mayflower/SM -mayfly/MS -mayhap -mayhem/MS -Maynard/M -Mayne/M -Maynord/M -mayn't -Mayo/M -mayonnaise/MS -mayoral -mayoralty/MS -mayoress/MS -Mayor/M -mayor/MS -mayorship/M -mayo/S -maypole/MS -Maypole/SM -Mayra/M -May/SMR -mayst -Mazama/M -Mazarin/M -Mazatlan/M -Mazda/M -mazedness/SM -mazed/YP -maze/MGDSR -mazurka/SM -Mazzini/M -Mb -MB -MBA -Mbabane/M -Mbini/M -MC -McAdam/MS -McAllister/M -McBride/M -McCabe/M -McCain/M -McCall/M -McCarthyism/M -McCarthy/M -McCartney/M -McCarty/M -McCauley/M -McClain/M -McClellan/M -McClure/M -McCluskey/M -McConnell/M -McCormick/M -McCoy/SM -McCracken/M -McCray/M -McCullough/M -McDaniel/M -McDermott/M -McDonald/M -McDonnell/M -McDougall/M -McDowell/M -McElhaney/M -McEnroe/M -McFadden/M -McFarland/M -McGee/M -McGill/M -McGovern/M -McGowan/M -McGrath/M -McGraw/M -McGregor/M -McGuffey/M -McGuire/M -MCI/M -McIntosh/M -McIntyre/M -McKay/M -McKee/M -McKenzie/M -McKesson/M -McKinley/M -McKinney/M -McKnight/M -McLanahan/M -McLaughlin/M -McLean/M -McLeod/M -McLuhan/M -McMahon/M -McMartin/M -McMillan/M -McNamara/M -McNaughton/M -McNeil/M -McPherson/M -MD -Md/M -mdse -MDT -ME -Meade/M -Mead/M -meadowland -meadowlark/SM -meadow/MS -Meadows -meadowsweet/M -mead/SM -Meagan/M -meagerness/SM -meager/PY -Meaghan/M -meagres -mealiness/MS -meal/MDGS -mealtime/MS -mealybug/S -mealymouthed -mealy/PRST -meander/JDSG -meaneing -meanie/MS -meaningfulness/SM -meaningful/YP -meaninglessness/SM -meaningless/PY -meaning/M -meanness/S -means/M -meantime/SM -meant/U -meanwhile/S -Meany/M -mean/YRGJTPS -meany's -Meara/M -measle/SD -measles/M -measly/TR -measurable/U -measurably -measure/BLMGRSD -measured/Y -measureless -measurement/SM -measurer/M -measures/A -measuring/A -meas/Y -meataxe -meatball/MS -meatiness/MS -meatless -meatloaf -meatloaves -meat/MS -meatpacking/S -meaty/RPT -Mecca/MS -mecca/S -mechanical/YS -mechanic/MS -mechanism/SM -mechanistic -mechanistically -mechanist/M -mechanization/SM -mechanized/U -mechanizer/M -mechanize/RSDZGB -mechanizes/U -mechanochemically -Mechelle/M -med -medalist/MS -medallion/MS -medal/SGMD -Medan/M -meddle/GRSDZ -meddlesome -Medea/M -Medellin -Medfield/M -mediaeval's -medial/AY -medials -median/YMS -media/SM -mediateness/M -mediate/PSDYVNGX -mediation/ASM -mediator/SM -Medicaid/SM -medical/YS -medicament/MS -Medicare/MS -medicate/DSXNGV -medication/M -Medici/MS -medicinal/SY -medicine/DSMG -medico/SM -medic/SM -medievalist/MS -medieval/YMS -Medina/M -mediocre -mediocrity/MS -meditate/NGVXDS -meditation/M -meditativeness/M -meditative/PY -Mediterranean/MS -mediumistic -medium/SM -medley/SM -medulla/SM -Medusa/M -meed/MS -meekness/MS -meek/TPYR -meerschaum/MS -meeter/M -meetinghouse/S -meeting/M -meet/JGSYR -me/G -mega -megabit/MS -megabuck/S -megabyte/S -megacycle/MS -megadeath/M -megadeaths -megahertz/M -megalithic -megalith/M -megaliths -megalomaniac/SM -megalomania/SM -megalopolis/SM -Megan/M -megaphone/SDGM -megaton/MS -megavolt/M -megawatt/SM -megaword/S -Megen/M -Meggie/M -Meggi/M -Meggy/M -Meghan/M -Meghann/M -Meg/MN -megohm/MS -Mehetabel/M -Meier/M -Meighen/M -Meiji/M -Mei/MR -meioses -meiosis/M -meiotic -Meir/M -Meister/M -Meistersinger/M -Mejia/M -Mekong/M -Mela/M -Melamie/M -melamine/SM -melancholia/SM -melancholic/S -melancholy/MS -Melanesia/M -Melanesian/S -melange/S -Melania/M -Melanie/M -melanin/MS -melanoma/SM -Melantha/M -Melany/M -Melba/M -Melbourne/M -Melcher/M -Melchior/M -meld/SGD -m�l�e/MS -Melendez/M -Melesa/M -Melessa/M -Melicent/M -Melina/M -Melinda/M -Melinde/M -meliorate/XSDVNG -melioration/M -Melisa/M -Melisande/M -Melisandra/M -Melisenda/M -Melisent/M -Melissa/M -Melisse/M -Melita/M -Melitta/M -Mella/M -Mellicent/M -Mellie/M -mellifluousness/SM -mellifluous/YP -Melli/M -Mellisa/M -Mellisent/M -Melloney/M -Mellon/M -mellowness/MS -mellow/TGRDYPS -Melly/M -Mel/MY -Melodee/M -melodically -melodic/S -Melodie/M -melodiousness/S -melodious/YP -melodrama/SM -melodramatically -melodramatic/S -Melody/M -melody/MS -Melonie/M -melon/MS -Melony/M -Melosa/M -Melpomene/M -meltdown/S -melter/M -melting/Y -Melton/M -melt/SAGD -Melva/M -Melville/M -Melvin/M -Melvyn/M -Me/M -member/DMS -membered/AE -members/EA -membership/SM -membrane/MSD -membranous -memento/SM -Memling/M -memoir/MS -memorabilia -memorability/SM -memorableness/M -memorable/P -memorably -memorandum/SM -memorialize/DSG -memorialized/U -memorial/SY -memoriam -memorization/MS -memorized/U -memorizer/M -memorize/RSDZG -memorizes/A -memoryless -memory/MS -memo/SM -Memphis/M -menace/GSD -menacing/Y -menagerie/SM -menage/S -Menander/M -menarche/MS -Menard/M -Mencius/M -Mencken/M -mendaciousness/M -mendacious/PY -mendacity/MS -Mendeleev/M -mendelevium/SM -Mendelian -Mendel/M -Mendelssohn/M -mender/M -Mendez/M -mendicancy/MS -mendicant/S -Mendie/M -mending/M -Mendocino/M -Mendoza/M -mend/RDSJGZ -Mendy/M -Menelaus/M -Menes/M -menfolk/S -menhaden/M -menial/YS -meningeal -meninges -meningitides -meningitis/M -meninx -menisci -meniscus/M -Menkalinan/M -Menkar/M -Menkent/M -Menlo/M -men/MS -Mennonite/SM -Menominee -menopausal -menopause/SM -menorah/M -menorahs -Menotti/M -Mensa/M -Mensch/M -mensch/S -menservants/M -mens/SDG -menstrual -menstruate/NGDSX -menstruation/M -mensurable/P -mensuration/MS -menswear/M -mentalist/MS -mentality/MS -mental/Y -mentholated -menthol/SM -mentionable/U -mentioned/U -mentioner/M -mention/ZGBRDS -mentor/DMSG -Menuhin/M -menu/SM -Menzies/M -meow/DSG -Mephistopheles/M -Merak/M -Mercado/M -mercantile -Mercator/M -Mercedes -mercenariness/M -mercenary/SMP -mercerize/SDG -Mercer/M -mercer/SM -merchandiser/M -merchandise/SRDJMZG -merchantability -merchantman/M -merchantmen -merchant/SBDMG -Mercie/M -mercifully/U -mercifulness/M -merciful/YP -mercilessness/SM -merciless/YP -Merci/M -Merck/M -mercurial/SPY -mercuric -Mercurochrome/M -mercury/MS -Mercury/MS -Mercy/M -mercy/SM -Meredeth/M -Meredithe/M -Meredith/M -Merell/M -meretriciousness/SM -meretricious/YP -mere/YS -merganser/MS -merger/M -merge/SRDGZ -Meridel/M -meridian/MS -meridional -Meridith/M -Meriel/M -Merilee/M -Merill/M -Merilyn/M -meringue/MS -merino/MS -Meris -Merissa/M -merited/U -meritocracy/MS -meritocratic -meritocrats -meritoriousness/MS -meritorious/PY -merit/SCGMD -Meriwether/M -Merla/M -Merle/M -Merlina/M -Merline/M -merlin/M -Merlin/M -Merl/M -mermaid/MS -merman/M -mermen -Merna/M -Merola/M -meromorphic -Merralee/M -Merrel/M -Merriam/M -Merrick/M -Merridie/M -Merrielle/M -Merrie/M -Merrilee/M -Merrile/M -Merrili/M -Merrill/M -merrily -Merrily/M -Merrimack/M -Merrimac/M -merriment/MS -merriness/S -Merritt/M -Merry/M -merrymaker/MS -merrymaking/SM -merry/RPT -Mersey/M -mer/TGDR -Merton/M -Mervin/M -Merv/M -Merwin/M -Merwyn/M -Meryl/M -Mesa -Mesabi/M -mesa/SM -mescaline/SM -mescal/SM -mesdames/M -mesdemoiselles/M -Meshed's -meshed/U -mesh/GMSD -mesmeric -mesmerism/SM -mesmerized/U -mesmerizer/M -mesmerize/SRDZG -Mesolithic/M -mesomorph/M -mesomorphs -meson/MS -Mesopotamia/M -Mesopotamian/S -mesosphere/MS -mesozoic -Mesozoic -mesquite/MS -mes/S -message/SDMG -messeigneurs -messenger/GSMD -Messerschmidt/M -mess/GSDM -Messiaen/M -messiah -Messiah/M -messiahs -Messiahs -messianic -Messianic -messieurs/M -messily -messiness/MS -messmate/MS -Messrs/M -messy/PRT -mestizo/MS -meta -metabolic -metabolically -metabolism/MS -metabolite/SM -metabolize/GSD -metacarpal/S -metacarpi -metacarpus/M -metacircular -metacircularity -metalanguage/MS -metalization/SM -metalized -metallic/S -metalliferous -metallings -metallography/M -metalloid/M -metallurgic -metallurgical/Y -metallurgist/S -metallurgy/MS -metal/SGMD -metalsmith/MS -metalworking/M -metalwork/RMJGSZ -Meta/M -metamathematical -metamorphic -metamorphism/SM -metamorphose/GDS -metamorphosis/M -metaphoric -metaphorical/Y -metaphor/MS -metaphosphate/M -metaphysical/Y -metaphysic/SM -metastability/M -metastable -metastases -metastasis/M -metastasize/DSG -metastatic -metatarsal/S -metatarsi -metatarsus/M -metatheses -metathesis/M -metathesized -metathesizes -metathesizing -metavariable -metempsychoses -metempsychosis/M -meteoric -meteorically -meteorite/SM -meteoritic/S -meteoritics/M -meteoroid/SM -meteorologic -meteorological -meteorologist/S -meteorology/MS -meteor/SM -meter/GDM -mete/ZDGSR -methadone/SM -methane/MS -methanol/SM -methinks -methionine/M -methodicalness/SM -methodical/YP -methodism -Methodism/SM -methodist/MS -Methodist/MS -method/MS -methodological/Y -methodologists -methodology/MS -methought -Methuen/M -Methuselah/M -Methuselahs -methylated -methylene/M -methyl/SM -meticulousness/MS -meticulous/YP -m�tier/S -metonymy/M -Metrecal/M -metrical/Y -metricate/SDNGX -metricize/GSD -metrics/M -metric/SM -metronome/MS -metropolis/SM -metropolitanization -metropolitan/S -metro/SM -mets -Metternich/M -mettle/SDM -mettlesome -met/U -Metzler/M -Meuse/M -mewl/GSD -mew/SGD -mews/SM -Mex -Mexicali/M -Mexican/S -Mexico/M -Meyerbeer/M -Meyer/SM -mezzanine/MS -mezzo/S -MFA -mfg -mfr/S -mg -M/GB -Mg/M -MGM/M -mgr -Mgr -MHz -MI -MIA -Mia/M -Miami/SM -Miaplacidus/M -miasmal -miasma/SM -Micaela/M -Micah/M -mica/MS -micelles -mice/M -Michaela/M -Michaelangelo/M -Michaelina/M -Michaeline/M -Michaella/M -Michaelmas/MS -Michael/SM -Michaelson/M -Michail/M -Michale/M -Michal/M -Micheal/M -Micheil/M -Michelangelo/M -Michele/M -Michelina/M -Micheline/M -Michelin/M -Michelle/M -Michell/M -Michel/M -Michelson/M -Michigander/S -Michiganite/S -Michigan/M -Mich/M -Mickelson/M -Mickey/M -mickey/SM -Mickie/M -Micki/M -Mick/M -Micky/M -Mic/M -Micmac/M -micra's -microamp -microanalysis/M -microanalytic -microbe/MS -microbial -microbicidal -microbicide/M -microbiological -microbiologist/MS -microbiology/SM -microbrewery/S -microchemistry/M -microchip/S -microcircuit/MS -microcode/GSD -microcomputer/MS -microcosmic -microcosm/MS -microdensitometer -microdot/MS -microeconomic/S -microeconomics/M -microelectronic/S -microelectronics/M -microfiber/S -microfiche/M -microfilm/DRMSG -microfossils -micrography/M -microgroove/MS -microhydrodynamics -microinstruction/SM -microjoule -microlevel -microlight/S -micromanage/GDSL -micromanagement/S -micrometeorite/MS -micrometeoritic -micrometer/SM -Micronesia/M -Micronesian/S -micron/MS -microorganism/SM -microphone/SGM -Microport/M -microprocessing -microprocessor/SM -microprogrammed -microprogramming -microprogram/SM -micro/S -microscope/SM -microscopic -microscopical/Y -microscopy/MS -microsecond/MS -microsimulation/S -Microsystems -micros/M -Microsoft/M -microsomal -microstore -microsurgery/SM -MicroVAXes -MicroVAX/M -microvolt/SM -microwaveable -microwave/BMGSD -microword/S -midair/MS -midas -Midas/M -midband/M -midday/MS -midden/SM -middest -middlebrow/SM -Middlebury/M -middle/GJRSD -middleman/M -middlemen -middlemost -Middlesex/M -Middleton/M -Middletown/M -middleweight/SM -middling/Y -middy/SM -Mideastern -Mideast/M -midfield/RM -Midge/M -midge/SM -midget/MS -midi/S -midland/MRS -Midland/MS -midlife -midlives -midmorn/G -midmost/S -midnight/SYM -midpoint/MS -midrange -midrib/MS -midriff/MS -mid/S -midscale -midsection/M -midshipman/M -midshipmen -midship/S -midspan -midstream/MS -midst/SM -midsummer/MS -midterm/MS -midtown/MS -Midway/M -midway/S -midweek/SYM -Midwesterner/M -Midwestern/ZR -Midwest/M -midwicket -midwifery/SM -midwife/SDMG -midwinter/YMS -midwives -midyear/MS -mien/M -miff/GDS -mightily -mightiness/MS -mightn't -might/S -mighty/TPR -mignon -mignonette/SM -Mignon/M -Mignonne/M -migraine/SM -migrant/MS -migrate/ASDG -migration/MS -migrative -migratory/S -MIG/S -Miguela/M -Miguelita/M -Miguel/M -mikado/MS -Mikaela/M -Mikael/M -mike/DSMG -Mikel/M -Mike/M -Mikey/M -Mikhail/M -Mikkel/M -Mikol/M -Mikoyan/M -milady/MS -Milagros/M -Milanese -Milan/M -milch/M -mildew/DMGS -mildness/MS -Mildred/M -Mildrid/M -mild/STYRNP -mileage/SM -Milena/M -milepost/SM -miler/M -mile/SM -Mile/SM -milestone/MS -Milford/M -Milicent/M -milieu/SM -Milissent/M -militancy/MS -militantness/M -militant/YPS -militarily -militarism/SM -militaristic -militarist/MS -militarization/SCM -militarize/SDCG -military -militate/SDG -militiaman/M -militiamen -militia/SM -Milka/M -Milken/M -milker/M -milk/GZSRDM -milkiness/MS -milkmaid/SM -milkman/M -milkmen -milkshake/S -milksop/SM -milkweed/MS -milky/RPT -millage/S -Millard/M -Millay/M -millenarian -millenarianism/M -millennial -millennialism -millennium/MS -millepede's -miller/M -Miller/M -Millet/M -millet/MS -milliamp -milliampere/S -milliard/MS -millibar/MS -Millicent/M -millidegree/S -Millie/M -milligram/MS -millijoule/S -Millikan/M -milliliter/MS -Milli/M -millimeter/SM -milliner/SM -millinery/MS -milling/M -millionaire/MS -million/HDMS -millionth/M -millionths -millipede/SM -millisecond/MS -Millisent/M -millivoltmeter/SM -millivolt/SM -milliwatt/S -millpond/MS -millrace/SM -mill/SGZMRD -Mill/SMR -millstone/SM -millstream/SM -millwright/MS -Milly/M -mil/MRSZ -Mil/MY -Milne/M -Milo/M -Milquetoast/S -milquetoast/SM -Miltiades/M -Miltie/M -Milt/M -milt/MDSG -Miltonic -Milton/M -Miltown/M -Milty/M -Milwaukee/M -Milzie/M -MIMD -mime/DSRMG -mimeograph/GMDS -mimeographs -mimer/M -mimesis/M -mimetic -mimetically -mimicked -mimicker/SM -mimicking -mimicry/MS -mimic/S -Mimi/M -mi/MNX -Mimosa/M -mimosa/SM -Mina/M -minaret/MS -minatory -mincemeat/MS -mincer/M -mince/SRDGZJ -mincing/Y -Minda/M -Mindanao/M -mind/ARDSZG -mindbogglingly -minded/P -minder/M -mindfully -mindfulness/MS -mindful/U -mindlessness/SM -mindless/YP -Mindoro/M -min/DRZGJ -mind's -mindset/S -Mindy/M -minefield/MS -mineralization/C -mineralized/U -mineralogical -mineralogist/SM -mineralogy/MS -mineral/SM -miner/M -Miner/M -Minerva/M -mineshaft -mine/SNX -minestrone/MS -minesweeper/MS -Minetta/M -Minette/M -mineworkers -mingle/SDG -Ming/M -Mingus/M -miniature/GMSD -miniaturist/SM -miniaturization/MS -miniaturize/SDG -minibike/S -minibus/SM -minicab/M -minicam/MS -minicomputer/SM -minidress/SM -minify/GSD -minimalism/S -minimalistic -minimalist/MS -minimality -minimal/SY -minima's -minimax/M -minimization/MS -minimized/U -minimizer/M -minimize/RSDZG -minim/SM -minimum/MS -mining/M -minion/M -mini/S -miniseries -miniskirt/MS -ministerial/Y -minister/MDGS -ministrant/S -ministration/SM -ministry/MS -minivan/S -miniver/M -minke -mink/SM -Min/MR -Minna/M -Minnaminnie/M -Minneapolis/M -Minne/M -minnesinger/MS -Minnesota/M -Minnesotan/S -Minnie/M -Minni/M -Minn/M -Minnnie/M -minnow/SM -Minny/M -Minoan/S -Minolta/M -minor/DMSG -minority/MS -Minor/M -Minos -Minotaur/M -minotaur/S -Minot/M -minoxidil/S -Minsk/M -Minsky/M -minster/SM -minstrel/SM -minstrelsy/MS -mintage/SM -Mintaka/M -Minta/M -minter/M -mint/GZSMRD -minty/RT -minuend/SM -minuet/SM -Minuit/M -minuscule/SM -minus/S -minuteman -Minuteman/M -minutemen -minuteness/SM -minute/RSDPMTYG -minutiae -minutia/M -minx/MS -Miocene -MIPS -Miquela/M -Mirabeau/M -Mirabella/M -Mirabelle/M -Mirabel/M -Mirach/M -miracle/MS -miraculousness/M -miraculous/PY -mirage/GSDM -Mira/M -Miranda/M -Miran/M -Mireielle/M -Mireille/M -Mirella/M -Mirelle/M -mire/MGDS -Mirfak/M -Miriam/M -Mirilla/M -Mir/M -Mirna/M -Miro -mirror/DMGS -mirthfulness/SM -mirthful/PY -mirthlessness/M -mirthless/YP -mirth/M -mirths -MIRV/DSG -miry/RT -Mirzam/M -misaddress/SDG -misadventure/SM -misalign/DSGL -misalignment/MS -misalliance/MS -misanalysed -misanthrope/MS -misanthropic -misanthropically -misanthropist/S -misanthropy/SM -misapplier/M -misapply/GNXRSD -misapprehend/GDS -misapprehension/MS -misappropriate/GNXSD -misbegotten -misbehaver/M -misbehave/RSDG -misbehavior/SM -misbrand/DSG -misc -miscalculate/XGNSD -miscalculation/M -miscall/SDG -miscarriage/MS -miscarry/SDG -miscast/GS -miscegenation/SM -miscellanea -miscellaneous/PY -miscellany/MS -Mischa/M -mischance/MGSD -mischief/MDGS -mischievousness/MS -mischievous/PY -miscibility/S -miscible/C -misclassification/M -misclassified -misclassifying -miscode/SDG -miscommunicate/NDS -miscomprehended -misconceive/GDS -misconception/MS -misconduct/GSMD -misconfiguration -misconstruction/MS -misconstrue/DSG -miscopying -miscount/DGS -miscreant/MS -miscue/MGSD -misdeal/SG -misdealt -misdeed/MS -misdemeanant/SM -misdemeanor/SM -misdiagnose/GSD -misdid -misdirect/GSD -misdirection/MS -misdirector/S -misdoes -misdo/JG -misdone -miserableness/SM -miserable/SP -miserably -miser/KM -miserliness/MS -miserly/P -misery/MS -mises/KC -misfeasance/MS -misfeature/M -misfield -misfile/SDG -misfire/SDG -misfit/MS -misfitted -misfitting -misfortune/SM -misgauge/GDS -misgiving/MYS -misgovern/LDGS -misgovernment/S -misguidance/SM -misguidedness/M -misguided/PY -misguide/DRSG -misguider/M -Misha/M -mishandle/SDG -mishap/MS -mishapped -mishapping -misheard -mishear/GS -mishitting -mishmash/SM -misidentification/M -misidentify/GNSD -misinformation/SM -misinform/GDS -misinterpretation/MS -misinterpreter/M -misinterpret/RDSZG -misjudge/DSG -misjudging/Y -misjudgment/MS -Miskito -mislabel/DSG -mislaid -mislay/GS -misleader/M -mislead/GRJS -misleading/Y -misled -mismanage/LGSD -mismanagement/MS -mismatch/GSD -misname/GSD -misnomer/GSMD -misogamist/MS -misogamy/MS -misogynistic -misogynist/MS -misogynous -misogyny/MS -misperceive/SD -misplace/GLDS -misplacement/MS -misplay/GSD -mispositioned -misprint/SGDM -misprision/SM -mispronounce/DSG -mispronunciation/MS -misquotation/MS -misquote/GDS -misreader/M -misread/RSGJ -misrelated -misremember/DG -misreport/DGS -misrepresentation/MS -misrepresenter/M -misrepresent/SDRG -misroute/DS -misrule/SDG -missal/ESM -misshape/DSG -misshapenness/SM -misshapen/PY -Missie/M -missile/MS -missilery/SM -mission/AMS -missionary/MS -missioned -missioner/SM -missioning -missis's -Mississauga/M -Mississippian/S -Mississippi/M -missive/MS -Missoula/M -Missourian/S -Missouri/M -misspeak/SG -misspecification -misspecified -misspelling/M -misspell/SGJD -misspend/GS -misspent -misspoke -misspoken -mis/SRZ -miss/SDEGV -Miss/SM -misstate/GLDRS -misstatement/MS -misstater/M -misstep/MS -misstepped -misstepping -missus/SM -Missy/M -mistakable/U -mistake/BMGSR -mistaken/Y -mistaker/M -mistaking/Y -Mistassini/M -mister/GDM -Mister/SM -mistily -Misti/M -mistime/GSD -mistiness/S -mistletoe/MS -mist/MRDGZS -mistook -mistral/MS -mistranslated -mistranslates -mistranslating -mistranslation/SM -mistreat/DGSL -mistreatment/SM -Mistress/MS -mistress/MSY -mistrial/SM -mistruster/M -mistrustful/Y -mistrust/SRDG -Misty/M -mistype/SDGJ -misty/PRT -misunderstander/M -misunderstanding/M -misunderstand/JSRZG -misunderstood -misuser/M -misuse/RSDMG -miswritten -Mitchael/M -Mitchell/M -Mitchel/M -Mitch/M -miterer/M -miter/GRDM -mite/SRMZ -Mitford/M -Mithra/M -Mithridates/M -mitigated/U -mitigate/XNGVDS -mitigation/M -MIT/M -mitoses -mitosis/M -mitotic -MITRE/SM -Mitsubishi/M -mitten/M -Mitterrand/M -mitt/XSMN -Mitty/M -Mitzi/M -mitzvahs -mixable -mix/AGSD -mixed/U -mixer/SM -mixture/SM -Mizar/M -mizzenmast/SM -mizzen/MS -Mk -mks -ml -Mlle/M -mm -MM -MMe -Mme/SM -MN -mnemonically -mnemonics/M -mnemonic/SM -Mnemosyne/M -Mn/M -MO -moan/GSZRDM -moat/SMDG -mobbed -mobber -mobbing -mobcap/SM -Mobile/M -mobile/S -mobility/MS -mobilizable -mobilization/AMCS -mobilize/CGDS -mobilized/U -mobilizer/MS -mobilizes/A -Mobil/M -mob/MS -mobster/MS -Mobutu/M -moccasin/SM -mocha/SM -mockers/M -mockery/MS -mock/GZSRD -mockingbird/MS -mocking/Y -mo/CSK -modality/MS -modal/Y -modeled/A -modeler/M -modeling/M -models/A -model/ZGSJMRD -mode/MS -modem/SM -moderated/U -moderateness/SM -moderate/PNGDSXY -moderation/M -moderator/MS -modernism/MS -modernistic -modernist/S -modernity/SM -modernization/MS -modernized/U -modernizer/M -modernize/SRDGZ -modernizes/U -modernness/SM -modern/PTRYS -Modesta/M -Modestia/M -Modestine/M -Modesto/M -modest/TRY -Modesty/M -modesty/MS -modicum/SM -modifiability/M -modifiableness/M -modifiable/U -modification/M -modified/U -modifier/M -modify/NGZXRSD -Modigliani/M -modishness/MS -modish/YP -mod/TSR -Modula/M -modularity/SM -modularization -modularize/SDG -modular/SY -modulate/ADSNCG -modulation/CMS -modulator/ACSM -module/SM -moduli -modulo -modulus/M -modus -Moe/M -Moen/M -Mogadiscio's -Mogadishu -mogul/MS -Mogul/MS -mohair/SM -Mohamed/M -Mohammad/M -Mohammedanism/MS -Mohammedan/SM -Mohammed's -Mohandas/M -Mohandis/M -Mohawk/MS -Mohegan/S -Mohican's -Moho/M -Mohorovicic/M -Mohr/M -moiety/MS -moil/SGD -Moina/M -Moines/M -Moira/M -moire/MS -Moise/MS -Moiseyev/M -Moishe/M -moistener/M -moisten/ZGRD -moistness/MS -moist/TXPRNY -moisture/MS -moisturize/GZDRS -Mojave/M -molal -molarity/SM -molar/MS -molasses/MS -Moldavia/M -Moldavian/S -moldboard/SM -molder/DG -moldiness/SM -molding/M -mold/MRDJSGZ -Moldova -moldy/PTR -molecularity/SM -molecular/Y -molecule/MS -molehill/SM -mole/MTS -moleskin/MS -molestation/SM -molested/U -molester/M -molest/RDZGS -Moliere -Molina/M -Moline/M -Mollee/M -Mollie/M -mollification/M -mollify/XSDGN -Molli/M -Moll/M -moll/MS -mollusc's -mollusk/S -mollycoddler/M -mollycoddle/SRDG -Molly/M -molly/SM -Molnar/M -Moloch/M -Molokai/M -Molotov/M -molter/M -molt/RDNGZS -Moluccas -molybdenite/M -molybdenum/MS -Mombasa/M -momenta -momentarily -momentariness/SM -momentary/P -moment/MYS -momentousness/MS -momentous/YP -momentum/SM -momma/S -Mommy/M -mommy/SM -Mo/MN -mom/SM -Monaco/M -monadic -monad/SM -Monah/M -Mona/M -monarchic -monarchical -monarchism/MS -monarchistic -monarchist/MS -monarch/M -monarchs -monarchy/MS -Monash/M -monastery/MS -monastical/Y -monasticism/MS -monastic/S -monaural/Y -Mondale/M -Monday/MS -Mondrian/M -Monegasque/SM -Monera/M -monetarily -monetarism/S -monetarist/MS -monetary -monetization/CMA -monetize/CGADS -Monet/M -moneybag/SM -moneychangers -moneyer/M -moneylender/SM -moneymaker/MS -moneymaking/MS -money/SMRD -Monfort/M -monger/SGDM -Mongolia/M -Mongolian/S -Mongolic/M -mongolism/SM -mongoloid/S -Mongoloid/S -Mongol/SM -mongoose/SM -mongrel/SM -Monica/M -monies/M -Monika/M -moniker/MS -Monique/M -monism/MS -monist/SM -monition/SM -monitored/U -monitor/GSMD -monitory/S -monkeyshine/S -monkey/SMDG -monkish -Monk/M -monk/MS -monkshood/SM -Monmouth/M -monochromatic -monochromator -monochrome/MS -monocle/SDM -monoclinic -monoclonal/S -monocotyledonous -monocotyledon/SM -monocular/SY -monodic -monodist/S -monody/MS -monogamist/MS -monogamous/PY -monogamy/MS -monogrammed -monogramming -monogram/MS -monograph/GMDS -monographs -monolingualism -monolingual/S -monolithic -monolithically -monolith/M -monoliths -monologist/S -monologue/GMSD -monomaniacal -monomaniac/MS -monomania/MS -monomeric -monomer/SM -monomial/SM -mono/MS -Monongahela/M -mononuclear -mononucleoses -mononucleosis/M -monophonic -monoplane/MS -monopole/S -monopolistic -monopolist/MS -monopolization/MS -monopolized/U -monopolize/GZDSR -monopolizes/U -monopoly/MS -monorail/SM -monostable -monosyllabic -monosyllable/MS -monotheism/SM -monotheistic -monotheist/S -monotone/SDMG -monotonic -monotonically -monotonicity -monotonousness/MS -monotonous/YP -monotony/MS -monovalent -monoxide/SM -Monroe/M -Monro/M -Monrovia/M -Monsanto/M -monseigneur -monsieur/M -Monsignori -Monsignor/MS -monsignor/S -Mon/SM -monsoonal -monsoon/MS -monster/SM -monstrance/ASM -monstrosity/SM -monstrousness/M -monstrous/YP -montage/SDMG -Montague/M -Montaigne/M -Montana/M -Montanan/MS -Montcalm/M -Montclair/M -Monte/M -Montenegrin -Montenegro/M -Monterey/M -Monterrey/M -Montesquieu/M -Montessori/M -Monteverdi/M -Montevideo/M -Montezuma -Montgomery/M -monthly/S -month/MY -months -Monticello/M -Monti/M -Mont/M -Montmartre/M -Montoya/M -Montpelier/M -Montrachet/M -Montreal/M -Montserrat/M -Monty/M -monumentality/M -monumental/Y -monument/DMSG -mooch/ZSRDG -moodily -moodiness/MS -mood/MS -Moody/M -moody/PTR -Moog -moo/GSD -moonbeam/SM -Mooney/M -moon/GDMS -moonless -moonlight/GZDRMS -moonlighting/M -moonlit -Moon/M -moonscape/MS -moonshiner/M -moonshine/SRZM -moonshot/MS -moonstone/SM -moonstruck -moonwalk/SDG -Moore/M -moor/GDMJS -mooring/M -Moorish -moorland/MS -Moor/MS -moose/M -moot/RDGS -moped/MS -moper/M -mope/S -mopey -mopier -mopiest -mopish -mopped -moppet/MS -mopping -mop/SZGMDR -moraine/MS -morale/MS -Morales/M -moralistic -moralistically -moralist/MS -morality/UMS -moralization/CS -moralize/CGDRSZ -moralled -moraller -moralling -moral/SMY -Mora/M -Moran/M -morass/SM -moratorium/SM -Moravia/M -Moravian -moray/SM -morbidity/SM -morbidness/S -morbid/YP -mordancy/MS -mordant/GDYS -Mordecai/M -Mord/M -Mordred/M -Mordy/M -more/DSN -Moreen/M -Morehouse/M -Moreland/M -morel/SM -More/M -Morena/M -Moreno/M -moreover -Morey/M -Morgana/M -Morganica/M -Morgan/MS -Morganne/M -morgen/M -Morgen/M -morgue/SM -Morgun/M -Moria/M -Moriarty/M -moribundity/M -moribund/Y -Morie/M -Morin/M -morion/M -Morison/M -Morissa/M -Morita/M -Moritz/M -Morlee/M -Morley/M -Morly/M -Mormonism/MS -Mormon/SM -Morna/M -morning/MY -morn/SGJDM -Moroccan/S -Morocco/M -morocco/SM -Moro/M -moronic -moronically -Moroni/M -moron/SM -moroseness/MS -morose/YP -morpheme/DSMG -morphemic/S -Morpheus/M -morph/GDJ -morphia/S -morphine/MS -morphism/MS -morphologic -morphological/Y -morphology/MS -morphophonemic/S -morphophonemics/M -morphs -Morrie/M -morris -Morris/M -Morrison/M -Morristown/M -Morrow/M -morrow/MS -Morry/M -morsel/GMDS -Morse/M -mortality/SM -mortal/SY -mortarboard/SM -mortar/GSDM -Morten/M -mortgageable -mortgagee/SM -mortgage/MGDS -mortgagor/SM -mortice's -mortician/SM -Mortie/M -mortification/M -mortified/Y -mortifier/M -mortify/DRSXGN -Mortimer/M -mortise/MGSD -Mort/MN -Morton/M -mortuary/MS -Morty/M -Mosaic -mosaicked -mosaicking -mosaic/MS -Moscone/M -Moscow/M -Moseley/M -Moselle/M -Mose/MSR -Moser/M -mosey/SGD -Moshe/M -Moslem's -Mosley/M -mosque/SM -mosquitoes -mosquito/M -mos/S -mossback/MS -Mossberg/M -Moss/M -moss/SDMG -mossy/SRT -most/SY -Mosul/M -mote/ASCNK -motel/MS -mote's -motet/SM -mothball/DMGS -motherboard/MS -motherfucker/MS! -motherfucking/! -motherhood/SM -mothering/M -motherland/SM -motherless -motherliness/MS -motherly/P -mother/RDYMZG -moths -moth/ZMR -motif/MS -motile/S -motility/MS -motional/K -motioner/M -motion/GRDMS -motionlessness/S -motionless/YP -motion's/ACK -motions/K -motivated/U -motivate/XDSNGV -motivational/Y -motivation/M -motivator/S -motiveless -motive/MGSD -motley/S -motlier -motliest -mot/MSV -motocross/SM -motorbike/SDGM -motorboat/MS -motorcade/MSDG -motorcar/MS -motorcycle/GMDS -motorcyclist/SM -motor/DMSG -motoring/M -motorist/SM -motorization/SM -motorize/DSG -motorized/U -motorman/M -motormen -motormouth -motormouths -Motorola/M -motorway/SM -Motown/M -mottle/GSRD -mottler/M -Mott/M -mottoes -motto/M -moue/DSMG -moulder/DSG -moult/GSD -mound/GMDS -mountable -mountaineering/M -mountaineer/JMDSG -mountainousness/M -mountainous/PY -mountainside/MS -mountain/SM -mountaintop/SM -Mountbatten/M -mountebank/SGMD -mounted/U -mount/EGACD -mounter/SM -mounties -Mountie/SM -mounting/MS -Mount/M -mounts/AE -mourner/M -mournfuller -mournfullest -mournfulness/S -mournful/YP -mourning/M -mourn/ZGSJRD -mouser/M -mouse/SRDGMZ -mousetrapped -mousetrapping -mousetrap/SM -mousiness/MS -mousing/M -mousse/MGSD -Moussorgsky/M -mousy/PRT -Mouthe/M -mouthful/MS -mouthiness/SM -mouth/MSRDG -mouthorgan -mouthpiece/SM -mouths -mouthwash/SM -mouthwatering -mouthy/PTR -Mouton/M -mouton/SM -movable/ASP -movableness/AM -move/ARSDGZB -moved/U -movement/SM -mover/AM -moviegoer/S -movie/SM -moving/YS -mower/M -Mowgli/M -mowing/M -mow/SDRZG -moxie/MS -Moyer/M -Moyna/M -Moyra/M -Mozambican/S -Mozambique/M -Mozart/M -Mozelle/M -Mozes/M -Mozilla/M -mozzarella/MS -mp -MP -mpg -mph -MPH -MRI -Mr/M -Mrs -ms -M's -MS -MSG -Msgr/M -m's/K -Ms/S -MST -MSW -mt -MT -mtg -mtge -Mt/M -MTS -MTV -Muawiya/M -Mubarak/M -muchness/M -much/SP -mucilage/MS -mucilaginous -mucker/M -muck/GRDMS -muckraker/M -muckrake/ZMDRSG -mucky/RT -mucosa/M -mucous -mucus/SM -mudded -muddily -muddiness/SM -mudding -muddle/GRSDZ -muddleheaded/P -muddlehead/SMD -muddler/M -muddy/TPGRSD -mudflat/S -mudguard/SM -mudlarks -mud/MS -mudroom/S -mudslide/S -mudslinger/M -mudslinging/M -mudsling/JRGZ -Mueller/M -Muenster -muenster/MS -muesli/M -muezzin/MS -muff/GDMS -Muffin/M -muffin/SM -muffler/M -muffle/ZRSDG -Mufi/M -Mufinella/M -mufti/MS -Mugabe/M -mugged -mugger/SM -mugginess/S -mugging/S -muggy/RPT -mugshot/S -mug/SM -mugwump/MS -Muhammadanism/S -Muhammadan/SM -Muhammad/M -Muire/M -Muir/M -Mukden/M -mukluk/SM -mulattoes -mulatto/M -mulberry/MS -mulch/GMSD -mulct/SDG -Mulder/M -mule/MGDS -muleskinner/S -muleteer/MS -mulishness/MS -mulish/YP -mullah/M -mullahs -mullein/MS -Mullen/M -muller/M -Muller/M -mullet/MS -Mulligan/M -mulligan/SM -mulligatawny/SM -Mullikan/M -Mullins -mullion/MDSG -mull/RDSG -Multan/M -multi -Multibus/M -multicellular -multichannel/M -multicollinearity/M -multicolor/SDM -multicolumn -multicomponent -multicomputer/MS -Multics/M -MULTICS/M -multicultural -multiculturalism/S -multidimensional -multidimensionality -multidisciplinary -multifaceted -multifamily -multifariousness/SM -multifarious/YP -multifigure -multiform -multifunction/D -multilateral/Y -multilayer -multilevel/D -multilingual -multilingualism/S -multimedia/S -multimegaton/M -multimeter/M -multimillionaire/SM -multinational/S -multinomial/M -multiphase -multiple/SM -multiplet/SM -multiplex/GZMSRD -multiplexor's -multipliable -multiplicand/SM -multiplication/M -multiplicative/YS -multiplicity/MS -multiplier/M -multiply/ZNSRDXG -multiprocess/G -multiprocessor/MS -multiprogram -multiprogrammed -multiprogramming/MS -multipurpose -multiracial -multistage -multistory/S -multisyllabic -multitasking/S -multitude/MS -multitudinousness/M -multitudinous/YP -multiuser -multivalent -multivalued -multivariate -multiversity/M -multivitamin/S -mu/M -mumbler/M -mumbletypeg/S -mumble/ZJGRSD -Mumford/M -mummed -mummer/SM -mummery/MS -mummification/M -mummify/XSDGN -mumming -mum/MS -mummy/GSDM -mumps/M -muncher/M -M�nchhausen/M -munchies -Munch/M -munch/ZRSDG -Muncie/M -mundane/YSP -Mundt/M -munge/JGZSRD -Munich/M -municipality/SM -municipal/YS -munificence/MS -munificent/Y -munition/SDG -Munmro/M -Munoz/M -Munroe/M -Munro/M -mun/S -Munsey/M -Munson/M -Munster/MS -Muong/M -muon/M -Muppet/M -muralist/SM -mural/SM -Murasaki/M -Murat/M -Murchison/M -Murcia/M -murderer/M -murderess/S -murder/GZRDMS -murderousness/M -murderous/YP -Murdoch/M -Murdock/M -Mureil/M -Murial/M -muriatic -Murielle/M -Muriel/M -Murillo/M -murkily -murkiness/S -murk/TRMS -murky/RPT -Murmansk/M -murmurer/M -murmuring/U -murmurous -murmur/RDMGZSJ -Murphy/M -murrain/SM -Murray/M -Murrow/M -Murrumbidgee/M -Murry/M -Murvyn/M -muscatel/MS -Muscat/M -muscat/SM -musclebound -muscle/SDMG -Muscovite/M -muscovite/MS -Muscovy/M -muscularity/SM -muscular/Y -musculature/SM -muse -Muse/M -muser/M -musette/SM -museum/MS -mus/GJDSR -musher/M -mushiness/MS -mush/MSRDG -mushroom/DMSG -mushy/PTR -Musial/M -musicale/SM -musicality/SM -musicals -musical/YU -musician/MYS -musicianship/MS -musicked -musicking -musicological -musicologist/MS -musicology/MS -music/SM -musing/Y -Muskegon/M -muskeg/SM -muskellunge/SM -musketeer/MS -musketry/MS -musket/SM -musk/GDMS -muskie/M -muskiness/MS -muskmelon/MS -muskox/N -muskrat/MS -musky/RSPT -Muslim/MS -muslin/MS -mussel/MS -Mussolini/MS -Mussorgsky/M -muss/SDG -mussy/RT -mustache/DSM -mustachio/MDS -mustang/MS -mustard/MS -muster/GD -mustily -mustiness/MS -mustn't -must/RDGZS -must've -musty/RPT -mutability/SM -mutableness/M -mutable/P -mutably -mutagen/SM -mutant/MS -mutate/XVNGSD -mutational/Y -mutation/M -mutator/S -muted/Y -muteness/S -mute/PDSRBYTG -mutilate/XDSNG -mutilation/M -mutilator/MS -mutineer/SMDG -mutinous/Y -mutiny/MGSD -Mutsuhito/M -mutterer/M -mutter/GZRDJ -muttonchops -mutton/SM -mutt/ZSMR -mutuality/S -mutual/SY -muumuu/MS -muzak -Muzak/SM -Muzo/M -muzzled/U -muzzle/MGRSD -muzzler/M -MVP -MW -Myanmar -Mycah/M -Myca/M -Mycenaean -Mycenae/M -Mychal/M -mycologist/MS -mycology/MS -myelitides -myelitis/M -Myer/MS -myers -mylar -Mylar/S -Myles/M -Mylo/M -My/M -myna/SM -Mynheer/M -myocardial -myocardium/M -myopia/MS -myopically -myopic/S -Myrah/M -Myra/M -Myranda/M -Myrdal/M -myriad/S -Myriam/M -Myrilla/M -Myrle/M -Myrlene/M -myrmidon/S -Myrna/M -Myron/M -myrrh/M -myrrhs -Myrta/M -Myrtia/M -Myrtice/M -Myrtie/M -Myrtle/M -myrtle/SM -Myrvyn/M -Myrwyn/M -mys -my/S -myself -Mysore/M -mysteriousness/MS -mysterious/YP -mystery/MDSG -mystical/Y -mysticism/MS -mystic/SM -mystification/M -mystifier/M -mystify/CSDGNX -mystifying/Y -mystique/MS -Myst/M -mythic -mythical/Y -myth/MS -mythographer/SM -mythography/M -mythological/Y -mythologist/MS -mythologize/CSDG -mythology/SM -myths -N -NAACP -nabbed -nabbing -Nabisco/M -nabob/SM -Nabokov/M -nab/S -nacelle/SM -nacho/S -NaCl/M -nacre/MS -nacreous -Nada/M -Nadean/M -Nadeen/M -Nader/M -Nadia/M -Nadine/M -nadir/SM -Nadiya/M -Nadya/M -Nady/M -nae/VM -Nagasaki/M -nagged -nagger/S -nagging/Y -nag/MS -Nagoya/M -Nagpur/M -Nagy/M -Nahuatl/SM -Nahum/M -naiad/SM -naifs -nailbrush/SM -nailer/M -nail/SGMRD -Naipaul/M -Nair/M -Nairobi/M -Naismith/M -naive/SRTYP -naivet�/SM -naivety/MS -Nakamura/M -Nakayama/M -nakedness/MS -naked/TYRP -Nakoma/M -Nalani/M -Na/M -Namath/M -nameable/U -name/ADSG -namedrop -namedropping -named's -named/U -nameless/PY -namely -nameplate/MS -namer/SM -name's -namesake/SM -Namibia/M -Namibian/S -naming/M -Nam/M -Nanak/M -Nana/M -Nananne/M -Nancee/M -Nance/M -Nancey/M -Nanchang/M -Nancie/M -Nanci/M -Nancy/M -Nanete/M -Nanette/M -Nanice/M -Nani/M -Nanine/M -Nanjing -Nanking's -Nan/M -Nannette/M -Nannie/M -Nanni/M -Nanny/M -nanny/SDMG -nanometer/MS -Nanon/M -Nanook/M -nanosecond/SM -Nansen/M -Nantes/M -Nantucket/M -Naoma/M -Naomi/M -napalm/MDGS -nape/SM -Naphtali/M -naphthalene/MS -naphtha/SM -Napier/M -napkin/SM -Naples/M -napless -Nap/M -Napoleonic -napoleon/MS -Napoleon/MS -napped -napper/MS -Nappie/M -napping -Nappy/M -nappy/TRSM -nap/SM -Nara/M -Narbonne/M -narc/DGS -narcissism/MS -narcissistic -narcissist/MS -narcissus/M -Narcissus/M -narcoleptic -narcoses -narcosis/M -narcotic/SM -narcotization/S -narcotize/GSD -Nariko/M -Nari/M -nark's -Narmada/M -Narragansett/M -narrate/VGNSDX -narration/M -narrative/MYS -narratology -narrator/SM -narrowing/P -narrowness/SM -narrow/RDYTGPS -narwhal/MS -nary -nasality/MS -nasalization/MS -nasalize/GDS -nasal/YS -NASA/MS -nascence/ASM -nascent/A -NASDAQ -Nash/M -Nashua/M -Nashville/M -Nassau/M -Nasser/M -nastily -nastiness/MS -nasturtium/SM -nasty/TRSP -natal -Natala/M -Natalee/M -Natale/M -Natalia/M -Natalie/M -Natalina/M -Nataline/M -natalist -natality/M -Natal/M -Natalya/M -Nata/M -Nataniel/M -Natasha/M -Natassia/M -Natchez -natch/S -Nate/XMN -Nathalia/M -Nathalie/M -Nathanael/M -Nathanial/M -Nathaniel/M -Nathanil/M -Nathan/MS -nationalism/SM -nationalistic -nationalistically -nationalist/MS -nationality/MS -nationalization/MS -nationalize/CSDG -nationalized/AU -nationalizer/SM -national/YS -nationhood/SM -nation/MS -nationwide -nativeness/M -native/PYS -Natividad/M -Nativity/M -nativity/MS -Natka/M -natl -Nat/M -NATO/SM -natter/SGD -nattily -nattiness/SM -Natty/M -natty/TRP -naturalism/MS -naturalistic -naturalist/MS -naturalization/SM -naturalized/U -naturalize/GSD -naturalness/US -natural/PUY -naturals -nature/ASDCG -nature's -naturist -Naugahyde/S -naughtily -naughtiness/SM -naught/MS -naughty/TPRS -Naur/M -Nauru/M -nausea/SM -nauseate/DSG -nauseating/Y -nauseousness/SM -nauseous/P -nautical/Y -nautilus/MS -Navaho's -Navajoes -Navajo/S -naval/Y -Navarro/M -navel/MS -nave/SM -navigability/SM -navigableness/M -navigable/P -navigate/DSXNG -navigational -navigation/M -navigator/MS -Navona/M -Navratilova/M -navvy/M -Navy/S -navy/SM -nay/MS -naysayer/S -Nazarene/MS -Nazareth/M -Nazi/SM -Nazism/S -NB -NBA -NBC -Nb/M -NBS -NC -NCAA -NCC -NCO -NCR -ND -N'Djamena -Ndjamena/M -Nd/M -Ne -NE -Neala/M -Neale/M -Neall/M -Neal/M -Nealon/M -Nealson/M -Nealy/M -Neanderthal/S -neap/DGS -Neapolitan/SM -nearby -nearly/RT -nearness/MS -nearside/M -nearsightedness/S -nearsighted/YP -near/TYRDPSG -neaten/DG -neath -neatness/MS -neat/YRNTXPS -Neb/M -Nebraska/M -Nebraskan/MS -Nebr/M -Nebuchadnezzar/MS -nebulae -nebula/M -nebular -nebulousness/SM -nebulous/PY -necessaries -necessarily/U -necessary/U -necessitate/DSNGX -necessitation/M -necessitous -necessity/SM -neckband/M -neckerchief/MS -neck/GRDMJS -necking/M -necklace/DSMG -neckline/MS -necktie/MS -necrology/SM -necromancer/MS -necromancy/MS -necromantic -necrophiliac/S -necrophilia/M -necropolis/SM -necropsy/M -necroses -necrosis/M -necrotic -nectarine/SM -nectarous -nectar/SM -nectary/MS -Neda/M -Nedda/M -Neddie/M -Neddy/M -Nedi/M -Ned/M -n�e -needed/U -needer/M -needful/YSP -Needham/M -neediness/MS -needlecraft/M -needle/GMZRSD -needlepoint/SM -needlessness/S -needless/YP -needlewoman/M -needlewomen -needlework/RMS -needn't -need/YRDGS -needy/TPR -Neel/M -Neely/M -ne'er -nefariousness/MS -nefarious/YP -Nefen/M -Nefertiti/M -negated/U -negater/M -negate/XRSDVNG -negation/M -negativeness/SM -negative/PDSYG -negativism/MS -negativity/MS -negator/MS -Negev/M -neglecter/M -neglectfulness/SM -neglectful/YP -neglect/SDRG -negligee/SM -negligence/MS -negligent/Y -negligibility/M -negligible -negligibly -negotiability/MS -negotiable/A -negotiant/M -negotiate/ASDXGN -negotiation/MA -negotiator/MS -Negress/MS -negritude/MS -Negritude/S -Negroes -negroid -Negroid/S -Negro/M -neg/S -Nehemiah/M -Nehru/M -neighbored/U -neighborer/M -neighborhood/SM -neighborlinesses -neighborliness/UM -neighborly/UP -neighbor/SMRDYZGJ -neigh/MDG -neighs -Neila/M -Neile/M -Neilla/M -Neille/M -Neill/M -Neil/SM -neither -Nelda/M -Nelia/M -Nelie/M -Nelle/M -Nellie/M -Nelli/M -Nell/M -Nelly/M -Nelsen/M -Nels/N -Nelson/M -nelson/MS -nematic -nematode/SM -Nembutal/M -nemeses -nemesis -Nemesis/M -neoclassical -neoclassicism/MS -neoclassic/M -neocolonialism/MS -neocortex/M -neodymium/MS -Neogene -neolithic -Neolithic/M -neologism/SM -neomycin/M -neonatal/Y -neonate/MS -neon/DMS -neophyte/MS -neoplasm/SM -neoplastic -neoprene/SM -Nepalese -Nepali/MS -Nepal/M -nepenthe/MS -nephew/MS -nephrite/SM -nephritic -nephritides -nephritis/M -nepotism/MS -nepotist/S -Neptune/M -neptunium/MS -nerd/S -nerdy/RT -Nereid/M -Nerf/M -Nerissa/M -Nerita/M -Nero/M -Neron/M -Nerta/M -Nerte/M -Nertie/M -Nerti/M -Nert/M -Nerty/M -Neruda/M -nervelessness/SM -nerveless/YP -nerve's -nerve/UGSD -nerviness/SM -nerving/M -nervousness/SM -nervous/PY -nervy/TPR -Nessa/M -Nessie/M -Nessi/M -Nessy/M -Nesta/M -nester/M -Nester/M -Nestle/M -nestler/M -nestle/RSDG -nestling/M -Nestorius/M -Nestor/M -nest/RDGSBM -netball/M -nether -Netherlander/SM -Netherlands/M -nethermost -netherworld/S -Netscape/M -net/SM -Netta/M -Nettie/M -Netti/M -netting/M -nett/JGRDS -Nettle/M -nettle/MSDG -nettlesome -Netty/M -network/SJMDG -Netzahualcoyotl/M -Neumann/M -neuralgia/MS -neuralgic -neural/Y -neurasthenia/MS -neurasthenic/S -neuritic/S -neuritides -neuritis/M -neuroanatomy -neurobiology/M -neurological/Y -neurologist/MS -neurology/SM -neuromuscular -neuronal -neurone/S -neuron/MS -neuropathology/M -neurophysiology/M -neuropsychiatric -neuroses -neurosis/M -neurosurgeon/MS -neurosurgery/SM -neurotically -neurotic/S -neurotransmitter/S -neuter/JZGRD -neutralise's -neutralism/MS -neutralist/S -neutrality/MS -neutralization/MS -neutralized/U -neutralize/GZSRD -neutral/PYS -neutrino/MS -neutron/MS -neut/ZR -Nevada/M -Nevadan/S -Nevadian/S -Neva/M -never -nevermore -nevertheless -nevi -Nevile/M -Neville/M -Nevil/M -Nevin/SM -Nevis/M -Nev/M -Nevsa/M -Nevsky/M -nevus/M -Newark/M -newbie/S -newborn/S -Newbury/M -Newburyport/M -Newcastle/M -newcomer/MS -newed/A -Newell/M -newel/MS -newer/A -newfangled -newfound -newfoundland -Newfoundlander/M -Newfoundland/SRMZ -newish -newline/SM -newlywed/MS -Newman/M -newness/MS -Newport/M -news/A -newsagent/MS -newsboy/SM -newscaster/M -newscasting/M -newscast/SRMGZ -newsdealer/MS -newsed -newses -newsflash/S -newsgirl/S -newsgroup/SM -newsing -newsletter/SM -NeWS/M -newsman/M -newsmen -newspaperman/M -newspapermen -newspaper/SMGD -newspaperwoman/M -newspaperwomen -newsprint/MS -new/SPTGDRY -newsreader/MS -newsreel/SM -newsroom/S -news's -newsstand/MS -Newsweekly/M -newsweekly/S -Newsweek/MY -newswire -newswoman/M -newswomen -newsworthiness/SM -newsworthy/RPT -newsy/TRS -newt/MS -Newtonian -Newton/M -newton/SM -Nexis/M -next -nexus/SM -Neysa/M -NF -NFC -NFL -NFS -Ngaliema/M -Nguyen/M -NH -NHL -niacin/SM -Niagara/M -Niall/M -Nial/M -Niamey/M -nibbed -nibbing -nibbler/M -nibble/RSDGZ -Nibelung/M -nib/SM -Nicaean -Nicaragua/M -Nicaraguan/S -Niccolo/M -Nice/M -Nicene -niceness/MS -nicety/MS -nice/YTPR -niche/SDGM -Nicholas -Nichole/M -Nicholle/M -Nichol/MS -Nicholson/M -nichrome -nickelodeon/SM -nickel/SGMD -nicker/GD -Nickey/M -nick/GZRDMS -Nickie/M -Nicki/M -Nicklaus/M -Nick/M -nicknack's -nickname/MGDRS -nicknamer/M -Nickolai/M -Nickola/MS -Nickolaus/M -Nicko/M -Nicky/M -Nicobar/M -Nicodemus/M -Nicolai/MS -Nicola/MS -Nicolea/M -Nicole/M -Nicolette/M -Nicoli/MS -Nicolina/M -Nicoline/M -Nicolle/M -Nicol/M -Nico/M -Nicosia/M -nicotine/MS -Niebuhr/M -niece/MS -Niel/MS -Nielsen/M -Niels/N -Nielson/M -Nietzsche/M -Nieves/M -nifty/TRS -Nigel/M -Nigeria/M -Nigerian/S -Nigerien -Niger/M -niggardliness/SM -niggardly/P -niggard/SGMDY -nigger/SGDM! -niggler/M -niggle/RSDGZJ -niggling/Y -nigh/RDGT -nighs -nightcap/SM -nightclothes -nightclubbed -nightclubbing -nightclub/MS -nightdress/MS -nightfall/SM -nightgown/MS -nighthawk/MS -nightie/MS -Nightingale/M -nightingale/SM -nightlife/MS -nightlong -nightmare/MS -nightmarish/Y -nightshade/SM -nightshirt/MS -night/SMYDZ -nightspot/MS -nightstand/SM -nightstick/S -nighttime/S -nightwear/M -nighty's -NIH -nihilism/MS -nihilistic -nihilist/MS -Nijinsky/M -Nikaniki/M -Nike/M -Niki/M -Nikita/M -Nikkie/M -Nikki/M -Nikko/M -Nikolai/M -Nikola/MS -Nikolaos/M -Nikolaus/M -Nikolayev's -Nikoletta/M -Nikolia/M -Nikolos/M -Niko/MS -Nikon/M -Nile/SM -nilled -nilling -Nil/MS -nil/MYS -nilpotent -Nilsen/M -Nils/N -Nilson/M -Nilsson/M -Ni/M -nimbi -nimbleness/SM -nimble/TRP -nimbly -nimbus/DM -NIMBY -Nimitz/M -Nimrod/MS -Nina/M -nincompoop/MS -ninefold -nine/MS -ninepence/M -ninepin/S -ninepins/M -nineteen/SMH -nineteenths -ninetieths -Ninetta/M -Ninette/M -ninety/MHS -Nineveh/M -ninja/S -Ninnetta/M -Ninnette/M -ninny/SM -Ninon/M -Nintendo/M -ninth -ninths -Niobe/M -niobium/MS -nipped -nipper/DMGS -nippiness/S -nipping/Y -nipple/GMSD -Nipponese -Nippon/M -nippy/TPR -nip/S -Nirenberg/M -nirvana/MS -Nirvana/S -nisei -Nisei/MS -Nissa/M -Nissan/M -Nisse/M -Nissie/M -Nissy/M -Nita/M -niter/M -nitpick/DRSJZG -nitrate/MGNXSD -nitration/M -nitric -nitride/MGS -nitriding/M -nitrification/SM -nitrite/MS -nitrocellulose/MS -nitrogenous -nitrogen/SM -nitroglycerin/MS -nitrous -nitwit/MS -nit/ZSMR -Niven/M -nixer/M -nix/GDSR -Nixie/M -Nixon/M -NJ -Nkrumah/M -NLRB -nm -NM -no/A -NOAA -Noach/M -Noah/M -Noak/M -Noami/M -Noam/M -Nobelist/SM -nobelium/MS -Nobel/M -Nobe/M -Nobie/M -nobility/MS -Noble/M -nobleman/M -noblemen -nobleness/SM -noblesse/M -noble/TPSR -noblewoman -noblewomen -nob/MY -nobody/MS -Noby/M -nocturnal/SY -nocturne/SM -nodal/Y -nodded -nodding -noddle/MSDG -noddy/M -node/MS -NoDoz/M -nod/SM -nodular -nodule/SM -Noelani/M -Noella/M -Noelle/M -Noell/M -Noellyn/M -Noel/MS -noel/S -Noelyn/M -Noe/M -Noemi/M -noes/S -noggin/SM -nohow -noise/GMSD -noiselessness/SM -noiseless/YP -noisemaker/M -noisemake/ZGR -noisily -noisiness/MS -noisome -noisy/TPR -Nola/M -Nolana/M -Noland/M -Nolan/M -Nolie/M -Nollie/M -Noll/M -Nolly/M -No/M -nomadic -nomad/SM -Nome/M -nomenclature/MS -Nomi/M -nominalized -nominal/K -nominally -nominals -nominate/CDSAXNG -nomination/MAC -nominative/SY -nominator/CSM -nominee/MS -non -nonabrasive -nonabsorbent/S -nonacademic/S -nonacceptance/MS -nonacid/MS -nonactive -nonadaptive -nonaddictive -nonadhesive -nonadjacent -nonadjustable -nonadministrative -nonage/MS -nonagenarian/MS -nonaggression/SM -nonagricultural -Nonah/M -nonalcoholic/S -nonaligned -nonalignment/SM -nonallergic -Nona/M -nonappearance/MS -nonassignable -nonathletic -nonattendance/SM -nonautomotive -nonavailability/SM -nonbasic -nonbeliever/SM -nonbelligerent/S -nonblocking -nonbreakable -nonburnable -nonbusiness -noncaloric -noncancerous -noncarbohydrate/M -nonce/MS -nonchalance/SM -nonchalant/YP -nonchargeable -nonclerical/S -nonclinical -noncollectable -noncombatant/MS -noncombustible/S -noncommercial/S -noncommissioned -noncommittal/Y -noncom/MS -noncommunicable -noncompeting -noncompetitive -noncompliance/MS -noncomplying/S -noncomprehending -nonconducting -nonconductor/MS -nonconforming -nonconformist/SM -nonconformity/SM -nonconsecutive -nonconservative -nonconstructive -noncontagious -noncontiguous -noncontinuous -noncontributing -noncontributory -noncontroversial -nonconvertible -noncooperation/SM -noncorroding/S -noncorrosive -noncredit -noncriminal/S -noncritical -noncrystalline -noncumulative -noncustodial -noncyclic -nondairy -nondecreasing -nondeductible -nondelivery/MS -nondemocratic -nondenominational -nondepartmental -nondepreciating -nondescript/YS -nondestructive/Y -nondetachable -nondeterminacy -nondeterminate/Y -nondeterminism -nondeterministic -nondeterministically -nondisciplinary -nondisclosure/SM -nondiscrimination/SM -nondiscriminatory -nondramatic -nondrinker/SM -nondrying -nondurable -noneconomic -noneducational -noneffective/S -nonelastic -nonelectrical -nonelectric/S -nonemergency -nonempty -nonenforceable -nonentity/MS -nonequivalence/M -nonequivalent/S -none/S -nones/M -nonessential/S -nonesuch/SM -nonetheless -nonevent/MS -nonexchangeable -nonexclusive -nonexempt -nonexistence/MS -nonexistent -nonexplosive/S -nonextensible -nonfactual -nonfading -nonfat -nonfatal -nonfattening -nonferrous -nonfictional -nonfiction/SM -nonflammable -nonflowering -nonfluctuating -nonflying -nonfood/M -nonfreezing -nonfunctional -nongovernmental -nongranular -nonhazardous -nonhereditary -nonhuman -nonidentical -Nonie/M -Noni/M -noninclusive -nonindependent -nonindustrial -noninfectious -noninflammatory -noninflationary -noninflected -nonintellectual/S -noninteracting -noninterchangeable -noninterference/MS -nonintervention/SM -nonintoxicating -nonintuitive -noninvasive -nonionic -nonirritating -nonjudgmental -nonjudicial -nonlegal -nonlethal -nonlinearity/MS -nonlinear/Y -nonlinguistic -nonliterary -nonliving -nonlocal -nonmagical -nonmagnetic -nonmalignant -nonmember/SM -nonmetallic -nonmetal/MS -nonmigratory -nonmilitant/S -nonmilitary -Nonnah/M -Nonna/M -nonnarcotic/S -nonnative/S -nonnegative -nonnegotiable -nonnuclear -nonnumerical/S -nonobjective -nonobligatory -nonobservance/MS -nonobservant -nonoccupational -nonoccurence -nonofficial -nonogenarian -nonoperational -nonoperative -nonorthogonal -nonorthogonality -nonparallel/S -nonparametric -nonpareil/SM -nonparticipant/SM -nonparticipating -nonpartisan/S -nonpaying -nonpayment/SM -nonperformance/SM -nonperforming -nonperishable/S -nonperson/S -nonperturbing -nonphysical/Y -nonplus/S -nonplussed -nonplussing -nonpoisonous -nonpolitical -nonpolluting -nonporous -nonpracticing -nonprejudicial -nonprescription -nonprocedural/Y -nonproductive -nonprofessional/S -nonprofit/SB -nonprogrammable -nonprogrammer -nonproliferation/SM -nonpublic -nonpunishable -nonracial -nonradioactive -nonrandom -nonreactive -nonreciprocal/S -nonreciprocating -nonrecognition/SM -nonrecoverable -nonrecurring -nonredeemable -nonreducing -nonrefillable -nonrefundable -nonreligious -nonrenewable -nonrepresentational -nonresidential -nonresident/SM -nonresidual -nonresistance/SM -nonresistant/S -nonrespondent/S -nonresponse -nonrestrictive -nonreturnable/S -nonrhythmic -nonrigid -nonsalaried -nonscheduled -nonscientific -nonscoring -nonseasonal -nonsectarian -nonsecular -nonsegregated -nonsense/MS -nonsensicalness/M -nonsensical/PY -nonsensitive -nonsexist -nonsexual -nonsingular -nonskid -nonslip -nonsmoker/SM -nonsmoking -nonsocial -nonspeaking -nonspecialist/MS -nonspecializing -nonspecific -nonspiritual/S -nonstaining -nonstandard -nonstarter/SM -nonstick -nonstop -nonstrategic -nonstriking -nonstructural -nonsuccessive -nonsupervisory -nonsupport/GS -nonsurgical -nonsustaining -nonsympathizer/M -nontarnishable -nontaxable/S -nontechnical/Y -nontenured -nonterminal/MS -nonterminating -nontermination/M -nontheatrical -nonthinking/S -nonthreatening -nontoxic -nontraditional -nontransferable -nontransparent -nontrivial -nontropical -nonuniform -nonunion/S -nonuser/SM -nonvenomous -nonverbal/Y -nonveteran/MS -nonviable -nonviolence/SM -nonviolent/Y -nonvirulent -nonvocal -nonvocational -nonvolatile -nonvolunteer/S -nonvoter/MS -nonvoting -nonwhite/SM -nonworking -nonyielding -nonzero -noodle/GMSD -nook/MS -noonday/MS -noon/GDMS -nooning/M -noontide/MS -noontime/MS -noose/SDGM -nope/S -NORAD/M -noradrenalin -noradrenaline/M -Norah/M -Nora/M -Norbert/M -Norberto/M -Norbie/M -Norby/M -Nordhoff/M -Nordic/S -Nordstrom/M -Norean/M -Noreen/M -Norene/M -Norfolk/M -nor/H -Norina/M -Norine/M -normalcy/MS -normality/SM -normalization/A -normalizations -normalization's -normalized/AU -normalizes/AU -normalize/SRDZGB -normal/SY -Norma/M -Normand/M -Normandy/M -Norman/SM -normativeness/M -normative/YP -Normie/M -norm/SMGD -Normy/M -Norplant -Norrie/M -Norri/SM -Norristown/M -Norry/M -Norse -Norseman/M -Norsemen -Northampton/M -northbound -northeastern -northeaster/YM -Northeast/SM -northeastward/S -northeast/ZSMR -northerly/S -norther/MY -Northerner/M -northernmost -northern/RYZS -Northfield/M -northing/M -northland -North/M -northmen -north/MRGZ -Northrop/M -Northrup/M -norths -Norths -Northumberland/M -northward/S -northwestern -northwester/YM -northwest/MRZS -Northwest/MS -northwestward/S -Norton/M -Norwalk/M -Norway/M -Norwegian/S -Norwich/M -Norw/M -nosebag/M -nosebleed/SM -nosecone/S -nosedive/DSG -nosed/V -nosegay/MS -nose/M -Nosferatu/M -nos/GDS -nosh/MSDG -nosily -nosiness/MS -nosing/M -nostalgia/SM -nostalgically -nostalgic/S -Nostradamus/M -Nostrand/M -nostril/SM -nostrum/SM -nosy/SRPMT -notability/SM -notableness/M -notable/PS -notably -notarial -notarization/S -notarize/DSG -notary/MS -notate/VGNXSD -notational/CY -notation/CMSF -notative/CF -notch/MSDG -not/DRGB -notebook/MS -note/CSDFG -notedness/M -noted/YP -notepad/S -notepaper/MS -note's -noteworthiness/SM -noteworthy/P -nothingness/SM -nothing/PS -noticeable/U -noticeably -noticeboard/S -noticed/U -notice/MSDG -notifiable -notification/M -notifier/M -notify/NGXSRDZ -notional/Y -notion/MS -notoriety/S -notoriousness/M -notorious/YP -Notre/M -Nottingham/M -notwithstanding -Nouakchott/M -nougat/MS -Noumea/M -noun/SMK -nourish/DRSGL -nourished/U -nourisher/M -nourishment/SM -nous/M -nouveau -nouvelle -novae -Novak/M -Nova/M -nova/MS -novelette/SM -Novelia/M -novelist/SM -novelization/S -novelize/GDS -Novell/SM -novella/SM -novel/SM -novelty/MS -November/SM -novena/SM -novene -Novgorod/M -novice/MS -novitiate/MS -Nov/M -Novocaine/M -Novocain/S -Novokuznetsk/M -Novosibirsk/M -NOW -nowadays -noway/S -Nowell/M -nowhere/S -nowise -now/S -noxiousness/M -noxious/PY -Noyce/M -Noyes/M -nozzle/MS -Np -NP -NRA -nroff/M -N's -NS -n's/CI -NSF -n/T -NT -nth -nuance/SDM -nubbin/SM -nubby/RT -Nubia/M -Nubian/M -nubile -nub/MS -nuclear/K -nuclease/M -nucleated/A -nucleate/DSXNG -nucleation/M -nucleic -nuclei/M -nucleoli -nucleolus/M -nucleon/MS -nucleotide/MS -nucleus/M -nuclide/M -nude/CRS -nudely -nudeness/M -nudest -nudge/GSRD -nudger/M -nudism/MS -nudist/MS -nudity/MS -nugatory -Nugent/M -nugget/SM -nuisance/MS -nuke/DSMG -Nukualofa -null/DSG -nullification/M -nullifier/M -nullify/RSDXGNZ -nullity/SM -nu/M -numbered/UA -numberer/M -numberless -numberplate/M -number/RDMGJ -numbers/A -Numbers/M -numbing/Y -numbness/MS -numb/SGZTYRDP -numbskull's -numerable/IC -numeracy/SI -numeral/YMS -numerate/SDNGX -numerates/I -numeration/M -numerator/MS -numerical/Y -numeric/S -numerological -numerologist/S -numerology/MS -numerousness/M -numerous/YP -numinous/S -numismatic/S -numismatics/M -numismatist/MS -numskull/SM -Nunavut/M -nuncio/SM -Nunez/M -Nunki/M -nun/MS -nunnery/MS -nuptial/S -Nuremberg/M -Nureyev/M -nursemaid/MS -nurser/M -nurseryman/M -nurserymen -nursery/MS -nurse/SRDJGMZ -nursling/M -nurturer/M -nurture/SRDGZM -nus -nutate/NGSD -nutation/M -nutcracker/M -nutcrack/RZ -nuthatch/SM -nutmeat/SM -nutmegged -nutmegging -nutmeg/MS -nut/MS -nutpick/MS -Nutrasweet/M -nutria/SM -nutrient/MS -nutriment/MS -nutritional/Y -nutritionist/MS -nutrition/SM -nutritiousness/MS -nutritious/PY -nutritive/Y -nutshell/MS -nutted -nuttiness/SM -nutting -nutty/TRP -nuzzle/GZRSD -NV -NW -NWT -NY -Nyasa/M -NYC -Nydia/M -Nye/M -Nyerere/M -nylon/SM -nymphet/MS -nymph/M -nympholepsy/M -nymphomaniac/S -nymphomania/MS -nymphs -Nyquist/M -NYSE -Nyssa/M -NZ -o -O -oafishness/S -oafish/PY -oaf/MS -Oahu/M -Oakland/M -Oakley/M -Oakmont/M -oak/SMN -oakum/MS -oakwood -oar/GSMD -oarlock/MS -oarsman/M -oarsmen -oarswoman -oarswomen -OAS -oases -oasis/M -oatcake/MS -oater/M -Oates/M -oath/M -oaths -oatmeal/SM -oat/SMNR -Oaxaca/M -ob -OB -Obadiah/M -Obadias/M -obbligato/S -obduracy/S -obdurateness/S -obdurate/PDSYG -Obediah/M -obedience/EMS -obedient/EY -Obed/M -obeisance/MS -obeisant/Y -obelisk/SM -Oberlin/M -Oberon/M -obese -obesity/MS -obey/EDRGS -obeyer/EM -obfuscate/SRDXGN -obfuscation/M -obfuscatory -Obidiah/M -Obie/M -obi/MDGS -obit/SMR -obituary/SM -obj -objectify/GSDXN -objectionableness/M -objectionable/U -objectionably -objection/SMB -objectiveness/MS -objective/PYS -objectivity/MS -objector/SM -object/SGVMD -objurgate/GNSDX -objurgation/M -oblate/NYPSX -oblation/M -obligate/NGSDXY -obligational -obligation/M -obligatorily -obligatory -obliged/E -obliger/M -obliges/E -oblige/SRDG -obligingness/M -obliging/PY -oblique/DSYGP -obliqueness/S -obliquity/MS -obliterate/VNGSDX -obliteration/M -obliterative/Y -oblivion/MS -obliviousness/MS -oblivious/YP -oblongness/M -oblong/SYP -obloquies -obloquy/M -Ob/MD -obnoxiousness/MS -obnoxious/YP -oboe/SM -oboist/S -obos -O'Brien/M -obs -obscene/RYT -obscenity/MS -obscurantism/MS -obscurantist/MS -obscuration -obscureness/M -obscure/YTPDSRGL -obscurity/MS -obsequies -obsequiousness/S -obsequious/YP -obsequy -observability/M -observable/SU -observably -observance/MS -observantly -observants -observant/U -observational/Y -observation/MS -observatory/MS -observed/U -observer/M -observe/ZGDSRB -observing/Y -obsess/GVDS -obsessional -obsession/MS -obsessiveness/S -obsessive/PYS -obsidian/SM -obsolesce/GSD -obsolescence/S -obsolescent/Y -obsolete/GPDSY -obsoleteness/M -obstacle/SM -obstetrical -obstetrician/SM -obstetric/S -obstetrics/M -obstinacy/SM -obstinateness/M -obstinate/PY -obstreperousness/SM -obstreperous/PY -obstructed/U -obstructer/M -obstructionism/SM -obstructionist/MS -obstruction/SM -obstructiveness/MS -obstructive/PSY -obstruct/RDVGS -obtainable/U -obtainably -obtain/LSGDRB -obtainment/S -obtrude/DSRG -obtruder/M -obtrusion/S -obtrusiveness/MSU -obtrusive/UPY -obtuseness/S -obtuse/PRTY -obverse/YS -obviate/XGNDS -obviousness/SM -obvious/YP -Oby/M -ocarina/MS -O'Casey -Occam/M -occasional/Y -occasion/MDSJG -Occidental/S -occidental/SY -occident/M -Occident/SM -occipital/Y -occlude/GSD -occlusion/MS -occlusive/S -occulter/M -occultism/SM -occult/SRDYG -occupancy/SM -occupant/MS -occupational/Y -occupation/SAM -occupied/AU -occupier/M -occupies/A -occupy/RSDZG -occur/AS -occurred/A -occurrence/SM -occurring/A -oceanfront/MS -oceangoing -Oceania/M -oceanic -ocean/MS -oceanographer/SM -oceanographic -oceanography/SM -oceanology/MS -oceanside -Oceanside/M -Oceanus/M -ocelot/SM -ocher/DMGS -Ochoa/M -o'clock -O'Clock -O'Connell/M -O'Connor/M -Oconomowoc/M -OCR -octagonal/Y -octagon/SM -octahedral -octahedron/M -octal/S -octane/MS -octant/M -octave/MS -Octavia/M -Octavian/M -Octavio/M -Octavius/M -octavo/MS -octennial -octet/SM -octile -octillion/M -Oct/M -October/MS -octogenarian/MS -octopus/SM -octoroon/M -ocular/S -oculist/SM -OD -odalisque/SM -oddball/SM -oddity/MS -oddment/MS -oddness/MS -odd/TRYSPL -Odele/M -Odelia/M -Odelinda/M -Odella/M -Odelle/M -Odell/M -O'Dell/M -ode/MDRS -Ode/MR -Oderberg/MS -Oder/M -Odessa/M -Odets/M -Odetta/M -Odette/M -Odey/M -Odie/M -Odilia/M -Odille/M -Odin/M -odiousness/MS -odious/PY -Odis/M -odium/MS -Odo/M -odometer/SM -Odom/M -O'Donnell/M -odor/DMS -odoriferous -odorless -odorous/YP -ODs -O'Dwyer/M -Ody/M -Odysseus/M -Odyssey/M -odyssey/S -OE -OED -oedipal -Oedipal/Y -Oedipus/M -OEM/M -OEMS -oenology/MS -oenophile/S -o'er -O'Er -Oersted/M -oesophagi -oeuvre/SM -Ofelia/M -Ofella/M -offal/MS -offbeat/MS -offcuts -Offenbach/M -offender/M -offend/SZGDR -offense/MSV -offensively/I -offensiveness/MSI -offensive/YSP -offerer/M -offering/M -offer/RDJGZ -offertory/SM -offhand/D -offhandedness/S -offhanded/YP -officeholder/SM -officemate/S -officer/GMD -officership/S -office/SRMZ -officialdom/SM -officialism/SM -officially/U -official/PSYM -officiant/SM -officiate/XSDNG -officiation/M -officiator/MS -officio -officiousness/MS -officious/YP -offing/M -offish -offload/GDS -offprint/GSDM -offramp -offset/SM -offsetting -offshoot/MS -offshore -offside/RS -offspring/M -offstage/S -off/SZGDRJ -offtrack -Ofilia/M -of/K -often/RT -oftentimes -oft/NRT -ofttimes -Ogbomosho/M -Ogdan/M -Ogden/M -Ogdon/M -Ogilvy/M -ogive/M -Oglethorpe/M -ogle/ZGDSR -ogreish -ogre/MS -ogress/S -oh -OH -O'Hara -O'Hare/M -O'Higgins -Ohioan/S -Ohio/M -ohmic -ohmmeter/MS -ohm/SM -oho/S -ohs -OHSA/M -oilcloth/M -oilcloths -oiler/M -oilfield/MS -oiliness/SM -oilman/M -oil/MDRSZG -oilmen -oilseed/SM -oilskin/MS -oily/TPR -oink/GDS -ointment/SM -Oise/M -OJ -Ojibwa/SM -Okamoto/M -okapi/SM -Okayama/M -okay/M -Okeechobee/M -O'Keeffe -Okefenokee -Okhotsk/M -Okinawa/M -Okinawan/S -Oklahoma/M -Oklahoman/SM -Okla/M -OK/MDG -okra/MS -OKs -Oktoberfest -Olaf/M -Olag/M -Ola/M -Olav/M -Oldenburg/M -olden/DG -Oldfield/M -oldie/MS -oldish -oldness/S -Oldsmobile/M -oldster/SM -Olduvai/M -old/XTNRPS -ol� -oleaginous -oleander/SM -O'Leary/M -olefin/M -Oleg/M -Ole/MV -Olenek/M -Olenka/M -Olen/M -Olenolin/M -oleomargarine/SM -oleo/S -oles -olfactory -Olga/M -Olia/M -oligarchic -oligarchical -oligarch/M -oligarchs -oligarchy/SM -Oligocene -oligopolistic -oligopoly/MS -Olimpia/M -Olin/M -olive/MSR -Olive/MZR -Oliver/M -Olivero/M -Olivette/M -Olivetti/M -Olivia/M -Olivier/M -Olivie/RM -Oliviero/M -Oliy/M -Ollie/M -Olly/M -Olmec -Olmsted/M -Olsen/M -Olson/M -Olva/M -Olvan/M -Olwen/M -Olympe/M -Olympiad/MS -Olympian/S -Olympia/SM -Olympic/S -Olympie/M -Olympus/M -Omaha/SM -Oman/M -Omar/M -ombudsman/M -ombudsmen -Omdurman/M -omega/MS -omelet/SM -omelette's -omen/DMG -Omero/M -omicron/MS -ominousness/SM -ominous/YP -omission/MS -omit/S -omitted -omitting -omnibus/MS -omni/M -omnipotence/SM -Omnipotent -omnipotent/SY -omnipresence/MS -omnipresent/Y -omniscience/SM -omniscient/YS -omnivore/MS -omnivorousness/MS -omnivorous/PY -oms -Omsk/M -om/XN -ON -onanism/M -Onassis/M -oncer/M -once/SR -oncogene/S -oncologist/S -oncology/SM -oncoming/S -Ondrea/M -Oneal/M -Onega/M -Onegin/M -Oneida/SM -O'Neil -O'Neill -oneness/MS -one/NPMSX -oner/M -onerousness/SM -onerous/YP -oneself -onetime -oneupmanship -Onfre/M -Onfroi/M -ongoing/S -Onida/M -onion/GDM -onionskin/MS -onlooker/MS -onlooking -only/TP -Onofredo/M -Ono/M -onomatopoeia/SM -onomatopoeic -onomatopoetic -Onondaga/MS -onrush/GMS -on/RY -ons -Onsager/M -onset/SM -onsetting -onshore -onside -onslaught/MS -Ontarian/S -Ontario/M -Ont/M -onto -ontogeny/SM -ontological/Y -ontology/SM -onus/SM -onward/S -onyx/MS -oodles -ooh/GD -oohs -oolitic -Oona/M -OOo/M -oops/S -Oort/M -ooze/GDS -oozy/RT -opacity/SM -opalescence/S -opalescent/Y -Opalina/M -Opaline/M -Opal/M -opal/SM -opaque/GTPYRSD -opaqueness/SM -opcode/MS -OPEC -Opel/M -opencast -opened/AU -opener/M -openhandedness/SM -openhanded/P -openhearted -opening/M -openness/S -OpenOffice.org/M -opens/A -openwork/MS -open/YRDJGZTP -operable/I -operandi -operand/SM -operant/YS -opera/SM -operate/XNGVDS -operatically -operatic/S -operationalization/S -operationalize/D -operational/Y -operation/M -operative/IP -operatively -operativeness/MI -operatives -operator/SM -operetta/MS -ope/S -Ophelia/M -Ophelie/M -Ophiuchus/M -ophthalmic/S -ophthalmologist/SM -ophthalmology/MS -opiate/GMSD -opine/XGNSD -opinionatedness/M -opinionated/PY -opinion/M -opioid -opium/MS -opossum/SM -opp -Oppenheimer/M -opponent/MS -opportune/IY -opportunism/SM -opportunistic -opportunistically -opportunist/SM -opportunity/MS -oppose/BRSDG -opposed/U -opposer/M -oppositeness/M -opposite/SXYNP -oppositional -opposition/M -oppress/DSGV -oppression/MS -oppressiveness/MS -oppressive/YP -oppressor/MS -opprobrious/Y -opprobrium/SM -Oprah/M -ops -opt/DSG -opthalmic -opthalmologic -opthalmology -optical/Y -optician/SM -optic/S -optics/M -optima -optimality -optimal/Y -optimise's -optimism/SM -optimistic -optimistically -optimist/SM -optimization/SM -optimize/DRSZG -optimized/U -optimizer/M -optimizes/U -optimum/SM -optionality/M -optional/YS -option/GDMS -optoelectronic -optometric -optometrist/MS -optometry/SM -opulence/SM -opulent/Y -opus/SM -op/XGDN -OR -oracle/GMSD -oracular -Oralee/M -Oralia/M -Oralie/M -Oralla/M -Oralle/M -oral/YS -Ora/M -orangeade/MS -Orange/M -orange/MS -orangery/SM -orangutan/MS -Oranjestad/M -Oran/M -orate/SDGNX -oration/M -oratorical/Y -oratorio/MS -orator/MS -oratory/MS -Orazio/M -Orbadiah/M -orbicular -orbiculares -orbital/MYS -orbit/MRDGZS -orb/SMDG -orchard/SM -orchestral/Y -orchestra/MS -orchestrate/GNSDX -orchestrater's -orchestration/M -orchestrator/M -orchid/SM -ordainer/M -ordainment/MS -ordain/SGLDR -ordeal/SM -order/AESGD -ordered/U -orderer -ordering/S -orderless -orderliness/SE -orderly/PS -order's/E -ordinal/S -ordinance/MS -ordinarily -ordinariness/S -ordinary/RSPT -ordinated -ordinate/I -ordinates -ordinate's -ordinating -ordination/SM -ordnance/SM -Ordovician -ordure/MS -oregano/SM -Oreg/M -Oregonian/S -Oregon/M -Orelee/M -Orelia/M -Orelie/M -Orella/M -Orelle/M -Orel/M -Oren/M -Ore/NM -ore/NSM -Oreo -Orestes -organdie's -organdy/MS -organelle/MS -organically/I -organic/S -organismic -organism/MS -organist/MS -organizable/UMS -organizational/MYS -organization/MEAS -organize/AGZDRS -organized/UE -organizer/MA -organizes/E -organizing/E -organ/MS -organometallic -organza/SM -orgasm/GSMD -orgasmic -orgiastic -orgy/SM -Oriana/M -oriel/MS -orientable -Oriental/S -oriental/SY -orientated/A -orientate/ESDXGN -orientates/A -orientation/AMES -orienteering/M -orienter -orient/GADES -orient's -Orient/SM -orifice/MS -orig -origami/MS -originality/SM -originally -original/US -originate/VGNXSD -origination/M -originative/Y -originator/SM -origin/MS -Orin/M -Orinoco/M -oriole/SM -Orion/M -orison/SM -Oriya/M -Orizaba/M -Orkney/M -Orland/M -Orlando/M -Orlan/M -Orleans -Orlick/M -Orlon/SM -Orly/M -ormolu/SM -or/MY -ornamental/SY -ornamentation/SM -ornament/GSDM -ornateness/SM -ornate/YP -orneriness/SM -ornery/PRT -ornithological -ornithologist/SM -ornithology/MS -orographic/M -orography/M -Orono/M -orotund -orotundity/MS -orphanage/MS -orphanhood/M -orphan/SGDM -Orpheus/M -Orphic -Orran/M -Orren/M -Orrin/M -orris/SM -Orr/MN -ors -Orsa/M -Orsola/M -Orson/M -Ortega/M -Ortensia/M -orthodontia/S -orthodontic/S -orthodontics/M -orthodontist/MS -orthodoxies -orthodoxly/U -Orthodox/S -orthodoxy's -orthodox/YS -orthodoxy/U -orthogonality/M -orthogonalization/M -orthogonalized -orthogonal/Y -orthographic -orthographically -orthography/MS -orthonormal -orthopedic/S -orthopedics/M -orthopedist/SM -orthophosphate/MS -orthorhombic -Ortiz/M -Orton/M -Orval/M -Orville/M -Orv/M -Orwellian -Orwell/M -o's -Osage/SM -Osaka/M -Osbert/M -Osborne/M -Osborn/M -Osbourne/M -Osbourn/M -Oscar/SM -Osceola/M -oscillate/SDXNG -oscillation/M -oscillator/SM -oscillatory -oscilloscope/SM -osculate/XDSNG -osculation/M -Osgood/M -OSHA -Oshawa/M -O'Shea/M -Oshkosh/M -osier/MS -Osiris/M -Oslo/M -Os/M -OS/M -Osman/M -osmium/MS -Osmond/M -osmoses -osmosis/M -osmotic -Osmund/M -osprey/SM -osseous/Y -Ossie/M -ossification/M -ossify/NGSDX -ostensible -ostensibly -ostentation/MS -ostentatiousness/M -ostentatious/PY -osteoarthritides -osteoarthritis/M -osteology/M -osteopathic -osteopath/M -osteopaths -osteopathy/MS -osteoporoses -osteoporosis/M -ostracise's -ostracism/MS -ostracize/GSD -Ostrander/M -ostrich/MS -Ostrogoth/M -Ostwald/M -O'Sullivan/M -Osvaldo/M -Oswald/M -Oswell/M -OT -OTB -OTC -Otes -Otha/M -Othelia/M -Othella/M -Othello/M -otherness/M -other/SMP -otherwise -otherworldly/P -otherworld/Y -Othilia/M -Othilie/M -Otho/M -otiose -Otis/M -OTOH -Ottawa/MS -otter/DMGS -Ottilie/M -Otto/M -Ottoman -ottoman/MS -Ouagadougou/M -oubliette/SM -ouch/SDG -oughtn't -ought/SGD -Ouija/MS -ounce/MS -our/S -ourself -ourselves -ouster/M -oust/RDGZS -outage/MS -outargue/GDS -outback/MRS -outbalance/GDS -outbidding -outbid/S -outboard/S -outboast/GSD -outbound/S -outbreak/SMG -outbroke -outbroken -outbuilding/SM -outburst/MGS -outcast/GSM -outclass/SDG -outcome/SM -outcropped -outcropping/S -outcrop/SM -outcry/MSDG -outdated/P -outdid -outdistance/GSD -outdoes -outdo/G -outdone -outdoor/S -outdoorsy -outdraw/GS -outdrawn -outdrew -outermost -outerwear/M -outface/SDG -outfall/MS -outfielder/M -outfield/RMSZ -outfight/SG -outfit/MS -outfitted -outfitter/MS -outfitting -outflank/SGD -outflow/SMDG -outfought -outfox/GSD -outgeneraled -outgoes -outgo/GJ -outgoing/P -outgrew -outgrip -outgrow/GSH -outgrown -outgrowth/M -outgrowths -outguess/SDG -outhit/S -outhitting -outhouse/SM -outing/M -outlaid -outlander/M -outlandishness/MS -outlandish/PY -outland/ZR -outlast/GSD -outlawry/M -outlaw/SDMG -outlay/GSM -outlet/SM -outliers -outline/SDGM -outlive/GSD -outlook/MDGS -outlying -outmaneuver/GSD -outmatch/SDG -outmigration -outmoded -outness/M -outnumber/GDS -outpaced -outpatient/SM -outperform/DGS -out/PJZGSDR -outplacement/S -outplay/GDS -outpoint/GDS -outpost/SM -outpouring/M -outpour/MJG -outproduce/GSD -output/SM -outputted -outputting -outrace/GSD -outrage/GSDM -outrageousness/M -outrageous/YP -outran -outrank/GSD -outr� -outreach/SDG -outrider/MS -outrigger/SM -outright/Y -outrunning -outrun/S -outscore/GDS -outsell/GS -outset/MS -outsetting -outshine/SG -outshone -outshout/GDS -outsider/PM -outside/ZSR -outsize/S -outskirt/SM -outsmart/SDG -outsold -outsource/SDJG -outspend/SG -outspent -outspoke -outspokenness/SM -outspoken/YP -outspread/SG -outstanding/Y -outstate/NX -outstation/M -outstay/SDG -outstretch/GSD -outstripped -outstripping -outstrip/S -outtake/S -outvote/GSD -outwardness/M -outward/SYP -outwear/SG -outweigh/GD -outweighs -outwit/S -outwitted -outwitting -outwore -outwork/SMDG -outworn -ouzo/SM -oval/MYPS -ovalness/M -ova/M -ovarian -ovary/SM -ovate/SDGNX -ovation/GMD -ovenbird/SM -oven/MS -overabundance/MS -overabundant -overachieve/SRDGZ -overact/DGVS -overage/S -overaggressive -overallocation -overall/SM -overambitious -overanxious -overarching -overarm/GSD -overate -overattentive -overawe/GDS -overbalance/DSG -overbear/GS -overbearingness/M -overbearing/YP -overbidding -overbid/S -overbite/MS -overblown -overboard -overbold -overbook/SDG -overbore -overborne -overbought -overbuild/GS -overbuilt -overburdening/Y -overburden/SDG -overbuy/GS -overcame -overcapacity/M -overcapitalize/DSG -overcareful -overcast/GS -overcasting/M -overcautious -overcerebral -overcharge/DSG -overcloud/DSG -overcoating/M -overcoat/SMG -overcomer/M -overcome/RSG -overcommitment/S -overcompensate/XGNDS -overcompensation/M -overcomplexity/M -overcomplicated -overconfidence/MS -overconfident/Y -overconscientious -overconsumption/M -overcook/SDG -overcooled -overcorrection -overcritical -overcrowd/DGS -overcurious -overdecorate/SDG -overdependent -overdetermined -overdevelop/SDG -overdid -overdoes -overdo/G -overdone -overdose/DSMG -overdraft/SM -overdraw/GS -overdrawn -overdress/GDS -overdrew -overdrive/GSM -overdriven -overdrove -overdubbed -overdubbing -overdub/S -overdue -overeagerness/M -overeager/PY -overeater/M -overeat/GNRS -overeducated -overemotional -overemphases -overemphasis/M -overemphasize/GZDSR -overenthusiastic -overestimate/DSXGN -overestimation/M -overexcite/DSG -overexercise/SDG -overexert/GDS -overexertion/SM -overexploitation -overexploited -overexpose/GDS -overexposure/SM -overextend/DSG -overextension -overfall/M -overfed -overfeed/GS -overfill/GDS -overfishing -overflew -overflight/SM -overflow/DGS -overflown -overfly/GS -overfond -overfull -overgeneralize/GDS -overgenerous -overgraze/SDG -overgrew -overground -overgrow/GSH -overgrown -overgrowth/M -overgrowths -overhand/DGS -overhang/GS -overhasty -overhaul/GRDJS -overhead/S -overheard -overhearer/M -overhear/SRG -overheat/SGD -overhung -overincredulous -overindulgence/SM -overindulgent -overindulge/SDG -overinflated -overjoy/SGD -overkill/SDMG -overladed -overladen -overlaid -overlain -overland/S -overlap/MS -overlapped -overlapping -overlarge -overlay/GS -overleaf -overlie -overload/SDG -overlong -overlook/DSG -overlord/DMSG -overloud -overly/GRS -overmanning -overmaster/GSD -overmatching -overmodest -overmuch/S -overnice -overnight/SDRGZ -overoptimism/SM -overoptimistic -overpaid -overparticular -overpass/GMSD -overpay/LSG -overpayment/M -overplay/SGD -overpopulate/DSNGX -overpopulation/M -overpopulous -overpower/GSD -overpowering/Y -overpraise/DSG -overprecise -overpressure -overprice/SDG -overprint/DGS -overproduce/SDG -overproduction/S -overprotect/GVDS -overprotection/M -overqualified -overran -overrate/DSG -overreach/DSRG -overreaction/SM -overreact/SGD -overred -overrefined -overrepresented -overridden -overrider/M -override/RSG -overripe -overrode -overrule/GDS -overrunning -overrun/S -oversample/DG -oversaturate -oversaw -oversea/S -overseeing -overseen -overseer/M -oversee/ZRS -oversell/SG -oversensitiveness/S -oversensitive/P -oversensitivity -oversexed -overshadow/GSD -overshoe/SM -overshoot/SG -overshot/S -oversight/SM -oversimple -oversimplification/M -oversimplify/GXNDS -oversize/GS -oversleep/GS -overslept -oversoftness/M -oversoft/P -oversold -overspecialization/MS -overspecialize/GSD -overspend/SG -overspent -overspill/DMSG -overspread/SG -overstaffed -overstatement/SM -overstate/SDLG -overstay/GSD -overstepped -overstepping -overstep/S -overstimulate/DSG -overstock/SGD -overstraining -overstressed -overstretch/D -overstrict -overstrike/GS -overstrung -overstuffed -oversubscribe/SDG -oversubtle -oversupply/MDSG -oversuspicious -overtaken -overtake/RSZG -overtax/DSG -overthrew -overthrow/GS -overthrown -overtightened -overtime/MGDS -overtire/DSG -overtone/MS -overtook -overt/PY -overture/DSMG -overturn/SDG -overuse/DSG -overvalue/GSD -overview/MS -overweening -overweight/GSD -overwhelm/GDS -overwhelming/Y -overwinter/SDG -overwork/GSD -overwrap -overwrite/SG -overwritten -overwrote -overwrought -over/YGS -overzealousness/M -overzealous/P -Ovid/M -oviduct/SM -oviform -oviparous -ovoid/S -ovular -ovulate/GNXDS -ovulatory -ovule/MS -ovum/MS -ow/DYG -Owen/MS -owe/S -owlet/SM -owl/GSMDR -owlishness/M -owlish/PY -owned/U -own/EGDS -ownership/MS -owner/SM -oxalate/M -oxalic -oxaloacetic -oxblood/S -oxbow/SM -oxcart/MS -oxen/M -oxford/MS -Oxford/MS -oxidant/SM -oxidate/NVX -oxidation/M -oxidative/Y -oxide/SM -oxidization/MS -oxidized/U -oxidize/JDRSGZ -oxidizer/M -oxidizes/A -ox/MNS -Oxnard -Oxonian -oxtail/M -Oxus/M -oxyacetylene/MS -oxygenate/XSDMGN -oxygenation/M -oxygen/MS -oxyhydroxides -oxymora -oxymoron/M -oyster/GSDM -oystering/M -oz -Ozark/SM -Oz/M -ozone/SM -Ozymandias/M -Ozzie/M -Ozzy/M -P -PA -Pablo/M -Pablum/M -pablum/S -Pabst/M -pabulum/SM -PAC -pace/DRSMZG -Pace/M -pacemaker/SM -pacer/M -pacesetter/MS -pacesetting -Pacheco/M -pachyderm/MS -pachysandra/MS -pacific -pacifically -pacification/M -Pacific/M -pacifier/M -pacifism/MS -pacifistic -pacifist/MS -pacify/NRSDGXZ -package/ARSDG -packaged/U -packager/S -package's -packages/U -packaging/SM -Packard/SM -packed/AU -packer/MUS -packet/MSDG -pack/GZSJDRMB -packhorse/M -packinghouse/S -packing/M -packsaddle/SM -Packston/M -packs/UA -Packwood/M -Paco/M -Pacorro/M -pact/SM -Padang/M -padded/U -Paddie/M -padding/SM -paddle/MZGRSD -paddler/M -paddock/SDMG -Paddy/M -paddy/SM -Padget/M -Padgett/M -Padilla/M -padlock/SGDM -pad/MS -Padraic/M -Padraig/M -padre/MS -Padrewski/M -Padriac/M -paean/MS -paediatrician/MS -paediatrics/M -paedophilia's -paella/SM -paeony/M -Paganini/M -paganism/MS -pagan/SM -pageantry/SM -pageant/SM -pageboy/SM -paged/U -pageful -Page/M -page/MZGDRS -pager/M -paginate/DSNGX -Paglia/M -pagoda/MS -Pahlavi/M -paid/AU -Paige/M -pailful/SM -Pail/M -pail/SM -Paine/M -painfuller -painfullest -painfulness/MS -painful/YP -pain/GSDM -painkiller/MS -painkilling -painlessness/S -painless/YP -painstaking/SY -paint/ADRZGS -paintbox/M -paintbrush/SM -painted/U -painterly/P -painter/YM -painting/SM -paint's -paintwork -paired/UA -pair/JSDMG -pairs/A -pairwise -paisley/MS -pajama/MDS -Pakistani/S -Pakistan/M -palace/MS -paladin/MS -palaeolithic -palaeontologists -palaeontology/M -palanquin/MS -palatability/M -palatableness/M -palatable/P -palatalization/MS -palatalize/SDG -palatal/YS -palate/BMS -palatial/Y -palatinate/SM -Palatine -palatine/S -palaver/GSDM -paleface/SM -Palembang/M -paleness/S -Paleocene -Paleogene -paleographer/SM -paleography/SM -paleolithic -Paleolithic -paleontologist/S -paleontology/MS -Paleozoic -Palermo/M -pale/SPY -Palestine/M -Palestinian/S -Palestrina/M -palette/MS -Paley/M -palfrey/MS -palimony/S -palimpsest/MS -palindrome/MS -palindromic -paling/M -palisade/MGSD -Palisades/M -palish -Palladio/M -palladium/SM -pallbearer/SM -palletized -pallet/SMGD -pall/GSMD -palliate/SDVNGX -palliation/M -palliative/SY -pallidness/MS -pallid/PY -Pall/M -pallor/MS -palmate -palmer/M -Palmer/M -Palmerston/M -palmetto/MS -palm/GSMDR -palmist/MS -palmistry/MS -Palm/MR -Palmolive/M -palmtop/S -Palmyra/M -palmy/RT -Palo/M -Paloma/M -Palomar/M -palomino/MS -palpable -palpably -palpate/SDNGX -palpation/M -palpitate/NGXSD -palpitation/M -pal/SJMDRYTG -palsy/GSDM -paltriness/SM -paltry/TRP -paludal -Pa/M -Pamela/M -Pamelina/M -Pamella/M -pa/MH -Pamirs -Pam/M -Pammie/M -Pammi/M -Pammy/M -pampas/M -pamperer/M -pamper/RDSG -Pampers -pamphleteer/DMSG -pamphlet/SM -panacea/MS -panache/MS -Panama/MS -Panamanian/S -panama/S -pancake/MGSD -Panchito/M -Pancho/M -panchromatic -pancreas/MS -pancreatic -panda/SM -pandemic/S -pandemonium/SM -pander/ZGRDS -Pandora/M -panegyric/SM -pane/KMS -paneling/M -panelist/MS -panelization -panelized -panel/JSGDM -Pangaea/M -pang/GDMS -pangolin/M -panhandle/RSDGMZ -panicked -panicking -panicky/RT -panic/SM -panier's -panjandrum/M -Pankhurst/M -Pan/M -Panmunjom/M -panned -pannier/SM -panning -panoply/MSD -panorama/MS -panoramic -panpipes -Pansie/M -pan/SMD -Pansy/M -pansy/SM -Pantagruel/M -Pantaloon/M -pantaloons -pant/GDS -pantheism/MS -pantheistic -pantheist/S -pantheon/MS -panther/SM -pantie/SM -pantiled -pantograph/M -pantomime/SDGM -pantomimic -pantomimist/SM -pantry/SM -pantsuit/SM -pantyhose -pantyliner -pantywaist/SM -Panza/M -Paola/M -Paoli/M -Paolina/M -Paolo/M -papacy/SM -Papagena/M -Papageno/M -papal/Y -papa/MS -paparazzi -papaw/SM -papaya/MS -paperback/GDMS -paperboard/MS -paperboy/SM -paperer/M -papergirl/SM -paper/GJMRDZ -paperhanger/SM -paperhanging/SM -paperiness/M -paperless -paperweight/MS -paperwork/SM -papery/P -papillae -papilla/M -papillary -papist/MS -papoose/SM -Pappas/M -papped -papping -pappy/RST -paprika/MS -pap/SZMNR -papyri -papyrus/M -Paquito/M -parable/MGSD -parabola/MS -parabolic -paraboloidal/M -paraboloid/MS -Paracelsus/M -paracetamol/M -parachuter/M -parachute/RSDMG -parachutist/MS -Paraclete/M -parader/M -parade/RSDMZG -paradigmatic -paradigm/SM -paradisaic -paradisaical -Paradise/M -paradise/MS -paradoxic -paradoxicalness/M -paradoxical/YP -paradox/MS -paraffin/GSMD -paragon/SGDM -paragrapher/M -paragraph/MRDG -paragraphs -Paraguayan/S -Paraguay/M -parakeet/MS -paralegal/S -paralinguistic -parallax/SM -parallel/DSG -paralleled/U -parallelepiped/MS -parallelism/SM -parallelization/MS -parallelize/ZGDSR -parallelogram/MS -paralysis/M -paralytically -paralytic/S -paralyzedly/S -paralyzed/Y -paralyzer/M -paralyze/ZGDRS -paralyzingly/S -paralyzing/Y -paramagnetic -paramagnet/M -Paramaribo/M -paramecia -paramecium/M -paramedical/S -paramedic/MS -parameterization/SM -parameterize/BSDG -parameterized/U -parameterless -parameter/SM -parametric -parametrically -parametrization -parametrize/DS -paramilitary/S -paramount/S -paramour/MS -para/MS -Paramus/M -Paran� -paranoiac/S -paranoia/SM -paranoid/S -paranormal/SY -parapet/SMD -paraphernalia -paraphrase/GMSRD -paraphraser/M -paraplegia/MS -paraplegic/S -paraprofessional/SM -parapsychologist/S -parapsychology/MS -paraquat/S -parasite/SM -parasitically -parasitic/S -parasitism/SM -parasitologist/M -parasitology/M -parasol/SM -parasympathetic/S -parathion/SM -parathyroid/S -paratrooper/M -paratroop/RSZ -paratyphoid/S -parboil/DSG -parceled/U -parceling/M -parcel/SGMD -Parcheesi/M -parch/GSDL -parchment/SM -PARC/M -pardonableness/M -pardonable/U -pardonably/U -pardoner/M -pardon/ZBGRDS -paregoric/SM -parentage/MS -parental/Y -parenteral -parentheses -parenthesis/M -parenthesize/GSD -parenthetic -parenthetical/Y -parenthood/MS -parent/MDGJS -pare/S -paresis/M -pares/S -Pareto/M -parfait/SM -pariah/M -pariahs -parietal/S -parimutuel/S -paring/M -parishioner/SM -parish/MS -Parisian/SM -Paris/M -parity/ESM -parka/MS -Parke/M -Parker/M -Parkersburg/M -park/GJZDRMS -Parkhouse/M -parking/M -Parkinson/M -parkish -parkland/M -parklike -Parkman -Park/RMS -parkway/MS -parlance/SM -parlay/DGS -parley/MDSG -parliamentarian/SM -parliamentary/U -parliament/MS -Parliament/MS -parlor/SM -parlous -Parmesan/S -parmigiana -Parnassus/SM -Parnell/M -parochialism/SM -parochiality -parochial/Y -parodied/U -parodist/SM -parody/SDGM -parolee/MS -parole/MSDG -paroxysmal -paroxysm/MS -parquetry/SM -parquet/SMDG -parrakeet's -parred -parricidal -parricide/MS -parring -Parrish/M -Parr/M -Parrnell/M -parrot/GMDS -parrotlike -parry/GSD -Parry/M -parse -parsec/SM -parsed/U -Parsee's -parser/M -Parsifal/M -parsimonious/Y -parsimony/SM -pars/JDSRGZ -parsley/MS -parsnip/MS -parsonage/MS -parson/MS -Parsons/M -partaken -partaker/M -partake/ZGSR -part/CDGS -parterre/MS -parter/S -parthenogeneses -parthenogenesis/M -Parthenon/M -Parthia/M -partiality/MS -partial/SY -participant/MS -participate/NGVDSX -participation/M -participator/S -participatory -participial/Y -participle/MS -particleboard/S -particle/MS -particolored -particularistic -particularity/SM -particularization/MS -particularize/GSD -particular/SY -particulate/S -parting/MS -partisanship/SM -partisan/SM -partition/AMRDGS -partitioned/U -partitioner/M -partitive/S -partizan's -partly -partner/DMGS -partnership/SM -partook -partridge/MS -part's -parturition/SM -partway -party/RSDMG -parvenu/SM -par/ZGSJBMDR -Pasadena/M -PASCAL -Pascale/M -Pascal/M -pascal/SM -paschal/S -pasha/MS -Paso/M -Pasquale/M -pas/S -passably -passage/MGSD -passageway/MS -Passaic/M -passband -passbook/MS -passel/MS -pass�/M -passenger/MYS -passerby -passer/M -passersby -passim -passing/Y -passionated -passionate/EYP -passionateness/EM -passionates -passionating -passioned -passionflower/MS -passioning -passionless -passion/SEM -Passion/SM -passivated -passiveness/S -passive/SYP -passivity/S -pass/JGVBZDSR -passkey/SM -passmark -passover -Passover/MS -passport/SM -password/SDM -pasta/MS -pasteboard/SM -pasted/UA -pastel/MS -paste/MS -Pasternak/M -pastern/SM -pasteup -pasteurization/MS -pasteurized/U -pasteurizer/M -pasteurize/RSDGZ -Pasteur/M -pastiche/MS -pastille/SM -pastime/SM -pastiness/SM -pastoralization/M -pastoral/SPY -pastorate/MS -pastor/GSDM -past/PGMDRS -pastrami/MS -pastry/SM -past's/A -pasts/A -pasturage/SM -pasture/MGSRD -pasturer/M -pasty/PTRS -Patagonia/M -Patagonian/S -patch/EGRSD -patcher/EM -patchily -patchiness/S -patch's -patchwork/RMSZ -patchy/PRT -patellae -patella/MS -Patel/M -Pate/M -paten/M -Paten/M -patentee/SM -patent/ZGMRDYSB -paterfamilias/SM -pater/M -paternalism/MS -paternalist -paternalistic -paternal/Y -paternity/SM -paternoster/SM -Paterson/M -pate/SM -pathetic -pathetically -pathfinder/MS -pathless/P -path/M -pathname/SM -pathogenesis/M -pathogenic -pathogen/SM -pathologic -pathological/Y -pathologist/MS -pathology/SM -pathos/SM -paths -pathway/MS -Patience/M -patience/SM -patient/MRYTS -patient's/I -patients/I -patina/SM -patine -Patin/M -patio/MS -Pat/MN -pat/MNDRS -Patna/M -patois/M -Paton/M -patresfamilias -patriarchal -patriarchate/MS -patriarch/M -patriarchs -patriarchy/MS -Patrica/M -Patrice/M -Patricia/M -patrician/MS -patricide/MS -Patricio/M -Patrick/M -Patric/M -patrimonial -patrimony/SM -patriotically -patriotic/U -patriotism/SM -patriot/SM -patristic/S -Patrizia/M -Patrizio/M -Patrizius/M -patrolled -patrolling -patrolman/M -patrolmen -patrol/MS -patrolwoman -patrolwomen -patronage/MS -patroness/S -patronization -patronized/U -patronize/GZRSDJ -patronizer/M -patronizes/A -patronizing's/U -patronizing/YM -patronymically -patronymic/S -patron/YMS -patroon/MS -patsy/SM -Patsy/SM -patted -Patten/M -patten/MS -patterer/M -pattern/GSDM -patternless -patter/RDSGJ -Patterson/M -Pattie/M -Patti/M -patting -Pattin/M -Patton/M -Patty/M -patty/SM -paucity/SM -Paula/M -Paule/M -Pauletta/M -Paulette/M -Paulie/M -Pauli/M -Paulina/M -Pauline -Pauling/M -Paulita/M -Paul/MG -Paulo/M -Paulsen/M -Paulson/M -Paulus/M -Pauly/M -paunch/GMSD -paunchiness/M -paunchy/RTP -pauperism/SM -pauperize/SDG -pauper/SGDM -pause/DSG -Pavarotti -paved/UA -pave/GDRSJL -Pavel/M -pavement/SGDM -paver/M -paves/A -Pavia/M -pavilion/SMDG -paving/A -paving's -Pavla/M -Pavlova/MS -Pavlovian -Pavlov/M -pawl/SM -paw/MDSG -pawnbroker/SM -pawnbroking/S -Pawnee/SM -pawner/M -pawn/GSDRM -pawnshop/MS -pawpaw's -Pawtucket/M -paxes -Paxon/M -Paxton/M -payable/S -pay/AGSLB -payback/S -paycheck/SM -payday/MS -payed -payee/SM -payer/SM -payload/SM -paymaster/SM -payment/ASM -Payne/SM -payoff/MS -payola/MS -payout/S -payroll/MS -payslip/S -Payson/M -Payton/M -Paz/M -Pb/M -PBS -PBX -PCB -PC/M -PCP -PCs -pct -pd -PD -Pd/M -PDP -PDQ -PDT -PE -Peabody/M -peaceableness/M -peaceable/P -peaceably -peacefuller -peacefullest -peacefulness/S -peaceful/PY -peace/GMDS -peacekeeping/S -Peace/M -peacemaker/MS -peacemaking/MS -peacetime/MS -peach/GSDM -Peachtree/M -peachy/RT -peacock/SGMD -Peadar/M -peafowl/SM -peahen/MS -peaked/P -peakiness/M -peak/SGDM -peaky/P -pealed/A -Peale/M -peal/MDSG -peals/A -pea/MS -peanut/SM -Pearce/M -Pearla/M -Pearle/M -pearler/M -Pearlie/M -Pearline/M -Pearl/M -pearl/SGRDM -pearly/TRS -Pearson/M -pear/SYM -peartrees -Peary/M -peasanthood -peasantry/SM -peasant/SM -peashooter/MS -peats/A -peat/SM -peaty/TR -pebble/MGSD -pebbling/M -pebbly/TR -Pebrook/M -pecan/SM -peccadilloes -peccadillo/M -peccary/MS -Pechora/M -pecker/M -peck/GZSDRM -Peckinpah/M -Peck/M -Pecos/M -pectic -pectin/SM -pectoral/S -peculate/NGDSX -peculator/S -peculiarity/MS -peculiar/SY -pecuniary -pedagogical/Y -pedagogic/S -pedagogics/M -pedagogue/SDGM -pedagogy/MS -pedal/SGRDM -pedantic -pedantically -pedantry/MS -pedant/SM -peddler/M -peddle/ZGRSD -pederast/SM -pederasty/SM -Peder/M -pedestal/GDMS -pedestrianization -pedestrianize/GSD -pedestrian/MS -pediatrician/SM -pediatric/S -pedicab/SM -pedicure/DSMG -pedicurist/SM -pedigree/DSM -pediment/DMS -pedlar's -pedometer/MS -pedophile/S -pedophilia -Pedro/M -peduncle/MS -peeing -peekaboo/SM -peek/GSD -peeler/M -peeling/M -Peel/M -peel/SJGZDR -peen/GSDM -peeper/M -peephole/SM -peep/SGZDR -peepshow/MS -peepy -peerage/MS -peer/DMG -peeress/MS -peerlessness/M -peerless/PY -peeve/GZMDS -peevers/M -peevishness/SM -peevish/YP -peewee/S -pee/ZDRS -Pegasus/MS -pegboard/SM -Pegeen/M -pegged -Peggie/M -Peggi/M -pegging -Peggy/M -Peg/M -peg/MS -peignoir/SM -Pei/M -Peiping/M -Peirce/M -pejoration/SM -pejorative/SY -peke/MS -Pekinese's -pekingese -Pekingese/SM -Peking/SM -pekoe/SM -pelagic -Pelee/M -Pele/M -pelf/SM -Pelham/M -pelican/SM -pellagra/SM -pellet/SGMD -pellucid -Peloponnese/M -pelter/M -pelt/GSDR -pelvic/S -pelvis/SM -Pembroke/M -pemmican/SM -penalization/SM -penalized/U -penalize/SDG -penalty/MS -penal/Y -Pena/M -penance/SDMG -pence/M -penchant/MS -pencil/SGJMD -pendant/SM -pend/DCGS -pendent/CS -Penderecki/M -Pendleton/M -pendulous -pendulum/MS -Penelopa/M -Penelope/M -penetrability/SM -penetrable -penetrate/SDVGNX -penetrating/Y -penetration/M -penetrativeness/M -penetrative/PY -penetrator/MS -penguin/MS -penicillin/SM -penile -peninsular -peninsula/SM -penis/MS -penitence/MS -penitential/YS -penitentiary/MS -penitent/SY -penknife/M -penknives -penlight/MS -pen/M -Pen/M -penman/M -penmanship/MS -penmen -Penna -pennant/SM -penned -Penney/M -Pennie/M -penniless -Penni/M -penning -Pennington/M -pennis -Penn/M -pennon/SM -Pennsylvania/M -Pennsylvanian/S -Penny/M -penny/SM -pennyweight/SM -pennyworth/M -penologist/MS -penology/MS -Penrod/M -Pensacola/M -pensioner/M -pension/ZGMRDBS -pensiveness/S -pensive/PY -pens/V -pentacle/MS -pentagonal/SY -Pentagon/M -pentagon/SM -pentagram/MS -pentameter/SM -pent/AS -Pentateuch/M -pentathlete/S -pentathlon/MS -pentatonic -pentecostal -Pentecostalism/S -Pentecostal/S -Pentecost/SM -penthouse/SDGM -Pentium/M -penuche/SM -penultimate/SY -penumbrae -penumbra/MS -penuriousness/MS -penurious/YP -penury/SM -peonage/MS -peon/MS -peony/SM -people/SDMG -Peoria/M -Pepe/M -Pepillo/M -Pepi/M -Pepin/M -Pepita/M -Pepito/M -pepped -peppercorn/MS -pepperer/M -peppergrass/M -peppermint/MS -pepperoni/S -pepper/SGRDM -peppery -peppiness/SM -pepping -peppy/PRT -Pepsico/M -PepsiCo/M -Pepsi/M -pepsin/SM -pep/SM -peptic/S -peptidase/SM -peptide/SM -peptizing -Pepys/M -Pequot/M -peradventure/S -perambulate/DSNGX -perambulation/M -perambulator/MS -percale/MS -perceivably -perceive/DRSZGB -perceived/U -perceiver/M -percentage/MS -percentile/SM -percent/MS -perceptible -perceptibly -perceptional -perception/MS -perceptiveness/MS -perceptive/YP -perceptual/Y -percept/VMS -Perceval/M -perchance -perch/GSDM -perchlorate/M -perchlorination -percipience/MS -percipient/S -Percival/M -percolate/NGSDX -percolation/M -percolator/MS -percuss/DSGV -percussionist/MS -percussion/SAM -percussiveness/M -percussive/PY -percutaneous/Y -Percy/M -perdition/MS -perdurable -peregrinate/XSDNG -peregrination/M -peregrine/S -Perelman/M -peremptorily -peremptory/P -perennial/SY -p�res -perestroika/S -Perez/M -perfecta/S -perfect/DRYSTGVP -perfecter/M -perfectibility/MS -perfectible -perfectionism/MS -perfectionist/MS -perfection/MS -perfectiveness/M -perfective/PY -perfectness/MS -perfidiousness/M -perfidious/YP -perfidy/MS -perforated/U -perforate/XSDGN -perforation/M -perforce -performance/MS -performed/U -performer/M -perform/SDRZGB -perfumer/M -perfumery/SM -perfume/ZMGSRD -perfunctorily -perfunctoriness/M -perfunctory/P -perfused -perfusion/M -Pergamon/M -pergola/SM -perhaps/S -Peria/M -pericardia -pericardium/M -Perice/M -Periclean -Pericles/M -perigee/SM -perihelia -perihelion/M -peril/GSDM -Perilla/M -perilousness/M -perilous/PY -Peri/M -perimeter/MS -perinatal -perinea -perineum/M -periodic -periodical/YMS -periodicity/MS -period/MS -periodontal/Y -periodontics/M -periodontist/S -peripatetic/S -peripheral/SY -periphery/SM -periphrases -periphrasis/M -periphrastic -periscope/SDMG -perishable/SM -perish/BZGSRD -perishing/Y -peristalses -peristalsis/M -peristaltic -peristyle/MS -peritoneal -peritoneum/SM -peritonitis/MS -periwigged -periwigging -periwig/MS -periwinkle/SM -perjurer/M -perjure/SRDZG -perjury/MS -per/K -perk/GDS -perkily -perkiness/S -Perkin/SM -perky/TRP -Perla/M -Perle/M -Perl/M -permafrost/MS -permalloy/M -Permalloy/M -permanence/SM -permanency/MS -permanentness/M -permanent/YSP -permeability/SM -permeableness/M -permeable/P -permeate/NGVDSX -Permian -permissibility/M -permissibleness/M -permissible/P -permissibly -permission/SM -permissiveness/MS -permissive/YP -permit/SM -permitted -permitting -Perm/M -perm/MDGS -permutation/MS -permute/SDG -Pernell/M -perniciousness/MS -pernicious/PY -Pernod/M -Peron/M -peroration/SM -Perot/M -peroxidase/M -peroxide/MGDS -perpend/DG -perpendicularity/SM -perpendicular/SY -perpetrate/NGXSD -perpetration/M -perpetrator/SM -perpetual/SY -perpetuate/NGSDX -perpetuation/M -perpetuity/MS -perplex/DSG -perplexed/Y -perplexity/MS -perquisite/SM -Perren/M -Perri/M -Perrine/M -Perry/MR -persecute/XVNGSD -persecution/M -persecutor/MS -persecutory -Perseid/M -Persephone/M -Perseus/M -perseverance/MS -persevere/GSD -persevering/Y -Pershing/M -Persia/M -Persian/S -persiflage/MS -persimmon/SM -Persis/M -persist/DRSG -persistence/SM -persistent/Y -persnickety -personableness/M -personable/P -personae -personage/SM -personality/SM -personalization/CMS -personalize/CSDG -personalized/U -personalty/MS -personal/YS -persona/M -person/BMS -personification/M -personifier/M -personify/XNGDRS -personnel/SM -person's/U -persons/U -perspective/YMS -perspex -perspicaciousness/M -perspicacious/PY -perspicacity/S -perspicuity/SM -perspicuousness/M -perspicuous/YP -perspiration/MS -perspire/DSG -persuaded/U -persuader/M -persuade/ZGDRSB -persuasion/SM -persuasively -persuasiveness/MS -persuasive/U -pertain/GSD -Perth/M -pertinaciousness/M -pertinacious/YP -pertinacity/MS -pertinence/S -pertinent/YS -pertness/MS -perturbation/MS -perturbed/U -perturb/GDS -pertussis/SM -pert/YRTSP -peruke/SM -Peru/M -perusal/SM -peruser/M -peruse/RSDZG -Peruvian/S -pervade/SDG -pervasion/M -pervasiveness/MS -pervasive/PY -perverseness/SM -perverse/PXYNV -perversion/M -perversity/MS -pervert/DRSG -perverted/YP -perverter/M -perviousness -peseta/SM -Peshawar/M -peskily -peskiness/S -pesky/RTP -peso/MS -pessimal/Y -pessimism/SM -pessimistic -pessimistically -pessimist/SM -pester/DG -pesticide/MS -pestiferous -pestilence/SM -pestilential/Y -pestilent/Y -pestle/SDMG -pesto/S -pest/RZSM -PET -P�tain/M -petal/SDM -Peta/M -petard/MS -petcock/SM -Pete/M -peter/GD -Peter/M -Petersburg/M -Petersen/M -Peters/N -Peterson/M -Peterus/M -Petey/M -pethidine/M -petiole/SM -petiteness/M -petite/XNPS -petitioner/M -petition/GZMRD -petition's/A -petitions/A -petits -Petkiewicz/M -Pet/MRZ -Petra/M -Petrarch/M -petrel/SM -petri -petrifaction/SM -petrify/NDSG -Petrina/M -Petr/M -petrochemical/SM -petrodollar/MS -petroglyph/M -petrolatum/MS -petroleum/MS -petrolled -petrolling -petrol/MS -petrologist/MS -petrology/MS -Petronella/M -Petronia/M -Petronilla/M -Petronille/M -pet/SMRZ -petted -petter/MS -Pettibone/M -petticoat/SMD -pettifogged -pettifogger/SM -pettifogging -pettifog/S -pettily -pettiness/S -petting -pettis -pettishness/M -pettish/YP -Petty/M -petty/PRST -petulance/MS -petulant/Y -Petunia/M -petunia/SM -Peugeot/M -Pewaukee/M -pewee/MS -pewit/MS -pew/SM -pewter/SRM -peyote/SM -Peyter/M -Peyton/M -pf -Pfc -PFC -pfennig/SM -Pfizer/M -pg -PG -Phaedra/M -Phaethon/M -phaeton/MS -phage/M -phagocyte/SM -Phaidra/M -phalanger/MS -phalanges -phalanx/SM -phalli -phallic -phallus/M -Phanerozoic -phantasmagoria/SM -phantasmal -phantasm/SM -phantasy's -phantom/MS -pharaoh -Pharaoh/M -pharaohs -Pharaohs -pharisaic -Pharisaic -Pharisaical -pharisee/S -Pharisee/SM -pharmaceutical/SY -pharmaceutic/S -pharmaceutics/M -pharmacist/SM -pharmacological/Y -pharmacologist/SM -pharmacology/SM -pharmacopoeia/SM -pharmacy/SM -pharyngeal/S -pharynges -pharyngitides -pharyngitis/M -pharynx/M -phase/DSRGZM -phaseout/S -PhD -pheasant/SM -Phebe/M -Phedra/M -Phekda/M -Phelia/M -Phelps/M -phenacetin/MS -phenobarbital/SM -phenolic -phenol/MS -phenolphthalein/M -phenomenal/Y -phenomena/SM -phenomenological/Y -phenomenology/MS -phenomenon/SM -phenotype/MS -phenylalanine/M -phenyl/M -pheromone/MS -phew/S -phialled -phialling -phial/MS -Phidias/M -Philadelphia/M -philanderer/M -philander/SRDGZ -philanthropic -philanthropically -philanthropist/MS -philanthropy/SM -philatelic -philatelist/MS -philately/SM -Philbert/M -Philco/M -philharmonic/S -Philipa/M -Philip/M -Philippa/M -Philippe/M -Philippians/M -philippic/SM -Philippine/SM -Philis/M -philistine/S -Philistine/SM -philistinism/S -Phillida/M -Phillie/M -Phillipa/M -Phillipe/M -Phillip/MS -Phillipp/M -Phillis/M -Philly/SM -Phil/MY -philodendron/MS -philological/Y -philologist/MS -philology/MS -Philomena/M -philosopher/MS -philosophic -philosophical/Y -philosophized/U -philosophizer/M -philosophizes/U -philosophize/ZDRSG -philosophy/MS -philter/SGDM -philtre/DSMG -Phineas/M -Phip/M -Phipps/M -phi/SM -phlebitides -phlebitis/M -phlegmatic -phlegmatically -phlegm/SM -phloem/MS -phlox/M -pH/M -Ph/M -phobia/SM -phobic/S -Phobos/M -Phoebe/M -phoebe/SM -Phoenicia/M -Phoenician/SM -Phoenix/M -phoenix/MS -phone/DSGM -phoneme/SM -phonemically -phonemic/S -phonemics/M -phonetically -phonetician/SM -phonetic/S -phonetics/M -phonically -phonic/S -phonics/M -phoniness/MS -phonographer/M -phonographic -phonograph/RM -phonographs -phonologic -phonological/Y -phonologist/MS -phonology/MS -phonon/M -phony/PTRSDG -phooey/S -phosphatase/M -phosphate/MS -phosphide/M -phosphine/MS -phosphoresce -phosphorescence/SM -phosphorescent/Y -phosphoric -phosphor/MS -phosphorous -phosphorus/SM -photocell/MS -photochemical/Y -photochemistry/M -photocopier/M -photocopy/MRSDZG -photoelectric -photoelectrically -photoelectronic -photoelectrons -photoengraver/M -photoengrave/RSDJZG -photoengraving/M -photofinishing/MS -photogenic -photogenically -photograph/AGD -photographer/SM -photographic -photographically -photograph's -photographs/A -photography/MS -photojournalism/SM -photojournalist/SM -photoluminescence/M -photolysis/M -photolytic -photometer/SM -photometric -photometrically -photometry/M -photomicrograph/M -photomicrography/M -photomultiplier/M -photon/MS -photorealism -photosensitive -photo/SGMD -photosphere/M -photostatic -Photostat/MS -Photostatted -Photostatting -photosyntheses -photosynthesis/M -photosynthesize/DSG -photosynthetic -phototypesetter -phototypesetting/M -phrasal -phrase/AGDS -phrasebook -phrasemaking -phraseology/MS -phrase's -phrasing/SM -phrenological/Y -phrenologist/MS -phrenology/MS -phylactery/MS -phylae -phyla/M -Phylis/M -Phyllida/M -Phyllis/M -Phyllys/M -phylogeny/MS -phylum/M -Phylys/M -phys -physicality/M -physical/PYS -physician/SM -physicist/MS -physicked -physicking -physic/SM -physiochemical -physiognomy/SM -physiography/MS -physiologic -physiological/Y -physiologist/SM -physiology/MS -physiotherapist/MS -physiotherapy/SM -physique/MSD -phytoplankton/M -Piaf/M -Piaget/M -Pia/M -pianism/M -pianissimo/S -pianistic -pianist/SM -pianoforte/MS -pianola -Pianola/M -piano/SM -piaster/MS -piazza/SM -pibroch/M -pibrochs -picador/MS -picaresque/S -pica/SM -Picasso/M -picayune/S -Piccadilly/M -piccalilli/MS -piccolo/MS -pickaback's -pickaxe's -pickax/GMSD -pickerel/MS -Pickering/M -picker/MG -picketer/M -picket/MSRDZG -Pickett/M -Pickford/M -pick/GZSJDR -pickle/SDMG -Pickman/M -pickoff/S -pickpocket/GSM -pickup/SM -Pickwick/M -picky/RT -picnicked -picnicker/MS -picnicking -picnic/SM -picofarad/MS -picojoule -picoseconds -picot/DMGS -Pict/M -pictograph/M -pictographs -pictorialness/M -pictorial/PYS -picture/MGSD -picturesqueness/SM -picturesque/PY -piddle/GSD -piddly -pidgin/SM -piebald/S -piece/GMDSR -piecemeal -piecer/M -piecewise -pieceworker/M -piecework/ZSMR -piedmont -Piedmont/M -pieing -pie/MS -Pierce/M -piercer/M -pierce/RSDZGJ -piercing/Y -Pierette/M -pier/M -Pier/M -Pierre/M -Pierrette/M -Pierrot/M -Pierson/M -Pieter/M -Pietra/M -Pietrek/M -Pietro/M -piety/SM -piezoelectric -piezoelectricity/M -piffle/MGSD -pigeon/DMGS -pigeonhole/SDGM -pigged -piggery/M -pigging -piggishness/SM -piggish/YP -piggyback/MSDG -Piggy/M -piggy/RSMT -pigheadedness/S -pigheaded/YP -piglet/MS -pigmentation/MS -pigment/MDSG -pig/MLS -Pigmy's -pigpen/SM -pigroot -pigskin/MS -pigsty/SM -pigswill/M -pigtail/SMD -Pike/M -pike/MZGDRS -piker/M -pikestaff/MS -pilaf/MS -pilaster/SM -Pilate/M -pilau's -pilchard/SM -Pilcomayo/M -pile/JDSMZG -pileup/MS -pilferage/SM -pilferer/M -pilfer/ZGSRD -Pilgrim -pilgrimage/DSGM -pilgrim/MS -piling/M -pillage/RSDZG -pillar/DMSG -pillbox/MS -pill/GSMD -pillion/DMGS -pillory/MSDG -pillowcase/SM -pillow/GDMS -pillowslip/S -Pillsbury/M -pilot/DMGS -pilothouse/SM -piloting/M -pimento/MS -pimiento/SM -pimpernel/SM -pimp/GSMYD -pimple/SDM -pimplike -pimply/TRM -PIN -pinafore/MS -pi�ata/S -Pinatubo/M -pinball/MS -Pincas/M -pincer/GSD -Pinchas/M -pincher/M -pinch/GRSD -pincushion/SM -Pincus/M -Pindar/M -pineapple/MS -pined/A -Pinehurst/M -pine/MNGXDS -pines/A -pinfeather/SM -ping/GDRM -pinheaded/P -pinhead/SMD -pinhole/SM -pining/A -pinion/DMG -Pinkerton/M -pinkeye/MS -pink/GTYDRMPS -pinkie/SM -pinkish/P -pinkness/S -pinko/MS -pinky's -pinnacle/MGSD -pinnate -pinned/U -pinning/S -Pinocchio/M -Pinochet/M -pinochle/SM -pi�on/S -pinpoint/SDG -pinprick/MDSG -pin's -pinsetter/SM -Pinsky/M -pinstripe/SDM -pintail/SM -Pinter/M -pint/MRS -pinto/S -pinup/MS -pin/US -pinwheel/DMGS -pinyin -Pinyin -piny/RT -pioneer/SDMG -pion/M -Piotr/M -piousness/MS -pious/YP -pipeline/DSMG -pipe/MS -piper/M -Piper/M -Pipestone/M -pipet's -pipette/MGSD -pipework -piping/YM -pipit/MS -pip/JSZMGDR -Pip/MR -Pippa/M -pipped -pipping -pippin/SM -Pippo/M -Pippy/M -pipsqueak/SM -piquancy/MS -piquantness/M -piquant/PY -pique/GMDS -piracy/MS -Piraeus/M -Pirandello/M -piranha/SM -pirate/MGSD -piratical/Y -pirogi -pirogies -pirouette/MGSD -pis -Pisa/M -piscatorial -Pisces/M -Pisistratus/M -pismire/SM -Pissaro/M -piss/DSRG! -pistachio/MS -piste/SM -pistillate -pistil/MS -pistoleers -pistole/M -pistol/SMGD -piston/SM -pitapat/S -pitapatted -pitapatting -pita/SM -Pitcairn/M -pitchblende/SM -pitcher/M -pitchfork/GDMS -pitching/M -pitchman/M -pitchmen -pitch/RSDZG -pitchstone/M -piteousness/SM -piteous/YP -pitfall/SM -pithily -pithiness/SM -pith/MGDS -piths -pithy/RTP -pitiableness/M -pitiable/P -pitiably -pitier/M -pitifuller -pitifullest -pitifulness/M -pitiful/PY -pitilessness/SM -pitiless/PY -pitman/M -pit/MS -Pitney/M -piton/SM -pittance/SM -pitted -pitting -Pittman/M -Pittsburgh/ZM -Pittsfield/M -Pitt/SM -Pittston/M -pituitary/SM -pitying/Y -pity/ZDSRMG -Pius/M -pivotal/Y -pivot/DMSG -pivoting/M -pix/DSG -pixel/SM -pixie/MS -pixiness -pixmap/SM -Pizarro/M -pizazz/S -pi/ZGDRH -pizza/SM -pizzeria/SM -pizzicati -pizzicato -pj's -PJ's -pk -pkg -pkt -pkwy -Pkwy -pl -placard/DSMG -placate/NGVXDRS -placatory -placeable/A -placebo/SM -placed/EAU -place/DSRJLGZM -placeholder/S -placekick/DGS -placeless/Y -placement/AMES -placental/S -placenta/SM -placer/EM -places/EA -placidity/SM -placidness/M -placid/PY -placing/AE -placket/SM -plagiarism/MS -plagiarist/MS -plagiarize/GZDSR -plagiary/SM -plagued/U -plague/MGRSD -plaguer/M -plaice/M -plaid/DMSG -plainclothes -plainclothesman -plainclothesmen -Plainfield/M -plainness/MS -plainsman/M -plainsmen -plainsong/SM -plainspoken -plain/SPTGRDY -plaintiff/MS -plaintiveness/M -plaintive/YP -plaint/VMS -Plainview/M -plaiting/M -plait/SRDMG -planar -planarity -Planck/M -plan/DRMSGZ -planeload -planer/M -plane's -plane/SCGD -planetarium/MS -planetary -planetesimal/M -planet/MS -planetoid/SM -plangency/S -plangent -planking/M -plank/SJMDG -plankton/MS -planned/U -planner/SM -planning -Plano -planoconcave -planoconvex -Plantagenet/M -plantain/MS -plantar -plantation/MS -planter/MS -planting/S -plantlike -plant's -plant/SADG -plaque/MS -plash/GSDM -plasma/MS -plasmid/S -plasm/M -plasterboard/MS -plasterer/M -plastering/M -plaster/MDRSZG -plasterwork/M -plastically -plasticine -Plasticine/M -plasticity/SM -plasticize/GDS -plastic/MYS -plateau/GDMS -plateful/S -platelet/SM -platen/M -plater/M -plate/SM -platform/SGDM -Plath/M -plating/M -platinize/GSD -platinum/MS -platitude/SM -platitudinous/Y -plat/JDNRSGXZ -Plato/M -platonic -Platonic -Platonism/M -Platonist -platoon/MDSG -platted -Platte/M -platter/MS -Platteville/M -platting -platypus/MS -platys -platy/TR -plaudit/MS -plausibility/S -plausible/P -plausibly -Plautus/M -playability/U -playable/U -playacting/M -playact/SJDG -playback/MS -playbill/SM -Playboy/M -playboy/SM -play/DRSEBG -played/A -player's/E -player/SM -playfellow/S -playfulness/MS -playful/PY -playgirl/SM -playgoer/MS -playground/MS -playgroup/S -playhouse/SM -playing/S -playmate/MS -playoff/S -playpen/SM -playroom/SM -plays/A -Playtex/M -plaything/MS -playtime/SM -playwright/SM -playwriting/M -plaza/SM -pleader/MA -pleading/MY -plead/ZGJRDS -pleasanter -pleasantest -pleasantness/SMU -pleasantry/MS -pleasant/UYP -pleased/EU -pleaser/M -pleases/E -please/Y -pleasingness/M -pleasing/YP -plea/SM -pleas/RSDJG -pleasurableness/M -pleasurable/P -pleasurably -pleasureful -pleasure/MGBDS -pleasure's/E -pleasures/E -pleater/M -pleat/RDMGS -plebeian/SY -plebe/MS -plebiscite/SM -plectra -plectrum/SM -pledger/M -pledge/RSDMG -Pleiads -Pleistocene -plenary/S -plenipotentiary/S -plenitude/MS -plenteousness/M -plenteous/PY -plentifulness/M -plentiful/YP -plenty/SM -plenum/M -pleonasm/MS -plethora/SM -pleurae -pleural -pleura/M -pleurisy/SM -Plexiglas/MS -plexus/SM -pliability/MS -pliableness/M -pliable/P -pliancy/MS -pliantness/M -pliant/YP -plication/MA -plier/MA -plight/GMDRS -plimsolls -plinker/M -plink/GRDS -plinth/M -plinths -Pliny/M -Pliocene/S -PLO -plodded -plodder/SM -plodding/SY -plod/S -plopped -plopping -plop/SM -plosive -plot/SM -plotted/A -plotter/MDSG -plotting -plover/MS -plowed/U -plower/M -plowman/M -plowmen -plow/SGZDRM -plowshare/MS -ploy's -ploy/SCDG -plucker/M -pluckily -pluckiness/SM -pluck/SGRD -plucky/TPR -pluggable -plugged/UA -plugging/AU -plughole -plug's -plug/US -plumage/DSM -plumbago/M -plumbed/U -plumber/M -plumbing/M -plumb/JSZGMRD -plume/SM -plummer -plummest -plummet/DSG -plummy -plumper/M -plumpness/S -plump/RDNYSTGP -plum/SMDG -plumy/TR -plunder/GDRSZ -plunger/M -plunge/RSDZG -plunker/M -plunk/ZGSRD -pluperfect/S -pluralism/MS -pluralistic -pluralist/S -plurality/SM -pluralization/MS -pluralize/GZRSD -pluralizer/M -plural/SY -plushness/MS -plush/RSYMTP -plushy/RPT -plus/S -plussed -plussing -Plutarch/M -plutocracy/MS -plutocratic -plutocrat/SM -Pluto/M -plutonium/SM -pluvial/S -ply/AZNGRSD -Plymouth/M -plywood/MS -pm -PM -Pm/M -PMS -pneumatically -pneumatic/S -pneumatics/M -pneumonia/MS -PO -poacher/M -poach/ZGSRD -Pocahontas/M -pocketbook/SM -pocketful/SM -pocketing/M -pocketknife/M -pocketknives -pocket/MSRDG -pock/GDMS -pockmark/MDSG -Pocono/MS -podded -podding -podge/ZR -Podgorica/M -podiatrist/MS -podiatry/MS -podium/MS -pod/SM -Podunk/M -Poe/M -poem/MS -poesy/GSDM -poetaster/MS -poetess/MS -poetically -poeticalness -poetical/U -poetic/S -poetics/M -poet/MS -poetry/SM -pogo -Pogo/M -pogrom/GMDS -poignancy/MS -poignant/Y -Poincar�/M -poinciana/SM -Poindexter/M -poinsettia/SM -pointblank -pointedness/M -pointed/PY -pointer/M -pointillism/SM -pointillist/SM -pointing/M -pointlessness/SM -pointless/YP -point/RDMZGS -pointy/TR -poise/M -pois/GDS -poi/SM -poisoner/M -poisoning/M -poisonous/PY -poison/RDMZGSJ -Poisson/M -poke/DRSZG -Pokemon/M -pokerface/D -poker/M -poky/SRT -Poland/M -Polanski/M -polarimeter/SM -polarimetry -polariscope/M -Polaris/M -polarity/MS -polarization/CMS -polarized/UC -polarize/RSDZG -polarizes/C -polarizing/C -polarogram/SM -polarograph -polarography/M -Polaroid/SM -polar/S -polecat/SM -polemical/Y -polemicist/S -polemic/S -polemics/M -pole/MS -Pole/MS -poler/M -polestar/S -poleward/S -pol/GMDRS -policeman/M -policemen/M -police/MSDG -policewoman/M -policewomen -policyholder/MS -policymaker/S -policymaking -policy/SM -poliomyelitides -poliomyelitis/M -polio/SM -Polish -polished/U -polisher/M -polish/RSDZGJ -polis/M -Politburo/M -politburo/S -politeness/MS -polite/PRTY -politesse/SM -politically -political/U -politician/MS -politicization/S -politicize/CSDG -politicked -politicking/SM -politico/SM -politic/S -politics/M -polity/MS -polka/SDMG -Polk/M -pollack/SM -Pollard/M -polled/U -pollen/GDM -pollinate/XSDGN -pollination/M -pollinator/MS -polliwog/SM -poll/MDNRSGX -pollock's -Pollock/SM -pollster/MS -pollutant/MS -polluted/U -polluter/M -pollute/RSDXZVNG -pollution/M -Pollux/M -Pollyanna/M -Polly/M -pollywog's -Pol/MY -Polo/M -polo/MS -polonaise/MS -polonium/MS -poltergeist/SM -poltroon/MS -polyandrous -polyandry/MS -polyatomic -polybutene/MS -polycarbonate -polychemicals -polychrome -polyclinic/MS -polycrystalline -polyelectrolytes -polyester/SM -polyether/S -polyethylene/SM -polygamist/MS -polygamous/Y -polygamy/MS -polyglot/S -polygonal/Y -polygon/MS -polygraph/MDG -polygraphs -polygynous -polyhedral -polyhedron/MS -Polyhymnia/M -polyisobutylene -polyisocyanates -polymath/M -polymaths -polymerase/S -polymeric -polymerization/SM -polymerize/SDG -polymer/MS -polymorphic -polymorphism/MS -polymorph/M -polymyositis -Polynesia/M -Polynesian/S -polynomial/YMS -Polyphemus/M -polyphonic -polyphony/MS -polyphosphate/S -polyp/MS -polypropylene/MS -polystyrene/SM -polysyllabic -polysyllable/SM -polytechnic/MS -polytheism/SM -polytheistic -polytheist/SM -polythene/M -polytonal/Y -polytopes -polyunsaturated -polyurethane/SM -polyvinyl/MS -Po/M -pomade/MGSD -pomander/MS -pomegranate/SM -Pomerania/M -Pomeranian -pommel/GSMD -Pomona/M -Pompadour/M -pompadour/MDS -pompano/SM -Pompeian/S -Pompeii/M -Pompey/M -pompom/SM -pompon's -pomposity/MS -pompousness/S -pompous/YP -pomp/SM -ponce/M -Ponce/M -Ponchartrain/M -poncho/MS -ponderer/M -ponderousness/MS -ponderous/PY -ponder/ZGRD -pond/SMDRGZ -pone/SM -pongee/MS -poniard/GSDM -pons/M -Pontchartrain/M -Pontiac/M -Pontianak/M -pontiff/MS -pontifical/YS -pontificate/XGNDS -pontoon/SMDG -pony/DSMG -ponytail/SM -pooch/GSDM -poodle/MS -poof/MS -pooh/DG -Pooh/M -poohs -Poole/M -pool/MDSG -poolroom/MS -poolside -Poona/M -poop/MDSG -poorboy -poorhouse/MS -poorness/MS -poor/TYRP -popcorn/MS -Popek/MS -pope/SM -Pope/SM -Popeye/M -popgun/SM -popinjay/MS -poplar/SM -poplin/MS -Popocatepetl/M -popover/SM -poppa/MS -popped -Popper/M -popper/SM -poppet/M -popping -Poppins/M -poppycock/MS -Poppy/M -poppy/SDM -poppyseed -Popsicle/MS -pop/SM -populace/MS -popularism -popularity/UMS -popularization/SM -popularize/A -popularized -popularizer/MS -popularizes/U -popularizing -popular/YS -populate/CXNGDS -populated/UA -populates/A -populating/A -population/MC -populism/S -populist/SM -populousness/MS -populous/YP -porcelain/SM -porch/SM -porcine -porcupine/MS -pore/ZGDRS -Porfirio/M -porgy/SM -poring/Y -porker/M -porky/TSR -pork/ZRMS -pornographer/SM -pornographic -pornographically -pornography/SM -porno/S -porn/S -porosity/SM -porousness/MS -porous/PY -porphyritic -porphyry/MS -porpoise/DSGM -porridge/MS -Porrima/M -porringer/MS -Porsche/M -portability/S -portables -portable/U -portably -port/ABSGZMRD -portage/ASM -portaged -portaging -portal/SM -portamento/M -portcullis/MS -ported/CE -Porte/M -portend/SDG -portentousness/M -portentous/PY -portent/SM -porterage/M -porter/DMG -porterhouse/SM -Porter/M -porter's/A -portfolio/MS -porthole/SM -Portia/M -porticoes -portico/M -Portie/M -porti�re/SM -porting/E -portion/KGSMD -Portland/M -portliness/SM -portly/PTR -portmanteau/SM -Port/MR -P�rto/M -portraitist/SM -portrait/MS -portraiture/MS -portrayal/SM -portrayer/M -portray/GDRS -ports/CE -Portsmouth/M -Portugal/M -Portuguese/M -portulaca/MS -Porty/M -posed/CA -Poseidon/M -poser/KME -poses/CA -poseur/MS -pose/ZGKDRSE -posh/DSRGT -posing/CA -positifs -positionable -positional/KY -position/KGASMD -position's/EC -positions/EC -positiveness/S -positive/RSPYT -positivism/M -positivist/S -positivity -positron/SM -posit/SCGD -Posner/M -posse/M -possess/AGEDS -possessed/PY -possession/AEMS -possessional -possessiveness/MS -possessive/PSMY -possessor/MS -possibility/SM -possible/TRS -possibly -poss/S -possum/MS -postage/MS -postal/S -post/ASDRJG -postbag/M -postbox/SM -postcard/SM -postcode/SM -postcondition/S -postconsonantal -postdate/DSG -postdoctoral -posteriori -posterior/SY -posterity/SM -poster/MS -postfix/GDS -postgraduate/SM -posthaste/S -posthumousness/M -posthumous/YP -posthypnotic -postilion/MS -postindustrial -posting/M -postlude/MS -Post/M -postman/M -postmarital -postmark/GSMD -postmaster/SM -postmen -postmeridian -postmistress/MS -postmodern -postmodernist -postmortem/S -postnasal -postnatal -postoperative/Y -postorder -postpaid -postpartum -postpone/GLDRS -postponement/S -postpositions -postprandial -post's -postscript/SM -postsecondary -postulate/XGNSD -postulation/M -postural -posture/MGSRD -posturer/M -postvocalic -postwar -posy/SM -potability/SM -potableness/M -potable/SP -potage/M -potash/MS -potassium/MS -potatoes -potato/M -potbelly/MSD -potboiler/M -potboil/ZR -pot/CMS -Potemkin/M -potency/MS -potentate/SM -potentiality/MS -potential/SY -potentiating -potentiometer/SM -potent/YS -potful/SM -pothead/MS -potherb/MS -pother/GDMS -potholder/MS -pothole/SDMG -potholing/M -pothook/SM -potion/SM -potlatch/SM -potluck/MS -Potomac/M -potpie/SM -potpourri/SM -Potsdam/M -potsherd/MS -potshot/S -pottage/SM -Pottawatomie/M -potted -Potter/M -potter/RDMSG -pottery/MS -potting -Potts/M -potty/SRT -pouch/SDMG -Poughkeepsie/M -Poul/M -poulterer/MS -poultice/DSMG -poultry/MS -pounce/SDG -poundage/MS -pounder/MS -pound/KRDGS -Pound/M -pour/DSG -pourer's -Poussin/MS -pouter/M -pout/GZDRS -poverty/MS -POW -powderpuff -powder/RDGMS -powdery -Powell/M -powerboat/MS -powerfulness/M -powerful/YP -power/GMD -powerhouse/MS -powerlessness/SM -powerless/YP -Powers -Powhatan/M -pow/RZ -powwow/GDMS -pox/GMDS -Poznan/M -pp -PP -ppm -ppr -PPS -pr -PR -practicability/S -practicable/P -practicably -practicality/SM -practicalness/M -practical/YPS -practice/BDRSMG -practiced/U -practicer/M -practicum/SM -practitioner/SM -Pradesh/M -Prado/M -Praetorian -praetorian/S -praetor/MS -pragmatical/Y -pragmatic/S -pragmatics/M -pragmatism/MS -pragmatist/MS -Prague/M -Praia -prairie/MS -praise/ESDG -praiser/S -praise's -praiseworthiness/MS -praiseworthy/P -praising/Y -Prakrit/M -praline/MS -pram/MS -prancer/M -prance/ZGSRD -prancing/Y -prank/SMDG -prankster/SM -praseodymium/SM -Pratchett/M -prate/DSRGZ -prater/M -pratfall/MS -prating/Y -prattle/DRSGZ -prattler/M -prattling/Y -Pratt/M -Prattville/M -Pravda/M -prawn/MDSG -praxes -praxis/M -Praxiteles/M -pray/DRGZS -prayerbook -prayerfulness/M -prayerful/YP -prayer/M -PRC -preach/DRSGLZJ -preacher/M -preaching/Y -preachment/MS -preachy/RT -preadolescence/S -Preakness/M -preallocate/XGNDS -preallocation/M -preallocator/S -preamble/MGDS -preamp -preamplifier/M -prearrange/LSDG -prearrangement/SM -preassign/SDG -preauthorize -prebendary/M -Precambrian -precancel/DGS -precancerous -precariousness/MS -precarious/PY -precautionary -precaution/SGDM -precede/DSG -precedence/SM -precedented/U -precedent/SDM -preceptive/Y -preceptor/MS -precept/SMV -precess/DSG -precession/M -precinct/MS -preciosity/MS -preciousness/S -precious/PYS -precipice/MS -precipitable -precipitant/S -precipitateness/M -precipitate/YNGVPDSX -precipitation/M -precipitousness/M -precipitous/YP -preciseness/SM -precise/XYTRSPN -precision/M -pr�cis/MDG -preclude/GDS -preclusion/S -precociousness/MS -precocious/YP -precocity/SM -precode/D -precognition/SM -precognitive -precollege/M -precolonial -precomputed -preconceive/GSD -preconception/SM -precondition/GMDS -preconscious -precook/GDS -precursor/SM -precursory -precut -predate/NGDSX -predation/CMS -predator/SM -predatory -predecease/SDG -predecessor/MS -predeclared -predecline -predefine/GSD -predefinition/SM -predesignate/GDS -predestination/SM -predestine/SDG -predetermination/MS -predeterminer/M -predetermine/ZGSRD -predicable/S -predicament/SM -predicate/VGNXSD -predication/M -predicator -predictability/UMS -predictable/U -predictably/U -predict/BSDGV -predicted/U -prediction/MS -predictive/Y -predictor/MS -predigest/GDS -predilect -predilection/SM -predispose/SDG -predisposition/MS -predoctoral -predominance/SM -predominant/Y -predominate/YSDGN -predomination/M -preemie/MS -preeminence/SM -preeminent/Y -preemployment/M -preempt/GVSD -preemption/SM -preemptive/Y -preemptor/M -preener/M -preen/SRDG -preexist/DSG -preexistence/SM -preexistent -prefabbed -prefabbing -prefab/MS -prefabricate/XNGDS -prefabrication/M -preface/DRSGM -prefacer/M -prefatory -prefect/MS -prefecture/MS -preferableness/M -preferable/P -preferably -prefer/BL -preference/MS -preferential/Y -preferment/SM -preferred -preferring -prefiguration/M -prefigure/SDG -prefix/MDSG -preflight/SGDM -preform/DSG -pref/RZ -pregnancy/SM -pregnant/Y -preheat/GDS -prehensile -prehistoric -prehistorical/Y -prehistory/SM -preindustrial -preinitialize/SDG -preinterview/M -preisolated -prejudge/DRSG -prejudger/M -prejudgment/SM -prejudiced/U -prejudice/MSDG -prejudicial/PY -prekindergarten/MS -prelacy/MS -prelate/SM -preliminarily -preliminary/S -preliterate/S -preloaded -prelude/GMDRS -preluder/M -premarital/Y -premarket -prematureness/M -premature/SPY -prematurity/M -premedical -premeditated/Y -premeditate/XDSGNV -premeditation/M -premed/S -premenstrual -premiere/MS -premier/GSDM -premiership/SM -Preminger/M -premise/GMDS -premiss's -premium/MS -premix/GDS -premolar/S -premonition/SM -premonitory -prenatal/Y -Pren/M -Prenticed/M -Prentice/MGD -Prenticing/M -Prentiss/M -Prent/M -prenuptial -preoccupation/MS -preoccupy/DSG -preoperative -preordain/DSLG -prepackage/GSD -prepaid -preparation/SM -preparative/SYM -preparatory -preparedly -preparedness/USM -prepared/UP -prepare/ZDRSG -prepay/GLS -prepayment/SM -prepender/S -prepends -preplanned -preponderance/SM -preponderant/Y -preponderate/DSYGN -prepositional/Y -preposition/SDMG -prepossess/GSD -prepossessing/U -prepossession/MS -preposterousness/M -preposterous/PY -prepped -prepping -preppy/RST -preprepared -preprint/SGDM -preprocessed -preprocessing -preprocessor/S -preproduction -preprogrammed -prep/SM -prepubescence/S -prepubescent/S -prepublication/M -prepuce/SM -prequel/S -preradiation -prerecord/DGS -preregister/DSG -preregistration/MS -prerequisite/SM -prerogative/SDM -Pres -presage/GMDRS -presager/M -presbyopia/MS -presbyterian -Presbyterianism/S -Presbyterian/S -presbyter/MS -presbytery/MS -preschool/RSZ -prescience/SM -prescient/Y -Prescott/M -prescribed/U -prescriber/M -prescribe/RSDG -prescription/SM -prescriptive/Y -prescript/SVM -preselect/SGD -presence/SM -presentableness/M -presentable/P -presentably/A -presentational/A -presentation/AMS -presented/A -presenter/A -presentiment/MS -presentment/SM -presents/A -present/SLBDRYZGP -preservationist/S -preservation/SM -preservative/SM -preserve/DRSBZG -preserved/U -preserver/M -preset/S -presetting -preshrank -preshrink/SG -preshrunk -preside/DRSG -presidency/MS -presidential/Y -president/SM -presider/M -presidia -presidium/M -Presley/M -presoaks -presort/GDS -pres/S -press/ACDSG -pressed/U -presser/MS -pressingly/C -pressing/YS -pressman/M -pressmen -pressure/DSMG -pressurization/MS -pressurize/DSRGZ -pressurized/U -prestidigitate/NX -prestidigitation/M -prestidigitatorial -prestidigitator/M -prestige/MS -prestigious/PY -Preston/M -presto/S -presumably -presume/BGDRS -presumer/M -presuming/Y -presumption/MS -presumptive/Y -presumptuousness/SM -presumptuous/YP -presuppose/GDS -presupposition/S -pretax -preteen/S -pretended/Y -pretender/M -pretending/U -pretend/SDRZG -pretense/MNVSX -pretension/GDM -pretentiousness/S -pretentious/UYP -preterite's -preterit/SM -preternatural/Y -pretest/SDG -pretext/SMDG -Pretoria/M -pretreated -pretreatment/S -pretrial -prettify/SDG -prettily -prettiness/SM -pretty/TGPDRS -pretzel/SM -prevailing/Y -prevail/SGD -prevalence/MS -prevalent/SY -prevaricate/DSXNG -prevaricator/MS -preventable/U -preventably -preventative/S -prevent/BSDRGV -preventer/M -prevention/MS -preventiveness/M -preventive/SPY -preview/ZGSDRM -previous/Y -prevision/SGMD -prewar -prexes -preyer's -prey/SMDG -Priam/M -priapic -Pribilof/M -price/AGSD -priced/U -priceless -Price/M -pricer/MS -price's -pricey -pricier -priciest -pricker/M -pricking/M -prickle/GMDS -prickliness/S -prickly/RTP -prick/RDSYZG -prideful/Y -pride/GMDS -prier/M -priestess/MS -priesthood/SM -Priestley/M -priestliness/SM -priestly/PTR -priest/SMYDG -prigged -prigging -priggishness/S -priggish/PYM -prig/SM -primacy/MS -primal -primarily -primary/MS -primate/MS -primed/U -primely/M -primeness/M -prime/PYS -primer/M -Prime's -primeval/Y -priming/M -primitiveness/SM -primitive/YPS -primitivism/M -primmed -primmer -primmest -primming -primness/MS -primogenitor/MS -primogeniture/MS -primordial/YS -primp/DGS -primrose/MGSD -prim/SPJGZYDR -princedom/MS -princeliness/SM -princely/PRT -Prince/M -prince/SMY -princess/MS -Princeton/M -principality/MS -principal/SY -Principe/M -Principia/M -principled/U -principle/SDMG -printable/U -printably -print/AGDRS -printed/U -printer/AM -printers -printing/SM -printmaker/M -printmake/ZGR -printmaking/M -printout/S -Prinz/M -prioress/MS -priori -prioritize/DSRGZJ -priority/MS -prior/YS -priory/SM -Pris -Prisca/M -Priscella/M -Priscilla/M -prised -prise/GMAS -prismatic -prism/MS -prison/DRMSGZ -prisoner/M -Prissie/M -prissily -prissiness/SM -prissy/RSPT -pristine/Y -prithee/S -privacy/MS -privateer/SMDG -privateness/M -private/NVYTRSXP -privation/MCS -privative/Y -privatization/S -privatize/GSD -privet/SM -privileged/U -privilege/SDMG -privily -privy/SRMT -prized/A -prize/DSRGZM -prizefighter/M -prizefighting/M -prizefight/SRMGJZ -prizewinner/S -prizewinning -Pr/MN -PRO -proactive -probabilist -probabilistic -probabilistically -probability/SM -probable/S -probably -probated/A -probate/NVMX -probates/A -probating/A -probational -probationary/S -probationer/M -probation/MRZ -probation's/A -probative/A -prober/M -probity/SM -problematical/UY -problematic/S -problem/SM -proboscis/MS -prob/RBJ -procaine/MS -procedural/SY -procedure/MS -proceeder/M -proceeding/M -proceed/JRDSG -process/BSDMG -processed/UA -processes/A -processional/YS -procession/GD -processor/MS -proclamation/MS -proclivity/MS -proconsular -procrastinate/XNGDS -procrastination/M -procrastinator/MS -procreational -procreatory -procrustean -Procrustean -Procrustes/M -proctor/GSDM -proctorial -procurable/U -procure/L -procurement/MS -Procyon/M -prodded -prodding -prodigality/S -prodigal/SY -prodigiousness/M -prodigious/PY -prodigy/MS -prod/S -produce/AZGDRS -producer/AM -producible/A -production/ASM -productively/UA -productiveness/MS -productive/PY -productivities -productivity/A -productivity's -productize/GZRSD -product/V -Prof -profanation/S -profaneness/MS -profane/YPDRSG -profanity/MS -professed/Y -professionalism/SM -professionalize/GSD -professional/USY -profession/SM -professorial/Y -professorship/SM -professor/SM -proffer/GSD -proficiency/SM -proficient/YS -profitability/MS -profitableness/MU -profitable/UP -profitably/U -profiteer/GSMD -profiterole/MS -profit/GZDRB -profitless -profligacy/S -profligate/YS -proforma/S -profoundity -profoundness/SM -profound/PTYR -prof/S -profundity/MS -profuseness/MS -profuse/YP -progenitor/SM -progeny/M -progesterone/SM -prognathous -prognoses -prognosis/M -prognosticate/NGVXDS -prognostication/M -prognosticator/S -prognostic/S -program/CSA -programed -programing -programmability -programmable/S -programmed/CA -programmer/ASM -programming/CA -programmings -progression/SM -progressiveness/SM -progressive/SPY -progressivism -progress/MSDVG -prohibiter/M -prohibitionist/MS -prohibition/MS -Prohibition/MS -prohibitiveness/M -prohibitive/PY -prohibitory -prohibit/VGSRD -projected/AU -projectile/MS -projectionist/MS -projection/MS -projective/Y -project/MDVGS -projector/SM -Prokofieff/M -Prokofiev/M -prolegomena -proletarianization/M -proletarianized -proletarian/S -proletariat/SM -proliferate/GNVDSX -proliferation/M -prolifically -prolific/P -prolixity/MS -prolix/Y -prologize -prologue/MGSD -prologuize -prolongate/NGSDX -prolongation/M -prolonger/M -prolong/G -promenade/GZMSRD -promenader/M -Promethean -Prometheus/M -promethium/SM -prominence/MS -prominent/Y -promiscuity/MS -promiscuousness/M -promiscuous/PY -promise/GD -promising/UY -promissory -promontory/MS -promote/GVZBDR -promoter/M -promotiveness/M -promotive/P -prompted/U -prompter/M -promptitude/SM -promptness/MS -prompt/SGJTZPYDR -pro/MS -promulgate/NGSDX -promulgation/M -promulgator/MS -pron -proneness/MS -prone/PY -pronghorn/SM -prong/SGMD -pronominalization -pronominalize -pronounceable/U -pronouncedly -pronounced/U -pronounce/GLSRD -pronouncement/SM -pronouncer/M -pronto -pronunciation/SM -proofed/A -proofer -proofing/M -proofreader/M -proofread/GZSR -proof/SEAM -propaganda/SM -propagandistic -propagandist/SM -propagandize/DSG -propagated/U -propagate/SDVNGX -propagation/M -propagator/MS -propellant/MS -propelled -propeller/MS -propelling -propel/S -propensity/MS -properness/M -proper/PYRT -propertied/U -property/SDM -prophecy/SM -prophesier/M -prophesy/GRSDZ -prophetess/S -prophetic -prophetical/Y -prophet/SM -prophylactic/S -prophylaxes -prophylaxis/M -propinquity/MS -propionate/M -propitiate/GNXSD -propitiatory -propitiousness/M -propitious/YP -proponent/MS -proportionality/M -proportional/SY -proportionate/YGESD -proportioner/M -proportion/ESGDM -proportionment/M -proposal/SM -propped -propping -proprietary/S -proprietorial -proprietorship/SM -proprietor/SM -proprietress/MS -propriety/MS -proprioception -proprioceptive -prop/SZ -propulsion/MS -propulsive -propylene/M -prorogation/SM -prorogue -prosaic -prosaically -proscenium/MS -prosciutti -prosciutto/SM -proscription/SM -proscriptive -pros/DSRG -prosecute/SDBXNG -prosecution/M -prosecutor/MS -proselyte/SDGM -proselytism/MS -proselytize/ZGDSR -prose/M -proser/M -Proserpine/M -prosodic/S -prosody/MS -prospect/DMSVG -prospection/SM -prospectiveness/M -prospective/SYP -prospector/MS -prospectus/SM -prosper/GSD -prosperity/MS -prosperousness/M -prosperous/PY -prostate -prostheses -prosthesis/M -prosthetic/S -prosthetics/M -prostitute/DSXNGM -prostitution/M -prostrate/SDXNG -prostration/M -prosy/RT -protactinium/MS -protagonist/SM -Protagoras/M -protean/S -protease/M -protect/DVGS -protected/UY -protectionism/MS -protectionist/MS -protection/MS -protectiveness/S -protective/YPS -protectorate/SM -protector/MS -prot�g�es -prot�g�/SM -protein/MS -proteolysis/M -proteolytic -Proterozoic/M -protestantism -Protestantism/MS -protestant/S -Protestant/SM -protestation/MS -protest/G -protesting/Y -Proteus/M -protocol/DMGS -protoplasmic -protoplasm/MS -prototype/SDGM -prototypic -prototypical/Y -protozoa -protozoan/MS -protozoic -protozoon's -protract/DG -protrude/SDG -protrusile -protrusion/MS -protrusive/PY -protuberance/S -protuberant -Proudhon/M -proud/TRY -Proust/M -provabilities -provability's -provability/U -provableness/M -provable/P -provably -prov/DRGZB -proved/U -proven/U -prove/ESDAG -provenance/SM -Proven�al -Provencals -Provence/M -provender/SDG -provenience/SM -provenly -proverb/DG -proverbial/Y -Proverbs/M -prover/M -provide/DRSBGZ -provided/U -providence/SM -Providence/SM -providential/Y -provident/Y -provider/M -province/SM -provincialism/SM -provincial/SY -provisional/YS -provisioner/M -provision/R -proviso/MS -provocateur/S -provocativeness/SM -provocative/P -provoked/U -provoke/GZDRS -provoking/Y -provolone/SM -Provo/M -provost/MS -prowess/SM -prowler/M -prowl/RDSZG -prow/TRMS -proximal/Y -proximateness/M -proximate/PY -proximity/MS -Proxmire/M -proxy/SM -Prozac -prude/MS -Prudence/M -prudence/SM -Prudential/M -prudential/SY -prudent/Y -prudery/MS -Prudi/M -prudishness/SM -prudish/YP -Prudy/M -Prue/M -Pruitt/M -Pru/M -prune/DSRGZM -pruner/M -prurience/MS -prurient/Y -Prussia/M -Prussian/S -prussic -Prut/M -Pryce/M -pry/DRSGTZ -pryer's -prying/Y -P's -PS -p's/A -psalmist/SM -psalm/SGDM -Psalms/M -psalter -Psalter/SM -psaltery/MS -psephologist/M -pseudonymous -pseudonym/SM -pseudopod -pseudo/S -pseudoscience/S -pshaw/SDG -psi/S -psittacoses -psittacosis/M -psoriases -psoriasis/M -psst/S -PST -psychedelically -psychedelic/S -psyche/M -Psyche/M -psychiatric -psychiatrist/SM -psychiatry/MS -psychical/Y -psychic/MS -psychoacoustic/S -psychoacoustics/M -psychoactive -psychoanalysis/M -psychoanalyst/S -psychoanalytic -psychoanalytical -psychoanalyze/SDG -psychobabble/S -psychobiology/M -psychocultural -psychodrama/MS -psychogenic -psychokinesis/M -psycholinguistic/S -psycholinguistics/M -psycholinguists -psychological/Y -psychologist/MS -psychology/MS -psychometric/S -psychometrics/M -psychometry/M -psychoneuroses -psychoneurosis/M -psychopathic/S -psychopath/M -psychopathology/M -psychopaths -psychopathy/SM -psychophysical/Y -psychophysic/S -psychophysics/M -psychophysiology/M -psychosis/M -psycho/SM -psychosocial/Y -psychosomatic/S -psychosomatics/M -psychos/S -psychotherapeutic/S -psychotherapist/MS -psychotherapy/SM -psychotically -psychotic/S -psychotropic/S -psychs -psych/SDG -PT -PTA -Ptah/M -ptarmigan/MS -pt/C -pterodactyl/SM -Pt/M -PTO -Ptolemaic -Ptolemaists -Ptolemy/MS -ptomaine/MS -Pu -pubbed -pubbing -pubertal -puberty/MS -pubes -pubescence/S -pubescent -pubic -pubis/M -publican/AMS -publication/AMS -publicist/SM -publicity/SM -publicized/U -publicize/SDG -publicness/M -publics/A -public/YSP -publishable/U -published/UA -publisher/ASM -publishes/A -publishing/M -publish/JDRSBZG -pub/MS -Puccini/M -puce/SM -pucker/DG -Puckett/M -puck/GZSDRM -puckishness/S -puckish/YP -Puck/M -pudding/MS -puddle/JMGRSD -puddler/M -puddling/M -puddly -pudenda -pudendum/M -pudginess/SM -pudgy/PRT -Puebla/M -Pueblo/MS -pueblo/SM -puerile/Y -puerility/SM -puerperal -puers -Puerto/M -puffball/SM -puffer/M -puffery/M -puffiness/S -puffin/SM -Puff/M -puff/SGZDRM -puffy/PRT -Puget/M -pugged -pugging -Pugh/M -pugilism/SM -pugilistic -pugilist/S -pug/MS -pugnaciousness/MS -pugnacious/YP -pugnacity/SM -puissant/Y -puke/GDS -pukka -Pulaski/SM -pulchritude/SM -pulchritudinous/M -pule/GDS -Pulitzer/SM -pullback/S -pull/DRGZSJ -pullet/SM -pulley/SM -Pullman/MS -pullout/S -pullover/SM -pulmonary -pulpiness/S -pulpit/MS -pulp/MDRGS -pulpwood/MS -pulpy/PTR -pulsar/MS -pulsate/NGSDX -pulsation/M -pulse/ADSG -pulser -pulse's -pulverable -pulverization/MS -pulverized/U -pulverize/GZSRD -pulverizer/M -pulverizes/UA -puma/SM -pumice/SDMG -pummel/SDG -pumpernickel/SM -pump/GZSMDR -pumping/M -pumpkin/MS -punchbowl/M -punched/U -puncheon/MS -puncher/M -punch/GRSDJBZ -punchline/S -Punch/M -punchy/RT -punctilio/SM -punctiliousness/SM -punctilious/PY -punctualities -punctuality/UM -punctualness/M -punctual/PY -punctuate/SDXNG -punctuational -punctuation/M -puncture/SDMG -punditry/S -pundit/SM -pungency/MS -pungent/Y -Punic -puniness/MS -punished/U -punisher/M -punishment/MS -punish/RSDGBL -punitiveness/M -punitive/YP -Punjabi/M -Punjab/M -punk/TRMS -punky/PRS -pun/MS -punned -punning -punster/SM -punter/M -punt/GZMDRS -puny/PTR -pupae -pupal -pupa/M -pupate/NGSD -pupillage/M -pupil/SM -pup/MS -pupped -puppeteer/SM -puppetry/MS -puppet/SM -pupping -puppy/GSDM -puppyish -purblind -Purcell/M -purchasable -purchase/GASD -purchaser/MS -purdah/M -purdahs -Purdue/M -purebred/S -puree/DSM -pureeing -pureness/MS -pure/PYTGDR -purgation/M -purgative/MS -purgatorial -purgatory/SM -purge/GZDSR -purger/M -purify/GSRDNXZ -Purim/SM -Purina/M -purine/SM -purism/MS -puristic -purist/MS -puritanic -puritanical/Y -Puritanism/MS -puritanism/S -puritan/SM -Puritan/SM -purity/SM -purlieu/SM -purl/MDGS -purloin/DRGS -purloiner/M -purple/MTGRSD -purplish -purport/DRSZG -purported/Y -purposefulness/S -purposeful/YP -purposelessness/M -purposeless/PY -purpose/SDVGYM -purposiveness/M -purposive/YP -purr/DSG -purring/Y -purse/DSRGZM -purser/M -pursuance/MS -pursuant -pursuer/M -pursue/ZGRSD -pursuit/MS -purulence/MS -purulent -Purus -purveyance/MS -purvey/DGS -purveyor/MS -purview/SM -Pusan/M -Pusey/M -pushbutton/S -pushcart/SM -pushchair/SM -pushdown -push/DSRBGZ -pusher/M -pushily -pushiness/MS -Pushkin/M -pushover/SM -Pushtu/M -pushy/PRT -pusillanimity/MS -pusillanimous/Y -pus/SM -puss/S -pussycat/S -pussyfoot/DSG -pussy/TRSM -pustular -pustule/MS -putative/Y -Putin/M -put/IS -Putnam/M -Putnem/M -putout/S -putrefaction/SM -putrefactive -putrefy/DSG -putrescence/MS -putrescent -putridity/M -putridness/M -putrid/YP -putsch/S -putted/I -puttee/MS -putter/RDMGZ -putting/I -putt/SGZMDR -puttying/M -putty/SDMG -puzzle/JRSDZLG -puzzlement/MS -puzzler/M -PVC -pvt -Pvt/M -PW -PX -p/XTGJ -Pygmalion/M -pygmy/SM -Pygmy/SM -Pyhrric/M -pyknotic -Pyle/M -pylon/SM -pylori -pyloric -pylorus/M -Pym/M -Pynchon/M -Pyongyang/M -pyorrhea/SM -Pyotr/M -pyramidal/Y -pyramid/GMDS -pyre/MS -Pyrenees -Pyrex/SM -pyridine/M -pyrimidine/SM -pyrite/MS -pyroelectric -pyroelectricity/SM -pyrolysis/M -pyrolyze/RSM -pyromaniac/SM -pyromania/MS -pyrometer/MS -pyrometry/M -pyrophosphate/M -pyrotechnical -pyrotechnic/S -pyrotechnics/M -pyroxene/M -pyroxenite/M -Pyrrhic -Pythagoras/M -Pythagorean/S -Pythias -Python/M -python/MS -pyx/MDSG -q -Q -QA -Qaddafi/M -Qantas/M -Qatar/M -QB -QC -QED -Qingdao -Qiqihar/M -QM -Qom/M -qr -q's -Q's -qt -qty -qua -Quaalude/M -quackery/MS -quackish -quack/SDG -quadded -quadding -quadrangle/MS -quadrangular/M -quadrant/MS -quadraphonic/S -quadrapole -quadratical/Y -quadratic/SM -quadrature/MS -quadrennial/SY -quadrennium/MS -quadric -quadriceps/SM -quadrilateral/S -quadrille/XMGNSD -quadrillion/MH -quadripartite/NY -quadriplegia/SM -quadriplegic/SM -quadrivia -quadrivium/M -quadrupedal -quadruped/MS -quadruple/GSD -quadruplet/SM -quadruplicate/GDS -quadruply/NX -quadrupole -quad/SM -quadword/MS -quaffer/M -quaff/SRDG -quagmire/DSMG -quahog/MS -quail/GSDM -quaintness/MS -quaint/PTYR -quake/GZDSR -Quakeress/M -Quakerism/S -Quaker/SM -quaky/RT -qualification/ME -qualified/UY -qualifier/SM -qualify/EGXSDN -qualitative/Y -quality/MS -qualmish -qualm/SM -quandary/MS -quangos -quanta/M -Quantico/M -quantifiable/U -quantified/U -quantifier/M -quantify/GNSRDZX -quantile/S -quantitativeness/M -quantitative/PY -quantity/MS -quantization/MS -quantizer/M -quantize/ZGDRS -quantum/M -quarantine/DSGM -quark/SM -quarreler/M -quarrellings -quarrelsomeness/MS -quarrelsome/PY -quarrel/SZDRMG -quarrier/M -quarryman/M -quarrymen -quarry/RSDGM -quarterback/SGMD -quarterdeck/MS -quarterer/M -quarterfinal/MS -quartering/M -quarterly/S -quartermaster/MS -quarter/MDRYG -quarterstaff/M -quarterstaves -quartet/SM -quartic/S -quartile/SM -quarto/SM -quart/RMSZ -quartzite/M -quartz/SM -quasar/SM -quash/GSD -quasi -quasilinear -Quasimodo/M -Quaternary -quaternary/S -quaternion/SM -quatrain/SM -quaver/GDS -quavering/Y -quavery -Quayle/M -quayside/M -quay/SM -queasily -queasiness/SM -queasy/TRP -Quebec/M -Quechua/M -Queenie/M -queenly/RT -queen/SGMDY -Queensland/M -Queen/SM -queerness/S -queer/STGRDYP -queller/M -quell/SRDG -Que/M -quenchable/U -quenched/U -quencher/M -quench/GZRSDB -quenchless -Quentin/M -Quent/M -Querida/M -quern/M -querulousness/S -querulous/YP -query/MGRSD -quested/A -quester/AS -quester's -quest/FSIM -questing -questionableness/M -questionable/P -questionably/U -questioned/UA -questioner/M -questioning/UY -questionnaire/MS -question/SMRDGBZJ -quests/A -Quetzalcoatl/M -queued/C -queue/GZMDSR -queuer/M -queues/C -queuing/C -Quezon/M -quibble/GZRSD -quibbler/M -quiche/SM -quicken/RDG -quickie/MS -quicklime/SM -quickness/MS -quick/RNYTXPS -quicksand/MS -quicksilver/GDMS -quickstep/SM -quid/SM -quiesce/D -quiescence/MS -quiescent/YP -quieted/E -quieten/SGD -quieter/E -quieter's -quieting/E -quietly/E -quietness/MS -quiets/E -quietude/IEMS -quietus/MS -quiet/UTGPSDRY -Quillan/M -quill/GSDM -Quill/M -quilter/M -quilting/M -quilt/SZJGRDM -quincentenary/M -quince/SM -Quincey/M -quincy/M -Quincy/M -quinine/MS -Quinlan/M -Quinn/M -quinquennial/Y -quinsy/SM -Quinta/M -Quintana/M -quintessence/SM -quintessential/Y -quintet/SM -quintic -quintile/SM -Quintilian/M -Quintilla/M -quintillion/MH -quintillionth/M -Quintina/M -Quintin/M -Quint/M -quint/MS -Quinton/M -quintuple/SDG -quintuplet/MS -Quintus/M -quip/MS -quipped -quipper -quipping -quipster/SM -quired/AI -quire/MDSG -quires/AI -Quirinal/M -quiring/IA -quirkiness/SM -quirk/SGMD -quirky/PTR -quirt/SDMG -Quisling/M -quisling/SM -quitclaim/GDMS -quit/DGS -quite/SADG -Quito/M -quittance/SM -quitter/SM -quitting -quiver/GDS -quivering/Y -quivery -Quixote/M -quixotic -quixotically -Quixotism/M -quiz/M -quizzed -quizzer/SM -quizzes -quizzical/Y -quizzing -quo/H -quoin/SGMD -quoit/GSDM -quondam -quonset -Quonset -quorate/I -quorum/MS -quotability/S -quota/MS -quotation/SM -quoter/M -quote/UGSD -quot/GDRB -quotidian/S -quotient/SM -qwerty -qwertys -Rabat/M -rabbet/GSMD -Rabbi/M -rabbi/MS -rabbinate/MS -rabbinic -rabbinical/Y -rabbiter/M -rabbit/MRDSG -rabble/GMRSD -rabbler/M -Rabelaisian -Rabelais/M -rabidness/SM -rabid/YP -rabies -Rabi/M -Rabin/M -rabis -Rab/M -raccoon/SM -racecourse/MS -racegoers -racehorse/SM -raceme/MS -race/MZGDRSJ -racer/M -racetrack/SMR -raceway/SM -Rachael/M -Rachele/M -Rachelle/M -Rachel/M -Rachmaninoff/M -racialism/MS -racialist/MS -racial/Y -racily -Racine/M -raciness/MS -racism/S -racist/MS -racketeer/MDSJG -racket/SMDG -rackety -rack/GDRMS -raconteur/SM -racoon's -racquetball/S -racquet's -racy/RTP -radarscope/MS -radar/SM -Radcliffe/M -radded -radder -raddest -Raddie/M -radding -Raddy/M -radial/SY -radiance/SM -radian/SM -radiant/YS -radiate/XSDYVNG -radiation/M -radiative/Y -radiator/MS -radicalism/MS -radicalization/S -radicalize/GSD -radicalness/M -radical/SPY -radices's -radii/M -radioactive/Y -radioactivity/MS -radioastronomical -radioastronomy -radiocarbon/MS -radiochemical/Y -radiochemistry/M -radiogalaxy/S -radiogram/SM -radiographer/MS -radiographic -radiography/MS -radioisotope/SM -radiologic -radiological/Y -radiologist/MS -radiology/MS -radioman/M -radiomen -radiometer/SM -radiometric -radiometry/MS -radionics -radionuclide/M -radiopasteurization -radiophone/MS -radiophysics -radioscopy/SM -radio/SMDG -radiosonde/SM -radiosterilization -radiosterilized -radiotelegraph -radiotelegraphs -radiotelegraphy/MS -radiotelephone/SM -radiotherapist/SM -radiotherapy/SM -radish/MS -radium/MS -radius/M -radix/SM -Rad/M -radon/SM -rad/S -Raeann/M -Rae/M -RAF -Rafaela/M -Rafaelia/M -Rafaelita/M -Rafaellle/M -Rafaello/M -Rafael/M -Rafa/M -Rafe/M -Raffaello/M -Raffarty/M -Rafferty/M -raffia/SM -raffishness/SM -raffish/PY -raffle/MSDG -Raff/M -Rafi/M -Raf/M -rafter/DM -raft/GZSMDR -raga/MS -ragamuffin/MS -ragbag/SM -rage/MS -raggedness/SM -ragged/PRYT -raggedy/TR -ragging -rag/GSMD -raging/Y -raglan/MS -Ragnar/M -Ragnar�k -ragout/SMDG -ragtag/MS -ragtime/MS -ragweed/MS -ragwort/M -Rahal/M -rah/DG -Rahel/M -rahs -raider/M -raid/MDRSGZ -railbird/S -rail/CDGS -railer/SM -railhead/SM -railing/MS -raillery/MS -railroader/M -railroading/M -railroad/SZRDMGJ -rail's -railwaymen -railway/MS -raiment/SM -Raimondo/M -Raimund/M -Raimundo/M -Raina/M -rainbow/MS -raincloud/S -raincoat/SM -raindrop/SM -Raine/MR -Rainer/M -rainfall/SM -rainforest's -rain/GSDM -Rainier/M -rainless -rainmaker/SM -rainmaking/MS -rainproof/GSD -rainstorm/SM -rainwater/MS -rainy/RT -raise/DSRGZ -raiser/M -raising/M -raisin/MS -rajah/M -rajahs -Rajive/M -raj/M -Rakel/M -rake/MGDRS -raker/M -rakishness/MS -rakish/PY -Raleigh/M -Ralf/M -Ralina/M -rally/GSD -Ralph/M -Ralston/M -Ra/M -Ramada/M -Ramadan/SM -Ramakrishna/M -Rama/M -Raman/M -Ramayana/M -ramble/JRSDGZ -rambler/M -rambling/Y -Rambo/M -rambunctiousness/S -rambunctious/PY -ramekin/SM -ramie/MS -ramification/M -ramify/XNGSD -Ramirez/M -Ramiro/M -ramjet/SM -Ram/M -rammed -ramming -Ramo/MS -Ramona/M -Ramonda/M -Ramon/M -rampage/SDG -rampancy/S -rampant/Y -rampart/SGMD -ramp/GMDS -ramrodded -ramrodding -ramrod/MS -RAM/S -Ramsay/M -Ramses/M -Ramsey/M -ramshackle -ram/SM -rams/S -ran/A -Rana/M -Rancell/M -Rance/M -rancher/M -rancho/SM -ranch/ZRSDMJG -rancidity/MS -rancidness/SM -rancid/P -rancorous/Y -rancor/SM -Randall/M -Randal/M -Randa/M -Randee/M -Randell/M -Randene/M -Randie/M -Randi/M -randiness/S -Rand/M -rand/MDGS -Randolf/M -Randolph/M -randomization/SM -randomize/SRDG -randomness/SM -random/PYS -Randy/M -randy/PRST -Ranee/M -ranee/SM -ranged/C -rangeland/S -ranger/M -ranges/C -range/SM -rang/GZDR -ranginess/S -ranging/C -Rangoon/M -rangy/RPT -Rania/M -Ranice/M -Ranier/M -Rani/MR -Ranique/M -rani's -ranked/U -ranker/M -rank/GZTYDRMPJS -Rankine/M -ranking/M -Rankin/M -rankle/SDG -rankness/MS -Ranna/M -ransacker/M -ransack/GRDS -Ransell/M -ransomer/M -Ransom/M -ransom/ZGMRDS -ranter/M -rant/GZDRJS -ranting/Y -Raoul/M -rapaciousness/MS -rapacious/YP -rapacity/MS -rapeseed/M -rape/SM -Raphaela/M -Raphael/M -rapidity/MS -rapidness/S -rapid/YRPST -rapier/SM -rapine/SM -rapist/MS -rap/MDRSZG -rapped -rappelled -rappelling -rappel/S -rapper/SM -rapping/M -rapporteur/SM -rapport/SM -rapprochement/SM -rapscallion/MS -raptness/S -rapture/MGSD -rapturousness/M -rapturous/YP -rapt/YP -Rapunzel/M -Raquela/M -Raquel/M -rarebit/MS -rarefaction/MS -rarefy/GSD -rareness/MS -rare/YTPGDRS -rarity/SM -Rasalgethi/M -Rasalhague/M -rascal/SMY -rasher/M -rashness/S -rash/PZTYSR -Rasia/M -Rasla/M -Rasmussen/M -raspberry/SM -rasper/M -rasping/Y -rasp/SGJMDR -Rasputin/M -raspy/RT -Rastaban/M -Rastafarian/M -raster/MS -Rastus/M -ratchet/MDSG -rateable -rated/U -rate/KNGSD -ratepayer/SM -rater/M -rate's -Ratfor/M -rather -Rather/M -rathskeller/SM -ratifier/M -ratify/ZSRDGXN -rating/M -ratiocinate/VNGSDX -ratiocination/M -ratio/MS -rationale/SM -rationalism/SM -rationalistic -rationalist/S -rationality/MS -rationalization/SM -rationalizer/M -rationalize/ZGSRD -rationalness/M -rational/YPS -ration/DSMG -Ratliff/M -ratlike -ratline/SM -rat/MDRSJZGB -rattail -rattan/MS -ratted -ratter/MS -ratting -rattlebrain/DMS -rattle/RSDJGZ -rattlesnake/MS -rattletrap/MS -rattling/Y -rattly/TR -rattrap/SM -ratty/RT -raucousness/SM -raucous/YP -Raul/M -raunchily -raunchiness/S -raunchy/RTP -ravage/GZRSD -ravager/M -raveling/S -Ravel/M -ravel/UGDS -raven/JGMRDS -Raven/M -ravenous/YP -raver/M -rave/ZGDRSJ -Ravid/M -Ravi/M -ravine/SDGM -ravioli/SM -ravisher/M -ravishing/Y -ravish/LSRDZG -ravishment/SM -Raviv/M -Rawalpindi/M -rawboned -rawhide/SDMG -Rawley/M -Rawlings/M -Rawlins/M -Rawlinson/M -rawness/SM -raw/PSRYT -Rawson/M -Rayburn/M -Raychel/M -Raye/M -ray/GSMD -Rayleigh/M -Ray/M -Raymond/M -Raymondville/M -Raymund/M -Raymundo/M -Rayna/M -Raynard/M -Raynell/M -Rayner/M -Raynor/M -rayon/SM -Rayshell/M -Raytheon/M -raze/DRSG -razer/M -razorback/SM -razorblades -razor/MDGS -razz/GDS -razzmatazz/S -Rb -RBI/S -RC -RCA -rcpt -RCS -rd -RD -RDA -Rd/M -reabbreviate -reachability -reachable/U -reachably -reached/U -reacher/M -reach/GRB -reacquisition -reactant/SM -reacted/U -reaction -reactionary/SM -reactivity -readability/MS -readable/P -readably -readdress/G -Reade/M -reader/M -readership/MS -Read/GM -readied -readies -readily -readinesses -readiness/UM -reading/M -Reading/M -read/JGZBR -readopt/G -readout/MS -reads/A -readying -ready/TUPR -Reagan/M -Reagen/M -realisms -realism's -realism/U -realistically/U -realistic/U -realist/SM -reality/USM -realizability/MS -realizableness/M -realizable/SMP -realizably/S -realization/MS -realized/U -realize/JRSDBZG -realizer/M -realizes/U -realizing/MY -realm/M -realness/S -realpolitik/SM -real/RSTP -realtor's -Realtor/S -realty/SM -Rea/M -reamer/M -ream/MDRGZ -Reamonn/M -reanimate -reaper/M -reappraise/G -reap/SGZ -rear/DRMSG -rearguard/MS -rearmost -rearrange/L -rearward/S -reasonableness/SMU -reasonable/UP -reasonably/U -Reasoner/M -reasoner/SM -reasoning/MS -reasonless -reasons -reason/UBDMG -reassess/GL -reassuringly/U -reattach/GSL -reawakening/M -Reba/M -rebate/M -Rebbecca/M -Rebeca/M -Rebecca's -Rebecka/M -Rebekah/M -Rebeka/M -Rebekkah/M -rebeller -rebellion/SM -rebelliousness/MS -rebellious/YP -rebel/MS -Rebe/M -rebid -rebidding -rebind/G -rebirth -reboil/G -rebook -reboot/ZR -rebound/G -rebroadcast/MG -rebuke/RSDG -rebuking/Y -rebus -rebuttal/SM -rebutting -rec -recalcitrance/SM -recalcitrant/S -recalibrate/N -recantation/S -recant/G -recap -recappable -recapping -recast/G -recd -rec'd -recede -receipt/SGDM -receivable/S -received/U -receiver/M -receivership/SM -receive/ZGRSDB -recency/M -recension/M -recentness/SM -recent/YPT -receptacle/SM -receptionist/MS -reception/MS -receptiveness/S -receptive/YP -receptivity/S -receptor/MS -recessional/S -recessionary -recessiveness/M -recessive/YPS -recess/SDMVG -rechargeable -recheck/G -recherch� -recherches -recidivism/MS -recidivist/MS -Recife/M -recipe/MS -recipiency -recipient/MS -reciprocal/SY -reciprocate/NGXVDS -reciprocation/M -reciprocity/MS -recitalist/S -recital/MS -recitative/MS -reciter/M -recite/ZR -recked -recking -recklessness/S -reckless/PY -reckoner/M -reckoning/M -reckon/SGRDJ -reclaim/B -reclamation/SM -recliner/M -recline/RSDZG -recluse/MVNS -reclusion/M -recode/G -recognizability -recognizable/U -recognizably -recognize/BZGSRD -recognizedly/S -recognized/U -recognizer/M -recognizingly/S -recognizing/UY -recoilless -recoinage -recolor/GD -recombinant -recombine -recommended/U -recompense/GDS -recompute/B -reconciled/U -reconciler/M -reconcile/SRDGB -reconditeness/M -recondite/YP -reconfigurability -reconfigure/R -reconnaissance/MS -reconnect/R -reconnoiter/GSD -reconquer/G -reconsecrate -reconstitute -reconstructed/U -Reconstruction/M -reconsult/G -recontact/G -recontaminate/N -recontribute -recook/G -recopy/G -recorded/AU -records/A -record/ZGJ -recourse -recoverability -recoverable/U -recover/B -recovery/MS -recreant/S -recreational -recriminate/GNVXDS -recrimination/M -recriminatory -recross/G -recrudesce/GDS -recrudescence/MS -recrudescent -recruiter/M -recruitment/MS -recruit/ZSGDRML -recrystallize -rectal/Y -rectangle/SM -rectangular/Y -recta's -rectifiable -rectification/M -rectifier/M -rectify/DRSGXZN -rectilinear/Y -rectitude/MS -recto/MS -rector/SM -rectory/MS -rectum/SM -recumbent/Y -recuperate/VGNSDX -recuperation/M -recur -recurrence/MS -recurrent -recurse/NX -recursion/M -recusant/M -recuse -recyclable/S -recycle/BZ -redact/DGS -redaction/SM -redactor/MS -redbird/SM -redbreast/SM -redbrick/M -redbud/M -redcap/MS -redcoat/SM -redcurrant/M -redden/DGS -redder -reddest -redding -reddish/P -Redd/M -redeclaration -redecorate -redeemable/U -redeem/BRZ -redeemed/U -redeemer/M -Redeemer/M -redemptioner/M -redemption/RMS -redemptive -redeposit/M -redetermination -Redford/M -Redgrave/M -redhead/DRMS -Redhook/M -redial/G -redirect/G -redirection -redlining/S -Redmond/M -redneck/SMD -redness/MS -redo/G -redolence/MS -redolent -Redondo/M -redouble/S -redoubtably -redound/GDS -red/PYS -redshift/S -redskin/SM -Redstone/M -reduced/U -reducer/M -reduce/RSDGZ -reducibility/M -reducible -reducibly -reductionism/M -reductionist/S -reduction/SM -reduct/V -redundancy/SM -redundant/Y -redwood/SM -redye -redyeing -Reeba/M -Reebok/M -Reece/M -reecho/G -reed/GMDR -reediness/SM -reeding/M -Reed/M -Reedville/M -reedy/PTR -reefer/M -reef/GZSDRM -reeker/M -reek/GSR -reeler/M -reel's -reel/USDG -Ree/MDS -Reena/M -reenforcement -reentrant -Reese/M -reestimate/M -Reeta/M -Reeva/M -reeve/G -Reeves -reexamine -refection/SM -refectory/SM -refer/B -refereed/U -refereeing -referee/MSD -reference/CGSRD -referenced/U -reference's -referencing/U -referendum/MS -referentiality -referential/YM -referent/SM -referral/SM -referred -referrer/S -referring -reffed -reffing -refile -refinance -refined/U -refine/LZ -refinement/MS -refinish/G -refit -reflectance/M -reflected/U -reflectional -reflection/SM -reflectiveness/M -reflective/YP -reflectivity/M -reflector/MS -reflect/SDGV -reflexion/MS -reflexiveness/M -reflexive/PSY -reflexivity/M -reflex/YV -reflooring -refluent -reflux/G -refocus/G -refold/G -reforestation -reforge/G -reformatory/SM -reform/B -reformed/U -reformer/M -reformism/M -reformist/S -refract/DGVS -refractiveness/M -refractive/PY -refractometer/MS -refractoriness/M -refractory/PS -refrain/DGS -refreshed/U -refreshing/Y -refresh/LB -refreshment/MS -refrigerant/MS -refrigerated/U -refrigerate/XDSGN -refrigeration/M -refrigerator/MS -refrozen -refry/GS -refugee/MS -refuge/SDGM -Refugio/M -refulgence/SM -refulgent -refund/B -refunder/M -refurbish/L -refurbishment/S -refusal/SM -refuse/R -refuser/M -refutation/MS -refute/GZRSDB -refuter/M -ref/ZS -reg -regale/L -regalement/S -regal/GYRD -regalia/M -Regan/M -regard/EGDS -regardless/PY -regather/G -regatta/MS -regency/MS -regeneracy/MS -regenerately -regenerateness/M -regenerate/U -Regen/M -reggae/SM -Reggie/M -Reggi/MS -Reggy/M -regicide/SM -regime/MS -regimen/MS -regimental/S -regimentation/MS -regiment/SDMG -Reginae -Reginald/M -Regina/M -Reginauld/M -Regine/M -regionalism/MS -regional/SY -region/SM -Regis/M -register's -register/UDSG -registrable -registrant/SM -registrar/SM -registration/AM -registrations -registry/MS -Reg/MN -regnant -Regor/M -regress/DSGV -regression/MS -regressiveness/M -regressive/PY -regressors -regretfulness/M -regretful/PY -regret/S -regrettable -regrettably -regretted -regretting -reground -regroup/G -regrow/G -regularity/MS -regularization/MS -regularize/SDG -regular/YS -regulate/CSDXNG -regulated/U -regulation/M -regulative -regulator/SM -regulatory -Regulus/M -regurgitate/XGNSD -regurgitation/M -rehabbed -rehabbing -rehabilitate/SDXVGN -rehabilitation/M -rehab/S -rehang/G -rehear/GJ -rehearsal/SM -rehearse -rehearsed/U -rehearser/M -rehears/R -reheat/G -reheating/M -Rehnquist -rehydrate -Reichenberg/M -Reich/M -Reichstags -Reichstag's -Reidar/M -Reider/M -Reid/MR -reign/MDSG -Reiko/M -Reilly/M -reimburse/GSDBL -reimbursement/MS -Reinald/M -Reinaldo/MS -Reina/M -reindeer/M -Reine/M -reinforced/U -reinforce/GSRDL -reinforcement/MS -reinforcer/M -rein/GDM -Reinhard/M -Reinhardt/M -Reinhold/M -Reinold/M -reinstate/L -reinstatement/MS -reinsurance -Reinwald/M -reissue -REIT -reiterative/SP -rejecter/M -rejecting/Y -rejection/SM -rejector/MS -reject/RDVGS -rejigger -rejoice/RSDJG -rejoicing/Y -rejoinder/SM -rejuvenate/NGSDX -rejuvenatory -relapse -relatedly -relatedness/MS -related/U -relater/M -relate/XVNGSZ -relational/Y -relation/M -relationship/MS -relativeness/M -relative/SPY -relativism/M -relativistic -relativistically -relativist/MS -relativity/MS -relator's -relaxant/SM -relaxation/MS -relaxedness/M -relaxed/YP -relax/GZD -relaxing/Y -relay/GDM -relearn/G -releasable/U -release/B -released/U -relenting/U -relentlessness/SM -relentless/PY -relent/SDG -relevance/SM -relevancy/MS -relevant/Y -reliability/UMS -reliables -reliable/U -reliably/U -reliance/MS -reliant/Y -relicense/R -relic/MS -relict/C -relict's -relief/M -relievedly -relieved/U -reliever/M -relieve/RSDZG -religionists -religion/SM -religiosity/M -religiousness/MS -religious/PY -relink/G -relinquish/GSDL -relinquishment/SM -reliquary/MS -relish/GSD -relive/GB -reload/GR -relocate/B -reluctance/MS -reluctant/Y -rel/V -rely/DG -rem -Re/M -remade/S -remainder/SGMD -remain/GD -remake/M -remand/DGS -remap -remapping -remarkableness/S -remarkable/U -remarkably -remark/BG -remarked/U -Remarque/M -rematch/G -Rembrandt/M -remeasure/D -remediableness/M -remediable/P -remedy/SDMG -remembered/U -rememberer/M -remember/GR -remembrance/MRS -remembrancer/M -Remington/M -reminisce/GSD -reminiscence/SM -reminiscent/Y -remissness/MS -remiss/YP -remit/S -remittance/MS -remitted -remitting/U -Rem/M -remnant/MS -remodel/G -remolding -remonstrant/MS -remonstrate/SDXVNG -remonstration/M -remonstrative/Y -remorsefulness/M -remorseful/PY -remorselessness/MS -remorseless/YP -remorse/SM -remoteness/MS -remote/RPTY -remoulds -removal/MS -REM/S -remunerated/U -remunerate/VNGXSD -remuneration/M -remunerativeness/M -remunerative/YP -Remus/M -Remy/M -Renado/M -Renae/M -renaissance/S -Renaissance/SM -renal -Renaldo/M -Rena/M -Renard/M -Renascence/SM -Renata/M -Renate/M -Renato/M -renaturation -Renaud/M -Renault/MS -rend -renderer/M -render/GJRD -rendering/M -rendezvous/DSMG -rendition/GSDM -rend/RGZS -Renee/M -renegade/SDMG -renege/GZRSD -reneger/M -Renelle/M -Renell/M -Rene/M -renewal/MS -renew/BG -renewer/M -Renie/M -rennet/MS -Rennie/M -rennin/SM -Renoir/M -Reno/M -renounce/LGRSD -renouncement/MS -renouncer/M -renovate/NGXSD -renovation/M -renovator/SM -renown/SGDM -Rensselaer/M -rentaller -rental/SM -renter/M -rent/GZMDRS -renumber/G -renumeration -renunciate/VNX -renunciation/M -Renville/M -reoccupy/G -reopen/G -reorganized/U -repack/G -repairable/U -repair/BZGR -repairer/M -repairman/M -repairmen -repairs/E -repaper -reparable -reparation/SM -reparteeing -repartee/MDS -repartition/Z -repast/G -repatriate/SDXNG -repave -repealer/M -repeal/GR -repeatability/M -repeatable/U -repeatably -repeated/Y -repeater/M -repeat/RDJBZG -repelled -repellent/SY -repelling/Y -repel/S -repentance/SM -repentant/SY -repent/RDG -repertoire/SM -repertory/SM -repetition -repetitiousness/S -repetitious/YP -repetitiveness/MS -repetitive/PY -repine/R -repiner/M -replace/RL -replay/GM -replenish/LRSDG -replenishment/S -repleteness/MS -replete/SDPXGN -repletion/M -replica/SM -replicate/SDVG -replicator/S -replug -reply/X -Rep/M -repopulate -reported/Y -reportorial/Y -reposeful -repose/M -repository/MS -reprehend/GDS -reprehensibility/MS -reprehensibleness/M -reprehensible/P -reprehensibly -reprehension/MS -representable/U -representational/Y -representativeness/M -Representative/S -representative/SYMP -representativity -represented/U -represent/GB -repression/SM -repressiveness/M -repressive/YP -repress/V -reprieve/GDS -reprimand/SGMD -reprint/M -reprisal/MS -reproacher/M -reproachfulness/M -reproachful/YP -reproach/GRSDB -reproaching/Y -reprobate/N -reprocess/G -reproducibility/MS -reproducible/S -reproducibly -reproductive/S -reproof/G -reprove/R -reproving/Y -rep/S -reptile/SM -reptilian/S -Republicanism/S -republicanism/SM -Republican/S -republic/M -republish/G -repudiate/XGNSD -repudiation/M -repudiator/S -repugnance/MS -repugnant/Y -repulse/VNX -repulsion/M -repulsiveness/MS -repulsive/PY -reputability/SM -reputably/E -reputation/SM -reputed/Y -repute/ESB -reputing -requested/U -request/G -Requiem/MS -requiem/SM -require/LR -requirement/MS -requisiteness/M -requisite/PNXS -requisitioner/M -requisition/GDRM -requital/MS -requited/U -requiter/M -requite/RZ -reread/G -rerecord/G -rerouteing -rerunning -res/C -rescale -rescind/SDRG -rescission/SM -rescue/GZRSD -reseal/BG -research/MB -reselect/G -resemblant -resemble/DSG -resend/G -resent/DSLG -resentfulness/SM -resentful/PY -resentment/MS -reserpine/MS -reservation/MS -reservednesses -reservedness/UM -reserved/UYP -reservist/SM -reservoir/MS -reset/RDG -resettle/L -reshipping -reshow/G -reshuffle/M -reside/G -residence/MS -residency/SM -residential/Y -resident/SM -resider/M -residua -residual/YS -residuary -residue/SM -residuum/M -resignation/MS -resigned/YP -resilience/MS -resiliency/S -resilient/Y -resin/D -resinlike -resinous -resiny -resistance/SM -Resistance/SM -resistantly -resistants -resistant/U -resisted/U -resistible -resistibly -resisting/U -resistiveness/M -resistive/PY -resistivity/M -resistless -resistor/MS -resist/RDZVGS -resize/G -resold -resole/G -resoluble -resoluteness/MS -resolute/PYTRV -resolvability/M -resolvable/U -resolved/U -resolvent -resonance/SM -resonant/YS -resonate/DSG -resonator/MS -resorption/MS -resort/R -resound/G -resourcefulness/SM -resourceful/PY -resp -respectability/SM -respectable/SP -respectably -respect/BSDRMZGV -respected/E -respectful/EY -respectfulness/SM -respecting/E -respectiveness/M -respective/PY -respect's/E -respects/E -respell/G -respiration/MS -respirator/SM -respiratory/M -resplendence/MS -resplendent/Y -respondent/MS -respond/SDRZG -responser/M -response/RSXMV -responsibility/MS -responsibleness/M -responsible/P -responsibly -responsiveness/MSU -responsive/YPU -respray/G -restart/B -restate/L -restaurant/SM -restaurateur/SM -rest/DRSGVM -rested/U -rester/M -restfuller -restfullest -restfulness/MS -restful/YP -restitution/SM -restiveness/SM -restive/PY -restlessness/MS -restless/YP -restorability -Restoration/M -restoration/MS -restorative/PYS -restorer/M -restore/Z -restrained/UY -restraint/MS -restrict/DVGS -restricted/YU -restriction/SM -restrictively -restrictiveness/MS -restrictives -restrictive/U -restroom/SM -restructurability -restructure -rest's/U -rests/U -restudy/M -restyle -resubstitute -resultant/YS -result/SGMD -resume/SDBG -resumption/MS -resurface -resurgence/MS -resurgent -resurrect/GSD -resurrection/SM -resurvey/G -resuscitate/XSDVNG -resuscitation/M -resuscitator/MS -retail/Z -retainer/M -retain/LZGSRD -retake -retaliate/VNGXSD -retaliation/M -retaliatory -Reta/M -retardant/SM -retardation/SM -retarder/M -retard/ZGRDS -retch/SDG -retention/SM -retentiveness/S -retentive/YP -retentivity/M -retest/G -Retha/M -rethought -reticence/S -reticent/Y -reticle/SM -reticular -reticulate/GNYXSD -reticulation/M -reticule/MS -reticulum/M -retinal/S -retina/SM -retinue/MS -retiredness/M -retiree/MS -retire/L -retirement/SM -retiring/YP -retort/GD -retract/DG -retractile -retrench/L -retrenchment/MS -retributed -retribution/MS -retributive -retrieval/SM -retriever/M -retrieve/ZGDRSB -retroactive/Y -retrofire/GMSD -retrofit/S -retrofitted -retrofitting -retroflection -retroflex/D -retroflexion/M -retrogradations -retrograde/GYDS -retrogression/MS -retrogressive/Y -retrogress/SDVG -retrorocket/MS -retro/SM -retrospection/MS -retrospective/SY -retrospect/SVGMD -retrovirus/S -retrovision -retry/G -retsina/SM -returnable/S -returned/U -returnee/SM -retype -Reube/M -Reuben/M -Reub/NM -Reunion/M -reuse/B -Reuters -Reuther/M -reutilization -Reuven/M -Reva/M -revanchist -revealed/U -revealingly -revealing/U -reveal/JBG -reveille/MS -revelation/MS -Revelation/MS -revelatory -revelry/MS -revel/SJRDGZ -revenge/MGSRD -revenger/M -revenuer/M -revenue/ZR -reverberant -reverberate/XVNGSD -reverberation/M -revere/GSD -Revere/M -reverencer/M -reverence/SRDGM -Reverend -reverend/SM -reverential/Y -reverent/Y -reverie/SM -reversal/MS -reverser/M -reverse/Y -reversibility/M -reversible/S -reversibly -reversioner/M -reversion/R -revers/M -reverter/M -revertible -revert/RDVGS -revet/L -revetment/SM -review/G -revile/GZSDL -revilement/MS -reviler/M -revise/BRZ -revised/U -revisionary -revisionism/SM -revisionist/SM -revitalize/ZR -revivalism/MS -revivalist/MS -revival/SM -reviver/M -revive/RSDG -revivification/M -revivify/X -Revkah/M -Revlon/M -Rev/M -revocable -revoke/GZRSD -revolter/M -revolt/GRD -revolting/Y -revolutionariness/M -revolutionary/MSP -revolutionist/MS -revolutionize/GDSRZ -revolutionizer/M -revolution/SM -revolve/BSRDZJG -revolver/M -revue/MS -revulsion/MS -revved -revving -rev/ZM -rewarded/U -rewarding/Y -rewarm/G -reweave -rewedding -reweigh/G -rewind/BGR -rewire/G -rework/G -rexes -Rex/M -Reyes -Reykjavik/M -re/YM -Rey/M -Reynaldo/M -Reyna/M -Reynard/M -Reynold/SM -rezone -Rf -RF -RFC -RFD -R/G -rhapsodic -rhapsodical -rhapsodize/GSD -rhapsody/SM -Rhea/M -rhea/SM -Rheba/M -Rhee/M -Rheims/M -Rheinholdt/M -Rhenish -rhenium/MS -rheology/M -rheostat/MS -rhesus/S -Rheta/M -rhetorical/YP -rhetorician/MS -rhetoric/MS -Rhetta/M -Rhett/M -rheumatically -rheumatic/S -rheumatics/M -rheumatism/SM -rheumatoid -rheum/MS -rheumy/RT -Rhiamon/M -Rhianna/M -Rhiannon/M -Rhianon/M -Rhinelander/M -Rhineland/RM -Rhine/M -rhinestone/SM -rhinitides -rhinitis/M -rhinoceros/MS -rhino/MS -rhinotracheitis -rhizome/MS -Rh/M -Rhoda/M -Rhodes -Rhodesia/M -Rhodesian/S -Rhodia/M -Rhodie/M -rhodium/MS -rhododendron/SM -rhodolite/M -rhodonite/M -Rhody/M -rhombic -rhomboidal -rhomboid/SM -rhombus/SM -rho/MS -Rhona/M -Rhonda/M -Rhone -rhubarb/MS -rhyme/DSRGZM -rhymester/MS -Rhys/M -rhythmical/Y -rhythmic/S -rhythmics/M -rhythm/MS -RI -rial/MS -Riane/M -Riannon/M -Rianon/M -ribaldry/MS -ribald/S -ribbed -Ribbentrop/M -ribber/S -ribbing/M -ribbon/DMSG -ribcage -rib/MS -riboflavin/MS -ribonucleic -ribosomal -ribosome/MS -Rica/M -Rican/SM -Ricard/M -Ricardo/M -Ricca/M -Riccardo/M -rice/DRSMZG -Rice/M -ricer/M -Richard/MS -Richardo/M -Richardson/M -Richart/M -Richelieu/M -richen/DG -Richey/M -Richfield/M -Richie/M -Richland/M -Rich/M -Richmond/M -Richmound/M -richness/MS -Richter/M -Richthofen/M -Richy/M -rich/YNSRPT -Rici/M -Rickard/M -Rickenbacker/M -Rickenbaugh/M -Rickert/M -rickets/M -rickety/RT -Rickey/M -rick/GSDM -Rickie/M -Ricki/M -Rick/M -Rickover/M -rickrack/MS -rickshaw/SM -Ricky/M -Ric/M -ricochet/GSD -Rico/M -Ricoriki/M -ricotta/MS -riddance/SM -ridden -ridding -riddle/GMRSD -Riddle/M -ride/CZSGR -Ride/M -rider/CM -riderless -ridership/S -ridge/DSGM -Ridgefield/M -ridgepole/SM -Ridgway/M -ridgy/RT -ridicule/MGDRS -ridiculer/M -ridiculousness/MS -ridiculous/PY -riding/M -rid/ZGRJSB -Riemann/M -Riesling/SM -rife/RT -riff/GSDM -riffle/SDG -riffraff/SM -rifled/U -rifle/GZMDSR -rifleman/M -riflemen -rifler/M -rifling/M -rift/GSMD -Riga/M -rigamarole's -rigatoni/M -Rigel/M -rigged -rigger/SM -rigging/MS -Riggs/M -righteousnesses/U -righteousness/MS -righteous/PYU -rightfulness/MS -rightful/PY -rightism/SM -rightist/S -rightmost -rightness/MS -Right/S -right/SGTPYRDN -rightsize/SDG -rights/M -rightward/S -rigidify/S -rigidity/S -rigidness/S -rigid/YP -rigmarole/MS -rig/MS -Rigoberto/M -Rigoletto/M -rigor/MS -rigorousness/S -rigorous/YP -Riki/M -Rikki/M -Rik/M -rile/DSG -Riley/M -Rilke/M -rill/GSMD -Rimbaud/M -rime/MS -rimer/M -rim/GSMDR -rimless -rimmed -rimming -Rinaldo/M -Rina/M -rind/MDGS -Rinehart/M -ringer/M -ring/GZJDRM -ringing/Y -ringleader/MS -ringlet/SM -ringlike -Ringling/M -Ring/M -ringmaster/MS -Ringo/M -ringside/ZMRS -ringworm/SM -rink/GDRMS -rinse/DSRG -Riobard/M -Rio/MS -Riordan/M -rioter/M -riotousness/M -riotous/PY -riot/SMDRGZJ -RIP -riparian/S -ripcord/SM -ripened/U -ripenesses -ripeness/UM -ripen/RDG -ripe/PSY -riper/U -ripest/U -Ripley/M -Rip/M -rip/NDRSXTG -ripoff/S -riposte/SDMG -ripped -ripper/SM -ripping -rippler/M -ripple/RSDGM -ripply/TR -ripsaw/GDMS -riptide/SM -Risa/M -RISC -risen -riser/M -rise/RSJZG -risibility/SM -risible/S -rising/M -risker/M -risk/GSDRM -riskily -riskiness/MS -risky/RTP -risotto/SM -risqu� -rissole/M -Ritalin -Rita/M -Ritchie/M -rite/DSM -Ritter/M -ritualism/SM -ritualistic -ritualistically -ritualized -ritual/MSY -Ritz/M -ritzy/TR -rivaled/U -Rivalee/M -rivalry/MS -rival/SGDM -Riva/MS -rive/CSGRD -Rivera/M -riverbank/SM -riverbed/S -riverboat/S -river/CM -riverfront -riverine -Rivers -Riverside/M -riverside/S -Riverview/M -riveter/M -rivet/GZSRDM -riveting/Y -Riviera/MS -Rivi/M -Rivkah/M -rivulet/SM -Rivy/M -riv/ZGNDR -Riyadh/M -riyal/SM -rm -RMS -RN -RNA -Rn/M -roach/GSDM -Roach/M -roadbed/MS -roadblock/SMDG -roadhouse/SM -roadie/S -roadkill/S -road/MIS -roadrunner/MS -roadshow/S -roadside/S -roadsigns -roadster/SM -roadsweepers -roadway/SM -roadwork/SM -roadworthy -roam/DRGZS -Roana/M -Roanna/M -Roanne/M -Roanoke/M -roan/S -roar/DRSJGZ -roarer/M -roaring/T -Roarke/M -roaster/M -roast/SGJZRD -robbed -robber/SM -Robbert/M -robbery/SM -Robbie/M -Robbi/M -robbing -Robbin/MS -Robb/M -Robby/M -Robbyn/M -robe/ESDG -Robena/M -Robenia/M -Robers/M -Roberson/M -Roberta/M -Robert/MS -Roberto/M -Robertson/SM -robe's -Robeson/M -Robespierre/M -Robina/M -Robinet/M -Robinetta/M -Robinette/M -Robinett/M -Robinia/M -Robin/M -robin/MS -Robinson/M -Robinsonville/M -Robles/M -Rob/MZ -robotic/S -robotism -robotize/GDS -robot/MS -rob/SDG -Robson/M -Robt/M -robustness/SM -robust/RYPT -Roby/M -Robyn/M -Rocco/M -Rocha/M -Rochambeau/M -Rochella/M -Rochelle/M -Rochell/M -Roche/M -Rochester/M -Rochette/M -Roch/M -rockabilly/MS -rockabye -Rockaway/MS -rockbound -Rockefeller/M -rocker/M -rocketry/MS -rocket/SMDG -Rockey/M -rockfall/S -Rockford/M -rock/GZDRMS -Rockie/M -rockiness/MS -Rockland/M -Rock/M -Rockne/M -Rockville/M -Rockwell/M -Rocky/SM -rocky/SRTP -rococo/MS -Roda/M -rodded -Roddenberry/M -rodder -Roddie/M -rodding -Rodd/M -Roddy/M -rodent/MS -rodeo/SMDG -Roderich/M -Roderick/M -Roderic/M -Roderigo/M -rode/S -Rodger/M -Rodge/ZMR -Rodie/M -Rodi/M -Rodina/M -Rodin/M -Rod/M -Rodney/M -Rodolfo/M -Rodolphe/M -Rodolph/M -Rodrick/M -Rodrigo/M -Rodriguez/M -Rodrique/M -Rodriquez/M -rod/SGMD -roebuck/SM -Roentgen's -roentgen/SM -roe/SM -ROFL -Rogelio/M -roger/GSD -Rogerio/M -Roger/M -Roget/M -Rog/MRZ -rogued/K -rogue/GMDS -roguery/MS -rogues/K -roguing/K -roguishness/SM -roguish/PY -roil/SGD -Roi/SM -roisterer/M -roister/SZGRD -Rojas/M -Roland/M -Rolando/M -Roldan/M -role/MS -Roley/M -Rolfe/M -Rolf/M -Rolland/M -rollback/SM -rolled/A -Rollerblade/S -rollerskating -roller/SM -rollick/DGS -rollicking/Y -Rollie/M -rolling/S -Rollin/SM -Rollo/M -rollover/S -roll/UDSG -Rolodex -Rolph/M -Rolvaag/M -ROM -romaine/MS -Romain/M -Roma/M -romancer/M -romance/RSDZMG -Romanesque/S -Romania/M -Romanian/SM -Romano/MS -Romanov/M -roman/S -Romansh/M -Romans/M -Roman/SM -romantically/U -romanticism/MS -Romanticism/S -romanticist/S -romanticize/SDG -romantic/MS -Romany/SM -Romeo/MS -romeo/S -Romero/M -Rome/SM -Rommel/M -Romney/M -Romola/M -Romona/M -Romonda/M -romper/M -romp/GSZDR -Rom/SM -Romulus/M -Romy/M -Ronalda/M -Ronald/M -Rona/M -Ronda/M -rondo/SM -Ronica/M -Ron/M -Ronna/M -Ronnica/M -Ronnie/M -Ronni/M -Ronny/M -Ronstadt/M -Rontgen -Roobbie/M -rood/MS -roof/DRMJGZS -roofer/M -roofgarden -roofing/M -roofless -rooftop/S -rookery/MS -rook/GDMS -rookie/SRMT -roomer/M -roomette/SM -roomful/MS -roominess/MS -roommate/SM -room/MDRGZS -roomy/TPSR -Rooney/M -Rooseveltian -Roosevelt/M -rooster/M -roost/SGZRDM -rooted/P -rooter/M -rootlessness/M -rootless/P -rootlet/SM -Root/M -root/MGDRZS -rootstock/M -rope/DRSMZG -roper/M -roping/M -Roquefort/MS -Roquemore/M -Rora/M -Rorie/M -Rori/M -Rorke/M -Rorschach -Rory/M -Rosabella/M -Rosabelle/M -Rosabel/M -Rosaleen/M -Rosales/M -Rosalia/M -Rosalie/M -Rosalinda/M -Rosalinde/M -Rosalind/M -Rosaline/M -Rosalynd/M -Rosalyn/M -Rosa/M -Rosamond/M -Rosamund/M -Rosana/M -Rosanna/M -Rosanne/M -Rosario/M -rosary/SM -Roscoe/M -Rosco/M -Roseanna/M -Roseanne/M -Roseann/M -roseate/Y -Roseau -rosebud/MS -rosebush/SM -Rosecrans/M -Roseland/M -Roselia/M -Roseline/M -Roselin/M -Rosella/M -Roselle/M -Rose/M -Rosemaria/M -Rosemarie/M -Rosemary/M -rosemary/MS -rose/MGDS -Rosemonde/M -Rosenberg/M -Rosenblum/M -Rosendo/M -Rosene/M -Rosen/M -Rosenthal/M -Rosenzweig/M -Rosetta/M -Rosette/M -rosette/SDMG -rosewater -rosewood/SM -Roshelle/M -Rosicrucian/M -Rosie/M -rosily -Rosina/M -rosiness/MS -rosin/SMDG -Rosita/M -Roslyn/M -Rosmunda/M -Ros/N -Ross -Rossetti/M -Rossie/M -Rossi/M -Rossini/M -Rossy/M -Rostand/M -roster/DMGS -Rostov/M -rostra's -rostrum/SM -Roswell/M -Rosy/M -rosy/RTP -rota/MS -Rotarian/SM -rotary/S -rotated/U -rotate/VGNXSD -rotational/Y -rotation/M -rotative/Y -rotator/SM -rotatory -ROTC -rote/MS -rotgut/MS -Roth/M -Rothschild/M -rotisserie/MS -rotogravure/SM -rotor/MS -rototill/RZ -rot/SDG -rotted -rottenness/S -rotten/RYSTP -Rotterdam/M -rotter/M -rotting -rotunda/SM -rotundity/S -rotundness/S -rotund/SDYPG -Rouault/M -rou�/MS -rouge/GMDS -roughage/SM -roughen/DG -rougher/M -roughhouse/GDSM -roughish -roughneck/MDSG -roughness/MS -roughs -roughshod -rough/XPYRDNGT -roulette/MGDS -roundabout/PSM -roundedness/M -rounded/P -roundelay/SM -roundels -rounder/M -roundhead/D -roundheadedness/M -roundheaded/P -roundhouse/SM -roundish -roundness/MS -roundoff -roundup/MS -roundworm/MS -round/YRDSGPZT -Rourke/M -rouse/DSRG -rouser/M -Rousseau/M -roustabout/SM -roust/SGD -route/ASRDZGJ -router/M -route's -rout/GZJMDRS -routine/SYM -routing/M -routinize/GSD -Rouvin/M -rover/M -Rover/M -rove/ZGJDRS -roving/M -Rowan/M -rowboat/SM -rowdily -rowdiness/MS -rowdyism/MS -rowdy/PTSR -rowel/DMSG -Rowe/M -Rowena/M -rowen/M -Rowen/M -rower/M -Rowland/M -Rowley/M -Row/MN -Rowney/M -row/SJZMGNDR -Roxana/M -Roxane/M -Roxanna/M -Roxanne/M -Roxie/M -Roxi/M -Roxine/M -Roxy/M -royalist/SM -Royall/M -Royal/M -royal/SY -royalty/MS -Royce/M -Roy/M -Rozalie/M -Rozalin/M -Rozamond/M -Rozanna/M -Rozanne/M -Rozele/M -Rozella/M -Rozelle/M -Roze/M -Rozina/M -Roz/M -RP -rpm -RPM -rps -RR -Rriocard/M -rs -r's -R's -RSFSR -RSI -RSV -RSVP -RSX -rt -rte -Rte -RTFM -r/TGVJ -Rubaiyat/M -rubato/MS -rubbed -rubberize/GSD -rubberneck/DRMGSZ -rubber/SDMG -rubbery/TR -rubbing/M -rubbish/DSMG -rubbishy -rubble/GMSD -rubdown/MS -rubella/MS -Rube/M -Ruben/MS -rube/SM -Rubetta/M -Rubia/M -Rubicon/SM -rubicund -rubidium/SM -Rubie/M -Rubik/M -Rubi/M -Rubina/M -Rubin/M -Rubinstein/M -ruble/MS -rubout -rubric/MS -rub/S -Ruby/M -ruby/MTGDSR -Ruchbah/M -ruck/M -rucksack/SM -ruckus/SM -ruction/SM -rudderless -rudder/MS -Ruddie/M -ruddiness/MS -Rudd/M -Ruddy/M -ruddy/PTGRSD -rudeness/MS -rude/PYTR -Rudie/M -Rudiger/M -rudimentariness/M -rudimentary/P -rudiment/SM -Rudolf/M -Rudolfo/M -Rudolph/M -Rudyard/M -Rudy/M -ruefulness/S -rueful/PY -rue/GDS -Rufe/M -ruff/GSYDM -ruffian/GSMDY -ruffled/U -ruffler/M -ruffle/RSDG -ruffly/TR -Rufus/M -Rugby's -rugby/SM -ruggedness/S -rugged/PYRT -Ruggiero/M -rugging -rug/MS -Ruhr/M -ruination/MS -ruiner/M -ruin/MGSDR -ruinousness/M -ruinous/YP -Ruiz/M -rulebook/S -ruled/U -rule/MZGJDRS -ruler/GMD -ruling/M -Rumanian's -Rumania's -rumba/GDMS -rumble/JRSDG -rumbler/M -rumbustious -rumen/M -Rumford/M -Ru/MH -ruminant/YMS -ruminate/VNGXSD -ruminative/Y -rummage/GRSD -rummager/M -Rummel/M -rummer -rummest -rummy/TRSM -rumored/U -rumorer/M -rumormonger/SGMD -rumor/ZMRDSG -Rumpelstiltskin/M -rump/GMYDS -rumple/SDG -rumply/TR -rumpus/SM -rum/XSMN -runabout/SM -runaround/S -run/AS -runaway/S -rundown/SM -rune/MS -Runge/M -rung/MS -runic -runlet/SM -runnable -runnel/SM -runner/MS -running/S -Runnymede/M -runny/RT -runoff/MS -runtime -runtiness/M -runt/MS -runty/RPT -runway/MS -Runyon/M -rupee/MS -Ruperta/M -Rupert/M -Ruperto/M -rupiah/M -rupiahs -Ruppert/M -Ruprecht/M -rupture/GMSD -rurality/M -rural/Y -Rurik/M -ruse/MS -Rushdie/M -rush/DSRGZ -rusher/M -rushes/I -rushing/M -Rush/M -Rushmore/M -rushy/RT -Ruskin/M -rusk/MS -Russell/M -Russel/M -russet/MDS -russetting -Russia/M -Russian/SM -Russo/M -Russ/S -Rustbelt/M -rustically -rusticate/GSD -rustication/M -rusticity/S -rustic/S -Rustie/M -rustiness/MS -Rustin/M -rustler/M -rustle/RSDGZ -rust/MSDG -rustproof/DGS -Rusty/M -rusty/XNRTP -rutabaga/SM -Rutger/SM -Ruthanne/M -Ruthann/M -Ruthe/M -ruthenium/MS -rutherfordium/SM -Rutherford/M -Ruthie/M -Ruthi/M -ruthlessness/MS -ruthless/YP -Ruth/M -Ruthy/M -Rutland/M -Rutledge/M -rut/MS -rutted -Rutter/M -Ruttger/M -rutting -rutty/RT -Ruy/M -RV -RVs -Rwandan/S -Rwanda/SM -Rwy/M -Rx/M -Ryan/M -Ryann/M -Rycca/M -Rydberg/M -Ryder/M -rye/MS -Ryley/M -Ry/M -Ryon/M -Ryukyu/M -Ryun/M -S -SA -Saab/M -Saar/M -Saba/M -sabbath -Sabbath/M -Sabbaths -sabbatical/S -sabered/U -saber/GSMD -Sabik/M -Sabina/M -Sabine/M -Sabin/M -sable/GMDS -sabotage/DSMG -saboteur/SM -sabot/MS -Sabra/M -sabra/MS -Sabrina/M -SAC -Sacajawea/M -saccharides -saccharine -saccharin/MS -Sacco/M -sacerdotal -Sacha/M -sachem/MS -sachet/SM -Sachs/M -sackcloth/M -sackcloths -sacker/M -sackful/MS -sack/GJDRMS -sacking/M -sacral -sacra/L -sacramental/S -sacrament/DMGS -Sacramento/M -sacredness/S -sacred/PY -sacrificer/M -sacrifice/RSDZMG -sacrificial/Y -sacrilege/MS -sacrilegious/Y -sacristan/SM -sacristy/MS -sacroiliac/S -sacrosanctness/MS -sacrosanct/P -sacrum/M -sac/SM -Sada/M -Sadat/M -Saddam/M -sadden/DSG -sadder -saddest -saddlebag/SM -saddler/M -saddle's -saddle/UGDS -Sadducee/M -Sadella/M -Sade/M -sades -Sadie/M -sadism/MS -sadistic -sadistically -sadist/MS -sadness/SM -sadomasochism/MS -sadomasochistic -sadomasochist/S -sad/PY -Sadr/M -Sadye/M -safari/GMDS -safeguard/MDSG -safekeeping/MS -safeness/MS -safeness's/U -safes -safety/SDMG -safe/URPTY -safflower/SM -saffron/MS -sagaciousness/M -sagacious/YP -sagacity/MS -saga/MS -Sagan/M -sagebrush/SM -sage/MYPS -sagged -sagger -sagging -saggy/RT -Saginaw/M -Sagittarius/MS -sago/MS -sag/TSR -saguaro/SM -Sahara/M -Saharan/M -Sahel -sahib/MS -Saidee/M -saids -said/U -Saigon/M -sailboard/DGS -sailboat/SRMZG -sailcloth/M -sailcloths -sailer/M -sailfish/SM -sail/GJMDRS -sailing/M -sailor/YMS -sailplane/SDMG -sainthood/MS -saintlike -saintliness/MS -saintly/RTP -saint/YDMGS -Saiph/M -saith -saiths -Sakai/M -sake/MRS -saker/M -Sakhalin/M -Sakharov/M -Saki/M -saki's -salaam/GMDS -salable/U -salaciousness/MS -salacious/YP -salacity/MS -Saladin/M -Salado/M -salad/SM -Salaidh/M -salamander/MS -salami/MS -salary/SDMG -Salas/M -Salazar/M -saleability/M -sale/ABMS -Saleem/M -Salem/M -Salerno/M -salesclerk/SM -salesgirl/SM -saleslady/S -salesman/M -salesmanship/SM -salesmen -salespeople/M -salesperson/MS -salesroom/M -saleswoman -saleswomen -salience/MS -saliency -salient/SY -Salim/M -Salina/MS -saline/S -salinger -Salinger/M -salinity/MS -Salisbury/M -Salish/M -saliva/MS -salivary -salivate/XNGSD -salivation/M -Salk/M -Sallee/M -Salle/M -Sallie/M -Salli/M -sallowness/MS -sallow/TGRDSP -Sallust/M -Sallyanne/M -Sallyann/M -sally/GSDM -Sally/M -salmonellae -salmonella/M -Salmon/M -salmon/SM -Sal/MY -Saloma/M -Salome/M -Salomi/M -Salomo/M -Salomone/M -Salomon/M -Salonika/M -salon/SM -saloonkeeper -saloon/MS -salsa/MS -salsify/M -SALT -saltcellar/SM -salted/UC -salter/M -salt/GZTPMDRS -saltine/MS -saltiness/SM -saltness/M -Salton/M -saltpeter/SM -salts/C -saltshaker/S -saltwater -salty/RSPT -salubriousness/M -salubrious/YP -salubrity/M -salutariness/M -salutary/P -salutation/SM -salutatory/S -saluter/M -salute/RSDG -Salvadoran/S -Salvadorian/S -Salvador/M -salvageable -salvage/MGRSD -salvager/M -salvation/MS -Salvatore/M -salve/GZMDSR -salver/M -Salvidor/M -salvo/GMDS -Salween/M -Salyut/M -Salz/M -SAM -Samantha/M -Samara/M -Samaria/M -Samaritan/MS -samarium/MS -Samarkand/M -samba/GSDM -sameness/MS -same/SP -Sam/M -Sammie/M -Sammy/M -Samoa -Samoan/S -Samoset/M -samovar/SM -Samoyed/M -sampan/MS -sampler/M -sample/RSDJGMZ -sampling/M -Sampson/M -Samsonite/M -Samson/M -Samuele/M -Samuel/SM -Samuelson/M -samurai/M -San'a -Sana/M -sanatorium/MS -Sanborn/M -Sanchez/M -Sancho/M -sanctification/M -sanctifier/M -sanctify/RSDGNX -sanctimoniousness/MS -sanctimonious/PY -sanctimony/MS -sanctioned/U -sanction/SMDG -sanctity/SM -sanctuary/MS -sanctum/SM -sandal/MDGS -sandalwood/SM -sandbagged -sandbagging -sandbag/MS -sandbank/SM -sandbar/S -sandblaster/M -sandblast/GZSMRD -sandbox/MS -Sandburg/M -sandcastle/S -Sande/M -Sanderling/M -sander/M -Sander/M -Sanderson/M -sandhill -sandhog/SM -Sandia/M -Sandie/M -Sandi/M -sandiness/S -Sandinista -sandlot/SM -sandlotter/S -sandman/M -sandmen -Sand/MRZ -Sandor/M -Sandoval/M -sandpaper/DMGS -sandpile -sandpiper/MS -sandpit/M -Sandra/M -Sandro/M -sand/SMDRGZ -sandstone/MS -sandstorm/SM -Sandusky/M -sandwich/SDMG -Sandye/M -Sandy/M -sandy/PRT -saned -sane/IRYTP -saneness/MS -saneness's/I -sanes -Sanford/M -Sanforized -Sanger/M -sangfroid/S -sangria/SM -Sang/RM -sang/S -sanguinary -sanguined -sanguine/F -sanguinely -sanguineness/M -sanguineous/F -sanguines -sanguining -Sanhedrin/M -saning -sanitarian/S -sanitarium/SM -sanitary/S -sanitate/NX -sanitation/M -sanitizer/M -sanitize/RSDZG -sanity/SIM -sank -Sankara/M -San/M -sans -sanserif -Sanskritic -Sanskritize/M -Sanskrit/M -Sansone/M -Sanson/M -Santa/M -Santana/M -Santayana/M -Santeria -Santiago/M -Santo/MS -sapience/MS -sapient -sapless -sapling/SM -sap/MS -sapped -sapper/SM -Sapphira/M -Sapphire/M -sapphire/MS -Sappho/M -sappiness/SM -sapping -Sapporo/M -sappy/RPT -saprophyte/MS -saprophytic -sapsucker/SM -sapwood/SM -Saraann/M -Saracen/MS -Saragossa/M -Sarah/M -Sarajane/M -Sarajevo/M -Sara/M -Saran/M -saran/SM -sarape's -Sarasota/M -Saratoga/M -Saratov/M -Sarawak/M -sarcasm/MS -sarcastic -sarcastically -sarcoma/MS -sarcophagi -sarcophagus/M -sardine/SDMG -Sardinia/M -sardonic -sardonically -Saree/M -Sarena/M -Sarene/M -Sarette/M -Sargasso/M -Sarge/M -Sargent/M -sarge/SM -Sargon/M -Sari/M -sari/MS -Sarina/M -Sarine/M -Sarita/M -Sarnoff/M -sarong/MS -Saroyan/M -sarsaparilla/MS -Sarto/M -sartorial/Y -sartorius/M -Sartre/M -Sascha/M -SASE -Sasha/M -sashay/GDS -Sashenka/M -sash/GMDS -Saskatchewan/M -Saskatoon/M -Sask/M -sassafras/MS -sass/GDSM -Sassoon/M -sassy/TRS -SAT -satanic -satanical/Y -Satanism/M -satanism/S -Satanist/M -satanist/S -Satan/M -satchel/SM -sat/DG -sateen/MS -satellite/GMSD -sate/S -satiable/I -satiate/GNXSD -satiation/M -satiety/MS -satin/MDSG -satinwood/MS -satiny -satire/SM -satiric -satirical/Y -satirist/SM -satirize/DSG -satirizes/U -satisfaction/ESM -satisfactorily/U -satisfactoriness/MU -satisfactory/UP -satisfiability/U -satisfiable/U -satisfied/UE -satisfier/M -satisfies/E -satisfy/GZDRS -satisfying/EU -satisfyingly -Sat/M -satori/SM -satrap/SM -saturated/CUA -saturater/M -saturates/A -saturate/XDRSNG -saturation/M -Saturday/MS -saturnalia -Saturnalia/M -saturnine/Y -Saturn/M -Satyanarayanan/M -satyriases -satyriasis/M -satyric -satyr/MS -sauce/DSRGZM -saucepan/SM -saucer/M -saucily -sauciness/S -saucy/TRP -Saudi/S -Saud/M -Saudra/M -sauerkraut/SM -Saukville/M -Saul/M -Sault/M -sauna/DMSG -Sauncho/M -Saunder/SM -Saunderson/M -Saundra/M -saunter/DRSG -saurian/S -sauropod/SM -sausage/MS -Saussure/M -saut�/DGS -Sauternes/M -Sauveur/M -savage/GTZYPRSD -Savage/M -savageness/SM -savagery/MS -Savannah/M -savanna/MS -savant/SM -saved/U -saveloy/M -saver/M -save/ZGJDRSB -Savina/M -Savior/M -savior/SM -Saviour/M -Savonarola/M -savored/U -savorer/M -savorier -savoriest -savoriness/S -savoringly/S -savoring/Y -savor/SMRDGZ -savory/UMPS -Savoyard/M -Savoy/M -savoy/SM -savvy/GTRSD -sawbones/M -sawbuck/SM -sawdust/MDSG -sawer/M -sawfly/SM -sawhorse/MS -Saw/M -sawmill/SM -saw/SMDRG -sawtooth -Sawyere/M -Sawyer/M -sawyer/MS -Saxe/M -saxifrage/SM -Sax/M -sax/MS -Saxon/SM -Saxony/M -saxophone/MS -saxophonist/SM -Saxton/M -Sayer/M -sayer/SM -sayest -saying/MS -Sayre/MS -says/M -say/USG -Say/ZMR -SBA -Sb/M -SC -scabbard/SGDM -scabbed -scabbiness/SM -scabbing -scabby/RTP -scabies/M -scabrousness/M -scabrous/YP -scab/SM -scad/SM -scaffolding/M -scaffold/JGDMS -scalability -Scala/M -scalar/SM -scalawag/SM -scald/GJRDS -scaled/AU -scale/JGZMBDSR -scaleless -scalene -scaler/M -scales/A -scaliness/MS -scaling/A -scallion/MS -scalloper/M -scallop/GSMDR -scalloping/M -scalpel/SM -scalper/M -scalp/GZRDMS -scalping/M -scaly/TPR -scammed -scamming -scamper/GD -scampi/M -scamp/RDMGZS -scam/SM -Scan -scan/AS -scandal/GMDS -scandalized/U -scandalize/GDS -scandalmonger/SM -scandalousness/M -scandalous/YP -Scandinavia/M -Scandinavian/S -scandium/MS -scanned/A -scanner/SM -scanning/A -scansion/SM -scant/CDRSG -scantest -scantily -scantiness/MS -scantly -scantness/MS -scanty/TPRS -scapegoat/SGDM -scapegrace/MS -scape/M -scapulae -scapula/M -scapular/S -scarab/SM -Scaramouch/M -Scarborough/M -scarceness/SM -scarce/RTYP -scarcity/MS -scar/DRMSG -scarecrow/MS -scaremongering/M -scaremonger/SGM -scarer/M -scare/S -scarface -Scarface/M -scarf/SDGM -scarification/M -scarify/DRSNGX -scarily -scariness/S -scarlatina/MS -Scarlatti/M -Scarlet/M -scarlet/MDSG -Scarlett/M -scarp/SDMG -scarred -scarring -scarves/M -scary/PTR -scathe/DG -scathed/U -scathing/Y -scatological -scatology/SM -scat/S -scatted -scatterbrain/MDS -scatter/DRJZSG -scatterer/M -scattergun -scattering/YM -scatting -scavenge/GDRSZ -scavenger/M -SCCS -scenario/SM -scenarist/MS -scene/GMDS -scenery/SM -scenically -scenic/S -scented/U -scent/GDMS -scentless -scent's/C -scents/C -scepter/DMSG -scepters/U -sceptically -sch -Schaefer/M -Schaeffer/M -Schafer/M -Schaffner/M -Schantz/M -Schapiro/M -Scheat/M -Schedar/M -schedule/ADSRG -scheduled/U -scheduler/MS -schedule's -Scheherazade/M -Scheherezade/M -Schelling/M -schema/M -schemata -schematically -schematic/S -scheme/JSRDGMZ -schemer/M -schemta -Schenectady/M -scherzo/MS -Schick/M -Schiller/M -schilling/SM -schismatic/S -schism/SM -schist/SM -schizoid/S -schizomycetes -schizophrenia/SM -schizophrenically -schizophrenic/S -schizo/S -schlemiel/MS -schlepped -schlepping -schlep/S -Schlesinger/M -Schliemann/M -Schlitz/M -schlock/SM -schlocky/TR -Schloss/M -schmaltz/MS -schmaltzy/TR -Schmidt/M -Schmitt/M -schmoes -schmo/M -schmooze/GSD -schmuck/MS -Schnabel/M -schnapps/M -schnauzer/MS -Schneider/M -schnitzel/MS -schnook/SM -schnoz/S -schnozzle/MS -Schoenberg/M -Schofield/M -scholarship/MS -scholar/SYM -scholastically -scholastic/S -schoolbag/SM -schoolbook/SM -schoolboy/MS -schoolchild/M -schoolchildren -schooldays -schooled/U -schoolfellow/S -schoolfriend -schoolgirlish -schoolgirl/MS -schoolhouse/MS -schooling/M -schoolmarmish -schoolmarm/MS -schoolmaster/SGDM -schoolmate/MS -schoolmistress/MS -schoolroom/SM -schoolteacher/MS -schoolwork/SM -schoolyard/SM -school/ZGMRDJS -schooner/SM -Schopenhauer/M -Schottky/M -Schrieffer/M -Schr�dinger/M -Schroeder/M -Schroedinger/M -Schubert/M -Schultz/M -Schulz/M -Schumacher/M -Schuman/M -Schumann/M -schussboomer/S -schuss/SDMG -Schuster/M -Schuyler/M -Schuylkill/M -Schwab/M -Schwartzkopf/M -Schwartz/M -Schwarzenegger/M -schwa/SM -Schweitzer/M -Schweppes/M -Schwinger/M -Schwinn/M -sci -sciatica/SM -sciatic/S -science/FMS -scientifically/U -scientific/U -scientist/SM -Scientology/M -scimitar/SM -scintilla/MS -scintillate/GNDSX -scintillation/M -scintillator/SM -scion/SM -Scipio/M -scissor/SGD -scleroses -sclerosis/M -sclerotic/S -Sc/M -scoffer/M -scofflaw/MS -scoff/RDGZS -scolder/M -scold/GSJRD -scolioses -scoliosis/M -scollop's -sconce/SDGM -scone/SM -scooper/M -scoop/SRDMG -scooter/M -scoot/SRDGZ -scope/DSGM -Scopes/M -scops -scorbutic -scorcher/M -scorching/Y -scorch/ZGRSD -scoreboard/MS -scorecard/MS -scored/M -scorekeeper/SM -scoreless -scoreline -score/ZMDSRJG -scorner/M -scornfulness/M -scornful/PY -scorn/SGZMRD -scorpion/SM -Scorpio/SM -Scorpius/M -Scorsese/M -Scotchgard/M -Scotchman/M -Scotchmen -scotch/MSDG -scotchs -Scotch/S -Scotchwoman -Scotchwomen -Scotia/M -Scotian/M -Scotland/M -Scot/MS -Scotsman/M -Scotsmen -Scotswoman -Scotswomen -Scottie/SM -Scotti/M -Scottish -Scott/M -Scottsdale/M -Scotty's -scoundrel/YMS -scourer/M -scourge/MGRSD -scourger/M -scouring/M -scour/SRDGZ -scouter/M -scouting/M -scoutmaster/SM -Scout's -scout/SRDMJG -scow/DMGS -scowler/M -scowl/SRDG -scrabble/DRSZG -scrabbler/M -Scrabble/SM -scragged -scragging -scraggly/TR -scraggy/TR -scrag/SM -scrambler/MS -scrambler's/U -scramble/UDSRG -scrammed -scramming -scram/S -Scranton/M -scrapbook/SM -scraper/M -scrape/S -scrapheap/SM -scrapped -scrapper/SM -scrapping -scrappy/RT -scrap/SGZJRDM -scrapyard/S -scratched/U -scratcher/M -scratches/M -scratchily -scratchiness/S -scratch/JDRSZG -scratchy/TRP -scrawler/M -scrawl/GRDS -scrawly/RT -scrawniness/MS -scrawny/TRP -screamer/M -screaming/Y -scream/ZGSRD -screecher/M -screech/GMDRS -screechy/TR -screed/MS -scree/DSM -screened/U -screening/M -screenplay/MS -screen/RDMJSG -screenwriter/MS -screwball/SM -screwdriver/SM -screwer/M -screw/GUSD -screwiness/S -screw's -screwup -screwworm/MS -screwy/RTP -Scriabin/M -scribal -scribble/JZDRSG -scribbler/M -scribe/CDRSGIK -scriber/MKIC -scribe's -Scribner/MS -scrimmager/M -scrimmage/RSDMG -scrimp/DGS -scrimshaw/GSDM -scrim/SM -Scripps/M -scrip/SM -scripted/U -script/FGMDS -scriptural/Y -scripture/MS -Scripture/MS -scriptwriter/SM -scriptwriting/M -scrivener/M -scriven/ZR -scrod/M -scrofula/MS -scrofulous -scrollbar/SM -scroll/GMDSB -Scrooge/MS -scrooge/SDMG -scrota -scrotal -scrotum/M -scrounge/ZGDRS -scroungy/TR -scrubbed -scrubber/MS -scrubbing -scrubby/TR -scrub/S -scruffily -scruffiness/S -scruff/SM -scruffy/PRT -Scruggs/M -scrummage/MG -scrum/MS -scrumptious/Y -scrunch/DSG -scrunchy/S -scruple/SDMG -scrupulosity/SM -scrupulousness's -scrupulousness/US -scrupulous/UPY -scrutable/I -scrutinized/U -scrutinizer/M -scrutinize/RSDGZ -scrutinizingly/S -scrutinizing/UY -scrutiny/MS -SCSI -scuba/SDMG -scudded -scudding -Scud/M -scud/S -scuff/GSD -scuffle/SDG -sculler/M -scullery/MS -Sculley/M -scullion/MS -scull/SRDMGZ -sculptor/MS -sculptress/MS -sculpt/SDG -sculptural/Y -sculpture/SDGM -scumbag/S -scummed -scumming -scum/MS -scummy/TR -scupper/SDMG -scurf/MS -scurfy/TR -scurrility/MS -scurrilousness/MS -scurrilous/PY -scurry/GJSD -scurvily -scurviness/M -scurvy/SRTP -scutcheon/SM -scuttlebutt/MS -scuttle/MGSD -scuzzy/RT -Scylla/M -scythe/SDGM -Scythia/M -SD -SDI -SE -seabed/S -seabird/S -seaboard/MS -Seaborg/M -seaborne -Seabrook/M -seacoast/MS -seafare/JRZG -seafarer/M -seafood/MS -seafront/MS -Seagate/M -seagoing -Seagram/M -seagull/S -seahorse/S -sealant/MS -sealed/AU -sealer/M -seal/MDRSGZ -sealskin/SM -seals/UA -seamail -seamanship/SM -seaman/YM -seamer/M -seaminess/M -seamlessness/M -seamless/PY -seam/MNDRGS -seams/I -seamstress/MS -Seamus/M -sea/MYS -seamy/TRP -Seana/M -s�ance/SM -Sean/M -seaplane/SM -seaport/SM -seaquake/M -Seaquarium/M -searcher/AM -searching/YS -searchlight/SM -search/RSDAGZ -sear/DRSJGT -searing/Y -Sears/M -seascape/SM -seashell/MS -seashore/SM -seasickness/SM -seasick/P -seaside/SM -seasonableness/M -seasonable/UP -seasonably/U -seasonality -seasonal/Y -seasoned/U -seasoner/M -seasoning/M -season/JRDYMBZSG -seatbelt -seated/A -seater/M -seating/SM -SEATO -seat's -Seattle/M -seat/UDSG -seawall/S -seaward/S -seawater/S -seaway/MS -seaweed/SM -seaworthinesses -seaworthiness/MU -seaworthy/TRP -sebaceous -Sebastian/M -Sebastiano/M -Sebastien/M -seborrhea/SM -SEC -secant/SM -secede/GRSD -secessionist/MS -secession/MS -secludedness/M -secluded/YP -seclude/GSD -seclusion/SM -seclusive -Seconal -secondarily -secondary/PS -seconder/M -secondhand -second/RDYZGSL -secrecy/MS -secretarial -secretariat/MS -secretaryship/MS -secretary/SM -secrete/XNS -secretion/M -secretiveness/S -secretive/PY -secretory -secret/TVGRDYS -sec/S -sectarianism/MS -sectarian/S -sectary/MS -sectionalism/MS -sectionalized -sectional/SY -section/ASEM -sectioned -sectioning -sect/ISM -sectoral -sectored -sector/EMS -sectoring -sects/E -secularism/MS -secularist/MS -secularity/M -secularization/MS -secularized/U -secularize/GSD -secular/SY -secured/U -securely/I -secure/PGTYRSDJ -security/MSI -secy -sec'y -sedan/SM -sedateness/SM -sedate/PXVNGTYRSD -sedation/M -sedative/S -sedentary -Seder/SM -sedge/SM -Sedgwick/M -sedgy/RT -sedimentary -sedimentation/SM -sediment/SGDM -sedition/SM -seditiousness/M -seditious/PY -seducer/M -seduce/RSDGZ -seduction/MS -seductiveness/MS -seductive/YP -seductress/SM -sedulous/Y -Seebeck/M -seed/ADSG -seedbed/MS -seedcase/SM -seeded/U -seeder/MS -seediness/MS -seeding/S -seedless -seedling/SM -seedpod/S -seed's -seedy/TPR -seeings -seeing's -seeing/U -seeker/M -seek/GZSR -seeking/Y -Seeley/M -See/M -seem/GJSYD -seeming/Y -seemliness's -seemliness/US -seemly/UTPR -seen/U -seepage/MS -seep/GSD -seer/SM -seersucker/MS -sees -seesaw/DMSG -seethe/SDGJ -see/U -segmental/Y -segmentation/SM -segmented/U -segment/SGDM -Segovia/M -segregant -segregated/U -segregate/XCNGSD -segregation/CM -segregationist/SM -segregative -Segre/M -segue/DS -segueing -Segundo/M -Se/H -Seidel/M -seigneur/MS -seignior/SM -Seiko/M -seine/GZMDSR -Seine/M -seiner/M -Seinfeld/M -seismic -seismically -seismographer/M -seismographic -seismographs -seismography/SM -seismograph/ZMR -seismologic -seismological -seismologist/MS -seismology/SM -seismometer/S -seize/BJGZDSR -seizer/M -seizing/M -seizin/MS -seizor/MS -seizure/MS -Seka/M -Sela/M -Selassie/M -Selby/M -seldom -selected/UAC -selectional -selection/MS -selectiveness/M -selective/YP -selectivity/MS -selectman/M -selectmen -selectness/SM -selector/SM -select/PDSVGB -Selectric/M -selects/A -Selena/M -selenate/M -Selene/M -selenite/M -selenium/MS -selenographer/SM -selenography/MS -Selestina/M -Seleucid/M -Seleucus/M -self/GPDMS -selfishness/SU -selfish/PUY -selflessness/MS -selfless/YP -selfness/M -Selfridge/M -selfsameness/M -selfsame/P -Selia/M -Selie/M -Selig/M -Selim/M -Selina/M -Selinda/M -Seline/M -Seljuk/M -Selkirk/M -Sella/M -sell/AZGSR -seller/AM -Sellers/M -Selle/ZM -sellout/MS -Selma/M -seltzer/S -selvage/MGSD -selves/M -Selznick/M -semantical/Y -semanticist/SM -semantic/S -semantics/M -semaphore/GMSD -Semarang/M -semblance/ASME -semen/SM -semester/SM -semiannual/Y -semiarid -semiautomated -semiautomatic/S -semicircle/SM -semicircular -semicolon/MS -semiconductor/SM -semiconscious -semidefinite -semidetached -semidrying/M -semifinalist/MS -semifinal/MS -semilogarithmic -semimonthly/S -seminal/Y -seminarian/MS -seminar/SM -seminary/MS -Seminole/SM -semiofficial -semioticians -semiotic/S -semiotics/M -semipermanent/Y -semipermeable -semiprecious -semiprivate -semiprofessional/YS -semipublic -semiquantitative/Y -Semiramis/M -semiretired -semisecret -semiskilled -semi/SM -semisolid/S -semistructured -semisweet -Semite/SM -Semitic/MS -semitic/S -semitone/SM -semitrailer/SM -semitrance -semitransparent -semitropical -semivowel/MS -semiweekly/S -semiyearly -semolina/SM -sempiternal -sempstress/SM -Semtex -sen -Sen -Sena/M -senate/MS -Senate/MS -senatorial -senator/MS -Sendai/M -sender/M -sends/A -send/SRGZ -Seneca/MS -Senegalese -Senegal/M -senescence/SM -senescent -senile/SY -senility/MS -seniority/SM -senior/MS -Senior/S -Sennacherib/M -senna/MS -Sennett/M -Se�ora/M -senora/S -senorita/S -senor/MS -sensately/I -sensate/YNX -sensationalism/MS -sensationalist/S -sensationalize/GSD -sensational/Y -sensation/M -sens/DSG -senselessness/SM -senseless/PY -sense/M -sensibility/ISM -sensibleness/MS -sensible/PRST -sensibly/I -sensitiveness/MS -sensitiveness's/I -sensitives -sensitive/YIP -sensitivity/ISM -sensitization/CSM -sensitized/U -sensitizers -sensitize/SDCG -sensor/MS -sensory -sensualist/MS -sensuality/MS -sensual/YF -sensuousness/S -sensuous/PY -Sensurround/M -sentence/SDMG -sentential/Y -sententious/Y -sentience/ISM -sentient/YS -sentimentalism/SM -sentimentalist/SM -sentimentality/SM -sentimentalization/SM -sentimentalize/RSDZG -sentimentalizes/U -sentimental/Y -sentiment/MS -sentinel/GDMS -sentry/SM -sent/UFEA -Seoul/M -sepal/SM -separability/MSI -separableness/MI -separable/PI -separably/I -separateness/MS -separates/M -separate/YNGVDSXP -separation/M -separatism/SM -separatist/SM -separator/SM -Sephardi/M -Sephira/M -sepia/MS -Sepoy/M -sepses -sepsis/M -septa/M -septate/N -September/MS -septennial/Y -septet/MS -septicemia/SM -septicemic -septic/S -septillion/M -sept/M -Sept/M -septuagenarian/MS -Septuagint/MS -septum/M -sepulcher/MGSD -sepulchers/UA -sepulchral/Y -seq -sequel/MS -sequenced/A -sequence/DRSJZMG -sequencer/M -sequence's/F -sequences/F -sequent/F -sequentiality/FM -sequentialize/DSG -sequential/YF -sequester/SDG -sequestrate/XGNDS -sequestration/M -sequin/SDMG -sequitur -Sequoia/M -sequoia/MS -Sequoya/M -Serafin/M -seraglio/SM -serape/S -seraphic -seraphically -seraphim's -seraph/M -seraphs -sera's -Serbia/M -Serbian/S -Serb/MS -Serbo/M -serenade/MGDRS -serenader/M -Serena/M -serendipitous/Y -serendipity/MS -serene/GTYRSDP -Serene/M -sereneness/SM -Serengeti/M -serenity/MS -sere/TGDRS -serfdom/MS -serf/MS -Sergeant/M -sergeant/SM -serge/DSGM -Sergei/M -Serge/M -Sergent/M -Sergio/M -serialization/MS -serialize/GSD -serial/MYS -series/M -serif/SMD -serigraph/M -serigraphs -seriousness/SM -serious/PY -sermonize/GSD -sermon/SGDM -serological/Y -serology/MS -serons -serous -Serpens/M -serpent/GSDM -serpentine/GYS -Serra/M -Serrano/M -serrate/GNXSD -serration/M -serried -serum/MS -servant/SDMG -serve/AGCFDSR -served/U -server/MCF -servers -serviceability/SM -serviceableness/M -serviceable/P -serviced/U -serviceman/M -servicemen -service/MGSRD -service's/E -services/E -servicewoman -servicewomen -serviette/MS -servilely -servileness/M -serviles -servile/U -servility/SM -serving/SM -servitor/SM -servitude/MS -servomechanism/MS -servomotor/MS -servo/S -sesame/MS -sesquicentennial/S -sessile -session/SM -setback/S -Seth/M -Set/M -Seton/M -set's -setscrew/SM -set/SIA -settable/A -sett/BJGZSMR -settee/MS -setter/M -setting/AS -setting's -settle/AUDSG -settlement/ASM -settler/MS -settling/S -setup/MS -Seumas/M -Seurat/M -Seuss/M -Sevastopol/M -sevenfold -sevenpence -seven/SMH -seventeen/HMS -seventeenths -sevenths -seventieths -seventy/MSH -severalfold -severalty/M -several/YS -severance/SM -severed/E -severeness/SM -severe/PY -severing/E -severity/MS -Severn/M -severs/E -sever/SGTRD -Severus/M -Seville/M -sewage/MS -Seward/M -sewerage/SM -sewer/GSMD -sewing/SM -sewn -sew/SAGD -sexagenarian/MS -sex/GMDS -sexily -sexiness/MS -sexism/SM -sexist/SM -sexless -sexologist/SM -sexology/MS -sexpot/SM -Sextans/M -sextant/SM -sextet/SM -sextillion/M -Sexton/M -sexton/MS -sextuple/MDG -sextuplet/MS -sexuality/MS -sexualized -sexual/Y -sexy/RTP -Seychelles -Seyfert -Seymour/M -sf -SF -Sgt -shabbily -shabbiness/SM -shabby/RTP -shack/GMDS -shackler/M -shackle's -Shackleton/M -shackle/UGDS -shad/DRJGSM -shaded/U -shadeless -shade/SM -shadily -shadiness/MS -shading/M -shadowbox/SDG -shadower/M -shadow/GSDRM -shadowiness/M -Shadow/M -shadowy/TRP -shady/TRP -Shae/M -Shafer/M -Shaffer/M -shafting/M -shaft/SDMG -shagged -shagginess/SM -shagging -shaggy/TPR -shag/MS -shah/M -shahs -Shaina/M -Shaine/M -shakable/U -shakably/U -shakeable -shakedown/S -shaken/U -shakeout/SM -shaker/M -Shaker/S -Shakespearean/S -Shakespeare/M -Shakespearian -shake/SRGZB -shakeup/S -shakily -shakiness/S -shaking/M -shaky/TPR -shale/SM -shall -shallot/SM -shallowness/SM -shallow/STPGDRY -Shalna/M -Shalne/M -shalom -Shalom/M -shalt -shamanic -shaman/SM -shamble/DSG -shambles/M -shamefaced/Y -shamefulness/S -shameful/YP -shamelessness/SM -shameless/PY -shame/SM -sham/MDSG -shammed -shammer -shamming -shammy's -shampoo/DRSMZG -shampooer/M -shamrock/SM -Shamus/M -Shana/M -Shanan/M -Shanda/M -Shandee/M -Shandeigh/M -Shandie/M -Shandra/M -shandy/M -Shandy/M -Shane/M -Shanghai/GM -Shanghaiing/M -shanghai/SDG -Shanie/M -Shani/M -shank/SMDG -Shannah/M -Shanna/M -Shannan/M -Shannen/M -Shannon/M -Shanon/M -shan't -Shanta/M -Shantee/M -shantis -Shantung/M -shantung/MS -shanty/SM -shantytown/SM -shape/AGDSR -shaped/U -shapelessness/SM -shapeless/PY -shapeliness/S -shapely/RPT -shaper/S -shape's -Shapiro/M -sharable/U -Sharai/M -Shara/M -shard/SM -shareable -sharecropped -sharecropper/MS -sharecropping -sharecrop/S -share/DSRGZMB -shared/U -shareholder/MS -shareholding/S -sharer/M -shareware/S -Shari'a -Sharia/M -sharia/SM -Shari/M -Sharity/M -shark/SGMD -sharkskin/SM -Sharla/M -Sharleen/M -Sharlene/M -Sharline/M -Sharl/M -Sharona/M -Sharon/M -Sharpe/M -sharpen/ASGD -sharpened/U -sharpener/S -sharper/M -sharpie/SM -Sharp/M -sharpness/MS -sharp/SGTZXPYRDN -sharpshooter/M -sharpshooting/M -sharpshoot/JRGZ -sharpy's -Sharron/M -Sharyl/M -Shasta/M -shat -shatter/DSG -shattering/Y -shatterproof -Shaughn/M -Shaula/M -Shauna/M -Shaun/M -shave/DSRJGZ -shaved/U -shaver/M -Shavian -shaving/M -Shavuot/M -Shawano/M -shawl/SDMG -shaw/M -Shaw/M -Shawna/M -Shawnee/SM -Shawn/M -Shaylah/M -Shayla/M -Shaylyn/M -Shaylynn/M -Shay/M -shay/MS -Shayna/M -Shayne/M -Shcharansky/M -sh/DRS -sheaf/MDGS -Shea/M -shearer/M -shear/RDGZS -sheather/M -sheathe/UGSD -sheath/GJMDRS -sheathing/M -sheaths -sheave/SDG -sheaves/M -Sheba/M -shebang/MS -Shebeli/M -Sheboygan/M -she'd -shedding -Shedir/M -sheds -shed's -shed/U -Sheelagh/M -Sheelah/M -Sheela/M -Sheena/M -sheen/MDGS -sheeny/TRSM -sheepdog/SM -sheepfold/MS -sheepherder/MS -sheepishness/SM -sheepish/YP -sheep/M -sheepskin/SM -Sheeree/M -sheerness/S -sheer/PGTYRDS -sheeting/M -sheetlike -sheet/RDMJSG -Sheetrock -Sheffielder/M -Sheffield/RMZ -Sheffie/M -Sheff/M -Sheffy/M -sheikdom/SM -sheikh's -sheik/SM -Sheilah/M -Sheila/M -shekel/MS -Shelagh/M -Shela/M -Shelba/M -Shelbi/M -Shelby/M -Shelden/M -Sheldon/M -shelf/MDGS -Shelia/M -she'll -shellacked -shellacking/MS -shellac/S -shelled/U -Shelley/M -shellfire/SM -shellfish/SM -Shellie/M -Shelli/M -Shell/M -shell/RDMGS -Shelly/M -Shel/MY -shelter/DRMGS -sheltered/U -shelterer/M -Shelton/M -shelve/JRSDG -shelver/M -shelves/M -shelving/M -she/M -Shem/M -Shena/M -Shenandoah/M -shenanigan/SM -Shenyang/M -Sheol/M -Shepard/M -shepherd/DMSG -shepherdess/S -Shepherd/M -Shep/M -Sheppard/M -Shepperd/M -Sheratan/M -Sheraton/M -sherbet/MS -sherd's -Sheree/M -Sheridan/M -Sherie/M -sheriff/SM -Sherill/M -Sherilyn/M -Sheri/M -Sherline/M -Sherlocke/M -sherlock/M -Sherlock/M -Sher/M -Sherman/M -Shermie/M -Sherm/M -Shermy/M -Sherpa/SM -Sherrie/M -Sherri/M -Sherry/M -sherry/MS -Sherwin/M -Sherwood/M -Sherwynd/M -Sherye/M -Sheryl/M -Shetland/S -Shevardnadze/M -shew/GSD -shewn -shh -shiatsu/S -shibboleth/M -shibboleths -shielded/U -shielder/M -shield/MDRSG -Shields/M -shiftily -shiftiness/SM -shiftlessness/S -shiftless/PY -shift/RDGZS -shifty/TRP -Shi'ite -Shiite/SM -Shijiazhuang -Shikoku/M -shill/DJSG -shillelagh/M -shillelaghs -shilling/M -Shillong/M -Shiloh/M -shimmed -shimmer/DGS -shimmery -shimming -shimmy/DSMG -shim/SM -Shina/M -shinbone/SM -shindig/MS -shiner/M -shine/S -shingle/MDRSG -shingler/M -shinguard -shininess/MS -shining/Y -shinned -shinning -shinny/GDSM -shin/SGZDRM -shinsplints -Shintoism/S -Shintoist/MS -Shinto/MS -shiny/PRT -shipboard/MS -shipborne -shipbuilder/M -shipbuild/RGZJ -shipload/SM -shipman/M -shipmate/SM -shipmen -shipment/AMS -shipowner/MS -shippable -shipped/A -shipper/SM -shipping/MS -ship's -shipshape -ship/SLA -shipwreck/GSMD -shipwright/MS -shipyard/MS -Shiraz/M -shire/MS -shirker/M -shirk/RDGZS -Shirlee/M -Shirleen/M -Shirlene/M -Shirley/M -Shirline/M -Shirl/M -Shir/M -shirr/GJDS -shirtfront/S -shirting/M -shirt/JDMSG -shirtless -shirtmake/R -shirtmaker/M -shirtsleeve/MS -shirttail/S -shirtwaist/SM -shit/S! -shitting/! -shitty/RT! -Shiva/M -shiverer/M -shiver/GDR -shivery -shiv/SZRM -shivved -shivving -shlemiel's -Shmuel/M -shoal/SRDMGT -shoat/SM -shocker/M -shocking/Y -Shockley/M -shockproof -shock/SGZRD -shoddily -shoddiness/SM -shoddy/RSTP -shod/U -shoehorn/GSMD -shoeing -shoelace/MS -shoemaker/M -shoemake/RZ -shoe/MS -shoer's -shoeshine/MS -shoestring/MS -shoetree/MS -shogunate/SM -shogun/MS -Shoji/M -Sholom/M -shone -shoo/DSG -shoofly -shook/SM -shooter/M -shootout/MS -shoot/SJRGZ -shopkeeper/M -shopkeep/RGZ -shoplifter/M -shoplifting/M -shoplift/SRDGZ -shop/MS -shopped/M -shopper/M -shoppe/RSDGZJ -shopping/M -shoptalk/SM -shopworn -shorebird/S -shore/DSRGMJ -shoreline/SM -Shorewood/M -shoring/M -shortage/MS -shortbread/MS -shortcake/SM -shortchange/DSG -shortcoming/MS -shortcrust -shortcut/MS -shortcutting -shortener/M -shortening/M -shorten/RDGJ -shortfall/SM -shorthand/DMS -Shorthorn/M -shorthorn/MS -shortie's -shortish -shortlist/GD -Short/M -shortness/MS -short/SGTXYRDNP -shortsightedness/S -shortsighted/YP -shortstop/MS -shortwave/SM -shorty/SM -Shoshana/M -Shoshanna/M -Shoshone/SM -Shostakovitch/M -shotgunned -shotgunner -shotgunning -shotgun/SM -shot/MS -shotted -shotting -shoulder/GMD -shouldn't -should/TZR -shout/SGZRDM -shove/DSRG -shoveler/M -shovelful/MS -shovel/MDRSZG -shover/M -showbiz -showbizzes -showboat/SGDM -showcase/MGSD -showdown/MS -shower/GDM -showery/TR -show/GDRZJS -showgirl/SM -showily -showiness/MS -showing/M -showman/M -showmanship/SM -showmen -shown -showoff/S -showpiece/SM -showplace/SM -showroom/MS -showy/RTP -shpt -shrank -shrapnel/SM -shredded -shredder/MS -shredding -shred/MS -Shreveport/M -shrewdness/SM -shrewd/RYTP -shrew/GSMD -shrewishness/M -shrewish/PY -shrieker/M -shriek/SGDRMZ -shrift/SM -shrike/SM -shrill/DRTGPS -shrillness/MS -shrilly -shrimp/MDGS -shrine/SDGM -shrinkage/SM -shrinker/M -shrinking/U -shrink/SRBG -shrivel/GSD -shriven -shrive/RSDG -Shropshire/M -shroud/GSMD -shrubbed -shrubbery/SM -shrubbing -shrubby/TR -shrub/SM -shrugged -shrugging -shrug/S -shrunk/N -shtick/S -shucker/M -shuck/SGMRD -shucks/S -shudder/DSG -shuddery -shuffleboard/MS -shuffled/A -shuffle/GDSRZ -shuffles/A -shuffling/A -Shulman/M -Shu/M -shunned -shunning -shun/S -shunter/M -shunt/GSRD -Shurlocke/M -Shurlock/M -Shurwood/M -shush/SDG -shutdown/MS -shuteye/SM -shutoff/M -shutout/SM -shut/S -shutterbug/S -shutter/DMGS -shuttering/M -shutting -shuttlecock/MDSG -shuttle/MGDS -shy/DRSGTZY -shyer -shyest -Shylockian/M -Shylock/M -shyness/SM -shyster/SM -Siamese/M -Siam/M -Siana/M -Sianna/M -Sian's -Sibbie/M -Sibby/M -Sibeal/M -Sibelius/M -Sibella/M -Sibelle/M -Sibel/M -Siberia/M -Siberian/S -sibilance/M -sibilancy/M -sibilant/SY -Sibilla/M -Sibley/M -sibling/SM -Sib/M -Sibylla/M -Sibylle/M -sibylline -Sibyl/M -sibyl/SM -Siciliana/M -Sicilian/S -Sicily/M -sickbay/M -sickbed/S -sickener/M -sickening/Y -sicken/JRDG -sicker/Y -sick/GXTYNDRSP -sickie/SM -sickish/PY -sickle/SDGM -sickliness/M -sickly/TRSDPG -sickness/MS -sicko/S -sickout/S -sickroom/SM -sic/S -sidearm/S -sideband/MS -sidebar/MS -sideboard/SM -sideburns -sidecar/MS -sided/A -sidedness -side/ISRM -sidekick/MS -sidelight/SM -sideline/MGDRS -sidelong -sideman/M -sidemen -sidepiece/S -sidereal -sider/FA -sides/A -sidesaddle/MS -sideshow/MS -sidesplitting -sidestepped -sidestepping -sidestep/S -sidestroke/GMSD -sideswipe/GSDM -sidetrack/SDG -sidewalk/MS -sidewall/MS -sidewards -sideway/SM -sidewinder/SM -siding/SM -sidle/DSG -Sid/M -Sidnee/M -Sidney/M -Sidoney/M -Sidonia/M -Sidonnie/M -SIDS -siege/GMDS -Siegel/M -Siegfried/M -Sieglinda/M -Siegmund/M -Siemens/M -Siena/M -sienna/SM -Sierpinski/M -sierra/SM -siesta/MS -sieve/GZMDS -Siffre/M -sifted/UA -sifter/M -sift/GZJSDR -Sigfrid/M -Sigfried/M -SIGGRAPH/M -sigh/DRG -sigher/M -sighs -sighted/P -sighter/M -sighting/S -sight/ISM -sightless/Y -sightliness/UM -sightly/TURP -sightread -sightseeing/S -sightsee/RZ -Sigismond/M -Sigismondo/M -Sigismund/M -Sigismundo/M -Sig/M -sigma/SM -sigmoid -Sigmund/M -signal/A -signaled -signaler/S -signaling -signalization/S -signalize/GSD -signally -signalman/M -signalmen -signals -signal's -signatory/SM -signature/MS -signboard/MS -signed/FU -signer/SC -signet/SGMD -sign/GARDCS -significance/IMS -significantly/I -significant/YS -signification/M -signify/DRSGNX -signing/S -Signora/M -signora/SM -signore/M -signori -signories -signorina/SM -signorine -Signor/M -signor/SFM -signpost/DMSG -sign's -signs/F -Sigrid/M -Sigurd/M -Sigvard/M -Sihanouk/M -Sikhism/MS -Sikh/MS -Sikhs -Sikkimese -Sikkim/M -Sikorsky/M -silage/GMSD -Silas/M -Sileas/M -siled -Sile/M -silence/MZGRSD -silencer/M -silentness/M -silent/TSPRY -Silesia/M -silhouette/GMSD -silica/SM -silicate/SM -siliceous -silicide/M -silicone/SM -silicon/MS -silicoses -silicosis/M -silken/DG -silk/GXNDMS -silkily -silkiness/SM -silkscreen/SM -silkworm/MS -silky/RSPT -silliness/SM -sill/MS -silly/PRST -silo/GSM -siltation/M -silt/MDGS -siltstone/M -silty/RT -Silurian/S -Silvain/M -Silva/M -Silvana/M -Silvan/M -Silvano/M -Silvanus/M -silverer/M -silverfish/MS -Silverman/M -silver/RDYMGS -silversmith/M -silversmiths -Silverstein/M -silverware/SM -silvery/RTP -Silvester/M -Silvia/M -Silvie/M -Silvio/M -Si/M -SIMD -Simenon/M -Simeon/M -simian/S -similar/EY -similarity/EMS -simile/SM -similitude/SME -Simla/M -simmer/GSD -Simmonds/M -Simmons/M -Simmonsville/M -Sim/MS -Simms/M -Simona/M -Simone/M -Simonette/M -simonize/SDG -Simon/M -Simonne/M -simony/MS -simpatico -simper/GDS -simpleminded/YP -simpleness/S -simple/RSDGTP -simpleton/SM -simplex/S -simplicity/MS -simplified/U -simplify/ZXRSDNG -simplistic -simplistically -simply -Simpson/M -simulacrum/M -Simula/M -SIMULA/M -simulate/XENGSD -simulation/ME -simulative -simulator/SEM -simulcast/GSD -simultaneity/SM -simultaneousness/M -simultaneous/YP -Sinai/M -Sinatra/M -since -sincere/IY -sincereness/M -sincerer -sincerest -sincerity/MIS -Sinclair/M -Sinclare/M -Sindbad/M -Sindee/M -Sindhi/M -sinecure/MS -sinecurist/M -sine/SM -sinew/SGMD -sinewy -sinfulness/SM -sinful/YP -Singaporean/S -Singapore/M -sing/BGJZYDR -Singborg/M -singeing -singer/M -Singer/M -singe/S -singing/Y -singlehanded/Y -singleness/SM -single/PSDG -Singleton/M -singleton/SM -singletree/SM -singlet/SM -singsong/GSMD -singularity/SM -singularization/M -singular/SY -Sinhalese/M -sinisterness/M -sinister/YP -sinistral/Y -sinkable/U -sinker/M -sink/GZSDRB -sinkhole/SM -Sinkiang/M -sinking/M -sinlessness/M -sinless/YP -sin/MAGS -sinned -sinner/MS -sinning -sinter/DM -sinuosity/MS -sinuousities -sinuousness/M -sinuous/PY -sinusitis/SM -sinus/MS -sinusoidal/Y -sinusoid/MS -Siobhan/M -Siouxie/M -Sioux/M -siphon/DMSG -siphons/U -sipped -sipper/SM -sipping -sip/S -sired/C -sire/MS -siren/M -sires/C -siring/C -Sirius/M -sirloin/MS -Sir/MS -sirocco/MS -sirred -sirring -sirup's -sir/XGMNDS -sisal/MS -Sisely/M -Sisile/M -sis/S -Sissie/M -sissified -Sissy/M -sissy/TRSM -sister/GDYMS -sisterhood/MS -sisterliness/MS -sisterly/P -sister's/A -Sistine -Sisyphean -Sisyphus/M -sit/AG -sitarist/SM -sitar/SM -sitcom/SM -site/DSJM -sits -sitter/MS -sitting/SM -situate/GNSDX -situational/Y -situationist -situation/M -situ/S -situs/M -Siusan/M -Siva/M -Siward/M -sixfold -sixgun -six/MRSH -sixpence/MS -sixpenny -sixshooter -sixteen/HRSM -sixteenths -sixths -sixth/Y -sixtieths -sixty/SMH -sizableness/M -sizable/P -sized/UA -size/GJDRSBMZ -sizer/M -sizes/A -sizing/M -sizzler/M -sizzle/RSDG -SJ -Sjaelland/M -SK -ska/S -skateboard/SJGZMDR -skater/M -skate/SM -skat/JMDRGZ -skedaddle/GSD -skeet/RMS -skein/MDGS -skeletal/Y -skeleton/MS -Skell/M -Skelly/M -skeptical/Y -skepticism/MS -skeptic/SM -sketchbook/SM -sketcher/M -sketchily -sketchiness/MS -sketch/MRSDZG -sketchpad -sketchy/PRT -skew/DRSPGZ -skewer/GDM -skewing/M -skewness/M -skidded -skidding -skid/S -skiff/GMDS -skiing/M -skilfully -skill/DMSG -skilled/U -skillet/MS -skillfulnesses -skillfulness/MU -skillful/YUP -skilling/M -skimmed -skimmer/MS -skimming/SM -ski/MNJSG -skimp/GDS -skimpily -skimpiness/MS -skimpy/PRT -skim/SM -skincare -skindive/G -skinflint/MS -skinhead/SM -skinless -skinned -Skinner/M -skinner/SM -skinniness/MS -skinning -skinny/TRSP -skin/SM -skintight -Skip/M -skipped -Skipper/M -skipper/SGDM -Skippie/M -skipping -Skipp/RM -Skippy/M -skip/S -Skipton/M -skirmisher/M -skirmish/RSDMZG -skirter/M -skirting/M -skirt/RDMGS -skit/GSMD -skitter/SDG -skittishness/SM -skittish/YP -skittle/SM -skivvy/GSDM -skoal/SDG -Skopje/M -skulduggery/MS -skulker/M -skulk/SRDGZ -skullcap/MS -skullduggery's -skull/SDM -skunk/GMDS -skycap/MS -skydiver/SM -skydiving/MS -Skye/M -skyhook -skyjacker/M -skyjack/ZSGRDJ -Skylab/M -skylarker/M -skylark/SRDMG -Skylar/M -Skyler/M -skylight/MS -skyline/MS -Sky/M -sky/MDRSGZ -skyrocket/GDMS -skyscraper/M -skyscrape/RZ -skyward/S -skywave -skyway/M -skywriter/MS -skywriting/MS -slabbed -slabbing -slab/MS -slacken/DG -slacker/M -slackness/MS -slack/SPGTZXYRDN -Slade/M -slagged -slagging -slag/MS -slain -slake/DSG -slaked/U -slalom/SGMD -slammed -slammer/S -slamming -slam/S -slander/MDRZSG -slanderousness/M -slanderous/PY -slang/SMGD -slangy/TR -slanting/Y -slant/SDG -slantwise -slapdash/S -slaphappy/TR -slap/MS -slapped -slapper -slapping -slapstick/MS -slash/GZRSD -slashing/Y -slater/M -Slater/M -slate/SM -slather/SMDG -slating/M -slat/MDRSGZ -slatted -slattern/MYS -slatting -slaughterer/M -slaughterhouse/SM -slaughter/SJMRDGZ -slave/DSRGZM -slaveholder/SM -slaver/GDM -slavery/SM -Slavic/M -slavishness/SM -slavish/YP -Slav/MS -Slavonic/M -slaw/MS -slay/RGZS -sleaze/S -sleazily -sleaziness/SM -sleazy/RTP -sledded -sledder/S -sledding -sledgehammer/MDGS -sledge/SDGM -sled/SM -sleekness/S -sleek/PYRDGTS -sleeper/M -sleepily -sleepiness/SM -sleeping/M -sleeplessness/SM -sleepless/YP -sleepover/S -sleep/RMGZS -sleepwalker/M -sleepwalk/JGRDZS -sleepwear/M -sleepyhead/MS -sleepy/PTR -sleet/DMSG -sleety/TR -sleeveless -sleeve/SDGM -sleeving/M -sleigh/GMD -sleighs -sleight/SM -sleken/DG -slenderize/DSG -slenderness/MS -slender/RYTP -slept -Slesinger/M -sleuth/GMD -sleuths -slew/DGS -slice/DSRGZM -sliced/U -slicer/M -slicker/M -slickness/MS -slick/PSYRDGTZ -slider/M -slide/S -slid/GZDR -slight/DRYPSTG -slighter/M -slighting/Y -slightness/S -slime/SM -sliminess/S -slimline -slimmed -slimmer/S -slimmest -slimming/S -slimness/S -slim/SPGYD -slimy/PTR -sling/GMRS -slingshot/MS -slings/U -slink/GS -slinky/RT -slipcase/MS -slipcover/GMDS -slipknot/SM -slippage/SM -slipped -slipper/GSMD -slipperiness/S -slippery/PRT -slipping -slipshod -slip/SM -slipstream/MDGS -slipway/SM -slither/DSG -slithery -slit/SM -slitted -slitter/S -slitting -sliver/GSDM -slivery -Sloane/M -Sloan/M -slobber/SDG -slobbery -slob/MS -Slocum/M -sloe/MS -sloganeer/MG -slogan/MS -slogged -slogging -slog/S -sloop/SM -slop/DRSGZ -sloped/U -slope/S -slopped -sloppily -sloppiness/SM -slopping -sloppy/RTP -slosh/GSDM -slothfulness/MS -slothful/PY -sloth/GDM -sloths -slot/MS -slotted -slotting -slouch/DRSZG -sloucher/M -slouchy/RT -slough/GMD -sloughs -Slovakia/M -Slovakian/S -Slovak/S -Slovene/S -Slovenia/M -Slovenian/S -slovenliness/SM -slovenly/TRP -sloven/YMS -slowcoaches -slowdown/MS -slowish -slowness/MS -slow/PGTYDRS -slowpoke/MS -SLR -sludge/SDGM -sludgy/TR -slue/MGDS -sluggard/MS -slugged -slugger/SM -slugging -sluggishness/SM -sluggish/YP -slug/MS -sluice/SDGM -slumberer/M -slumber/MDRGS -slumberous -slumlord/MS -slummed -slummer -slumming -slum/MS -slummy/TR -slump/DSG -slung/U -slunk -slur/MS -slurp/GSD -slurred -slurried/M -slurring -slurrying/M -slurry/MGDS -slushiness/SM -slush/SDMG -slushy/RTP -slut/MS -sluttish -slutty/TR -Sly/M -slyness/MS -sly/RTY -smacker/M -smack/SMRDGZ -smallholders -smallholding/MS -smallish -Small/M -smallness/S -smallpox/SM -small/SGTRDP -smalltalk -smalltime -Smallwood/M -smarmy/RT -smarten/GD -smartness/S -smartypants -smart/YRDNSGTXP -smasher/M -smash/GZRSD -smashing/Y -smashup/S -smattering/SM -smearer/M -smear/GRDS -smeary/TR -smeller/M -smelliness/MS -smell/SBRDG -smelly/TRP -smelter/M -smelt/SRDGZ -Smetana/M -smidgen/MS -smilax/MS -smile/GMDSR -smiley/M -smilies -smiling/UY -smirch/SDG -smirk/GSMD -Smirnoff/M -smite/GSR -smiter/M -smith/DMG -smithereens -Smithfield/M -Smith/M -smiths -Smithsonian/M -Smithson/M -Smithtown/M -smithy/SM -smitten -Smitty/M -Sm/M -smocking/M -smock/SGMDJ -smoggy/TR -smog/SM -smoke/GZMDSRBJ -smokehouse/MS -smokeless -smoker/M -smokescreen/S -smokestack/MS -Smokey/M -smokiness/S -smoking/M -smoky/RSPT -smoldering/Y -smolder/SGD -Smolensk/M -Smollett/M -smooch/SDG -smoothen/DG -smoother/M -smoothie/SM -smoothness/MS -smooths -smooth/TZGPRDNY -sm�rg�sbord/SM -smote -smother/GSD -SMSA/MS -SMTP -Smucker/M -smudge/GSD -smudginess/M -smudgy/TRP -smugged -smugger -smuggest -smugging -smuggle/JZGSRD -smuggler/M -smugness/MS -smug/YSP -smut/SM -Smuts/M -smutted -smuttiness/SM -smutting -smutty/TRP -Smyrna/M -snack/SGMD -snaffle/GDSM -snafu/DMSG -snagged -snagging -snag/MS -snail/GSDM -Snake -snakebird/M -snakebite/MS -snake/DSGM -snakelike -snakeroot/M -snaky/TR -snapback/M -snapdragon/MS -snapped/U -snapper/SM -snappily -snappiness/SM -snapping/U -snappishness/SM -snappish/PY -snappy/PTR -snapshot/MS -snapshotted -snapshotting -snap/US -snare/DSRGM -snarer/M -snarf/JSGD -snarler/M -snarling/Y -snarl/UGSD -snarly/RT -snatch/DRSZG -snatcher/M -snazzily -snazzy/TR -Snead/M -sneaker/MD -sneakily -sneakiness/SM -sneaking/Y -sneak/RDGZS -sneaky/PRT -Sneed/M -sneerer/M -sneer/GMRDJS -sneering/Y -sneeze/SRDG -Snell/M -snicker/GMRD -snick/MRZ -snideness/M -Snider/M -snide/YTSRP -sniffer/M -sniff/GZSRD -sniffle/GDRS -sniffler/M -sniffles/M -snifter/MDSG -snigger's -sniper/M -snipe/SM -snipped -snipper/SM -snippet/SM -snipping -snippy/RT -snip/SGDRZ -snitch/GDS -snit/SM -sniveler/M -snivel/JSZGDR -Sn/M -snobbery/SM -snobbishness/S -snobbish/YP -snobby/RT -snob/MS -Snodgrass/M -snood/SGDM -snooker/GMD -snook/SMRZ -snooper/M -snoop/SRDGZ -Snoopy/M -snoopy/RT -snootily -snootiness/MS -snoot/SDMG -snooty/TRP -snooze/GSD -snore/DSRGZ -snorkel/ZGSRDM -snorter/M -snort/GSZRD -snot/MS -snotted -snottily -snottiness/SM -snotting -snotty/TRP -snout/SGDM -snowball/SDMG -snowbank/SM -Snowbelt/SM -snowbird/SM -snowblower/S -snowboard/GZDRJS -snowbound -snowcapped -snowdrift/MS -snowdrop/MS -snowfall/MS -snowfield/MS -snowflake/MS -snow/GDMS -snowily -snowiness/MS -Snow/M -snowman/M -snowmen -snowmobile/GMDRS -snowplough/M -snowploughs -snowplow/SMGD -snowshed -snowshoeing -snowshoe/MRS -snowshoer/M -snowstorm/MS -snowsuit/S -snowy/RTP -snubbed -snubber -snubbing -snub/SP -snuffbox/SM -snuffer/M -snuff/GZSYRD -snuffle/GDSR -snuffler/M -snuffly/RT -snugged -snugger -snuggest -snugging -snuggle/GDS -snuggly -snugness/MS -snug/SYP -Snyder/M -so -SO -soaker/M -soak/GDRSJ -soapbox/DSMG -soapiness/S -soap/MDRGS -soapstone/MS -soapsud/S -soapy/RPT -soar/DRJSG -soarer/M -soaring/Y -sobbed -sobbing/Y -soberer/M -soberness/SM -sober/PGTYRD -sobriety/SIM -sobriquet/MS -sob/SZR -Soc -soccer/MS -sociabilities -sociability/IM -sociable/S -sociably/IU -socialism/SM -socialistic -socialist/SM -socialite/SM -sociality/M -socialization/SM -socialized/U -socializer/M -socialize/RSDG -socially/U -social/SY -societal/Y -society/MS -socio -sociobiology/M -sociocultural/Y -sociodemographic -socioeconomically -socioeconomic/S -sociolinguistics/M -sociological/MY -sociologist/SM -sociology/SM -sociometric -sociometry/M -sociopath/M -sociopaths -socket/SMDG -sock/GDMS -Socorro/M -Socrates/M -Socratic/S -soc/S -soda/SM -sodded -sodden/DYPSG -soddenness/M -sodding -Soddy/M -sodium/MS -sod/MS -sodomite/MS -sodomize/GDS -Sodom/M -sodomy/SM -soever -sofa/SM -Sofia/M -Sofie/M -softball/MS -softbound -softener/M -soften/ZGRD -softhearted -softie's -softness/MS -soft/SPXTYNR -software/MS -softwood/SM -softy/SM -soggily -sogginess/S -soggy/RPT -Soho/M -soign� -soiled/U -soil/SGMD -soir�e/SM -sojourn/RDZGSM -solace/GMSRD -solacer/M -solaria -solarium/M -solar/S -solder/RDMSZG -soldier/MDYSG -soldiery/MS -sold/RU -solecism/MS -soled/FA -solemness -solemnify/GSD -solemnity/MS -solemnization/SM -solemnize/GSD -solemnness/SM -solemn/PTRY -solenoid/MS -soler/F -soles/IFA -sole/YSP -sol/GSMDR -solicitation/S -solicited/U -solicitor/MS -solicitousness/S -solicitous/YP -solicit/SDG -solicitude/MS -solidarity/MS -solidi -solidification/M -solidify/NXSDG -solidity/S -solidness/SM -solid/STYRP -solidus/M -soliloquies -soliloquize/DSG -soliloquy/M -soling/NM -solipsism/MS -solipsist/S -Solis/M -solitaire/SM -solitary/SP -solitude/SM -Sollie/M -Solly/M -Sol/MY -solo/DMSG -soloist/SM -Solomon/SM -Solon/M -Soloviev/M -solstice/SM -solubility/IMS -soluble/SI -solute/ENAXS -solute's -solution/AME -solvable/UI -solvating -solve/ABSRDZG -solved/EU -solvency/IMS -solvent/IS -solvently -solvent's -solver/MEA -solves/E -solving/E -Solzhenitsyn/M -Somalia/M -Somalian/S -Somali/MS -soma/M -somatic -somberness/SM -somber/PY -sombre -sombrero/SM -somebody'll -somebody/SM -someday -somehow -someone'll -someone/SM -someplace/M -somersault/DSGM -Somerset/M -somerset/S -somersetted -somersetting -Somerville/M -something/S -sometime/S -someway/S -somewhat/S -somewhere/S -some/Z -sommelier/SM -Somme/M -somnambulism/SM -somnambulist/SM -somnolence/MS -somnolent/Y -Somoza/M -sonar/SM -sonata/MS -sonatina/SM -Sondheim/M -Sondra/M -Sonenberg/M -songbag -songbird/SM -songbook/S -songfest/MS -songfulness/M -songful/YP -Songhai/M -Songhua/M -song/MS -songster/MS -songstress/SM -songwriter/SM -songwriting -Sonia/M -sonic/S -Sonja/M -Son/M -sonnet/MDSG -Sonnie/M -Sonni/M -Sonnnie/M -Sonny/M -sonny/SM -Sonoma/M -Sonora/M -sonority/S -sonorousness/SM -sonorous/PY -son/SMY -Sontag/M -sonuvabitch -Sonya/M -Sony/M -soonish -soon/TR -soothe -soother/M -sooth/GZTYSRDMJ -soothingness/M -soothing/YP -sooths -soothsayer/M -soothsay/JGZR -soot/MGDS -sooty/RT -SOP -Sophey/M -Sophia/SM -Sophie/M -Sophi/M -sophism/SM -sophister/M -sophistical -sophisticatedly -sophisticated/U -sophisticate/XNGDS -sophistication/MU -sophistic/S -sophist/RMS -sophistry/SM -Sophoclean -Sophocles/M -sophomore/SM -sophomoric -Sophronia/M -soporifically -soporific/SM -sopped -sopping/S -soppy/RT -soprano/SM -sop/SM -Sopwith/M -sorbet/SM -Sorbonne/M -sorcerer/MS -sorceress/S -sorcery/MS -Sorcha/M -sordidness/SM -sordid/PY -sorehead/SM -soreness/S -Sorensen/M -Sorenson/M -sore/PYTGDRS -sorghum/MS -sorority/MS -sorrel/SM -Sorrentine/M -sorrily -sorriness/SM -sorrower/M -sorrowfulness/SM -sorrowful/YP -sorrow/GRDMS -sorry/PTSR -sorta -sortable -sorted/U -sorter/MS -sort/FSAGD -sortieing -sortie/MSD -sort's -sos -SOS -Sosa/M -Sosanna/M -Soto/M -sot/SM -sottish -soubriquet's -souffl�/MS -sough/DG -soughs -sought/U -soulfulness/MS -soulful/YP -soulless/Y -soul/MDS -sound/AUD -soundboard/MS -sounders -sounder's -sounder/U -soundest -sounding/AY -soundings -sounding's -soundless/Y -soundly/U -soundness/UMS -soundproof/GSD -soundproofing/M -sound's -sounds/A -soundtrack/MS -soup�on/SM -soup/GMDS -Souphanouvong/M -soupy/RT -source/ASDMG -sourceless -sourdough -sourdoughs -sourish -sourness/MS -sourpuss/MS -sour/TYDRPSG -Sousa/M -sousaphone/SM -sous/DSG -souse -sou/SMH -Southampton/M -southbound -southeastern -southeaster/YM -Southeast/MS -southeast/RZMS -southeastward/S -southerly/S -souther/MY -southerner/M -Southerner/MS -southernisms -southernmost -southern/PZSYR -Southey/M -Southfield/M -southing/M -southland/M -South/M -southpaw/MS -south/RDMG -souths -Souths -southward/S -southwestern -southwester/YM -Southwest/MS -southwest/RMSZ -southwestward/S -souvenir/SM -sou'wester -sovereignty/MS -sovereign/YMS -soviet/MS -Soviet/S -sow/ADGS -sowbelly/M -sowens/M -sower/DS -Soweto/M -sown/A -sox's -soybean/MS -Soyinka/M -soy/MS -Soyuz/M -Spaatz/M -spacecraft/MS -space/DSRGZMJ -spaceflight/S -spaceman/M -spacemen -spaceport/SM -spacer/M -spaceship/MS -spacesuit/MS -spacewalk/GSMD -Spacewar/M -spacewoman -spacewomen -spacey -spacial -spacier -spaciest -spaciness -spacing/M -spaciousness/SM -spacious/PY -Spackle -spade/DSRGM -spadeful/SM -spader/M -spadework/SM -spadices -spadix/M -Spafford/M -spaghetti/SM -Spahn/M -Spain/M -spake -Spalding/M -Spam/M -spa/MS -Span -spandex/MS -spandrels -spangle/GMDS -Spanglish/S -Spaniard/SM -spanielled -spanielling -spaniel/SM -Spanish/M -spanker/M -spanking/M -spank/SRDJG -span/MS -spanned/U -spanner/SM -spanning -SPARC/M -SPARCstation/M -spar/DRMGTS -spareness/MS -spare/PSY -spareribs -sparer/M -sparing/UY -sparker/M -sparkle/DRSGZ -sparkler/M -Sparkman/M -Sparks -spark/SGMRD -sparky/RT -sparling/SM -sparred -sparrer -sparring/U -sparrow/MS -sparseness/S -sparse/YP -sparsity/S -spars/TR -Spartacus/M -Sparta/M -spartan -Spartan/S -spasm/GSDM -spasmodic -spasmodically -spastic/S -spate/SM -spathe/MS -spatiality/M -spatial/Y -spat/MS -spatted -spatter/DGS -spatterdock/M -spatting -spatula/SM -spavin/DMS -spawner/M -spawn/MRDSG -spay/DGS -SPCA -speakable/U -speakeasy/SM -speaker/M -Speaker's -speakership/M -speaking/U -speak/RBGZJS -spearer/M -spearfish/SDMG -spearhead/GSDM -spearmint/MS -spear/MRDGS -Spears -spec'd -specialism/MS -specialist/MS -specialization/SM -specialized/U -specialize/GZDSR -specializing/U -special/SRYP -specialty/MS -specie/MS -specif -specifiability -specifiable -specifiably -specifically -specification/SM -specificity/S -specific/SP -specified/U -specifier/SM -specifies -specify/AD -specifying -specimen/SM -spec'ing -speciousness/SM -specious/YP -speck/GMDS -speckle/GMDS -spec/SM -spectacle/MSD -spectacular/SY -spectator/SM -specter/DMS -specter's/A -spectralness/M -spectral/YP -spectra/M -spectrogram/MS -spectrographically -spectrograph/M -spectrography/M -spectrometer/MS -spectrometric -spectrometry/M -spectrophotometer/SM -spectrophotometric -spectrophotometry/M -spectroscope/SM -spectroscopic -spectroscopically -spectroscopy/SM -spectrum/M -specularity -specular/Y -speculate/VNGSDX -speculation/M -speculative/Y -speculator/SM -sped -speech/GMDS -speechlessness/SM -speechless/YP -speedboat/GSRM -speedboating/M -speeder/M -speedily -speediness/SM -speedometer/MS -speed/RMJGZS -speedster/SM -speedup/MS -speedway/SM -speedwell/MS -speedy/PTR -speer/M -speleological -speleologist/S -speleology/MS -spellbinder/M -spellbind/SRGZ -spellbound -spelldown/MS -spelled/A -speller/M -spelling/M -spell/RDSJGZ -spells/A -spelunker/MS -spelunking/S -Spencerian -Spencer/M -Spence/RM -spender/M -spend/SBJRGZ -spendthrift/MS -Spenglerian -Spengler/M -Spense/MR -Spenserian -Spenser/M -spent/U -spermatophyte/M -spermatozoa -spermatozoon/M -spermicidal -spermicide/MS -sperm/SM -Sperry/M -spew/DRGZJS -spewer/M -SPF -sphagnum/SM -sphere/SDGM -spherical/Y -spheric/S -spherics/M -spheroidal/Y -spheroid/SM -spherule/MS -sphincter/SM -Sphinx/M -sphinx/MS -Spica/M -spic/DGM -spicebush/M -spice/SM -spicily -spiciness/SM -spicule/MS -spicy/PTR -spider/SM -spiderweb/S -spiderwort/M -spidery/TR -Spiegel/M -Spielberg/M -spiel/GDMS -spier/M -spiffy/TDRSG -spigot/MS -spike/GMDSR -Spike/M -spiker/M -spikiness/SM -spiky/PTR -spillage/SM -Spillane/M -spillover/SM -spill/RDSG -spillway/SM -spinach/MS -spinal/YS -spindle/JGMDRS -spindly/RT -spinelessness/M -spineless/YP -spine/MS -spinet/SM -spininess/M -spinnability/M -spinnaker/SM -spinneret/MS -spinner/SM -spinning/SM -Spinoza/M -spin/S -spinsterhood/SM -spinsterish -spinster/MS -spiny/PRT -spiracle/SM -spiraea's -spiral/YDSG -spire/AIDSGF -spirea/MS -spire's -spiritedness/M -spirited/PY -spirit/GMDS -spiritless -spirits/I -spiritualism/SM -spiritualistic -spiritualist/SM -spirituality/SM -spiritual/SYP -spirituous -spirochete/SM -Spiro/M -spiry/TR -spitball/SM -spite/CSDAG -spitefuller -spitefullest -spitefulness/MS -spiteful/PY -spite's/A -spitfire/SM -spit/SGD -spitted -spitting -spittle/SM -spittoon/SM -Spitz/M -splashdown/MS -splasher/M -splash/GZDRS -splashily -splashiness/MS -splashy/RTP -splat/SM -splatted -splatter/DSG -splatting -splayfeet -splayfoot/MD -splay/SDG -spleen/SM -splendidness/M -splendid/YRPT -splendorous -splendor/SM -splenetic/S -splicer/M -splice/RSDGZJ -spline/MSD -splinter/GMD -splintery -splint/SGZMDR -splits/M -split/SM -splittable -splitter/MS -splitting/S -splodge/SM -splotch/MSDG -splotchy/RT -splurge/GMDS -splutterer/M -splutter/RDSG -Sp/M -Spock/M -spoilables -spoilage/SM -spoil/CSZGDR -spoiled/U -spoiler/MC -spoilsport/SM -Spokane/M -spoke/DSG -spoken/U -spokeshave/MS -spokesman/M -spokesmen -spokespeople -spokesperson/S -spokeswoman/M -spokeswomen -spoliation/MCS -spongecake -sponge/GMZRSD -sponger/M -sponginess/S -spongy/TRP -sponsor/DGMS -sponsorship/S -spontaneity/SM -spontaneousness/M -spontaneous/PY -spoof/SMDG -spookiness/MS -spook/SMDG -spooky/PRT -spool/SRDMGZ -spoonbill/SM -spoonerism/SM -spoonful/MS -spoon/GSMD -spoor/GSMD -sporadically -sporadic/Y -spore/DSGM -sporran/MS -sportiness/SM -sporting/Y -sportiveness/M -sportive/PY -sportscast/RSGZM -sportsmanlike/U -sportsman/MY -sportsmanship/MS -sportsmen -sportswear/M -sportswoman/M -sportswomen -sportswriter/S -sport/VGSRDM -sporty/PRT -Sposato/M -spotlessness/MS -spotless/YP -spotlight/GDMS -spotlit -spot/MSC -spotted/U -spotter/MS -spottily -spottiness/SM -spotting/M -spotty/RTP -spousal/MS -spouse/GMSD -spouter/M -spout/SGRD -sprain/SGD -sprang/S -sprat/SM -sprawl/GSD -sprayed/UA -sprayer/M -spray/GZSRDM -sprays/A -spreadeagled -spreader/M -spread/RSJGZB -spreadsheet/S -spreeing -spree/MDS -sprigged -sprigging -sprightliness/MS -sprightly/PRT -sprig/MS -springboard/MS -springbok/MS -springeing -springer/M -Springfield/M -springily -springiness/SM -springing/M -springlike -spring/SGZR -Springsteen/M -springtime/MS -springy/TRP -sprinkle/DRSJZG -sprinkler/DM -sprinkling/M -Sprint/M -sprint/SGZMDR -sprite/SM -spritz/GZDSR -sprocket/DMGS -sprocketed/U -Sproul/M -sprout/GSD -spruce/GMTYRSDP -spruceness/SM -sprue/M -sprung/U -spryness/S -spry/TRY -SPSS -spudded -spudding -spud/MS -Spuds/M -spume/DSGM -spumone's -spumoni/S -spumy/TR -spun -spunk/GSMD -spunky/SRT -spurge/MS -spuriousness/SM -spurious/PY -spur/MS -spurn/RDSG -spurred -spurring -spurt/SGD -sputa -Sputnik -sputnik/MS -sputter/DRGS -sputum/M -spy/DRSGM -spyglass/MS -sq -sqq -sqrt -squabbed -squabber -squabbest -squabbing -squabbler/M -squabble/ZGDRS -squab/SM -squadded -squadding -squadron/MDGS -squad/SM -squalidness/SM -squalid/PRYT -squaller/M -squall/GMRDS -squally/RT -squalor/SM -squamous/Y -squander/GSRD -Squanto -square/GMTYRSDP -squareness/SM -squarer/M -Squaresville/M -squarish -squash/GSRD -squashiness/M -squashy/RTP -squatness/MS -squat/SPY -squatted -squatter/SMDG -squattest -squatting -squawker/M -squawk/GRDMZS -squaw/SM -squeaker/M -squeakily -squeakiness/S -squeak/RDMGZS -squeaky/RPT -squealer/M -squeal/MRDSGZ -squeamishness/SM -squeamish/YP -squeegee/DSM -squeegeeing -squeeze/GZSRDB -squeezer/M -squelcher/M -squelch/GDRS -squelchy/RT -squibbed -Squibb/GM -squibbing -Squibbing/M -squib/SM -squidded -squidding -squid/SM -squiggle/MGDS -squiggly/RT -squinter/M -squint/GTSRD -squinting/Y -squirehood -squire/SDGM -squirm/SGD -squirmy/TR -squirrel/SGYDM -squirter/M -squirt/GSRD -squish/GSD -squishy/RTP -Sr -Srinagar/M -SRO -S's -SS -SSA -SSE -ssh -s's/KI -SSS -SST -SSW -ST -stabbed -stabber/S -stabbing/S -stability/ISM -stabilizability -stabilization/CS -stabilization's -stabilize/CGSD -stabilizer/MS -stableman/M -stablemate -stablemen -stableness/UM -stable/RSDGMTP -stabler/U -stable's/F -stables/F -stablest/U -stabling/M -stably/U -stab/YS -staccato/S -Stacee/M -Stace/M -Stacey/M -Stacia/M -Stacie/M -Staci/M -stackable -stacker/M -stack's -stack/USDG -Stacy/M -stadias -stadia's -stadium/MS -Stael/M -Stafani/M -staff/ADSG -Staffard/M -staffer/MS -Stafford/M -Staffordshire/M -staffroom -staff's -Staford/M -stag/DRMJSGZ -stagecoach/MS -stagecraft/MS -stagehand/MS -stager/M -stage/SM -stagestruck -stagflation/SM -stagged -staggerer/M -stagger/GSJDR -staggering/Y -staggers/M -stagging -staginess/M -staging/M -stagnancy/SM -stagnant/Y -stagnate/NGDSX -stagnation/M -stagy/PTR -Stahl/M -staidness/MS -staid/YRTP -stained/U -stainer/M -stainless/YS -stain/SGRD -staircase/SM -stair/MS -stairway/SM -stairwell/MS -stake/DSGM -stakeholder/S -stakeout/SM -stalactite/SM -stalag/M -stalagmite/SM -stalemate/SDMG -staleness/MS -stale/PGYTDSR -Staley/M -Stalingrad/M -Stalinist -Stalin/SM -stalker/M -stalk/MRDSGZJ -stall/DMSJG -stalled/I -stallholders -stallion/SM -Stallone/M -stalls/I -stalwartness/M -stalwart/PYS -Sta/M -stamen/MS -Stamford/M -stamina/SM -staminate -stammer/DRSZG -stammerer/M -stammering/Y -stampede/MGDRS -stampeder/M -stamped/U -stamper/M -stamp/RDSGZJ -stance/MIS -stancher/M -stanch/GDRST -stanchion/SGMD -standalone -standardization/AMS -standardized/U -standardize/GZDSR -standardizer/M -standardizes/A -standard/YMS -standby -standbys -standee/MS -Standford/M -standing/M -Standish/M -standoffish -standoff/SM -standout/MS -standpipe/MS -standpoint/SM -stand/SJGZR -standstill/SM -Stanfield/M -Stanford/M -Stanislas/M -Stanislaus/M -Stanislavsky/M -Stanislaw/M -stank/S -Stanleigh/M -Stanley/M -Stanly/M -stannic -stannous -Stanton/M -Stanwood/M -Stan/YMS -stanza/MS -staph/M -staphs -staphylococcal -staphylococci -staphylococcus/M -stapled/U -stapler/M -Stapleton/M -staple/ZRSDGM -starboard/SDMG -starchily -starchiness/MS -starch/MDSG -starchy/TRP -stardom/MS -star/DRMGZS -stardust/MS -stare/S -starfish/SM -Stargate/M -stargaze/ZGDRS -staring/U -Starkey/M -Stark/M -starkness/MS -stark/SPGTYRD -Starla/M -Starlene/M -starless -starlet/MS -starlight/MS -starling/MS -Starlin/M -starlit -Star/M -starred -starring -Starr/M -starry/TR -starship -starstruck -start/ASGDR -starter/MS -startle/GDS -startling/PY -startup/SM -starvation/MS -starveling/M -starver/M -starve/RSDG -stash/GSD -stasis/M -stat/DRSGV -statecraft/MS -stated/U -statehood/MS -statehouse/S -Statehouse's -state/IGASD -statelessness/MS -stateless/P -stateliness/MS -stately/PRT -statement/MSA -Staten/M -stater/M -stateroom/SM -stateside -state's/K -states/K -statesmanlike -statesman/MY -statesmanship/SM -statesmen -stateswoman -stateswomen -statewide -statical/Y -static/S -statics/M -stationarity -stationary/S -stationer/M -stationery/MS -stationmaster/M -station/SZGMDR -statistical/Y -statistician/MS -statistic/MS -Statler/M -stator/SM -statuary/SM -statue/MSD -statuesque/YP -statuette/MS -stature/MS -status/SM -statute/SM -statutorily -statutory/P -Stauffer/M -staunchness/S -staunch/PDRSYTG -stave/DGM -Stavro/MS -stay/DRGZS -stayer/M -std -STD -stdio -steadfastness/MS -steadfast/PY -steadily/U -steadiness's -steadiness/US -steading/M -stead/SGDM -steady/DRSUTGP -steakhouse/SM -steak/SM -stealer/M -stealing/M -steal/SRHG -stealthily -stealthiness/MS -stealth/M -stealths -stealthy/PTR -steamboat/MS -steamer/MDG -steamfitter/S -steamfitting/S -steamily -steaminess/SM -steamroller/DMG -steamroll/GZRDS -steam/SGZRDMJ -steamship/SM -steamy/RSTP -Stearne/M -Stearn/SM -steed/SM -Steele/M -steeliness/SM -steelmaker/M -steel/SDMGZ -steelworker/M -steelwork/ZSMR -steelyard/MS -steely/TPRS -Steen/M -steepen/GD -steeper/M -steeplebush/M -steeplechase/GMSD -steeplejack/MS -steeple/MS -steepness/S -steep/SYRNDPGTX -steerage/MS -steerer/M -steer/SGBRDJ -steersman/M -steersmen -steeves -Stefa/M -Stefania/M -Stefanie/M -Stefan/M -Stefano/M -Steffane/M -Steffen/M -Steffie/M -Steffi/M -stegosauri -stegosaurus/S -Steinbeck/SM -Steinberg/M -Steinem/M -Steiner/M -Steinmetz/M -Stein/RM -stein/SGZMRD -Steinway/M -Stella/M -stellar -stellated -Ste/M -stemless -stemmed/U -stemming -stem/MS -stemware/MS -stench/GMDS -stenciler/M -stencil/GDRMSZ -stencillings -Stendhal/M -Stendler/M -Stengel/M -stenographer/SM -stenographic -stenography/SM -steno/SM -stenotype/M -stentorian -stepbrother/MS -stepchild/M -stepchildren -stepdaughter/MS -stepfather/SM -Stepha/M -Stephana/M -Stephanie/M -Stephani/M -Stephan/M -Stephannie/M -Stephanus/M -Stephenie/M -Stephen/MS -Stephenson/M -Stephie/M -Stephi/M -Stephine/M -stepladder/SM -step/MIS -stepmother/SM -stepparent/SM -stepper/M -steppe/RSDGMZ -steppingstone/S -stepsister/SM -stepson/SM -stepwise -stereographic -stereography/M -stereo/GSDM -stereophonic -stereoscope/MS -stereoscopic -stereoscopically -stereoscopy/M -stereotype/GMZDRS -stereotypic -stereotypical/Y -sterile -sterility/SM -sterilization/SM -sterilized/U -sterilize/RSDGZ -sterilizes/A -Sterling/M -sterling/MPYS -sterlingness/M -sternal -Sternberg/M -Sterne/M -Stern/M -sternness/S -Sterno -stern/SYRDPGT -sternum/SM -steroidal -steroid/MS -stertorous -Stesha/M -stethoscope/SM -stet/MS -stetson/MS -Stetson/SM -stetted -stetting -Steuben/M -Stevana/M -stevedore/GMSD -Steve/M -Stevena/M -Steven/MS -Stevenson/M -Stevie/M -Stevy/M -steward/DMSG -stewardess/SM -Steward/M -stewardship/MS -Stewart/M -stew/GDMS -st/GBJ -sticker/M -stickily -stickiness/SM -stickleback/MS -stickle/GZDR -stickler/M -stick/MRDSGZ -stickpin/SM -stickup/SM -sticky/GPTDRS -Stieglitz/M -stiffen/JZRDG -stiff/GTXPSYRND -stiffness/MS -stifle/GJRSD -stifler/M -stifling/Y -stigma/MS -stigmata -stigmatic/S -stigmatization/C -stigmatizations -stigmatization's -stigmatize/DSG -stigmatized/U -stile/GMDS -stiletto/MDSG -stillbirth/M -stillbirths -stillborn/S -stiller/MI -stillest -Stillman/M -Stillmann/M -stillness/MS -still/RDIGS -Stillwell/M -stilted/PY -stilt/GDMS -Stilton/MS -Stimson/M -stimulant/MS -stimulated/U -stimulate/SDVGNX -stimulation/M -stimulative/S -stimulator/M -stimulatory -stimuli/M -stimulus/MS -Stine/M -stinger/M -sting/GZR -stingily -stinginess/MS -stinging/Y -stingray/MS -stingy/RTP -stinkbug/S -stinker/M -stink/GZRJS -stinking/Y -stinkpot/M -Stinky/M -stinky/RT -stinter/M -stinting/U -stint/JGRDMS -stipendiary -stipend/MS -stipple/JDRSG -stippler/M -stipulate/XNGSD -stipulation/M -Stirling/M -stirred/U -stirrer/SM -stirring/YS -stirrup/SM -stir/S -stitch/ASDG -stitcher/M -stitchery/S -stitching/MS -stitch's -St/M -stoat/SM -stochastic -stochastically -stochasticity -stockade/SDMG -stockbreeder/SM -stockbroker/MS -stockbroking/S -stocker/SM -Stockhausen/M -stockholder/SM -Stockholm/M -stockily -stockiness/SM -stockinet's -stockinette/S -stocking/MDS -stockist/MS -stockpile/GRSD -stockpiler/M -stockpot/MS -stockroom/MS -stock's -stock/SGAD -stocktaking/MS -Stockton/M -stockyard/SM -stocky/PRT -Stoddard/M -stodge/M -stodgily -stodginess/S -stodgy/TRP -stogy/SM -stoical/Y -stoichiometric -stoichiometry/M -stoicism/SM -Stoicism/SM -stoic/MS -Stoic/MS -stoke/DSRGZ -stoker/M -stokes/M -Stokes/M -STOL -stole/MDS -stolen -stolidity/S -stolidness/S -stolid/PTYR -stolon/SM -stomachache/MS -stomacher/M -stomach/RSDMZG -stomachs -stomp/DSG -stonecutter/SM -stone/DSRGM -Stonehenge/M -stoneless -Stone/M -stonemason/MS -stoner/M -stonewall/GDS -stoneware/MS -stonewashed -stonework/SM -stonewort/M -stonily -stoniness/MS -stony/TPR -stood -stooge/SDGM -stool/SDMG -stoop/SDG -stopcock/MS -stopgap/SM -stoplight/SM -stopover/MS -stoppable/U -stoppage/MS -Stoppard/M -stopped/U -stopper/GMDS -stopping/M -stopple/GDSM -stop's -stops/M -stop/US -stopwatch/SM -storage/SM -store/ADSRG -storefront/SM -storehouse/MS -storekeeper/M -storekeep/ZR -storeroom/SM -store's -stork/SM -stormbound -stormer/M -Stormie/M -stormily -Stormi/M -storminess/S -Storm/M -storm/SRDMGZ -stormtroopers -Stormy/M -stormy/PTR -storyboard/MDSG -storybook/MS -story/GSDM -storyline -storyteller/SM -storytelling/MS -Stouffer/M -stoup/SM -stouten/DG -stouthearted -Stout/M -stoutness/MS -stout/STYRNP -stove/DSRGM -stovepipe/SM -stover/M -stowage/SM -stowaway/MS -Stowe/M -stow/GDS -Strabo/M -straddler/M -straddle/ZDRSG -Stradivari/SM -Stradivarius/M -strafe/GRSD -strafer/M -straggle/GDRSZ -straggly/RT -straightaway/S -straightedge/MS -straightener/M -straighten/ZGDR -straightforwardness/MS -straightforward/SYP -straightjacket's -straightness/MS -straight/RNDYSTXGP -straightway/S -strain/ASGZDR -strained/UF -strainer/MA -straining/F -strains/F -straiten/DG -straitjacket/GDMS -straitlaced -straitness/M -strait/XTPSMGYDNR -stranded/P -strand/SDRG -strangeness/SM -strange/PYZTR -stranger/GMD -stranglehold/MS -strangle/JDRSZG -strangles/M -strangulate/NGSDX -strangulation/M -strapless/S -strapped/U -strapping/S -strap's -strap/US -Strasbourg/M -stratagem/SM -strata/MS -strategical/Y -strategic/S -strategics/M -strategist/SM -strategy/SM -Stratford/M -strati -stratification/M -stratified/U -stratify/NSDGX -stratigraphic -stratigraphical -stratigraphy/M -stratosphere/SM -stratospheric -stratospherically -stratum/M -stratus/M -Strauss -Stravinsky/M -strawberry/SM -strawflower/SM -straw/SMDG -strayer/M -stray/GSRDM -streak/DRMSGZ -streaker/M -streaky/TR -streamed/U -streamer/M -stream/GZSMDR -streaming/M -streamline/SRDGM -streetcar/MS -streetlight/SM -street/SMZ -streetwalker/MS -streetwise -Streisand/M -strengthen/AGDS -strengthener/MS -strength/NMX -strengths -strenuousness/SM -strenuous/PY -strep/MS -streptococcal -streptococci -streptococcus/M -streptomycin/SM -stress/DSMG -stressed/U -stressful/YP -stretchability/M -stretchable/U -stretch/BDRSZG -stretcher/DMG -stretchy/TRP -strew/GDHS -strewn -striae -stria/M -striate/DSXGN -striated/U -striation/M -stricken -Strickland/M -strict/AF -stricter -strictest -strictly -strictness/S -stricture/SM -stridden -stridency/S -strident/Y -strider/M -stride/RSGM -strife/SM -strikebreaker/M -strikebreaking/M -strikebreak/ZGR -strikeout/S -striker/M -strike/RSGZJ -striking/Y -Strindberg/M -stringed -stringency/S -stringent/Y -stringer/MS -stringiness/SM -stringing/M -string's -string/SAG -stringy/RTP -striper/M -stripe/SM -strip/GRDMS -stripling/M -stripped/U -stripper/MS -stripping -stripteaser/M -striptease/SRDGZM -stripy/RT -strive/JRSG -striven -striver/M -strobe/SDGM -stroboscope/SM -stroboscopic -strode -stroke/ZRSDGM -stroking/M -stroller/M -stroll/GZSDR -Stromberg/M -Stromboli/M -Strom/M -strongbow -strongbox/MS -Strongheart/M -stronghold/SM -strongish -Strong/M -strongman/M -strongmen -strongroom/MS -strong/YRT -strontium/SM -strophe/MS -strophic -stropped -stropping -strop/SM -strove -struck -structuralism/M -structuralist/SM -structural/Y -structured/AU -structureless -structures/A -structure/SRDMG -structuring/A -strudel/MS -struggle/GDRS -struggler/M -strummed -strumming -strumpet/GSDM -strum/S -strung/UA -strut/S -strutted -strutter/M -strutting -strychnine/MS -Stuart/MS -stubbed/M -stubbing -Stubblefield/MS -stubble/SM -stubbly/RT -stubbornness/SM -stubborn/SGTYRDP -stubby/SRT -stub/MS -stuccoes -stucco/GDM -stuck/U -studbook/SM -studded -studding/SM -Studebaker/M -studentship/MS -student/SM -studiedness/M -studied/PY -studier/SM -studio/MS -studiousness/SM -studious/PY -stud/MS -study/AGDS -stuffily -stuffiness/SM -stuffing/M -stuff/JGSRD -stuffy/TRP -stultify/NXGSD -Stu/M -stumble/GZDSR -stumbling/Y -stumpage/M -stumper/M -stump/RDMSG -stumpy/RT -stung -stunk -stunned -stunner/M -stunning/Y -stun/S -stunted/P -stunt/GSDM -stupefaction/SM -stupefy/DSG -stupendousness/M -stupendous/PY -stupidity/SM -stupidness/M -stupid/PTYRS -stupor/MS -sturdily -sturdiness/SM -sturdy/SRPT -sturgeon/SM -Sturm/M -stutter/DRSZG -Stuttgart/M -Stuyvesant/M -sty/DSGM -Stygian -styled/A -style/GZMDSR -styles/A -styli -styling/A -stylishness/S -stylish/PY -stylistically -stylistic/S -stylist/MS -stylites -stylization/MS -stylize/DSG -stylos -stylus/SM -stymieing -stymie/SD -stymy's -styptic/S -styrene/MS -Styrofoam/S -Styx/M -suable -Suarez/M -suasion/EMS -suaveness/S -suave/PRYT -suavity/SM -subaltern/SM -subarctic/S -subareas -Subaru/M -subassembly/M -subatomic/S -subbasement/SM -subbed -subbing -subbranch/S -subcaste/M -subcategorizing -subcategory/SM -subchain -subclassifications -subclass/MS -subclauses -subcommand/S -subcommittee/SM -subcompact/S -subcomponent/MS -subcomputation/MS -subconcept -subconsciousness/SM -subconscious/PSY -subconstituent -subcontinental -subcontinent/MS -subcontractor/SM -subcontract/SMDG -subcultural -subculture/GMDS -subcutaneous/Y -subdirectory/S -subdistrict/M -subdivide/SRDG -subdivision/SM -subdued/Y -subdue/GRSD -subduer/M -subexpression/MS -subfamily/SM -subfield/MS -subfile/SM -subfreezing -subgoal/SM -subgraph -subgraphs -subgroup/SGM -subharmonic/S -subheading/M -subhead/MGJS -subhuman/S -subindex/M -subinterval/MS -subj -subject/GVDMS -subjection/SM -subjectiveness/M -subjective/PSY -subjectivist/S -subjectivity/SM -subjoin/DSG -subjugate/NGXSD -subjugation/M -subjunctive/S -sublayer -sublease/DSMG -sublet/S -subletting -sublimate/GNSDX -sublimation/M -sublime/GRSDTYP -sublimeness/M -sublimer/M -subliminal/Y -sublimity/SM -sublist/SM -subliterary -sublunary -submachine -submarginal -submarine/MZGSRD -submariner/M -submerge/DSG -submergence/SM -submerse/XNGDS -submersible/S -submersion/M -submicroscopic -submission/SAM -submissiveness/MS -submissive/PY -submit/SA -submittable -submittal -submitted/A -submitter/S -submitting/A -submode/S -submodule/MS -sub/MS -subnational -subnet/SM -subnetwork/SM -subnormal/SY -suboptimal -suborbital -suborder/MS -subordinately/I -subordinates/I -subordinate/YVNGXPSD -subordination/IMS -subordinator -subornation/SM -suborn/GSD -subpage -subparagraph/M -subpart/MS -subplot/MS -subpoena/GSDM -subpopulation/MS -subproblem/SM -subprocess/SM -subprofessional/S -subprogram/SM -subproject -subproof/SM -subquestion/MS -subrange/SM -subregional/Y -subregion/MS -subrogation/M -subroutine/SM -subsample/MS -subschema/MS -subscribe/ASDG -subscriber/SM -subscripted/U -subscription/MS -subscript/SGD -subsection/SM -subsegment/SM -subsentence -subsequence/MS -subsequent/SYP -subservience/SM -subservient/SY -subset/MS -subsidence/MS -subside/SDG -subsidiarity -subsidiary/MS -subsidization/MS -subsidized/U -subsidizer/M -subsidize/ZRSDG -subsidy/MS -subsistence/MS -subsistent -subsist/SGD -subsocietal -subsoil/DRMSG -subsonic -subspace/MS -subspecies/M -substance/MS -substandard -substantially/IU -substantialness/M -substantial/PYS -substantiated/U -substantiate/VGNSDX -substantiation/MFS -substantiveness/M -substantive/PSYM -substantivity -substation/MS -substerilization -substitutability -substituted/U -substitute/NGVBXDRS -substitutionary -substitution/M -substitutive/Y -substrata -substrate/MS -substratum/M -substring/S -substructure/SM -subsume/SDG -subsurface/S -subsystem/MS -subtable/S -subtask/SM -subteen/SM -subtenancy/MS -subtenant/SM -subtend/DS -subterfuge/SM -subterranean/SY -subtest -subtext/SM -subtitle/DSMG -subtleness/M -subtle/RPT -subtlety/MS -subtly/U -subtopic/SM -subtotal/GSDM -subtracter/M -subtraction/MS -subtract/SRDZVG -subtrahend/SM -subtree/SM -subtropical -subtropic/S -subtype/MS -subunit/SM -suburbanite/MS -suburbanization/MS -suburbanized -suburbanizing -suburban/S -suburbia/SM -suburb/MS -subvention/MS -subversion/SM -subversiveness/MS -subversive/SPY -subverter/M -subvert/SGDR -subway/MDGS -subzero -succeeder/M -succeed/GDRS -successfulness/M -successful/UY -succession/SM -successiveness/M -successive/YP -success/MSV -successor/MS -successorship -succinctness/SM -succinct/RYPT -succored/U -succorer/M -succor/SGZRDM -succotash/SM -succubus/M -succulence/SM -succulency/MS -succulent/S -succumb/SDG -such -suchlike -sucker/DMG -suck/GZSDRB -suckle/SDJG -suckling/M -Sucre/M -sucrose/MS -suction/SMGD -Sudanese/M -Sudanic/M -Sudan/M -suddenness/SM -sudden/YPS -Sudetenland/M -sud/S -suds/DSRG -sudsy/TR -sued/DG -suede/SM -Suellen/M -Sue/M -suer/M -suet/MS -Suetonius/M -suety -sue/ZGDRS -Suez/M -sufferance/SM -sufferer/M -suffering/M -suffer/SJRDGZ -suffice/GRSD -sufficiency/SIM -sufficient/IY -suffixation/S -suffixed/U -suffix/GMRSD -suffocate/XSDVGN -suffocating/Y -Suffolk/M -suffragan/S -suffrage/MS -suffragette/MS -suffragist/SM -suffuse/VNGSDX -suffusion/M -Sufi/M -Sufism/M -sugarcane/S -sugarcoat/GDS -sugarless -sugarplum/MS -sugar/SJGMD -sugary/TR -suggest/DRZGVS -suggester/M -suggestibility/SM -suggestible -suggestion/MS -suggestiveness/MS -suggestive/PY -sugillate -Suharto/M -suicidal/Y -suicide/GSDM -Sui/M -suitability/SU -suitableness/S -suitable/P -suitably/U -suitcase/MS -suited/U -suite/SM -suiting/M -suit/MDGZBJS -suitor/SM -Sukarno/M -Sukey/M -Suki/M -sukiyaki/SM -Sukkoth's -Sukkot/S -Sula/M -Sulawesi/M -Suleiman/M -sulfaquinoxaline -sulfa/S -sulfate/MSDG -sulfide/S -sulfite/M -sulfonamide/SM -sulfur/DMSG -sulfuric -sulfurousness/M -sulfurous/YP -sulk/GDS -sulkily -sulkiness/S -sulky/RSPT -Sulla/M -sullenness/MS -sullen/TYRP -sullied/U -Sullivan/M -sully/GSD -Sully/M -sulphate/SM -sulphide/MS -sulphuric -sultana/SM -sultanate/MS -sultan/SM -sultrily -sultriness/SM -sultry/PRT -Sulzberger/M -sumach's -sumac/SM -Sumatra/M -Sumatran/S -sumer/F -Sumeria/M -Sumerian/M -summability/M -summable -summand/MS -summarily -summarization/MS -summarized/U -summarize/GSRDZ -summarizer/M -summary/MS -summation/FMS -summed -Summerdale/M -summerhouse/MS -summer/SGDM -Summer/SM -summertime/MS -summery/TR -summing -summit/GMDS -summitry/MS -summoner/M -summon/JSRDGZ -summons/MSDG -sum/MRS -Sumner/M -sumo/SM -sump/SM -sumptuousness/SM -sumptuous/PY -Sumter/M -Sun -sunbaked -sunbathe -sunbather/M -sunbathing/M -sunbaths -sunbath/ZRSDG -sunbeam/MS -Sunbelt/M -sunblock/S -sunbonnet/MS -sunburn/GSMD -sunburst/MS -suncream -sundae/MS -Sundanese/M -Sundas -Sunday/MS -sunder/SDG -sundial/MS -sundowner/M -sundown/MRDSZG -sundris -sundry/S -sunfish/SM -sunflower/MS -sunglass/MS -Sung/M -sung/U -sunk/SN -sunlamp/S -sunless -sunlight/MS -sunlit -sun/MS -sunned -Sunni/MS -sunniness/SM -sunning -Sunnite/SM -Sunny/M -sunny/RSTP -Sunnyvale/M -sunrise/GMS -sunroof/S -sunscreen/S -sunset/MS -sunsetting -sunshade/MS -Sunshine/M -sunshine/MS -sunshiny -sunspot/SM -sunstroke/MS -suntanned -suntanning -suntan/SM -sunup/MS -superabundance/MS -superabundant -superannuate/GNXSD -superannuation/M -superbness/M -superb/YRPT -supercargoes -supercargo/M -supercharger/M -supercharge/SRDZG -superciliousness/SM -supercilious/PY -supercity/S -superclass/M -supercomputer/MS -supercomputing -superconcept -superconducting -superconductivity/SM -superconductor/SM -supercooled -supercooling -supercritical -superdense -super/DG -superego/SM -supererogation/MS -supererogatory -superficiality/S -superficial/SPY -superfine -superfix/M -superfluity/MS -superfluousness/S -superfluous/YP -superheat/D -superheroes -superhero/SM -superhighway/MS -superhumanness/M -superhuman/YP -superimpose/SDG -superimposition/MS -superintendence/S -superintendency/SM -superintendent/SM -superintend/GSD -superiority/MS -Superior/M -superior/SMY -superlativeness/M -superlative/PYS -superlunary -supermachine -superman/M -Superman/M -supermarket/SM -supermen -supermodel -supermom/S -supernal -supernatant -supernaturalism/M -supernaturalness/M -supernatural/SPY -supernormal/Y -supernovae -supernova/MS -supernumerary/S -superordinate -superpose/BSDG -superposition/MS -superpower/MS -superpredicate -supersaturate/XNGDS -supersaturation/M -superscribe/GSD -superscript/DGS -superscription/SM -superseder/M -supersede/SRDG -supersensitiveness/M -supersensitive/P -superset/MS -supersonically -supersonic/S -supersonics/M -superstar/SM -superstition/SM -superstitious/YP -superstore/S -superstructural -superstructure/SM -supertanker/SM -supertitle/MSDG -superuser/MS -supervene/GSD -supervention/S -supervised/U -supervise/SDGNX -supervision/M -supervisor/SM -supervisory -superwoman/M -superwomen -supineness/M -supine/PSY -supper/DMG -supplanter/M -supplant/SGRD -supplemental/S -supplementary/S -supplementation/S -supplementer/M -supplement/SMDRG -suppleness/SM -supple/SPLY -suppliant/S -supplicant/MS -supplicate/NGXSD -supplication/M -supplier/AM -suppl/RDGT -supply/MAZGSRD -supportability/M -supportable/UI -supported/U -supporter/M -supporting/Y -supportive/Y -support/ZGVSBDR -supposed/Y -suppose/SRDBJG -supposition/MS -suppository/MS -suppressant/S -suppressed/U -suppressible/I -suppression/SM -suppressive/P -suppressor/S -suppress/VGSD -suppurate/NGXSD -suppuration/M -supp/YDRGZ -supra -supranational -supranationalism/M -suprasegmental -supremacist/SM -supremacy/SM -supremal -supremeness/M -supreme/PSRTY -supremo/M -sup/RSZ -supt -Supt/M -Surabaya/M -Surat/M -surcease/DSMG -surcharge/MGSD -surcingle/MGSD -surd/M -sured/I -surefire -surefooted -surely -sureness/MS -sureness's/U -sure/PU -surer/I -surest -surety/SM -surfaced/UA -surface/GSRDPZM -surfacer/AMS -surfaces/A -surfacing/A -surfactant/SM -surfboard/MDSG -surfeit/SDRMG -surfer/M -surfing/M -surf/SJDRGMZ -surged/A -surge/GYMDS -surgeon/MS -surgery/MS -surges/A -surgical/Y -Suriname -Surinamese -Surinam's -surliness/SM -surly/TPR -surmiser/M -surmise/SRDG -surmountable/IU -surmount/DBSG -surname/GSDM -surpassed/U -surpass/GDS -surpassing/Y -surplice/SM -surplus/MS -surplussed -surplussing -surprised/U -surprise/MGDRSJ -surpriser/M -surprising/YU -surrealism/MS -surrealistic -surrealistically -surrealist/S -surreality -surreal/S -surrender/DRSG -surrenderer/M -surreptitiousness/S -surreptitious/PY -surrey/SM -surrogacy/S -surrogate/SDMNG -surrogation/M -surrounding/M -surround/JGSD -surtax/SDGM -surveillance/SM -surveillant -surveyed/A -surveying/M -survey/JDSG -surveyor/MS -surveys/A -survivability/M -survivable/U -survivalist/S -survival/MS -survive/SRDBG -survivor/MS -survivorship/M -Surya/M -Sus -Susana/M -Susanetta/M -Susan/M -Susannah/M -Susanna/M -Susanne/M -Susann/M -susceptibilities -susceptibility/IM -susceptible/I -Susette/M -sushi/SM -Susie/M -Susi/M -suspected/U -suspecter/M -suspect/GSDR -suspecting/U -suspend/DRZGS -suspended/UA -suspender/M -suspenseful -suspense/MXNVS -suspension/AM -suspensive/Y -suspensor/M -suspicion/GSMD -suspiciousness/M -suspicious/YP -Susquehanna/M -Sussex/M -sustainability -sustainable/U -sustain/DRGLBS -sustainer/M -sustainment/M -sustenance/MS -Susy/M -Sutherland/M -Sutherlan/M -sutler/MS -Sutton/M -suture/GMSD -SUV -Suva/M -Suwanee/M -Suzanna/M -Suzanne/M -Suzann/M -suzerain/SM -suzerainty/MS -Suzette/M -Suzhou/M -Suzie/M -Suzi/M -Suzuki/M -Suzy/M -Svalbard/M -svelte/RPTY -Svend/M -Svengali -Sven/M -Sverdlovsk/M -Svetlana/M -SW -swabbed -swabbing -swabby/S -Swabian/SM -swab/MS -swaddle/SDG -swagged -swagger/GSDR -swagging -swag/GMS -Swahili/MS -swain/SM -SWAK -swallower/M -swallow/GDRS -swallowtail/SM -swam -swami/SM -swamper/M -swampland/MS -swamp/SRDMG -swampy/RPT -Swanee/M -swankily -swankiness/MS -swank/RDSGT -swanky/PTRS -swanlike -swan/MS -swanned -swanning -Swansea/M -Swanson/M -swappable/U -swapped -swapper/SM -swapping -swap/S -sward/MSGD -swarmer/M -swarm/GSRDM -swarthiness/M -Swarthmore/M -swarthy/RTP -swart/P -Swartz/M -swashbuckler/SM -swashbuckling/S -swash/GSRD -swastika/SM -SWAT -swatch/MS -swathe -swather/M -swaths -swath/SRDMGJ -swat/S -swatted -swatter/MDSG -swatting -swayback/SD -sway/DRGS -swayer/M -Swaziland/M -Swazi/SM -swearer/M -swear/SGZR -swearword/SM -sweatband/MS -sweater/M -sweatily -sweatiness/M -sweatpants -sweat/SGZRM -sweatshirt/S -sweatshop/MS -sweaty/TRP -Swedenborg/M -Sweden/M -swede/SM -Swede/SM -Swedish -Swed/MN -Sweeney/SM -sweeper/M -sweepingness/M -sweeping/PY -sweep/SBRJGZ -sweeps/M -sweepstakes -sweepstake's -sweetbread/SM -sweetbrier/SM -sweetcorn -sweetened/U -sweetener/M -sweetening/M -sweeten/ZDRGJ -sweetheart/MS -sweetie/MS -sweeting/M -sweetish/Y -Sweet/M -sweetmeat/MS -sweetness/MS -sweetshop -sweet/TXSYRNPG -swellhead/DS -swelling/M -swell/SJRDGT -swelter/DJGS -sweltering/Y -Swen/M -Swenson/M -swept -sweptback -swerve/GSD -swerving/U -swifter/M -swift/GTYRDPS -Swift/M -swiftness/MS -swigged -swigging -swig/SM -swill/SDG -swimmer/MS -swimming/MYS -swim/S -swimsuit/MS -Swinburne/M -swindle/GZRSD -swindler/M -swineherd/MS -swine/SM -swingeing -swinger/M -swinging/Y -swing/SGRZJB -swingy/R -swinishness/M -swinish/PY -Swink/M -swipe/DSG -swirling/Y -swirl/SGRD -swirly/TR -swish/GSRD -swishy/R -swiss -Swiss/S -switchback/GDMS -switchblade/SM -switchboard/MS -switcher/M -switch/GBZMRSDJ -switchgear -switchman/M -switchmen/M -switchover/M -Switzerland/M -Switzer/M -Switz/MR -swivel/GMDS -swizzle/RDGM -swob's -swollen -swoon/GSRD -swooning/Y -swoop/RDSG -swoosh/GSD -swop's -sword/DMSG -swordfish/SM -swordplayer/M -swordplay/RMS -swordsman/M -swordsmanship/SM -swordsmen -swordtail/M -swore -sworn -swot/S -swum -swung -s/XJBG -sybarite/MS -sybaritic -Sybila/M -Sybilla/M -Sybille/M -Sybil/M -Sybyl/M -sycamore/SM -sycophancy/S -sycophantic -sycophantically -sycophant/SYM -Sydelle/M -Sydel/M -Syd/M -Sydney/M -Sykes/M -Sylas/M -syllabicate/GNDSX -syllabication/M -syllabicity -syllabic/S -syllabification/M -syllabify/GSDXN -syllabi's -syllable/SDMG -syllabub/M -syllabus/MS -syllabusss -syllogism/MS -syllogistic -Sylow/M -sylphic -sylphlike -sylph/M -sylphs -Sylvania/M -Sylvan/M -sylvan/S -Sylvester/M -Sylvia/M -Sylvie/M -Syman/M -symbiont/M -symbioses -symbiosis/M -symbiotic -symbol/GMDS -symbolical/Y -symbolics/M -symbolic/SM -symbolism/MS -symbolist/MS -symbolization/MAS -symbolized/U -symbolize/GZRSD -symbolizes/A -Symington/M -symmetric -symmetrically/U -symmetricalness/M -symmetrical/PY -symmetrization/M -symmetrizing -symmetry/MS -Symon/M -sympathetically/U -sympathetic/S -sympathized/U -sympathizer/M -sympathize/SRDJGZ -sympathizing/MYUS -sympathy/MS -symphonic -symphonists -symphony/MS -symposium/MS -symptomatic -symptomatically -symptomatology/M -symptom/MS -syn -synagogal -synagogue/SM -synapse/SDGM -synaptic -synchronism/M -synchronization's -synchronization/SA -synchronize/AGCDS -synchronized/U -synchronizer/MS -synchronousness/M -synchronous/YP -synchrony -synchrotron/M -syncopate/VNGXSD -syncopation/M -syncope/MS -sync/SGD -syndicalist -syndicate/XSDGNM -syndic/SM -syndrome/SM -synergism/SM -synergistic -synergy/MS -synfuel/S -Synge/M -synod/SM -synonymic -synonymous/Y -synonym/SM -synonymy/MS -synopses -synopsis/M -synopsized -synopsizes -synopsizing -synoptic/S -syntactical/Y -syntactics/M -syntactic/SY -syntax/MS -syntheses -synthesis/M -synthesized/U -synthesize/GZSRD -synthesizer/M -synthesizes/A -synthetically -synthetic/S -syphilis/MS -syphilitic/S -syphilized -syphilizing -Syracuse/M -Syriac/M -Syria/M -Syrian/SM -syringe/GMSD -syrup/DMSG -syrupy -sys -systematical/Y -systematics/M -systematic/SP -systematization/SM -systematized/U -systematizer/M -systematize/ZDRSG -systematizing/U -systemically -systemic/S -systemization/SM -system/MS -systole/MS -systolic -Szilard/M -Szymborska/M -TA -Tabasco/MS -Tabatha/M -Tabbatha/M -tabbed -Tabbie/M -Tabbi/M -tabbing -Tabbitha/M -Tabb/M -tabbouleh -tabboulehs -tabby/GSD -Tabby/M -Taber/M -Tabernacle/S -tabernacle/SDGM -Tabina/M -Tabitha/M -tabla/MS -tableau/M -tableaux -tablecloth/M -tablecloths -table/GMSD -tableland/SM -tablespoonful/MS -tablespoon/SM -tablet/MDGS -tabletop/MS -tableware/SM -tabling/M -tabloid/MS -Tab/MR -taboo/GSMD -Tabor/M -tabor/MDGS -Tabriz/SM -tab/SM -tabula -tabular/Y -tabulate/XNGDS -tabulation/M -tabulator/MS -tachometer/SM -tachometry -tachycardia/MS -tachyon/SM -tacitness/MS -taciturnity/MS -taciturn/Y -Tacitus/M -tacit/YP -tacker/M -tack/GZRDMS -tackiness/MS -tackler/M -tackle/RSDMZG -tackling/M -tacky/RSTP -Tacoma/M -taco/MS -tact/FSM -tactfulness/S -tactful/YP -tactical/Y -tactician/MS -tactic/SM -tactile/Y -tactility/S -tactlessness/SM -tactless/PY -tactual/Y -Taddeo/M -Taddeusz/M -Tadd/M -Tadeas/M -Tadeo/M -Tades -Tadio/M -Tad/M -tadpole/MS -tad/SM -Tadzhikistan's -Tadzhikstan/M -Taegu/M -Taejon/M -taffeta/MS -taffrail/SM -Taffy/M -taffy/SM -Taft/M -Tagalog/SM -tagged/U -tagger/S -tagging -Tagore/M -tag/SM -Tagus/M -Tahitian/S -Tahiti/M -Tahoe/M -Taichung/M -taiga/MS -tailback/MS -tail/CMRDGAS -tailcoat/S -tailer/AM -tailgate/MGRSD -tailgater/M -tailing/MS -taillessness/M -tailless/P -taillight/MS -tailor/DMJSGB -Tailor/M -tailpipe/SM -tailspin/MS -tailwind/SM -Tainan/M -Taine/M -taint/DGS -tainted/U -Taipei/M -Taite/M -Tait/M -Taiwanese -Taiwan/M -Taiyuan/M -Tajikistan -takeaway/S -taken/A -takeoff/SM -takeout/S -takeover/SM -taker/M -take/RSHZGJ -takes/IA -taking/IA -Taklamakan/M -Talbert/M -Talbot/M -talcked -talcking -talc/SM -talcum/S -talebearer/SM -talented/M -talentless -talent/SMD -taler/M -tale/RSMN -tali -Talia/M -Taliesin/M -talion/M -talismanic -talisman/SM -talkativeness/MS -talkative/YP -talker/M -talk/GZSRD -talkie/M -talky/RST -Talladega/M -Tallahassee/M -Tallahatchie/M -Tallahoosa/M -tallboy/MS -Tallchief/M -Talley/M -Talleyrand/M -Tallia/M -Tallie/M -Tallinn/M -tallish -tallness/MS -Tallou/M -tallow/DMSG -tallowy -tall/TPR -Tallulah/M -tally/GRSDZ -tallyho/DMSG -Tally/M -Talmudic -Talmudist/MS -Talmud/MS -talon/SMD -talus/MS -Talyah/M -Talya/M -Ta/M -tamable/M -tamale/SM -tamarack/SM -Tamarah/M -Tamara/M -tamarind/MS -Tamar/M -Tamarra/M -Tamas -tambourine/MS -tamed/U -Tameka/M -tameness/S -Tamera/M -Tamerlane/M -tame/SYP -Tamika/M -Tamiko/M -Tamil/MS -Tami/M -Tam/M -Tamma/M -Tammany/M -Tammara/M -tam/MDRSTZGB -Tammie/M -Tammi/M -Tammy/M -Tampa/M -Tampax/M -tampered/U -tamperer/M -tamper/ZGRD -tampon/DMSG -tamp/SGZRD -Tamqrah/M -Tamra/M -tanager/MS -Tanaka/M -Tana/M -Tananarive/M -tanbark/SM -Tancred/M -tandem/SM -Tandie/M -Tandi/M -tandoori/S -Tandy/M -Taney/M -T'ang -Tanganyika/M -tangelo/SM -tangency/M -tangential/Y -tangent/SM -tangerine/MS -tang/GSYDM -tangibility/MIS -tangible/IPS -tangibleness's/I -tangibleness/SM -tangibly/I -Tangier/M -tangle's -tangle/UDSG -tango/MDSG -Tangshan/M -tangy/RST -Tanhya/M -Tania/M -Tani/M -Tanisha/M -Tanitansy/M -tankard/MS -tanker/M -tankful/MS -tank/GZSRDM -Tan/M -tan/MS -tanned/U -Tannenbaum/M -Tanner/M -tanner/SM -tannery/MS -tannest -Tanney/M -Tannh�user/M -Tannie/M -tanning/SM -tannin/SM -Tann/RM -Tanny/M -Tansy/M -tansy/SM -tantalization/SM -tantalized/U -tantalize/GZSRD -tantalizingly/S -tantalizingness/S -tantalizing/YP -tantalum/MS -Tantalus/M -tantamount -tantra/S -tantrum/SM -Tanya/M -Tanzania/M -Tanzanian/S -taoism -Taoism/MS -Taoist/MS -taoist/S -Tao/M -tao/S -Tapdance/M -taped/U -tapeline/S -taperer/M -taper/GRD -tape/SM -tapestry/GMSD -tapeworm/MS -tapioca/MS -tapir/MS -tap/MSDRJZG -tapped/U -tapper/MS -tappet/MS -tapping/M -taproom/MS -taproot/SM -taps/M -Tarah/M -Tara/M -tarantella/MS -tarantula/MS -Tarawa/M -Tarazed/M -Tarbell/M -tardily -tardiness/S -tardy/TPRS -tare/MS -target/GSMD -tar/GSMD -tariff/DMSG -Tarim/M -Tarkington/M -tarmacked -tarmacking -tarmac/S -tarnished/U -tarnish/GDS -tarn/MS -taro/MS -tarot/MS -tarpapered -tarpaulin/MS -tarp/MS -tarpon/MS -tarragon/SM -Tarrah/M -Tarra/M -Tarrance/M -tarred/M -tarring/M -tarry/TGRSD -Tarrytown/M -tarsal/S -tarsi -tarsus/M -tartan/MS -tartaric -Tartar's -tartar/SM -Tartary/M -tartness/MS -tart/PMYRDGTS -Tartuffe/M -Taryn/M -Tarzan/M -Tasha/M -Tashkent/M -Tasia/M -task/GSDM -taskmaster/SM -taskmistress/MS -Tasmania/M -Tasmanian/S -tassellings -tassel/MDGS -Tass/M -tasted/EU -tastefulness/SME -tasteful/PEY -taste/GZMJSRD -tastelessness/SM -tasteless/YP -taster/M -taste's/E -tastes/E -tastily -tastiness/MS -tasting/E -tasty/RTP -tatami/MS -Tatar/SM -Tate/M -tater/M -Tatiana/M -Tatiania/M -tat/SRZ -tatted -tatterdemalion/SM -tattered/M -tatter/GDS -tatting/SM -tattler/M -tattle/RSDZG -tattletale/SM -tattooer/M -tattooist/MS -tattoo/ZRDMGS -tatty/R -Tatum/M -taught/AU -taunter/M -taunting/Y -taunt/ZGRDS -taupe/SM -Taurus/SM -tau/SM -tauten/GD -tautness/S -tautological/Y -tautologous -tautology/SM -taut/PGTXYRDNS -taverner/M -tavern/RMS -tawdrily -tawdriness/SM -tawdry/SRTP -Tawney/M -Tawnya/M -tawny/RSMPT -Tawsha/M -taxable/S -taxably -taxation/MS -taxed/U -taxicab/MS -taxidermist/SM -taxidermy/MS -taxi/MDGS -taximeter/SM -taxing/Y -taxiway/MS -taxonomic -taxonomically -taxonomist/SM -taxonomy/SM -taxpayer/MS -taxpaying/M -tax/ZGJMDRSB -Taylor/SM -Tb -TB -TBA -Tbilisi/M -tbs -tbsp -Tchaikovsky/M -Tc/M -TCP -TD -TDD -Te -teabag/S -teacake/MS -teacart/M -teachable/P -teach/AGS -teacher/MS -teaching/SM -teacloth -teacupful/MS -teacup/MS -Teador/M -teahouse/SM -teakettle/SM -teak/SM -teakwood/M -tealeaves -teal/MS -tea/MDGS -teammate/MS -team/MRDGS -teamster/MS -teamwork/SM -teapot/MS -tearaway -teardrop/MS -tearer/M -tearfulness/M -tearful/YP -teargas/S -teargassed -teargassing -tearjerker/S -tearoom/MS -tear/RDMSG -teary/RT -Teasdale/M -tease/KS -teasel/DGSM -teaser/M -teashop/SM -teasing/Y -teaspoonful/MS -teaspoon/MS -teas/SRDGZ -teatime/MS -teat/MDS -tech/D -technetium/SM -technicality/MS -technicalness/M -technical/YSP -technician/MS -Technicolor/MS -Technion/M -technique/SM -technocracy/MS -technocratic -technocrat/S -technological/Y -technologist/MS -technology/MS -technophobia -technophobic -techs -tectonically -tectonic/S -tectonics/M -Tecumseh/M -Tedda/M -Teddie/M -Teddi/M -Tedd/M -Teddy/M -teddy/SM -Tedie/M -Tedi/M -tediousness/SM -tedious/YP -tedium/MS -Ted/M -Tedman/M -Tedmund/M -Tedra/M -tee/DRSMH -teeing -teem/GSD -teemingness/M -teeming/PY -teenager/M -teenage/RZ -Teena/M -teen/SR -teenybopper/SM -teeny/RT -teepee's -teeshirt/S -teeter/GDS -teethe -teether/M -teething/M -teethmarks -teeth/RSDJMG -teetotaler/M -teetotalism/MS -teetotal/SRDGZ -TEFL -Teflon/MS -Tegucigalpa/M -Teheran's -Tehran -TEirtza/M -tektite/SM -Tektronix/M -telecast/SRGZ -telecommunicate/NX -telecommunication/M -telecommute/SRDZGJ -telecoms -teleconference/GMJSD -Teledyne/M -Telefunken/M -telegenic -telegrammed -telegramming -telegram/MS -telegraphic -telegraphically -telegraphist/MS -telegraph/MRDGZ -telegraphs -telegraphy/MS -telekineses -telekinesis/M -telekinetic -Telemachus/M -Telemann/M -telemarketer/S -telemarketing/S -telemeter/DMSG -telemetric -telemetry/MS -teleological/Y -teleology/M -telepathic -telepathically -telepathy/SM -telephone/SRDGMZ -telephonic -telephonist/SM -telephony/MS -telephotography/MS -telephoto/S -teleprinter/MS -teleprocessing/S -teleprompter -TelePrompter/M -TelePrompTer/S -telescope/GSDM -telescopic -telescopically -teletext/S -telethon/MS -teletype/SM -Teletype/SM -teletypewriter/SM -televangelism/S -televangelist/S -televise/SDXNG -television/M -televisor/MS -televisual -telex/GSDM -Telex/M -tell/AGS -Teller/M -teller/SDMG -telling/YS -Tell/MR -telltale/MS -tellurium/SM -telly/SM -Telnet/M -TELNET/M -telnet/S -telomeric -tel/SY -Telugu/M -temblor/SM -temerity/MS -Tempe/M -temperamental/Y -temperament/SM -temperance/IMS -tempera/SLM -temperately/I -temperateness's/I -temperateness/SM -temperate/SDGPY -temperature/MS -tempered/UE -temper/GRDM -tempering/E -temper's/E -tempers/E -tempest/DMSG -tempestuousness/SM -tempestuous/PY -template/FS -template's -Temple/M -Templeman/M -temple/SDM -Templeton/M -Temp/M -tempoes -tempo/MS -temporal/YS -temporarily -temporarinesses -temporariness/FM -temporary/SFP -temporize/GJZRSD -temporizer/M -temporizings/U -temporizing/YM -temp/SGZTMRD -temptation/MS -tempted -tempter/S -tempt/FS -tempting/YS -temptress/MS -tempura/SM -tenabilities -tenability/UM -tenableness/M -tenable/P -tenably -tenaciousness/S -tenacious/YP -tenacity/S -tenancy/MS -tenanted/U -tenant/MDSG -tenantry/MS -tench/M -tended/UE -tendency/MS -tendentiousness/SM -tendentious/PY -tendered -tenderer -tenderest -tenderfoot/MS -tender/FS -tenderheartedness/MS -tenderhearted/YP -tendering -tenderizer/M -tenderize/SRDGZ -tenderloin/SM -tenderly -tenderness/SM -tending/E -tendinitis/S -tend/ISFRDG -tendon/MS -tendril/SM -tends/E -tenebrous -tenement/MS -tenet/SM -Tenex/M -TENEX/M -tenfold/S -ten/MHB -Tenneco/M -tenner -Tennessean/S -Tennessee/M -Tenney/M -tennis/SM -Tenn/M -Tennyson/M -Tenochtitlan/M -tenon/GSMD -tenor/MS -tenpin/SM -tense/IPYTNVR -tenseness's/I -tenseness/SM -tensile -tensional/I -tension/GMRDS -tensionless -tensions/E -tension's/I -tensity/IMS -tensorial -tensor/MS -tenspot -tens/SRDVGT -tentacle/MSD -tentativeness/S -tentative/SPY -tented/UF -tenterhook/MS -tenter/M -tent/FSIM -tenths -tenth/SY -tenting/F -tenuity/S -tenuousness/SM -tenuous/YP -tenure/SDM -Teodoor/M -Teodora/M -Teodorico/M -Teodor/M -Teodoro/M -tepee/MS -tepidity/S -tepidness/S -tepid/YP -tequila/SM -Tera/M -teratogenic -teratology/MS -terbium/SM -tercel/M -tercentenary/S -tercentennial/S -Terence/M -Terencio/M -Teresa/M -Terese/M -Tereshkova/M -Teresina/M -Teresita/M -Teressa/M -Teriann/M -Teri/M -Terkel/M -termagant/SM -termcap -termer/M -terminable/CPI -terminableness/IMC -terminal/SYM -terminate/CXNV -terminated/U -terminates -terminating -termination/MC -terminative/YC -terminator/SM -termini -terminological/Y -terminology/MS -terminus/M -termite/SM -term/MYRDGS -ternary/S -tern/GIDS -tern's -terpsichorean -Terpsichore/M -terrace/MGSD -terracing/M -terracotta -terrain/MS -Terra/M -terramycin -Terrance/M -Terran/M -terrapin/MS -terrarium/MS -terrazzo/SM -Terrell/M -Terrel/M -Terre/M -Terrence/M -terrestrial/YMS -terribleness/SM -terrible/P -terribly -Terrie/M -terrier/M -terrifically -terrific/Y -terrify/GDS -terrifying/Y -Terrijo/M -Terrill/M -Terri/M -terrine/M -territoriality/M -Territorial/SM -territorial/SY -Territory's -territory/SM -terrorism/MS -terroristic -terrorist/MS -terrorized/U -terrorizer/M -terrorize/RSDZG -terror/MS -terr/S -terrycloth -Terrye/M -Terry/M -terry/ZMRS -terseness/SM -terse/RTYP -Tersina/M -tertian -Tertiary -tertiary/S -Terza/M -TESL -Tesla/M -TESOL -Tessa/M -tessellate/XDSNG -tessellation/M -tesseral -Tessie/M -Tessi/M -Tess/M -Tessy/M -testability/M -testable/U -testamentary -testament/SM -testate/IS -testator/MS -testatrices -testatrix -testbed/S -testcard -tested/AKU -tester/MFCKS -testes/M -testicle/SM -testicular -testifier/M -testify/GZDRS -testily -testimonial/SM -testimony/SM -testiness/S -testing/S -testis/M -testosterone/SM -test/RDBFZGSC -tests/AK -test's/AKF -testy/RTP -tetanus/MS -tetchy/TR -tether/DMSG -tethered/U -Tethys/M -Tetons -tetrachloride/M -tetracycline/SM -tetrafluoride -tetragonal/Y -tetrahalides -tetrahedral/Y -tetrahedron/SM -tetrameron -tetrameter/SM -tetra/MS -tetrasodium -tetravalent -Teutonic -Teuton/SM -Texaco/M -Texan/S -Texas/MS -Tex/M -TeX/M -textbook/SM -text/FSM -textile/SM -Textron/M -textual/FY -textural/Y -textured/U -texture/MGSD -T/G -Thacher/M -Thackeray/M -Thaddeus/M -Thaddus/M -Thadeus/M -Thad/M -Thailand/M -Thaine/M -Thain/M -Thai/S -thalami -thalamus/M -Thales/M -Thalia/M -thalidomide/MS -thallium/SM -thallophyte/M -Thames -than -Thane/M -thane/SM -Thanh/M -thanker/M -thankfuller -thankfullest -thankfulness/SM -thankful/YP -thanklessness/SM -thankless/PY -thanksgiving/MS -Thanksgiving/S -thank/SRDG -Thant/M -Thar/M -Thatcher/M -thatching/M -thatch/JMDRSZG -Thatch/MR -that'd -that'll -that/MS -thaumaturge/M -thaw/DGS -Thaxter/M -Thayer/M -Thayne/M -THC -the -Theadora/M -Thea/M -theatergoer/MS -theatergoing/MS -theater/SM -theatricality/SM -theatrical/YS -theatric/S -theatrics/M -Thebault/M -Thebes -Theda/M -Thedrick/M -Thedric/M -thee/DS -theeing -theft/MS -Theiler/M -their/MS -theism/SM -theistic -theist/SM -Thekla/M -Thelma/M -themas -thematically -thematics -thematic/U -theme/MS -them/GD -Themistocles/M -themselves -thence -thenceforth -thenceforward/S -Theobald/M -theocracy/SM -theocratic -Theocritus/M -theodolite/MS -Theodora/M -Theodore/M -Theodoric/M -Theodor/M -Theodosia/M -Theodosian -Theodosius/M -theologian/SM -theological/Y -theologists -theology/MS -Theo/M -theorem/MS -theoretical/Y -theoretician/MS -theoretic/S -theoretics/M -theorist/SM -theorization/SM -theorize/ZGDRS -theory/MS -theosophic -theosophical -theosophist/MS -Theosophy -theosophy/SM -therapeutically -therapeutic/S -therapeutics/M -therapist/MS -therapy/MS -Theravada/M -thereabout/S -thereafter -thereat -thereby -there'd -therefor -therefore -therefrom -therein -there'll -there/MS -thereof -thereon -Theresa/M -Therese/M -Theresina/M -Theresita/M -Theressa/M -thereto -theretofore -thereunder -thereunto -thereupon -therewith -Therine/M -thermal/YS -thermionic/S -thermionics/M -thermistor/MS -therm/MS -thermocouple/MS -thermodynamical/Y -thermodynamic/S -thermodynamics/M -thermoelastic -thermoelectric -thermoformed -thermoforming -thermogravimetric -thermoluminescence/M -thermometer/MS -thermometric -thermometry/M -thermonuclear -thermopile/M -thermoplastic/S -thermopower -thermo/S -thermosetting -thermos/S -Thermos/SM -thermostable -thermostatically -thermostatic/S -thermostatics/M -thermostat/SM -thermostatted -thermostatting -Theron/M -thesauri -thesaurus/MS -these/S -Theseus/M -thesis/M -thespian/S -Thespian/S -Thespis/M -Thessalonian -Thessalon�ki/M -Thessaly/M -theta/MS -thew/SM -they -they'd -they'll -they're -they've -th/GNJX -Thia/M -thiamine/MS -Thibaud/M -Thibaut/M -thickener/M -thickening/M -thicken/RDJZG -thicket/SMD -thickheaded/M -thickish -thickness/MS -thickset/S -thick/TXPSRNY -thief/M -Thiensville/M -Thieu/M -thievery/MS -thieve/SDJG -thievishness/M -thievish/P -thighbone/SM -thigh/DM -thighs -thimble/DSMG -thimbleful/MS -Thimbu/M -Thimphu -thine -thingamabob/MS -thingamajig/SM -thing/MP -thinkableness/M -thinkable/U -thinkably/U -think/AGRS -thinker/MS -thinkingly/U -thinking/SMYP -thinned -thinner/MS -thinness/MS -thinnest -thinning -thinnish -thin/STPYR -thiocyanate/M -thiouracil/M -third/DYGS -thirster/M -thirst/GSMDR -thirstily -thirstiness/S -thirsty/TPR -thirteen/MHS -thirteenths -thirtieths -thirty/HMS -this -this'll -thistledown/MS -thistle/SM -thither -Th/M -tho -thole/GMSD -Thomasa/M -Thomasina/M -Thomasine/M -Thomasin/M -Thoma/SM -Thomism/M -Thomistic -Thom/M -Thompson/M -Thomson/M -thong/SMD -thoracic -thorax/MS -Thorazine -Thoreau/M -thoriate/D -Thorin/M -thorium/MS -Thor/M -Thornburg/M -Thorndike/M -Thornie/M -thorniness/S -Thorn/M -thorn/SMDG -Thornton/M -Thorny/M -thorny/PTR -thoroughbred/S -thoroughfare/MS -thoroughgoing -thoroughness/SM -thorough/PTYR -Thorpe/M -Thorstein/M -Thorsten/M -Thorvald/M -those -Thoth/M -thou/DSG -though -thoughtfully -thoughtfulness/S -thoughtful/U -thoughtlessness/MS -thoughtless/YP -thought/MS -thousandfold -thousand/SHM -thousandths -Thrace/M -Thracian/M -thralldom/S -thrall/GSMD -thrash/DSRZGJ -thrasher/M -thrashing/M -threadbare/P -threader/M -threading/A -threadlike -thread/MZDRGS -thready/RT -threatener/M -threaten/GJRD -threatening/Y -threat/MDNSXG -threefold -three/MS -threepence/M -threepenny -threescore/S -threesome/SM -threnody/SM -thresh/DSRZG -thresher/M -threshold/MDGS -threw -thrice -thriftily -thriftiness/S -thriftless -thrift/SM -thrifty/PTR -thriller/M -thrilling/Y -thrill/ZMGDRS -thriver/M -thrive/RSDJG -thriving/Y -throatily -throatiness/MS -throat/MDSG -throaty/PRT -throbbed -throbbing -throb/S -throeing -throe/SDM -thrombi -thromboses -thrombosis/M -thrombotic -thrombus/M -Throneberry/M -throne/CGSD -throne's -throng/GDSM -throttle/DRSZMG -throttler/M -throughout -throughput/SM -throughway's -through/Y -throwaway/SM -throwback/MS -thrower/M -thrown -throwout -throw/SZGR -thrummed -thrumming -thrum/S -thrush/MS -thruster/M -thrust/ZGSR -Thruway/MS -thruway/SM -Thunderbird/M -Thu -Thucydides/M -thudded -thudding -thud/MS -thuggee/M -thuggery/SM -thuggish -thug/MS -Thule/M -thulium/SM -thumbnail/MS -thumbscrew/SM -thumb/SMDG -thumbtack/GMDS -thump/RDMSG -thunderbolt/MS -thunderclap/SM -thundercloud/SM -thunderer/M -thunderhead/SM -thundering/Y -thunderous/Y -thundershower/MS -thunderstorm/MS -thunderstruck -thundery -thunder/ZGJDRMS -thunk -Thurber/M -Thurman/M -Thur/MS -Thursday/SM -Thurstan/M -Thurston/M -thus/Y -thwack/DRSZG -thwacker/M -thwarter/M -thwart/GSDRY -thy -thyme/SM -thymine/MS -thymus/SM -thyratron/M -thyristor/MS -thyroglobulin -thyroidal -thyroid/S -thyronine -thyrotoxic -thyrotrophic -thyrotrophin -thyrotropic -thyrotropin/M -thyroxine/M -thyself -Tia/M -Tianjin -tiara/MS -Tiberius/M -Tiber/M -Tibetan/S -Tibet/M -tibiae -tibial -tibia/M -Tibold/M -Tiburon/M -ticker/M -ticket/SGMD -tick/GZJRDMS -ticking/M -tickler/M -tickle/RSDZG -ticklishness/MS -ticklish/PY -ticktacktoe/S -ticktock/SMDG -tic/MS -Ticonderoga/M -tidal/Y -tidbit/MS -tiddlywinks/M -tide/GJDS -tideland/MS -tidewater/SM -tideway/SM -tidily/U -tidiness/USM -tidying/M -tidy/UGDSRPT -tie/AUDS -tieback/MS -Tiebold/M -Tiebout/M -tiebreaker/SM -Tieck/M -Tiena/M -Tienanmen/M -Tientsin's -tier/DGM -Tierney/M -Tiertza/M -Tiffanie/M -Tiffani/M -tiffany/M -Tiffany/M -tiff/GDMS -Tiffie/M -Tiffi/M -Tiff/M -Tiffy/M -tigerish -tiger/SM -tightener/M -tighten/JZGDR -tightfisted -tightness/MS -tightrope/SM -tight/STXPRNY -tightwad/MS -tigress/SM -Tigris/M -Tijuana/M -tike's -Tilda/M -tilde/MS -Tildie/M -Tildi/M -Tildy/M -tile/DRSJMZG -tiled/UE -Tiler/M -tiles/U -tiling/M -tillable -tillage/SM -till/EGSZDR -tiller/GDM -tiller's/E -Tillich/M -Tillie/M -Tillman/M -Tilly/M -tilth/M -tilt/RDSGZ -Ti/M -timber/DMSG -timbering/M -timberland/SM -timberline/S -timbrel/SM -timbre/MS -Timbuktu/M -ti/MDRZ -timebase -time/DRSJMYZG -timekeeper/MS -timekeeping/SM -timelessness/S -timeless/PY -timeliness/SMU -timely/UTRP -timeout/S -timepiece/MS -timer/M -timescale/S -timeserver/MS -timeserving/S -timeshare/SDG -timespan -timestamped -timestamps -timetable/GMSD -timeworn -Timex/M -timezone/S -timidity/SM -timidness/MS -timid/RYTP -Timi/M -timing/M -Timmie/M -Timmi/M -Tim/MS -Timmy/M -Timofei/M -Timon/M -timorousness/MS -timorous/YP -Timoteo/M -Timothea/M -Timothee/M -Timotheus/M -Timothy/M -timothy/MS -timpani -timpanist/S -Timur/M -Tina/M -tincture/SDMG -tinderbox/MS -tinder/MS -Tine/M -tine/SM -tinfoil/MS -tingeing -tinge/S -ting/GYDM -tingle/SDG -tingling/Y -tingly/TR -Ting/M -tinily -tininess/MS -tinker/SRDMZG -Tinkertoy -tinkle/SDG -tinkling/M -tinkly -tin/MDGS -tinned -tinner/M -tinnily -tinniness/SM -tinning/M -tinnitus/MS -tinny/RSTP -tinplate/S -tinsel/GMDYS -Tinseltown/M -tinsmith/M -tinsmiths -tinter/M -tintinnabulation/MS -Tintoretto/M -tint/SGMRDB -tintype/SM -tinware/MS -tiny/RPT -Tioga/M -Tiphanie/M -Tiphani/M -Tiphany/M -tipi's -tip/MS -tipoff -Tippecanoe/M -tipped -Tipperary/M -tipper/MS -tippet/MS -tipping -tippler/M -tipple/ZGRSD -tippy/R -tipsily -tipsiness/SM -tipster/SM -tipsy/TPR -tiptoeing -tiptoe/SD -tiptop/S -tirade/SM -Tirana's -Tirane -tired/AYP -tireder -tiredest -tiredness/S -tirelessness/SM -tireless/PY -tire/MGDSJ -tires/A -Tiresias/M -tiresomeness/S -tiresome/PY -tiring/AU -Tirolean/S -Tirol/M -tiro's -Tirrell/M -tis -Tisha/M -Tish/M -tissue/MGSD -titanate/M -Titania/M -titanic -titanically -Titanic/M -titanium/SM -titan/SM -Titan/SM -titbit's -titer/M -tither/M -tithe/SRDGZM -tithing/M -Titian/M -titian/S -Titicaca/M -titillate/XSDVNG -titillating/Y -titillation/M -titivate/NGDSX -titivation/M -titled/AU -title/GMSRD -titleholder/SM -titling/A -titmice -titmouse/M -tit/MRZS -Tito/SM -titrate/SDGN -titration/M -titted -titter/GDS -titting -tittle/SDMG -titular/SY -Titus/M -tizzy/SM -TKO -Tlaloc/M -TLC -Tlingit/M -Tl/M -TM -Tm/M -tn -TN -tnpk -TNT -toad/SM -toadstool/SM -toady/GSDM -toadyism/M -toaster/M -toastmaster/MS -toastmistress/S -toast/SZGRDM -toasty/TRS -tobacconist/SM -tobacco/SM -tobaggon/SM -Tobago/M -Tobe/M -Tobey/M -Tobiah/M -Tobias/M -Tobie/M -Tobi/M -Tobin/M -Tobit/M -toboggan/MRDSZG -Tobye/M -Toby/M -Tocantins/M -toccata/M -Tocqueville -tocsin/MS -to/D -today'll -today/SM -Toddie/M -toddler/M -toddle/ZGSRD -Todd/M -Toddy/M -toddy/SM -Tod/M -toecap/SM -toeclip/S -TOEFL -toehold/MS -toeing -toe/MS -toenail/DMGS -toffee/SM -tofu/S -toga/SMD -toge -togetherness/MS -together/P -togged -togging -toggle/SDMG -Togolese/M -Togo/M -tog/SMG -Toiboid/M -toilet/GMDS -toiletry/MS -toilette/SM -toil/SGZMRD -toilsomeness/M -toilsome/PY -Toinette/M -Tojo/M -tokamak -Tokay/M -toke/GDS -tokenism/SM -tokenized -token/SMDG -Tokugawa/M -Tokyoite/MS -Tokyo/M -Toland/M -told/AU -Toledo/SM -tole/MGDS -tolerability/IM -tolerable/I -tolerably/I -tolerance/SIM -tolerant/IY -tolerate/XVNGSD -toleration/M -Tolkien -tollbooth/M -tollbooths -toll/DGS -Tolley/M -tollgate/MS -tollhouse/M -tollway/S -Tolstoy/M -toluene/MS -Tolyatti/M -tomahawk/SGMD -Tomasina/M -Tomasine/M -Toma/SM -Tomaso/M -tomatoes -tomato/M -Tombaugh/M -tomb/GSDM -Tombigbee/M -tomblike -tombola/M -tomboyish -tomboy/MS -tombstone/MS -tomcat/SM -tomcatted -tomcatting -Tome/M -tome/SM -tomfoolery/MS -tomfool/M -Tomi/M -Tomkin/M -Tomlin/M -Tom/M -tommed -Tommie/M -Tommi/M -tomming -tommy/M -Tommy/M -tomographic -tomography/MS -tomorrow/MS -Tompkins/M -Tomsk/M -tom/SM -tomtit/SM -tonality/MS -tonal/Y -tonearm/S -tone/ISRDZG -tonelessness/M -toneless/YP -toner/IM -tone's -Tonga/M -Tongan/SM -tong/GRDS -tongueless -tongue/SDMG -tonguing/M -Tonia/M -tonic/SM -Tonie/M -tonight/MS -Toni/M -Tonio/M -tonk/MS -tonnage/SM -tonne/MS -Tonnie/M -tonsillectomy/MS -tonsillitis/SM -tonsil/SM -ton/SKM -tonsorial -tonsure/SDGM -Tonto/M -Tonya/M -Tonye/M -Tony/M -tony/RT -toodle -too/H -took/A -tool/AGDS -toolbox/SM -tooler/SM -tooling/M -toolkit/SM -toolmaker/M -toolmake/ZRG -toolmaking/M -tool's -toolsmith -Toomey/M -tooter/M -toot/GRDZS -toothache/SM -toothbrush/MSG -tooth/DMG -toothily -toothless -toothmarks -toothpaste/SM -toothpick/MS -tooths -toothsome -toothy/TR -tootle/SRDG -tootsie -Tootsie/M -toots/M -tootsy/MS -topaz/MS -topcoat/MS -topdressing/S -Topeka/M -toper/M -topflight -topgallant/M -topiary/S -topicality/MS -topical/Y -topic/MS -topknot/MS -topless -topmast/MS -topmost -topnotch/R -topocentric -topographer/SM -topographic -topographical/Y -topography/MS -topological/Y -topologist/MS -topology/MS -topped -topper/MS -topping/MS -topple/GSD -topsail/MS -topside/SRM -top/SMDRG -topsoil/GDMS -topspin/MS -Topsy/M -toque/MS -Torah/M -Torahs -torchbearer/SM -torchlight/S -torch/SDMG -toreador/SM -Tore/M -tore/S -Torey/M -Torie/M -tori/M -Tori/M -Torin/M -torment/GSD -tormenting/Y -tormentor/MS -torn -tornadoes -tornado/M -toroidal/Y -toroid/MS -Toronto/M -torpedoes -torpedo/GMD -torpidity/S -torpid/SY -torpor/MS -Torquemada/M -torque/MZGSRD -Torrance/M -Torre/MS -torrence -Torrence/M -Torrens/M -torrential -torrent/MS -Torrey/M -Torricelli/M -torridity/SM -torridness/SM -torrid/RYTP -Torrie/M -Torrin/M -Torr/XM -Torry/M -torsional/Y -torsion/IAM -torsions -torsi's -tor/SLM -torso/SM -tors/S -tort/ASFE -tortellini/MS -torte/MS -torten -tortilla/MS -tortoiseshell/SM -tortoise/SM -Tortola/M -tortoni/MS -tort's -Tortuga/M -tortuousness/MS -tortuous/PY -torture/ZGSRD -torturous -torus/MS -Tory/SM -Tosca/M -Toscanini/M -Toshiba/M -toss/SRDGZ -tossup/MS -totaler/M -totalistic -totalitarianism/SM -totalitarian/S -totality/MS -totalizator/S -totalizing -total/ZGSRDYM -totemic -totem/MS -toter/M -tote/S -toting/M -tot/MDRSG -Toto/M -totted -totterer/M -tottering/Y -totter/ZGRDS -totting -toucan/MS -touchable/U -touch/ASDG -touchdown/SM -touch� -touched/U -toucher/M -touchily -touchiness/SM -touching/SY -touchline/M -touchscreen -touchstone/SM -touchy/TPR -toughen/DRZG -toughener/M -toughness/SM -toughs -tough/TXGRDNYP -Toulouse/M -toupee/SM -toured/CF -tourer/M -tour/GZSRDM -touring/F -tourism/SM -touristic -tourist/SM -touristy -tourmaline/SM -tournament/MS -tourney/GDMS -tourniquet/MS -tour's/CF -tours/CF -tousle/GSD -touter/M -tout/SGRD -Tova/M -Tove/M -towardliness/M -towardly/P -towards -toward/YU -towboat/MS -tow/DRSZG -towelette/S -towel/GJDMS -toweling/M -tower/GMD -towering/Y -towhead/MSD -towhee/SM -towline/MS -towner/M -Townes -Towney/M -townhouse/S -Townie/M -townie/S -Townley/M -Town/M -Townsend/M -townsfolk -township/MS -townsman/M -townsmen -townspeople/M -town/SRM -townswoman/M -townswomen -Towny/M -towpath/M -towpaths -towrope/MS -Towsley/M -toxemia/MS -toxicity/MS -toxicological -toxicologist/SM -toxicology/MS -toxic/S -toxin/MS -toyer/M -toymaker -toy/MDRSG -Toynbee/M -Toyoda/M -Toyota/M -toyshop -tr -traceability/M -traceableness/M -traceable/P -trace/ASDG -traceback/MS -traced/U -Tracee/M -traceless/Y -Trace/M -tracepoint/SM -tracer/MS -tracery/MDS -trace's -Tracey/M -tracheae -tracheal/M -trachea/M -tracheotomy/SM -Tracie/M -Traci/M -tracing/SM -trackage -trackball/S -trackbed -tracked/U -tracker/M -trackless -tracksuit/SM -track/SZGMRD -tractability/SI -tractable/I -tractably/I -tract/ABS -Tractarians -traction/KSCEMAF -tractive/KFE -tractor/FKMASC -tract's -tracts/CEFK -Tracy/M -trademark/GSMD -trader/M -tradesman/M -tradesmen -tradespeople -tradespersons -trade/SRDGZM -tradeswoman/M -tradeswomen -traditionalism/MS -traditionalistic -traditionalist/MS -traditionalized -traditionally -traditional/U -tradition/SM -traduce/DRSGZ -Trafalgar/M -trafficked -trafficker/MS -trafficking/S -traffic/SM -tragedian/SM -tragedienne/MS -tragedy/MS -tragically -tragicomedy/SM -tragicomic -tragic/S -trailblazer/MS -trailblazing/S -trailer/GDM -trails/F -trailside -trail/SZGJRD -trainable -train/ASDG -trained/U -trainee/MS -traineeships -trainer/MS -training/SM -trainman/M -trainmen -trainspotter/S -traipse/DSG -trait/MS -traitorous/Y -traitor/SM -Trajan/M -trajectory/MS -trammed -trammeled/U -trammel/GSD -tramming -tram/MS -trample/DGRSZ -trampler/M -trampoline/GMSD -tramp/RDSZG -tramway/M -trance/MGSD -tranche/SM -Tran/M -tranquility/S -tranquilized/U -tranquilize/JGZDSR -tranquilizer/M -tranquilizes/A -tranquilizing/YM -tranquillize/GRSDZ -tranquillizer/M -tranquilness/M -tranquil/PTRY -transact/GSD -transactional -transaction/MS -transactor/SM -transalpine -transaminase -transatlantic -Transcaucasia/M -transceiver/SM -transcendence/MS -transcendentalism/SM -transcendentalist/SM -transcendental/YS -transcendent/Y -transcend/SDG -transconductance -transcontinental -transcribe/DSRGZ -transcriber/M -transcription/SM -transcript/SM -transcultural -transducer/SM -transduction/M -transect/DSG -transept/SM -transferability/M -transferal/MS -transfer/BSMD -transferee/M -transference/SM -transferor/MS -transferral/SM -transferred -transferrer/SM -transferring -transfiguration/SM -transfigure/SDG -transfinite/Y -transfix/SDG -transformational -transformation/MS -transform/DRZBSG -transformed/U -transformer/M -transfuse/XSDGNB -transfusion/M -transgression/SM -transgressor/S -transgress/VGSD -trans/I -transience/SM -transiency/S -transient/YS -transistorize/GDS -transistor/SM -Transite/M -transitional/Y -transition/MDGS -transitivenesses -transitiveness/IM -transitive/PIY -transitivity/MS -transitoriness/M -transitory/P -transit/SGVMD -transl -translatability/M -translatable/U -translated/AU -translate/VGNXSDB -translational -translation/M -translator/SM -transliterate/XNGSD -translucence/SM -translucency/MS -translucent/Y -transmigrate/XNGSD -transmissible -transmission/MSA -transmissive -transmit/AS -transmittable -transmittal/SM -transmittance/MS -transmitted/A -transmitter/SM -transmitting/A -transmogrification/M -transmogrify/GXDSN -transmutation/SM -transmute/GBSD -transnational/S -transoceanic -transom/SM -transonic -transpacific -transparency/MS -transparentness/M -transparent/YP -transpiration/SM -transpire/GSD -transplantation/S -transplant/GRDBS -transpolar -transponder/MS -transportability -transportable/U -transportation/SM -transport/BGZSDR -transpose/BGSD -transposed/U -transposition/SM -Transputer/M -transsexualism/MS -transsexual/SM -transship/LS -transshipment/SM -transshipped -transshipping -transubstantiation/MS -Transvaal/M -transversal/YM -transverse/GYDS -transvestism/SM -transvestite/SM -transvestitism -Transylvania/M -trapdoor/S -trapeze/DSGM -trapezium/MS -trapezoidal -trapezoid/MS -trap/MS -trappable/U -trapped -trapper/SM -trapping/S -Trappist/MS -trapshooting/SM -trashcan/SM -trashiness/SM -trash/SRDMG -trashy/TRP -Trastevere/M -trauma/MS -traumatic -traumatically -traumatize/SDG -travail/SMDG -traveled/U -traveler/M -travelog's -travelogue/S -travel/SDRGZJ -Traver/MS -traversal/SM -traverse/GBDRS -traverser/M -travertine/M -travesty/SDGM -Travis/M -Travus/M -trawler/M -trawl/RDMSZG -tray/SM -treacherousness/SM -treacherous/PY -treachery/SM -treacle/DSGM -treacly -treader/M -treadle/GDSM -treadmill/MS -tread/SAGD -Treadwell/M -treas -treason/BMS -treasonous -treasure/DRSZMG -treasurer/M -treasurership -treasury/SM -Treasury/SM -treatable -treated/U -treater/S -treatise/MS -treatment/MS -treat's -treat/SAGDR -treaty/MS -treble/SDG -Treblinka/M -treeing -treeless -treelike -tree/MDS -treetop/SM -trefoil/SM -Trefor/M -trekked -trekker/MS -Trekkie/M -trekking -trek/MS -trellis/GDSM -Tremaine/M -Tremain/M -trematode/SM -Tremayne/M -tremble/JDRSG -trembler/M -trembles/M -trembly -tremendousness/M -tremendous/YP -tremolo/MS -tremor/MS -tremulousness/SM -tremulous/YP -trenchancy/MS -trenchant/Y -trencherman/M -trenchermen -trencher/SM -trench/GASD -trench's -trendily -trendiness/S -trend/SDMG -trendy/PTRS -Trenna/M -Trent/M -Trenton/M -trepanned -trepidation/MS -Tresa/M -Trescha/M -trespasser/M -trespass/ZRSDG -Tressa/M -tressed/E -tresses/E -tressing/E -tress/MSDG -trestle/MS -Trevar/M -Trevelyan/M -Trever/M -Trevino/M -Trevor/M -Trev/RM -Trey/M -trey/MS -triableness/M -triable/P -triadic -triad/MS -triage/SDMG -trial/ASM -trialization -trialled -trialling -triamcinolone -triangle/SM -triangulable -triangularization/S -triangular/Y -triangulate/YGNXSD -triangulation/M -Triangulum/M -Trianon/M -Triassic -triathlon/S -triatomic -tribalism/MS -tribal/Y -tribe/MS -tribesman/M -tribesmen -tribeswoman -tribeswomen -tribulate/NX -tribulation/M -tribunal/MS -tribune/SM -tributary/MS -tribute/EGSF -tribute's -trice/GSDM -tricentennial/S -triceps/SM -triceratops/M -trichinae -trichina/M -trichinoses -trichinosis/M -trichloroacetic -trichloroethane -trichotomy/M -trichromatic -Tricia/M -trickery/MS -trick/GMSRD -trickily -trickiness/SM -trickle/DSG -trickster/MS -tricky/RPT -tricolor/SMD -tricycle/SDMG -trident/SM -tridiagonal -tried/UA -triennial/SY -trier/AS -trier's -tries/A -Trieste/M -triffid/S -trifle/MZGJSRD -trifler/M -trifluoride/M -trifocals -trigged -trigger/GSDM -triggest -trigging -triglyceride/MS -trigonal/Y -trigonometric -trigonometrical -trigonometry/MS -trigram/S -trig/S -trihedral -trike/GMSD -trilateral/S -trilby/SM -trilingual -trillion/SMH -trillionth/M -trillionths -trillium/SM -trill/RDMGS -trilobite/MS -trilogy/MS -trimaran/MS -Trimble/M -trimer/M -trimester/MS -trimmed/U -trimmer/MS -trimmest -trimming/MS -trimness/S -trimodal -trimonthly -trim/PSYR -Trimurti/M -Trina/M -Trinidad/M -trinitarian/S -trinitrotoluene/SM -trinity/MS -Trinity/MS -trinketer/M -trinket/MRDSG -triode/MS -trio/SM -trioxide/M -tripartite/N -tripartition/M -tripe/MS -triphenylarsine -triphenylphosphine -triphenylstibine -triphosphopyridine -triple/GSD -triplet/SM -triplex/S -triplicate/SDG -triplication/M -triply/GDSN -Trip/M -tripodal -tripod/MS -tripoli/M -Tripoli/M -tripolyphosphate -tripos/SM -tripped -Trippe/M -tripper/MS -tripping/Y -Tripp/M -trip/SMY -triptych/M -triptychs -tripwire/MS -trireme/SM -Tris -trisect/GSD -trisection/S -trisector -Trisha/M -Trish/M -trisodium -Trista/M -Tristam/M -Tristan/M -tristate -trisyllable/M -tritely/F -triteness/SF -trite/SRPTY -tritium/MS -triton/M -Triton/M -triumphal -triumphalism -triumphant/Y -triumph/GMD -triumphs -triumvirate/MS -triumvir/MS -triune -trivalent -trivet/SM -trivia -triviality/MS -trivialization/MS -trivialize/DSG -trivial/Y -trivium/M -Trixie/M -Trixi/M -Trix/M -Trixy/M -Trobriand/M -trochaic/S -trochee/SM -trod/AU -trodden/UA -trodes -troff/MR -troglodyte/MS -troika/SM -Trojan/MS -troll/DMSG -trolled/F -trolleybus/S -trolley/SGMD -trolling/F -trollish -Trollope/M -trollop/GSMD -trolly's -trombone/MS -trombonist/SM -tromp/DSG -Trondheim/M -trooper/M -troopship/SM -troop/SRDMZG -trope/SM -Tropez/M -trophic -trophy/MGDS -tropical/SY -tropic/MS -tropism/SM -tropocollagen -troposphere/MS -tropospheric -troth/GDM -troths -trot/S -Trotsky/M -trotted -trotter/SM -trotting -troubadour/SM -troubled/U -trouble/GDRSM -troublemaker/MS -troubler/M -troubleshooter/M -troubleshoot/SRDZG -troubleshot -troublesomeness/M -troublesome/YP -trough/M -troughs -trounce/GZDRS -trouncer/M -troupe/MZGSRD -trouper/M -trouser/DMGS -trousseau/M -trousseaux -Troutman/M -trout/SM -trove/SM -troweler/M -trowel/SMDRGZ -trow/SGD -Troyes -Troy/M -troy/S -Trstram/M -truancy/MS -truant/SMDG -truce/SDGM -Truckee/M -trucker/M -trucking/M -truckle/GDS -truckload/MS -truck/SZGMRDJ -truculence/SM -truculent/Y -Truda/M -Trudeau/M -Trude/M -Trudey/M -trudge/SRDG -Trudie/M -Trudi/M -Trudy/M -true/DRSPTG -truelove/MS -Trueman/M -trueness/M -truer/U -truest/U -truffle/MS -truism/SM -Trujillo/M -Trula/M -truly/U -Trumaine/M -Truman/M -Trumann/M -Trumbull/M -trump/DMSG -trumpery/SM -trumpeter/M -trumpet/MDRZGS -Trump/M -truncate/NGDSX -truncation/M -truncheon/MDSG -trundle/GZDSR -trundler/M -trunk/GSMD -trunnion/SM -trusser/M -trussing/M -truss/SRDG -trusted/EU -trusteeing -trustee/MDS -trusteeship/SM -truster/M -trustful/EY -trustfulness/SM -trustiness/M -trusting/Y -trust/RDMSG -trusts/E -trustworthier -trustworthiest -trustworthiness/MS -trustworthy/UP -trusty/PTMSR -Truth -truthfulness/US -truthful/UYP -truths/U -truth/UM -TRW -trying/Y -try/JGDRSZ -tryout/MS -trypsin/M -tryst/GDMS -ts -T's -tsarevich -tsarina's -tsarism/M -tsarist -tsetse/S -Tsimshian/M -Tsiolkovsky/M -Tsitsihar/M -tsp -tsunami/MS -Tsunematsu/M -Tswana/M -TTL -tty/M -ttys -Tuamotu/M -Tuareg/M -tubae -tubal -tuba/SM -tubbed -tubbing -tubby/TR -tubeless -tubercle/MS -tubercular/S -tuberculin/MS -tuberculoses -tuberculosis/M -tuberculous -tuber/M -tuberose/SM -tuberous -tube/SM -tubing/M -tub/JMDRSZG -Tubman/M -tubular/Y -tubule/SM -tucker/GDM -Tucker/M -tuck/GZSRD -Tuckie/M -Tuck/RM -Tucky/M -Tucson/M -Tucuman/M -Tudor/MS -Tue/S -Tuesday/SM -tufter/M -tuft/GZSMRD -tufting/M -tugboat/MS -tugged -tugging -tug/S -tuition/ISM -Tulane/M -tularemia/S -tulip/SM -tulle/SM -Tulley/M -Tull/M -Tully/M -Tulsa/M -tum -tumbledown -tumbler/M -tumbleweed/MS -tumble/ZGRSDJ -tumbrel/SM -tumescence/S -tumescent -tumidity/MS -tumid/Y -tummy/SM -tumor/MDS -tumorous -Tums/M -tumult/SGMD -tumultuousness/M -tumultuous/PY -tumulus/M -tunableness/M -tunable/P -tuna/SM -tundra/SM -tun/DRJZGBS -tune/CSDG -tunefulness/MS -tuneful/YP -tuneless/Y -tuner/M -tune's -tuneup/S -tung -tungstate/M -tungsten/SM -Tunguska/M -Tungus/M -tunic/MS -tuning/A -tuning's -Tunisia/M -Tunisian/S -Tunis/M -tunned -tunneler/M -tunnel/MRDSJGZ -tunning -tunny/SM -tupelo/M -Tupi/M -tuple/SM -tuppence/M -Tupperware -Tupungato/M -turban/SDM -turbid -turbidity/SM -turbinate/SD -turbine/SM -turbocharged -turbocharger/SM -turbofan/MS -turbojet/MS -turboprop/MS -turbo/SM -turbot/MS -turbulence/SM -turbulent/Y -turd/MS -tureen/MS -turf/DGSM -turfy/RT -Turgenev/M -turgidity/SM -turgidness/M -turgid/PY -Turing/M -Turin/M -Turkestan/M -Turkey/M -turkey/SM -Turkic/SM -Turkish -Turkmenistan/M -turk/S -Turk/SM -turmeric/MS -turmoil/SDMG -turnabout/SM -turnaround/MS -turn/AZGRDBS -turnbuckle/SM -turncoat/SM -turned/U -turner/M -Turner/M -turning/MS -turnip/SMDG -turnkey/MS -turnoff/MS -turnout/MS -turnover/SM -turnpike/MS -turnround/MS -turnstile/SM -turnstone/M -turntable/SM -turpentine/GMSD -Turpin/M -turpitude/SM -turquoise/SM -turret/SMD -turtleback/MS -turtledove/MS -turtleneck/SDM -turtle/SDMG -turves's -turvy -Tuscaloosa/M -Tuscan -Tuscany/M -Tuscarora/M -Tuscon/M -tush/SDG -Tuskegee/M -tusker/M -tusk/GZRDMS -tussle/GSD -tussock/MS -tussocky -Tussuad/M -Tutankhamen/M -tutelage/MS -tutelary/S -Tut/M -tutored/U -tutorial/MS -tutor/MDGS -tutorship/S -tut/S -Tutsi -tutted -tutting -tutti/S -Tuttle/M -tutu/SM -Tuvalu -tuxedo/SDM -tux/S -TVA -TV/M -TVs -twaddle/GZMRSD -twaddler/M -Twain/M -twain/S -TWA/M -twang/MDSG -twangy/TR -twas -tweak/SGRD -tweediness/M -Tweedledee/M -Tweedledum/M -Tweed/M -twee/DP -tweed/SM -tweedy/PTR -tween -tweeter/M -tweet/ZSGRD -tweezer/M -tweeze/ZGRD -twelfth -twelfths -twelvemonth/M -twelvemonths -twelve/MS -twentieths -twenty/MSH -twerp/MS -twice/R -twiddle/GRSD -twiddler/M -twiddly/RT -twigged -twigging -twiggy/RT -twig/SM -Twila/M -twilight/MS -twilit -twill/SGD -twiner/M -twine/SM -twinge/SDMG -Twinkie -twinkler/M -twinkle/RSDG -twinkling/M -twinkly -twinned -twinning -twin/RDMGZS -twirler/M -twirling/Y -twirl/SZGRD -twirly/TR -twisted/U -twister/M -twists/U -twist/SZGRD -twisty -twitch/GRSD -twitchy/TR -twit/S -twitted -twitterer/M -twitter/SGRD -twittery -twitting -twixt -twofer/MS -twofold/S -two/MS -twopence/SM -twopenny/S -twosome/MS -twp -Twp -TWX -Twyla/M -TX -t/XTJBG -Tybalt/M -Tybie/M -Tybi/M -tycoon/MS -tyeing -Tye/M -tying/UA -tyke/SM -Tylenol/M -Tyler/M -Ty/M -Tymon/M -Tymothy/M -tympani -tympanist/SM -tympanum/SM -Tynan/M -Tyndale/M -Tyndall/M -Tyne/M -typeahead -typecast/SG -typed/AU -typedef/S -typeface/MS -typeless -type/MGDRSJ -types/A -typescript/SM -typeset/S -typesetter/MS -typesetting/SM -typewriter/M -typewrite/SRJZG -typewriting/M -typewritten -typewrote -typhoid/SM -Typhon/M -typhoon/SM -typhus/SM -typicality/MS -typically -typicalness/M -typical/U -typification/M -typify/SDNXG -typing/A -typist/MS -typographer/SM -typographic -typographical/Y -typography/MS -typological/Y -typology/MS -typo/MS -tyrannic -tyrannicalness/M -tyrannical/PY -tyrannicide/M -tyrannizer/M -tyrannize/ZGJRSD -tyrannizing/YM -tyrannosaur/MS -tyrannosaurus/S -tyrannous -tyranny/MS -tyrant/MS -Tyree/M -tyreo -Tyrolean/S -Tyrol's -Tyrone/M -tyrosine/M -tyro/SM -Tyrus/M -Tyson/M -tzarina's -tzar's -Tzeltal/M -u -U -UAR -UART -UAW -Ubangi/M -ubiquitous/YP -ubiquity/S -Ucayali/M -Uccello/M -UCLA/M -Udale/M -Udall/M -udder/SM -Udell/M -Ufa/M -ufologist/S -ufology/MS -UFO/S -Uganda/M -Ugandan/S -ugh -ughs -uglification -ugliness/MS -uglis -ugly/PTGSRD -Ugo/M -uh -UHF -Uighur -Ujungpandang/M -UK -ukase/SM -Ukraine/M -Ukrainian/S -ukulele/SM -UL -Ula/M -Ulberto/M -ulcerate/NGVXDS -ulceration/M -ulcer/MDGS -ulcerous -Ulick/M -Ulises/M -Ulla/M -Ullman/M -ulnae -ulna/M -ulnar -Ulrica/M -Ulrich/M -Ulrick/M -Ulric/M -Ulrika/M -Ulrikaumeko/M -Ulrike/M -Ulster/M -ulster/MS -ult -ulterior/Y -ultimas -ultimate/DSYPG -ultimateness/M -ultimatum/MS -ultimo -ultracentrifugally -ultracentrifugation -ultracentrifuge/M -ultraconservative/S -ultrafast -ultrahigh -ultralight/S -ultramarine/SM -ultramodern -ultramontane -ultra/S -ultrashort -ultrasonically -ultrasonic/S -ultrasonics/M -ultrasound/SM -ultrastructure/M -Ultrasuede -ultraviolet/SM -Ultrix/M -ULTRIX/M -ululate/DSXGN -ululation/M -Ulyanovsk/M -Ulysses/M -um -umbel/MS -umber/GMDS -Umberto/M -umbilical/S -umbilici -umbilicus/M -umbrage/MGSD -umbrageous -umbra/MS -umbrella/GDMS -Umbriel/M -Umeko/M -umiak/MS -umlaut/GMDS -umpire/MGSD -ump/MDSG -umpteen/H -UN -unabated/Y -unabridged/S -unacceptability -unacceptable -unaccepted -unaccommodating -unaccountability -unaccustomed/Y -unadapted -unadulterated/Y -unadventurous -unalienability -unalterableness/M -unalterable/P -unalterably -Una/M -unambiguity -unambiguous -unambitious -unamused -unanimity/SM -unanimous/Y -unanticipated/Y -unapologetic -unapologizing/M -unappeasable -unappeasably -unappreciative -unary -unassailableness/M -unassailable/P -unassertive -unassumingness/M -unassuming/PY -unauthorized/PY -unavailing/PY -unaware/SPY -unbalanced/P -unbar -unbarring -unbecoming/P -unbeknown -unbelieving/Y -unbiased/P -unbid -unbind/G -unblessed -unblinking/Y -unbodied -unbolt/G -unbreakability -unbred -unbroken -unbuckle -unbudging/Y -unburnt -uncap -uncapping -uncatalogued -uncauterized/MS -unceasing/Y -uncelebrated -uncertain/P -unchallengeable -unchangingness/M -unchanging/PY -uncharacteristic -uncharismatic -unchastity -unchristian -uncial/S -uncivilized/Y -unclassified -uncle/MSD -unclouded/Y -uncodable -uncollected -uncoloredness/M -uncolored/PY -uncombable -uncommunicative -uncompetitive -uncomplicated -uncomprehending/Y -uncompromisable -unconcerned/P -unconcern/M -unconfirmed -unconfused -unconscionableness/M -unconscionable/P -unconscionably -unconstitutional -unconsumed -uncontentious -uncontrollability -unconvertible -uncool -uncooperative -uncork/G -uncouple/G -uncouthness/M -uncouth/YP -uncreate/V -uncritical -uncross/GB -uncrowded -unction/IM -unctions -unctuousness/MS -unctuous/PY -uncustomary -uncut -undated/I -undaunted/Y -undeceive -undecided/S -undedicated -undefinability -undefinedness/M -undefined/P -undelete -undeliverability -undeniableness/M -undeniable/P -undeniably -undependable -underachiever/M -underachieve/SRDGZ -underact/GDS -underadjusting -underage/S -underarm/DGS -underbedding -underbelly/MS -underbidding -underbid/S -underbracing -underbrush/MSDG -undercarriage/MS -undercharge/GSD -underclassman -underclassmen -underclass/S -underclothes -underclothing/MS -undercoating/M -undercoat/JMDGS -underconsumption/M -undercooked -undercount/S -undercover -undercurrent/SM -undercut/S -undercutting -underdeveloped -underdevelopment/MS -underdog/MS -underdone -undereducated -underemphasis -underemployed -underemployment/SM -underenumerated -underenumeration -underestimate/NGXSD -underexploited -underexpose/SDG -underexposure/SM -underfed -underfeed/SG -underfloor -underflow/GDMS -underfoot -underfund/DG -underfur/MS -undergarment/SM -undergirding -undergoes -undergo/G -undergone -undergrad/MS -undergraduate/MS -underground/RMS -undergrowth/M -undergrowths -underhand/D -underhandedness/MS -underhanded/YP -underheat -underinvestment -underlaid -underlain/S -underlay/GS -underlie -underline/GSDJ -underling/MS -underlip/SM -underloaded -underly/GS -undermanned -undermentioned -undermine/SDG -undermost -underneath -underneaths -undernourished -undernourishment/SM -underpaid -underpants -underpart/MS -underpass/SM -underpay/GSL -underpayment/SM -underperformed -underpinned -underpinning/MS -underpin/S -underplay/SGD -underpopulated -underpopulation/M -underpowered -underpricing -underprivileged -underproduction/MS -underrate/GSD -underregistration/M -underreported -underreporting -underrepresentation/M -underrepresented -underscore/SDG -undersealed -undersea/S -undersecretary/SM -undersell/SG -undersexed -undershirt/SM -undershoot/SG -undershorts -undershot -underside/SM -undersigned/M -undersign/SGD -undersized -undersizes -undersizing -underskirt/MS -undersold -underspecification -underspecified -underspend/G -understaffed -understandability/M -understandably -understanding/YM -understand/RGSJB -understate/GSDL -understatement/MS -understocked -understood -understrength -understructure/SM -understudy/GMSD -undertaken -undertaker/M -undertake/SRGZJ -undertaking/M -underthings -undertone/SM -undertook -undertow/MS -underused -underusing -underutilization/M -underutilized -undervaluation/S -undervalue/SDG -underwater/S -underway -underwear/M -underweight/S -underwent -underwhelm/DGS -underwood/M -Underwood/M -underworld/MS -underwrite/GZSR -underwriter/M -underwritten -underwrote -under/Y -undeserving -undesigned -undeviating/Y -undialyzed/SM -undiplomatic -undiscerning -undiscriminating -undo/GJ -undoubted/Y -undramatic -undramatized/SM -undress/G -undrinkability -undrinkable -undroppable -undue -undulant -undulate/XDSNG -undulation/M -unearthliness/S -unearthly/P -unearth/YG -unease -uneconomic -uneducated -unemployed/S -unencroachable -unending/Y -unendurable/P -unenergized/MS -unenforced -unenterprising -UNESCO -unethical -uneulogized/SM -unexacting -unexceptionably -unexcited -unexpectedness/MS -unfading/Y -unfailingness/M -unfailing/P -unfamiliar -unfashionable -unfathomably -unfavored -unfeeling -unfeigned/Y -unfelt -unfeminine -unfertile -unfetchable -unflagging -unflappability/S -unflappable -unflappably -unflinching/Y -unfold/LG -unfoldment/M -unforced -unforgeable -unfossilized/MS -unfraternizing/SM -unfrozen -unfulfillable -unfunny -unfussy -ungainliness/MS -ungainly/PRT -Ungava/M -ungenerous -ungentle -unglamorous -ungrammaticality -ungrudging -unguent/MS -ungulate/MS -unharmonious -unharness/G -unhistorical -unholy/TP -unhook/DG -unhydrolyzed/SM -unhygienic -Unibus/M -unicameral -UNICEF -unicellular -Unicode/M -unicorn/SM -unicycle/MGSD -unicyclist/MS -unideal -unidimensional -unidiomatic -unidirectionality -unidirectional/Y -unidolized/MS -unifiable -unification/MA -unifier/MS -unifilar -uniformity/MS -uniformness/M -uniform/TGSRDYMP -unify/AXDSNG -unilateralism/M -unilateralist -unilateral/Y -unimodal -unimpeachably -unimportance -unimportant -unimpressive -unindustrialized/MS -uninhibited/YP -uninominal -uninsured -unintellectual -unintended -uninteresting -uninterruptedness/M -uninterrupted/YP -unintuitive -uninviting -union/AEMS -unionism/SM -unionist/SM -Unionist/SM -unionize -Union/MS -UniPlus/M -unipolar -uniprocessor/SM -uniqueness/S -unique/TYSRP -Uniroyal/M -unisex/S -UniSoft/M -unison/MS -Unisys/M -unitarianism/M -Unitarianism/SM -unitarian/MS -Unitarian/MS -unitary -unite/AEDSG -united/Y -uniter/M -unitize/GDS -unit/VGRD -unity/SEM -univ -Univac/M -univalent/S -univalve/MS -univariate -universalism/M -universalistic -universality/SM -universalize/DSRZG -universalizer/M -universal/YSP -universe/MS -university/MS -Unix/M -UNIX/M -unjam -unkempt -unkind/TP -unkink -unknightly -unknowable/S -unknowing -unlabored -unlace/G -unlearn/G -unlikeable -unlikeliness/S -unlimber/G -unlimited -unlit -unliterary -unloose/G -unlucky/TP -unmagnetized/MS -unmanageably -unmannered/Y -unmask/G -unmeaning -unmeasured -unmeetable -unmelodious -unmemorable -unmemorialized/MS -unmentionable/S -unmerciful -unmeritorious -unmethodical -unmineralized/MS -unmissable -unmistakably -unmitigated/YP -unmnemonic -unmobilized/SM -unmoral -unmount/B -unmovable -unmoving -unnaturalness/M -unnavigable -unnerving/Y -unobliging -unoffensive -unofficial -unorganized/YP -unorthodox -unpack/G -unpaintable -unpalatability -unpalatable -unpartizan -unpatronizing -unpeople -unperceptive -unperson -unperturbed/Y -unphysical -unpick/G -unpicturesque -unpinning -unpleasing -unploughed -unpolarized/SM -unpopular -unpractical -unprecedented/Y -unpredictable/S -unpreemphasized -unpremeditated -unpretentiousness/M -unprincipled/P -unproblematic -unproductive -unpropitious -unprovable -unproven -unprovocative -unpunctual -unquestionable -unraisable -unravellings -unreadability -unread/B -unreal -unrealizable -unreasoning/Y -unreceptive -unrecordable -unreflective -unrelenting/Y -unremitting/Y -unrepeatability -unrepeated -unrepentant -unreported -unrepresentative -unreproducible -unrest/G -unrestrained/P -unrewarding -unriddle -unripe/P -unromantic -unruliness/SM -unruly/PTR -unsaleable -unsanitary -unsavored/YP -unsavoriness/M -unseal/GB -unsearchable -unseasonal -unseeing/Y -unseen/S -unselfconsciousness/M -unselfconscious/P -unselfishness/M -unsellable -unsentimental -unset -unsettledness/M -unsettled/P -unsettling/Y -unshapely -unshaven -unshorn -unsighted -unsightliness/S -unskilful -unsociability -unsociable/P -unsocial -unsound/PT -unspeakably -unspecific -unspectacular -unspoilt -unspoke -unsporting -unstable/P -unstigmatized/SM -unstilted -unstinting/Y -unstopping -unstrapping -unstudied -unstuffy -unsubdued -unsubstantial -unsubtle -unsuitable -unsuspecting/Y -unswerving/Y -unsymmetrical -unsympathetic -unsystematic -unsystematized/Y -untactful -untalented -untaxing -unteach/B -untellable -untenable -unthinking -until/G -untiring/Y -unto -untouchable/MS -untowardness/M -untoward/P -untraceable -untrue -untruthfulness/M -untwist/G -Unukalhai/M -unusualness/M -unutterable -unutterably -unvocalized/MS -unvulcanized/SM -unwaivering -unwarrantable -unwarrantably -unwashed/PS -unwearable -unwearied/Y -unwed -unwedge -unwelcome -unwell/M -unwieldiness/MS -unwieldy/TPR -unwind/B -unwomanly -unworkable/S -unworried -unwrap -unwrapping -unyielding/Y -unyoke -unzip -up -Upanishads -uparrow -upbeat/SM -upbraid/GDRS -upbringing/M -upbring/JG -UPC -upchuck/SDG -upcome/G -upcountry/S -updatability -updater/M -update/RSDG -Updike/M -updraft/SM -upend/SDG -upfield -upfront -upgradeable -upgrade/DSJG -upheaval/MS -upheld -uphill/S -upholder/M -uphold/RSGZ -upholster/ADGS -upholsterer/SM -upholstery/MS -UPI -upkeep/SM -uplander/M -upland/MRS -uplifter/M -uplift/SJDRG -upload/GSD -upmarket -upon -upped -uppercase/GSD -upperclassman/M -upperclassmen -uppercut/S -uppercutting -uppermost -upper/S -upping -uppish -uppity -upraise/GDS -uprated -uprating -uprear/DSG -upright/DYGSP -uprightness/S -uprise/RGJ -uprising/M -upriver/S -uproariousness/M -uproarious/PY -uproar/MS -uproot/DRGS -uprooter/M -ups -UPS -upscale/GDS -upset/S -upsetting/MS -upshot/SM -upside/MS -upsilon/MS -upslope -upstage/DSRG -upstairs -upstandingness/M -upstanding/P -upstart/MDGS -upstate/SR -upstream/DSG -upstroke/MS -upsurge/DSG -upswing/GMS -upswung -uptake/SM -upthrust/GMS -uptight -uptime -Upton/M -uptown/RS -uptrend/M -upturn/GDS -upwardness/M -upward/SYP -upwelling -upwind/S -uracil/MS -Ural/MS -Urania/M -uranium/MS -Uranus/M -uranyl/M -Urbain/M -Urbana/M -urbane/Y -urbanism/M -urbanite/SM -urbanity/SM -urbanization/MS -urbanize/DSG -Urban/M -urbanologist/S -urbanology/S -Urbano/M -urban/RT -Urbanus/M -urchin/SM -Urdu/M -urea/SM -uremia/MS -uremic -ureter/MS -urethane/MS -urethrae -urethral -urethra/M -urethritis/M -Urey/M -urge/GDRSJ -urgency/SM -urgent/Y -urger/M -Uriah/M -uric -Uriel/M -urinal/MS -urinalyses -urinalysis/M -urinary/MS -urinate/XDSNG -urination/M -urine/MS -Uri/SM -URL -Ur/M -urning/M -urn/MDGS -urogenital -urological -urologist/S -urology/MS -Urquhart/M -Ursala/M -Ursa/M -ursine -Ursola/M -Urson/M -Ursula/M -Ursulina/M -Ursuline/M -urticaria/MS -Uruguayan/S -Uruguay/M -Urumqi -US -USA -usability/S -usable/U -usably/U -USAF -usage/SM -USART -USCG -USC/M -USDA -us/DRSBZG -used/U -use/ESDAG -usefulness/SM -useful/YP -uselessness/MS -useless/PY -Usenet/M -Usenix/M -user/M -USG/M -usherette/SM -usher/SGMD -USIA -USMC -USN -USO -USP -USPS -USS -USSR -Ustinov/M -usu -usuals -usual/UPY -usurer/SM -usuriousness/M -usurious/PY -usurpation/MS -usurper/M -usurp/RDZSG -usury/SM -UT -Utahan/SM -Utah/M -Uta/M -Ute/M -utensil/SM -uteri -uterine -uterus/M -Utica/M -utile/I -utilitarianism/MS -utilitarian/S -utility/MS -utilization/MS -utilization's/A -utilize/GZDRS -utilizer/M -utilizes/A -utmost/S -Utopia/MS -utopianism/M -utopian's -Utopian/S -utopia/S -Utrecht/M -Utrillo/M -utterance/MS -uttered/U -utterer/M -uttermost/S -utter/TRDYGS -uucp/M -UV -uvula/MS -uvular/S -uxorious -Uzbekistan -Uzbek/M -Uzi/M -V -VA -vacancy/MS -vacantness/M -vacant/PY -vacate/NGXSD -vacationist/SM -vacationland -vacation/MRDZG -vaccinate/NGSDX -vaccination/M -vaccine/SM -vaccinial -vaccinia/M -Vachel/M -vacillate/XNGSD -vacillating/Y -vacillation/M -vacillator/SM -Vaclav/M -vacua's -vacuity/MS -vacuo -vacuolated/U -vacuolate/SDGN -vacuole/SM -vacuolization/SM -vacuousness/MS -vacuous/PY -vacuum/GSMD -Vader/M -Vaduz/M -vagabondage/MS -vagabond/DMSG -vagarious -vagary/MS -vaginae -vaginal/Y -vagina/M -vagrancy/MS -vagrant/SMY -vagueing -vagueness/MS -vague/TYSRDP -Vail/M -vaingloriousness/M -vainglorious/YP -vainglory/MS -vain/TYRP -val -valance/SDMG -Valaree/M -Valaria/M -Valarie/M -Valdemar/M -Valdez/M -Valeda/M -valediction/MS -valedictorian/MS -valedictory/MS -Vale/M -valence/SM -Valencia/MS -valency/MS -Valene/M -Valenka/M -Valentia/M -Valentijn/M -Valentina/M -Valentine/M -valentine/SM -Valentin/M -Valentino/M -Valenzuela/M -Valera/M -Valeria/M -Valerian/M -Valerie/M -Valerye/M -Val�ry/M -vale/SM -valet/GDMS -valetudinarianism/MS -valetudinarian/MS -Valhalla/M -valiance/S -valiantness/M -valiant/SPY -Valida/M -validated/AU -validate/INGSDX -validates/A -validation/AMI -validity/IMS -validnesses -validness/MI -valid/PIY -Valina/M -valise/MS -Valium/S -Valkyrie/SM -Vallejo -Valle/M -Valletta/M -valley/SM -Vallie/M -Valli/M -Vally/M -Valma/M -Val/MY -Valois/M -valor/MS -valorous/Y -Valparaiso/M -Valry/M -valuable/IP -valuableness/IM -valuables -valuably/I -valuate/NGXSD -valuation/CSAM -valuator/SM -value/CGASD -valued/U -valuelessness/M -valueless/P -valuer/SM -value's -values/E -valve/GMSD -valveless -valvular -Va/M -vamoose/GSD -vamp/ADSG -vamper -vampire/MGSD -vamp's -vanadium/MS -Vance/M -Vancouver/M -vandalism/MS -vandalize/GSD -vandal/MS -Vandal/MS -Vanda/M -Vandenberg/M -Vanderbilt/M -Vanderburgh/M -Vanderpoel/M -Vandyke/SM -vane/MS -Vanessa/M -Vang/M -vanguard/MS -Vania/M -vanilla/MS -vanisher/M -vanish/GRSDJ -vanishing/Y -vanity/SM -Van/M -Vanna/M -vanned -Vannie/M -Vanni/M -vanning -Vanny/M -vanquisher/M -vanquish/RSDGZ -van/SMD -vantage/MS -Vanuatu -Vanya/M -Vanzetti/M -vapidity/MS -vapidness/SM -vapid/PY -vaporer/M -vaporing/MY -vaporisation -vaporise/DSG -vaporization/AMS -vaporize/DRSZG -vaporizer/M -vapor/MRDJGZS -vaporous -vapory -vaquero/SM -VAR -Varanasi/M -Varese/M -Vargas/M -variability/IMS -variableness/IM -variable/PMS -variables/I -variably/I -variance/I -variances -variance's -Varian/M -variant/ISY -variate/MGNSDX -variational -variation/M -varicolored/MS -varicose/S -variedly -varied/U -variegate/NGXSD -variegation/M -varier/M -varietal/S -variety/MS -various/PY -varistor/M -Varityping/M -varlet/MS -varmint/SM -varnished/U -varnisher/M -varnish/ZGMDRS -var/S -varsity/MS -varying/UY -vary/SRDJG -vascular -vasectomy/SM -Vaseline/DSMG -vase/SM -Vasili/MS -Vasily/M -vasomotor -Vasquez/M -vassalage/MS -vassal/GSMD -Vassar/M -Vassili/M -Vassily/M -vastness/MS -vast/PTSYR -v/ASV -VAT -Vatican/M -vat/SM -vatted -vatting -vaudeville/SM -vaudevillian/SM -Vaudois -Vaughan/M -Vaughn/M -vaulter/M -vaulting/M -vault/ZSRDMGJ -vaunter/M -vaunt/GRDS -VAXes -Vax/M -VAX/M -Vazquez/M -vb -VCR -VD -VDT -VDU -vealed/A -vealer/MA -veal/MRDGS -veals/A -Veblen/M -vectorial -vectorization -vectorized -vectorizing -vector's/F -vector/SGDM -Veda/MS -Vedanta/M -veejay/S -veep/S -veer/DSG -veering/Y -vegan/SM -Vega/SM -Vegemite/M -veges -vegetable/MS -vegetarianism/MS -vegetarian/SM -vegetate/DSNGVX -vegetation/M -vegetative/PY -vegged -veggie/S -vegging -veg/M -vehemence/MS -vehemency/S -vehement/Y -vehicle/SM -vehicular -veiling/MU -veil's -veil/UGSD -vein/GSRDM -veining/M -vela/M -Vela/M -velarize/SDG -velar/S -Vel�squez/M -Vel�zquez -Velcro/SM -veld/SM -veldt's -Velez/M -Vella/M -vellum/MS -Velma/M -velocipede/SM -velocity/SM -velor/S -velour's -velum/M -Velveeta/M -velveteen/MS -velvet/GSMD -Velvet/M -velvety/RT -venality/MS -venal/Y -venation/SM -vend/DSG -vender's/K -vendetta/MS -vendible/S -vendor/MS -veneerer/M -veneer/GSRDM -veneering/M -venerability/S -venerable/P -venerate/XNGSD -veneration/M -venereal -venetian -Venetian/SM -Venezuela/M -Venezuelan/S -vengeance/MS -vengeful/APY -vengefulness/AM -venialness/M -venial/YP -Venice/M -venireman/M -veniremen -venison/SM -Venita/M -Venn/M -venomousness/M -venomous/YP -venom/SGDM -venous/Y -venter/M -ventilated/U -ventilate/XSDVGN -ventilation/M -ventilator/MS -vent/ISGFD -ventral/YS -ventricle/MS -ventricular -ventriloquies -ventriloquism/MS -ventriloquist/MS -ventriloquy -vent's/F -Ventura/M -venture/RSDJZG -venturesomeness/SM -venturesome/YP -venturi/S -venturousness/MS -venturous/YP -venue/MAS -Venusian/S -Venus/S -veraciousness/M -veracious/YP -veracities -veracity/IM -Veracruz/M -Veradis -Vera/M -verandahed -veranda/SDM -verbalization/MS -verbalized/U -verbalizer/M -verbalize/ZGRSD -verballed -verballing -verbal/SY -verbatim -verbena/MS -verbiage/SM -verb/KSM -verbose/YP -verbosity/SM -verboten -verdant/Y -Verde/M -Verderer/M -verdict/SM -verdigris/GSDM -Verdi/M -verdure/SDM -Vere/M -Verena/M -Verene/M -verge/FGSD -Verge/M -verger/SM -verge's -Vergil's -veridical/Y -Veriee/M -verifiability/M -verifiableness/M -verifiable/U -verification/S -verified/U -verifier/MS -verify/GASD -Verile/M -verily -Verina/M -Verine/M -verisimilitude/SM -veritableness/M -veritable/P -veritably -verity/MS -Verlag/M -Verlaine/M -Verla/M -Vermeer/M -vermicelli/MS -vermiculite/MS -vermiform -vermilion/MS -vermin/M -verminous -Vermonter/M -Vermont/ZRM -vermouth/M -vermouths -vernacular/YS -vernal/Y -Verna/M -Verne/M -Vernen/M -Verney/M -Vernice/M -vernier/SM -Vern/NM -Vernon/M -Vernor/M -Verona/M -Veronese/M -Veronica/M -veronica/SM -Veronika/M -Veronike/M -Veronique/M -verrucae -verruca/MS -versa -Versailles/M -Versatec/M -versatileness/M -versatile/YP -versatility/SM -versed/UI -verse's -verses/I -verse/XSRDAGNF -versicle/M -versification/M -versifier/M -versify/GDRSZXN -versing/I -version/MFISA -verso/SM -versus -vertebrae -vertebral/Y -vertebra/M -vertebrate/IMS -vertebration/M -vertex/SM -vertical/YPS -vertices's -vertiginous -vertigoes -vertigo/M -verve/SM -very/RT -Vesalius/M -vesicle/SM -vesicular/Y -vesiculate/GSD -Vespasian/M -vesper/SM -Vespucci/M -vessel/MS -vestal/YS -Vesta/M -vest/DIGSL -vestibular -vestibule/SDM -vestige/SM -vestigial/Y -vesting/SM -vestment/ISM -vestryman/M -vestrymen -vestry/MS -vest's -vesture/SDMG -Vesuvius/M -vetch/SM -veteran/SM -veterinarian/MS -veterinary/S -veter/M -veto/DMG -vetoes -vet/SMR -vetted -vetting/A -Vevay/M -vexation/SM -vexatiousness/M -vexatious/PY -vexed/Y -vex/GFSD -VF -VFW -VG -VGA -vhf -VHF -VHS -VI -via -viability/SM -viable/I -viably -viaduct/MS -Viagra/M -vial/MDGS -viand/SM -vibe/S -vibraharp/MS -vibrancy/MS -vibrant/YS -vibraphone/MS -vibraphonist/SM -vibrate/XNGSD -vibrational/Y -vibration/M -vibrato/MS -vibrator/SM -vibratory -vibrio/M -vibrionic -viburnum/SM -vicarage/SM -vicariousness/MS -vicarious/YP -vicar/SM -vice/CMS -viced -vicegerent/MS -vicennial -Vicente/M -viceregal -viceroy/SM -Vichy/M -vichyssoise/MS -vicing -vicinity/MS -viciousness/S -vicious/YP -vicissitude/MS -Vickers/M -Vickie/M -Vicki/M -Vicksburg/M -Vicky/M -Vick/ZM -Vic/M -victimization/SM -victimized/U -victimizer/M -victimize/SRDZG -victim/SM -Victoir/M -Victoria/M -Victorianism/S -Victorian/S -victoriousness/M -victorious/YP -Victor/M -victor/SM -victory/MS -Victrola/SM -victualer/M -victual/ZGSDR -vicu�a/S -Vidal/M -Vida/M -videlicet -videocassette/S -videoconferencing -videodisc/S -videodisk/SM -video/GSMD -videophone/SM -videotape/SDGM -Vidovic/M -Vidovik/M -Vienna/M -Viennese/M -Vientiane/M -vier/M -vie/S -Vietcong/M -Viet/M -Vietminh/M -Vietnamese/M -Vietnam/M -viewed/A -viewer/AS -viewer's -viewfinder/MS -viewgraph/SM -viewing/M -viewless/Y -view/MBGZJSRD -viewpoint/SM -views/A -vigesimal -vigilance/MS -vigilante/SM -vigilantism/MS -vigilantist -vigilant/Y -vigil/SM -vignette/MGDRS -vignetter/M -vignetting/M -vignettist/MS -vigor/MS -vigorousness/M -vigorous/YP -vii -viii -Vijayawada/M -Viki/M -Viking/MS -viking/S -Vikki/M -Vikky/M -Vikram/M -Vila -vile/AR -vilely -vileness/MS -vilest -Vilhelmina/M -vilification/M -vilifier/M -vilify/GNXRSD -villager/M -village/RSMZ -villainousness/M -villainous/YP -villain/SM -villainy/MS -Villa/M -villa/MS -Villarreal/M -ville -villeinage/SM -villein/MS -villi -Villon/M -villus/M -Vilma/M -Vilnius/M -Vilyui/M -Vi/M -vi/MDR -vim/MS -vinaigrette/MS -Vina/M -Vince/M -Vincent/MS -Vincenty/M -Vincenz/M -vincible/I -Vinci/M -Vindemiatrix/M -vindicate/XSDVGN -vindication/M -vindicator/SM -vindictiveness/MS -vindictive/PY -vinegar/DMSG -vinegary -vine/MGDS -vineyard/SM -Vinita/M -Vin/M -Vinnie/M -Vinni/M -Vinny/M -vino/MS -vinous -Vinson/M -vintage/MRSDG -vintager/M -vintner/MS -vinyl/SM -violable/I -Viola/M -Violante/M -viola/SM -violate/VNGXSD -violator/MS -Viole/M -violence/SM -violent/Y -Violet/M -violet/SM -Violetta/M -Violette/M -violinist/SM -violin/MS -violist/MS -viol/MSB -violoncellist/S -violoncello/MS -viper/MS -viperous -VIP/S -viragoes -virago/M -viral/Y -vireo/SM -Virge/M -Virgie/M -Virgilio/M -Virgil/M -virginal/YS -Virgina/M -Virginia/M -Virginian/S -Virginie/M -virginity/SM -virgin/SM -Virgo/MS -virgule/MS -virile -virility/MS -virologist/S -virology/SM -virtual/Y -virtue/SM -virtuosity/MS -virtuosoes -virtuoso/MS -virtuousness/SM -virtuous/PY -virulence/SM -virulent/Y -virus/MS -visage/MSD -Visakhapatnam's -Visa/M -visa/SGMD -Visayans -viscera -visceral/Y -viscid/Y -viscoelastic -viscoelasticity -viscometer/SM -viscose/MS -viscosity/MS -viscountcy/MS -viscountess/SM -viscount/MS -viscousness/M -viscous/PY -viscus/M -vise/CAXNGSD -viselike -vise's -Vishnu/M -visibility/ISM -visible/PI -visibly/I -Visigoth/M -Visigoths -visionariness/M -visionary/PS -vision/KMDGS -vision's/A -visitable/U -visitant/SM -visitation/SM -visited/U -visit/GASD -visitor/MS -vis/MDSGV -visor/SMDG -VISTA -vista/GSDM -Vistula/M -visualization/AMS -visualized/U -visualizer/M -visualizes/A -visualize/SRDZG -visual/SY -vitae -vitality/MS -vitalization/AMS -vitalize/ASDGC -vital/SY -vita/M -Vita/M -vitamin/SM -Vite/M -Vitia/M -vitiate/XGNSD -vitiation/M -viticulture/SM -viticulturist/S -Vitim/M -Vito/M -Vitoria/M -vitreous/YSP -vitrifaction/S -vitrification/M -vitrify/XDSNG -vitrine/SM -vitriolic -vitriol/MDSG -vitro -vittles -Vittoria/M -Vittorio/M -vituperate/SDXVGN -vituperation/M -vituperative/Y -Vitus/M -vivace/S -vivaciousness/MS -vivacious/YP -vivacity/SM -viva/DGS -Vivaldi -Viva/M -vivaria -vivarium/MS -vivaxes -Vivekananda/M -vive/Z -Vivia/M -Viviana/M -Vivian/M -Vivianna/M -Vivianne/M -vividness/SM -vivid/PTYR -Vivie/M -Viviene/M -Vivien/M -Vivienne/M -vivifier -vivify/NGASD -Vivi/MN -viviparous -vivisect/DGS -vivisectional -vivisectionist/SM -vivisection/MS -Viviyan/M -Viv/M -vivo -Vivyan/M -Vivyanne/M -vixenish/Y -vixen/SM -viz -vizier/MS -vizor's -VJ -Vladamir/M -Vladimir/M -Vladivostok/M -Vlad/M -VLF -VLSI -VMS/M -VOA -vocable/SM -vocab/S -vocabularian -vocabularianism -vocabulary/MS -vocalic/S -vocalise's -vocalism/M -vocalist/MS -vocalization/SM -vocalized/U -vocalizer/M -vocalize/ZGDRS -vocal/SY -vocation/AKMISF -vocational/Y -vocative/KYS -vociferate/NGXSD -vociferation/M -vociferousness/MS -vociferous/YP -vocoded -vocoder -vodka/MS -voe/S -Vogel/M -vogue/GMSRD -vogueing -voguish -voiceband -voiced/CU -voice/IMGDS -voicelessness/SM -voiceless/YP -voicer/S -voices/C -voicing/C -voidable -void/C -voided -voider/M -voiding -voidness/M -voids -voil� -voile/MS -volar -volatileness/M -volatile/PS -volatility/MS -volatilization/MS -volatilize/SDG -volcanically -volcanic/S -volcanism/M -volcanoes -volcano/M -vole/MS -Volga/M -Volgograd/M -vol/GSD -volitionality -volitional/Y -volition/MS -Volkswagen/SM -volleyball/MS -volleyer/M -volley/SMRDG -Vol/M -Volstead/M -voltage/SM -voltaic -Voltaire/M -Volta/M -volt/AMS -Volterra/M -voltmeter/MS -volubility/S -voluble/P -volubly -volume/SDGM -volumetric -volumetrically -voluminousness/MS -voluminous/PY -voluntarily/I -voluntariness/MI -voluntarism/MS -voluntary/PS -volunteer/DMSG -voluptuary/SM -voluptuousness/S -voluptuous/YP -volute/S -Volvo/M -vomit/GRDS -Vonda/M -Von/M -Vonnegut/M -Vonnie/M -Vonni/M -Vonny/M -voodoo/GDMS -voodooism/S -voraciousness/MS -voracious/YP -voracity/MS -Voronezh/M -Vorster/M -vortex/SM -vortices's -vorticity/M -votary/MS -vote/CSDG -voter/SM -vote's -votive/YP -voucher/GMD -vouchsafe/SDG -vouch/SRDGZ -vowelled -vowelling -vowel/MS -vower/M -vow/SMDRG -voyage/GMZJSRD -voyager/M -voyageur/SM -voyeurism/MS -voyeuristic -voyeur/MS -VP -vs -V's -VT -Vt/M -VTOL -vulcanization/SM -vulcanized/U -vulcanize/SDG -Vulcan/M -vulgarian/MS -vulgarism/MS -vulgarity/MS -vulgarization/S -vulgarize/GZSRD -vulgar/TSYR -Vulgate/SM -Vulg/M -vulnerability/SI -vulnerable/IP -vulnerably/I -vulpine -vulturelike -vulture/SM -vulturous -vulvae -vulva/M -vying -Vyky/M -WA -Waals -Wabash/M -WAC -Wacke/M -wackes -wackiness/MS -wacko/MS -wacky/RTP -Waco/M -Wac/S -wadded -wadding/SM -waddle/GRSD -Wade/M -wader/M -wade/S -wadi/SM -wad/MDRZGS -Wadsworth/M -wafer/GSMD -waffle/GMZRSD -Wafs -wafter/M -waft/SGRD -wag/DRZGS -waged/U -wager/GZMRD -wage/SM -wagged -waggery/MS -wagging -waggishness/SM -waggish/YP -waggle/SDG -waggly -Wagnerian -Wagner/M -wagoner/M -wagon/SGZMRD -wagtail/SM -Wahl/M -waif/SGDM -Waikiki/M -wailer/M -wail/SGZRD -wain/GSDM -Wain/M -wainscot/SGJD -Wainwright/M -wainwright/SM -waistband/MS -waistcoat/GDMS -waister/M -waist/GSRDM -waistline/MS -Waite/M -waiter/DMG -Waiter/M -wait/GSZJRD -Wait/MR -waitpeople -waitperson/S -waitress/GMSD -waiver/MB -waive/SRDGZ -Wakefield/M -wakefulness/MS -wakeful/PY -Wake/M -wake/MGDRSJ -waken/SMRDG -waker/M -wakeup -Waksman/M -Walbridge/M -Walcott/M -Waldemar/M -Walden/M -Waldensian -Waldheim/M -Wald/MN -Waldo/M -Waldon/M -Waldorf/M -wale/DRSMG -Wales -Walesa/M -Walford/M -Walgreen/M -waling/M -walkabout/M -walkaway/SM -walker/M -Walker/M -walk/GZSBJRD -walkie -Walkman/S -walkout/SM -walkover/SM -walkway/MS -wallaby/MS -Wallace/M -Wallache/M -wallah/M -Wallas/M -wallboard/MS -Wallenstein/M -Waller/M -wallet/SM -walleye/MSD -wallflower/MS -Wallie/M -Wallis -Walliw/M -Walloon/SM -walloper/M -walloping/M -wallop/RDSJG -wallower/M -wallow/RDSG -wallpaper/DMGS -wall/SGMRD -Wall/SMR -Wally/M -wally/S -walnut/SM -Walpole/M -Walpurgisnacht -walrus/SM -Walsh/M -Walter/M -Walther/M -Walton/M -waltzer/M -Walt/ZMR -waltz/MRSDGZ -Walworth/M -Waly/M -wampum/SM -Wanamaker/M -Wanda/M -wanderer/M -wander/JZGRD -wanderlust/SM -Wandie/M -Wandis/M -wand/MRSZ -wane/S -Waneta/M -wangler/M -wangle/RSDGZ -Wang/M -Wanids/M -Wankel/M -wanna -wannabe/S -wanned -wanner -wanness/S -wannest -wanning -wan/PGSDY -Wansee/M -Wansley/M -wanted/U -wanter/M -want/GRDSJ -wantonness/S -wanton/PGSRDY -wapiti/MS -warble/GZRSD -warbler/M -warbonnet/S -ward/AGMRDS -Warde/M -warden/DMGS -Warden/M -warder/DMGS -Ward/MN -wardrobe/MDSG -wardroom/MS -wardship/M -wards/I -warehouseman/M -warehouse/MGSRD -Ware/MG -ware/MS -warfare/SM -Warfield/M -war/GSMD -warhead/MS -Warhol/M -warhorse/SM -warily/U -warinesses/U -wariness/MS -Waring/M -warless -warlike -warlock/SM -warlord/MS -warmblooded -warmed/A -warmer/M -warmheartedness/SM -warmhearted/PY -warmish -warmness/MS -warmongering/M -warmonger/JGSM -warms/A -warmth/M -warmths -warm/YRDHPGZTS -warned/U -warner/M -Warner/M -warn/GRDJS -warning/YM -Warnock/M -warpaint -warpath/M -warpaths -warper/M -warplane/MS -warp/MRDGS -warranted/U -warranter/M -warrant/GSMDR -warranty/SDGM -warred/M -warrener/M -Warren/M -warren/SZRM -warring/M -warrior/MS -Warsaw/M -wars/C -warship/MS -warthog/S -wartime/SM -wart/MDS -warty/RT -Warwick/M -wary/URPT -Wasatch/M -washable/S -wash/AGSD -washbasin/SM -washboard/SM -washbowl/SM -Washburn/M -washcloth/M -washcloths -washday/M -washed/U -washer/GDMS -washerwoman/M -washerwomen -washing/SM -Washingtonian/S -Washington/M -Wash/M -Washoe/M -washout/SM -washrag/SM -washroom/MS -washstand/SM -washtub/MS -washy/RT -wasn't -WASP -waspishness/SM -waspish/PY -Wasp's -wasp/SM -was/S -wassail/GMDS -Wasserman/M -Wassermann/M -wastage/SM -wastebasket/SM -wastefulness/S -wasteful/YP -wasteland/MS -wastepaper/MS -waster/DG -waste/S -wastewater -wast/GZSRD -wasting/Y -wastrel/MS -Watanabe/M -watchable/U -watchband/SM -watchdogged -watchdogging -watchdog/SM -watched/U -watcher/M -watchfulness/MS -watchful/PY -watch/JRSDGZB -watchmake/JRGZ -watchmaker/M -watchman/M -watchmen -watchpoints -watchtower/MS -watchword/MS -waterbird/S -waterborne -Waterbury/M -watercolor/DMGS -watercolorist/SM -watercourse/SM -watercraft/M -watercress/SM -waterer/M -waterfall/SM -waterfowl/M -waterfront/SM -Watergate/M -waterhole/S -Waterhouse/M -wateriness/SM -watering/M -water/JGSMRD -waterless -waterlily/S -waterline/S -waterlogged -waterloo -Waterloo/SM -waterman/M -watermark/GSDM -watermelon/SM -watermill/S -waterproof/PGRDSJ -watershed/SM -waterside/MSR -watersider/M -Waters/M -waterspout/MS -watertightness/M -watertight/P -Watertown/M -waterway/MS -waterwheel/S -waterworks/M -watery/PRT -Watkins -WATS -Watson/M -wattage/SM -Watteau/M -Wattenberg/M -Watterson/M -wattle/SDGM -Watt/MS -watt/TMRS -Watusi/M -Wat/ZM -Waugh/M -Waukesha/M -Waunona/M -Waupaca/M -Waupun/M -Wausau/M -Wauwatosa/M -waveband/MS -waveform/SM -wavefront/MS -waveguide/MS -Waveland/M -wavelength/M -wavelengths -wavelet/SM -wavelike -wavenumber -waver/GZRD -wavering/YU -Waverley/M -Waverly/M -Wave/S -wave/ZGDRS -wavily -waviness/MS -wavy/SRTP -waxer/M -waxiness/MS -wax/MNDRSZG -waxwing/MS -waxwork/MS -waxy/PRT -wayfarer/MS -wayfaring/S -waylaid -Wayland/M -Waylan/M -waylayer/M -waylay/GRSZ -wayleave/MS -Waylen/M -Waylin/M -Waylon/M -Way/M -waymarked -way/MS -Wayne/M -Waynesboro/M -wayside/MS -waywardness/S -wayward/YP -WC -we -weakener/M -weaken/ZGRD -weakfish/SM -weakish -weakliness/M -weakling/SM -weakly/RTP -weakness/MS -weak/TXPYRN -weal/MHS -wealthiness/MS -wealth/M -wealths -wealthy/PTR -weaner/M -weanling/M -wean/RDGS -weapon/GDMS -weaponless -weaponry/MS -wearable/S -wearer/M -wearied/U -wearily -weariness/MS -wearing/Y -wearisomeness/M -wearisome/YP -wear/RBSJGZ -wearying/Y -weary/TGPRSD -weasel/SGMDY -weatherbeaten -weathercock/SDMG -weatherer/M -Weatherford/M -weathering/M -weatherize/GSD -weatherman/M -weather/MDRYJGS -weathermen -weatherperson/S -weatherproof/SGPD -weatherstripped -weatherstripping/S -weatherstrip/S -weaver/M -Weaver/M -weaves/A -weave/SRDGZ -weaving/A -webbed -Webber/M -webbing/MS -Webb/RM -weber/M -Weber/M -Webern/M -webfeet -webfoot/M -Web/MR -website/S -web/SMR -Webster/MS -Websterville/M -we'd -wedded/A -Weddell/M -wedder -wedding/SM -wedge/SDGM -wedgie/RST -Wedgwood/M -wedlock/SM -Wed/M -Wednesday/SM -wed/SA -weeder/M -weediness/M -weedkiller/M -weedless -wee/DRST -weed/SGMRDZ -weedy/TRP -weeing -weekday/MS -weekender/M -weekend/SDRMG -weekly/S -weeknight/SM -Weeks/M -week/SYM -weenie/M -ween/SGD -weeny/RSMT -weeper/M -weep/SGZJRD -weepy/RST -weevil/MS -weft/SGMD -Wehr/M -Weibull/M -Weidar/M -Weider/M -Weidman/M -Weierstrass/M -weighed/UA -weigher/M -weigh/RDJG -weighs/A -weighted/U -weighter/M -weightily -weightiness/SM -weighting/M -weight/JMSRDG -weightlessness/SM -weightless/YP -weightlifter/S -weightlifting/MS -weighty/TPR -Weill/M -Wei/M -Weinberg/M -Weiner/M -Weinstein/M -weirdie/SM -weirdness/MS -weirdo/SM -weird/YRDPGTS -weir/SDMG -Weisenheimer/M -Weiss/M -Weissman/M -Weissmuller/M -Weizmann/M -Welbie/M -Welby/M -Welcher/M -Welches -welcomeness/M -welcome/PRSDYG -welcoming/U -welder/M -Weldon/M -weld/SBJGZRD -Weldwood/M -welfare/SM -welkin/SM -we'll -Welland/M -wellbeing/M -Weller/M -Wellesley/M -Welles/M -wellhead/SM -Wellington/MS -wellington/S -Wellman/M -wellness/MS -well/SGPD -Wells/M -wellspring/SM -Wellsville/M -Welmers/M -Welsh -welsher/M -Welshman/M -Welshmen -welsh/RSDGZ -Welshwoman/M -Welshwomen -welter/GD -welterweight/MS -welt/GZSMRD -wencher/M -wench/GRSDM -Wendall/M -Wenda/M -wend/DSG -Wendeline/M -Wendell/M -Wendel/M -Wendie/M -Wendi/M -Wendye/M -Wendy/M -wen/M -Wenonah/M -Wenona/M -went -Wentworth/M -wept/U -were -we're -weren't -werewolf/M -werewolves -Werner/M -Wernher/M -Werther/M -werwolf's -Wes -Wesleyan -Wesley/M -Wessex/M -Wesson/M -westbound -Westbrooke/M -Westbrook/M -Westchester/M -wester/DYG -westerly/S -westerner/M -westernization/MS -westernize/GSD -westernmost -Western/ZRS -western/ZSR -Westfield/M -Westhampton/M -Westinghouse/M -westing/M -Westleigh/M -Westley/M -Westminster/M -Westmore/M -West/MS -Weston/M -Westphalia/M -Westport/M -west/RDGSM -westward/S -Westwood/M -wetback/MS -wetland/S -wetness/MS -wet/SPY -wettable -wetter/S -wettest -wetting -we've -Weyden/M -Weyerhauser/M -Weylin/M -Wezen/M -WFF -whacker/M -whack/GZRDS -whaleboat/MS -whalebone/SM -whale/GSRDZM -Whalen/M -whaler/M -whaling/M -whammed -whamming/M -wham/MS -whammy/S -wharf/SGMD -Wharton/M -wharves -whatchamacallit/MS -what'd -whatever -what/MS -whatnot/MS -what're -whatsoever -wheal/MS -wheatgerm -Wheaties/M -Wheatland/M -wheat/NMXS -Wheaton/M -Wheatstone/M -wheedle/ZDRSG -wheelbarrow/GSDM -wheelbase/MS -wheelchair/MS -wheeler/M -Wheeler/M -wheelhouse/SM -wheelie/MS -wheeling/M -Wheeling/M -Wheelock/M -wheel/RDMJSGZ -wheelwright/MS -whee/S -wheeze/SDG -wheezily -wheeziness/SM -wheezy/PRT -Whelan/M -whelk/MDS -Wheller/M -whelm/DGS -whelp/DMGS -whence/S -whenever -when/S -whensoever -whereabout/S -whereas/S -whereat -whereby -where'd -wherefore/MS -wherein -where/MS -whereof -whereon -where're -wheresoever -whereto -whereupon -wherever -wherewith -wherewithal/SM -wherry/DSGM -whether -whet/S -whetstone/MS -whetted -whetting -whew/GSD -whey/MS -which -whichever -whiff/GSMD -whiffle/DRSG -whiffler/M -whiffletree/SM -whig/S -Whig/SM -while/GSD -whilom -whilst -whimmed -whimming -whimper/DSG -whimsey's -whimsicality/MS -whimsical/YP -whim/SM -whimsy/TMDRS -whine/GZMSRD -whining/Y -whinny/GTDRS -whiny/RT -whipcord/SM -whiplash/SDMG -Whippany/M -whipped -whipper/MS -whippersnapper/MS -whippet/MS -whipping/SM -Whipple/M -whippletree/SM -whippoorwill/SM -whipsaw/GDMS -whips/M -whip/SM -whirligig/MS -whirlpool/MS -whirl/RDGS -whirlwind/MS -whirlybird/MS -whirly/MS -whirred -whirring -whir/SY -whisker/DM -whiskery -whiskey/SM -whisk/GZRDS -whisperer/M -whisper/GRDJZS -whispering/YM -whist/GDMS -whistleable -whistle/DRSZG -whistler/M -Whistler/M -whistling/M -Whitaker/M -Whitby/M -Whitcomb/M -whitebait/M -whitecap/MS -whiteface/M -Whitefield/M -whitefish/SM -Whitehall/M -Whitehead/M -whitehead/S -Whitehorse/M -Whiteleaf/M -Whiteley/M -White/MS -whitener/M -whiteness/MS -whitening/M -whiten/JZDRG -whiteout/S -white/PYS -whitespace -whitetail/S -whitewall/SM -whitewash/GRSDM -whitewater -Whitewater/M -whitey/MS -Whitfield/M -whither/DGS -whitier -whitiest -whiting/M -whitish -Whitley/M -Whitlock/M -Whit/M -Whitman/M -Whitney/M -whit/SJGTXMRND -Whitsunday/MS -Whittaker/M -whitter -Whittier -whittle/JDRSZG -whittler/M -whiz -whizkid -whizzbang/S -whizzed -whizzes -whizzing -WHO -whoa/S -who'd -whodunit/SM -whoever -wholegrain -wholeheartedness/MS -wholehearted/PY -wholemeal -wholeness/S -wholesale/GZMSRD -wholesaler/M -wholesomeness/USM -wholesome/UYP -whole/SP -wholewheat -who'll -wholly -whom -who/M -whomever -whomsoever -whoopee/S -whooper/M -whoop/SRDGZ -whoosh/DSGM -whop -whopper/MS -whopping/S -who're -whorehouse/SM -whoreish -whore/SDGM -whorish -whorl/SDM -whose -whoso -whosoever -who've -why -whys -WI -Wiatt/M -Wichita/M -wickedness/MS -wicked/RYPT -wicker/M -wickerwork/MS -wicketkeeper/SM -wicket/SM -wick/GZRDMS -wicking/M -widemouthed -widener/M -wideness/S -widen/SGZRD -wide/RSYTP -widespread -widgeon's -widget/SM -widower/M -widowhood/S -widow/MRDSGZ -width/M -widths -widthwise -Wieland/M -wielder/M -wield/GZRDS -Wiemar/M -wiener/SM -wienie/SM -Wier/M -Wiesel/M -wife/DSMYG -wifeless -wifely/RPT -wigeon/MS -wigged -wigging/M -Wiggins -wiggler/M -wiggle/RSDGZ -wiggly/RT -wight/SGDM -wiglet/S -wigmaker -wig/MS -Wigner/M -wigwagged -wigwagging -wigwag/S -wigwam/MS -Wilberforce/M -Wilbert/M -Wilbur/M -Wilburn/M -Wilburt/M -Wilcox/M -Wilda/M -wildcat/SM -wildcatted -wildcatter/MS -wildcatting -wildebeest/SM -Wilde/MR -Wilden/M -Wilder/M -wilderness/SM -wilder/P -wildfire/MS -wildflower/S -wildfowl/M -wilding/M -wildlife/M -wildness/MS -Wildon/M -wild/SPGTYRD -wile/DSMG -Wileen/M -Wilek/M -Wiley/M -Wilford/M -Wilfred/M -Wilfredo/M -Wilfrid/M -wilfulness's -Wilhelmina/M -Wilhelmine/M -Wilhelm/M -Wilie/M -wilily -wiliness/MS -Wilkerson/M -Wilkes/M -Wilkins/M -Wilkinson/M -Willabella/M -Willa/M -Willamette/M -Willamina/M -Willard/M -Willcox/M -Willdon/M -willed/U -Willem/M -Willemstad/M -willer/M -Willetta/M -Willette/M -Willey/M -willfulness/S -willful/YP -Williamsburg/M -William/SM -Williamson/M -Willied/M -Willie/M -willies -Willi/MS -willinger -willingest -willingness's -willingness/US -willing/UYP -Willisson/M -williwaw/MS -Will/M -Willoughby/M -willower/M -Willow/M -willow/RDMSG -willowy/TR -willpower/MS -will/SGJRD -Willy/SDM -Willyt/M -Wilma/M -Wilmar/M -Wilmer/M -Wilmette/M -Wilmington/M -Wilona/M -Wilone/M -Wilow/M -Wilshire/M -Wilsonian -Wilson/M -wilt/DGS -Wilt/M -Wilton/M -wily/PTR -Wimbledon/M -wimp/GSMD -wimpish -wimple/SDGM -wimpy/RT -wince/SDG -Winchell/M -wincher/M -winchester/M -Winchester/MS -winch/GRSDM -windbag/SM -windblown -windbreak/MZSR -windburn/GSMD -winded -winder/UM -windfall/SM -windflower/MS -Windham/M -Windhoek/M -windily -windiness/SM -winding/MS -windjammer/SM -windlass/GMSD -windless/YP -windmill/GDMS -window/DMGS -windowless -windowpane/SM -Windows -windowsill/SM -windpipe/SM -windproof -windrow/GDMS -wind's -winds/A -windscreen/MS -windshield/SM -windsock/MS -Windsor/MS -windstorm/MS -windsurf/GZJSRD -windswept -windup/MS -wind/USRZG -Windward/M -windward/SY -Windy/M -windy/TPR -wineglass/SM -winegrower/SM -Winehead/M -winemake -winemaster -wine/MS -winery/MS -Winesap/M -wineskin/M -Winfield/M -Winfred/M -Winfrey/M -wingback/M -wingding/MS -wingeing -winger/M -wing/GZRDM -wingless -winglike -wingman -wingmen -wingspan/SM -wingspread/MS -wingtip/S -Winifield/M -Winifred/M -Wini/M -winker/M -wink/GZRDS -winking/U -Winkle/M -winkle/SDGM -winless -Win/M -winnable -Winnah/M -Winna/M -Winnebago/M -Winne/M -winner/MS -Winnetka/M -Winnie/M -Winnifred/M -Winni/M -winning/SY -Winnipeg/M -Winn/M -winnow/SZGRD -Winny/M -Winograd/M -wino/MS -Winonah/M -Winona/M -Winooski/M -Winsborough/M -Winsett/M -Winslow/M -winsomeness/SM -winsome/PRTY -Winston/M -winterer/M -wintergreen/SM -winterize/GSD -Winters -winter/SGRDYM -wintertime/MS -Winthrop/M -wintriness/M -wintry/TPR -winy/RT -win/ZGDRS -wipe/DRSZG -wiper/M -wirehair/MS -wireless/MSDG -wireman/M -wiremen -wirer/M -wire's -wires/A -wiretap/MS -wiretapped -wiretapper/SM -wiretapping -wire/UDA -wiriness/S -wiring/SM -wiry/RTP -Wisc -Wisconsinite/SM -Wisconsin/M -wisdoms -wisdom/UM -wiseacre/MS -wisecrack/GMRDS -wised -wisely/TR -Wise/M -wiseness -wisenheimer/M -Wisenheimer/M -wises -wise/URTY -wishbone/MS -wishfulness/M -wishful/PY -wish/GZSRD -wishy -wising -Wis/M -wisp/MDGS -wispy/RT -wist/DGS -wisteria/SM -wistfulness/MS -wistful/PY -witchcraft/SM -witchdoctor/S -witchery/MS -witch/SDMG -withal -withdrawal/MS -withdrawer/M -withdrawnness/M -withdrawn/P -withdraw/RGS -withdrew -withe/M -wither/GDJ -withering/Y -Witherspoon/M -with/GSRDZ -withheld -withholder/M -withhold/SJGZR -within/S -without/S -withs -withstand/SG -withstood -witlessness/MS -witless/PY -Wit/M -witness/DSMG -witnessed/U -wit/PSM -witted -witter/G -Wittgenstein/M -witticism/MS -Wittie/M -wittily -wittiness/SM -wittings -witting/UY -Witt/M -Witty/M -witty/RTP -Witwatersrand/M -wive/GDS -wives/M -wizard/MYS -wizardry/MS -wizen/D -wiz's -wk/Y -Wm/M -WNW -woad/MS -wobble/GSRD -wobbler/M -wobbliness/S -wobbly/PRST -Wodehouse/M -woebegone/P -woefuller -woefullest -woefulness/SM -woeful/PY -woe/PSM -woke -wok/SMN -Wolcott/M -wold/MS -Wolfe/M -wolfer/M -Wolff/M -Wolfgang/M -wolfhound/MS -Wolfie/M -wolfishness/M -wolfish/YP -Wolf/M -wolfram/MS -wolf/RDMGS -Wolfy/M -Wollongong/M -Wollstonecraft/M -Wolsey/M -Wolverhampton/M -wolverine/SM -Wolverton/M -wolves/M -woman/GSMYD -womanhood/MS -womanish -womanized/U -womanizer/M -womanize/RSDZG -womanizes/U -womankind/M -womanlike -womanliness/SM -womanly/PRT -wombat/MS -womb/SDM -womenfolk/MS -women/MS -wonderer/M -wonderfulness/SM -wonderful/PY -wonder/GLRDMS -wondering/Y -wonderland/SM -wonderment/SM -wondrousness/M -wondrous/YP -Wong/M -wonk/S -wonky/RT -wonned -wonning -won/SG -won't -wontedness/MU -wonted/PUY -wont/SGMD -Woodard/M -Woodberry/M -woodbine/SM -woodblock/S -Woodbury/M -woodcarver/S -woodcarving/MS -woodchopper/SM -woodchuck/MS -woodcock/MS -woodcraft/MS -woodcut/SM -woodcutter/MS -woodcutting/MS -woodenness/SM -wooden/TPRY -woodgrain/G -woodhen -Woodhull/M -Woodie/M -woodiness/MS -woodland/SRM -Woodlawn/M -woodlice -woodlot/S -woodlouse/M -woodman/M -Woodman/M -woodmen -woodpecker/SM -woodpile/SM -Woodrow/M -woodruff/M -woo/DRZGS -woodshedded -woodshedding -woodshed/SM -woodside -Wood/SM -woodsman/M -woodsmen -wood/SMNDG -woodsmoke -woods/R -Woodstock/M -woodsy/TRP -Woodward/MS -woodwind/S -woodworker/M -woodworking/M -woodwork/SMRGZJ -woodworm/M -woodyard -Woody/M -woody/TPSR -woofer/M -woof/SRDMGZ -Woolf/M -woolgatherer/M -woolgathering/M -woolgather/RGJ -woolliness/MS -woolly/RSPT -Woolongong/M -wool/SMYNDX -Woolworth/M -Woonsocket/M -Wooster/M -Wooten/M -woozily -wooziness/MS -woozy/RTP -wop/MS! -Worcestershire/M -Worcester/SM -wordage/SM -word/AGSJD -wordbook/MS -Worden/M -wordily -wordiness/SM -wording/AM -wordless/Y -wordplay/SM -word's -Wordsworth/M -wordy/TPR -wore -workability's -workability/U -workableness/M -workable/U -workably -workaday -workaholic/S -workaround/SM -workbench/MS -workbook/SM -workday/SM -worked/A -worker/M -workfare/S -workforce/S -work/GZJSRDMB -workhorse/MS -workhouse/SM -working/M -workingman/M -workingmen -workingwoman/M -workingwomen -workload/SM -workmanlike -Workman/M -workman/MY -workmanship/MS -workmate/S -workmen/M -workout/SM -workpiece/SM -workplace/SM -workroom/MS -works/A -worksheet/S -workshop/MS -workspace/S -workstation/MS -worktable/SM -worktop/S -workup/S -workweek/SM -worldlier -worldliest -worldliness/USM -worldly/UP -worldwide -world/ZSYM -wormer/M -wormhole/SM -worm/SGMRD -Worms/M -wormwood/SM -wormy/RT -worn/U -worried/Y -worrier/M -worriment/MS -worrisome/YP -worrying/Y -worrywart/SM -worry/ZGSRD -worsen/GSD -worse/SR -worshiper/M -worshipfulness/M -worshipful/YP -worship/ZDRGS -worsted/MS -worst/SGD -worth/DG -worthily/U -worthinesses/U -worthiness/SM -Worthington/M -worthlessness/SM -worthless/PY -Worth/M -worths -worthwhile/P -Worthy/M -worthy/UTSRP -wort/SM -wost -wot -Wotan/M -wouldn't -would/S -wouldst -would've -wound/AU -wounded/U -wounder -wounding -wounds -wound's -wove/A -woven/AU -wovens -wow/SDG -Wozniak/M -WP -wpm -wrack/SGMD -wraith/M -wraiths -Wrangell/M -wrangle/GZDRS -wrangler/M -wraparound/S -wrap/MS -wrapped/U -wrapper/MS -wrapping/SM -wraps/U -wrasse/SM -wrathful/YP -wrath/GDM -wraths -wreak/SDG -wreathe -wreath/GMDS -wreaths -wreckage/MS -wrecker/M -wreck/GZRDS -wrenching/Y -wrench/MDSG -wren/MS -Wren/MS -Wrennie/M -wrester/M -wrestle/JGZDRS -wrestler/M -wrestling/M -wrest/SRDG -wretchedness/SM -wretched/TPYR -wretch/MDS -wriggle/DRSGZ -wriggler/M -wriggly/RT -Wright/M -wright/MS -Wrigley/M -wringer/M -wring/GZRS -wrinkled/U -wrinkle/GMDS -wrinkly/RST -wristband/SM -wrist/MS -wristwatch/MS -writable/U -write/ASBRJG -writer/MA -writeup -writhe/SDG -writing/M -writ/MRSBJGZ -written/UA -Wroclaw -wrongdoer/MS -wrongdoing/MS -wronger/M -wrongfulness/MS -wrongful/PY -wrongheadedness/MS -wrongheaded/PY -wrongness/MS -wrong/PSGTYRD -Wronskian/M -wrote/A -wroth -wrought/I -wrung -wry/DSGY -wryer -wryest -wryness/SM -W's -WSW -wt -W/T -Wuhan/M -Wu/M -Wurlitzer/M -wurst/SM -wuss/S -wussy/TRS -WV -WW -WWI -WWII -WWW -w/XTJGV -WY -Wyatan/M -Wyatt/M -Wycherley/M -Wycliffe/M -Wye/MH -Wyeth/M -Wylie/M -Wylma/M -Wyman/M -Wyndham/M -Wyn/M -Wynne/M -Wynnie/M -Wynn/M -Wynny/M -Wyo/M -Wyomingite/SM -Wyoming/M -WYSIWYG -x -X -Xanadu -Xanthippe/M -Xanthus/M -Xaviera/M -Xavier/M -Xebec/M -Xe/M -XEmacs/M -Xenakis/M -Xena/M -Xenia/M -Xenix/M -xenon/SM -xenophobe/MS -xenophobia/SM -xenophobic -Xenophon/M -Xenos -xerographic -xerography/MS -xerox/GSD -Xerox/MGSD -Xerxes/M -Xever/M -Xhosa/M -Xi'an -Xian/S -Xiaoping/M -xii -xiii -xi/M -Ximenes/M -Ximenez/M -Ximian/SM -Xingu/M -xis -xiv -xix -XL -Xmas/SM -XML -Xochipilli/M -XOR -X's -XS -xterm/M -Xuzhou/M -xv -xvi -xvii -xviii -xx -XXL -xylem/SM -xylene/M -Xylia/M -Xylina/M -xylophone/MS -xylophonist/S -Xymenes/M -Y -ya -yacc/M -Yacc/M -yachting/M -yachtsman -yachtsmen -yachtswoman/M -yachtswomen -yacht/ZGJSDM -yack's -Yagi/M -yahoo/MS -Yahweh/M -Yakima/M -yakked -yakking -yak/SM -Yakut/M -Yakutsk/M -Yale/M -Yalies/M -y'all -Yalonda/M -Yalow/M -Yalta/M -Yalu/M -Yamaha/M -yammer/RDZGS -Yamoussoukro -yam/SM -Yanaton/M -Yance/M -Yancey/M -Yancy/M -Yang/M -Yangon -yang/S -Yangtze/M -Yankee/SM -yank/GDS -Yank/MS -Yaounde/M -yapped -yapping -yap/S -Yaqui/M -yardage/SM -yardarm/SM -Yardley/M -Yard/M -yardman/M -yardmaster/S -yardmen -yard/SMDG -yardstick/SM -yarmulke/SM -yarn/SGDM -Yaroslavl/M -yarrow/MS -Yasmeen/M -Yasmin/M -Yates -yaw/DSG -yawl/SGMD -yawner/M -yawn/GZSDR -yawning/Y -Yb/M -yd -Yeager/M -yeah -yeahs -yearbook/SM -yearling/M -yearlong -yearly/S -yearner/M -yearning/MY -yearn/JSGRD -year/YMS -yea/S -yeastiness/M -yeast/SGDM -yeasty/PTR -Yeats/M -yecch -yegg/MS -Yehudi/M -Yehudit/M -Yekaterinburg/M -Yelena/M -yell/GSDR -yellowhammers -yellowish -Yellowknife/M -yellowness/MS -Yellowstone/M -yellow/TGPSRDM -yellowy -yelper/M -yelp/GSDR -Yeltsin -Yemeni/S -Yemenite/SM -Yemen/M -Yenisei/M -yenned -yenning -yen/SM -Yentl/M -yeomanry/MS -yeoman/YM -yeomen -yep/S -Yerevan/M -Yerkes/M -Yesenia/M -yeshiva/SM -yes/S -yessed -yessing -yesterday/MS -yesteryear/SM -yet -ye/T -yeti/SM -Yetta/M -Yettie/M -Yetty/M -Yevette/M -Yevtushenko/M -yew/SM -y/F -Yggdrasil/M -Yiddish/M -yielded/U -yielding/U -yield/JGRDS -yikes -yin/S -yipe/S -yipped -yippee/S -yipping -yip/S -YMCA -YMHA -Ymir/M -YMMV -Ynes/M -Ynez/M -yo -Yoda/M -yodeler/M -yodel/SZRDG -Yoder/M -yoga/MS -yoghurt's -yogi/MS -yogurt/SM -yoke/DSMG -yoked/U -yokel/SM -yokes/U -yoking/U -Yoknapatawpha/M -Yokohama/M -Yoko/M -Yolanda/M -Yolande/M -Yolane/M -Yolanthe/M -yolk/DMS -yon -yonder -Yong/M -Yonkers/M -yore/MS -Yorgo/MS -Yorick/M -Yorke/M -Yorker/M -yorker/SM -Yorkshire/MS -Yorktown/M -York/ZRMS -Yoruba/M -Yosemite/M -Yoshiko/M -Yoshi/M -Yost/M -you'd -you'll -youngish -Young/M -youngster/MS -Youngstown/M -young/TRYP -you're -your/MS -yourself -yourselves -you/SH -youthfulness/SM -youthful/YP -youths -youth/SM -you've -Yovonnda/M -yow -yowl/GSD -Ypres/M -Ypsilanti/M -yr -yrs -Y's -Ysabel/M -YT -ytterbium/MS -yttrium/SM -yuan/M -Yuba/M -Yucatan -yucca/MS -yuck/GSD -yucky/RT -Yugo/M -Yugoslavia/M -Yugoslavian/S -Yugoslav/M -Yuh/M -Yuki/M -yukked -yukking -Yukon/M -yuk/S -yule/MS -Yule/MS -yuletide/MS -Yuletide/S -Yul/M -Yulma/M -yum -Yuma/M -yummy/TRS -Yunnan/M -yuppie/SM -yup/S -Yurik/M -Yuri/M -yurt/SM -Yves/M -Yvette/M -Yvon/M -Yvonne/M -Yvor/M -YWCA -YWHA -Zabrina/M -Zaccaria/M -Zachariah/M -Zacharia/SM -Zacharie/M -Zachary/M -Zacherie/M -Zachery/M -Zach/M -Zackariah/M -Zack/M -zagging -Zagreb/M -zag/S -Zahara/M -Zaire/M -Zairian/S -Zak/M -Zambezi/M -Zambia/M -Zambian/S -Zamboni -Zamenhof/M -Zamora/M -Zandra/M -Zane/M -Zaneta/M -zaniness/MS -Zan/M -Zanuck/M -zany/PDSRTG -Zanzibar/M -Zapata/M -Zaporozhye/M -Zappa/M -zapped -zapper/S -zapping -zap/S -Zarah/M -Zara/M -Zared/M -Zaria/M -Zarla/M -Zealand/M -zeal/MS -zealot/MS -zealotry/MS -zealousness/SM -zealous/YP -Zea/M -Zebadiah/M -Zebedee/M -Zeb/M -zebra/MS -Zebulen/M -Zebulon/M -zebu/SM -Zechariah/M -Zedekiah/M -Zed/M -Zedong/M -zed/SM -Zeffirelli/M -Zeiss/M -zeitgeist/S -Zeke/M -Zelda/M -Zelig/M -Zellerbach/M -Zelma/M -Zena/M -Zenger/M -Zenia/M -zenith/M -zeniths -Zen/M -Zennist/M -Zeno/M -Zephaniah/M -zephyr/MS -Zephyrus/M -Zeppelin's -zeppelin/SM -Zerk/M -zeroed/M -zeroing/M -zero/SDHMG -zestfulness/MS -zestful/YP -zest/MDSG -zesty/RT -zeta/SM -zeugma/M -Zeus/M -Zhdanov/M -Zhengzhou -Zhivago/M -Zhukov/M -Zia/M -Zibo/M -Ziegfeld/MS -Ziegler/M -zig -zigged -zigging -Ziggy/M -zigzagged -zigzagger -zigzagging -zigzag/MS -zilch/S -zillion/MS -Zilvia/M -Zimbabwean/S -Zimbabwe/M -Zimmerman/M -zincked -zincking -zinc/MS -zing/GZDRM -zingy/RT -zinnia/SM -Zionism/MS -Zionist/MS -Zion/SM -zip/MS -zipped/U -zipper/GSDM -zipping/U -zippy/RT -zips/U -zirconium/MS -zircon/SM -Zita/M -Zitella/M -zither/SM -zit/S -zloty/SM -Zn/M -zodiacal -zodiac/SM -Zoe/M -Zola/M -Zollie/M -Zolly/M -Zomba/M -zombie/SM -zombi's -zonal/Y -Zonda/M -Zondra/M -zoned/A -zone/MYDSRJG -zones/A -zoning/A -zonked -Zonnya/M -zookeepers -zoological/Y -zoologist/SM -zoology/MS -zoom/DGS -zoophyte/SM -zoophytic -zoo/SM -Zorah/M -Zora/M -Zorana/M -Zorina/M -Zorine/M -Zorn/M -Zoroaster/M -Zoroastrianism/MS -Zoroastrian/S -Zorro/M -Zosma/M -zounds/S -Zr/M -Zs -Zsazsa/M -Zsigmondy/M -z/TGJ -Zubenelgenubi/M -Zubeneschamali/M -zucchini/SM -Zukor/M -Zulema/M -Zululand/M -Zulu/MS -Zuni/S -Z�rich/M -Zuzana/M -zwieback/MS -Zwingli/M -Zworykin/M -Z/X -zydeco/S -zygote/SM -zygotic -zymurgy/S diff --git a/static/MarkDown-Editor/martor/css/martor-admin.css b/static/MarkDown-Editor/martor/css/martor-admin.css deleted file mode 100644 index 5704a22..0000000 --- a/static/MarkDown-Editor/martor/css/martor-admin.css +++ /dev/null @@ -1,111 +0,0 @@ -/* -CSS to handle inside admin django -by following the default `admin/css/base.css` from django -*/ - -:root { - --primary: #79aec8; - --secondary: #417690; -} - -body { - margin: 0; - padding: 0; - font-size: 14px; - color: #333; - background: #fff; -} - -#container { - -webkit-box-sizing: unset; - box-sizing: unset; -} - -#branding h1 { - margin: 0!important; -} - -body, h1, h2, h3, h4, h5, -button, input, optgroup, select { - font-family: "Roboto","Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif; -} - -h1, h2, h3, h4, h5 { - font-weight: bold!important; - line-height: unset!important; -} - -h1 { - margin: 0 0 20px!important; - font-weight: 300!important; - font-size: 20px!important; - color: #333!important; -} - -h2 { - font-size: 16px!important; - margin: 1em 0 .5em 0!important; -} - -h2.subhead { - font-weight: normal!important; - margin-top: 0!important; -} - -h3 { - font-size: 14px!important; - margin: .8em 0 .3em 0!important; - color: #333!important; - font-weight: bold!important; -} - -h4 { - font-size: 12px!important; - margin: 1em 0 .8em 0!important; - padding-bottom: 3px!important; -} - -h5 { - font-size: 10px!important; - margin: 1.5em 0 .5em 0!important; - color: #333!important; - text-transform: uppercase!important; - letter-spacing: 1px!important; -} - -.button, input[type=submit], input[type=button], .submit-row input, a.button { - padding: 5px 15px; -} - -nav.sticky caption { - caption-side: unset; -} - -.ui.tabular.menu+.attached:not(.top).segment, -.ui.tabular.menu+.attached:not(.top).segment+.attached:not(.top).segment { - width: auto; -} - -fieldset .form-row>div { - width: 100%; -} -fieldset .form-row div>label { - display: contents!important; -} - -.submit-row a.deletelink { - height: unset; -} - -.table.markdown-reference h2 { - font-size: 1.5em; - background: none; - color: unset; - padding: 0; - font-weight: 300!important; -} - -/* fix issue: #152 */ -.js-inline-admin-formset .form-row { - display: revert; -} diff --git a/static/MarkDown-Editor/martor/css/martor-admin.min.css b/static/MarkDown-Editor/martor/css/martor-admin.min.css deleted file mode 100644 index 90ed4a5..0000000 --- a/static/MarkDown-Editor/martor/css/martor-admin.min.css +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Name : Martor v1.6.2 - * Created by : Agus Makmun (Summon Agus) - * Release date : 07-Apr-2021 - * License : GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - * Repository : https://github.com/agusmakmun/django-markdown-editor -**/ -:root{--primary:#79aec8;--secondary:#417690}body{margin:0;padding:0;font-size:14px;color:#333;background:#fff}#container{-webkit-box-sizing:unset;box-sizing:unset}#branding h1{margin:0!important}body,button,h1,h2,h3,h4,h5,input,optgroup,select{font-family:Roboto,"Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif}h1,h2,h3,h4,h5{font-weight:700!important;line-height:unset!important}h1{margin:0 0 20px!important;font-weight:300!important;font-size:20px!important;color:#333!important}h2{font-size:16px!important;margin:1em 0 .5em 0!important}h2.subhead{font-weight:400!important;margin-top:0!important}h3{font-size:14px!important;margin:.8em 0 .3em 0!important;color:#333!important;font-weight:700!important}h4{font-size:12px!important;margin:1em 0 .8em 0!important;padding-bottom:3px!important}h5{font-size:10px!important;margin:1.5em 0 .5em 0!important;color:#333!important;text-transform:uppercase!important;letter-spacing:1px!important}.button,.submit-row input,a.button,input[type=button],input[type=submit]{padding:5px 15px}nav.sticky caption{caption-side:unset}.ui.tabular.menu+.attached:not(.top).segment,.ui.tabular.menu+.attached:not(.top).segment+.attached:not(.top).segment{width:auto}fieldset .form-row>div{width:100%}fieldset .form-row div>label{display:contents!important}.submit-row a.deletelink{height:unset}.table.markdown-reference h2{font-size:1.5em;background:0 0;color:unset;padding:0;font-weight:300!important}.js-inline-admin-formset .form-row {display: revert} diff --git a/static/MarkDown-Editor/martor/css/martor.bootstrap.css b/static/MarkDown-Editor/martor/css/martor.bootstrap.css deleted file mode 100644 index 8389055..0000000 --- a/static/MarkDown-Editor/martor/css/martor.bootstrap.css +++ /dev/null @@ -1,308 +0,0 @@ -body.overflow { - overflow: hidden!important; -} - -.martor { - height: 500px; - max-height: 500px; -} -.martor-field { - width: 100%; - height: 250px; - min-height: 100px; -} -.main-martor { - margin: 1em 0; - position: relative; -} -.main-martor .modal-header { - padding: 10px 1rem; -} -.main-martor .modal-header h5 { - font-size: 16px; -} -.main-martor .upload-progress { - position: absolute; - z-index: 100; - width: 100%; - height: 100%; - padding-top: 5em; - background: rgba(0,0,0,.85); - color: #fff; -} - -.martor-toolbar { - position: absolute; - z-index: 100; - right: 0; - top: 0; -} -.enable-living .martor-toolbar { - position: relative; -} - -.martor-toolbar .markdown-image-upload { - position: relative; - overflow: hidden; -} -.martor-toolbar .markdown-image-upload input[type=file] { - position: absolute; - top: 0; - right: 0; - min-width: 100%; - min-height: 100%; - font-size: 25px; - padding: 0; - padding-left: 35px; - text-align: right; - filter: alpha(opacity=0); - opacity: 0; - outline: none; - cursor: inherit; - display: block; -} - -.emoji-loader-init { - min-height: 200px!important; - padding-top: 4em; -} -.emoji-content-body { - font-size: 12px; -} -.insert-emoji { - cursor: pointer -} - -.table.markdown-reference { - font-size: 12px; -} -.table.markdown-reference h1 { - font-size: 2em; -} -.table.markdown-reference h2 { - font-size: 1.5em; -} -.table.markdown-reference ul, -.table.markdown-reference ol { - padding-left: 1rem!important; -} - -div.martor-preview { - padding: 1rem; - overflow: auto; - background: #fdfdfd; -} - -div.martor-preview-stale { - background: repeating-linear-gradient(-45deg, #fff, #fff 10px, #f8f8f8 10px, #f8f8f8 20px) !important; -} - -/* Nav tabs */ -.main-martor .nav-tabs { - border-bottom: 2px solid #dee2e6; -} -.main-martor .nav-tabs .nav-link:hover, -.main-martor .nav-tabs .nav-link:focus, -.main-martor .nav-tabs .nav-link:hover { - border-color: transparent; -} -.main-martor .nav-tabs .nav-item.show .nav-link, -.main-martor .nav-tabs .nav-link.active, -.main-martor .nav-tabs .nav-link.active:hover { - border-color: transparent; - border-bottom: 2px solid #333; - color: #495057; -} -.main-martor .tab-pane { - position: relative; -} -.icon.expand-editor { - position: absolute; - bottom: -8px; - right: 8px; - z-index: 100; -} -.no-border { - border: none!important; -} - -/* live preview */ -div.enable-living .martor-preview { - display: block!important; - opacity: unset!important; - margin-top: 1em!important; - border: 1px solid #efefef!important; - border-radius: .28571429rem!important; -} -div.enable-living .tab-martor-menu a.nav-link { - display: none!important; -} - -/* Scroll Bar */ -.section-martor ::-webkit-scrollbar-track { - -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); - border-radius: 10px; - background-color: #F5F5F5; -} -.section-martor ::-webkit-scrollbar { - height: 6px; - width: 6px; - background-color: #F5F5F5; -} -.section-martor ::-webkit-scrollbar-thumb { - border-radius: 10px; - -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3); - background-color: #555; -} -.ace_scrollbar-v { - cursor: ns-resize; -} - -/* Full Screen Mode */ -.main-martor-fullscreen { - background: #fff; - position: fixed; - z-index: 9999; - max-height: 100%; - height: 100%; - width: 100%; - margin: 0; - left: 0; - top: 0; -} -.main-martor-fullscreen .fields.martor-toolbar { - border-bottom: 1px solid #ddd; - margin: 0; -} -.main-martor-fullscreen .section-martor { - height: 90%; - position: relative; -} - -/* Preview */ -.marked-emoji, -div.martor-preview .marked-emoji {max-width: 20px} -div.martor-preview{font-size:14px;line-height:1.6;} -div.martor-preview>*:first-child{margin-top:0 !important} -div.martor-preview>*:last-child{margin-bottom:20px !important} -div.martor-preview a.absent{color:#c00} -div.martor-preview a.anchor{display:block;padding-left:30px;margin-left:-30px;cursor:pointer;position:absolute;top:0;left:0;bottom:0} -div.martor-preview h1, -div.martor-preview h2, -div.martor-preview h3, -div.martor-preview h4, -div.martor-preview h5, -div.martor-preview h6{margin:20px 0 10px;padding:0;font-weight:bold !important;-webkit-font-smoothing:antialiased;cursor:text;position:relative;background:none;} - -div.martor-preview h1:hover a.anchor, -div.martor-preview h2:hover a.anchor, -div.martor-preview h3:hover a.anchor, -div.martor-preview h4:hover a.anchor, -div.martor-preview h5:hover a.anchor, -div.martor-preview h6:hover a.anchor{text-decoration:none;line-height:1;padding-left:0;margin-left:-22px;top:15%} - -div.martor-preview h1 tt, -div.martor-preview h1 code, -div.martor-preview h2 tt, -div.martor-preview h2 code, -div.martor-preview h3 tt, -div.martor-preview h3 code, -div.martor-preview h4 tt, -div.martor-preview h4 code, -div.martor-preview h5 tt, -div.martor-preview h5 code, -div.martor-preview h6 tt, -div.martor-preview h6 code{font-size:inherit} - -div.martor-preview h1{font-size:28px !important;color:#000 !important} -div.martor-preview h2{font-size:24px !important;color:#000 !important} -div.martor-preview h3{font-size:18px !important;} -div.martor-preview h4{font-size:16px !important;} -div.martor-preview h5{font-size:14px !important;text-transform:none !important} -div.martor-preview h6{color:#777;font-size:14px} -div.martor-preview p, -div.martor-preview blockquote, -div.martor-preview ul, -div.martor-preview ol, -div.martor-preview dl, -div.martor-preview table, -div.martor-preview pre{margin:15px 0} -div.martor-preview hr{ - background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OENDRjNBN0E2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OENDRjNBN0I2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Q0NGM0E3ODY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Q0NGM0E3OTY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqqezsUAAAAfSURBVHjaYmRABcYwBiM2QSA4y4hNEKYDQxAEAAIMAHNGAzhkPOlYAAAAAElFTkSuQmCC) repeat-x 0 0; - border:0 none; - color:#ccc; - height:4px; - padding:0 -} -div.martor-preview>h2:first-child, -div.martor-preview>h1:first-child, -div.martor-preview>h1:first-child+h2, -div.martor-preview>h3:first-child, -div.martor-preview>h4:first-child, -div.martor-preview>h5:first-child, -div.martor-preview>h6:first-child{margin-top:0;padding-top:0} -div.martor-preview a:first-child h1, -div.martor-preview a:first-child h2, -div.martor-preview a:first-child h3, -div.martor-preview a:first-child h4, -div.martor-preview a:first-child h5, -div.martor-preview a:first-child h6{margin-top:0;padding-top:0} -div.martor-preview h1+p, -div.martor-preview h2+p, -div.martor-preview h3+p, -div.martor-preview h4+p, -div.martor-preview h5+p, -div.martor-preview h6+p{margin-top:0} -div.martor-preview li p.first{display:inline-block} -div.martor-preview ul li {list-style: disc;} -div.martor-preview ul, -div.martor-preview ol{padding-left:30px} -div.martor-preview ul.no-list, -div.martor-preview ol.no-list{list-style-type:none;padding:0} -div.martor-preview ul li>:first-child, -div.martor-preview ul li ul:first-of-type, -div.martor-preview ol li>:first-child, -div.martor-preview ol li ul:first-of-type{margin-top:0px} -div.martor-preview ul ul, -div.martor-preview ul ol, -div.martor-preview ol ol, -div.martor-preview ol ul{margin-bottom:0} -div.martor-preview dl{padding:0} -div.martor-preview dl dt{font-size:14px;font-weight:bold;font-style:italic;padding:0;margin:15px 0 5px} -div.martor-preview dl dt:first-child{padding:0} -div.martor-preview dl dt>:first-child{margin-top:0px} -div.martor-preview dl dt>:last-child{margin-bottom:0px} -div.martor-preview dl dd{margin:0 0 15px;padding:0 15px} -div.martor-preview dl dd>:first-child{margin-top:0px} -div.martor-preview dl dd>:last-child{margin-bottom:0px} -div.martor-preview blockquote{border-left:4px solid #DDD;padding:5px 15px;color:#777;background-color: #fff} -div.martor-preview blockquote>:first-child{margin-top:0px} -div.martor-preview blockquote>:last-child{margin-bottom:0px} -div.martor-preview table th{font-weight:bold} -div.martor-preview table th, -div.martor-preview table td{border:1px solid #ccc;padding:6px 13px} -div.martor-preview table tr{border-top:1px solid #ccc;background-color:#fff} -div.martor-preview table tr:nth-child(2n){background-color:#f8f8f8} -div.martor-preview img, div.martor-preview p img{max-width:100%;-moz-box-sizing:border-box;box-sizing:border-box} -div.martor-preview span.frame{display:block;overflow:hidden} -div.martor-preview span.frame>span{border:1px solid #ddd;display:block;float:left;overflow:hidden;margin:13px 0 0;padding:7px;width:auto} -div.martor-preview span.frame span img{display:block;float:left} -div.martor-preview span.frame span span{clear:both;color:#333;display:block;padding:5px 0 0} -div.martor-preview span.align-center{display:block;overflow:hidden;clear:both} -div.martor-preview span.align-center>span{display:block;overflow:hidden;margin:13px auto 0;text-align:center} -div.martor-preview span.align-center span img{margin:0 auto;text-align:center} -div.martor-preview span.align-right{display:block;overflow:hidden;clear:both} -div.martor-preview span.align-right>span{display:block;overflow:hidden;margin:13px 0 0;text-align:right} -div.martor-preview span.align-right span img{margin:0;text-align:right} -div.martor-preview span.float-left{display:block;margin-right:13px;overflow:hidden;float:left} -div.martor-preview span.float-left span{margin:13px 0 0} -div.martor-preview span.float-right{display:block;margin-left:13px;overflow:hidden;float:right} -div.martor-preview span.float-right>span{display:block;overflow:hidden;margin:13px auto 0;text-align:right} -div.martor-preview code, -div.martor-preview tt{margin:0 2px;padding:0px 5px;border:1px solid #eaeaea;background-color:#f8f8f8;border-radius:3px} -div.martor-preview code{white-space:nowrap} -div.martor-preview pre>code{margin:0;padding:0;white-space:pre;border:none;background:transparent} -div.martor-preview .highlight pre, -div.martor-preview pre{border: 1px solid #f0f0f0;padding: 16px;overflow: auto;font-size: 85%;line-height: 1.45;background-color: #f6f8fa;border-radius: 3px} -div.martor-preview pre code, -div.martor-preview pre tt{margin:0;padding:0;background-color:transparent;border:none} diff --git a/static/MarkDown-Editor/martor/css/martor.bootstrap.min.css b/static/MarkDown-Editor/martor/css/martor.bootstrap.min.css deleted file mode 100644 index d9e96b0..0000000 --- a/static/MarkDown-Editor/martor/css/martor.bootstrap.min.css +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Name : Martor v1.6.2 - * Created by : Agus Makmun (Summon Agus) - * Release date : 07-Apr-2021 - * License : GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - * Repository : https://github.com/agusmakmun/django-markdown-editor -**/ -body.overflow{overflow:hidden!important}.martor{height:500px;max-height:500px}.martor-field{width:100%;height:250px;min-height:100px}.main-martor{margin:1em 0;position:relative}.main-martor .modal-header{padding:10px 1rem}.main-martor .modal-header h5{font-size:16px}.main-martor .upload-progress{position:absolute;z-index:100;width:100%;height:100%;padding-top:5em;background:rgba(0,0,0,.85);color:#fff}.martor-toolbar{position:absolute;z-index:100;right:0;top:0}.enable-living .martor-toolbar{position:relative}.martor-toolbar .markdown-image-upload{position:relative;overflow:hidden}.martor-toolbar .markdown-image-upload input[type=file]{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:25px;padding:0 0 0 35px;text-align:right;filter: alpha(opacity=0);opacity:0;outline:none;cursor:inherit;display:block}.emoji-loader-init{min-height:200px!important;padding-top:4em}.emoji-content-body{font-size:12px}.insert-emoji{cursor:pointer}.table.markdown-reference{font-size:12px}.table.markdown-reference h1{font-size:2em}.table.markdown-reference h2{font-size:1.5em}.table.markdown-reference ol,.table.markdown-reference ul{padding-left:1rem!important}div.martor-preview{padding:1rem;overflow:auto;background:#fdfdfd}div.martor-preview-stale{background:repeating-linear-gradient(-45deg, #fff, #fff 10px, #f8f8f8 10px, #f8f8f8 20px) !important}.main-martor .nav-tabs{border-bottom:2px solid #dee2e6}.main-martor .nav-tabs .nav-link:focus,.main-martor .nav-tabs .nav-link:hover,.main-martor .nav-tabs .nav-link:hover{border-color:transparent}.main-martor .nav-tabs .nav-item.show .nav-link,.main-martor .nav-tabs .nav-link.active,.main-martor .nav-tabs .nav-link.active:hover{border-color:transparent;border-bottom:2px solid #333;color:#495057}.main-martor .tab-pane{position:relative}.icon.expand-editor{position:absolute;bottom:-8px;right:8px;z-index:100}.no-border{border:none!important}div.enable-living .martor-preview{display:block!important;opacity:unset!important;margin-top:1em!important;border:1px solid #efefef!important;border-radius:0.28571429rem!important}div.enable-living .tab-martor-menu a.nav-link{display:none!important}.section-martor::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.3);border-radius:10px;background-color:#F5F5F5}.section-martor::-webkit-scrollbar{height:6px;width:6px;background-color:#F5F5F5}.section-martor::-webkit-scrollbar-thumb{border-radius:10px;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:#555}.ace_scrollbar-v{cursor:ns-resize}.main-martor-fullscreen{background:#fff;position:fixed;z-index:9999;max-height:100%;height:100%;width:100%;margin:0;left:0;top:0}.main-martor-fullscreen .fields.martor-toolbar{border-bottom:1px solid #ddd;margin:0}.main-martor-fullscreen .section-martor{height:90%;position:relative}.marked-emoji,div.martor-preview .marked-emoji{max-width:20px}div.martor-preview{font-size:14px;line-height:1.6}div.martor-preview > *:first-child{margin-top:0 !important}div.martor-preview > *:last-child{margin-bottom:20px !important}div.martor-preview a.absent{color:#c00}div.martor-preview a.anchor{display:block;padding-left:30px;margin-left:-30px;cursor:pointer;position:absolute;top:0;left:0;bottom:0}div.martor-preview h1,div.martor-preview h2,div.martor-preview h3,div.martor-preview h4,div.martor-preview h5,div.martor-preview h6{margin:20px 0 10px;padding:0;font-weight:bold !important;-webkit-font-smoothing:antialiased;cursor:text;position:relative;background:none}div.martor-preview h1:hover a.anchor,div.martor-preview h2:hover a.anchor,div.martor-preview h3:hover a.anchor,div.martor-preview h4:hover a.anchor,div.martor-preview h5:hover a.anchor,div.martor-preview h6:hover a.anchor{text-decoration:none;line-height:1;padding-left:0;margin-left:-22px;top:15%}div.martor-preview h1 code,div.martor-preview h1 tt,div.martor-preview h2 code,div.martor-preview h2 tt,div.martor-preview h3 code,div.martor-preview h3 tt,div.martor-preview h4 code,div.martor-preview h4 tt,div.martor-preview h5 code,div.martor-preview h5 tt,div.martor-preview h6 code,div.martor-preview h6 tt{font-size:inherit}div.martor-preview h1{font-size:28px !important;color:#000 !important}div.martor-preview h2{font-size:24px !important;color:#000 !important}div.martor-preview h3{font-size:18px !important}div.martor-preview h4{font-size:16px !important}div.martor-preview h5{font-size:14px !important;text-transform:none !important}div.martor-preview h6{color:#777;font-size:14px}div.martor-preview blockquote,div.martor-preview dl,div.martor-preview ol,div.martor-preview p,div.martor-preview pre,div.martor-preview table,div.martor-preview ul{margin:15px 0}div.martor-preview hr{background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OENDRjNBN0E2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OENDRjNBN0I2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Q0NGM0E3ODY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Q0NGM0E3OTY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqqezsUAAAAfSURBVHjaYmRABcYwBiM2QSA4y4hNEKYDQxAEAAIMAHNGAzhkPOlYAAAAAElFTkSuQmCC") repeat-x 0 0;border:0 none;color:#ccc;height:4px;padding:0}div.martor-preview > h1:first-child,div.martor-preview > h1:first-child+h2,div.martor-preview > h2:first-child,div.martor-preview > h3:first-child,div.martor-preview > h4:first-child,div.martor-preview > h5:first-child,div.martor-preview > h6:first-child{margin-top:0;padding-top:0}div.martor-preview a:first-child h1,div.martor-preview a:first-child h2,div.martor-preview a:first-child h3,div.martor-preview a:first-child h4,div.martor-preview a:first-child h5,div.martor-preview a:first-child h6{margin-top:0;padding-top:0}div.martor-preview h1+p,div.martor-preview h2+p,div.martor-preview h3+p,div.martor-preview h4+p,div.martor-preview h5+p,div.martor-preview h6+p{margin-top:0}div.martor-preview li p.first{display:inline-block}div.martor-preview ul li{list-style:disc}div.martor-preview ol,div.martor-preview ul{padding-left:30px}div.martor-preview ol.no-list,div.martor-preview ul.no-list{list-style-type:none;padding:0}div.martor-preview ol li > :first-child,div.martor-preview ol li ul:first-of-type,div.martor-preview ul li > :first-child,div.martor-preview ul li ul:first-of-type{margin-top:0}div.martor-preview ol ol,div.martor-preview ol ul,div.martor-preview ul ol,div.martor-preview ul ul{margin-bottom:0}div.martor-preview dl{padding:0}div.martor-preview dl dt{font-size:14px;font-weight:bold;font-style:italic;padding:0;margin:15px 0 5px}div.martor-preview dl dt:first-child{padding:0}div.martor-preview dl dt > :first-child{margin-top:0}div.martor-preview dl dt > :last-child{margin-bottom:0}div.martor-preview dl dd{margin:0 0 15px;padding:0 15px}div.martor-preview dl dd > :first-child{margin-top:0}div.martor-preview dl dd > :last-child{margin-bottom:0}div.martor-preview blockquote{border-left:4px solid #DDD;padding:5px 15px;color:#777;background-color:#fff}div.martor-preview blockquote > :first-child{margin-top:0}div.martor-preview blockquote > :last-child{margin-bottom:0}div.martor-preview table th{font-weight:bold}div.martor-preview table td,div.martor-preview table th{border:1px solid #ccc;padding:6px 13px}div.martor-preview table tr{border-top:1px solid #ccc;background-color:#fff}div.martor-preview table tr:nth-child(2n){background-color:#f8f8f8}div.martor-preview img,div.martor-preview p img{max-width:100%;-moz-box-sizing:border-box;box-sizing:border-box}div.martor-preview span.frame{display:block;overflow:hidden}div.martor-preview span.frame > span{border:1px solid #ddd;display:block;float:left;overflow:hidden;margin:13px 0 0;padding:7px;width:auto}div.martor-preview span.frame span img{display:block;float:left}div.martor-preview span.frame span span{clear:both;color:#333;display:block;padding:5px 0 0}div.martor-preview span.align-center{display:block;overflow:hidden;clear:both}div.martor-preview span.align-center > span{display:block;overflow:hidden;margin:13px auto 0;text-align:center}div.martor-preview span.align-center span img{margin:0 auto;text-align:center}div.martor-preview span.align-right{display:block;overflow:hidden;clear:both}div.martor-preview span.align-right > span{display:block;overflow:hidden;margin:13px 0 0;text-align:right}div.martor-preview span.align-right span img{margin:0;text-align:right}div.martor-preview span.float-left{display:block;margin-right:13px;overflow:hidden;float:left}div.martor-preview span.float-left span{margin:13px 0 0}div.martor-preview span.float-right{display:block;margin-left:13px;overflow:hidden;float:right}div.martor-preview span.float-right > span{display:block;overflow:hidden;margin:13px auto 0;text-align:right}div.martor-preview code,div.martor-preview tt{margin:0 2px;padding:0 5px;border:1px solid #eaeaea;background-color:#f8f8f8;border-radius:3px}div.martor-preview code{white-space:nowrap}div.martor-preview pre > code{margin:0;padding:0;white-space:pre;border:none;background:transparent}div.martor-preview .highlight pre,div.martor-preview pre{border:1px solid #f0f0f0;padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f6f8fa;border-radius:3px}div.martor-preview pre code,div.martor-preview pre tt{margin:0;padding:0;background-color:transparent;border:none} diff --git a/static/MarkDown-Editor/martor/css/martor.semantic.css b/static/MarkDown-Editor/martor/css/martor.semantic.css deleted file mode 100644 index 6c81494..0000000 --- a/static/MarkDown-Editor/martor/css/martor.semantic.css +++ /dev/null @@ -1,254 +0,0 @@ -/* This if inside django admin */ -.submit-row a { - box-sizing: content-box; -} -body.overflow { - overflow: hidden!important; -} - -/* Scroll Bar */ -.section-martor ::-webkit-scrollbar-track { - -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); - border-radius: 10px; - background-color: #F5F5F5; -} -.section-martor ::-webkit-scrollbar { - height: 6px; - width: 6px; - background-color: #F5F5F5; -} -.section-martor ::-webkit-scrollbar-thumb { - border-radius: 10px; - -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3); - background-color: #555; -} -.ace_scrollbar-v { - cursor: ns-resize; -} - -.main-martor {} -.martor-toolbar { - padding: 0 .85714286em!important; - padding-bottom: 4px!important; -} -.martor-toolbar .ui.icon .markdown-image-upload { - position: relative; - overflow: hidden; -} -.martor-toolbar .ui.icon .markdown-image-upload input[type=file] { - position: absolute; - top: 0; - right: 0; - min-width: 100%; - min-height: 100%; - font-size: 25px; - padding: 0; - padding-left: 35px; - text-align: right; - filter: alpha(opacity=0); - opacity: 0; - outline: none; - cursor: inherit; - display: block; -} -.emoji-loader-init { - min-height: 200px!important; -} -.insert-emoji {cursor: pointer} - -/* Full Screen Mode */ -.main-martor-fullscreen { - background: #fff; - position: fixed; - z-index: 9999; - max-height: 100%; - height: 100%; - width: 100%; - margin: 0; - left: 0; - top: 0; -} -.main-martor-fullscreen .fields.martor-toolbar { - border-bottom: 1px solid #ddd; - margin: 0; -} -.main-martor-fullscreen .section-martor { - height: 90%; - position: relative; -} -/* EOF */ - -.marked-emoji, -div.martor-preview .marked-emoji {max-width: 20px} -div.martor-preview{font-size:14px;line-height:1.6;} -div.martor-preview>*:first-child{margin-top:0 !important} -div.martor-preview>*:last-child{margin-bottom:20px !important} -div.martor-preview a.absent{color:#c00} -div.martor-preview a.anchor{display:block;padding-left:30px;margin-left:-30px;cursor:pointer;position:absolute;top:0;left:0;bottom:0} -div.martor-preview h1, -div.martor-preview h2, -div.martor-preview h3, -div.martor-preview h4, -div.martor-preview h5, -div.martor-preview h6{margin:20px 0 10px;padding:0;font-weight:bold !important;-webkit-font-smoothing:antialiased;cursor:text;position:relative;background:none;} - -div.martor-preview h1:hover a.anchor, -div.martor-preview h2:hover a.anchor, -div.martor-preview h3:hover a.anchor, -div.martor-preview h4:hover a.anchor, -div.martor-preview h5:hover a.anchor, -div.martor-preview h6:hover a.anchor{text-decoration:none;line-height:1;padding-left:0;margin-left:-22px;top:15%} - -div.martor-preview h1 tt, -div.martor-preview h1 code, -div.martor-preview h2 tt, -div.martor-preview h2 code, -div.martor-preview h3 tt, -div.martor-preview h3 code, -div.martor-preview h4 tt, -div.martor-preview h4 code, -div.martor-preview h5 tt, -div.martor-preview h5 code, -div.martor-preview h6 tt, -div.martor-preview h6 code{font-size:inherit} - -div.martor-preview h1{font-size:28px !important;color:#000 !important} -div.martor-preview h2{font-size:24px !important;color:#000 !important} -div.martor-preview h3{font-size:18px !important;} -div.martor-preview h4{font-size:16px !important;} -div.martor-preview h5{font-size:14px !important;text-transform:none !important} -div.martor-preview h6{color:#777;font-size:14px} -div.martor-preview p, -div.martor-preview blockquote, -div.martor-preview ul, -div.martor-preview ol, -div.martor-preview dl, -div.martor-preview table, -div.martor-preview pre{margin:15px 0} -div.martor-preview hr{ - background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OENDRjNBN0E2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OENDRjNBN0I2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Q0NGM0E3ODY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Q0NGM0E3OTY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqqezsUAAAAfSURBVHjaYmRABcYwBiM2QSA4y4hNEKYDQxAEAAIMAHNGAzhkPOlYAAAAAElFTkSuQmCC) repeat-x 0 0; - border:0 none; - color:#ccc; - height:4px; - padding:0 -} -div.martor-preview>h2:first-child, -div.martor-preview>h1:first-child, -div.martor-preview>h1:first-child+h2, -div.martor-preview>h3:first-child, -div.martor-preview>h4:first-child, -div.martor-preview>h5:first-child, -div.martor-preview>h6:first-child{margin-top:0;padding-top:0} -div.martor-preview a:first-child h1, -div.martor-preview a:first-child h2, -div.martor-preview a:first-child h3, -div.martor-preview a:first-child h4, -div.martor-preview a:first-child h5, -div.martor-preview a:first-child h6{margin-top:0;padding-top:0} -div.martor-preview h1+p, -div.martor-preview h2+p, -div.martor-preview h3+p, -div.martor-preview h4+p, -div.martor-preview h5+p, -div.martor-preview h6+p{margin-top:0} -div.martor-preview li p.first{display:inline-block} -div.martor-preview ul li {list-style: disc;} -div.martor-preview ul, -div.martor-preview ol{padding-left:30px} -div.martor-preview ul.no-list, -div.martor-preview ol.no-list{list-style-type:none;padding:0} -div.martor-preview ul li>:first-child, -div.martor-preview ul li ul:first-of-type, -div.martor-preview ol li>:first-child, -div.martor-preview ol li ul:first-of-type{margin-top:0px} -div.martor-preview ul ul, -div.martor-preview ul ol, -div.martor-preview ol ol, -div.martor-preview ol ul{margin-bottom:0} -div.martor-preview dl{padding:0} -div.martor-preview dl dt{font-size:14px;font-weight:bold;font-style:italic;padding:0;margin:15px 0 5px} -div.martor-preview dl dt:first-child{padding:0} -div.martor-preview dl dt>:first-child{margin-top:0px} -div.martor-preview dl dt>:last-child{margin-bottom:0px} -div.martor-preview dl dd{margin:0 0 15px;padding:0 15px} -div.martor-preview dl dd>:first-child{margin-top:0px} -div.martor-preview dl dd>:last-child{margin-bottom:0px} -div.martor-preview blockquote{border-left:4px solid #DDD;padding:5px 15px;color:#777;background-color: #fff} -div.martor-preview blockquote>:first-child{margin-top:0px} -div.martor-preview blockquote>:last-child{margin-bottom:0px} -div.martor-preview table th{font-weight:bold} -div.martor-preview table th, -div.martor-preview table td{border:1px solid #ccc;padding:6px 13px} -div.martor-preview table tr{border-top:1px solid #ccc;background-color:#fff} -div.martor-preview table tr:nth-child(2n){background-color:#f8f8f8} -div.martor-preview img, div.martor-preview p img{max-width:100%;-moz-box-sizing:border-box;box-sizing:border-box} -div.martor-preview span.frame{display:block;overflow:hidden} -div.martor-preview span.frame>span{border:1px solid #ddd;display:block;float:left;overflow:hidden;margin:13px 0 0;padding:7px;width:auto} -div.martor-preview span.frame span img{display:block;float:left} -div.martor-preview span.frame span span{clear:both;color:#333;display:block;padding:5px 0 0} -div.martor-preview span.align-center{display:block;overflow:hidden;clear:both} -div.martor-preview span.align-center>span{display:block;overflow:hidden;margin:13px auto 0;text-align:center} -div.martor-preview span.align-center span img{margin:0 auto;text-align:center} -div.martor-preview span.align-right{display:block;overflow:hidden;clear:both} -div.martor-preview span.align-right>span{display:block;overflow:hidden;margin:13px 0 0;text-align:right} -div.martor-preview span.align-right span img{margin:0;text-align:right} -div.martor-preview span.float-left{display:block;margin-right:13px;overflow:hidden;float:left} -div.martor-preview span.float-left span{margin:13px 0 0} -div.martor-preview span.float-right{display:block;margin-left:13px;overflow:hidden;float:right} -div.martor-preview span.float-right>span{display:block;overflow:hidden;margin:13px auto 0;text-align:right} -div.martor-preview code, -div.martor-preview tt{margin:0 2px;padding:0px 5px;border:1px solid #eaeaea;background-color:#f8f8f8;border-radius:3px} -div.martor-preview code{white-space:nowrap} -div.martor-preview pre>code{margin:0;padding:0;white-space:pre;border:none;background:transparent} -div.martor-preview .highlight pre, -div.martor-preview pre{border: 1px solid #f0f0f0;padding: 16px;overflow: auto;font-size: 85%;line-height: 1.45;background-color: #f6f8fa;border-radius: 3px} -div.martor-preview pre code, -div.martor-preview pre tt{margin:0;padding:0;background-color:transparent;border:none} - - -.section-martor { - -} - -.section-martor div[data-tab="editor-tab-description"] { - padding: 0 !important; -} - -.martor { - height: 500px; - max-height: 500px; -} -.martor-field { - width: 100%; - height: 250px; - min-height: 100px; -} - -div.martor-preview { - padding: 1rem; - overflow: auto; - background: #F9F9F9; -} - -div.martor-preview-stale { - background: repeating-linear-gradient(-45deg, #fff, #fff 10px, #f8f8f8 10px, #f8f8f8 20px) !important; -} - -.icon.expand-editor { - position: absolute; - bottom: .8em; - right: 0; -} -.no-border { - border: none!important; -} -/* live preview */ -div.enable-living .martor-preview { - display: block!important; - opacity: unset!important; - border: 1px solid #efefef!important; - border-radius: .28571429rem!important; -} -div.enable-living .tab-martor-menu a.item { - display: none!important; -} diff --git a/static/MarkDown-Editor/martor/css/martor.semantic.min.css b/static/MarkDown-Editor/martor/css/martor.semantic.min.css deleted file mode 100644 index 9d3fec2..0000000 --- a/static/MarkDown-Editor/martor/css/martor.semantic.min.css +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Name : Martor v1.6.2 - * Created by : Agus Makmun (Summon Agus) - * Release date : 07-Apr-2021 - * License : GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - * Repository : https://github.com/agusmakmun/django-markdown-editor -**/ -.submit-row a{box-sizing:content-box}body.overflow{overflow:hidden!important}.section-martor::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.3);border-radius:10px;background-color:#F5F5F5}.section-martor::-webkit-scrollbar{height:6px;width:6px;background-color:#F5F5F5}.section-martor::-webkit-scrollbar-thumb{border-radius:10px;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:#555}.ace_scrollbar-v{cursor:ns-resize}.main-martor{}.martor-toolbar{padding:0 0.85714286em!important 4px!important !important}.martor-toolbar .ui.icon .markdown-image-upload{position:relative;overflow:hidden}.martor-toolbar .ui.icon .markdown-image-upload input[type=file]{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:25px;padding:0 0 0 35px;text-align:right;filter: alpha(opacity=0);opacity:0;outline:none;cursor:inherit;display:block}.emoji-loader-init{min-height:200px!important}.insert-emoji{cursor:pointer}.main-martor-fullscreen{background:#fff;position:fixed;z-index:9999;max-height:100%;height:100%;width:100%;margin:0;left:0;top:0}.main-martor-fullscreen .fields.martor-toolbar{border-bottom:1px solid #ddd;margin:0}.main-martor-fullscreen .section-martor{height:90%;position:relative}.marked-emoji,div.martor-preview .marked-emoji{max-width:20px}div.martor-preview{font-size:14px;line-height:1.6}div.martor-preview > *:first-child{margin-top:0 !important}div.martor-preview > *:last-child{margin-bottom:20px !important}div.martor-preview a.absent{color:#c00}div.martor-preview a.anchor{display:block;padding-left:30px;margin-left:-30px;cursor:pointer;position:absolute;top:0;left:0;bottom:0}div.martor-preview h1,div.martor-preview h2,div.martor-preview h3,div.martor-preview h4,div.martor-preview h5,div.martor-preview h6{margin:20px 0 10px;padding:0;font-weight:bold !important;-webkit-font-smoothing:antialiased;cursor:text;position:relative;background:none}div.martor-preview h1:hover a.anchor,div.martor-preview h2:hover a.anchor,div.martor-preview h3:hover a.anchor,div.martor-preview h4:hover a.anchor,div.martor-preview h5:hover a.anchor,div.martor-preview h6:hover a.anchor{text-decoration:none;line-height:1;padding-left:0;margin-left:-22px;top:15%}div.martor-preview h1 code,div.martor-preview h1 tt,div.martor-preview h2 code,div.martor-preview h2 tt,div.martor-preview h3 code,div.martor-preview h3 tt,div.martor-preview h4 code,div.martor-preview h4 tt,div.martor-preview h5 code,div.martor-preview h5 tt,div.martor-preview h6 code,div.martor-preview h6 tt{font-size:inherit}div.martor-preview h1{font-size:28px !important;color:#000 !important}div.martor-preview h2{font-size:24px !important;color:#000 !important}div.martor-preview h3{font-size:18px !important}div.martor-preview h4{font-size:16px !important}div.martor-preview h5{font-size:14px !important;text-transform:none !important}div.martor-preview h6{color:#777;font-size:14px}div.martor-preview blockquote,div.martor-preview dl,div.martor-preview ol,div.martor-preview p,div.martor-preview pre,div.martor-preview table,div.martor-preview ul{margin:15px 0}div.martor-preview hr{background:transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OENDRjNBN0E2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OENDRjNBN0I2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Q0NGM0E3ODY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Q0NGM0E3OTY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqqezsUAAAAfSURBVHjaYmRABcYwBiM2QSA4y4hNEKYDQxAEAAIMAHNGAzhkPOlYAAAAAElFTkSuQmCC") repeat-x 0 0;border:0 none;color:#ccc;height:4px;padding:0}div.martor-preview > h1:first-child,div.martor-preview > h1:first-child+h2,div.martor-preview > h2:first-child,div.martor-preview > h3:first-child,div.martor-preview > h4:first-child,div.martor-preview > h5:first-child,div.martor-preview > h6:first-child{margin-top:0;padding-top:0}div.martor-preview a:first-child h1,div.martor-preview a:first-child h2,div.martor-preview a:first-child h3,div.martor-preview a:first-child h4,div.martor-preview a:first-child h5,div.martor-preview a:first-child h6{margin-top:0;padding-top:0}div.martor-preview h1+p,div.martor-preview h2+p,div.martor-preview h3+p,div.martor-preview h4+p,div.martor-preview h5+p,div.martor-preview h6+p{margin-top:0}div.martor-preview li p.first{display:inline-block}div.martor-preview ul li{list-style:disc}div.martor-preview ol,div.martor-preview ul{padding-left:30px}div.martor-preview ol.no-list,div.martor-preview ul.no-list{list-style-type:none;padding:0}div.martor-preview ol li > :first-child,div.martor-preview ol li ul:first-of-type,div.martor-preview ul li > :first-child,div.martor-preview ul li ul:first-of-type{margin-top:0}div.martor-preview ol ol,div.martor-preview ol ul,div.martor-preview ul ol,div.martor-preview ul ul{margin-bottom:0}div.martor-preview dl{padding:0}div.martor-preview dl dt{font-size:14px;font-weight:bold;font-style:italic;padding:0;margin:15px 0 5px}div.martor-preview dl dt:first-child{padding:0}div.martor-preview dl dt > :first-child{margin-top:0}div.martor-preview dl dt > :last-child{margin-bottom:0}div.martor-preview dl dd{margin:0 0 15px;padding:0 15px}div.martor-preview dl dd > :first-child{margin-top:0}div.martor-preview dl dd > :last-child{margin-bottom:0}div.martor-preview blockquote{border-left:4px solid #DDD;padding:5px 15px;color:#777;background-color:#fff}div.martor-preview blockquote > :first-child{margin-top:0}div.martor-preview blockquote > :last-child{margin-bottom:0}div.martor-preview table th{font-weight:bold}div.martor-preview table td,div.martor-preview table th{border:1px solid #ccc;padding:6px 13px}div.martor-preview table tr{border-top:1px solid #ccc;background-color:#fff}div.martor-preview table tr:nth-child(2n){background-color:#f8f8f8}div.martor-preview img,div.martor-preview p img{max-width:100%;-moz-box-sizing:border-box;box-sizing:border-box}div.martor-preview span.frame{display:block;overflow:hidden}div.martor-preview span.frame > span{border:1px solid #ddd;display:block;float:left;overflow:hidden;margin:13px 0 0;padding:7px;width:auto}div.martor-preview span.frame span img{display:block;float:left}div.martor-preview span.frame span span{clear:both;color:#333;display:block;padding:5px 0 0}div.martor-preview span.align-center{display:block;overflow:hidden;clear:both}div.martor-preview span.align-center > span{display:block;overflow:hidden;margin:13px auto 0;text-align:center}div.martor-preview span.align-center span img{margin:0 auto;text-align:center}div.martor-preview span.align-right{display:block;overflow:hidden;clear:both}div.martor-preview span.align-right > span{display:block;overflow:hidden;margin:13px 0 0;text-align:right}div.martor-preview span.align-right span img{margin:0;text-align:right}div.martor-preview span.float-left{display:block;margin-right:13px;overflow:hidden;float:left}div.martor-preview span.float-left span{margin:13px 0 0}div.martor-preview span.float-right{display:block;margin-left:13px;overflow:hidden;float:right}div.martor-preview span.float-right > span{display:block;overflow:hidden;margin:13px auto 0;text-align:right}div.martor-preview code,div.martor-preview tt{margin:0 2px;padding:0 5px;border:1px solid #eaeaea;background-color:#f8f8f8;border-radius:3px}div.martor-preview code{white-space:nowrap}div.martor-preview pre > code{margin:0;padding:0;white-space:pre;border:none;background:transparent}div.martor-preview .highlight pre,div.martor-preview pre{border:1px solid #f0f0f0;padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f6f8fa;border-radius:3px}div.martor-preview pre code,div.martor-preview pre tt{margin:0;padding:0;background-color:transparent;border:none}.section-martor{}.section-martor div[data-tab="editor-tab-description"]{padding:0 !important}.martor{height:500px;max-height:500px}.martor-field{width:100%;height:250px;min-height:100px}div.martor-preview{padding:1rem;overflow:auto;background:#F9F9F9}div.martor-preview-stale{background:repeating-linear-gradient(-45deg, #fff, #fff 10px, #f8f8f8 10px, #f8f8f8 20px) !important}.icon.expand-editor{position:absolute;bottom:0.8em;right:0}.no-border{border:none!important}div.enable-living .martor-preview{display:block!important;opacity:unset!important;border:1px solid #efefef!important;border-radius:0.28571429rem!important}div.enable-living .tab-martor-menu a.item{display:none!important} diff --git a/static/MarkDown-Editor/martor/js/martor.bootstrap.js b/static/MarkDown-Editor/martor/js/martor.bootstrap.js deleted file mode 100644 index db7f110..0000000 --- a/static/MarkDown-Editor/martor/js/martor.bootstrap.js +++ /dev/null @@ -1,881 +0,0 @@ -/** - * Name : Martor v1.6.2 - * Created by : Agus Makmun (Summon Agus) - * Release date : 07-Apr-2021 - * License : GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - * Repository : https://github.com/agusmakmun/django-markdown-editor -**/ - -(function ($) { - if (!$) { - $ = django.jQuery; - } - $.fn.martor = function() { - $('.martor').trigger('martor.init'); - - // CSRF code - var getCookie = function(name) { - var cookieValue = null; - var i = 0; - if (document.cookie && document.cookie !== '') { - var cookies = document.cookie.split(';'); - for (i; i < cookies.length; i++) { - var cookie = jQuery.trim(cookies[i]); - // Does this cookie string begin with the name we want? - if (cookie.substring(0, name.length + 1) === (name + '=')) { - cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); - break; - } - } - } - return cookieValue; - }; - - // Each multiple editor fields - this.each(function(i, obj) { - var mainMartor = $(obj); - var field_name = mainMartor.data('field-name'); - var textareaId = $('#id_'+field_name); - var editorId = 'martor-'+field_name; - var editor = ace.edit(editorId); - var editorConfig = JSON.parse(textareaId.data('enable-configs').replace(/'/g, '"')); - - editor.setTheme('ace/theme/github'); - editor.getSession().setMode('ace/mode/markdown'); - editor.getSession().setUseWrapMode(true); - editor.$blockScrolling = Infinity; // prevents ace from logging annoying warnings - editor.renderer.setScrollMargin(10, 10); // set padding - editor.setAutoScrollEditorIntoView(true); - editor.setShowPrintMargin(false); - editor.setOptions({ - enableBasicAutocompletion: true, - enableSnippets: true, - enableLiveAutocompletion: true, - enableMultiselect: false - }); - - if (editorConfig.living == 'true') { - $(obj).addClass('enable-living'); - } - - var emojiWordCompleter = { - getCompletions: function(editor, session, pos, prefix, callback) { - var wordList = typeof(emojis) != "undefined" ? emojis : []; // from `atwho/emojis.min.js` - var obj = editor.getSession().getTokenAt(pos.row, pos.column.count); - if(typeof(obj.value) != "undefined") { - var curTokens = obj.value.split(/\s+/); - var lastToken = curTokens[curTokens.length-1]; - - if (lastToken[0] == ':') { - callback(null, wordList.map(function(word) { - return { - caption: word, - value: word.replace(':', '') + ' ', - meta: 'emoji' // this should return as text only. - }; - })); - } - } - } - } - var mentionWordCompleter = { - getCompletions: function(editor, session, pos, prefix, callback) { - var obj = editor.getSession().getTokenAt(pos.row, pos.column.count); - if(typeof(obj.value) != "undefined") { - var curTokens = obj.value.split(/\s+/); - var lastToken = curTokens[curTokens.length-1]; - - if (lastToken[0] == '@' && lastToken[1] == '[') { - username = lastToken.replace(/([\@\[/\]/])/g, ''); - $.ajax({ - url: textareaId.data('search-users-url'), - data: { - 'username': username, - 'csrfmiddlewaretoken': getCookie('csrftoken') - }, - success: function(data) { - if (data['status'] == 200) { - var wordList = []; - for (var i = 0; i < data['data'].length; i++) { - wordList.push(data['data'][i].username) - } - callback(null, wordList.map(function(word) { - return { - caption: word, - value: word, - meta: 'username' // this should return as text only. - }; - })); - } - }// end success - }); - } - } - } - } - // Set autocomplete for ace editor - if (editorConfig.mention === 'true') { - editor.completers = [emojiWordCompleter, mentionWordCompleter] - }else { - editor.completers = [emojiWordCompleter] - } - - // set css `display:none` fot this textarea. - textareaId.attr({'style': 'display:none'}); - - // assign all `field_name`, uses for a per-single editor. - $(obj).find('.martor-toolbar').find('.markdown-selector').attr({'data-field-name': field_name}); - $(obj).find('.upload-progress').attr({'data-field-name': field_name}); - $(obj).find('.modal-help-guide').attr({'data-field-name': field_name}); - $(obj).find('.modal-emoji').attr({'data-field-name': field_name}); - - // Set if editor has changed. - editor.on('change', function(evt){ - var value = editor.getValue(); - textareaId.val(value); - }); - - // resize the editor using `resizable.min.js` - $('#'+editorId).resizable({ - direction: 'bottom', - stop: function() { - editor.resize(); - } - }); - - // update the preview if this menu is clicked - var currentTab = $('.tab-pane#nav-preview-'+field_name); - var editorTabButton = $('.nav-link#nav-editor-tab-'+field_name); - var previewTabButton = $('.nav-link#nav-preview-tab-'+field_name); - var toolbarButtons = $(this).closest('.tab-martor-menu').find('.martor-toolbar') - - editorTabButton.click(function(){ - // show the `.martor-toolbar` for this current editor if under preview. - $(this).closest('.tab-martor-menu').find('.martor-toolbar').show(); - }); - previewTabButton.click(function() { - $(this).closest('.tab-martor-menu').find('.martor-toolbar').hide(); - }); - - var refreshPreview = function() { - var value = textareaId.val(); - var form = new FormData(); - form.append('content', value); - form.append('csrfmiddlewaretoken', getCookie('csrftoken')); - currentTab.addClass('martor-preview-stale'); - - $.ajax({ - url: textareaId.data('markdownfy-url'), - type: 'POST', - data: form, - processData: false, - contentType: false, - success: function(response) { - if (response) { - currentTab.html(response).removeClass('martor-preview-stale'); - $(document).trigger('martor:preview', [currentTab]); - - if (editorConfig.hljs == 'true') { - $('pre').each(function (i, block) { - hljs.highlightBlock(block); - }); - } - } else { - currentTab.html('

Nothing to preview

'); - } - }, - error: function(response) { - console.log("error", response); - } - }); - }; - - // Refresh the preview unconditionally on first load. - window.onload = function() { - refreshPreview(); - }; - - if (editorConfig.living !== 'true') { - previewTabButton.click(function(){ - // hide the `.martor-toolbar` for this current editor if under preview. - $(this).closest('.tab-martor-menu').find('.martor-toolbar').hide(); - refreshPreview(); - }); - }else { - editor.on('change', refreshPreview); - } - - if (editorConfig.spellcheck == 'true') { - try { - enable_spellcheck(editorId); - }catch (e) { - console.log("Spellcheck lib doesn't installed."); - } - } - - // win/linux: Ctrl+B, mac: Command+B - var markdownToBold = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, ' **** '); - editor.focus(); - editor.selection.moveTo(curpos.row, curpos.column+3); - }else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '**'+text+'**'); - originalRange.end.column += 4; // this because injected from 4 `*` characters. - editor.focus(); - editor.selection.setSelectionRange(originalRange); - } - }; - // win/linux: Ctrl+I, mac: Command+I - var markdownToItalic = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, ' __ '); - editor.focus(); - editor.selection.moveTo(curpos.row, curpos.column+2); - }else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '_'+text+'_'); - originalRange.end.column += 2; // this because injected from 2 `_` characters. - editor.focus(); - editor.selection.setSelectionRange(originalRange); - } - }; - // win/linux: Ctrl+Shift+U - var markdownToUnderscores = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, ' ++++ '); - editor.focus(); - editor.selection.moveTo(curpos.row, curpos.column+3); - }else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '++'+text+'++'); - originalRange.end.column += 4; // this because injected from 4 `*` characters. - editor.focus(); - editor.selection.setSelectionRange(originalRange); - } - }; - // win/linux: Ctrl+Shift+S - var markdownToStrikethrough = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, ' ~~~~ '); - editor.focus(); - editor.selection.moveTo(curpos.row, curpos.column+3); - }else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '~~'+text+'~~'); - originalRange.end.column += 4; // this because injected from 4 `*` characters. - editor.focus(); - editor.selection.setSelectionRange(originalRange); - } - }; - // win/linux: Ctrl+H, mac: Command+H - var markdownToHorizontal = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, '\n\n----------\n\n'); - editor.focus(); - editor.selection.moveTo(curpos.row+4, curpos.column+10); - } - else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '\n\n----------\n\n'+text); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row+4, - originalRange.end.column+10 - ); - } - }; - // win/linux: Ctrl+Alt+1, mac: Command+Option+1 - var markdownToH1 = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, '\n\n# '); - editor.focus(); - editor.selection.moveTo(curpos.row+2, curpos.column+2); - } - else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '\n\n# '+text+'\n'); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row+2, - originalRange.end.column+2 - ); - } - }; - // win/linux: Ctrl+Alt+2, mac: Command+Option+2 - var markdownToH2 = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, '\n\n## '); - editor.focus(); - editor.selection.moveTo(curpos.row+2, curpos.column+3); - } - else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '\n\n## '+text+'\n'); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row+2, - originalRange.end.column+3 - ); - } - }; - // win/linux: Ctrl+Alt+3, mac: Command+Option+3 - var markdownToH3 = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, '\n\n### '); - editor.focus(); - editor.selection.moveTo(curpos.row+2, curpos.column+4); - } - else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '\n\n### '+text+'\n'); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row+2, - originalRange.end.column+4 - ); - } - }; - // win/linux: Ctrl+Alt+P, mac: Command+Option+P - var markdownToPre = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, '\n\n```\n\n```\n'); - editor.focus(); - editor.selection.moveTo(curpos.row+3, curpos.column); - } - else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '\n\n```\n'+text+'\n```\n'); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row+3, - originalRange.end.column+3 - ); - } - }; - // win/linux: Ctrl+Alt+C, mac: Command+Option+C - var markdownToCode = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, ' `` '); - editor.focus(); - editor.selection.moveTo(curpos.row, curpos.column+2); - }else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '`'+text+'`'); - originalRange.end.column += 2; // this because injected from 2 `_` characters. - editor.focus(); - editor.selection.setSelectionRange(originalRange); - } - }; - // win/linux: Ctrl+Q, mac: Command+Q - var markdownToBlockQuote = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, '\n\n> \n'); - editor.focus(); - editor.selection.moveTo(curpos.row+2, curpos.column+2); - } - else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '\n\n> '+text+'\n'); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row+2, - originalRange.end.column+2 - ); - } - }; - // win/linux: Ctrl+U, mac: Command+U - var markdownToUnorderedList = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, '\n\n* '); - editor.focus(); - editor.selection.moveTo(curpos.row+2, curpos.column+2); - } - else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '\n\n* '+text); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row+2, - originalRange.end.column+2 - ); - } - }; - // win/linux: Ctrl+Shift+O, mac: Command+Option+O - var markdownToOrderedList = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, '\n\n1. '); - editor.focus(); - editor.selection.moveTo(curpos.row+2, curpos.column+3); - } - else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '\n\n1. '+text); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row+2, - originalRange.end.column+3 - ); - } - }; - // win/linux: Ctrl+L, mac: Command+L - var markdownToLink = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, ' [](https://) '); - editor.focus(); - editor.selection.moveTo(curpos.row, curpos.column+2); - }else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '['+text+'](https://) '); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row, - originalRange.end.column+11 - ); - } - }; - // win/linux: Ctrl+Shift+I, mac: Command+Option+I - // or via upload: imageData={name:null, link:null} - var markdownToImageLink = function(editor, imageData) { - var originalRange = editor.getSelectionRange(); - if (typeof(imageData) === 'undefined') { - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, ' ![](https://) '); - editor.focus(); - editor.selection.moveTo(curpos.row, curpos.column+3); - }else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '!['+text+'](https://) '); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row, - originalRange.end.column+12 - ); - } - }else { // this if use image upload to imgur. - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, '!['+imageData.name+']('+imageData.link+') '); - editor.focus(); - editor.selection.moveTo( - curpos.row, - curpos.column+imageData.name.length+2 - ); - } - }; - // win/linux: Ctrl+M, mac: Command+M - var markdownToMention = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, ' @[]'); - editor.focus(); - editor.selection.moveTo(curpos.row, curpos.column+3); - }else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '@['+text+']'); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row, - originalRange.end.column+3 - ) - } - }; - // Insert Emoji to text editor: $('.insert-emoji').data('emoji-target') - var markdownToEmoji = function(editor, data_target) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, ' '+data_target+' '); - editor.focus(); - editor.selection.moveTo(curpos.row, curpos.column+data_target.length+2); - }; - // Markdown Image Uploader auto insert to editor. - // with special insert, eg: ![avatar.png](i.imgur.com/DytfpTz.png) - var markdownToUploadImage = function(editor) { - var firstForm = $('#'+editorId).closest('form').get(0); - var field_name = editor.container.id.replace('martor-', ''); - var form = new FormData(firstForm); - form.append('csrfmiddlewaretoken', getCookie('csrftoken')); - - $.ajax({ - url: textareaId.data('upload-url'), - type: 'POST', - data: form, - async: true, - cache: false, - contentType: false, - enctype: 'multipart/form-data', - processData: false, - beforeSend: function() { - console.log('Uploading...'); - $('.upload-progress[data-field-name='+field_name+']').show(); - }, - success: function (response) { - $('.upload-progress[data-field-name='+field_name+']').hide(); - if (response.status == 200) { - console.log(response); - markdownToImageLink( - editor=editor, - imageData={name: response.name, link: response.link} - ); - }else { - alert(response.error); - } - }, - error: function(response) { - console.log("error", response); - $('.upload-progress[data-field-name='+field_name+']').hide(); - } - }); - return false; - }; - - // Trigger Keyboards - editor.commands.addCommand({ - name: 'markdownToBold', - bindKey: {win: 'Ctrl-B', mac: 'Command-B'}, - exec: function(editor) { - markdownToBold(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToItalic', - bindKey: {win: 'Ctrl-I', mac: 'Command-I'}, - exec: function(editor) { - markdownToItalic(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToUnderscores', - bindKey: {win: 'Ctrl-Shift-U', mac: 'Command-Option-U'}, - exec: function(editor) { - markdownToUnderscores(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToStrikethrough', - bindKey: {win: 'Ctrl-Shift-S', mac: 'Command-Option-S'}, - exec: function(editor) { - markdownToStrikethrough(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToHorizontal', - bindKey: {win: 'Ctrl-H', mac: 'Command-H'}, - exec: function(editor) { - markdownToHorizontal(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToH1', - bindKey: {win: 'Ctrl-Alt-1', mac: 'Command-Option-1'}, - exec: function(editor) { - markdownToH1(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToH2', - bindKey: {win: 'Ctrl-Alt-2', mac: 'Command-Option-3'}, - exec: function(editor) { - markdownToH2(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToH3', - bindKey: {win: 'Ctrl-Alt-3', mac: 'Command-Option-3'}, - exec: function(editor) { - markdownToH3(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToPre', - bindKey: {win: 'Ctrl-Alt-P', mac: 'Command-Option-P'}, - exec: function(editor) { - markdownToPre(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToCode', - bindKey: {win: 'Ctrl-Alt-C', mac: 'Command-Option-C'}, - exec: function(editor) { - markdownToCode(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToBlockQuote', - bindKey: {win: 'Ctrl-Q', mac: 'Command-Q'}, - exec: function(editor) { - markdownToBlockQuote(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToUnorderedList', - bindKey: {win: 'Ctrl-U', mac: 'Command-U'}, - exec: function(editor) { - markdownToUnorderedList(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToOrderedList', - bindKey: {win: 'Ctrl-Shift+O', mac: 'Command-Option-O'}, - exec: function(editor) { - markdownToOrderedList(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToLink', - bindKey: {win: 'Ctrl-L', mac: 'Command-L'}, - exec: function(editor) { - markdownToLink(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToImageLink', - bindKey: {win: 'Ctrl-Shift-I', mac: 'Command-Option-I'}, - exec: function(editor) { - markdownToImageLink(editor); - }, - readOnly: true - }); - if (editorConfig.mention === 'true') { - editor.commands.addCommand({ - name: 'markdownToMention', - bindKey: {win: 'Ctrl-M', mac: 'Command-M'}, - exec: function(editor) { - markdownToMention(editor); - }, - readOnly: true - }); - } - - // Trigger Click - $('.markdown-bold[data-field-name='+field_name+']').click(function(){ - markdownToBold(editor); - }); - $('.markdown-italic[data-field-name='+field_name+']').click(function(){ - markdownToItalic(editor); - }); - $('.markdown-horizontal[data-field-name='+field_name+']').click(function(){ - markdownToHorizontal(editor); - }); - $('.markdown-h1[data-field-name='+field_name+']').click(function(){ - markdownToH1(editor); - }); - $('.markdown-h2[data-field-name='+field_name+']').click(function(){ - markdownToH2(editor); - }); - $('.markdown-h3[data-field-name='+field_name+']').click(function(){ - markdownToH3(editor); - }); - $('.markdown-pre[data-field-name='+field_name+']').click(function(){ - markdownToPre(editor); - }); - $('.markdown-code[data-field-name='+field_name+']').click(function(){ - markdownToCode(editor); - }); - $('.markdown-blockquote[data-field-name='+field_name+']').click(function(){ - markdownToBlockQuote(editor); - }); - $('.markdown-unordered-list[data-field-name='+field_name+']').click(function(){ - markdownToUnorderedList(editor); - }); - $('.markdown-ordered-list[data-field-name='+field_name+']').click(function(){ - markdownToOrderedList(editor); - }); - $('.markdown-link[data-field-name='+field_name+']').click(function(){ - markdownToLink(editor); - }); - $('.markdown-image-link[data-field-name='+field_name+']').click(function(){ - markdownToImageLink(editor); - }); - - // Custom decission for toolbar buttons. - var btnMention = $('.markdown-direct-mention[data-field-name='+field_name+']'); // To Direct Mention - var btnUpload = $('.markdown-image-upload[data-field-name='+field_name+']'); // To Upload Image - if (editorConfig.mention === 'true' && editorConfig.imgur === 'true') { - btnMention.click(function(){ - markdownToMention(editor); - }); - btnUpload.on('change', function(evt){ - evt.preventDefault(); - markdownToUploadImage(editor); - }); - }else if (editorConfig.mention === 'true' && editorConfig.imgur === 'false') { - btnMention.click(function(){ - markdownToMention(editor); - }); - btnUpload.remove(); - }else if (editorConfig.mention === 'false' && editorConfig.imgur === 'true') { - btnMention.remove(); - btnUpload.on('change', function(evt){ - evt.preventDefault(); - markdownToUploadImage(editor); - }); - } - else { - btnMention.remove(); - btnUpload.remove(); - // Disable help of `mention` - $('.markdown-reference tbody tr')[1].remove(); - } - - // Modal Popup for Help Guide & Emoji Cheat Sheet - $('.markdown-help[data-field-name='+field_name+']').click(function(){ - $('.modal-help-guide[data-field-name='+field_name+']').modal('show'); - }); - - // Toggle editor, preview, maximize - var martorField = $('.martor-field-'+field_name); - var btnToggleMaximize = $('.markdown-toggle-maximize[data-field-name='+field_name+']'); - - // Toggle maximize and minimize - var handleToggleMinimize = function() { - $(document.body).removeClass('overflow'); - $(this).attr({'title': 'Full Screen'}); - $(this).find('svg.bi-arrows-angle-expand').show(); - $(this).find('svg.bi-arrows-angle-contract').hide(); - $('.main-martor-fullscreen').find('.martor-preview').removeAttr('style'); - mainMartor.removeClass('main-martor-fullscreen'); - martorField.removeAttr('style'); - editor.resize(); - } - var handleToggleMaximize = function(selector) { - selector.attr({'title': 'Minimize'}); - selector.find('svg.bi-arrows-angle-expand').hide(); - selector.find('svg.bi-arrows-angle-contract').show(); - mainMartor.addClass('main-martor-fullscreen'); - - var clientHeight = document.body.clientHeight-90; - martorField.attr({'style':'height:'+clientHeight+'px'}); - - var preview = $('.main-martor-fullscreen').find('.martor-preview'); - preview.attr({'style': 'overflow-y: auto;height:'+clientHeight+'px'}); - - editor.resize(); - selector.one('click', handleToggleMinimize); - $(document.body).addClass('overflow'); - } - btnToggleMaximize.on('click', function(){ - handleToggleMaximize($(this)); - }); - - // Exit full screen when `ESC` is pressed. - $(document).keyup(function(e) { - if (e.keyCode == 27 && mainMartor.hasClass('main-martor-fullscreen')) { - btnToggleMaximize.trigger('click'); - } - }); - - // markdown insert emoji from the modal - $('.markdown-emoji[data-field-name='+field_name+']').click(function(){ - var modalEmoji = $('.modal-emoji[data-field-name='+field_name+']').modal('show'); - var emojiList = typeof(emojis) != "undefined" ? emojis : []; // from `plugins/js/emojis.min.js` - var segmentEmoji = modalEmoji.find('.emoji-content-body'); - var loaderInit = modalEmoji.find('.emoji-loader-init'); - - // setup initial loader - segmentEmoji.html(''); - loaderInit.show(); - modalEmoji.show(); - - for (var i = 0; i < emojiList.length; i++) { - var linkEmoji = textareaId.data('base-emoji-url') + emojiList[i].replace(/:/g, '') + '.png'; - segmentEmoji.append('' - +''); - $('a[data-emoji-target="'+emojiList[i]+'"]').click(function(){ - markdownToEmoji(editor, $(this).data('emoji-target')); - modalEmoji.modal('hide'); - }); - } - - loaderInit.hide(); - segmentEmoji.show(); - modalEmoji.modal('handleUpdate'); - }); - - // Set initial value if has the content before. - if (textareaId.val() != '') { - editor.setValue(textareaId.val(), -1); - } - });// end each `mainMartor` - }; - - $(function() { - $('.main-martor').martor(); - }); - - if ('django' in window && 'jQuery' in window.django) - django.jQuery(document).on('formset:added', function (event, $row) { - $row.find('.main-martor').each(function () { - var id = $row.attr('id'); - id = id.substr(id.lastIndexOf('-') + 1); - // Notice here we are using our jQuery instead of Django's. - // This is because plugins are only loaded for ours. - var fixed = $(this.outerHTML.replace(/__prefix__/g, id)); - $(this).replaceWith(fixed); - fixed.martor(); - }); - }); -})(jQuery); diff --git a/static/MarkDown-Editor/martor/js/martor.bootstrap.min.js b/static/MarkDown-Editor/martor/js/martor.bootstrap.min.js deleted file mode 100644 index c5cfc7b..0000000 --- a/static/MarkDown-Editor/martor/js/martor.bootstrap.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Name : Martor v1.6.2 - * Created by : Agus Makmun (Summon Agus) - * Release date : 07-Apr-2021 - * License : GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - * Repository : https://github.com/agusmakmun/django-markdown-editor -**/ -!function(e){e||(e=django.jQuery),e.fn.martor=function(){e(".martor").trigger("martor.init");var n=function(e){var n=null,o=0;if(document.cookie&&""!==document.cookie)for(var t=document.cookie.split(";");oNothing to preview

")},error:function(e){console.log("error",e)}})};if(window.onload=function(){v()},"true"!==l.living?g.click(function(){e(this).closest(".tab-martor-menu").find(".martor-toolbar").hide(),v()}):c.on("change",v),"true"==l.spellcheck)try{enable_spellcheck(r)}catch(e){console.log("Spellcheck lib doesn't installed.")}var p=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o," **** "),e.focus(),e.selection.moveTo(o.row,o.column+3)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"**"+a+"**"),n.end.column+=4,e.focus(),e.selection.setSelectionRange(n)}},w=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o," __ "),e.focus(),e.selection.moveTo(o.row,o.column+2)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"_"+a+"_"),n.end.column+=2,e.focus(),e.selection.setSelectionRange(n)}},k=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o,"\n\n----------\n\n"),e.focus(),e.selection.moveTo(o.row+4,o.column+10)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"\n\n----------\n\n"+a),e.focus(),e.selection.moveTo(n.end.row+4,n.end.column+10)}},h=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o,"\n\n# "),e.focus(),e.selection.moveTo(o.row+2,o.column+2)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"\n\n# "+a+"\n"),e.focus(),e.selection.moveTo(n.end.row+2,n.end.column+2)}},C=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o,"\n\n## "),e.focus(),e.selection.moveTo(o.row+2,o.column+3)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"\n\n## "+a+"\n"),e.focus(),e.selection.moveTo(n.end.row+2,n.end.column+3)}},y=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o,"\n\n### "),e.focus(),e.selection.moveTo(o.row+2,o.column+4)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"\n\n### "+a+"\n"),e.focus(),e.selection.moveTo(n.end.row+2,n.end.column+4)}},T=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o,"\n\n```\n\n```\n"),e.focus(),e.selection.moveTo(o.row+3,o.column)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"\n\n```\n"+a+"\n```\n"),e.focus(),e.selection.moveTo(n.end.row+3,n.end.column+3)}},S=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o," `` "),e.focus(),e.selection.moveTo(o.row,o.column+2)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"`"+a+"`"),n.end.column+=2,e.focus(),e.selection.setSelectionRange(n)}},b=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o,"\n\n> \n"),e.focus(),e.selection.moveTo(o.row+2,o.column+2)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"\n\n> "+a+"\n"),e.focus(),e.selection.moveTo(n.end.row+2,n.end.column+2)}},R=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o,"\n\n* "),e.focus(),e.selection.moveTo(o.row+2,o.column+2)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"\n\n* "+a),e.focus(),e.selection.moveTo(n.end.row+2,n.end.column+2)}},x=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o,"\n\n1. "),e.focus(),e.selection.moveTo(o.row+2,o.column+3)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"\n\n1. "+a),e.focus(),e.selection.moveTo(n.end.row+2,n.end.column+3)}},O=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o," [](https://) "),e.focus(),e.selection.moveTo(o.row,o.column+2)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"["+a+"](https://) "),e.focus(),e.selection.moveTo(n.end.row,n.end.column+11)}},j=function(e,n){var o=e.getSelectionRange();if(void 0===n)if(e.selection.isEmpty()){var t=e.getCursorPosition();e.session.insert(t," ![](https://) "),e.focus(),e.selection.moveTo(t.row,t.column+3)}else{var a=e.getSelectionRange(),i=e.session.getTextRange(a);e.session.replace(a,"!["+i+"](https://) "),e.focus(),e.selection.moveTo(o.end.row,o.end.column+12)}else{t=e.getCursorPosition();e.session.insert(t,"!["+n.name+"]("+n.link+") "),e.focus(),e.selection.moveTo(t.row,t.column+n.name.length+2)}},P=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o," @[]"),e.focus(),e.selection.moveTo(o.row,o.column+3)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"@["+a+"]"),e.focus(),e.selection.moveTo(n.end.row,n.end.column+3)}},E=function(e,n){var o=e.getCursorPosition();e.session.insert(o," "+n+" "),e.focus(),e.selection.moveTo(o.row,o.column+n.length+2)},K=function(o){var t=e("#"+r).closest("form").get(0),a=o.container.id.replace("martor-",""),i=new FormData(t);return i.append("csrfmiddlewaretoken",n("csrftoken")),e.ajax({url:s.data("upload-url"),type:"POST",data:i,async:!0,cache:!1,contentType:!1,enctype:"multipart/form-data",processData:!1,beforeSend:function(){console.log("Uploading..."),e(".upload-progress[data-field-name="+a+"]").show()},success:function(n){e(".upload-progress[data-field-name="+a+"]").hide(),200==n.status?(console.log(n),j(o=o,imageData={name:n.name,link:n.link})):alert(n.error)},error:function(n){console.log("error",n),e(".upload-progress[data-field-name="+a+"]").hide()}}),!1};c.commands.addCommand({name:"markdownToBold",bindKey:{win:"Ctrl-B",mac:"Command-B"},exec:function(e){p(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToItalic",bindKey:{win:"Ctrl-I",mac:"Command-I"},exec:function(e){w(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToUnderscores",bindKey:{win:"Ctrl-Shift-U",mac:"Command-Option-U"},exec:function(e){!function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o," ++++ "),e.focus(),e.selection.moveTo(o.row,o.column+3)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"++"+a+"++"),n.end.column+=4,e.focus(),e.selection.setSelectionRange(n)}}(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToStrikethrough",bindKey:{win:"Ctrl-Shift-S",mac:"Command-Option-S"},exec:function(e){!function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o," ~~~~ "),e.focus(),e.selection.moveTo(o.row,o.column+3)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"~~"+a+"~~"),n.end.column+=4,e.focus(),e.selection.setSelectionRange(n)}}(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToHorizontal",bindKey:{win:"Ctrl-H",mac:"Command-H"},exec:function(e){k(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToH1",bindKey:{win:"Ctrl-Alt-1",mac:"Command-Option-1"},exec:function(e){h(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToH2",bindKey:{win:"Ctrl-Alt-2",mac:"Command-Option-3"},exec:function(e){C(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToH3",bindKey:{win:"Ctrl-Alt-3",mac:"Command-Option-3"},exec:function(e){y(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToPre",bindKey:{win:"Ctrl-Alt-P",mac:"Command-Option-P"},exec:function(e){T(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToCode",bindKey:{win:"Ctrl-Alt-C",mac:"Command-Option-C"},exec:function(e){S(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToBlockQuote",bindKey:{win:"Ctrl-Q",mac:"Command-Q"},exec:function(e){b(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToUnorderedList",bindKey:{win:"Ctrl-U",mac:"Command-U"},exec:function(e){R(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToOrderedList",bindKey:{win:"Ctrl-Shift+O",mac:"Command-Option-O"},exec:function(e){x(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToLink",bindKey:{win:"Ctrl-L",mac:"Command-L"},exec:function(e){O(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToImageLink",bindKey:{win:"Ctrl-Shift-I",mac:"Command-Option-I"},exec:function(e){j(e)},readOnly:!0}),"true"===l.mention&&c.commands.addCommand({name:"markdownToMention",bindKey:{win:"Ctrl-M",mac:"Command-M"},exec:function(e){P(e)},readOnly:!0}),e(".markdown-bold[data-field-name="+i+"]").click(function(){p(c)}),e(".markdown-italic[data-field-name="+i+"]").click(function(){w(c)}),e(".markdown-horizontal[data-field-name="+i+"]").click(function(){k(c)}),e(".markdown-h1[data-field-name="+i+"]").click(function(){h(c)}),e(".markdown-h2[data-field-name="+i+"]").click(function(){C(c)}),e(".markdown-h3[data-field-name="+i+"]").click(function(){y(c)}),e(".markdown-pre[data-field-name="+i+"]").click(function(){T(c)}),e(".markdown-code[data-field-name="+i+"]").click(function(){S(c)}),e(".markdown-blockquote[data-field-name="+i+"]").click(function(){b(c)}),e(".markdown-unordered-list[data-field-name="+i+"]").click(function(){R(c)}),e(".markdown-ordered-list[data-field-name="+i+"]").click(function(){x(c)}),e(".markdown-link[data-field-name="+i+"]").click(function(){O(c)}),e(".markdown-image-link[data-field-name="+i+"]").click(function(){j(c)});var A=e(".markdown-direct-mention[data-field-name="+i+"]"),M=e(".markdown-image-upload[data-field-name="+i+"]");"true"===l.mention&&"true"===l.imgur?(A.click(function(){P(c)}),M.on("change",function(e){e.preventDefault(),K(c)})):"true"===l.mention&&"false"===l.imgur?(A.click(function(){P(c)}),M.remove()):"false"===l.mention&&"true"===l.imgur?(A.remove(),M.on("change",function(e){e.preventDefault(),K(c)})):(A.remove(),M.remove(),e(".markdown-reference tbody tr")[1].remove()),e(".markdown-help[data-field-name="+i+"]").click(function(){e(".modal-help-guide[data-field-name="+i+"]").modal("show")});var U=e(".martor-field-"+i),_=e(".markdown-toggle-maximize[data-field-name="+i+"]"),I=function(){e(document.body).removeClass("overflow"),e(this).attr({title:"Full Screen"}),e(this).find("svg.bi-arrows-angle-expand").show(),e(this).find("svg.bi-arrows-angle-contract").hide(),e(".main-martor-fullscreen").find(".martor-preview").removeAttr("style"),a.removeClass("main-martor-fullscreen"),U.removeAttr("style"),c.resize()};_.on("click",function(){!function(n){n.attr({title:"Minimize"}),n.find("svg.bi-arrows-angle-expand").hide(),n.find("svg.bi-arrows-angle-contract").show(),a.addClass("main-martor-fullscreen");var o=document.body.clientHeight-90;U.attr({style:"height:"+o+"px"}),e(".main-martor-fullscreen").find(".martor-preview").attr({style:"overflow-y: auto;height:"+o+"px"}),c.resize(),n.one("click",I),e(document.body).addClass("overflow")}(e(this))}),e(document).keyup(function(e){27==e.keyCode&&a.hasClass("main-martor-fullscreen")&&_.trigger("click")}),e(".markdown-emoji[data-field-name="+i+"]").click(function(){var n=e(".modal-emoji[data-field-name="+i+"]").modal("show"),o="undefined"!=typeof emojis?emojis:[],t=n.find(".emoji-content-body"),a=n.find(".emoji-loader-init");t.html(""),a.show(),n.show();for(var r=0;r

'+o[r]+"

"),e('a[data-emoji-target="'+o[r]+'"]').click(function(){E(c,e(this).data("emoji-target")),n.modal("hide")})}a.hide(),t.show(),n.modal("handleUpdate")}),""!=s.val()&&c.setValue(s.val(),-1)})},e(function(){e(".main-martor").martor()}),"django"in window&&"jQuery"in window.django&&django.jQuery(document).on("formset:added",function(n,o){o.find(".main-martor").each(function(){var n=o.attr("id");n=n.substr(n.lastIndexOf("-")+1);var t=e(this.outerHTML.replace(/__prefix__/g,n));e(this).replaceWith(t),t.martor()})})}(jQuery); diff --git a/static/MarkDown-Editor/martor/js/martor.semantic.js b/static/MarkDown-Editor/martor/js/martor.semantic.js deleted file mode 100644 index e35951d..0000000 --- a/static/MarkDown-Editor/martor/js/martor.semantic.js +++ /dev/null @@ -1,878 +0,0 @@ -/** - * Name : Martor v1.6.2 - * Created by : Agus Makmun (Summon Agus) - * Release date : 07-Apr-2021 - * License : GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - * Repository : https://github.com/agusmakmun/django-markdown-editor -**/ - -(function ($) { - if (!$) { - $ = django.jQuery; - } - $.fn.martor = function() { - $('.martor').trigger('martor.init'); - - // CSRF code - var getCookie = function(name) { - var cookieValue = null; - var i = 0; - if (document.cookie && document.cookie !== '') { - var cookies = document.cookie.split(';'); - for (i; i < cookies.length; i++) { - var cookie = jQuery.trim(cookies[i]); - // Does this cookie string begin with the name we want? - if (cookie.substring(0, name.length + 1) === (name + '=')) { - cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); - break; - } - } - } - return cookieValue; - }; - - // Each multiple editor fields - this.each(function(i, obj) { - var mainMartor = $(obj); - var field_name = mainMartor.data('field-name'); - var textareaId = $('#id_'+field_name); - var editorId = 'martor-'+field_name; - var editor = ace.edit(editorId); - var editorConfig = JSON.parse(textareaId.data('enable-configs').replace(/'/g, '"')); - - editor.setTheme('ace/theme/github'); - editor.getSession().setMode('ace/mode/markdown'); - editor.getSession().setUseWrapMode(true); - editor.$blockScrolling = Infinity; // prevents ace from logging annoying warnings - editor.renderer.setScrollMargin(10, 10); // set padding - editor.setAutoScrollEditorIntoView(true); - editor.setShowPrintMargin(false); - editor.setOptions({ - enableBasicAutocompletion: true, - enableSnippets: true, - enableLiveAutocompletion: true, - enableMultiselect: false - }); - - if (editorConfig.living == 'true') { - $(obj).addClass('enable-living'); - } - - var emojiWordCompleter = { - getCompletions: function(editor, session, pos, prefix, callback) { - var wordList = typeof(emojis) != "undefined" ? emojis : []; // from `atwho/emojis.min.js` - var obj = editor.getSession().getTokenAt(pos.row, pos.column.count); - if(typeof(obj.value) != "undefined") { - var curTokens = obj.value.split(/\s+/); - var lastToken = curTokens[curTokens.length-1]; - - if (lastToken[0] == ':') { - callback(null, wordList.map(function(word) { - return { - caption: word, - value: word.replace(':', '') + ' ', - meta: 'emoji' // this should return as text only. - }; - })); - } - } - } - } - var mentionWordCompleter = { - getCompletions: function(editor, session, pos, prefix, callback) { - var obj = editor.getSession().getTokenAt(pos.row, pos.column.count); - if(typeof(obj.value) != "undefined") { - var curTokens = obj.value.split(/\s+/); - var lastToken = curTokens[curTokens.length-1]; - - if (lastToken[0] == '@' && lastToken[1] == '[') { - username = lastToken.replace(/([\@\[/\]/])/g, ''); - $.ajax({ - url: textareaId.data('search-users-url'), - data: { - 'username': username, - 'csrfmiddlewaretoken': getCookie('csrftoken') - }, - success: function(data) { - if (data['status'] == 200) { - var wordList = []; - for (var i = 0; i < data['data'].length; i++) { - wordList.push(data['data'][i].username) - } - callback(null, wordList.map(function(word) { - return { - caption: word, - value: word, - meta: 'username' // this should return as text only. - }; - })); - } - }// end success - }); - } - } - } - } - // Set autocomplete for ace editor - if (editorConfig.mention === 'true') { - editor.completers = [emojiWordCompleter, mentionWordCompleter] - }else { - editor.completers = [emojiWordCompleter] - } - - // set css `display:none` fot this textarea. - textareaId.attr({'style': 'display:none'}); - - // assign all `field_name`, uses for a per-single editor. - $(obj).find('.martor-toolbar').find('.markdown-selector').attr({'data-field-name': field_name}); - $(obj).find('.upload-progress').attr({'data-field-name': field_name}); - $(obj).find('.modal-help-guide').attr({'data-field-name': field_name}); - $(obj).find('.modal-emoji').attr({'data-field-name': field_name}); - - // Set if editor has changed. - editor.on('change', function(evt){ - var value = editor.getValue(); - textareaId.val(value); - }); - - // resize the editor using `resizable.min.js` - $('#'+editorId).resizable({ - direction: 'bottom', - stop: function() { - editor.resize(); - } - }); - - // update the preview if this menu is clicked - var currentTab = $('.tab.segment[data-tab=preview-tab-'+field_name+']'); - var previewTabButton = $('.item[data-tab=preview-tab-'+field_name+']'); - var refreshPreview = function() { - var value = textareaId.val(); - var form = new FormData(); - form.append('content', value); - form.append('csrfmiddlewaretoken', getCookie('csrftoken')); - currentTab.addClass('martor-preview-stale'); - - $.ajax({ - url: textareaId.data('markdownfy-url'), - type: 'POST', - data: form, - processData: false, - contentType: false, - success: function(response) { - if (response) { - currentTab.html(response).removeClass('martor-preview-stale'); - $(document).trigger('martor:preview', [currentTab]); - - if (editorConfig.hljs == 'true') { - $('pre').each(function (i, block) { - hljs.highlightBlock(block); - }); - } - } else { - currentTab.html('

Nothing to preview

'); - } - }, - error: function(response) { - console.log("error", response); - } - }); - }; - - // Refresh the preview unconditionally on first load. - window.onload = function() { - refreshPreview(); - } - - if (editorConfig.living !== 'true') { - previewTabButton.click(function(){ - // hide the `.martor-toolbar` for this current editor if under preview. - $(this).closest('.tab-martor-menu').find('.martor-toolbar').hide(); - refreshPreview(); - }); - }else { - editor.on('change', refreshPreview); - } - - var editorTabButton = $('.item[data-tab=editor-tab-'+field_name+']'); - editorTabButton.click(function(){ - // show the `.martor-toolbar` for this current editor if under preview. - $(this).closest('.tab-martor-menu').find('.martor-toolbar').show(); - }); - - if (editorConfig.spellcheck == 'true') { - try { - enable_spellcheck(editorId); - }catch (e) { - console.log("Spellcheck lib doesn't installed."); - } - } - - // win/linux: Ctrl+B, mac: Command+B - var markdownToBold = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, ' **** '); - editor.focus(); - editor.selection.moveTo(curpos.row, curpos.column+3); - }else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '**'+text+'**'); - originalRange.end.column += 4; // this because injected from 4 `*` characters. - editor.focus(); - editor.selection.setSelectionRange(originalRange); - } - }; - // win/linux: Ctrl+I, mac: Command+I - var markdownToItalic = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, ' __ '); - editor.focus(); - editor.selection.moveTo(curpos.row, curpos.column+2); - }else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '_'+text+'_'); - originalRange.end.column += 2; // this because injected from 2 `_` characters. - editor.focus(); - editor.selection.setSelectionRange(originalRange); - } - }; - // win/linux: Ctrl+Shift+U - var markdownToUnderscores = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, ' ++++ '); - editor.focus(); - editor.selection.moveTo(curpos.row, curpos.column+3); - }else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '++'+text+'++'); - originalRange.end.column += 4; // this because injected from 4 `*` characters. - editor.focus(); - editor.selection.setSelectionRange(originalRange); - } - }; - // win/linux: Ctrl+Shift+S - var markdownToStrikethrough = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, ' ~~~~ '); - editor.focus(); - editor.selection.moveTo(curpos.row, curpos.column+3); - }else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '~~'+text+'~~'); - originalRange.end.column += 4; // this because injected from 4 `*` characters. - editor.focus(); - editor.selection.setSelectionRange(originalRange); - } - }; - // win/linux: Ctrl+H, mac: Command+H - var markdownToHorizontal = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, '\n\n----------\n\n'); - editor.focus(); - editor.selection.moveTo(curpos.row+4, curpos.column+10); - } - else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '\n\n----------\n\n'+text); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row+4, - originalRange.end.column+10 - ); - } - }; - // win/linux: Ctrl+Alt+1, mac: Command+Option+1 - var markdownToH1 = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, '\n\n# '); - editor.focus(); - editor.selection.moveTo(curpos.row+2, curpos.column+2); - } - else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '\n\n# '+text+'\n'); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row+2, - originalRange.end.column+2 - ); - } - }; - // win/linux: Ctrl+Alt+2, mac: Command+Option+2 - var markdownToH2 = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, '\n\n## '); - editor.focus(); - editor.selection.moveTo(curpos.row+2, curpos.column+3); - } - else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '\n\n## '+text+'\n'); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row+2, - originalRange.end.column+3 - ); - } - }; - // win/linux: Ctrl+Alt+3, mac: Command+Option+3 - var markdownToH3 = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, '\n\n### '); - editor.focus(); - editor.selection.moveTo(curpos.row+2, curpos.column+4); - } - else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '\n\n### '+text+'\n'); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row+2, - originalRange.end.column+4 - ); - } - }; - // win/linux: Ctrl+Alt+P, mac: Command+Option+P - var markdownToPre = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, '\n\n```\n\n```\n'); - editor.focus(); - editor.selection.moveTo(curpos.row+3, curpos.column); - } - else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '\n\n```\n'+text+'\n```\n'); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row+3, - originalRange.end.column+3 - ); - } - }; - // win/linux: Ctrl+Alt+C, mac: Command+Option+C - var markdownToCode = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, ' `` '); - editor.focus(); - editor.selection.moveTo(curpos.row, curpos.column+2); - }else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '`'+text+'`'); - originalRange.end.column += 2; // this because injected from 2 `_` characters. - editor.focus(); - editor.selection.setSelectionRange(originalRange); - } - }; - // win/linux: Ctrl+Q, mac: Command+Q - var markdownToBlockQuote = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, '\n\n> \n'); - editor.focus(); - editor.selection.moveTo(curpos.row+2, curpos.column+2); - } - else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '\n\n> '+text+'\n'); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row+2, - originalRange.end.column+2 - ); - } - }; - // win/linux: Ctrl+U, mac: Command+U - var markdownToUnorderedList = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, '\n\n* '); - editor.focus(); - editor.selection.moveTo(curpos.row+2, curpos.column+2); - } - else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '\n\n* '+text); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row+2, - originalRange.end.column+2 - ); - } - }; - // win/linux: Ctrl+Shift+O, mac: Command+Option+O - var markdownToOrderedList = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, '\n\n1. '); - editor.focus(); - editor.selection.moveTo(curpos.row+2, curpos.column+3); - } - else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '\n\n1. '+text); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row+2, - originalRange.end.column+3 - ); - } - }; - // win/linux: Ctrl+L, mac: Command+L - var markdownToLink = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, ' [](https://) '); - editor.focus(); - editor.selection.moveTo(curpos.row, curpos.column+2); - }else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '['+text+'](https://) '); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row, - originalRange.end.column+10 - ); - } - }; - // win/linux: Ctrl+Shift+I, mac: Command+Option+I - // or via upload: imageData={name:null, link:null} - var markdownToImageLink = function(editor, imageData) { - var originalRange = editor.getSelectionRange(); - if (typeof(imageData) === 'undefined') { - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, ' ![](https://) '); - editor.focus(); - editor.selection.moveTo(curpos.row, curpos.column+3); - }else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '!['+text+'](https://) '); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row, - originalRange.end.column+11 - ); - } - }else { // this if use image upload to imgur. - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, '!['+imageData.name+']('+imageData.link+') '); - editor.focus(); - editor.selection.moveTo( - curpos.row, - curpos.column+imageData.name.length+2 - ); - } - }; - // win/linux: Ctrl+M, mac: Command+M - var markdownToMention = function(editor) { - var originalRange = editor.getSelectionRange(); - if (editor.selection.isEmpty()) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, ' @[]'); - editor.focus(); - editor.selection.moveTo(curpos.row, curpos.column+3); - }else { - var range = editor.getSelectionRange(); - var text = editor.session.getTextRange(range); - editor.session.replace(range, '@['+text+']'); - editor.focus(); - editor.selection.moveTo( - originalRange.end.row, - originalRange.end.column+3 - ) - } - }; - // Insert Emoji to text editor: $('.insert-emoji').data('emoji-target') - var markdownToEmoji = function(editor, data_target) { - var curpos = editor.getCursorPosition(); - editor.session.insert(curpos, ' '+data_target+' '); - editor.focus(); - editor.selection.moveTo(curpos.row, curpos.column+data_target.length+2); - }; - // Markdown Image Uploader auto insert to editor. - // with special insert, eg: ![avatar.png](i.imgur.com/DytfpTz.png) - var markdownToUploadImage = function(editor) { - var firstForm = $('#'+editorId).closest('form').get(0); - var field_name = editor.container.id.replace('martor-', ''); - var form = new FormData(firstForm); - form.append('csrfmiddlewaretoken', getCookie('csrftoken')); - - $.ajax({ - url: textareaId.data('upload-url'), - type: 'POST', - data: form, - async: true, - cache: false, - contentType: false, - enctype: 'multipart/form-data', - processData: false, - beforeSend: function() { - console.log('Uploading...'); - $('.upload-progress[data-field-name='+field_name+']').show(); - }, - success: function (response) { - $('.upload-progress[data-field-name='+field_name+']').hide(); - if (response.status == 200) { - console.log(response); - markdownToImageLink( - editor=editor, - imageData={name: response.name, link: response.link} - ); - }else { - alert(response.error); - } - }, - error: function(response) { - console.log("error", response); - $('.upload-progress[data-field-name='+field_name+']').hide(); - } - }); - return false; - }; - - // Trigger Keyboards - editor.commands.addCommand({ - name: 'markdownToBold', - bindKey: {win: 'Ctrl-B', mac: 'Command-B'}, - exec: function(editor) { - markdownToBold(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToItalic', - bindKey: {win: 'Ctrl-I', mac: 'Command-I'}, - exec: function(editor) { - markdownToItalic(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToUnderscores', - bindKey: {win: 'Ctrl-Shift-U', mac: 'Command-Option-U'}, - exec: function(editor) { - markdownToUnderscores(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToStrikethrough', - bindKey: {win: 'Ctrl-Shift-S', mac: 'Command-Option-S'}, - exec: function(editor) { - markdownToStrikethrough(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToHorizontal', - bindKey: {win: 'Ctrl-H', mac: 'Command-H'}, - exec: function(editor) { - markdownToHorizontal(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToH1', - bindKey: {win: 'Ctrl-Alt-1', mac: 'Command-Option-1'}, - exec: function(editor) { - markdownToH1(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToH2', - bindKey: {win: 'Ctrl-Alt-2', mac: 'Command-Option-3'}, - exec: function(editor) { - markdownToH2(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToH3', - bindKey: {win: 'Ctrl-Alt-3', mac: 'Command-Option-3'}, - exec: function(editor) { - markdownToH3(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToPre', - bindKey: {win: 'Ctrl-Alt-P', mac: 'Command-Option-P'}, - exec: function(editor) { - markdownToPre(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToCode', - bindKey: {win: 'Ctrl-Alt-C', mac: 'Command-Option-C'}, - exec: function(editor) { - markdownToCode(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToBlockQuote', - bindKey: {win: 'Ctrl-Q', mac: 'Command-Q'}, - exec: function(editor) { - markdownToBlockQuote(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToUnorderedList', - bindKey: {win: 'Ctrl-U', mac: 'Command-U'}, - exec: function(editor) { - markdownToUnorderedList(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToOrderedList', - bindKey: {win: 'Ctrl-Shift+O', mac: 'Command-Option-O'}, - exec: function(editor) { - markdownToOrderedList(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToLink', - bindKey: {win: 'Ctrl-L', mac: 'Command-L'}, - exec: function(editor) { - markdownToLink(editor); - }, - readOnly: true - }); - editor.commands.addCommand({ - name: 'markdownToImageLink', - bindKey: {win: 'Ctrl-Shift-I', mac: 'Command-Option-I'}, - exec: function(editor) { - markdownToImageLink(editor); - }, - readOnly: true - }); - if (editorConfig.mention === 'true') { - editor.commands.addCommand({ - name: 'markdownToMention', - bindKey: {win: 'Ctrl-M', mac: 'Command-M'}, - exec: function(editor) { - markdownToMention(editor); - }, - readOnly: true - }); - } - - // Trigger Click - $('.markdown-bold[data-field-name='+field_name+']').click(function(){ - markdownToBold(editor); - }); - $('.markdown-italic[data-field-name='+field_name+']').click(function(){ - markdownToItalic(editor); - }); - $('.markdown-horizontal[data-field-name='+field_name+']').click(function(){ - markdownToHorizontal(editor); - }); - $('.markdown-h1[data-field-name='+field_name+']').click(function(){ - markdownToH1(editor); - }); - $('.markdown-h2[data-field-name='+field_name+']').click(function(){ - markdownToH2(editor); - }); - $('.markdown-h3[data-field-name='+field_name+']').click(function(){ - markdownToH3(editor); - }); - $('.markdown-pre[data-field-name='+field_name+']').click(function(){ - markdownToPre(editor); - }); - $('.markdown-code[data-field-name='+field_name+']').click(function(){ - markdownToCode(editor); - }); - $('.markdown-blockquote[data-field-name='+field_name+']').click(function(){ - markdownToBlockQuote(editor); - }); - $('.markdown-unordered-list[data-field-name='+field_name+']').click(function(){ - markdownToUnorderedList(editor); - }); - $('.markdown-ordered-list[data-field-name='+field_name+']').click(function(){ - markdownToOrderedList(editor); - }); - $('.markdown-link[data-field-name='+field_name+']').click(function(){ - markdownToLink(editor); - }); - $('.markdown-image-link[data-field-name='+field_name+']').click(function(){ - markdownToImageLink(editor); - }); - - // Custom decission for toolbar buttons. - var btnMention = $('.markdown-direct-mention[data-field-name='+field_name+']'); // To Direct Mention - var btnUpload = $('.markdown-image-upload[data-field-name='+field_name+']'); // To Upload Image - if (editorConfig.mention === 'true' && editorConfig.imgur === 'true') { - btnMention.click(function(){ - markdownToMention(editor); - }); - btnUpload.on('change', function(evt){ - evt.preventDefault(); - markdownToUploadImage(editor); - }); - }else if (editorConfig.mention === 'true' && editorConfig.imgur === 'false') { - btnMention.click(function(){ - markdownToMention(editor); - }); - btnUpload.remove(); - }else if (editorConfig.mention === 'false' && editorConfig.imgur === 'true') { - btnMention.remove(); - btnUpload.on('change', function(evt){ - evt.preventDefault(); - markdownToUploadImage(editor); - }); - } - else { - btnMention.remove(); - btnUpload.remove(); - // Disable help of `mention` - $('.markdown-reference tbody tr')[1].remove(); - } - - // Modal Popup for Help Guide & Emoji Cheat Sheet - $('.markdown-help[data-field-name='+field_name+']').click(function(){ - $('.modal-help-guide[data-field-name='+field_name+']').modal('show'); - }); - - // Handle tabs. - mainMartor.find('.ui.martor-toolbar .ui.dropdown').dropdown(); - mainMartor.find('.ui.tab-martor-menu .item').tab(); - - // Toggle editor, preview, maximize - var martorField = $('.martor-field-'+field_name); - var btnToggleMaximize = $('.markdown-toggle-maximize[data-field-name='+field_name+']'); - - // Toggle maximize and minimize - var handleToggleMinimize = function() { - $(document.body).removeClass('overflow'); - $(this).attr({'title': 'Full Screen'}); - $(this).find('.minimize.icon').removeClass('minimize').addClass('maximize'); - $('.main-martor-fullscreen').find('.martor-preview').removeAttr('style'); - mainMartor.removeClass('main-martor-fullscreen'); - martorField.removeAttr('style'); - editor.resize(); - } - var handleToggleMaximize = function(selector) { - selector.attr({'title': 'Minimize'}); - selector.find('.maximize.icon').removeClass('maximize').addClass('minimize'); - mainMartor.addClass('main-martor-fullscreen'); - - var clientHeight = document.body.clientHeight-90; - martorField.attr({'style':'height:'+clientHeight+'px'}); - - var preview = $('.main-martor-fullscreen').find('.martor-preview'); - preview.attr({'style': 'overflow-y: auto;height:'+clientHeight+'px'}); - - editor.resize(); - selector.one('click', handleToggleMinimize); - $(document.body).addClass('overflow'); - } - btnToggleMaximize.on('click', function(){ - handleToggleMaximize($(this)); - }); - - // Exit full screen when `ESC` is pressed. - $(document).keyup(function(e) { - if (e.keyCode == 27 && mainMartor.hasClass('main-martor-fullscreen')) { - $('.minimize.icon').trigger('click'); - } - }); - - // markdown insert emoji from the modal - $('.markdown-emoji[data-field-name='+field_name+']').click(function(){ - var modalEmoji = $('.modal-emoji[data-field-name='+field_name+']'); - var emojiList = typeof(emojis) != "undefined" ? emojis : []; // from `plugins/js/emojis.min.js` - var segmentEmoji = modalEmoji.find('.emoji-content-body'); - var loaderInit = modalEmoji.find('.emoji-loader-init'); - - // setup initial loader - segmentEmoji.html(''); - loaderInit.show(); - modalEmoji.modal({ - onVisible: function () { - for (var i = 0; i < emojiList.length; i++) { - var linkEmoji = textareaId.data('base-emoji-url') + emojiList[i].replace(/:/g, '') + '.png'; - segmentEmoji.append('' - +''); - $('a[data-emoji-target="'+emojiList[i]+'"]').click(function(){ - markdownToEmoji(editor, $(this).data('emoji-target')); - modalEmoji.modal('hide', 100); - }); - } - loaderInit.hide(); - modalEmoji.modal('refresh'); - } - }).modal('show'); - }); - - // Set initial value if has the content before. - if (textareaId.val() != '') { - editor.setValue(textareaId.val(), -1); - } - });// end each `mainMartor` - }; - - $(function() { - $('.main-martor').martor(); - }); - - if ('django' in window && 'jQuery' in window.django) - django.jQuery(document).on('formset:added', function (event, $row) { - $row.find('.main-martor').each(function () { - var id = $row.attr('id'); - id = id.substr(id.lastIndexOf('-') + 1); - // Notice here we are using our jQuery instead of Django's. - // This is because plugins are only loaded for ours. - var fixed = $(this.outerHTML.replace(/__prefix__/g, id)); - $(this).replaceWith(fixed); - fixed.martor(); - }); - }); -})(jQuery); diff --git a/static/MarkDown-Editor/martor/js/martor.semantic.min.js b/static/MarkDown-Editor/martor/js/martor.semantic.min.js deleted file mode 100644 index a305c4e..0000000 --- a/static/MarkDown-Editor/martor/js/martor.semantic.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Name : Martor v1.6.2 - * Created by : Agus Makmun (Summon Agus) - * Release date : 07-Apr-2021 - * License : GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - * Repository : https://github.com/agusmakmun/django-markdown-editor -**/ -!function(e){e||(e=django.jQuery),e.fn.martor=function(){e(".martor").trigger("martor.init");var n=function(e){var n=null,o=0;if(document.cookie&&""!==document.cookie)for(var t=document.cookie.split(";");oNothing to preview

")},error:function(e){console.log("error",e)}})};if(window.onload=function(){g()},"true"!==l.living?f.click(function(){e(this).closest(".tab-martor-menu").find(".martor-toolbar").hide(),g()}):c.on("change",g),e(".item[data-tab=editor-tab-"+i+"]").click(function(){e(this).closest(".tab-martor-menu").find(".martor-toolbar").show()}),"true"==l.spellcheck)try{enable_spellcheck(r)}catch(e){console.log("Spellcheck lib doesn't installed.")}var v=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o," **** "),e.focus(),e.selection.moveTo(o.row,o.column+3)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"**"+a+"**"),n.end.column+=4,e.focus(),e.selection.setSelectionRange(n)}},p=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o," __ "),e.focus(),e.selection.moveTo(o.row,o.column+2)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"_"+a+"_"),n.end.column+=2,e.focus(),e.selection.setSelectionRange(n)}},w=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o,"\n\n----------\n\n"),e.focus(),e.selection.moveTo(o.row+4,o.column+10)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"\n\n----------\n\n"+a),e.focus(),e.selection.moveTo(n.end.row+4,n.end.column+10)}},k=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o,"\n\n# "),e.focus(),e.selection.moveTo(o.row+2,o.column+2)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"\n\n# "+a+"\n"),e.focus(),e.selection.moveTo(n.end.row+2,n.end.column+2)}},C=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o,"\n\n## "),e.focus(),e.selection.moveTo(o.row+2,o.column+3)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"\n\n## "+a+"\n"),e.focus(),e.selection.moveTo(n.end.row+2,n.end.column+3)}},h=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o,"\n\n### "),e.focus(),e.selection.moveTo(o.row+2,o.column+4)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"\n\n### "+a+"\n"),e.focus(),e.selection.moveTo(n.end.row+2,n.end.column+4)}},y=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o,"\n\n```\n\n```\n"),e.focus(),e.selection.moveTo(o.row+3,o.column)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"\n\n```\n"+a+"\n```\n"),e.focus(),e.selection.moveTo(n.end.row+3,n.end.column+3)}},T=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o," `` "),e.focus(),e.selection.moveTo(o.row,o.column+2)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"`"+a+"`"),n.end.column+=2,e.focus(),e.selection.setSelectionRange(n)}},S=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o,"\n\n> \n"),e.focus(),e.selection.moveTo(o.row+2,o.column+2)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"\n\n> "+a+"\n"),e.focus(),e.selection.moveTo(n.end.row+2,n.end.column+2)}},b=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o,"\n\n* "),e.focus(),e.selection.moveTo(o.row+2,o.column+2)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"\n\n* "+a),e.focus(),e.selection.moveTo(n.end.row+2,n.end.column+2)}},R=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o,"\n\n1. "),e.focus(),e.selection.moveTo(o.row+2,o.column+3)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"\n\n1. "+a),e.focus(),e.selection.moveTo(n.end.row+2,n.end.column+3)}},x=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o," [](https://) "),e.focus(),e.selection.moveTo(o.row,o.column+2)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"["+a+"](https://) "),e.focus(),e.selection.moveTo(n.end.row,n.end.column+10)}},O=function(e,n){var o=e.getSelectionRange();if(void 0===n)if(e.selection.isEmpty()){var t=e.getCursorPosition();e.session.insert(t," ![](https://) "),e.focus(),e.selection.moveTo(t.row,t.column+3)}else{var a=e.getSelectionRange(),i=e.session.getTextRange(a);e.session.replace(a,"!["+i+"](https://) "),e.focus(),e.selection.moveTo(o.end.row,o.end.column+11)}else{t=e.getCursorPosition();e.session.insert(t,"!["+n.name+"]("+n.link+") "),e.focus(),e.selection.moveTo(t.row,t.column+n.name.length+2)}},j=function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o," @[]"),e.focus(),e.selection.moveTo(o.row,o.column+3)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"@["+a+"]"),e.focus(),e.selection.moveTo(n.end.row,n.end.column+3)}},P=function(e,n){var o=e.getCursorPosition();e.session.insert(o," "+n+" "),e.focus(),e.selection.moveTo(o.row,o.column+n.length+2)},E=function(o){var t=e("#"+r).closest("form").get(0),a=o.container.id.replace("martor-",""),i=new FormData(t);return i.append("csrfmiddlewaretoken",n("csrftoken")),e.ajax({url:s.data("upload-url"),type:"POST",data:i,async:!0,cache:!1,contentType:!1,enctype:"multipart/form-data",processData:!1,beforeSend:function(){console.log("Uploading..."),e(".upload-progress[data-field-name="+a+"]").show()},success:function(n){e(".upload-progress[data-field-name="+a+"]").hide(),200==n.status?(console.log(n),O(o=o,imageData={name:n.name,link:n.link})):alert(n.error)},error:function(n){console.log("error",n),e(".upload-progress[data-field-name="+a+"]").hide()}}),!1};c.commands.addCommand({name:"markdownToBold",bindKey:{win:"Ctrl-B",mac:"Command-B"},exec:function(e){v(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToItalic",bindKey:{win:"Ctrl-I",mac:"Command-I"},exec:function(e){p(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToUnderscores",bindKey:{win:"Ctrl-Shift-U",mac:"Command-Option-U"},exec:function(e){!function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o," ++++ "),e.focus(),e.selection.moveTo(o.row,o.column+3)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"++"+a+"++"),n.end.column+=4,e.focus(),e.selection.setSelectionRange(n)}}(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToStrikethrough",bindKey:{win:"Ctrl-Shift-S",mac:"Command-Option-S"},exec:function(e){!function(e){var n=e.getSelectionRange();if(e.selection.isEmpty()){var o=e.getCursorPosition();e.session.insert(o," ~~~~ "),e.focus(),e.selection.moveTo(o.row,o.column+3)}else{var t=e.getSelectionRange(),a=e.session.getTextRange(t);e.session.replace(t,"~~"+a+"~~"),n.end.column+=4,e.focus(),e.selection.setSelectionRange(n)}}(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToHorizontal",bindKey:{win:"Ctrl-H",mac:"Command-H"},exec:function(e){w(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToH1",bindKey:{win:"Ctrl-Alt-1",mac:"Command-Option-1"},exec:function(e){k(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToH2",bindKey:{win:"Ctrl-Alt-2",mac:"Command-Option-3"},exec:function(e){C(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToH3",bindKey:{win:"Ctrl-Alt-3",mac:"Command-Option-3"},exec:function(e){h(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToPre",bindKey:{win:"Ctrl-Alt-P",mac:"Command-Option-P"},exec:function(e){y(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToCode",bindKey:{win:"Ctrl-Alt-C",mac:"Command-Option-C"},exec:function(e){T(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToBlockQuote",bindKey:{win:"Ctrl-Q",mac:"Command-Q"},exec:function(e){S(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToUnorderedList",bindKey:{win:"Ctrl-U",mac:"Command-U"},exec:function(e){b(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToOrderedList",bindKey:{win:"Ctrl-Shift+O",mac:"Command-Option-O"},exec:function(e){R(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToLink",bindKey:{win:"Ctrl-L",mac:"Command-L"},exec:function(e){x(e)},readOnly:!0}),c.commands.addCommand({name:"markdownToImageLink",bindKey:{win:"Ctrl-Shift-I",mac:"Command-Option-I"},exec:function(e){O(e)},readOnly:!0}),"true"===l.mention&&c.commands.addCommand({name:"markdownToMention",bindKey:{win:"Ctrl-M",mac:"Command-M"},exec:function(e){j(e)},readOnly:!0}),e(".markdown-bold[data-field-name="+i+"]").click(function(){v(c)}),e(".markdown-italic[data-field-name="+i+"]").click(function(){p(c)}),e(".markdown-horizontal[data-field-name="+i+"]").click(function(){w(c)}),e(".markdown-h1[data-field-name="+i+"]").click(function(){k(c)}),e(".markdown-h2[data-field-name="+i+"]").click(function(){C(c)}),e(".markdown-h3[data-field-name="+i+"]").click(function(){h(c)}),e(".markdown-pre[data-field-name="+i+"]").click(function(){y(c)}),e(".markdown-code[data-field-name="+i+"]").click(function(){T(c)}),e(".markdown-blockquote[data-field-name="+i+"]").click(function(){S(c)}),e(".markdown-unordered-list[data-field-name="+i+"]").click(function(){b(c)}),e(".markdown-ordered-list[data-field-name="+i+"]").click(function(){R(c)}),e(".markdown-link[data-field-name="+i+"]").click(function(){x(c)}),e(".markdown-image-link[data-field-name="+i+"]").click(function(){O(c)});var K=e(".markdown-direct-mention[data-field-name="+i+"]"),z=e(".markdown-image-upload[data-field-name="+i+"]");"true"===l.mention&&"true"===l.imgur?(K.click(function(){j(c)}),z.on("change",function(e){e.preventDefault(),E(c)})):"true"===l.mention&&"false"===l.imgur?(K.click(function(){j(c)}),z.remove()):"false"===l.mention&&"true"===l.imgur?(K.remove(),z.on("change",function(e){e.preventDefault(),E(c)})):(K.remove(),z.remove(),e(".markdown-reference tbody tr")[1].remove()),e(".markdown-help[data-field-name="+i+"]").click(function(){e(".modal-help-guide[data-field-name="+i+"]").modal("show")}),a.find(".ui.martor-toolbar .ui.dropdown").dropdown(),a.find(".ui.tab-martor-menu .item").tab();var A=e(".martor-field-"+i),M=e(".markdown-toggle-maximize[data-field-name="+i+"]"),_=function(){e(document.body).removeClass("overflow"),e(this).attr({title:"Full Screen"}),e(this).find(".minimize.icon").removeClass("minimize").addClass("maximize"),e(".main-martor-fullscreen").find(".martor-preview").removeAttr("style"),a.removeClass("main-martor-fullscreen"),A.removeAttr("style"),c.resize()};M.on("click",function(){!function(n){n.attr({title:"Minimize"}),n.find(".maximize.icon").removeClass("maximize").addClass("minimize"),a.addClass("main-martor-fullscreen");var o=document.body.clientHeight-90;A.attr({style:"height:"+o+"px"}),e(".main-martor-fullscreen").find(".martor-preview").attr({style:"overflow-y: auto;height:"+o+"px"}),c.resize(),n.one("click",_),e(document.body).addClass("overflow")}(e(this))}),e(document).keyup(function(n){27==n.keyCode&&a.hasClass("main-martor-fullscreen")&&e(".minimize.icon").trigger("click")}),e(".markdown-emoji[data-field-name="+i+"]").click(function(){var n=e(".modal-emoji[data-field-name="+i+"]"),o="undefined"!=typeof emojis?emojis:[],t=n.find(".emoji-content-body"),a=n.find(".emoji-loader-init");t.html(""),a.show(),n.modal({onVisible:function(){for(var i=0;i

'+o[i]+"

"),e('a[data-emoji-target="'+o[i]+'"]').click(function(){P(c,e(this).data("emoji-target")),n.modal("hide",100)})}a.hide(),n.modal("refresh")}}).modal("show")}),""!=s.val()&&c.setValue(s.val(),-1)})},e(function(){e(".main-martor").martor()}),"django"in window&&"jQuery"in window.django&&django.jQuery(document).on("formset:added",function(n,o){o.find(".main-martor").each(function(){var n=o.attr("id");n=n.substr(n.lastIndexOf("-")+1);var t=e(this.outerHTML.replace(/__prefix__/g,n));e(this).replaceWith(t),t.martor()})})}(jQuery); diff --git a/static/MarkDown-Editor/plugins/css/ace.min.css b/static/MarkDown-Editor/plugins/css/ace.min.css deleted file mode 100644 index 04a4d53..0000000 --- a/static/MarkDown-Editor/plugins/css/ace.min.css +++ /dev/null @@ -1 +0,0 @@ -.hljs{display:block;overflow-x:auto;padding:1em;background:white;color:black;border:1px solid #efefef}.hljs-comment,.hljs-quote,.hljs-variable{color:#008000}.hljs-keyword,.hljs-selector-tag,.hljs-built_in,.hljs-name,.hljs-tag{color:#00f}.hljs-string,.hljs-title,.hljs-section,.hljs-attribute,.hljs-literal,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-addition{color:#a31515}.hljs-deletion,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-meta{color:#2b91af}.hljs-doctag{color:#808080}.hljs-attr{color:#f00}.hljs-symbol,.hljs-bullet,.hljs-link{color:#00b0e8}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold} diff --git a/static/MarkDown-Editor/plugins/css/bootstrap.min.css b/static/MarkDown-Editor/plugins/css/bootstrap.min.css deleted file mode 100644 index 6e314df..0000000 --- a/static/MarkDown-Editor/plugins/css/bootstrap.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap v4.5.2 (https://getbootstrap.com/) - * Copyright 2011-2020 The Bootstrap Authors - * Copyright 2011-2020 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item{display:-ms-flexbox;display:flex}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;-ms-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} diff --git a/static/MarkDown-Editor/plugins/css/resizable.min.css b/static/MarkDown-Editor/plugins/css/resizable.min.css deleted file mode 100644 index 75205e3..0000000 --- a/static/MarkDown-Editor/plugins/css/resizable.min.css +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * resizable 1.0.0 - * https://github.com/tannernetwork/resizable - * - * Copyright 2015 Tanner (http://tanner.zone) - * Released under the MIT license - */ -.resizable{position:relative}.resizable .resizable-handle{position:absolute;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.resizable .resizable-l,.resizable .resizable-r{height:calc(100% - 10px);top:5px;width:10px}.resizable .resizable-l{cursor:w-resize;left:-5px}.resizable .resizable-r{cursor:e-resize;right:-5px}.resizable .resizable-t,.resizable .resizable-b{height:10px;left:5px;width:calc(100% - 10px);background: #e8e8e8}.resizable .resizable-t{cursor:n-resize;top:-5px}.resizable .resizable-b{cursor:s-resize;bottom:-5px}.resizable-resizing{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.resizable-resizing-l{cursor:w-resize}.resizable-resizing-r{cursor:e-resize}.resizable-resizing-t{cursor:n-resize}.resizable-resizing-b{cursor:s-resize} diff --git a/static/MarkDown-Editor/plugins/css/semantic.min.css b/static/MarkDown-Editor/plugins/css/semantic.min.css deleted file mode 100644 index b5b9698..0000000 --- a/static/MarkDown-Editor/plugins/css/semantic.min.css +++ /dev/null @@ -1,372 +0,0 @@ -/* -* # Semantic UI - 2.4.0 -* https://github.com/Semantic-Org/Semantic-UI -* http://www.semantic-ui.com/ -* -* Copyright 2014 Contributors -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/ -@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic&subset=latin);/*! -* # Semantic UI 2.4.0 - Reset -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}html{-webkit-box-sizing:border-box;box-sizing:border-box}input[type=email],input[type=password],input[type=search],input[type=text]{-webkit-appearance:none;-moz-appearance:none}/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}/*! -* # Semantic UI 2.4.0 - Site -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/body,html{height:100%}html{font-size:14px}body{margin:0;padding:0;overflow-x:hidden;min-width:320px;background:#fff;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:14px;line-height:1.4285em;color:rgba(0,0,0,.87);font-smoothing:antialiased}h1,h2,h3,h4,h5{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;line-height:1.28571429em;margin:calc(2rem - .14285714em) 0 1rem;font-weight:700;padding:0}h1{min-height:1rem;font-size:2rem}h2{font-size:1.71428571rem}h3{font-size:1.28571429rem}h4{font-size:1.07142857rem}h5{font-size:1rem}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child{margin-top:0}h1:last-child,h2:last-child,h3:last-child,h4:last-child,h5:last-child{margin-bottom:0}p{margin:0 0 1em;line-height:1.4285em}p:first-child{margin-top:0}p:last-child{margin-bottom:0}a{color:#4183c4;text-decoration:none}a:hover{color:#1e70bf;text-decoration:none}::-webkit-selection{background-color:#cce2ff;color:rgba(0,0,0,.87)}::-moz-selection{background-color:#cce2ff;color:rgba(0,0,0,.87)}::selection{background-color:#cce2ff;color:rgba(0,0,0,.87)}input::-webkit-selection,textarea::-webkit-selection{background-color:rgba(100,100,100,.4);color:rgba(0,0,0,.87)}input::-moz-selection,textarea::-moz-selection{background-color:rgba(100,100,100,.4);color:rgba(0,0,0,.87)}input::selection,textarea::selection{background-color:rgba(100,100,100,.4);color:rgba(0,0,0,.87)}body ::-webkit-scrollbar{-webkit-appearance:none;width:10px;height:10px}body ::-webkit-scrollbar-track{background:rgba(0,0,0,.1);border-radius:0}body ::-webkit-scrollbar-thumb{cursor:pointer;border-radius:5px;background:rgba(0,0,0,.25);-webkit-transition:color .2s ease;transition:color .2s ease}body ::-webkit-scrollbar-thumb:window-inactive{background:rgba(0,0,0,.15)}body ::-webkit-scrollbar-thumb:hover{background:rgba(128,135,139,.8)}body .ui.inverted::-webkit-scrollbar-track{background:rgba(255,255,255,.1)}body .ui.inverted::-webkit-scrollbar-thumb{background:rgba(255,255,255,.25)}body .ui.inverted::-webkit-scrollbar-thumb:window-inactive{background:rgba(255,255,255,.15)}body .ui.inverted::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.35)}/*! -* # Semantic UI 2.4.0 - Button -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.button{cursor:pointer;display:inline-block;min-height:1em;outline:0;border:none;vertical-align:baseline;background:#e0e1e2 none;color:rgba(0,0,0,.6);font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;margin:0 .25em 0 0;padding:.78571429em 1.5em .78571429em;text-transform:none;text-shadow:none;font-weight:700;line-height:1em;font-style:normal;text-align:center;text-decoration:none;border-radius:.28571429rem;-webkit-box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(34,36,38,.15) inset;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:opacity .1s ease,background-color .1s ease,color .1s ease,background .1s ease,-webkit-box-shadow .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,background .1s ease,-webkit-box-shadow .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease,-webkit-box-shadow .1s ease;will-change:'';-webkit-tap-highlight-color:transparent}.ui.button:hover{background-color:#cacbcd;background-image:none;-webkit-box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(34,36,38,.15) inset;color:rgba(0,0,0,.8)}.ui.button:hover .icon{opacity:.85}.ui.button:focus{background-color:#cacbcd;color:rgba(0,0,0,.8);background-image:''!important;-webkit-box-shadow:''!important;box-shadow:''!important}.ui.button:focus .icon{opacity:.85}.ui.active.button:active,.ui.button:active{background-color:#babbbc;background-image:'';color:rgba(0,0,0,.9);-webkit-box-shadow:0 0 0 1px transparent inset,none;box-shadow:0 0 0 1px transparent inset,none}.ui.active.button{background-color:#c0c1c2;background-image:none;-webkit-box-shadow:0 0 0 1px transparent inset;box-shadow:0 0 0 1px transparent inset;color:rgba(0,0,0,.95)}.ui.active.button:hover{background-color:#c0c1c2;background-image:none;color:rgba(0,0,0,.95)}.ui.active.button:active{background-color:#c0c1c2;background-image:none}.ui.loading.loading.loading.loading.loading.loading.button{position:relative;cursor:default;text-shadow:none!important;color:transparent!important;opacity:1;pointer-events:auto;-webkit-transition:all 0s linear,opacity .1s ease;transition:all 0s linear,opacity .1s ease}.ui.loading.button:before{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;border-radius:500rem;border:.2em solid rgba(0,0,0,.15)}.ui.loading.button:after{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#fff transparent transparent;border-style:solid;border-width:.2em;-webkit-box-shadow:0 0 0 1px transparent;box-shadow:0 0 0 1px transparent}.ui.labeled.icon.loading.button .icon{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}@-webkit-keyframes button-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes button-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ui.basic.loading.button:not(.inverted):before{border-color:rgba(0,0,0,.1)}.ui.basic.loading.button:not(.inverted):after{border-top-color:#767676}.ui.button:disabled,.ui.buttons .disabled.button,.ui.disabled.active.button,.ui.disabled.button,.ui.disabled.button:hover{cursor:default;opacity:.45!important;background-image:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;pointer-events:none!important}.ui.basic.buttons .ui.disabled.button{border-color:rgba(34,36,38,.5)}.ui.animated.button{position:relative;overflow:hidden;padding-right:0!important;vertical-align:middle;z-index:1}.ui.animated.button .content{will-change:transform,opacity}.ui.animated.button .visible.content{position:relative;margin-right:1.5em}.ui.animated.button .hidden.content{position:absolute;width:100%}.ui.animated.button .hidden.content,.ui.animated.button .visible.content{-webkit-transition:right .3s ease 0s;transition:right .3s ease 0s}.ui.animated.button .visible.content{left:auto;right:0}.ui.animated.button .hidden.content{top:50%;left:auto;right:-100%;margin-top:-.5em}.ui.animated.button:focus .visible.content,.ui.animated.button:hover .visible.content{left:auto;right:200%}.ui.animated.button:focus .hidden.content,.ui.animated.button:hover .hidden.content{left:auto;right:0}.ui.vertical.animated.button .hidden.content,.ui.vertical.animated.button .visible.content{-webkit-transition:top .3s ease,-webkit-transform .3s ease;transition:top .3s ease,-webkit-transform .3s ease;transition:top .3s ease,transform .3s ease;transition:top .3s ease,transform .3s ease,-webkit-transform .3s ease}.ui.vertical.animated.button .visible.content{-webkit-transform:translateY(0);transform:translateY(0);right:auto}.ui.vertical.animated.button .hidden.content{top:-50%;left:0;right:auto}.ui.vertical.animated.button:focus .visible.content,.ui.vertical.animated.button:hover .visible.content{-webkit-transform:translateY(200%);transform:translateY(200%);right:auto}.ui.vertical.animated.button:focus .hidden.content,.ui.vertical.animated.button:hover .hidden.content{top:50%;right:auto}.ui.fade.animated.button .hidden.content,.ui.fade.animated.button .visible.content{-webkit-transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,transform .3s ease;transition:opacity .3s ease,transform .3s ease,-webkit-transform .3s ease}.ui.fade.animated.button .visible.content{left:auto;right:auto;opacity:1;-webkit-transform:scale(1);transform:scale(1)}.ui.fade.animated.button .hidden.content{opacity:0;left:0;right:auto;-webkit-transform:scale(1.5);transform:scale(1.5)}.ui.fade.animated.button:focus .visible.content,.ui.fade.animated.button:hover .visible.content{left:auto;right:auto;opacity:0;-webkit-transform:scale(.75);transform:scale(.75)}.ui.fade.animated.button:focus .hidden.content,.ui.fade.animated.button:hover .hidden.content{left:0;right:auto;opacity:1;-webkit-transform:scale(1);transform:scale(1)}.ui.inverted.button{-webkit-box-shadow:0 0 0 2px #fff inset!important;box-shadow:0 0 0 2px #fff inset!important;background:transparent none;color:#fff;text-shadow:none!important}.ui.inverted.buttons .button{margin:0 0 0 -2px}.ui.inverted.buttons .button:first-child{margin-left:0}.ui.inverted.vertical.buttons .button{margin:0 0 -2px 0}.ui.inverted.vertical.buttons .button:first-child{margin-top:0}.ui.inverted.button:hover{background:#fff;-webkit-box-shadow:0 0 0 2px #fff inset!important;box-shadow:0 0 0 2px #fff inset!important;color:rgba(0,0,0,.8)}.ui.inverted.button.active,.ui.inverted.button:focus{background:#fff;-webkit-box-shadow:0 0 0 2px #fff inset!important;box-shadow:0 0 0 2px #fff inset!important;color:rgba(0,0,0,.8)}.ui.inverted.button.active:focus{background:#dcddde;-webkit-box-shadow:0 0 0 2px #dcddde inset!important;box-shadow:0 0 0 2px #dcddde inset!important;color:rgba(0,0,0,.8)}.ui.labeled.button:not(.icon){display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;background:0 0!important;padding:0!important;border:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui.labeled.button>.button{margin:0}.ui.labeled.button>.label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 0 0 -1px!important;padding:'';font-size:1em;border-color:rgba(34,36,38,.15)}.ui.labeled.button>.tag.label:before{width:1.85em;height:1.85em}.ui.labeled.button:not([class*="left labeled"])>.button{border-top-right-radius:0;border-bottom-right-radius:0}.ui.labeled.button:not([class*="left labeled"])>.label{border-top-left-radius:0;border-bottom-left-radius:0}.ui[class*="left labeled"].button>.button{border-top-left-radius:0;border-bottom-left-radius:0}.ui[class*="left labeled"].button>.label{border-top-right-radius:0;border-bottom-right-radius:0}.ui.facebook.button{background-color:#3b5998;color:#fff;text-shadow:none;background-image:none;-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.facebook.button:hover{background-color:#304d8a;color:#fff;text-shadow:none}.ui.facebook.button:active{background-color:#2d4373;color:#fff;text-shadow:none}.ui.twitter.button{background-color:#55acee;color:#fff;text-shadow:none;background-image:none;-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.twitter.button:hover{background-color:#35a2f4;color:#fff;text-shadow:none}.ui.twitter.button:active{background-color:#2795e9;color:#fff;text-shadow:none}.ui.google.plus.button{background-color:#dd4b39;color:#fff;text-shadow:none;background-image:none;-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.google.plus.button:hover{background-color:#e0321c;color:#fff;text-shadow:none}.ui.google.plus.button:active{background-color:#c23321;color:#fff;text-shadow:none}.ui.linkedin.button{background-color:#1f88be;color:#fff;text-shadow:none}.ui.linkedin.button:hover{background-color:#147baf;color:#fff;text-shadow:none}.ui.linkedin.button:active{background-color:#186992;color:#fff;text-shadow:none}.ui.youtube.button{background-color:red;color:#fff;text-shadow:none;background-image:none;-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.youtube.button:hover{background-color:#e60000;color:#fff;text-shadow:none}.ui.youtube.button:active{background-color:#c00;color:#fff;text-shadow:none}.ui.instagram.button{background-color:#49769c;color:#fff;text-shadow:none;background-image:none;-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.instagram.button:hover{background-color:#3d698e;color:#fff;text-shadow:none}.ui.instagram.button:active{background-color:#395c79;color:#fff;text-shadow:none}.ui.pinterest.button{background-color:#bd081c;color:#fff;text-shadow:none;background-image:none;-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.pinterest.button:hover{background-color:#ac0013;color:#fff;text-shadow:none}.ui.pinterest.button:active{background-color:#8c0615;color:#fff;text-shadow:none}.ui.vk.button{background-color:#4d7198;color:#fff;background-image:none;-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.vk.button:hover{background-color:#41648a;color:#fff}.ui.vk.button:active{background-color:#3c5876;color:#fff}.ui.button>.icon:not(.button){height:.85714286em;opacity:.8;margin:0 .42857143em 0 -.21428571em;-webkit-transition:opacity .1s ease;transition:opacity .1s ease;vertical-align:'';color:''}.ui.button:not(.icon)>.icon:not(.button):not(.dropdown){margin:0 .42857143em 0 -.21428571em}.ui.button:not(.icon)>.right.icon:not(.button):not(.dropdown){margin:0 -.21428571em 0 .42857143em}.ui[class*="left floated"].button,.ui[class*="left floated"].buttons{float:left;margin-left:0;margin-right:.25em}.ui[class*="right floated"].button,.ui[class*="right floated"].buttons{float:right;margin-right:0;margin-left:.25em}.ui.compact.button,.ui.compact.buttons .button{padding:.58928571em 1.125em .58928571em}.ui.compact.icon.button,.ui.compact.icon.buttons .button{padding:.58928571em .58928571em .58928571em}.ui.compact.labeled.icon.button,.ui.compact.labeled.icon.buttons .button{padding:.58928571em 3.69642857em .58928571em}.ui.mini.button,.ui.mini.buttons .button,.ui.mini.buttons .or{font-size:.78571429rem}.ui.tiny.button,.ui.tiny.buttons .button,.ui.tiny.buttons .or{font-size:.85714286rem}.ui.small.button,.ui.small.buttons .button,.ui.small.buttons .or{font-size:.92857143rem}.ui.button,.ui.buttons .button,.ui.buttons .or{font-size:1rem}.ui.large.button,.ui.large.buttons .button,.ui.large.buttons .or{font-size:1.14285714rem}.ui.big.button,.ui.big.buttons .button,.ui.big.buttons .or{font-size:1.28571429rem}.ui.huge.button,.ui.huge.buttons .button,.ui.huge.buttons .or{font-size:1.42857143rem}.ui.massive.button,.ui.massive.buttons .button,.ui.massive.buttons .or{font-size:1.71428571rem}.ui.icon.button,.ui.icon.buttons .button{padding:.78571429em .78571429em .78571429em}.ui.icon.button>.icon,.ui.icon.buttons .button>.icon{opacity:.9;margin:0!important;vertical-align:top}.ui.basic.button,.ui.basic.buttons .button{background:transparent none!important;color:rgba(0,0,0,.6)!important;font-weight:400;border-radius:.28571429rem;text-transform:none;text-shadow:none!important;-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.15) inset;box-shadow:0 0 0 1px rgba(34,36,38,.15) inset}.ui.basic.buttons{-webkit-box-shadow:none;box-shadow:none;border:1px solid rgba(34,36,38,.15);border-radius:.28571429rem}.ui.basic.buttons .button{border-radius:0}.ui.basic.button:hover,.ui.basic.buttons .button:hover{background:#fff!important;color:rgba(0,0,0,.8)!important;-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.35) inset,0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 1px rgba(34,36,38,.35) inset,0 0 0 0 rgba(34,36,38,.15) inset}.ui.basic.button:focus,.ui.basic.buttons .button:focus{background:#fff!important;color:rgba(0,0,0,.8)!important;-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.35) inset,0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 1px rgba(34,36,38,.35) inset,0 0 0 0 rgba(34,36,38,.15) inset}.ui.basic.button:active,.ui.basic.buttons .button:active{background:#f8f8f8!important;color:rgba(0,0,0,.9)!important;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 1px 4px 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 1px 4px 0 rgba(34,36,38,.15) inset}.ui.basic.active.button,.ui.basic.buttons .active.button{background:rgba(0,0,0,.05)!important;-webkit-box-shadow:''!important;box-shadow:''!important;color:rgba(0,0,0,.95)!important}.ui.basic.active.button:hover,.ui.basic.buttons .active.button:hover{background-color:rgba(0,0,0,.05)}.ui.basic.buttons .button:hover{-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.35) inset,0 0 0 0 rgba(34,36,38,.15) inset inset;box-shadow:0 0 0 1px rgba(34,36,38,.35) inset,0 0 0 0 rgba(34,36,38,.15) inset inset}.ui.basic.buttons .button:active{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 1px 4px 0 rgba(34,36,38,.15) inset inset;box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 1px 4px 0 rgba(34,36,38,.15) inset inset}.ui.basic.buttons .active.button{-webkit-box-shadow:''!important;box-shadow:''!important}.ui.basic.inverted.button,.ui.basic.inverted.buttons .button{background-color:transparent!important;color:#f9fafb!important;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important}.ui.basic.inverted.button:hover,.ui.basic.inverted.buttons .button:hover{color:#fff!important;-webkit-box-shadow:0 0 0 2px #fff inset!important;box-shadow:0 0 0 2px #fff inset!important}.ui.basic.inverted.button:focus,.ui.basic.inverted.buttons .button:focus{color:#fff!important;-webkit-box-shadow:0 0 0 2px #fff inset!important;box-shadow:0 0 0 2px #fff inset!important}.ui.basic.inverted.button:active,.ui.basic.inverted.buttons .button:active{background-color:rgba(255,255,255,.08)!important;color:#fff!important;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.9) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.9) inset!important}.ui.basic.inverted.active.button,.ui.basic.inverted.buttons .active.button{background-color:rgba(255,255,255,.08);color:#fff;text-shadow:none;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.7) inset;box-shadow:0 0 0 2px rgba(255,255,255,.7) inset}.ui.basic.inverted.active.button:hover,.ui.basic.inverted.buttons .active.button:hover{background-color:rgba(255,255,255,.15);-webkit-box-shadow:0 0 0 2px #fff inset!important;box-shadow:0 0 0 2px #fff inset!important}.ui.basic.buttons .button{border-left:1px solid rgba(34,36,38,.15);-webkit-box-shadow:none;box-shadow:none}.ui.basic.vertical.buttons .button{border-left:none}.ui.basic.vertical.buttons .button{border-left-width:0;border-top:1px solid rgba(34,36,38,.15)}.ui.basic.vertical.buttons .button:first-child{border-top-width:0}.ui.labeled.icon.button,.ui.labeled.icon.buttons .button{position:relative;padding-left:4.07142857em!important;padding-right:1.5em!important}.ui.labeled.icon.button>.icon,.ui.labeled.icon.buttons>.button>.icon{position:absolute;height:100%;line-height:1;border-radius:0;border-top-left-radius:inherit;border-bottom-left-radius:inherit;text-align:center;margin:0;width:2.57142857em;background-color:rgba(0,0,0,.05);color:'';-webkit-box-shadow:-1px 0 0 0 transparent inset;box-shadow:-1px 0 0 0 transparent inset}.ui.labeled.icon.button>.icon,.ui.labeled.icon.buttons>.button>.icon{top:0;left:0}.ui[class*="right labeled"].icon.button{padding-right:4.07142857em!important;padding-left:1.5em!important}.ui[class*="right labeled"].icon.button>.icon{left:auto;right:0;border-radius:0;border-top-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-box-shadow:1px 0 0 0 transparent inset;box-shadow:1px 0 0 0 transparent inset}.ui.labeled.icon.button>.icon:after,.ui.labeled.icon.button>.icon:before,.ui.labeled.icon.buttons>.button>.icon:after,.ui.labeled.icon.buttons>.button>.icon:before{display:block;position:absolute;width:100%;top:50%;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.ui.labeled.icon.buttons .button>.icon{border-radius:0}.ui.labeled.icon.buttons .button:first-child>.icon{border-top-left-radius:.28571429rem;border-bottom-left-radius:.28571429rem}.ui.labeled.icon.buttons .button:last-child>.icon{border-top-right-radius:.28571429rem;border-bottom-right-radius:.28571429rem}.ui.vertical.labeled.icon.buttons .button:first-child>.icon{border-radius:0;border-top-left-radius:.28571429rem}.ui.vertical.labeled.icon.buttons .button:last-child>.icon{border-radius:0;border-bottom-left-radius:.28571429rem}.ui.fluid[class*="left labeled"].icon.button,.ui.fluid[class*="right labeled"].icon.button{padding-left:1.5em!important;padding-right:1.5em!important}.ui.button.toggle.active,.ui.buttons .button.toggle.active,.ui.toggle.buttons .active.button{background-color:#21ba45!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none;color:#fff!important}.ui.button.toggle.active:hover{background-color:#16ab39!important;text-shadow:none;color:#fff!important}.ui.circular.button{border-radius:10em}.ui.circular.button>.icon{width:1em;vertical-align:baseline}.ui.buttons .or{position:relative;width:.3em;height:2.57142857em;z-index:3}.ui.buttons .or:before{position:absolute;text-align:center;border-radius:500rem;content:'or';top:50%;left:50%;background-color:#fff;text-shadow:none;margin-top:-.89285714em;margin-left:-.89285714em;width:1.78571429em;height:1.78571429em;line-height:1.78571429em;color:rgba(0,0,0,.4);font-style:normal;font-weight:700;-webkit-box-shadow:0 0 0 1px transparent inset;box-shadow:0 0 0 1px transparent inset}.ui.buttons .or[data-text]:before{content:attr(data-text)}.ui.fluid.buttons .or{width:0!important}.ui.fluid.buttons .or:after{display:none}.ui.attached.button{position:relative;display:block;margin:0;border-radius:0;-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.15)!important;box-shadow:0 0 0 1px rgba(34,36,38,.15)!important}.ui.attached.top.button{border-radius:.28571429rem .28571429rem 0 0}.ui.attached.bottom.button{border-radius:0 0 .28571429rem .28571429rem}.ui.left.attached.button{display:inline-block;border-left:none;text-align:right;padding-right:.75em;border-radius:.28571429rem 0 0 .28571429rem}.ui.right.attached.button{display:inline-block;text-align:left;padding-left:.75em;border-radius:0 .28571429rem .28571429rem 0}.ui.attached.buttons{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:0;width:auto!important;z-index:2;margin-left:-1px;margin-right:-1px}.ui.attached.buttons .button{margin:0}.ui.attached.buttons .button:first-child{border-radius:0}.ui.attached.buttons .button:last-child{border-radius:0}.ui[class*="top attached"].buttons{margin-bottom:-1px;border-radius:.28571429rem .28571429rem 0 0}.ui[class*="top attached"].buttons .button:first-child{border-radius:.28571429rem 0 0 0}.ui[class*="top attached"].buttons .button:last-child{border-radius:0 .28571429rem 0 0}.ui[class*="bottom attached"].buttons{margin-top:-1px;border-radius:0 0 .28571429rem .28571429rem}.ui[class*="bottom attached"].buttons .button:first-child{border-radius:0 0 0 .28571429rem}.ui[class*="bottom attached"].buttons .button:last-child{border-radius:0 0 .28571429rem 0}.ui[class*="left attached"].buttons{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:0;margin-left:-1px;border-radius:0 .28571429rem .28571429rem 0}.ui[class*="left attached"].buttons .button:first-child{margin-left:-1px;border-radius:0 .28571429rem 0 0}.ui[class*="left attached"].buttons .button:last-child{margin-left:-1px;border-radius:0 0 .28571429rem 0}.ui[class*="right attached"].buttons{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-left:0;margin-right:-1px;border-radius:.28571429rem 0 0 .28571429rem}.ui[class*="right attached"].buttons .button:first-child{margin-left:-1px;border-radius:.28571429rem 0 0 0}.ui[class*="right attached"].buttons .button:last-child{margin-left:-1px;border-radius:0 0 0 .28571429rem}.ui.fluid.button,.ui.fluid.buttons{width:100%}.ui.fluid.button{display:block}.ui.two.buttons{width:100%}.ui.two.buttons>.button{width:50%}.ui.three.buttons{width:100%}.ui.three.buttons>.button{width:33.333%}.ui.four.buttons{width:100%}.ui.four.buttons>.button{width:25%}.ui.five.buttons{width:100%}.ui.five.buttons>.button{width:20%}.ui.six.buttons{width:100%}.ui.six.buttons>.button{width:16.666%}.ui.seven.buttons{width:100%}.ui.seven.buttons>.button{width:14.285%}.ui.eight.buttons{width:100%}.ui.eight.buttons>.button{width:12.5%}.ui.nine.buttons{width:100%}.ui.nine.buttons>.button{width:11.11%}.ui.ten.buttons{width:100%}.ui.ten.buttons>.button{width:10%}.ui.eleven.buttons{width:100%}.ui.eleven.buttons>.button{width:9.09%}.ui.twelve.buttons{width:100%}.ui.twelve.buttons>.button{width:8.3333%}.ui.fluid.vertical.buttons,.ui.fluid.vertical.buttons>.button{display:-webkit-box;display:-ms-flexbox;display:flex;width:auto}.ui.two.vertical.buttons>.button{height:50%}.ui.three.vertical.buttons>.button{height:33.333%}.ui.four.vertical.buttons>.button{height:25%}.ui.five.vertical.buttons>.button{height:20%}.ui.six.vertical.buttons>.button{height:16.666%}.ui.seven.vertical.buttons>.button{height:14.285%}.ui.eight.vertical.buttons>.button{height:12.5%}.ui.nine.vertical.buttons>.button{height:11.11%}.ui.ten.vertical.buttons>.button{height:10%}.ui.eleven.vertical.buttons>.button{height:9.09%}.ui.twelve.vertical.buttons>.button{height:8.3333%}.ui.black.button,.ui.black.buttons .button{background-color:#1b1c1d;color:#fff;text-shadow:none;background-image:none}.ui.black.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.black.button:hover,.ui.black.buttons .button:hover{background-color:#27292a;color:#fff;text-shadow:none}.ui.black.button:focus,.ui.black.buttons .button:focus{background-color:#2f3032;color:#fff;text-shadow:none}.ui.black.button:active,.ui.black.buttons .button:active{background-color:#343637;color:#fff;text-shadow:none}.ui.black.active.button,.ui.black.button .active.button:active,.ui.black.buttons .active.button,.ui.black.buttons .active.button:active{background-color:#0f0f10;color:#fff;text-shadow:none}.ui.basic.black.button,.ui.basic.black.buttons .button{-webkit-box-shadow:0 0 0 1px #1b1c1d inset!important;box-shadow:0 0 0 1px #1b1c1d inset!important;color:#1b1c1d!important}.ui.basic.black.button:hover,.ui.basic.black.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #27292a inset!important;box-shadow:0 0 0 1px #27292a inset!important;color:#27292a!important}.ui.basic.black.button:focus,.ui.basic.black.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #2f3032 inset!important;box-shadow:0 0 0 1px #2f3032 inset!important;color:#27292a!important}.ui.basic.black.active.button,.ui.basic.black.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #0f0f10 inset!important;box-shadow:0 0 0 1px #0f0f10 inset!important;color:#343637!important}.ui.basic.black.button:active,.ui.basic.black.buttons .button:active{-webkit-box-shadow:0 0 0 1px #343637 inset!important;box-shadow:0 0 0 1px #343637 inset!important;color:#343637!important}.ui.buttons:not(.vertical)>.basic.black.button:not(:first-child){margin-left:-1px}.ui.inverted.black.button,.ui.inverted.black.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #d4d4d5 inset!important;box-shadow:0 0 0 2px #d4d4d5 inset!important;color:#fff}.ui.inverted.black.button.active,.ui.inverted.black.button:active,.ui.inverted.black.button:focus,.ui.inverted.black.button:hover,.ui.inverted.black.buttons .button.active,.ui.inverted.black.buttons .button:active,.ui.inverted.black.buttons .button:focus,.ui.inverted.black.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.black.button:hover,.ui.inverted.black.buttons .button:hover{background-color:#000}.ui.inverted.black.button:focus,.ui.inverted.black.buttons .button:focus{background-color:#000}.ui.inverted.black.active.button,.ui.inverted.black.buttons .active.button{background-color:#000}.ui.inverted.black.button:active,.ui.inverted.black.buttons .button:active{background-color:#000}.ui.inverted.black.basic.button,.ui.inverted.black.basic.buttons .button,.ui.inverted.black.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.black.basic.button:hover,.ui.inverted.black.basic.buttons .button:hover,.ui.inverted.black.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #000 inset!important;box-shadow:0 0 0 2px #000 inset!important;color:#fff!important}.ui.inverted.black.basic.button:focus,.ui.inverted.black.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #000 inset!important;box-shadow:0 0 0 2px #000 inset!important;color:#545454!important}.ui.inverted.black.basic.active.button,.ui.inverted.black.basic.buttons .active.button,.ui.inverted.black.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #000 inset!important;box-shadow:0 0 0 2px #000 inset!important;color:#fff!important}.ui.inverted.black.basic.button:active,.ui.inverted.black.basic.buttons .button:active,.ui.inverted.black.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #000 inset!important;box-shadow:0 0 0 2px #000 inset!important;color:#fff!important}.ui.grey.button,.ui.grey.buttons .button{background-color:#767676;color:#fff;text-shadow:none;background-image:none}.ui.grey.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.grey.button:hover,.ui.grey.buttons .button:hover{background-color:#838383;color:#fff;text-shadow:none}.ui.grey.button:focus,.ui.grey.buttons .button:focus{background-color:#8a8a8a;color:#fff;text-shadow:none}.ui.grey.button:active,.ui.grey.buttons .button:active{background-color:#909090;color:#fff;text-shadow:none}.ui.grey.active.button,.ui.grey.button .active.button:active,.ui.grey.buttons .active.button,.ui.grey.buttons .active.button:active{background-color:#696969;color:#fff;text-shadow:none}.ui.basic.grey.button,.ui.basic.grey.buttons .button{-webkit-box-shadow:0 0 0 1px #767676 inset!important;box-shadow:0 0 0 1px #767676 inset!important;color:#767676!important}.ui.basic.grey.button:hover,.ui.basic.grey.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #838383 inset!important;box-shadow:0 0 0 1px #838383 inset!important;color:#838383!important}.ui.basic.grey.button:focus,.ui.basic.grey.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #8a8a8a inset!important;box-shadow:0 0 0 1px #8a8a8a inset!important;color:#838383!important}.ui.basic.grey.active.button,.ui.basic.grey.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #696969 inset!important;box-shadow:0 0 0 1px #696969 inset!important;color:#909090!important}.ui.basic.grey.button:active,.ui.basic.grey.buttons .button:active{-webkit-box-shadow:0 0 0 1px #909090 inset!important;box-shadow:0 0 0 1px #909090 inset!important;color:#909090!important}.ui.buttons:not(.vertical)>.basic.grey.button:not(:first-child){margin-left:-1px}.ui.inverted.grey.button,.ui.inverted.grey.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #d4d4d5 inset!important;box-shadow:0 0 0 2px #d4d4d5 inset!important;color:#fff}.ui.inverted.grey.button.active,.ui.inverted.grey.button:active,.ui.inverted.grey.button:focus,.ui.inverted.grey.button:hover,.ui.inverted.grey.buttons .button.active,.ui.inverted.grey.buttons .button:active,.ui.inverted.grey.buttons .button:focus,.ui.inverted.grey.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:rgba(0,0,0,.6)}.ui.inverted.grey.button:hover,.ui.inverted.grey.buttons .button:hover{background-color:#cfd0d2}.ui.inverted.grey.button:focus,.ui.inverted.grey.buttons .button:focus{background-color:#c7c9cb}.ui.inverted.grey.active.button,.ui.inverted.grey.buttons .active.button{background-color:#cfd0d2}.ui.inverted.grey.button:active,.ui.inverted.grey.buttons .button:active{background-color:#c2c4c5}.ui.inverted.grey.basic.button,.ui.inverted.grey.basic.buttons .button,.ui.inverted.grey.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.grey.basic.button:hover,.ui.inverted.grey.basic.buttons .button:hover,.ui.inverted.grey.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #cfd0d2 inset!important;box-shadow:0 0 0 2px #cfd0d2 inset!important;color:#fff!important}.ui.inverted.grey.basic.button:focus,.ui.inverted.grey.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #c7c9cb inset!important;box-shadow:0 0 0 2px #c7c9cb inset!important;color:#dcddde!important}.ui.inverted.grey.basic.active.button,.ui.inverted.grey.basic.buttons .active.button,.ui.inverted.grey.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #cfd0d2 inset!important;box-shadow:0 0 0 2px #cfd0d2 inset!important;color:#fff!important}.ui.inverted.grey.basic.button:active,.ui.inverted.grey.basic.buttons .button:active,.ui.inverted.grey.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #c2c4c5 inset!important;box-shadow:0 0 0 2px #c2c4c5 inset!important;color:#fff!important}.ui.brown.button,.ui.brown.buttons .button{background-color:#a5673f;color:#fff;text-shadow:none;background-image:none}.ui.brown.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.brown.button:hover,.ui.brown.buttons .button:hover{background-color:#975b33;color:#fff;text-shadow:none}.ui.brown.button:focus,.ui.brown.buttons .button:focus{background-color:#90532b;color:#fff;text-shadow:none}.ui.brown.button:active,.ui.brown.buttons .button:active{background-color:#805031;color:#fff;text-shadow:none}.ui.brown.active.button,.ui.brown.button .active.button:active,.ui.brown.buttons .active.button,.ui.brown.buttons .active.button:active{background-color:#995a31;color:#fff;text-shadow:none}.ui.basic.brown.button,.ui.basic.brown.buttons .button{-webkit-box-shadow:0 0 0 1px #a5673f inset!important;box-shadow:0 0 0 1px #a5673f inset!important;color:#a5673f!important}.ui.basic.brown.button:hover,.ui.basic.brown.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #975b33 inset!important;box-shadow:0 0 0 1px #975b33 inset!important;color:#975b33!important}.ui.basic.brown.button:focus,.ui.basic.brown.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #90532b inset!important;box-shadow:0 0 0 1px #90532b inset!important;color:#975b33!important}.ui.basic.brown.active.button,.ui.basic.brown.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #995a31 inset!important;box-shadow:0 0 0 1px #995a31 inset!important;color:#805031!important}.ui.basic.brown.button:active,.ui.basic.brown.buttons .button:active{-webkit-box-shadow:0 0 0 1px #805031 inset!important;box-shadow:0 0 0 1px #805031 inset!important;color:#805031!important}.ui.buttons:not(.vertical)>.basic.brown.button:not(:first-child){margin-left:-1px}.ui.inverted.brown.button,.ui.inverted.brown.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #d67c1c inset!important;box-shadow:0 0 0 2px #d67c1c inset!important;color:#d67c1c}.ui.inverted.brown.button.active,.ui.inverted.brown.button:active,.ui.inverted.brown.button:focus,.ui.inverted.brown.button:hover,.ui.inverted.brown.buttons .button.active,.ui.inverted.brown.buttons .button:active,.ui.inverted.brown.buttons .button:focus,.ui.inverted.brown.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.brown.button:hover,.ui.inverted.brown.buttons .button:hover{background-color:#c86f11}.ui.inverted.brown.button:focus,.ui.inverted.brown.buttons .button:focus{background-color:#c16808}.ui.inverted.brown.active.button,.ui.inverted.brown.buttons .active.button{background-color:#cc6f0d}.ui.inverted.brown.button:active,.ui.inverted.brown.buttons .button:active{background-color:#a96216}.ui.inverted.brown.basic.button,.ui.inverted.brown.basic.buttons .button,.ui.inverted.brown.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.brown.basic.button:hover,.ui.inverted.brown.basic.buttons .button:hover,.ui.inverted.brown.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #c86f11 inset!important;box-shadow:0 0 0 2px #c86f11 inset!important;color:#d67c1c!important}.ui.inverted.brown.basic.button:focus,.ui.inverted.brown.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #c16808 inset!important;box-shadow:0 0 0 2px #c16808 inset!important;color:#d67c1c!important}.ui.inverted.brown.basic.active.button,.ui.inverted.brown.basic.buttons .active.button,.ui.inverted.brown.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #cc6f0d inset!important;box-shadow:0 0 0 2px #cc6f0d inset!important;color:#d67c1c!important}.ui.inverted.brown.basic.button:active,.ui.inverted.brown.basic.buttons .button:active,.ui.inverted.brown.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #a96216 inset!important;box-shadow:0 0 0 2px #a96216 inset!important;color:#d67c1c!important}.ui.blue.button,.ui.blue.buttons .button{background-color:#2185d0;color:#fff;text-shadow:none;background-image:none}.ui.blue.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.blue.button:hover,.ui.blue.buttons .button:hover{background-color:#1678c2;color:#fff;text-shadow:none}.ui.blue.button:focus,.ui.blue.buttons .button:focus{background-color:#0d71bb;color:#fff;text-shadow:none}.ui.blue.button:active,.ui.blue.buttons .button:active{background-color:#1a69a4;color:#fff;text-shadow:none}.ui.blue.active.button,.ui.blue.button .active.button:active,.ui.blue.buttons .active.button,.ui.blue.buttons .active.button:active{background-color:#1279c6;color:#fff;text-shadow:none}.ui.basic.blue.button,.ui.basic.blue.buttons .button{-webkit-box-shadow:0 0 0 1px #2185d0 inset!important;box-shadow:0 0 0 1px #2185d0 inset!important;color:#2185d0!important}.ui.basic.blue.button:hover,.ui.basic.blue.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #1678c2 inset!important;box-shadow:0 0 0 1px #1678c2 inset!important;color:#1678c2!important}.ui.basic.blue.button:focus,.ui.basic.blue.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #0d71bb inset!important;box-shadow:0 0 0 1px #0d71bb inset!important;color:#1678c2!important}.ui.basic.blue.active.button,.ui.basic.blue.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #1279c6 inset!important;box-shadow:0 0 0 1px #1279c6 inset!important;color:#1a69a4!important}.ui.basic.blue.button:active,.ui.basic.blue.buttons .button:active{-webkit-box-shadow:0 0 0 1px #1a69a4 inset!important;box-shadow:0 0 0 1px #1a69a4 inset!important;color:#1a69a4!important}.ui.buttons:not(.vertical)>.basic.blue.button:not(:first-child){margin-left:-1px}.ui.inverted.blue.button,.ui.inverted.blue.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #54c8ff inset!important;box-shadow:0 0 0 2px #54c8ff inset!important;color:#54c8ff}.ui.inverted.blue.button.active,.ui.inverted.blue.button:active,.ui.inverted.blue.button:focus,.ui.inverted.blue.button:hover,.ui.inverted.blue.buttons .button.active,.ui.inverted.blue.buttons .button:active,.ui.inverted.blue.buttons .button:focus,.ui.inverted.blue.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.blue.button:hover,.ui.inverted.blue.buttons .button:hover{background-color:#3ac0ff}.ui.inverted.blue.button:focus,.ui.inverted.blue.buttons .button:focus{background-color:#2bbbff}.ui.inverted.blue.active.button,.ui.inverted.blue.buttons .active.button{background-color:#3ac0ff}.ui.inverted.blue.button:active,.ui.inverted.blue.buttons .button:active{background-color:#21b8ff}.ui.inverted.blue.basic.button,.ui.inverted.blue.basic.buttons .button,.ui.inverted.blue.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.blue.basic.button:hover,.ui.inverted.blue.basic.buttons .button:hover,.ui.inverted.blue.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #3ac0ff inset!important;box-shadow:0 0 0 2px #3ac0ff inset!important;color:#54c8ff!important}.ui.inverted.blue.basic.button:focus,.ui.inverted.blue.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #2bbbff inset!important;box-shadow:0 0 0 2px #2bbbff inset!important;color:#54c8ff!important}.ui.inverted.blue.basic.active.button,.ui.inverted.blue.basic.buttons .active.button,.ui.inverted.blue.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #3ac0ff inset!important;box-shadow:0 0 0 2px #3ac0ff inset!important;color:#54c8ff!important}.ui.inverted.blue.basic.button:active,.ui.inverted.blue.basic.buttons .button:active,.ui.inverted.blue.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #21b8ff inset!important;box-shadow:0 0 0 2px #21b8ff inset!important;color:#54c8ff!important}.ui.green.button,.ui.green.buttons .button{background-color:#21ba45;color:#fff;text-shadow:none;background-image:none}.ui.green.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.green.button:hover,.ui.green.buttons .button:hover{background-color:#16ab39;color:#fff;text-shadow:none}.ui.green.button:focus,.ui.green.buttons .button:focus{background-color:#0ea432;color:#fff;text-shadow:none}.ui.green.button:active,.ui.green.buttons .button:active{background-color:#198f35;color:#fff;text-shadow:none}.ui.green.active.button,.ui.green.button .active.button:active,.ui.green.buttons .active.button,.ui.green.buttons .active.button:active{background-color:#13ae38;color:#fff;text-shadow:none}.ui.basic.green.button,.ui.basic.green.buttons .button{-webkit-box-shadow:0 0 0 1px #21ba45 inset!important;box-shadow:0 0 0 1px #21ba45 inset!important;color:#21ba45!important}.ui.basic.green.button:hover,.ui.basic.green.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #16ab39 inset!important;box-shadow:0 0 0 1px #16ab39 inset!important;color:#16ab39!important}.ui.basic.green.button:focus,.ui.basic.green.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #0ea432 inset!important;box-shadow:0 0 0 1px #0ea432 inset!important;color:#16ab39!important}.ui.basic.green.active.button,.ui.basic.green.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #13ae38 inset!important;box-shadow:0 0 0 1px #13ae38 inset!important;color:#198f35!important}.ui.basic.green.button:active,.ui.basic.green.buttons .button:active{-webkit-box-shadow:0 0 0 1px #198f35 inset!important;box-shadow:0 0 0 1px #198f35 inset!important;color:#198f35!important}.ui.buttons:not(.vertical)>.basic.green.button:not(:first-child){margin-left:-1px}.ui.inverted.green.button,.ui.inverted.green.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #2ecc40 inset!important;box-shadow:0 0 0 2px #2ecc40 inset!important;color:#2ecc40}.ui.inverted.green.button.active,.ui.inverted.green.button:active,.ui.inverted.green.button:focus,.ui.inverted.green.button:hover,.ui.inverted.green.buttons .button.active,.ui.inverted.green.buttons .button:active,.ui.inverted.green.buttons .button:focus,.ui.inverted.green.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.green.button:hover,.ui.inverted.green.buttons .button:hover{background-color:#22be34}.ui.inverted.green.button:focus,.ui.inverted.green.buttons .button:focus{background-color:#19b82b}.ui.inverted.green.active.button,.ui.inverted.green.buttons .active.button{background-color:#1fc231}.ui.inverted.green.button:active,.ui.inverted.green.buttons .button:active{background-color:#25a233}.ui.inverted.green.basic.button,.ui.inverted.green.basic.buttons .button,.ui.inverted.green.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.green.basic.button:hover,.ui.inverted.green.basic.buttons .button:hover,.ui.inverted.green.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #22be34 inset!important;box-shadow:0 0 0 2px #22be34 inset!important;color:#2ecc40!important}.ui.inverted.green.basic.button:focus,.ui.inverted.green.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #19b82b inset!important;box-shadow:0 0 0 2px #19b82b inset!important;color:#2ecc40!important}.ui.inverted.green.basic.active.button,.ui.inverted.green.basic.buttons .active.button,.ui.inverted.green.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #1fc231 inset!important;box-shadow:0 0 0 2px #1fc231 inset!important;color:#2ecc40!important}.ui.inverted.green.basic.button:active,.ui.inverted.green.basic.buttons .button:active,.ui.inverted.green.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #25a233 inset!important;box-shadow:0 0 0 2px #25a233 inset!important;color:#2ecc40!important}.ui.orange.button,.ui.orange.buttons .button{background-color:#f2711c;color:#fff;text-shadow:none;background-image:none}.ui.orange.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.orange.button:hover,.ui.orange.buttons .button:hover{background-color:#f26202;color:#fff;text-shadow:none}.ui.orange.button:focus,.ui.orange.buttons .button:focus{background-color:#e55b00;color:#fff;text-shadow:none}.ui.orange.button:active,.ui.orange.buttons .button:active{background-color:#cf590c;color:#fff;text-shadow:none}.ui.orange.active.button,.ui.orange.button .active.button:active,.ui.orange.buttons .active.button,.ui.orange.buttons .active.button:active{background-color:#f56100;color:#fff;text-shadow:none}.ui.basic.orange.button,.ui.basic.orange.buttons .button{-webkit-box-shadow:0 0 0 1px #f2711c inset!important;box-shadow:0 0 0 1px #f2711c inset!important;color:#f2711c!important}.ui.basic.orange.button:hover,.ui.basic.orange.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #f26202 inset!important;box-shadow:0 0 0 1px #f26202 inset!important;color:#f26202!important}.ui.basic.orange.button:focus,.ui.basic.orange.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #e55b00 inset!important;box-shadow:0 0 0 1px #e55b00 inset!important;color:#f26202!important}.ui.basic.orange.active.button,.ui.basic.orange.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #f56100 inset!important;box-shadow:0 0 0 1px #f56100 inset!important;color:#cf590c!important}.ui.basic.orange.button:active,.ui.basic.orange.buttons .button:active{-webkit-box-shadow:0 0 0 1px #cf590c inset!important;box-shadow:0 0 0 1px #cf590c inset!important;color:#cf590c!important}.ui.buttons:not(.vertical)>.basic.orange.button:not(:first-child){margin-left:-1px}.ui.inverted.orange.button,.ui.inverted.orange.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #ff851b inset!important;box-shadow:0 0 0 2px #ff851b inset!important;color:#ff851b}.ui.inverted.orange.button.active,.ui.inverted.orange.button:active,.ui.inverted.orange.button:focus,.ui.inverted.orange.button:hover,.ui.inverted.orange.buttons .button.active,.ui.inverted.orange.buttons .button:active,.ui.inverted.orange.buttons .button:focus,.ui.inverted.orange.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.orange.button:hover,.ui.inverted.orange.buttons .button:hover{background-color:#ff7701}.ui.inverted.orange.button:focus,.ui.inverted.orange.buttons .button:focus{background-color:#f17000}.ui.inverted.orange.active.button,.ui.inverted.orange.buttons .active.button{background-color:#ff7701}.ui.inverted.orange.button:active,.ui.inverted.orange.buttons .button:active{background-color:#e76b00}.ui.inverted.orange.basic.button,.ui.inverted.orange.basic.buttons .button,.ui.inverted.orange.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.orange.basic.button:hover,.ui.inverted.orange.basic.buttons .button:hover,.ui.inverted.orange.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #ff7701 inset!important;box-shadow:0 0 0 2px #ff7701 inset!important;color:#ff851b!important}.ui.inverted.orange.basic.button:focus,.ui.inverted.orange.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #f17000 inset!important;box-shadow:0 0 0 2px #f17000 inset!important;color:#ff851b!important}.ui.inverted.orange.basic.active.button,.ui.inverted.orange.basic.buttons .active.button,.ui.inverted.orange.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #ff7701 inset!important;box-shadow:0 0 0 2px #ff7701 inset!important;color:#ff851b!important}.ui.inverted.orange.basic.button:active,.ui.inverted.orange.basic.buttons .button:active,.ui.inverted.orange.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #e76b00 inset!important;box-shadow:0 0 0 2px #e76b00 inset!important;color:#ff851b!important}.ui.pink.button,.ui.pink.buttons .button{background-color:#e03997;color:#fff;text-shadow:none;background-image:none}.ui.pink.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.pink.button:hover,.ui.pink.buttons .button:hover{background-color:#e61a8d;color:#fff;text-shadow:none}.ui.pink.button:focus,.ui.pink.buttons .button:focus{background-color:#e10f85;color:#fff;text-shadow:none}.ui.pink.button:active,.ui.pink.buttons .button:active{background-color:#c71f7e;color:#fff;text-shadow:none}.ui.pink.active.button,.ui.pink.button .active.button:active,.ui.pink.buttons .active.button,.ui.pink.buttons .active.button:active{background-color:#ea158d;color:#fff;text-shadow:none}.ui.basic.pink.button,.ui.basic.pink.buttons .button{-webkit-box-shadow:0 0 0 1px #e03997 inset!important;box-shadow:0 0 0 1px #e03997 inset!important;color:#e03997!important}.ui.basic.pink.button:hover,.ui.basic.pink.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #e61a8d inset!important;box-shadow:0 0 0 1px #e61a8d inset!important;color:#e61a8d!important}.ui.basic.pink.button:focus,.ui.basic.pink.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #e10f85 inset!important;box-shadow:0 0 0 1px #e10f85 inset!important;color:#e61a8d!important}.ui.basic.pink.active.button,.ui.basic.pink.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #ea158d inset!important;box-shadow:0 0 0 1px #ea158d inset!important;color:#c71f7e!important}.ui.basic.pink.button:active,.ui.basic.pink.buttons .button:active{-webkit-box-shadow:0 0 0 1px #c71f7e inset!important;box-shadow:0 0 0 1px #c71f7e inset!important;color:#c71f7e!important}.ui.buttons:not(.vertical)>.basic.pink.button:not(:first-child){margin-left:-1px}.ui.inverted.pink.button,.ui.inverted.pink.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #ff8edf inset!important;box-shadow:0 0 0 2px #ff8edf inset!important;color:#ff8edf}.ui.inverted.pink.button.active,.ui.inverted.pink.button:active,.ui.inverted.pink.button:focus,.ui.inverted.pink.button:hover,.ui.inverted.pink.buttons .button.active,.ui.inverted.pink.buttons .button:active,.ui.inverted.pink.buttons .button:focus,.ui.inverted.pink.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.pink.button:hover,.ui.inverted.pink.buttons .button:hover{background-color:#ff74d8}.ui.inverted.pink.button:focus,.ui.inverted.pink.buttons .button:focus{background-color:#ff65d3}.ui.inverted.pink.active.button,.ui.inverted.pink.buttons .active.button{background-color:#ff74d8}.ui.inverted.pink.button:active,.ui.inverted.pink.buttons .button:active{background-color:#ff5bd1}.ui.inverted.pink.basic.button,.ui.inverted.pink.basic.buttons .button,.ui.inverted.pink.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.pink.basic.button:hover,.ui.inverted.pink.basic.buttons .button:hover,.ui.inverted.pink.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #ff74d8 inset!important;box-shadow:0 0 0 2px #ff74d8 inset!important;color:#ff8edf!important}.ui.inverted.pink.basic.button:focus,.ui.inverted.pink.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #ff65d3 inset!important;box-shadow:0 0 0 2px #ff65d3 inset!important;color:#ff8edf!important}.ui.inverted.pink.basic.active.button,.ui.inverted.pink.basic.buttons .active.button,.ui.inverted.pink.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #ff74d8 inset!important;box-shadow:0 0 0 2px #ff74d8 inset!important;color:#ff8edf!important}.ui.inverted.pink.basic.button:active,.ui.inverted.pink.basic.buttons .button:active,.ui.inverted.pink.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #ff5bd1 inset!important;box-shadow:0 0 0 2px #ff5bd1 inset!important;color:#ff8edf!important}.ui.violet.button,.ui.violet.buttons .button{background-color:#6435c9;color:#fff;text-shadow:none;background-image:none}.ui.violet.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.violet.button:hover,.ui.violet.buttons .button:hover{background-color:#5829bb;color:#fff;text-shadow:none}.ui.violet.button:focus,.ui.violet.buttons .button:focus{background-color:#4f20b5;color:#fff;text-shadow:none}.ui.violet.button:active,.ui.violet.buttons .button:active{background-color:#502aa1;color:#fff;text-shadow:none}.ui.violet.active.button,.ui.violet.button .active.button:active,.ui.violet.buttons .active.button,.ui.violet.buttons .active.button:active{background-color:#5626bf;color:#fff;text-shadow:none}.ui.basic.violet.button,.ui.basic.violet.buttons .button{-webkit-box-shadow:0 0 0 1px #6435c9 inset!important;box-shadow:0 0 0 1px #6435c9 inset!important;color:#6435c9!important}.ui.basic.violet.button:hover,.ui.basic.violet.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #5829bb inset!important;box-shadow:0 0 0 1px #5829bb inset!important;color:#5829bb!important}.ui.basic.violet.button:focus,.ui.basic.violet.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #4f20b5 inset!important;box-shadow:0 0 0 1px #4f20b5 inset!important;color:#5829bb!important}.ui.basic.violet.active.button,.ui.basic.violet.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #5626bf inset!important;box-shadow:0 0 0 1px #5626bf inset!important;color:#502aa1!important}.ui.basic.violet.button:active,.ui.basic.violet.buttons .button:active{-webkit-box-shadow:0 0 0 1px #502aa1 inset!important;box-shadow:0 0 0 1px #502aa1 inset!important;color:#502aa1!important}.ui.buttons:not(.vertical)>.basic.violet.button:not(:first-child){margin-left:-1px}.ui.inverted.violet.button,.ui.inverted.violet.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #a291fb inset!important;box-shadow:0 0 0 2px #a291fb inset!important;color:#a291fb}.ui.inverted.violet.button.active,.ui.inverted.violet.button:active,.ui.inverted.violet.button:focus,.ui.inverted.violet.button:hover,.ui.inverted.violet.buttons .button.active,.ui.inverted.violet.buttons .button:active,.ui.inverted.violet.buttons .button:focus,.ui.inverted.violet.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.violet.button:hover,.ui.inverted.violet.buttons .button:hover{background-color:#8a73ff}.ui.inverted.violet.button:focus,.ui.inverted.violet.buttons .button:focus{background-color:#7d64ff}.ui.inverted.violet.active.button,.ui.inverted.violet.buttons .active.button{background-color:#8a73ff}.ui.inverted.violet.button:active,.ui.inverted.violet.buttons .button:active{background-color:#7860f9}.ui.inverted.violet.basic.button,.ui.inverted.violet.basic.buttons .button,.ui.inverted.violet.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.violet.basic.button:hover,.ui.inverted.violet.basic.buttons .button:hover,.ui.inverted.violet.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #8a73ff inset!important;box-shadow:0 0 0 2px #8a73ff inset!important;color:#a291fb!important}.ui.inverted.violet.basic.button:focus,.ui.inverted.violet.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #7d64ff inset!important;box-shadow:0 0 0 2px #7d64ff inset!important;color:#a291fb!important}.ui.inverted.violet.basic.active.button,.ui.inverted.violet.basic.buttons .active.button,.ui.inverted.violet.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #8a73ff inset!important;box-shadow:0 0 0 2px #8a73ff inset!important;color:#a291fb!important}.ui.inverted.violet.basic.button:active,.ui.inverted.violet.basic.buttons .button:active,.ui.inverted.violet.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #7860f9 inset!important;box-shadow:0 0 0 2px #7860f9 inset!important;color:#a291fb!important}.ui.purple.button,.ui.purple.buttons .button{background-color:#a333c8;color:#fff;text-shadow:none;background-image:none}.ui.purple.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.purple.button:hover,.ui.purple.buttons .button:hover{background-color:#9627ba;color:#fff;text-shadow:none}.ui.purple.button:focus,.ui.purple.buttons .button:focus{background-color:#8f1eb4;color:#fff;text-shadow:none}.ui.purple.button:active,.ui.purple.buttons .button:active{background-color:#82299f;color:#fff;text-shadow:none}.ui.purple.active.button,.ui.purple.button .active.button:active,.ui.purple.buttons .active.button,.ui.purple.buttons .active.button:active{background-color:#9724be;color:#fff;text-shadow:none}.ui.basic.purple.button,.ui.basic.purple.buttons .button{-webkit-box-shadow:0 0 0 1px #a333c8 inset!important;box-shadow:0 0 0 1px #a333c8 inset!important;color:#a333c8!important}.ui.basic.purple.button:hover,.ui.basic.purple.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #9627ba inset!important;box-shadow:0 0 0 1px #9627ba inset!important;color:#9627ba!important}.ui.basic.purple.button:focus,.ui.basic.purple.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #8f1eb4 inset!important;box-shadow:0 0 0 1px #8f1eb4 inset!important;color:#9627ba!important}.ui.basic.purple.active.button,.ui.basic.purple.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #9724be inset!important;box-shadow:0 0 0 1px #9724be inset!important;color:#82299f!important}.ui.basic.purple.button:active,.ui.basic.purple.buttons .button:active{-webkit-box-shadow:0 0 0 1px #82299f inset!important;box-shadow:0 0 0 1px #82299f inset!important;color:#82299f!important}.ui.buttons:not(.vertical)>.basic.purple.button:not(:first-child){margin-left:-1px}.ui.inverted.purple.button,.ui.inverted.purple.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #dc73ff inset!important;box-shadow:0 0 0 2px #dc73ff inset!important;color:#dc73ff}.ui.inverted.purple.button.active,.ui.inverted.purple.button:active,.ui.inverted.purple.button:focus,.ui.inverted.purple.button:hover,.ui.inverted.purple.buttons .button.active,.ui.inverted.purple.buttons .button:active,.ui.inverted.purple.buttons .button:focus,.ui.inverted.purple.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.purple.button:hover,.ui.inverted.purple.buttons .button:hover{background-color:#d65aff}.ui.inverted.purple.button:focus,.ui.inverted.purple.buttons .button:focus{background-color:#d24aff}.ui.inverted.purple.active.button,.ui.inverted.purple.buttons .active.button{background-color:#d65aff}.ui.inverted.purple.button:active,.ui.inverted.purple.buttons .button:active{background-color:#cf40ff}.ui.inverted.purple.basic.button,.ui.inverted.purple.basic.buttons .button,.ui.inverted.purple.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.purple.basic.button:hover,.ui.inverted.purple.basic.buttons .button:hover,.ui.inverted.purple.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #d65aff inset!important;box-shadow:0 0 0 2px #d65aff inset!important;color:#dc73ff!important}.ui.inverted.purple.basic.button:focus,.ui.inverted.purple.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #d24aff inset!important;box-shadow:0 0 0 2px #d24aff inset!important;color:#dc73ff!important}.ui.inverted.purple.basic.active.button,.ui.inverted.purple.basic.buttons .active.button,.ui.inverted.purple.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #d65aff inset!important;box-shadow:0 0 0 2px #d65aff inset!important;color:#dc73ff!important}.ui.inverted.purple.basic.button:active,.ui.inverted.purple.basic.buttons .button:active,.ui.inverted.purple.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #cf40ff inset!important;box-shadow:0 0 0 2px #cf40ff inset!important;color:#dc73ff!important}.ui.red.button,.ui.red.buttons .button{background-color:#db2828;color:#fff;text-shadow:none;background-image:none}.ui.red.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.red.button:hover,.ui.red.buttons .button:hover{background-color:#d01919;color:#fff;text-shadow:none}.ui.red.button:focus,.ui.red.buttons .button:focus{background-color:#ca1010;color:#fff;text-shadow:none}.ui.red.button:active,.ui.red.buttons .button:active{background-color:#b21e1e;color:#fff;text-shadow:none}.ui.red.active.button,.ui.red.button .active.button:active,.ui.red.buttons .active.button,.ui.red.buttons .active.button:active{background-color:#d41515;color:#fff;text-shadow:none}.ui.basic.red.button,.ui.basic.red.buttons .button{-webkit-box-shadow:0 0 0 1px #db2828 inset!important;box-shadow:0 0 0 1px #db2828 inset!important;color:#db2828!important}.ui.basic.red.button:hover,.ui.basic.red.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #d01919 inset!important;box-shadow:0 0 0 1px #d01919 inset!important;color:#d01919!important}.ui.basic.red.button:focus,.ui.basic.red.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #ca1010 inset!important;box-shadow:0 0 0 1px #ca1010 inset!important;color:#d01919!important}.ui.basic.red.active.button,.ui.basic.red.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #d41515 inset!important;box-shadow:0 0 0 1px #d41515 inset!important;color:#b21e1e!important}.ui.basic.red.button:active,.ui.basic.red.buttons .button:active{-webkit-box-shadow:0 0 0 1px #b21e1e inset!important;box-shadow:0 0 0 1px #b21e1e inset!important;color:#b21e1e!important}.ui.buttons:not(.vertical)>.basic.red.button:not(:first-child){margin-left:-1px}.ui.inverted.red.button,.ui.inverted.red.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #ff695e inset!important;box-shadow:0 0 0 2px #ff695e inset!important;color:#ff695e}.ui.inverted.red.button.active,.ui.inverted.red.button:active,.ui.inverted.red.button:focus,.ui.inverted.red.button:hover,.ui.inverted.red.buttons .button.active,.ui.inverted.red.buttons .button:active,.ui.inverted.red.buttons .button:focus,.ui.inverted.red.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.red.button:hover,.ui.inverted.red.buttons .button:hover{background-color:#ff5144}.ui.inverted.red.button:focus,.ui.inverted.red.buttons .button:focus{background-color:#ff4335}.ui.inverted.red.active.button,.ui.inverted.red.buttons .active.button{background-color:#ff5144}.ui.inverted.red.button:active,.ui.inverted.red.buttons .button:active{background-color:#ff392b}.ui.inverted.red.basic.button,.ui.inverted.red.basic.buttons .button,.ui.inverted.red.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.red.basic.button:hover,.ui.inverted.red.basic.buttons .button:hover,.ui.inverted.red.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #ff5144 inset!important;box-shadow:0 0 0 2px #ff5144 inset!important;color:#ff695e!important}.ui.inverted.red.basic.button:focus,.ui.inverted.red.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #ff4335 inset!important;box-shadow:0 0 0 2px #ff4335 inset!important;color:#ff695e!important}.ui.inverted.red.basic.active.button,.ui.inverted.red.basic.buttons .active.button,.ui.inverted.red.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #ff5144 inset!important;box-shadow:0 0 0 2px #ff5144 inset!important;color:#ff695e!important}.ui.inverted.red.basic.button:active,.ui.inverted.red.basic.buttons .button:active,.ui.inverted.red.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #ff392b inset!important;box-shadow:0 0 0 2px #ff392b inset!important;color:#ff695e!important}.ui.teal.button,.ui.teal.buttons .button{background-color:#00b5ad;color:#fff;text-shadow:none;background-image:none}.ui.teal.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.teal.button:hover,.ui.teal.buttons .button:hover{background-color:#009c95;color:#fff;text-shadow:none}.ui.teal.button:focus,.ui.teal.buttons .button:focus{background-color:#008c86;color:#fff;text-shadow:none}.ui.teal.button:active,.ui.teal.buttons .button:active{background-color:#00827c;color:#fff;text-shadow:none}.ui.teal.active.button,.ui.teal.button .active.button:active,.ui.teal.buttons .active.button,.ui.teal.buttons .active.button:active{background-color:#009c95;color:#fff;text-shadow:none}.ui.basic.teal.button,.ui.basic.teal.buttons .button{-webkit-box-shadow:0 0 0 1px #00b5ad inset!important;box-shadow:0 0 0 1px #00b5ad inset!important;color:#00b5ad!important}.ui.basic.teal.button:hover,.ui.basic.teal.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #009c95 inset!important;box-shadow:0 0 0 1px #009c95 inset!important;color:#009c95!important}.ui.basic.teal.button:focus,.ui.basic.teal.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #008c86 inset!important;box-shadow:0 0 0 1px #008c86 inset!important;color:#009c95!important}.ui.basic.teal.active.button,.ui.basic.teal.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #009c95 inset!important;box-shadow:0 0 0 1px #009c95 inset!important;color:#00827c!important}.ui.basic.teal.button:active,.ui.basic.teal.buttons .button:active{-webkit-box-shadow:0 0 0 1px #00827c inset!important;box-shadow:0 0 0 1px #00827c inset!important;color:#00827c!important}.ui.buttons:not(.vertical)>.basic.teal.button:not(:first-child){margin-left:-1px}.ui.inverted.teal.button,.ui.inverted.teal.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #6dffff inset!important;box-shadow:0 0 0 2px #6dffff inset!important;color:#6dffff}.ui.inverted.teal.button.active,.ui.inverted.teal.button:active,.ui.inverted.teal.button:focus,.ui.inverted.teal.button:hover,.ui.inverted.teal.buttons .button.active,.ui.inverted.teal.buttons .button:active,.ui.inverted.teal.buttons .button:focus,.ui.inverted.teal.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:rgba(0,0,0,.6)}.ui.inverted.teal.button:hover,.ui.inverted.teal.buttons .button:hover{background-color:#54ffff}.ui.inverted.teal.button:focus,.ui.inverted.teal.buttons .button:focus{background-color:#4ff}.ui.inverted.teal.active.button,.ui.inverted.teal.buttons .active.button{background-color:#54ffff}.ui.inverted.teal.button:active,.ui.inverted.teal.buttons .button:active{background-color:#3affff}.ui.inverted.teal.basic.button,.ui.inverted.teal.basic.buttons .button,.ui.inverted.teal.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.teal.basic.button:hover,.ui.inverted.teal.basic.buttons .button:hover,.ui.inverted.teal.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #54ffff inset!important;box-shadow:0 0 0 2px #54ffff inset!important;color:#6dffff!important}.ui.inverted.teal.basic.button:focus,.ui.inverted.teal.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #4ff inset!important;box-shadow:0 0 0 2px #4ff inset!important;color:#6dffff!important}.ui.inverted.teal.basic.active.button,.ui.inverted.teal.basic.buttons .active.button,.ui.inverted.teal.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #54ffff inset!important;box-shadow:0 0 0 2px #54ffff inset!important;color:#6dffff!important}.ui.inverted.teal.basic.button:active,.ui.inverted.teal.basic.buttons .button:active,.ui.inverted.teal.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #3affff inset!important;box-shadow:0 0 0 2px #3affff inset!important;color:#6dffff!important}.ui.olive.button,.ui.olive.buttons .button{background-color:#b5cc18;color:#fff;text-shadow:none;background-image:none}.ui.olive.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.olive.button:hover,.ui.olive.buttons .button:hover{background-color:#a7bd0d;color:#fff;text-shadow:none}.ui.olive.button:focus,.ui.olive.buttons .button:focus{background-color:#a0b605;color:#fff;text-shadow:none}.ui.olive.button:active,.ui.olive.buttons .button:active{background-color:#8d9e13;color:#fff;text-shadow:none}.ui.olive.active.button,.ui.olive.button .active.button:active,.ui.olive.buttons .active.button,.ui.olive.buttons .active.button:active{background-color:#aac109;color:#fff;text-shadow:none}.ui.basic.olive.button,.ui.basic.olive.buttons .button{-webkit-box-shadow:0 0 0 1px #b5cc18 inset!important;box-shadow:0 0 0 1px #b5cc18 inset!important;color:#b5cc18!important}.ui.basic.olive.button:hover,.ui.basic.olive.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #a7bd0d inset!important;box-shadow:0 0 0 1px #a7bd0d inset!important;color:#a7bd0d!important}.ui.basic.olive.button:focus,.ui.basic.olive.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #a0b605 inset!important;box-shadow:0 0 0 1px #a0b605 inset!important;color:#a7bd0d!important}.ui.basic.olive.active.button,.ui.basic.olive.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #aac109 inset!important;box-shadow:0 0 0 1px #aac109 inset!important;color:#8d9e13!important}.ui.basic.olive.button:active,.ui.basic.olive.buttons .button:active{-webkit-box-shadow:0 0 0 1px #8d9e13 inset!important;box-shadow:0 0 0 1px #8d9e13 inset!important;color:#8d9e13!important}.ui.buttons:not(.vertical)>.basic.olive.button:not(:first-child){margin-left:-1px}.ui.inverted.olive.button,.ui.inverted.olive.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #d9e778 inset!important;box-shadow:0 0 0 2px #d9e778 inset!important;color:#d9e778}.ui.inverted.olive.button.active,.ui.inverted.olive.button:active,.ui.inverted.olive.button:focus,.ui.inverted.olive.button:hover,.ui.inverted.olive.buttons .button.active,.ui.inverted.olive.buttons .button:active,.ui.inverted.olive.buttons .button:focus,.ui.inverted.olive.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:rgba(0,0,0,.6)}.ui.inverted.olive.button:hover,.ui.inverted.olive.buttons .button:hover{background-color:#d8ea5c}.ui.inverted.olive.button:focus,.ui.inverted.olive.buttons .button:focus{background-color:#daef47}.ui.inverted.olive.active.button,.ui.inverted.olive.buttons .active.button{background-color:#daed59}.ui.inverted.olive.button:active,.ui.inverted.olive.buttons .button:active{background-color:#cddf4d}.ui.inverted.olive.basic.button,.ui.inverted.olive.basic.buttons .button,.ui.inverted.olive.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.olive.basic.button:hover,.ui.inverted.olive.basic.buttons .button:hover,.ui.inverted.olive.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #d8ea5c inset!important;box-shadow:0 0 0 2px #d8ea5c inset!important;color:#d9e778!important}.ui.inverted.olive.basic.button:focus,.ui.inverted.olive.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #daef47 inset!important;box-shadow:0 0 0 2px #daef47 inset!important;color:#d9e778!important}.ui.inverted.olive.basic.active.button,.ui.inverted.olive.basic.buttons .active.button,.ui.inverted.olive.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #daed59 inset!important;box-shadow:0 0 0 2px #daed59 inset!important;color:#d9e778!important}.ui.inverted.olive.basic.button:active,.ui.inverted.olive.basic.buttons .button:active,.ui.inverted.olive.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #cddf4d inset!important;box-shadow:0 0 0 2px #cddf4d inset!important;color:#d9e778!important}.ui.yellow.button,.ui.yellow.buttons .button{background-color:#fbbd08;color:#fff;text-shadow:none;background-image:none}.ui.yellow.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.yellow.button:hover,.ui.yellow.buttons .button:hover{background-color:#eaae00;color:#fff;text-shadow:none}.ui.yellow.button:focus,.ui.yellow.buttons .button:focus{background-color:#daa300;color:#fff;text-shadow:none}.ui.yellow.button:active,.ui.yellow.buttons .button:active{background-color:#cd9903;color:#fff;text-shadow:none}.ui.yellow.active.button,.ui.yellow.button .active.button:active,.ui.yellow.buttons .active.button,.ui.yellow.buttons .active.button:active{background-color:#eaae00;color:#fff;text-shadow:none}.ui.basic.yellow.button,.ui.basic.yellow.buttons .button{-webkit-box-shadow:0 0 0 1px #fbbd08 inset!important;box-shadow:0 0 0 1px #fbbd08 inset!important;color:#fbbd08!important}.ui.basic.yellow.button:hover,.ui.basic.yellow.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #eaae00 inset!important;box-shadow:0 0 0 1px #eaae00 inset!important;color:#eaae00!important}.ui.basic.yellow.button:focus,.ui.basic.yellow.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #daa300 inset!important;box-shadow:0 0 0 1px #daa300 inset!important;color:#eaae00!important}.ui.basic.yellow.active.button,.ui.basic.yellow.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #eaae00 inset!important;box-shadow:0 0 0 1px #eaae00 inset!important;color:#cd9903!important}.ui.basic.yellow.button:active,.ui.basic.yellow.buttons .button:active{-webkit-box-shadow:0 0 0 1px #cd9903 inset!important;box-shadow:0 0 0 1px #cd9903 inset!important;color:#cd9903!important}.ui.buttons:not(.vertical)>.basic.yellow.button:not(:first-child){margin-left:-1px}.ui.inverted.yellow.button,.ui.inverted.yellow.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #ffe21f inset!important;box-shadow:0 0 0 2px #ffe21f inset!important;color:#ffe21f}.ui.inverted.yellow.button.active,.ui.inverted.yellow.button:active,.ui.inverted.yellow.button:focus,.ui.inverted.yellow.button:hover,.ui.inverted.yellow.buttons .button.active,.ui.inverted.yellow.buttons .button:active,.ui.inverted.yellow.buttons .button:focus,.ui.inverted.yellow.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:rgba(0,0,0,.6)}.ui.inverted.yellow.button:hover,.ui.inverted.yellow.buttons .button:hover{background-color:#ffdf05}.ui.inverted.yellow.button:focus,.ui.inverted.yellow.buttons .button:focus{background-color:#f5d500}.ui.inverted.yellow.active.button,.ui.inverted.yellow.buttons .active.button{background-color:#ffdf05}.ui.inverted.yellow.button:active,.ui.inverted.yellow.buttons .button:active{background-color:#ebcd00}.ui.inverted.yellow.basic.button,.ui.inverted.yellow.basic.buttons .button,.ui.inverted.yellow.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.yellow.basic.button:hover,.ui.inverted.yellow.basic.buttons .button:hover,.ui.inverted.yellow.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #ffdf05 inset!important;box-shadow:0 0 0 2px #ffdf05 inset!important;color:#ffe21f!important}.ui.inverted.yellow.basic.button:focus,.ui.inverted.yellow.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #f5d500 inset!important;box-shadow:0 0 0 2px #f5d500 inset!important;color:#ffe21f!important}.ui.inverted.yellow.basic.active.button,.ui.inverted.yellow.basic.buttons .active.button,.ui.inverted.yellow.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #ffdf05 inset!important;box-shadow:0 0 0 2px #ffdf05 inset!important;color:#ffe21f!important}.ui.inverted.yellow.basic.button:active,.ui.inverted.yellow.basic.buttons .button:active,.ui.inverted.yellow.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #ebcd00 inset!important;box-shadow:0 0 0 2px #ebcd00 inset!important;color:#ffe21f!important}.ui.primary.button,.ui.primary.buttons .button{background-color:#2185d0;color:#fff;text-shadow:none;background-image:none}.ui.primary.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.primary.button:hover,.ui.primary.buttons .button:hover{background-color:#1678c2;color:#fff;text-shadow:none}.ui.primary.button:focus,.ui.primary.buttons .button:focus{background-color:#0d71bb;color:#fff;text-shadow:none}.ui.primary.button:active,.ui.primary.buttons .button:active{background-color:#1a69a4;color:#fff;text-shadow:none}.ui.primary.active.button,.ui.primary.button .active.button:active,.ui.primary.buttons .active.button,.ui.primary.buttons .active.button:active{background-color:#1279c6;color:#fff;text-shadow:none}.ui.basic.primary.button,.ui.basic.primary.buttons .button{-webkit-box-shadow:0 0 0 1px #2185d0 inset!important;box-shadow:0 0 0 1px #2185d0 inset!important;color:#2185d0!important}.ui.basic.primary.button:hover,.ui.basic.primary.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #1678c2 inset!important;box-shadow:0 0 0 1px #1678c2 inset!important;color:#1678c2!important}.ui.basic.primary.button:focus,.ui.basic.primary.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #0d71bb inset!important;box-shadow:0 0 0 1px #0d71bb inset!important;color:#1678c2!important}.ui.basic.primary.active.button,.ui.basic.primary.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #1279c6 inset!important;box-shadow:0 0 0 1px #1279c6 inset!important;color:#1a69a4!important}.ui.basic.primary.button:active,.ui.basic.primary.buttons .button:active{-webkit-box-shadow:0 0 0 1px #1a69a4 inset!important;box-shadow:0 0 0 1px #1a69a4 inset!important;color:#1a69a4!important}.ui.buttons:not(.vertical)>.basic.primary.button:not(:first-child){margin-left:-1px}.ui.inverted.primary.button,.ui.inverted.primary.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #54c8ff inset!important;box-shadow:0 0 0 2px #54c8ff inset!important;color:#54c8ff}.ui.inverted.primary.button.active,.ui.inverted.primary.button:active,.ui.inverted.primary.button:focus,.ui.inverted.primary.button:hover,.ui.inverted.primary.buttons .button.active,.ui.inverted.primary.buttons .button:active,.ui.inverted.primary.buttons .button:focus,.ui.inverted.primary.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.primary.button:hover,.ui.inverted.primary.buttons .button:hover{background-color:#3ac0ff}.ui.inverted.primary.button:focus,.ui.inverted.primary.buttons .button:focus{background-color:#2bbbff}.ui.inverted.primary.active.button,.ui.inverted.primary.buttons .active.button{background-color:#3ac0ff}.ui.inverted.primary.button:active,.ui.inverted.primary.buttons .button:active{background-color:#21b8ff}.ui.inverted.primary.basic.button,.ui.inverted.primary.basic.buttons .button,.ui.inverted.primary.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.primary.basic.button:hover,.ui.inverted.primary.basic.buttons .button:hover,.ui.inverted.primary.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #3ac0ff inset!important;box-shadow:0 0 0 2px #3ac0ff inset!important;color:#54c8ff!important}.ui.inverted.primary.basic.button:focus,.ui.inverted.primary.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #2bbbff inset!important;box-shadow:0 0 0 2px #2bbbff inset!important;color:#54c8ff!important}.ui.inverted.primary.basic.active.button,.ui.inverted.primary.basic.buttons .active.button,.ui.inverted.primary.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #3ac0ff inset!important;box-shadow:0 0 0 2px #3ac0ff inset!important;color:#54c8ff!important}.ui.inverted.primary.basic.button:active,.ui.inverted.primary.basic.buttons .button:active,.ui.inverted.primary.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #21b8ff inset!important;box-shadow:0 0 0 2px #21b8ff inset!important;color:#54c8ff!important}.ui.secondary.button,.ui.secondary.buttons .button{background-color:#1b1c1d;color:#fff;text-shadow:none;background-image:none}.ui.secondary.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.secondary.button:hover,.ui.secondary.buttons .button:hover{background-color:#27292a;color:#fff;text-shadow:none}.ui.secondary.button:focus,.ui.secondary.buttons .button:focus{background-color:#2e3032;color:#fff;text-shadow:none}.ui.secondary.button:active,.ui.secondary.buttons .button:active{background-color:#343637;color:#fff;text-shadow:none}.ui.secondary.active.button,.ui.secondary.button .active.button:active,.ui.secondary.buttons .active.button,.ui.secondary.buttons .active.button:active{background-color:#27292a;color:#fff;text-shadow:none}.ui.basic.secondary.button,.ui.basic.secondary.buttons .button{-webkit-box-shadow:0 0 0 1px #1b1c1d inset!important;box-shadow:0 0 0 1px #1b1c1d inset!important;color:#1b1c1d!important}.ui.basic.secondary.button:hover,.ui.basic.secondary.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #27292a inset!important;box-shadow:0 0 0 1px #27292a inset!important;color:#27292a!important}.ui.basic.secondary.button:focus,.ui.basic.secondary.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #2e3032 inset!important;box-shadow:0 0 0 1px #2e3032 inset!important;color:#27292a!important}.ui.basic.secondary.active.button,.ui.basic.secondary.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #27292a inset!important;box-shadow:0 0 0 1px #27292a inset!important;color:#343637!important}.ui.basic.secondary.button:active,.ui.basic.secondary.buttons .button:active{-webkit-box-shadow:0 0 0 1px #343637 inset!important;box-shadow:0 0 0 1px #343637 inset!important;color:#343637!important}.ui.buttons:not(.vertical)>.basic.primary.button:not(:first-child){margin-left:-1px}.ui.inverted.secondary.button,.ui.inverted.secondary.buttons .button{background-color:transparent;-webkit-box-shadow:0 0 0 2px #545454 inset!important;box-shadow:0 0 0 2px #545454 inset!important;color:#545454}.ui.inverted.secondary.button.active,.ui.inverted.secondary.button:active,.ui.inverted.secondary.button:focus,.ui.inverted.secondary.button:hover,.ui.inverted.secondary.buttons .button.active,.ui.inverted.secondary.buttons .button:active,.ui.inverted.secondary.buttons .button:focus,.ui.inverted.secondary.buttons .button:hover{-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.inverted.secondary.button:hover,.ui.inverted.secondary.buttons .button:hover{background-color:#616161}.ui.inverted.secondary.button:focus,.ui.inverted.secondary.buttons .button:focus{background-color:#686868}.ui.inverted.secondary.active.button,.ui.inverted.secondary.buttons .active.button{background-color:#616161}.ui.inverted.secondary.button:active,.ui.inverted.secondary.buttons .button:active{background-color:#6e6e6e}.ui.inverted.secondary.basic.button,.ui.inverted.secondary.basic.buttons .button,.ui.inverted.secondary.buttons .basic.button{background-color:transparent;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;box-shadow:0 0 0 2px rgba(255,255,255,.5) inset!important;color:#fff!important}.ui.inverted.secondary.basic.button:hover,.ui.inverted.secondary.basic.buttons .button:hover,.ui.inverted.secondary.buttons .basic.button:hover{-webkit-box-shadow:0 0 0 2px #616161 inset!important;box-shadow:0 0 0 2px #616161 inset!important;color:#545454!important}.ui.inverted.secondary.basic.button:focus,.ui.inverted.secondary.basic.buttons .button:focus{-webkit-box-shadow:0 0 0 2px #686868 inset!important;box-shadow:0 0 0 2px #686868 inset!important;color:#545454!important}.ui.inverted.secondary.basic.active.button,.ui.inverted.secondary.basic.buttons .active.button,.ui.inverted.secondary.buttons .basic.active.button{-webkit-box-shadow:0 0 0 2px #616161 inset!important;box-shadow:0 0 0 2px #616161 inset!important;color:#545454!important}.ui.inverted.secondary.basic.button:active,.ui.inverted.secondary.basic.buttons .button:active,.ui.inverted.secondary.buttons .basic.button:active{-webkit-box-shadow:0 0 0 2px #6e6e6e inset!important;box-shadow:0 0 0 2px #6e6e6e inset!important;color:#545454!important}.ui.positive.button,.ui.positive.buttons .button{background-color:#21ba45;color:#fff;text-shadow:none;background-image:none}.ui.positive.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.positive.button:hover,.ui.positive.buttons .button:hover{background-color:#16ab39;color:#fff;text-shadow:none}.ui.positive.button:focus,.ui.positive.buttons .button:focus{background-color:#0ea432;color:#fff;text-shadow:none}.ui.positive.button:active,.ui.positive.buttons .button:active{background-color:#198f35;color:#fff;text-shadow:none}.ui.positive.active.button,.ui.positive.button .active.button:active,.ui.positive.buttons .active.button,.ui.positive.buttons .active.button:active{background-color:#13ae38;color:#fff;text-shadow:none}.ui.basic.positive.button,.ui.basic.positive.buttons .button{-webkit-box-shadow:0 0 0 1px #21ba45 inset!important;box-shadow:0 0 0 1px #21ba45 inset!important;color:#21ba45!important}.ui.basic.positive.button:hover,.ui.basic.positive.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #16ab39 inset!important;box-shadow:0 0 0 1px #16ab39 inset!important;color:#16ab39!important}.ui.basic.positive.button:focus,.ui.basic.positive.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #0ea432 inset!important;box-shadow:0 0 0 1px #0ea432 inset!important;color:#16ab39!important}.ui.basic.positive.active.button,.ui.basic.positive.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #13ae38 inset!important;box-shadow:0 0 0 1px #13ae38 inset!important;color:#198f35!important}.ui.basic.positive.button:active,.ui.basic.positive.buttons .button:active{-webkit-box-shadow:0 0 0 1px #198f35 inset!important;box-shadow:0 0 0 1px #198f35 inset!important;color:#198f35!important}.ui.buttons:not(.vertical)>.basic.primary.button:not(:first-child){margin-left:-1px}.ui.negative.button,.ui.negative.buttons .button{background-color:#db2828;color:#fff;text-shadow:none;background-image:none}.ui.negative.button{-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 0 rgba(34,36,38,.15) inset}.ui.negative.button:hover,.ui.negative.buttons .button:hover{background-color:#d01919;color:#fff;text-shadow:none}.ui.negative.button:focus,.ui.negative.buttons .button:focus{background-color:#ca1010;color:#fff;text-shadow:none}.ui.negative.button:active,.ui.negative.buttons .button:active{background-color:#b21e1e;color:#fff;text-shadow:none}.ui.negative.active.button,.ui.negative.button .active.button:active,.ui.negative.buttons .active.button,.ui.negative.buttons .active.button:active{background-color:#d41515;color:#fff;text-shadow:none}.ui.basic.negative.button,.ui.basic.negative.buttons .button{-webkit-box-shadow:0 0 0 1px #db2828 inset!important;box-shadow:0 0 0 1px #db2828 inset!important;color:#db2828!important}.ui.basic.negative.button:hover,.ui.basic.negative.buttons .button:hover{background:0 0!important;-webkit-box-shadow:0 0 0 1px #d01919 inset!important;box-shadow:0 0 0 1px #d01919 inset!important;color:#d01919!important}.ui.basic.negative.button:focus,.ui.basic.negative.buttons .button:focus{background:0 0!important;-webkit-box-shadow:0 0 0 1px #ca1010 inset!important;box-shadow:0 0 0 1px #ca1010 inset!important;color:#d01919!important}.ui.basic.negative.active.button,.ui.basic.negative.buttons .active.button{background:0 0!important;-webkit-box-shadow:0 0 0 1px #d41515 inset!important;box-shadow:0 0 0 1px #d41515 inset!important;color:#b21e1e!important}.ui.basic.negative.button:active,.ui.basic.negative.buttons .button:active{-webkit-box-shadow:0 0 0 1px #b21e1e inset!important;box-shadow:0 0 0 1px #b21e1e inset!important;color:#b21e1e!important}.ui.buttons:not(.vertical)>.basic.primary.button:not(:first-child){margin-left:-1px}.ui.buttons{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;font-size:0;vertical-align:baseline;margin:0 .25em 0 0}.ui.buttons:not(.basic):not(.inverted){-webkit-box-shadow:none;box-shadow:none}.ui.buttons:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui.buttons .button{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;margin:0;border-radius:0;margin:0}.ui.buttons:not(.basic):not(.inverted)>.button,.ui.buttons>.ui.button:not(.basic):not(.inverted){-webkit-box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(34,36,38,.15) inset;box-shadow:0 0 0 1px transparent inset,0 0 0 0 rgba(34,36,38,.15) inset}.ui.buttons .button:first-child{border-left:none;margin-left:0;border-top-left-radius:.28571429rem;border-bottom-left-radius:.28571429rem}.ui.buttons .button:last-child{border-top-right-radius:.28571429rem;border-bottom-right-radius:.28571429rem}.ui.vertical.buttons{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ui.vertical.buttons .button{display:block;float:none;width:100%;margin:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.ui.vertical.buttons .button:first-child{border-top-left-radius:.28571429rem;border-top-right-radius:.28571429rem}.ui.vertical.buttons .button:last-child{margin-bottom:0;border-bottom-left-radius:.28571429rem;border-bottom-right-radius:.28571429rem}.ui.vertical.buttons .button:only-child{border-radius:.28571429rem}/*! -* # Semantic UI 2.4.0 - Container -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.container{display:block;max-width:100%!important}@media only screen and (max-width:767px){.ui.container{width:auto!important;margin-left:1em!important;margin-right:1em!important}.ui.grid.container{width:auto!important}.ui.relaxed.grid.container{width:auto!important}.ui.very.relaxed.grid.container{width:auto!important}}@media only screen and (min-width:768px) and (max-width:991px){.ui.container{width:723px;margin-left:auto!important;margin-right:auto!important}.ui.grid.container{width:calc(723px + 2rem)!important}.ui.relaxed.grid.container{width:calc(723px + 3rem)!important}.ui.very.relaxed.grid.container{width:calc(723px + 5rem)!important}}@media only screen and (min-width:992px) and (max-width:1199px){.ui.container{width:933px;margin-left:auto!important;margin-right:auto!important}.ui.grid.container{width:calc(933px + 2rem)!important}.ui.relaxed.grid.container{width:calc(933px + 3rem)!important}.ui.very.relaxed.grid.container{width:calc(933px + 5rem)!important}}@media only screen and (min-width:1200px){.ui.container{width:1127px;margin-left:auto!important;margin-right:auto!important}.ui.grid.container{width:calc(1127px + 2rem)!important}.ui.relaxed.grid.container{width:calc(1127px + 3rem)!important}.ui.very.relaxed.grid.container{width:calc(1127px + 5rem)!important}}.ui.text.container{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;max-width:700px!important;line-height:1.5}.ui.text.container{font-size:1.14285714rem}.ui.fluid.container{width:100%}.ui[class*="left aligned"].container{text-align:left}.ui[class*="center aligned"].container{text-align:center}.ui[class*="right aligned"].container{text-align:right}.ui.justified.container{text-align:justify;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}/*! -* # Semantic UI 2.4.0 - Divider -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.divider{margin:1rem 0;line-height:1;height:0;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:rgba(0,0,0,.85);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ui.divider:not(.vertical):not(.horizontal){border-top:1px solid rgba(34,36,38,.15);border-bottom:1px solid rgba(255,255,255,.1)}.ui.grid>.column+.divider,.ui.grid>.row>.column+.divider{left:auto}.ui.horizontal.divider{display:table;white-space:nowrap;height:auto;margin:'';line-height:1;text-align:center}.ui.horizontal.divider:after,.ui.horizontal.divider:before{content:'';display:table-cell;position:relative;top:50%;width:50%;background-repeat:no-repeat}.ui.horizontal.divider:before{background-position:right 1em top 50%}.ui.horizontal.divider:after{background-position:left 1em top 50%}.ui.vertical.divider{position:absolute;z-index:2;top:50%;left:50%;margin:0;padding:0;width:auto;height:50%;line-height:0;text-align:center;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.ui.vertical.divider:after,.ui.vertical.divider:before{position:absolute;left:50%;content:'';z-index:3;border-left:1px solid rgba(34,36,38,.15);border-right:1px solid rgba(255,255,255,.1);width:0%;height:calc(100% - 1rem)}.ui.vertical.divider:before{top:-100%}.ui.vertical.divider:after{top:auto;bottom:0}@media only screen and (max-width:767px){.ui.grid .stackable.row .ui.vertical.divider,.ui.stackable.grid .ui.vertical.divider{display:table;white-space:nowrap;height:auto;margin:'';overflow:hidden;line-height:1;text-align:center;position:static;top:0;left:0;-webkit-transform:none;transform:none}.ui.grid .stackable.row .ui.vertical.divider:after,.ui.grid .stackable.row .ui.vertical.divider:before,.ui.stackable.grid .ui.vertical.divider:after,.ui.stackable.grid .ui.vertical.divider:before{position:static;left:0;border-left:none;border-right:none;content:'';display:table-cell;position:relative;top:50%;width:50%;background-repeat:no-repeat}.ui.grid .stackable.row .ui.vertical.divider:before,.ui.stackable.grid .ui.vertical.divider:before{background-position:right 1em top 50%}.ui.grid .stackable.row .ui.vertical.divider:after,.ui.stackable.grid .ui.vertical.divider:after{background-position:left 1em top 50%}}.ui.divider>.icon{margin:0;font-size:1rem;height:1em;vertical-align:middle}.ui.hidden.divider{border-color:transparent!important}.ui.hidden.divider:after,.ui.hidden.divider:before{display:none}.ui.divider.inverted,.ui.horizontal.inverted.divider,.ui.vertical.inverted.divider{color:#fff}.ui.divider.inverted,.ui.divider.inverted:after,.ui.divider.inverted:before{border-top-color:rgba(34,36,38,.15)!important;border-left-color:rgba(34,36,38,.15)!important;border-bottom-color:rgba(255,255,255,.15)!important;border-right-color:rgba(255,255,255,.15)!important}.ui.fitted.divider{margin:0}.ui.clearing.divider{clear:both}.ui.section.divider{margin-top:2rem;margin-bottom:2rem}.ui.divider{font-size:1rem}.ui.horizontal.divider:after,.ui.horizontal.divider:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby/mUcJn5sJXQmOQMAAAAAAJqt+2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC)}@media only screen and (max-width:767px){.ui.grid .stackable.row .ui.vertical.divider:after,.ui.grid .stackable.row .ui.vertical.divider:before,.ui.stackable.grid .ui.vertical.divider:after,.ui.stackable.grid .ui.vertical.divider:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby/mUcJn5sJXQmOQMAAAAAAJqt+2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC)}}/*! -* # Semantic UI 2.4.0 - Flag -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/i.flag:not(.icon){display:inline-block;width:16px;height:11px;line-height:11px;vertical-align:baseline;margin:0 .5em 0 0;text-decoration:inherit;speak:none;font-smoothing:antialiased;-webkit-backface-visibility:hidden;backface-visibility:hidden}i.flag:not(.icon):before{display:inline-block;content:'';background:url(../images/flags.png) no-repeat -108px -1976px;width:16px;height:11px}i.flag.ad:before,i.flag.andorra:before{background-position:0 0}i.flag.ae:before,i.flag.uae:before,i.flag.united.arab.emirates:before{background-position:0 -26px}i.flag.af:before,i.flag.afghanistan:before{background-position:0 -52px}i.flag.ag:before,i.flag.antigua:before{background-position:0 -78px}i.flag.ai:before,i.flag.anguilla:before{background-position:0 -104px}i.flag.al:before,i.flag.albania:before{background-position:0 -130px}i.flag.am:before,i.flag.armenia:before{background-position:0 -156px}i.flag.an:before,i.flag.netherlands.antilles:before{background-position:0 -182px}i.flag.angola:before,i.flag.ao:before{background-position:0 -208px}i.flag.ar:before,i.flag.argentina:before{background-position:0 -234px}i.flag.american.samoa:before,i.flag.as:before{background-position:0 -260px}i.flag.at:before,i.flag.austria:before{background-position:0 -286px}i.flag.au:before,i.flag.australia:before{background-position:0 -312px}i.flag.aruba:before,i.flag.aw:before{background-position:0 -338px}i.flag.aland.islands:before,i.flag.ax:before{background-position:0 -364px}i.flag.az:before,i.flag.azerbaijan:before{background-position:0 -390px}i.flag.ba:before,i.flag.bosnia:before{background-position:0 -416px}i.flag.barbados:before,i.flag.bb:before{background-position:0 -442px}i.flag.bangladesh:before,i.flag.bd:before{background-position:0 -468px}i.flag.be:before,i.flag.belgium:before{background-position:0 -494px}i.flag.bf:before,i.flag.burkina.faso:before{background-position:0 -520px}i.flag.bg:before,i.flag.bulgaria:before{background-position:0 -546px}i.flag.bahrain:before,i.flag.bh:before{background-position:0 -572px}i.flag.bi:before,i.flag.burundi:before{background-position:0 -598px}i.flag.benin:before,i.flag.bj:before{background-position:0 -624px}i.flag.bermuda:before,i.flag.bm:before{background-position:0 -650px}i.flag.bn:before,i.flag.brunei:before{background-position:0 -676px}i.flag.bo:before,i.flag.bolivia:before{background-position:0 -702px}i.flag.br:before,i.flag.brazil:before{background-position:0 -728px}i.flag.bahamas:before,i.flag.bs:before{background-position:0 -754px}i.flag.bhutan:before,i.flag.bt:before{background-position:0 -780px}i.flag.bouvet.island:before,i.flag.bv:before{background-position:0 -806px}i.flag.botswana:before,i.flag.bw:before{background-position:0 -832px}i.flag.belarus:before,i.flag.by:before{background-position:0 -858px}i.flag.belize:before,i.flag.bz:before{background-position:0 -884px}i.flag.ca:before,i.flag.canada:before{background-position:0 -910px}i.flag.cc:before,i.flag.cocos.islands:before{background-position:0 -962px}i.flag.cd:before,i.flag.congo:before{background-position:0 -988px}i.flag.central.african.republic:before,i.flag.cf:before{background-position:0 -1014px}i.flag.cg:before,i.flag.congo.brazzaville:before{background-position:0 -1040px}i.flag.ch:before,i.flag.switzerland:before{background-position:0 -1066px}i.flag.ci:before,i.flag.cote.divoire:before{background-position:0 -1092px}i.flag.ck:before,i.flag.cook.islands:before{background-position:0 -1118px}i.flag.chile:before,i.flag.cl:before{background-position:0 -1144px}i.flag.cameroon:before,i.flag.cm:before{background-position:0 -1170px}i.flag.china:before,i.flag.cn:before{background-position:0 -1196px}i.flag.co:before,i.flag.colombia:before{background-position:0 -1222px}i.flag.costa.rica:before,i.flag.cr:before{background-position:0 -1248px}i.flag.cs:before,i.flag.serbia:before{background-position:0 -1274px}i.flag.cu:before,i.flag.cuba:before{background-position:0 -1300px}i.flag.cape.verde:before,i.flag.cv:before{background-position:0 -1326px}i.flag.christmas.island:before,i.flag.cx:before{background-position:0 -1352px}i.flag.cy:before,i.flag.cyprus:before{background-position:0 -1378px}i.flag.cz:before,i.flag.czech.republic:before{background-position:0 -1404px}i.flag.de:before,i.flag.germany:before{background-position:0 -1430px}i.flag.dj:before,i.flag.djibouti:before{background-position:0 -1456px}i.flag.denmark:before,i.flag.dk:before{background-position:0 -1482px}i.flag.dm:before,i.flag.dominica:before{background-position:0 -1508px}i.flag.do:before,i.flag.dominican.republic:before{background-position:0 -1534px}i.flag.algeria:before,i.flag.dz:before{background-position:0 -1560px}i.flag.ec:before,i.flag.ecuador:before{background-position:0 -1586px}i.flag.ee:before,i.flag.estonia:before{background-position:0 -1612px}i.flag.eg:before,i.flag.egypt:before{background-position:0 -1638px}i.flag.eh:before,i.flag.western.sahara:before{background-position:0 -1664px}i.flag.england:before,i.flag.gb.eng:before{background-position:0 -1690px}i.flag.er:before,i.flag.eritrea:before{background-position:0 -1716px}i.flag.es:before,i.flag.spain:before{background-position:0 -1742px}i.flag.et:before,i.flag.ethiopia:before{background-position:0 -1768px}i.flag.eu:before,i.flag.european.union:before{background-position:0 -1794px}i.flag.fi:before,i.flag.finland:before{background-position:0 -1846px}i.flag.fiji:before,i.flag.fj:before{background-position:0 -1872px}i.flag.falkland.islands:before,i.flag.fk:before{background-position:0 -1898px}i.flag.fm:before,i.flag.micronesia:before{background-position:0 -1924px}i.flag.faroe.islands:before,i.flag.fo:before{background-position:0 -1950px}i.flag.fr:before,i.flag.france:before{background-position:0 -1976px}i.flag.ga:before,i.flag.gabon:before{background-position:-36px 0}i.flag.gb:before,i.flag.uk:before,i.flag.united.kingdom:before{background-position:-36px -26px}i.flag.gd:before,i.flag.grenada:before{background-position:-36px -52px}i.flag.ge:before,i.flag.georgia:before{background-position:-36px -78px}i.flag.french.guiana:before,i.flag.gf:before{background-position:-36px -104px}i.flag.gh:before,i.flag.ghana:before{background-position:-36px -130px}i.flag.gi:before,i.flag.gibraltar:before{background-position:-36px -156px}i.flag.gl:before,i.flag.greenland:before{background-position:-36px -182px}i.flag.gambia:before,i.flag.gm:before{background-position:-36px -208px}i.flag.gn:before,i.flag.guinea:before{background-position:-36px -234px}i.flag.gp:before,i.flag.guadeloupe:before{background-position:-36px -260px}i.flag.equatorial.guinea:before,i.flag.gq:before{background-position:-36px -286px}i.flag.gr:before,i.flag.greece:before{background-position:-36px -312px}i.flag.gs:before,i.flag.sandwich.islands:before{background-position:-36px -338px}i.flag.gt:before,i.flag.guatemala:before{background-position:-36px -364px}i.flag.gu:before,i.flag.guam:before{background-position:-36px -390px}i.flag.guinea-bissau:before,i.flag.gw:before{background-position:-36px -416px}i.flag.guyana:before,i.flag.gy:before{background-position:-36px -442px}i.flag.hk:before,i.flag.hong.kong:before{background-position:-36px -468px}i.flag.heard.island:before,i.flag.hm:before{background-position:-36px -494px}i.flag.hn:before,i.flag.honduras:before{background-position:-36px -520px}i.flag.croatia:before,i.flag.hr:before{background-position:-36px -546px}i.flag.haiti:before,i.flag.ht:before{background-position:-36px -572px}i.flag.hu:before,i.flag.hungary:before{background-position:-36px -598px}i.flag.id:before,i.flag.indonesia:before{background-position:-36px -624px}i.flag.ie:before,i.flag.ireland:before{background-position:-36px -650px}i.flag.il:before,i.flag.israel:before{background-position:-36px -676px}i.flag.in:before,i.flag.india:before{background-position:-36px -702px}i.flag.indian.ocean.territory:before,i.flag.io:before{background-position:-36px -728px}i.flag.iq:before,i.flag.iraq:before{background-position:-36px -754px}i.flag.ir:before,i.flag.iran:before{background-position:-36px -780px}i.flag.iceland:before,i.flag.is:before{background-position:-36px -806px}i.flag.it:before,i.flag.italy:before{background-position:-36px -832px}i.flag.jamaica:before,i.flag.jm:before{background-position:-36px -858px}i.flag.jo:before,i.flag.jordan:before{background-position:-36px -884px}i.flag.japan:before,i.flag.jp:before{background-position:-36px -910px}i.flag.ke:before,i.flag.kenya:before{background-position:-36px -936px}i.flag.kg:before,i.flag.kyrgyzstan:before{background-position:-36px -962px}i.flag.cambodia:before,i.flag.kh:before{background-position:-36px -988px}i.flag.ki:before,i.flag.kiribati:before{background-position:-36px -1014px}i.flag.comoros:before,i.flag.km:before{background-position:-36px -1040px}i.flag.kn:before,i.flag.saint.kitts.and.nevis:before{background-position:-36px -1066px}i.flag.kp:before,i.flag.north.korea:before{background-position:-36px -1092px}i.flag.kr:before,i.flag.south.korea:before{background-position:-36px -1118px}i.flag.kuwait:before,i.flag.kw:before{background-position:-36px -1144px}i.flag.cayman.islands:before,i.flag.ky:before{background-position:-36px -1170px}i.flag.kazakhstan:before,i.flag.kz:before{background-position:-36px -1196px}i.flag.la:before,i.flag.laos:before{background-position:-36px -1222px}i.flag.lb:before,i.flag.lebanon:before{background-position:-36px -1248px}i.flag.lc:before,i.flag.saint.lucia:before{background-position:-36px -1274px}i.flag.li:before,i.flag.liechtenstein:before{background-position:-36px -1300px}i.flag.lk:before,i.flag.sri.lanka:before{background-position:-36px -1326px}i.flag.liberia:before,i.flag.lr:before{background-position:-36px -1352px}i.flag.lesotho:before,i.flag.ls:before{background-position:-36px -1378px}i.flag.lithuania:before,i.flag.lt:before{background-position:-36px -1404px}i.flag.lu:before,i.flag.luxembourg:before{background-position:-36px -1430px}i.flag.latvia:before,i.flag.lv:before{background-position:-36px -1456px}i.flag.libya:before,i.flag.ly:before{background-position:-36px -1482px}i.flag.ma:before,i.flag.morocco:before{background-position:-36px -1508px}i.flag.mc:before,i.flag.monaco:before{background-position:-36px -1534px}i.flag.md:before,i.flag.moldova:before{background-position:-36px -1560px}i.flag.me:before,i.flag.montenegro:before{background-position:-36px -1586px}i.flag.madagascar:before,i.flag.mg:before{background-position:-36px -1613px}i.flag.marshall.islands:before,i.flag.mh:before{background-position:-36px -1639px}i.flag.macedonia:before,i.flag.mk:before{background-position:-36px -1665px}i.flag.mali:before,i.flag.ml:before{background-position:-36px -1691px}i.flag.burma:before,i.flag.mm:before,i.flag.myanmar:before{background-position:-73px -1821px}i.flag.mn:before,i.flag.mongolia:before{background-position:-36px -1743px}i.flag.macau:before,i.flag.mo:before{background-position:-36px -1769px}i.flag.mp:before,i.flag.northern.mariana.islands:before{background-position:-36px -1795px}i.flag.martinique:before,i.flag.mq:before{background-position:-36px -1821px}i.flag.mauritania:before,i.flag.mr:before{background-position:-36px -1847px}i.flag.montserrat:before,i.flag.ms:before{background-position:-36px -1873px}i.flag.malta:before,i.flag.mt:before{background-position:-36px -1899px}i.flag.mauritius:before,i.flag.mu:before{background-position:-36px -1925px}i.flag.maldives:before,i.flag.mv:before{background-position:-36px -1951px}i.flag.malawi:before,i.flag.mw:before{background-position:-36px -1977px}i.flag.mexico:before,i.flag.mx:before{background-position:-72px 0}i.flag.malaysia:before,i.flag.my:before{background-position:-72px -26px}i.flag.mozambique:before,i.flag.mz:before{background-position:-72px -52px}i.flag.na:before,i.flag.namibia:before{background-position:-72px -78px}i.flag.nc:before,i.flag.new.caledonia:before{background-position:-72px -104px}i.flag.ne:before,i.flag.niger:before{background-position:-72px -130px}i.flag.nf:before,i.flag.norfolk.island:before{background-position:-72px -156px}i.flag.ng:before,i.flag.nigeria:before{background-position:-72px -182px}i.flag.ni:before,i.flag.nicaragua:before{background-position:-72px -208px}i.flag.netherlands:before,i.flag.nl:before{background-position:-72px -234px}i.flag.no:before,i.flag.norway:before{background-position:-72px -260px}i.flag.nepal:before,i.flag.np:before{background-position:-72px -286px}i.flag.nauru:before,i.flag.nr:before{background-position:-72px -312px}i.flag.niue:before,i.flag.nu:before{background-position:-72px -338px}i.flag.new.zealand:before,i.flag.nz:before{background-position:-72px -364px}i.flag.om:before,i.flag.oman:before{background-position:-72px -390px}i.flag.pa:before,i.flag.panama:before{background-position:-72px -416px}i.flag.pe:before,i.flag.peru:before{background-position:-72px -442px}i.flag.french.polynesia:before,i.flag.pf:before{background-position:-72px -468px}i.flag.new.guinea:before,i.flag.pg:before{background-position:-72px -494px}i.flag.ph:before,i.flag.philippines:before{background-position:-72px -520px}i.flag.pakistan:before,i.flag.pk:before{background-position:-72px -546px}i.flag.pl:before,i.flag.poland:before{background-position:-72px -572px}i.flag.pm:before,i.flag.saint.pierre:before{background-position:-72px -598px}i.flag.pitcairn.islands:before,i.flag.pn:before{background-position:-72px -624px}i.flag.pr:before,i.flag.puerto.rico:before{background-position:-72px -650px}i.flag.palestine:before,i.flag.ps:before{background-position:-72px -676px}i.flag.portugal:before,i.flag.pt:before{background-position:-72px -702px}i.flag.palau:before,i.flag.pw:before{background-position:-72px -728px}i.flag.paraguay:before,i.flag.py:before{background-position:-72px -754px}i.flag.qa:before,i.flag.qatar:before{background-position:-72px -780px}i.flag.re:before,i.flag.reunion:before{background-position:-72px -806px}i.flag.ro:before,i.flag.romania:before{background-position:-72px -832px}i.flag.rs:before,i.flag.serbia:before{background-position:-72px -858px}i.flag.ru:before,i.flag.russia:before{background-position:-72px -884px}i.flag.rw:before,i.flag.rwanda:before{background-position:-72px -910px}i.flag.sa:before,i.flag.saudi.arabia:before{background-position:-72px -936px}i.flag.sb:before,i.flag.solomon.islands:before{background-position:-72px -962px}i.flag.sc:before,i.flag.seychelles:before{background-position:-72px -988px}i.flag.gb.sct:before,i.flag.scotland:before{background-position:-72px -1014px}i.flag.sd:before,i.flag.sudan:before{background-position:-72px -1040px}i.flag.se:before,i.flag.sweden:before{background-position:-72px -1066px}i.flag.sg:before,i.flag.singapore:before{background-position:-72px -1092px}i.flag.saint.helena:before,i.flag.sh:before{background-position:-72px -1118px}i.flag.si:before,i.flag.slovenia:before{background-position:-72px -1144px}i.flag.jan.mayen:before,i.flag.sj:before,i.flag.svalbard:before{background-position:-72px -1170px}i.flag.sk:before,i.flag.slovakia:before{background-position:-72px -1196px}i.flag.sierra.leone:before,i.flag.sl:before{background-position:-72px -1222px}i.flag.san.marino:before,i.flag.sm:before{background-position:-72px -1248px}i.flag.senegal:before,i.flag.sn:before{background-position:-72px -1274px}i.flag.so:before,i.flag.somalia:before{background-position:-72px -1300px}i.flag.sr:before,i.flag.suriname:before{background-position:-72px -1326px}i.flag.sao.tome:before,i.flag.st:before{background-position:-72px -1352px}i.flag.el.salvador:before,i.flag.sv:before{background-position:-72px -1378px}i.flag.sy:before,i.flag.syria:before{background-position:-72px -1404px}i.flag.swaziland:before,i.flag.sz:before{background-position:-72px -1430px}i.flag.caicos.islands:before,i.flag.tc:before{background-position:-72px -1456px}i.flag.chad:before,i.flag.td:before{background-position:-72px -1482px}i.flag.french.territories:before,i.flag.tf:before{background-position:-72px -1508px}i.flag.tg:before,i.flag.togo:before{background-position:-72px -1534px}i.flag.th:before,i.flag.thailand:before{background-position:-72px -1560px}i.flag.tajikistan:before,i.flag.tj:before{background-position:-72px -1586px}i.flag.tk:before,i.flag.tokelau:before{background-position:-72px -1612px}i.flag.timorleste:before,i.flag.tl:before{background-position:-72px -1638px}i.flag.tm:before,i.flag.turkmenistan:before{background-position:-72px -1664px}i.flag.tn:before,i.flag.tunisia:before{background-position:-72px -1690px}i.flag.to:before,i.flag.tonga:before{background-position:-72px -1716px}i.flag.tr:before,i.flag.turkey:before{background-position:-72px -1742px}i.flag.trinidad:before,i.flag.tt:before{background-position:-72px -1768px}i.flag.tuvalu:before,i.flag.tv:before{background-position:-72px -1794px}i.flag.taiwan:before,i.flag.tw:before{background-position:-72px -1820px}i.flag.tanzania:before,i.flag.tz:before{background-position:-72px -1846px}i.flag.ua:before,i.flag.ukraine:before{background-position:-72px -1872px}i.flag.ug:before,i.flag.uganda:before{background-position:-72px -1898px}i.flag.um:before,i.flag.us.minor.islands:before{background-position:-72px -1924px}i.flag.america:before,i.flag.united.states:before,i.flag.us:before{background-position:-72px -1950px}i.flag.uruguay:before,i.flag.uy:before{background-position:-72px -1976px}i.flag.uz:before,i.flag.uzbekistan:before{background-position:-108px 0}i.flag.va:before,i.flag.vatican.city:before{background-position:-108px -26px}i.flag.saint.vincent:before,i.flag.vc:before{background-position:-108px -52px}i.flag.ve:before,i.flag.venezuela:before{background-position:-108px -78px}i.flag.british.virgin.islands:before,i.flag.vg:before{background-position:-108px -104px}i.flag.us.virgin.islands:before,i.flag.vi:before{background-position:-108px -130px}i.flag.vietnam:before,i.flag.vn:before{background-position:-108px -156px}i.flag.vanuatu:before,i.flag.vu:before{background-position:-108px -182px}i.flag.gb.wls:before,i.flag.wales:before{background-position:-108px -208px}i.flag.wallis.and.futuna:before,i.flag.wf:before{background-position:-108px -234px}i.flag.samoa:before,i.flag.ws:before{background-position:-108px -260px}i.flag.ye:before,i.flag.yemen:before{background-position:-108px -286px}i.flag.mayotte:before,i.flag.yt:before{background-position:-108px -312px}i.flag.south.africa:before,i.flag.za:before{background-position:-108px -338px}i.flag.zambia:before,i.flag.zm:before{background-position:-108px -364px}i.flag.zimbabwe:before,i.flag.zw:before{background-position:-108px -390px}/*! -* # Semantic UI 2.4.0 - Header -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.header{border:none;margin:calc(2rem - .14285714em) 0 1rem;padding:0 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;line-height:1.28571429em;text-transform:none;color:rgba(0,0,0,.87)}.ui.header:first-child{margin-top:-.14285714em}.ui.header:last-child{margin-bottom:0}.ui.header .sub.header{display:block;font-weight:400;padding:0;margin:0;font-size:1rem;line-height:1.2em;color:rgba(0,0,0,.6)}.ui.header>.icon{display:table-cell;opacity:1;font-size:1.5em;padding-top:0;vertical-align:middle}.ui.header .icon:only-child{display:inline-block;padding:0;margin-right:.75rem}.ui.header>.image:not(.icon),.ui.header>img{display:inline-block;margin-top:.14285714em;width:2.5em;height:auto;vertical-align:middle}.ui.header>.image:not(.icon):only-child,.ui.header>img:only-child{margin-right:.75rem}.ui.header .content{display:inline-block;vertical-align:top}.ui.header>.image+.content,.ui.header>img+.content{padding-left:.75rem;vertical-align:middle}.ui.header>.icon+.content{padding-left:.75rem;display:table-cell;vertical-align:middle}.ui.header .ui.label{font-size:'';margin-left:.5rem;vertical-align:middle}.ui.header+p{margin-top:0}h1.ui.header{font-size:2rem}h2.ui.header{font-size:1.71428571rem}h3.ui.header{font-size:1.28571429rem}h4.ui.header{font-size:1.07142857rem}h5.ui.header{font-size:1rem}h1.ui.header .sub.header{font-size:1.14285714rem}h2.ui.header .sub.header{font-size:1.14285714rem}h3.ui.header .sub.header{font-size:1rem}h4.ui.header .sub.header{font-size:1rem}h5.ui.header .sub.header{font-size:.92857143rem}.ui.huge.header{min-height:1em;font-size:2em}.ui.large.header{font-size:1.71428571em}.ui.medium.header{font-size:1.28571429em}.ui.small.header{font-size:1.07142857em}.ui.tiny.header{font-size:1em}.ui.huge.header .sub.header{font-size:1.14285714rem}.ui.large.header .sub.header{font-size:1.14285714rem}.ui.header .sub.header{font-size:1rem}.ui.small.header .sub.header{font-size:1rem}.ui.tiny.header .sub.header{font-size:.92857143rem}.ui.sub.header{padding:0;margin-bottom:.14285714rem;font-weight:700;font-size:.85714286em;text-transform:uppercase;color:''}.ui.small.sub.header{font-size:.78571429em}.ui.sub.header{font-size:.85714286em}.ui.large.sub.header{font-size:.92857143em}.ui.huge.sub.header{font-size:1em}.ui.icon.header{display:inline-block;text-align:center;margin:2rem 0 1rem}.ui.icon.header:after{content:'';display:block;height:0;clear:both;visibility:hidden}.ui.icon.header:first-child{margin-top:0}.ui.icon.header .icon{float:none;display:block;width:auto;height:auto;line-height:1;padding:0;font-size:3em;margin:0 auto .5rem;opacity:1}.ui.icon.header .content{display:block;padding:0}.ui.icon.header .circular.icon{font-size:2em}.ui.icon.header .square.icon{font-size:2em}.ui.block.icon.header .icon{margin-bottom:0}.ui.icon.header.aligned{margin-left:auto;margin-right:auto;display:block}.ui.disabled.header{opacity:.45}.ui.inverted.header{color:#fff}.ui.inverted.header .sub.header{color:rgba(255,255,255,.8)}.ui.inverted.attached.header{background:#545454 -webkit-gradient(linear,left top,left bottom,from(transparent),to(rgba(0,0,0,.05)));background:#545454 -webkit-linear-gradient(transparent,rgba(0,0,0,.05));background:#545454 linear-gradient(transparent,rgba(0,0,0,.05));-webkit-box-shadow:none;box-shadow:none;border-color:transparent}.ui.inverted.block.header{background:#545454 -webkit-gradient(linear,left top,left bottom,from(transparent),to(rgba(0,0,0,.05)));background:#545454 -webkit-linear-gradient(transparent,rgba(0,0,0,.05));background:#545454 linear-gradient(transparent,rgba(0,0,0,.05));-webkit-box-shadow:none;box-shadow:none}.ui.inverted.block.header{border-bottom:none}.ui.red.header{color:#db2828!important}a.ui.red.header:hover{color:#d01919!important}.ui.red.dividing.header{border-bottom:2px solid #db2828}.ui.inverted.red.header{color:#ff695e!important}a.ui.inverted.red.header:hover{color:#ff5144!important}.ui.orange.header{color:#f2711c!important}a.ui.orange.header:hover{color:#f26202!important}.ui.orange.dividing.header{border-bottom:2px solid #f2711c}.ui.inverted.orange.header{color:#ff851b!important}a.ui.inverted.orange.header:hover{color:#ff7701!important}.ui.olive.header{color:#b5cc18!important}a.ui.olive.header:hover{color:#a7bd0d!important}.ui.olive.dividing.header{border-bottom:2px solid #b5cc18}.ui.inverted.olive.header{color:#d9e778!important}a.ui.inverted.olive.header:hover{color:#d8ea5c!important}.ui.yellow.header{color:#fbbd08!important}a.ui.yellow.header:hover{color:#eaae00!important}.ui.yellow.dividing.header{border-bottom:2px solid #fbbd08}.ui.inverted.yellow.header{color:#ffe21f!important}a.ui.inverted.yellow.header:hover{color:#ffdf05!important}.ui.green.header{color:#21ba45!important}a.ui.green.header:hover{color:#16ab39!important}.ui.green.dividing.header{border-bottom:2px solid #21ba45}.ui.inverted.green.header{color:#2ecc40!important}a.ui.inverted.green.header:hover{color:#22be34!important}.ui.teal.header{color:#00b5ad!important}a.ui.teal.header:hover{color:#009c95!important}.ui.teal.dividing.header{border-bottom:2px solid #00b5ad}.ui.inverted.teal.header{color:#6dffff!important}a.ui.inverted.teal.header:hover{color:#54ffff!important}.ui.blue.header{color:#2185d0!important}a.ui.blue.header:hover{color:#1678c2!important}.ui.blue.dividing.header{border-bottom:2px solid #2185d0}.ui.inverted.blue.header{color:#54c8ff!important}a.ui.inverted.blue.header:hover{color:#3ac0ff!important}.ui.violet.header{color:#6435c9!important}a.ui.violet.header:hover{color:#5829bb!important}.ui.violet.dividing.header{border-bottom:2px solid #6435c9}.ui.inverted.violet.header{color:#a291fb!important}a.ui.inverted.violet.header:hover{color:#8a73ff!important}.ui.purple.header{color:#a333c8!important}a.ui.purple.header:hover{color:#9627ba!important}.ui.purple.dividing.header{border-bottom:2px solid #a333c8}.ui.inverted.purple.header{color:#dc73ff!important}a.ui.inverted.purple.header:hover{color:#d65aff!important}.ui.pink.header{color:#e03997!important}a.ui.pink.header:hover{color:#e61a8d!important}.ui.pink.dividing.header{border-bottom:2px solid #e03997}.ui.inverted.pink.header{color:#ff8edf!important}a.ui.inverted.pink.header:hover{color:#ff74d8!important}.ui.brown.header{color:#a5673f!important}a.ui.brown.header:hover{color:#975b33!important}.ui.brown.dividing.header{border-bottom:2px solid #a5673f}.ui.inverted.brown.header{color:#d67c1c!important}a.ui.inverted.brown.header:hover{color:#c86f11!important}.ui.grey.header{color:#767676!important}a.ui.grey.header:hover{color:#838383!important}.ui.grey.dividing.header{border-bottom:2px solid #767676}.ui.inverted.grey.header{color:#dcddde!important}a.ui.inverted.grey.header:hover{color:#cfd0d2!important}.ui.left.aligned.header{text-align:left}.ui.right.aligned.header{text-align:right}.ui.center.aligned.header,.ui.centered.header{text-align:center}.ui.justified.header{text-align:justify}.ui.justified.header:after{display:inline-block;content:'';width:100%}.ui.floated.header,.ui[class*="left floated"].header{float:left;margin-top:0;margin-right:.5em}.ui[class*="right floated"].header{float:right;margin-top:0;margin-left:.5em}.ui.fitted.header{padding:0}.ui.dividing.header{padding-bottom:.21428571rem;border-bottom:1px solid rgba(34,36,38,.15)}.ui.dividing.header .sub.header{padding-bottom:.21428571rem}.ui.dividing.header .icon{margin-bottom:0}.ui.inverted.dividing.header{border-bottom-color:rgba(255,255,255,.1)}.ui.block.header{background:#f3f4f5;padding:.78571429rem 1rem;-webkit-box-shadow:none;box-shadow:none;border:1px solid #d4d4d5;border-radius:.28571429rem}.ui.tiny.block.header{font-size:.85714286rem}.ui.small.block.header{font-size:.92857143rem}.ui.block.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6){font-size:1rem}.ui.large.block.header{font-size:1.14285714rem}.ui.huge.block.header{font-size:1.42857143rem}.ui.attached.header{background:#fff;padding:.78571429rem 1rem;margin-left:-1px;margin-right:-1px;-webkit-box-shadow:none;box-shadow:none;border:1px solid #d4d4d5}.ui.attached.block.header{background:#f3f4f5}.ui.attached:not(.top):not(.bottom).header{margin-top:0;margin-bottom:0;border-top:none;border-radius:0}.ui.top.attached.header{margin-bottom:0;border-radius:.28571429rem .28571429rem 0 0}.ui.bottom.attached.header{margin-top:0;border-top:none;border-radius:0 0 .28571429rem .28571429rem}.ui.tiny.attached.header{font-size:.85714286em}.ui.small.attached.header{font-size:.92857143em}.ui.attached.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6){font-size:1em}.ui.large.attached.header{font-size:1.14285714em}.ui.huge.attached.header{font-size:1.42857143em}.ui.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6){font-size:1.28571429em}/*! -* # Semantic UI 2.4.0 - Icon -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/@font-face{font-family:Icons;src:url(../fonts/icons.eot);src:url(../fonts/icons.eot?#iefix) format('embedded-opentype'),url(../fonts/icons.woff2) format('woff2'),url(../fonts/icons.woff) format('woff'),url(../fonts/icons.ttf) format('truetype'),url(../fonts/icons.svg#icons) format('svg');font-style:normal;font-weight:400;font-variant:normal;text-decoration:inherit;text-transform:none}i.icon{display:inline-block;opacity:1;margin:0 .25rem 0 0;width:1.18em;height:1em;font-family:Icons;font-style:normal;font-weight:400;text-decoration:inherit;text-align:center;speak:none;font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-backface-visibility:hidden;backface-visibility:hidden}i.icon:before{background:0 0!important}i.icon.loading{height:1em;line-height:1;-webkit-animation:icon-loading 2s linear infinite;animation:icon-loading 2s linear infinite}@-webkit-keyframes icon-loading{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes icon-loading{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}i.icon.hover{opacity:1!important}i.icon.active{opacity:1!important}i.emphasized.icon{opacity:1!important}i.disabled.icon{opacity:.45!important}i.fitted.icon{width:auto;margin:0!important}i.link.icon,i.link.icons{cursor:pointer;opacity:.8;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}i.link.icon:hover,i.link.icons:hover{opacity:1!important}i.circular.icon{border-radius:500em!important;line-height:1!important;padding:.5em 0!important;-webkit-box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;width:2em!important;height:2em!important}i.circular.inverted.icon{border:none;-webkit-box-shadow:none;box-shadow:none}i.flipped.icon,i.horizontally.flipped.icon{-webkit-transform:scale(-1,1);transform:scale(-1,1)}i.vertically.flipped.icon{-webkit-transform:scale(1,-1);transform:scale(1,-1)}i.clockwise.rotated.icon,i.right.rotated.icon,i.rotated.icon{-webkit-transform:rotate(90deg);transform:rotate(90deg)}i.counterclockwise.rotated.icon,i.left.rotated.icon{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}i.bordered.icon{line-height:1;vertical-align:baseline;width:2em;height:2em;padding:.5em 0!important;-webkit-box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset;box-shadow:0 0 0 .1em rgba(0,0,0,.1) inset}i.bordered.inverted.icon{border:none;-webkit-box-shadow:none;box-shadow:none}i.inverted.bordered.icon,i.inverted.circular.icon{background-color:#1b1c1d!important;color:#fff!important}i.inverted.icon{color:#fff}i.red.icon{color:#db2828!important}i.inverted.red.icon{color:#ff695e!important}i.inverted.bordered.red.icon,i.inverted.circular.red.icon{background-color:#db2828!important;color:#fff!important}i.orange.icon{color:#f2711c!important}i.inverted.orange.icon{color:#ff851b!important}i.inverted.bordered.orange.icon,i.inverted.circular.orange.icon{background-color:#f2711c!important;color:#fff!important}i.yellow.icon{color:#fbbd08!important}i.inverted.yellow.icon{color:#ffe21f!important}i.inverted.bordered.yellow.icon,i.inverted.circular.yellow.icon{background-color:#fbbd08!important;color:#fff!important}i.olive.icon{color:#b5cc18!important}i.inverted.olive.icon{color:#d9e778!important}i.inverted.bordered.olive.icon,i.inverted.circular.olive.icon{background-color:#b5cc18!important;color:#fff!important}i.green.icon{color:#21ba45!important}i.inverted.green.icon{color:#2ecc40!important}i.inverted.bordered.green.icon,i.inverted.circular.green.icon{background-color:#21ba45!important;color:#fff!important}i.teal.icon{color:#00b5ad!important}i.inverted.teal.icon{color:#6dffff!important}i.inverted.bordered.teal.icon,i.inverted.circular.teal.icon{background-color:#00b5ad!important;color:#fff!important}i.blue.icon{color:#2185d0!important}i.inverted.blue.icon{color:#54c8ff!important}i.inverted.bordered.blue.icon,i.inverted.circular.blue.icon{background-color:#2185d0!important;color:#fff!important}i.violet.icon{color:#6435c9!important}i.inverted.violet.icon{color:#a291fb!important}i.inverted.bordered.violet.icon,i.inverted.circular.violet.icon{background-color:#6435c9!important;color:#fff!important}i.purple.icon{color:#a333c8!important}i.inverted.purple.icon{color:#dc73ff!important}i.inverted.bordered.purple.icon,i.inverted.circular.purple.icon{background-color:#a333c8!important;color:#fff!important}i.pink.icon{color:#e03997!important}i.inverted.pink.icon{color:#ff8edf!important}i.inverted.bordered.pink.icon,i.inverted.circular.pink.icon{background-color:#e03997!important;color:#fff!important}i.brown.icon{color:#a5673f!important}i.inverted.brown.icon{color:#d67c1c!important}i.inverted.bordered.brown.icon,i.inverted.circular.brown.icon{background-color:#a5673f!important;color:#fff!important}i.grey.icon{color:#767676!important}i.inverted.grey.icon{color:#dcddde!important}i.inverted.bordered.grey.icon,i.inverted.circular.grey.icon{background-color:#767676!important;color:#fff!important}i.black.icon{color:#1b1c1d!important}i.inverted.black.icon{color:#545454!important}i.inverted.bordered.black.icon,i.inverted.circular.black.icon{background-color:#1b1c1d!important;color:#fff!important}i.mini.icon,i.mini.icons{line-height:1;font-size:.4em}i.tiny.icon,i.tiny.icons{line-height:1;font-size:.5em}i.small.icon,i.small.icons{line-height:1;font-size:.75em}i.icon,i.icons{font-size:1em}i.large.icon,i.large.icons{line-height:1;vertical-align:middle;font-size:1.5em}i.big.icon,i.big.icons{line-height:1;vertical-align:middle;font-size:2em}i.huge.icon,i.huge.icons{line-height:1;vertical-align:middle;font-size:4em}i.massive.icon,i.massive.icons{line-height:1;vertical-align:middle;font-size:8em}i.icons{display:inline-block;position:relative;line-height:1}i.icons .icon{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);margin:0;margin:0}i.icons .icon:first-child{position:static;width:auto;height:auto;vertical-align:top;-webkit-transform:none;transform:none;margin-right:.25rem}i.icons .corner.icon{top:auto;left:auto;right:0;bottom:0;-webkit-transform:none;transform:none;font-size:.45em;text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff}i.icons .top.right.corner.icon{top:0;left:auto;right:0;bottom:auto}i.icons .top.left.corner.icon{top:0;left:0;right:auto;bottom:auto}i.icons .bottom.left.corner.icon{top:auto;left:0;right:auto;bottom:0}i.icons .bottom.right.corner.icon{top:auto;left:auto;right:0;bottom:0}i.icons .inverted.corner.icon{text-shadow:-1px -1px 0 #1b1c1d,1px -1px 0 #1b1c1d,-1px 1px 0 #1b1c1d,1px 1px 0 #1b1c1d}i.icon.linkedin.in:before{content:"\f0e1"}i.icon.zoom.in:before{content:"\f00e"}i.icon.zoom.out:before{content:"\f010"}i.icon.sign.in:before{content:"\f2f6"}i.icon.in.cart:before{content:"\f218"}i.icon.log.out:before{content:"\f2f5"}i.icon.sign.out:before{content:"\f2f5"}i.icon.\35 00px:before{content:"\f26e"}i.icon.accessible.icon:before{content:"\f368"}i.icon.accusoft:before{content:"\f369"}i.icon.address.book:before{content:"\f2b9"}i.icon.address.card:before{content:"\f2bb"}i.icon.adjust:before{content:"\f042"}i.icon.adn:before{content:"\f170"}i.icon.adversal:before{content:"\f36a"}i.icon.affiliatetheme:before{content:"\f36b"}i.icon.algolia:before{content:"\f36c"}i.icon.align.center:before{content:"\f037"}i.icon.align.justify:before{content:"\f039"}i.icon.align.left:before{content:"\f036"}i.icon.align.right:before{content:"\f038"}i.icon.amazon:before{content:"\f270"}i.icon.amazon.pay:before{content:"\f42c"}i.icon.ambulance:before{content:"\f0f9"}i.icon.american.sign.language.interpreting:before{content:"\f2a3"}i.icon.amilia:before{content:"\f36d"}i.icon.anchor:before{content:"\f13d"}i.icon.android:before{content:"\f17b"}i.icon.angellist:before{content:"\f209"}i.icon.angle.double.down:before{content:"\f103"}i.icon.angle.double.left:before{content:"\f100"}i.icon.angle.double.right:before{content:"\f101"}i.icon.angle.double.up:before{content:"\f102"}i.icon.angle.down:before{content:"\f107"}i.icon.angle.left:before{content:"\f104"}i.icon.angle.right:before{content:"\f105"}i.icon.angle.up:before{content:"\f106"}i.icon.angrycreative:before{content:"\f36e"}i.icon.angular:before{content:"\f420"}i.icon.app.store:before{content:"\f36f"}i.icon.app.store.ios:before{content:"\f370"}i.icon.apper:before{content:"\f371"}i.icon.apple:before{content:"\f179"}i.icon.apple.pay:before{content:"\f415"}i.icon.archive:before{content:"\f187"}i.icon.arrow.alternate.circle.down:before{content:"\f358"}i.icon.arrow.alternate.circle.left:before{content:"\f359"}i.icon.arrow.alternate.circle.right:before{content:"\f35a"}i.icon.arrow.alternate.circle.up:before{content:"\f35b"}i.icon.arrow.circle.down:before{content:"\f0ab"}i.icon.arrow.circle.left:before{content:"\f0a8"}i.icon.arrow.circle.right:before{content:"\f0a9"}i.icon.arrow.circle.up:before{content:"\f0aa"}i.icon.arrow.down:before{content:"\f063"}i.icon.arrow.left:before{content:"\f060"}i.icon.arrow.right:before{content:"\f061"}i.icon.arrow.up:before{content:"\f062"}i.icon.arrows.alternate:before{content:"\f0b2"}i.icon.arrows.alternate.horizontal:before{content:"\f337"}i.icon.arrows.alternate.vertical:before{content:"\f338"}i.icon.assistive.listening.systems:before{content:"\f2a2"}i.icon.asterisk:before{content:"\f069"}i.icon.asymmetrik:before{content:"\f372"}i.icon.at:before{content:"\f1fa"}i.icon.audible:before{content:"\f373"}i.icon.audio.description:before{content:"\f29e"}i.icon.autoprefixer:before{content:"\f41c"}i.icon.avianex:before{content:"\f374"}i.icon.aviato:before{content:"\f421"}i.icon.aws:before{content:"\f375"}i.icon.backward:before{content:"\f04a"}i.icon.balance.scale:before{content:"\f24e"}i.icon.ban:before{content:"\f05e"}i.icon.band.aid:before{content:"\f462"}i.icon.bandcamp:before{content:"\f2d5"}i.icon.barcode:before{content:"\f02a"}i.icon.bars:before{content:"\f0c9"}i.icon.baseball.ball:before{content:"\f433"}i.icon.basketball.ball:before{content:"\f434"}i.icon.bath:before{content:"\f2cd"}i.icon.battery.empty:before{content:"\f244"}i.icon.battery.full:before{content:"\f240"}i.icon.battery.half:before{content:"\f242"}i.icon.battery.quarter:before{content:"\f243"}i.icon.battery.three.quarters:before{content:"\f241"}i.icon.bed:before{content:"\f236"}i.icon.beer:before{content:"\f0fc"}i.icon.behance:before{content:"\f1b4"}i.icon.behance.square:before{content:"\f1b5"}i.icon.bell:before{content:"\f0f3"}i.icon.bell.slash:before{content:"\f1f6"}i.icon.bicycle:before{content:"\f206"}i.icon.bimobject:before{content:"\f378"}i.icon.binoculars:before{content:"\f1e5"}i.icon.birthday.cake:before{content:"\f1fd"}i.icon.bitbucket:before{content:"\f171"}i.icon.bitcoin:before{content:"\f379"}i.icon.bity:before{content:"\f37a"}i.icon.black.tie:before{content:"\f27e"}i.icon.blackberry:before{content:"\f37b"}i.icon.blind:before{content:"\f29d"}i.icon.blogger:before{content:"\f37c"}i.icon.blogger.b:before{content:"\f37d"}i.icon.bluetooth:before{content:"\f293"}i.icon.bluetooth.b:before{content:"\f294"}i.icon.bold:before{content:"\f032"}i.icon.bolt:before{content:"\f0e7"}i.icon.bomb:before{content:"\f1e2"}i.icon.book:before{content:"\f02d"}i.icon.bookmark:before{content:"\f02e"}i.icon.bowling.ball:before{content:"\f436"}i.icon.box:before{content:"\f466"}i.icon.boxes:before{content:"\f468"}i.icon.braille:before{content:"\f2a1"}i.icon.briefcase:before{content:"\f0b1"}i.icon.btc:before{content:"\f15a"}i.icon.bug:before{content:"\f188"}i.icon.building:before{content:"\f1ad"}i.icon.bullhorn:before{content:"\f0a1"}i.icon.bullseye:before{content:"\f140"}i.icon.buromobelexperte:before{content:"\f37f"}i.icon.bus:before{content:"\f207"}i.icon.buysellads:before{content:"\f20d"}i.icon.calculator:before{content:"\f1ec"}i.icon.calendar:before{content:"\f133"}i.icon.calendar.alternate:before{content:"\f073"}i.icon.calendar.check:before{content:"\f274"}i.icon.calendar.minus:before{content:"\f272"}i.icon.calendar.plus:before{content:"\f271"}i.icon.calendar.times:before{content:"\f273"}i.icon.camera:before{content:"\f030"}i.icon.camera.retro:before{content:"\f083"}i.icon.car:before{content:"\f1b9"}i.icon.caret.down:before{content:"\f0d7"}i.icon.caret.left:before{content:"\f0d9"}i.icon.caret.right:before{content:"\f0da"}i.icon.caret.square.down:before{content:"\f150"}i.icon.caret.square.left:before{content:"\f191"}i.icon.caret.square.right:before{content:"\f152"}i.icon.caret.square.up:before{content:"\f151"}i.icon.caret.up:before{content:"\f0d8"}i.icon.cart.arrow.down:before{content:"\f218"}i.icon.cart.plus:before{content:"\f217"}i.icon.cc.amazon.pay:before{content:"\f42d"}i.icon.cc.amex:before{content:"\f1f3"}i.icon.cc.apple.pay:before{content:"\f416"}i.icon.cc.diners.club:before{content:"\f24c"}i.icon.cc.discover:before{content:"\f1f2"}i.icon.cc.jcb:before{content:"\f24b"}i.icon.cc.mastercard:before{content:"\f1f1"}i.icon.cc.paypal:before{content:"\f1f4"}i.icon.cc.stripe:before{content:"\f1f5"}i.icon.cc.visa:before{content:"\f1f0"}i.icon.centercode:before{content:"\f380"}i.icon.certificate:before{content:"\f0a3"}i.icon.chart.area:before{content:"\f1fe"}i.icon.chart.bar:before{content:"\f080"}i.icon.chart.line:before{content:"\f201"}i.icon.chart.pie:before{content:"\f200"}i.icon.check:before{content:"\f00c"}i.icon.check.circle:before{content:"\f058"}i.icon.check.square:before{content:"\f14a"}i.icon.chess:before{content:"\f439"}i.icon.chess.bishop:before{content:"\f43a"}i.icon.chess.board:before{content:"\f43c"}i.icon.chess.king:before{content:"\f43f"}i.icon.chess.knight:before{content:"\f441"}i.icon.chess.pawn:before{content:"\f443"}i.icon.chess.queen:before{content:"\f445"}i.icon.chess.rook:before{content:"\f447"}i.icon.chevron.circle.down:before{content:"\f13a"}i.icon.chevron.circle.left:before{content:"\f137"}i.icon.chevron.circle.right:before{content:"\f138"}i.icon.chevron.circle.up:before{content:"\f139"}i.icon.chevron.down:before{content:"\f078"}i.icon.chevron.left:before{content:"\f053"}i.icon.chevron.right:before{content:"\f054"}i.icon.chevron.up:before{content:"\f077"}i.icon.child:before{content:"\f1ae"}i.icon.chrome:before{content:"\f268"}i.icon.circle:before{content:"\f111"}i.icon.circle.notch:before{content:"\f1ce"}i.icon.clipboard:before{content:"\f328"}i.icon.clipboard.check:before{content:"\f46c"}i.icon.clipboard.list:before{content:"\f46d"}i.icon.clock:before{content:"\f017"}i.icon.clone:before{content:"\f24d"}i.icon.closed.captioning:before{content:"\f20a"}i.icon.cloud:before{content:"\f0c2"}i.icon.cloudscale:before{content:"\f383"}i.icon.cloudsmith:before{content:"\f384"}i.icon.cloudversify:before{content:"\f385"}i.icon.code:before{content:"\f121"}i.icon.code.branch:before{content:"\f126"}i.icon.codepen:before{content:"\f1cb"}i.icon.codiepie:before{content:"\f284"}i.icon.coffee:before{content:"\f0f4"}i.icon.cog:before{content:"\f013"}i.icon.cogs:before{content:"\f085"}i.icon.columns:before{content:"\f0db"}i.icon.comment:before{content:"\f075"}i.icon.comment.alternate:before{content:"\f27a"}i.icon.comments:before{content:"\f086"}i.icon.compass:before{content:"\f14e"}i.icon.compress:before{content:"\f066"}i.icon.connectdevelop:before{content:"\f20e"}i.icon.contao:before{content:"\f26d"}i.icon.copy:before{content:"\f0c5"}i.icon.copyright:before{content:"\f1f9"}i.icon.cpanel:before{content:"\f388"}i.icon.creative.commons:before{content:"\f25e"}i.icon.credit.card:before{content:"\f09d"}i.icon.crop:before{content:"\f125"}i.icon.crosshairs:before{content:"\f05b"}i.icon.css3:before{content:"\f13c"}i.icon.css3.alternate:before{content:"\f38b"}i.icon.cube:before{content:"\f1b2"}i.icon.cubes:before{content:"\f1b3"}i.icon.cut:before{content:"\f0c4"}i.icon.cuttlefish:before{content:"\f38c"}i.icon.d.and.d:before{content:"\f38d"}i.icon.dashcube:before{content:"\f210"}i.icon.database:before{content:"\f1c0"}i.icon.deaf:before{content:"\f2a4"}i.icon.delicious:before{content:"\f1a5"}i.icon.deploydog:before{content:"\f38e"}i.icon.deskpro:before{content:"\f38f"}i.icon.desktop:before{content:"\f108"}i.icon.deviantart:before{content:"\f1bd"}i.icon.digg:before{content:"\f1a6"}i.icon.digital.ocean:before{content:"\f391"}i.icon.discord:before{content:"\f392"}i.icon.discourse:before{content:"\f393"}i.icon.dna:before{content:"\f471"}i.icon.dochub:before{content:"\f394"}i.icon.docker:before{content:"\f395"}i.icon.dollar.sign:before{content:"\f155"}i.icon.dolly:before{content:"\f472"}i.icon.dolly.flatbed:before{content:"\f474"}i.icon.dot.circle:before{content:"\f192"}i.icon.download:before{content:"\f019"}i.icon.draft2digital:before{content:"\f396"}i.icon.dribbble:before{content:"\f17d"}i.icon.dribbble.square:before{content:"\f397"}i.icon.dropbox:before{content:"\f16b"}i.icon.drupal:before{content:"\f1a9"}i.icon.dyalog:before{content:"\f399"}i.icon.earlybirds:before{content:"\f39a"}i.icon.edge:before{content:"\f282"}i.icon.edit:before{content:"\f044"}i.icon.eject:before{content:"\f052"}i.icon.elementor:before{content:"\f430"}i.icon.ellipsis.horizontal:before{content:"\f141"}i.icon.ellipsis.vertical:before{content:"\f142"}i.icon.ember:before{content:"\f423"}i.icon.empire:before{content:"\f1d1"}i.icon.envelope:before{content:"\f0e0"}i.icon.envelope.open:before{content:"\f2b6"}i.icon.envelope.square:before{content:"\f199"}i.icon.envira:before{content:"\f299"}i.icon.eraser:before{content:"\f12d"}i.icon.erlang:before{content:"\f39d"}i.icon.ethereum:before{content:"\f42e"}i.icon.etsy:before{content:"\f2d7"}i.icon.euro.sign:before{content:"\f153"}i.icon.exchange.alternate:before{content:"\f362"}i.icon.exclamation:before{content:"\f12a"}i.icon.exclamation.circle:before{content:"\f06a"}i.icon.exclamation.triangle:before{content:"\f071"}i.icon.expand:before{content:"\f065"}i.icon.expand.arrows.alternate:before{content:"\f31e"}i.icon.expeditedssl:before{content:"\f23e"}i.icon.external.alternate:before{content:"\f35d"}i.icon.external.square.alternate:before{content:"\f360"}i.icon.eye:before{content:"\f06e"}i.icon.eye.dropper:before{content:"\f1fb"}i.icon.eye.slash:before{content:"\f070"}i.icon.facebook:before{content:"\f09a"}i.icon.facebook.f:before{content:"\f39e"}i.icon.facebook.messenger:before{content:"\f39f"}i.icon.facebook.square:before{content:"\f082"}i.icon.fast.backward:before{content:"\f049"}i.icon.fast.forward:before{content:"\f050"}i.icon.fax:before{content:"\f1ac"}i.icon.female:before{content:"\f182"}i.icon.fighter.jet:before{content:"\f0fb"}i.icon.file:before{content:"\f15b"}i.icon.file.alternate:before{content:"\f15c"}i.icon.file.archive:before{content:"\f1c6"}i.icon.file.audio:before{content:"\f1c7"}i.icon.file.code:before{content:"\f1c9"}i.icon.file.excel:before{content:"\f1c3"}i.icon.file.image:before{content:"\f1c5"}i.icon.file.pdf:before{content:"\f1c1"}i.icon.file.powerpoint:before{content:"\f1c4"}i.icon.file.video:before{content:"\f1c8"}i.icon.file.word:before{content:"\f1c2"}i.icon.film:before{content:"\f008"}i.icon.filter:before{content:"\f0b0"}i.icon.fire:before{content:"\f06d"}i.icon.fire.extinguisher:before{content:"\f134"}i.icon.firefox:before{content:"\f269"}i.icon.first.aid:before{content:"\f479"}i.icon.first.order:before{content:"\f2b0"}i.icon.firstdraft:before{content:"\f3a1"}i.icon.flag:before{content:"\f024"}i.icon.flag.checkered:before{content:"\f11e"}i.icon.flask:before{content:"\f0c3"}i.icon.flickr:before{content:"\f16e"}i.icon.flipboard:before{content:"\f44d"}i.icon.fly:before{content:"\f417"}i.icon.folder:before{content:"\f07b"}i.icon.folder.open:before{content:"\f07c"}i.icon.font:before{content:"\f031"}i.icon.font.awesome:before{content:"\f2b4"}i.icon.font.awesome.alternate:before{content:"\f35c"}i.icon.font.awesome.flag:before{content:"\f425"}i.icon.fonticons:before{content:"\f280"}i.icon.fonticons.fi:before{content:"\f3a2"}i.icon.football.ball:before{content:"\f44e"}i.icon.fort.awesome:before{content:"\f286"}i.icon.fort.awesome.alternate:before{content:"\f3a3"}i.icon.forumbee:before{content:"\f211"}i.icon.forward:before{content:"\f04e"}i.icon.foursquare:before{content:"\f180"}i.icon.free.code.camp:before{content:"\f2c5"}i.icon.freebsd:before{content:"\f3a4"}i.icon.frown:before{content:"\f119"}i.icon.futbol:before{content:"\f1e3"}i.icon.gamepad:before{content:"\f11b"}i.icon.gavel:before{content:"\f0e3"}i.icon.gem:before{content:"\f3a5"}i.icon.genderless:before{content:"\f22d"}i.icon.get.pocket:before{content:"\f265"}i.icon.gg:before{content:"\f260"}i.icon.gg.circle:before{content:"\f261"}i.icon.gift:before{content:"\f06b"}i.icon.git:before{content:"\f1d3"}i.icon.git.square:before{content:"\f1d2"}i.icon.github:before{content:"\f09b"}i.icon.github.alternate:before{content:"\f113"}i.icon.github.square:before{content:"\f092"}i.icon.gitkraken:before{content:"\f3a6"}i.icon.gitlab:before{content:"\f296"}i.icon.gitter:before{content:"\f426"}i.icon.glass.martini:before{content:"\f000"}i.icon.glide:before{content:"\f2a5"}i.icon.glide.g:before{content:"\f2a6"}i.icon.globe:before{content:"\f0ac"}i.icon.gofore:before{content:"\f3a7"}i.icon.golf.ball:before{content:"\f450"}i.icon.goodreads:before{content:"\f3a8"}i.icon.goodreads.g:before{content:"\f3a9"}i.icon.google:before{content:"\f1a0"}i.icon.google.drive:before{content:"\f3aa"}i.icon.google.play:before{content:"\f3ab"}i.icon.google.plus:before{content:"\f2b3"}i.icon.google.plus.g:before{content:"\f0d5"}i.icon.google.plus.square:before{content:"\f0d4"}i.icon.google.wallet:before{content:"\f1ee"}i.icon.graduation.cap:before{content:"\f19d"}i.icon.gratipay:before{content:"\f184"}i.icon.grav:before{content:"\f2d6"}i.icon.gripfire:before{content:"\f3ac"}i.icon.grunt:before{content:"\f3ad"}i.icon.gulp:before{content:"\f3ae"}i.icon.h.square:before{content:"\f0fd"}i.icon.hacker.news:before{content:"\f1d4"}i.icon.hacker.news.square:before{content:"\f3af"}i.icon.hand.lizard:before{content:"\f258"}i.icon.hand.paper:before{content:"\f256"}i.icon.hand.peace:before{content:"\f25b"}i.icon.hand.point.down:before{content:"\f0a7"}i.icon.hand.point.left:before{content:"\f0a5"}i.icon.hand.point.right:before{content:"\f0a4"}i.icon.hand.point.up:before{content:"\f0a6"}i.icon.hand.pointer:before{content:"\f25a"}i.icon.hand.rock:before{content:"\f255"}i.icon.hand.scissors:before{content:"\f257"}i.icon.hand.spock:before{content:"\f259"}i.icon.handshake:before{content:"\f2b5"}i.icon.hashtag:before{content:"\f292"}i.icon.hdd:before{content:"\f0a0"}i.icon.heading:before{content:"\f1dc"}i.icon.headphones:before{content:"\f025"}i.icon.heart:before{content:"\f004"}i.icon.heartbeat:before{content:"\f21e"}i.icon.hips:before{content:"\f452"}i.icon.hire.a.helper:before{content:"\f3b0"}i.icon.history:before{content:"\f1da"}i.icon.hockey.puck:before{content:"\f453"}i.icon.home:before{content:"\f015"}i.icon.hooli:before{content:"\f427"}i.icon.hospital:before{content:"\f0f8"}i.icon.hospital.symbol:before{content:"\f47e"}i.icon.hotjar:before{content:"\f3b1"}i.icon.hourglass:before{content:"\f254"}i.icon.hourglass.end:before{content:"\f253"}i.icon.hourglass.half:before{content:"\f252"}i.icon.hourglass.start:before{content:"\f251"}i.icon.houzz:before{content:"\f27c"}i.icon.html5:before{content:"\f13b"}i.icon.hubspot:before{content:"\f3b2"}i.icon.i.cursor:before{content:"\f246"}i.icon.id.badge:before{content:"\f2c1"}i.icon.id.card:before{content:"\f2c2"}i.icon.image:before{content:"\f03e"}i.icon.images:before{content:"\f302"}i.icon.imdb:before{content:"\f2d8"}i.icon.inbox:before{content:"\f01c"}i.icon.indent:before{content:"\f03c"}i.icon.industry:before{content:"\f275"}i.icon.info:before{content:"\f129"}i.icon.info.circle:before{content:"\f05a"}i.icon.instagram:before{content:"\f16d"}i.icon.internet.explorer:before{content:"\f26b"}i.icon.ioxhost:before{content:"\f208"}i.icon.italic:before{content:"\f033"}i.icon.itunes:before{content:"\f3b4"}i.icon.itunes.note:before{content:"\f3b5"}i.icon.jenkins:before{content:"\f3b6"}i.icon.joget:before{content:"\f3b7"}i.icon.joomla:before{content:"\f1aa"}i.icon.js:before{content:"\f3b8"}i.icon.js.square:before{content:"\f3b9"}i.icon.jsfiddle:before{content:"\f1cc"}i.icon.key:before{content:"\f084"}i.icon.keyboard:before{content:"\f11c"}i.icon.keycdn:before{content:"\f3ba"}i.icon.kickstarter:before{content:"\f3bb"}i.icon.kickstarter.k:before{content:"\f3bc"}i.icon.korvue:before{content:"\f42f"}i.icon.language:before{content:"\f1ab"}i.icon.laptop:before{content:"\f109"}i.icon.laravel:before{content:"\f3bd"}i.icon.lastfm:before{content:"\f202"}i.icon.lastfm.square:before{content:"\f203"}i.icon.leaf:before{content:"\f06c"}i.icon.leanpub:before{content:"\f212"}i.icon.lemon:before{content:"\f094"}i.icon.less:before{content:"\f41d"}i.icon.level.down.alternate:before{content:"\f3be"}i.icon.level.up.alternate:before{content:"\f3bf"}i.icon.life.ring:before{content:"\f1cd"}i.icon.lightbulb:before{content:"\f0eb"}i.icon.linechat:before{content:"\f3c0"}i.icon.linkify:before{content:"\f0c1"}i.icon.linkedin:before{content:"\f08c"}i.icon.linkedin.alt:before{content:"\f0e1"}i.icon.linode:before{content:"\f2b8"}i.icon.linux:before{content:"\f17c"}i.icon.lira.sign:before{content:"\f195"}i.icon.list:before{content:"\f03a"}i.icon.list.alternate:before{content:"\f022"}i.icon.list.ol:before{content:"\f0cb"}i.icon.list.ul:before{content:"\f0ca"}i.icon.location.arrow:before{content:"\f124"}i.icon.lock:before{content:"\f023"}i.icon.lock.open:before{content:"\f3c1"}i.icon.long.arrow.alternate.down:before{content:"\f309"}i.icon.long.arrow.alternate.left:before{content:"\f30a"}i.icon.long.arrow.alternate.right:before{content:"\f30b"}i.icon.long.arrow.alternate.up:before{content:"\f30c"}i.icon.low.vision:before{content:"\f2a8"}i.icon.lyft:before{content:"\f3c3"}i.icon.magento:before{content:"\f3c4"}i.icon.magic:before{content:"\f0d0"}i.icon.magnet:before{content:"\f076"}i.icon.male:before{content:"\f183"}i.icon.map:before{content:"\f279"}i.icon.map.marker:before{content:"\f041"}i.icon.map.marker.alternate:before{content:"\f3c5"}i.icon.map.pin:before{content:"\f276"}i.icon.map.signs:before{content:"\f277"}i.icon.mars:before{content:"\f222"}i.icon.mars.double:before{content:"\f227"}i.icon.mars.stroke:before{content:"\f229"}i.icon.mars.stroke.horizontal:before{content:"\f22b"}i.icon.mars.stroke.vertical:before{content:"\f22a"}i.icon.maxcdn:before{content:"\f136"}i.icon.medapps:before{content:"\f3c6"}i.icon.medium:before{content:"\f23a"}i.icon.medium.m:before{content:"\f3c7"}i.icon.medkit:before{content:"\f0fa"}i.icon.medrt:before{content:"\f3c8"}i.icon.meetup:before{content:"\f2e0"}i.icon.meh:before{content:"\f11a"}i.icon.mercury:before{content:"\f223"}i.icon.microchip:before{content:"\f2db"}i.icon.microphone:before{content:"\f130"}i.icon.microphone.slash:before{content:"\f131"}i.icon.microsoft:before{content:"\f3ca"}i.icon.minus:before{content:"\f068"}i.icon.minus.circle:before{content:"\f056"}i.icon.minus.square:before{content:"\f146"}i.icon.mix:before{content:"\f3cb"}i.icon.mixcloud:before{content:"\f289"}i.icon.mizuni:before{content:"\f3cc"}i.icon.mobile:before{content:"\f10b"}i.icon.mobile.alternate:before{content:"\f3cd"}i.icon.modx:before{content:"\f285"}i.icon.monero:before{content:"\f3d0"}i.icon.money.bill.alternate:before{content:"\f3d1"}i.icon.moon:before{content:"\f186"}i.icon.motorcycle:before{content:"\f21c"}i.icon.mouse.pointer:before{content:"\f245"}i.icon.music:before{content:"\f001"}i.icon.napster:before{content:"\f3d2"}i.icon.neuter:before{content:"\f22c"}i.icon.newspaper:before{content:"\f1ea"}i.icon.nintendo.switch:before{content:"\f418"}i.icon.node:before{content:"\f419"}i.icon.node.js:before{content:"\f3d3"}i.icon.npm:before{content:"\f3d4"}i.icon.ns8:before{content:"\f3d5"}i.icon.nutritionix:before{content:"\f3d6"}i.icon.object.group:before{content:"\f247"}i.icon.object.ungroup:before{content:"\f248"}i.icon.odnoklassniki:before{content:"\f263"}i.icon.odnoklassniki.square:before{content:"\f264"}i.icon.opencart:before{content:"\f23d"}i.icon.openid:before{content:"\f19b"}i.icon.opera:before{content:"\f26a"}i.icon.optin.monster:before{content:"\f23c"}i.icon.osi:before{content:"\f41a"}i.icon.outdent:before{content:"\f03b"}i.icon.page4:before{content:"\f3d7"}i.icon.pagelines:before{content:"\f18c"}i.icon.paint.brush:before{content:"\f1fc"}i.icon.palfed:before{content:"\f3d8"}i.icon.pallet:before{content:"\f482"}i.icon.paper.plane:before{content:"\f1d8"}i.icon.paperclip:before{content:"\f0c6"}i.icon.paragraph:before{content:"\f1dd"}i.icon.paste:before{content:"\f0ea"}i.icon.patreon:before{content:"\f3d9"}i.icon.pause:before{content:"\f04c"}i.icon.pause.circle:before{content:"\f28b"}i.icon.paw:before{content:"\f1b0"}i.icon.paypal:before{content:"\f1ed"}i.icon.pen.square:before{content:"\f14b"}i.icon.pencil.alternate:before{content:"\f303"}i.icon.percent:before{content:"\f295"}i.icon.periscope:before{content:"\f3da"}i.icon.phabricator:before{content:"\f3db"}i.icon.phoenix.framework:before{content:"\f3dc"}i.icon.phone:before{content:"\f095"}i.icon.phone.square:before{content:"\f098"}i.icon.phone.volume:before{content:"\f2a0"}i.icon.php:before{content:"\f457"}i.icon.pied.piper:before{content:"\f2ae"}i.icon.pied.piper.alternate:before{content:"\f1a8"}i.icon.pied.piper.pp:before{content:"\f1a7"}i.icon.pills:before{content:"\f484"}i.icon.pinterest:before{content:"\f0d2"}i.icon.pinterest.p:before{content:"\f231"}i.icon.pinterest.square:before{content:"\f0d3"}i.icon.plane:before{content:"\f072"}i.icon.play:before{content:"\f04b"}i.icon.play.circle:before{content:"\f144"}i.icon.playstation:before{content:"\f3df"}i.icon.plug:before{content:"\f1e6"}i.icon.plus:before{content:"\f067"}i.icon.plus.circle:before{content:"\f055"}i.icon.plus.square:before{content:"\f0fe"}i.icon.podcast:before{content:"\f2ce"}i.icon.pound.sign:before{content:"\f154"}i.icon.power.off:before{content:"\f011"}i.icon.print:before{content:"\f02f"}i.icon.product.hunt:before{content:"\f288"}i.icon.pushed:before{content:"\f3e1"}i.icon.puzzle.piece:before{content:"\f12e"}i.icon.python:before{content:"\f3e2"}i.icon.qq:before{content:"\f1d6"}i.icon.qrcode:before{content:"\f029"}i.icon.question:before{content:"\f128"}i.icon.question.circle:before{content:"\f059"}i.icon.quidditch:before{content:"\f458"}i.icon.quinscape:before{content:"\f459"}i.icon.quora:before{content:"\f2c4"}i.icon.quote.left:before{content:"\f10d"}i.icon.quote.right:before{content:"\f10e"}i.icon.random:before{content:"\f074"}i.icon.ravelry:before{content:"\f2d9"}i.icon.react:before{content:"\f41b"}i.icon.rebel:before{content:"\f1d0"}i.icon.recycle:before{content:"\f1b8"}i.icon.redriver:before{content:"\f3e3"}i.icon.reddit:before{content:"\f1a1"}i.icon.reddit.alien:before{content:"\f281"}i.icon.reddit.square:before{content:"\f1a2"}i.icon.redo:before{content:"\f01e"}i.icon.redo.alternate:before{content:"\f2f9"}i.icon.registered:before{content:"\f25d"}i.icon.rendact:before{content:"\f3e4"}i.icon.renren:before{content:"\f18b"}i.icon.reply:before{content:"\f3e5"}i.icon.reply.all:before{content:"\f122"}i.icon.replyd:before{content:"\f3e6"}i.icon.resolving:before{content:"\f3e7"}i.icon.retweet:before{content:"\f079"}i.icon.road:before{content:"\f018"}i.icon.rocket:before{content:"\f135"}i.icon.rocketchat:before{content:"\f3e8"}i.icon.rockrms:before{content:"\f3e9"}i.icon.rss:before{content:"\f09e"}i.icon.rss.square:before{content:"\f143"}i.icon.ruble.sign:before{content:"\f158"}i.icon.rupee.sign:before{content:"\f156"}i.icon.safari:before{content:"\f267"}i.icon.sass:before{content:"\f41e"}i.icon.save:before{content:"\f0c7"}i.icon.schlix:before{content:"\f3ea"}i.icon.scribd:before{content:"\f28a"}i.icon.search:before{content:"\f002"}i.icon.search.minus:before{content:"\f010"}i.icon.search.plus:before{content:"\f00e"}i.icon.searchengin:before{content:"\f3eb"}i.icon.sellcast:before{content:"\f2da"}i.icon.sellsy:before{content:"\f213"}i.icon.server:before{content:"\f233"}i.icon.servicestack:before{content:"\f3ec"}i.icon.share:before{content:"\f064"}i.icon.share.alternate:before{content:"\f1e0"}i.icon.share.alternate.square:before{content:"\f1e1"}i.icon.share.square:before{content:"\f14d"}i.icon.shekel.sign:before{content:"\f20b"}i.icon.shield.alternate:before{content:"\f3ed"}i.icon.ship:before{content:"\f21a"}i.icon.shipping.fast:before{content:"\f48b"}i.icon.shirtsinbulk:before{content:"\f214"}i.icon.shopping.bag:before{content:"\f290"}i.icon.shopping.basket:before{content:"\f291"}i.icon.shopping.cart:before{content:"\f07a"}i.icon.shower:before{content:"\f2cc"}i.icon.sign.language:before{content:"\f2a7"}i.icon.signal:before{content:"\f012"}i.icon.simplybuilt:before{content:"\f215"}i.icon.sistrix:before{content:"\f3ee"}i.icon.sitemap:before{content:"\f0e8"}i.icon.skyatlas:before{content:"\f216"}i.icon.skype:before{content:"\f17e"}i.icon.slack:before{content:"\f198"}i.icon.slack.hash:before{content:"\f3ef"}i.icon.sliders.horizontal:before{content:"\f1de"}i.icon.slideshare:before{content:"\f1e7"}i.icon.smile:before{content:"\f118"}i.icon.snapchat:before{content:"\f2ab"}i.icon.snapchat.ghost:before{content:"\f2ac"}i.icon.snapchat.square:before{content:"\f2ad"}i.icon.snowflake:before{content:"\f2dc"}i.icon.sort:before{content:"\f0dc"}i.icon.sort.alphabet.down:before{content:"\f15d"}i.icon.sort.alphabet.up:before{content:"\f15e"}i.icon.sort.amount.down:before{content:"\f160"}i.icon.sort.amount.up:before{content:"\f161"}i.icon.sort.down:before{content:"\f0dd"}i.icon.sort.numeric.down:before{content:"\f162"}i.icon.sort.numeric.up:before{content:"\f163"}i.icon.sort.up:before{content:"\f0de"}i.icon.soundcloud:before{content:"\f1be"}i.icon.space.shuttle:before{content:"\f197"}i.icon.speakap:before{content:"\f3f3"}i.icon.spinner:before{content:"\f110"}i.icon.spotify:before{content:"\f1bc"}i.icon.square:before{content:"\f0c8"}i.icon.square.full:before{content:"\f45c"}i.icon.stack.exchange:before{content:"\f18d"}i.icon.stack.overflow:before{content:"\f16c"}i.icon.star:before{content:"\f005"}i.icon.star.half:before{content:"\f089"}i.icon.staylinked:before{content:"\f3f5"}i.icon.steam:before{content:"\f1b6"}i.icon.steam.square:before{content:"\f1b7"}i.icon.steam.symbol:before{content:"\f3f6"}i.icon.step.backward:before{content:"\f048"}i.icon.step.forward:before{content:"\f051"}i.icon.stethoscope:before{content:"\f0f1"}i.icon.sticker.mule:before{content:"\f3f7"}i.icon.sticky.note:before{content:"\f249"}i.icon.stop:before{content:"\f04d"}i.icon.stop.circle:before{content:"\f28d"}i.icon.stopwatch:before{content:"\f2f2"}i.icon.strava:before{content:"\f428"}i.icon.street.view:before{content:"\f21d"}i.icon.strikethrough:before{content:"\f0cc"}i.icon.stripe:before{content:"\f429"}i.icon.stripe.s:before{content:"\f42a"}i.icon.studiovinari:before{content:"\f3f8"}i.icon.stumbleupon:before{content:"\f1a4"}i.icon.stumbleupon.circle:before{content:"\f1a3"}i.icon.subscript:before{content:"\f12c"}i.icon.subway:before{content:"\f239"}i.icon.suitcase:before{content:"\f0f2"}i.icon.sun:before{content:"\f185"}i.icon.superpowers:before{content:"\f2dd"}i.icon.superscript:before{content:"\f12b"}i.icon.supple:before{content:"\f3f9"}i.icon.sync:before{content:"\f021"}i.icon.sync.alternate:before{content:"\f2f1"}i.icon.syringe:before{content:"\f48e"}i.icon.table:before{content:"\f0ce"}i.icon.table.tennis:before{content:"\f45d"}i.icon.tablet:before{content:"\f10a"}i.icon.tablet.alternate:before{content:"\f3fa"}i.icon.tachometer.alternate:before{content:"\f3fd"}i.icon.tag:before{content:"\f02b"}i.icon.tags:before{content:"\f02c"}i.icon.tasks:before{content:"\f0ae"}i.icon.taxi:before{content:"\f1ba"}i.icon.telegram:before{content:"\f2c6"}i.icon.telegram.plane:before{content:"\f3fe"}i.icon.tencent.weibo:before{content:"\f1d5"}i.icon.terminal:before{content:"\f120"}i.icon.text.height:before{content:"\f034"}i.icon.text.width:before{content:"\f035"}i.icon.th:before{content:"\f00a"}i.icon.th.large:before{content:"\f009"}i.icon.th.list:before{content:"\f00b"}i.icon.themeisle:before{content:"\f2b2"}i.icon.thermometer:before{content:"\f491"}i.icon.thermometer.empty:before{content:"\f2cb"}i.icon.thermometer.full:before{content:"\f2c7"}i.icon.thermometer.half:before{content:"\f2c9"}i.icon.thermometer.quarter:before{content:"\f2ca"}i.icon.thermometer.three.quarters:before{content:"\f2c8"}i.icon.thumbs.down:before{content:"\f165"}i.icon.thumbs.up:before{content:"\f164"}i.icon.thumbtack:before{content:"\f08d"}i.icon.ticket.alternate:before{content:"\f3ff"}i.icon.times:before{content:"\f00d"}i.icon.times.circle:before{content:"\f057"}i.icon.tint:before{content:"\f043"}i.icon.toggle.off:before{content:"\f204"}i.icon.toggle.on:before{content:"\f205"}i.icon.trademark:before{content:"\f25c"}i.icon.train:before{content:"\f238"}i.icon.transgender:before{content:"\f224"}i.icon.transgender.alternate:before{content:"\f225"}i.icon.trash:before{content:"\f1f8"}i.icon.trash.alternate:before{content:"\f2ed"}i.icon.tree:before{content:"\f1bb"}i.icon.trello:before{content:"\f181"}i.icon.tripadvisor:before{content:"\f262"}i.icon.trophy:before{content:"\f091"}i.icon.truck:before{content:"\f0d1"}i.icon.tty:before{content:"\f1e4"}i.icon.tumblr:before{content:"\f173"}i.icon.tumblr.square:before{content:"\f174"}i.icon.tv:before{content:"\f26c"}i.icon.twitch:before{content:"\f1e8"}i.icon.twitter:before{content:"\f099"}i.icon.twitter.square:before{content:"\f081"}i.icon.typo3:before{content:"\f42b"}i.icon.uber:before{content:"\f402"}i.icon.uikit:before{content:"\f403"}i.icon.umbrella:before{content:"\f0e9"}i.icon.underline:before{content:"\f0cd"}i.icon.undo:before{content:"\f0e2"}i.icon.undo.alternate:before{content:"\f2ea"}i.icon.uniregistry:before{content:"\f404"}i.icon.universal.access:before{content:"\f29a"}i.icon.university:before{content:"\f19c"}i.icon.unlink:before{content:"\f127"}i.icon.unlock:before{content:"\f09c"}i.icon.unlock.alternate:before{content:"\f13e"}i.icon.untappd:before{content:"\f405"}i.icon.upload:before{content:"\f093"}i.icon.usb:before{content:"\f287"}i.icon.user:before{content:"\f007"}i.icon.user.circle:before{content:"\f2bd"}i.icon.user.md:before{content:"\f0f0"}i.icon.user.plus:before{content:"\f234"}i.icon.user.secret:before{content:"\f21b"}i.icon.user.times:before{content:"\f235"}i.icon.users:before{content:"\f0c0"}i.icon.ussunnah:before{content:"\f407"}i.icon.utensil.spoon:before{content:"\f2e5"}i.icon.utensils:before{content:"\f2e7"}i.icon.vaadin:before{content:"\f408"}i.icon.venus:before{content:"\f221"}i.icon.venus.double:before{content:"\f226"}i.icon.venus.mars:before{content:"\f228"}i.icon.viacoin:before{content:"\f237"}i.icon.viadeo:before{content:"\f2a9"}i.icon.viadeo.square:before{content:"\f2aa"}i.icon.viber:before{content:"\f409"}i.icon.video:before{content:"\f03d"}i.icon.vimeo:before{content:"\f40a"}i.icon.vimeo.square:before{content:"\f194"}i.icon.vimeo.v:before{content:"\f27d"}i.icon.vine:before{content:"\f1ca"}i.icon.vk:before{content:"\f189"}i.icon.vnv:before{content:"\f40b"}i.icon.volleyball.ball:before{content:"\f45f"}i.icon.volume.down:before{content:"\f027"}i.icon.volume.off:before{content:"\f026"}i.icon.volume.up:before{content:"\f028"}i.icon.vuejs:before{content:"\f41f"}i.icon.warehouse:before{content:"\f494"}i.icon.weibo:before{content:"\f18a"}i.icon.weight:before{content:"\f496"}i.icon.weixin:before{content:"\f1d7"}i.icon.whatsapp:before{content:"\f232"}i.icon.whatsapp.square:before{content:"\f40c"}i.icon.wheelchair:before{content:"\f193"}i.icon.whmcs:before{content:"\f40d"}i.icon.wifi:before{content:"\f1eb"}i.icon.wikipedia.w:before{content:"\f266"}i.icon.window.close:before{content:"\f410"}i.icon.window.maximize:before{content:"\f2d0"}i.icon.window.minimize:before{content:"\f2d1"}i.icon.window.restore:before{content:"\f2d2"}i.icon.windows:before{content:"\f17a"}i.icon.won.sign:before{content:"\f159"}i.icon.wordpress:before{content:"\f19a"}i.icon.wordpress.simple:before{content:"\f411"}i.icon.wpbeginner:before{content:"\f297"}i.icon.wpexplorer:before{content:"\f2de"}i.icon.wpforms:before{content:"\f298"}i.icon.wrench:before{content:"\f0ad"}i.icon.xbox:before{content:"\f412"}i.icon.xing:before{content:"\f168"}i.icon.xing.square:before{content:"\f169"}i.icon.y.combinator:before{content:"\f23b"}i.icon.yahoo:before{content:"\f19e"}i.icon.yandex:before{content:"\f413"}i.icon.yandex.international:before{content:"\f414"}i.icon.yelp:before{content:"\f1e9"}i.icon.yen.sign:before{content:"\f157"}i.icon.yoast:before{content:"\f2b1"}i.icon.youtube:before{content:"\f167"}i.icon.youtube.square:before{content:"\f431"}i.icon.chess.rock:before{content:"\f447"}i.icon.ordered.list:before{content:"\f0cb"}i.icon.unordered.list:before{content:"\f0ca"}i.icon.user.doctor:before{content:"\f0f0"}i.icon.shield:before{content:"\f3ed"}i.icon.puzzle:before{content:"\f12e"}i.icon.credit.card.amazon.pay:before{content:"\f42d"}i.icon.credit.card.american.express:before{content:"\f1f3"}i.icon.credit.card.diners.club:before{content:"\f24c"}i.icon.credit.card.discover:before{content:"\f1f2"}i.icon.credit.card.jcb:before{content:"\f24b"}i.icon.credit.card.mastercard:before{content:"\f1f1"}i.icon.credit.card.paypal:before{content:"\f1f4"}i.icon.credit.card.stripe:before{content:"\f1f5"}i.icon.credit.card.visa:before{content:"\f1f0"}i.icon.add.circle:before{content:"\f055"}i.icon.add.square:before{content:"\f0fe"}i.icon.add.to.calendar:before{content:"\f271"}i.icon.add.to.cart:before{content:"\f217"}i.icon.add.user:before{content:"\f234"}i.icon.add:before{content:"\f067"}i.icon.alarm.mute:before{content:"\f1f6"}i.icon.alarm:before{content:"\f0f3"}i.icon.ald:before{content:"\f2a2"}i.icon.als:before{content:"\f2a2"}i.icon.american.express.card:before{content:"\f1f3"}i.icon.american.express:before{content:"\f1f3"}i.icon.amex:before{content:"\f1f3"}i.icon.announcement:before{content:"\f0a1"}i.icon.area.chart:before{content:"\f1fe"}i.icon.area.graph:before{content:"\f1fe"}i.icon.arrow.down.cart:before{content:"\f218"}i.icon.asexual:before{content:"\f22d"}i.icon.asl.interpreting:before{content:"\f2a3"}i.icon.asl:before{content:"\f2a3"}i.icon.assistive.listening.devices:before{content:"\f2a2"}i.icon.attach:before{content:"\f0c6"}i.icon.attention:before{content:"\f06a"}i.icon.balance:before{content:"\f24e"}i.icon.bar:before{content:"\f0fc"}i.icon.bathtub:before{content:"\f2cd"}i.icon.battery.four:before{content:"\f240"}i.icon.battery.high:before{content:"\f241"}i.icon.battery.low:before{content:"\f243"}i.icon.battery.medium:before{content:"\f242"}i.icon.battery.one:before{content:"\f243"}i.icon.battery.three:before{content:"\f241"}i.icon.battery.two:before{content:"\f242"}i.icon.battery.zero:before{content:"\f244"}i.icon.birthday:before{content:"\f1fd"}i.icon.block.layout:before{content:"\f009"}i.icon.bluetooth.alternative:before{content:"\f294"}i.icon.broken.chain:before{content:"\f127"}i.icon.browser:before{content:"\f022"}i.icon.call.square:before{content:"\f098"}i.icon.call:before{content:"\f095"}i.icon.cancel:before{content:"\f00d"}i.icon.cart:before{content:"\f07a"}i.icon.cc:before{content:"\f20a"}i.icon.chain:before{content:"\f0c1"}i.icon.chat:before{content:"\f075"}i.icon.checked.calendar:before{content:"\f274"}i.icon.checkmark:before{content:"\f00c"}i.icon.circle.notched:before{content:"\f1ce"}i.icon.close:before{content:"\f00d"}i.icon.cny:before{content:"\f157"}i.icon.cocktail:before{content:"\f000"}i.icon.commenting:before{content:"\f27a"}i.icon.computer:before{content:"\f108"}i.icon.configure:before{content:"\f0ad"}i.icon.content:before{content:"\f0c9"}i.icon.deafness:before{content:"\f2a4"}i.icon.delete.calendar:before{content:"\f273"}i.icon.delete:before{content:"\f00d"}i.icon.detective:before{content:"\f21b"}i.icon.diners.club.card:before{content:"\f24c"}i.icon.diners.club:before{content:"\f24c"}i.icon.discover.card:before{content:"\f1f2"}i.icon.discover:before{content:"\f1f2"}i.icon.discussions:before{content:"\f086"}i.icon.doctor:before{content:"\f0f0"}i.icon.dollar:before{content:"\f155"}i.icon.dont:before{content:"\f05e"}i.icon.dribble:before{content:"\f17d"}i.icon.drivers.license:before{content:"\f2c2"}i.icon.dropdown:before{content:"\f0d7"}i.icon.eercast:before{content:"\f2da"}i.icon.emergency:before{content:"\f0f9"}i.icon.envira.gallery:before{content:"\f299"}i.icon.erase:before{content:"\f12d"}i.icon.eur:before{content:"\f153"}i.icon.euro:before{content:"\f153"}i.icon.eyedropper:before{content:"\f1fb"}i.icon.fa:before{content:"\f2b4"}i.icon.factory:before{content:"\f275"}i.icon.favorite:before{content:"\f005"}i.icon.feed:before{content:"\f09e"}i.icon.female.homosexual:before{content:"\f226"}i.icon.file.text:before{content:"\f15c"}i.icon.find:before{content:"\f1e5"}i.icon.first.aid:before{content:"\f0fa"}i.icon.five.hundred.pixels:before{content:"\f26e"}i.icon.fork:before{content:"\f126"}i.icon.game:before{content:"\f11b"}i.icon.gay:before{content:"\f227"}i.icon.gbp:before{content:"\f154"}i.icon.gittip:before{content:"\f184"}i.icon.google.plus.circle:before{content:"\f2b3"}i.icon.google.plus.official:before{content:"\f2b3"}i.icon.grab:before{content:"\f255"}i.icon.graduation:before{content:"\f19d"}i.icon.grid.layout:before{content:"\f00a"}i.icon.group:before{content:"\f0c0"}i.icon.h:before{content:"\f0fd"}i.icon.hand.victory:before{content:"\f25b"}i.icon.handicap:before{content:"\f193"}i.icon.hard.of.hearing:before{content:"\f2a4"}i.icon.header:before{content:"\f1dc"}i.icon.help.circle:before{content:"\f059"}i.icon.help:before{content:"\f128"}i.icon.heterosexual:before{content:"\f228"}i.icon.hide:before{content:"\f070"}i.icon.hotel:before{content:"\f236"}i.icon.hourglass.four:before{content:"\f254"}i.icon.hourglass.full:before{content:"\f254"}i.icon.hourglass.one:before{content:"\f251"}i.icon.hourglass.three:before{content:"\f253"}i.icon.hourglass.two:before{content:"\f252"}i.icon.idea:before{content:"\f0eb"}i.icon.ils:before{content:"\f20b"}i.icon.in-cart:before{content:"\f218"}i.icon.inr:before{content:"\f156"}i.icon.intergender:before{content:"\f224"}i.icon.intersex:before{content:"\f224"}i.icon.japan.credit.bureau.card:before{content:"\f24b"}i.icon.japan.credit.bureau:before{content:"\f24b"}i.icon.jcb:before{content:"\f24b"}i.icon.jpy:before{content:"\f157"}i.icon.krw:before{content:"\f159"}i.icon.lab:before{content:"\f0c3"}i.icon.law:before{content:"\f24e"}i.icon.legal:before{content:"\f0e3"}i.icon.lesbian:before{content:"\f226"}i.icon.lightning:before{content:"\f0e7"}i.icon.like:before{content:"\f004"}i.icon.line.graph:before{content:"\f201"}i.icon.linkedin.square:before{content:"\f08c"}i.icon.linkify:before{content:"\f0c1"}i.icon.lira:before{content:"\f195"}i.icon.list.layout:before{content:"\f00b"}i.icon.magnify:before{content:"\f00e"}i.icon.mail.forward:before{content:"\f064"}i.icon.mail.square:before{content:"\f199"}i.icon.mail:before{content:"\f0e0"}i.icon.male.homosexual:before{content:"\f227"}i.icon.man:before{content:"\f222"}i.icon.marker:before{content:"\f041"}i.icon.mars.alternate:before{content:"\f229"}i.icon.mars.horizontal:before{content:"\f22b"}i.icon.mars.vertical:before{content:"\f22a"}i.icon.mastercard.card:before{content:"\f1f1"}i.icon.mastercard:before{content:"\f1f1"}i.icon.microsoft.edge:before{content:"\f282"}i.icon.military:before{content:"\f0fb"}i.icon.ms.edge:before{content:"\f282"}i.icon.mute:before{content:"\f131"}i.icon.new.pied.piper:before{content:"\f2ae"}i.icon.non.binary.transgender:before{content:"\f223"}i.icon.numbered.list:before{content:"\f0cb"}i.icon.optinmonster:before{content:"\f23c"}i.icon.options:before{content:"\f1de"}i.icon.other.gender.horizontal:before{content:"\f22b"}i.icon.other.gender.vertical:before{content:"\f22a"}i.icon.other.gender:before{content:"\f229"}i.icon.payment:before{content:"\f09d"}i.icon.paypal.card:before{content:"\f1f4"}i.icon.pencil.square:before{content:"\f14b"}i.icon.photo:before{content:"\f030"}i.icon.picture:before{content:"\f03e"}i.icon.pie.chart:before{content:"\f200"}i.icon.pie.graph:before{content:"\f200"}i.icon.pied.piper.hat:before{content:"\f2ae"}i.icon.pin:before{content:"\f08d"}i.icon.plus.cart:before{content:"\f217"}i.icon.pocket:before{content:"\f265"}i.icon.point:before{content:"\f041"}i.icon.pointing.down:before{content:"\f0a7"}i.icon.pointing.left:before{content:"\f0a5"}i.icon.pointing.right:before{content:"\f0a4"}i.icon.pointing.up:before{content:"\f0a6"}i.icon.pound:before{content:"\f154"}i.icon.power.cord:before{content:"\f1e6"}i.icon.power:before{content:"\f011"}i.icon.privacy:before{content:"\f084"}i.icon.r.circle:before{content:"\f25d"}i.icon.rain:before{content:"\f0e9"}i.icon.record:before{content:"\f03d"}i.icon.refresh:before{content:"\f021"}i.icon.remove.circle:before{content:"\f057"}i.icon.remove.from.calendar:before{content:"\f272"}i.icon.remove.user:before{content:"\f235"}i.icon.remove:before{content:"\f00d"}i.icon.repeat:before{content:"\f01e"}i.icon.rmb:before{content:"\f157"}i.icon.rouble:before{content:"\f158"}i.icon.rub:before{content:"\f158"}i.icon.ruble:before{content:"\f158"}i.icon.rupee:before{content:"\f156"}i.icon.s15:before{content:"\f2cd"}i.icon.selected.radio:before{content:"\f192"}i.icon.send:before{content:"\f1d8"}i.icon.setting:before{content:"\f013"}i.icon.settings:before{content:"\f085"}i.icon.shekel:before{content:"\f20b"}i.icon.sheqel:before{content:"\f20b"}i.icon.shipping:before{content:"\f0d1"}i.icon.shop:before{content:"\f07a"}i.icon.shuffle:before{content:"\f074"}i.icon.shutdown:before{content:"\f011"}i.icon.sidebar:before{content:"\f0c9"}i.icon.signing:before{content:"\f2a7"}i.icon.signup:before{content:"\f044"}i.icon.sliders:before{content:"\f1de"}i.icon.soccer:before{content:"\f1e3"}i.icon.sort.alphabet.ascending:before{content:"\f15d"}i.icon.sort.alphabet.descending:before{content:"\f15e"}i.icon.sort.ascending:before{content:"\f0de"}i.icon.sort.content.ascending:before{content:"\f160"}i.icon.sort.content.descending:before{content:"\f161"}i.icon.sort.descending:before{content:"\f0dd"}i.icon.sort.numeric.ascending:before{content:"\f162"}i.icon.sort.numeric.descending:before{content:"\f163"}i.icon.sound:before{content:"\f025"}i.icon.spy:before{content:"\f21b"}i.icon.stripe.card:before{content:"\f1f5"}i.icon.student:before{content:"\f19d"}i.icon.talk:before{content:"\f27a"}i.icon.target:before{content:"\f140"}i.icon.teletype:before{content:"\f1e4"}i.icon.television:before{content:"\f26c"}i.icon.text.cursor:before{content:"\f246"}i.icon.text.telephone:before{content:"\f1e4"}i.icon.theme.isle:before{content:"\f2b2"}i.icon.theme:before{content:"\f043"}i.icon.thermometer:before{content:"\f2c7"}i.icon.thumb.tack:before{content:"\f08d"}i.icon.time:before{content:"\f017"}i.icon.tm:before{content:"\f25c"}i.icon.toggle.down:before{content:"\f150"}i.icon.toggle.left:before{content:"\f191"}i.icon.toggle.right:before{content:"\f152"}i.icon.toggle.up:before{content:"\f151"}i.icon.translate:before{content:"\f1ab"}i.icon.travel:before{content:"\f0b1"}i.icon.treatment:before{content:"\f0f1"}i.icon.triangle.down:before{content:"\f0d7"}i.icon.triangle.left:before{content:"\f0d9"}i.icon.triangle.right:before{content:"\f0da"}i.icon.triangle.up:before{content:"\f0d8"}i.icon.try:before{content:"\f195"}i.icon.unhide:before{content:"\f06e"}i.icon.unlinkify:before{content:"\f127"}i.icon.unmute:before{content:"\f130"}i.icon.usd:before{content:"\f155"}i.icon.user.cancel:before{content:"\f235"}i.icon.user.close:before{content:"\f235"}i.icon.user.delete:before{content:"\f235"}i.icon.user.x:before{content:"\f235"}i.icon.vcard:before{content:"\f2bb"}i.icon.video.camera:before{content:"\f03d"}i.icon.video.play:before{content:"\f144"}i.icon.visa.card:before{content:"\f1f0"}i.icon.visa:before{content:"\f1f0"}i.icon.volume.control.phone:before{content:"\f2a0"}i.icon.wait:before{content:"\f017"}i.icon.warning.circle:before{content:"\f06a"}i.icon.warning.sign:before{content:"\f071"}i.icon.warning:before{content:"\f12a"}i.icon.wechat:before{content:"\f1d7"}i.icon.wi-fi:before{content:"\f1eb"}i.icon.wikipedia:before{content:"\f266"}i.icon.winner:before{content:"\f091"}i.icon.wizard:before{content:"\f0d0"}i.icon.woman:before{content:"\f221"}i.icon.won:before{content:"\f159"}i.icon.wordpress.beginner:before{content:"\f297"}i.icon.wordpress.forms:before{content:"\f298"}i.icon.world:before{content:"\f0ac"}i.icon.write.square:before{content:"\f14b"}i.icon.x:before{content:"\f00d"}i.icon.yc:before{content:"\f23b"}i.icon.ycombinator:before{content:"\f23b"}i.icon.yen:before{content:"\f157"}i.icon.zip:before{content:"\f187"}i.icon.zoom-in:before{content:"\f00e"}i.icon.zoom-out:before{content:"\f010"}i.icon.zoom:before{content:"\f00e"}i.icon.bitbucket.square:before{content:"\f171"}i.icon.checkmark.box:before{content:"\f14a"}i.icon.circle.thin:before{content:"\f111"}i.icon.cloud.download:before{content:"\f381"}i.icon.cloud.upload:before{content:"\f382"}i.icon.compose:before{content:"\f303"}i.icon.conversation:before{content:"\f086"}i.icon.credit.card.alternative:before{content:"\f09d"}i.icon.currency:before{content:"\f3d1"}i.icon.dashboard:before{content:"\f3fd"}i.icon.diamond:before{content:"\f3a5"}i.icon.disk:before{content:"\f0a0"}i.icon.exchange:before{content:"\f362"}i.icon.external.share:before{content:"\f14d"}i.icon.external.square:before{content:"\f360"}i.icon.external:before{content:"\f35d"}i.icon.facebook.official:before{content:"\f082"}i.icon.food:before{content:"\f2e7"}i.icon.hourglass.zero:before{content:"\f253"}i.icon.level.down:before{content:"\f3be"}i.icon.level.up:before{content:"\f3bf"}i.icon.logout:before{content:"\f2f5"}i.icon.meanpath:before{content:"\f0c8"}i.icon.money:before{content:"\f3d1"}i.icon.move:before{content:"\f0b2"}i.icon.pencil:before{content:"\f303"}i.icon.protect:before{content:"\f023"}i.icon.radio:before{content:"\f192"}i.icon.remove.bookmark:before{content:"\f02e"}i.icon.resize.horizontal:before{content:"\f337"}i.icon.resize.vertical:before{content:"\f338"}i.icon.sign-in:before{content:"\f2f6"}i.icon.sign-out:before{content:"\f2f5"}i.icon.spoon:before{content:"\f2e5"}i.icon.star.half.empty:before{content:"\f089"}i.icon.star.half.full:before{content:"\f089"}i.icon.ticket:before{content:"\f3ff"}i.icon.times.rectangle:before{content:"\f410"}i.icon.write:before{content:"\f303"}i.icon.youtube.play:before{content:"\f167"}@font-face{font-family:outline-icons;src:url(../fonts/outline-icons.eot);src:url(../fonts/outline-icons.eot?#iefix) format('embedded-opentype'),url(../fonts/outline-icons.woff2) format('woff2'),url(../fonts/outline-icons.woff) format('woff'),url(../fonts/outline-icons.ttf) format('truetype'),url(../fonts/outline-icons.svg#icons) format('svg');font-style:normal;font-weight:400;font-variant:normal;text-decoration:inherit;text-transform:none}i.icon.outline{font-family:outline-icons}i.icon.address.book.outline:before{content:"\f2b9"}i.icon.address.card.outline:before{content:"\f2bb"}i.icon.arrow.alternate.circle.down.outline:before{content:"\f358"}i.icon.arrow.alternate.circle.left.outline:before{content:"\f359"}i.icon.arrow.alternate.circle.right.outline:before{content:"\f35a"}i.icon.arrow.alternate.circle.up.outline:before{content:"\f35b"}i.icon.bell.outline:before{content:"\f0f3"}i.icon.bell.slash.outline:before{content:"\f1f6"}i.icon.bookmark.outline:before{content:"\f02e"}i.icon.building.outline:before{content:"\f1ad"}i.icon.calendar.outline:before{content:"\f133"}i.icon.calendar.alternate.outline:before{content:"\f073"}i.icon.calendar.check.outline:before{content:"\f274"}i.icon.calendar.minus.outline:before{content:"\f272"}i.icon.calendar.plus.outline:before{content:"\f271"}i.icon.calendar.times.outline:before{content:"\f273"}i.icon.caret.square.down.outline:before{content:"\f150"}i.icon.caret.square.left.outline:before{content:"\f191"}i.icon.caret.square.right.outline:before{content:"\f152"}i.icon.caret.square.up.outline:before{content:"\f151"}i.icon.chart.bar.outline:before{content:"\f080"}i.icon.check.circle.outline:before{content:"\f058"}i.icon.check.square.outline:before{content:"\f14a"}i.icon.circle.outline:before{content:"\f111"}i.icon.clipboard.outline:before{content:"\f328"}i.icon.clock.outline:before{content:"\f017"}i.icon.clone.outline:before{content:"\f24d"}i.icon.closed.captioning.outline:before{content:"\f20a"}i.icon.comment.outline:before{content:"\f075"}i.icon.comment.alternate.outline:before{content:"\f27a"}i.icon.comments.outline:before{content:"\f086"}i.icon.compass.outline:before{content:"\f14e"}i.icon.copy.outline:before{content:"\f0c5"}i.icon.copyright.outline:before{content:"\f1f9"}i.icon.credit.card.outline:before{content:"\f09d"}i.icon.dot.circle.outline:before{content:"\f192"}i.icon.edit.outline:before{content:"\f044"}i.icon.envelope.outline:before{content:"\f0e0"}i.icon.envelope.open.outline:before{content:"\f2b6"}i.icon.eye.slash.outline:before{content:"\f070"}i.icon.file.outline:before{content:"\f15b"}i.icon.file.alternate.outline:before{content:"\f15c"}i.icon.file.archive.outline:before{content:"\f1c6"}i.icon.file.audio.outline:before{content:"\f1c7"}i.icon.file.code.outline:before{content:"\f1c9"}i.icon.file.excel.outline:before{content:"\f1c3"}i.icon.file.image.outline:before{content:"\f1c5"}i.icon.file.pdf.outline:before{content:"\f1c1"}i.icon.file.powerpoint.outline:before{content:"\f1c4"}i.icon.file.video.outline:before{content:"\f1c8"}i.icon.file.word.outline:before{content:"\f1c2"}i.icon.flag.outline:before{content:"\f024"}i.icon.folder.outline:before{content:"\f07b"}i.icon.folder.open.outline:before{content:"\f07c"}i.icon.frown.outline:before{content:"\f119"}i.icon.futbol.outline:before{content:"\f1e3"}i.icon.gem.outline:before{content:"\f3a5"}i.icon.hand.lizard.outline:before{content:"\f258"}i.icon.hand.paper.outline:before{content:"\f256"}i.icon.hand.peace.outline:before{content:"\f25b"}i.icon.hand.point.down.outline:before{content:"\f0a7"}i.icon.hand.point.left.outline:before{content:"\f0a5"}i.icon.hand.point.right.outline:before{content:"\f0a4"}i.icon.hand.point.up.outline:before{content:"\f0a6"}i.icon.hand.pointer.outline:before{content:"\f25a"}i.icon.hand.rock.outline:before{content:"\f255"}i.icon.hand.scissors.outline:before{content:"\f257"}i.icon.hand.spock.outline:before{content:"\f259"}i.icon.handshake.outline:before{content:"\f2b5"}i.icon.hdd.outline:before{content:"\f0a0"}i.icon.heart.outline:before{content:"\f004"}i.icon.hospital.outline:before{content:"\f0f8"}i.icon.hourglass.outline:before{content:"\f254"}i.icon.id.badge.outline:before{content:"\f2c1"}i.icon.id.card.outline:before{content:"\f2c2"}i.icon.image.outline:before{content:"\f03e"}i.icon.images.outline:before{content:"\f302"}i.icon.keyboard.outline:before{content:"\f11c"}i.icon.lemon.outline:before{content:"\f094"}i.icon.life.ring.outline:before{content:"\f1cd"}i.icon.lightbulb.outline:before{content:"\f0eb"}i.icon.list.alternate.outline:before{content:"\f022"}i.icon.map.outline:before{content:"\f279"}i.icon.meh.outline:before{content:"\f11a"}i.icon.minus.square.outline:before{content:"\f146"}i.icon.money.bill.alternate.outline:before{content:"\f3d1"}i.icon.moon.outline:before{content:"\f186"}i.icon.newspaper.outline:before{content:"\f1ea"}i.icon.object.group.outline:before{content:"\f247"}i.icon.object.ungroup.outline:before{content:"\f248"}i.icon.paper.plane.outline:before{content:"\f1d8"}i.icon.pause.circle.outline:before{content:"\f28b"}i.icon.play.circle.outline:before{content:"\f144"}i.icon.plus.square.outline:before{content:"\f0fe"}i.icon.question.circle.outline:before{content:"\f059"}i.icon.registered.outline:before{content:"\f25d"}i.icon.save.outline:before{content:"\f0c7"}i.icon.share.square.outline:before{content:"\f14d"}i.icon.smile.outline:before{content:"\f118"}i.icon.snowflake.outline:before{content:"\f2dc"}i.icon.square.outline:before{content:"\f0c8"}i.icon.star.outline:before{content:"\f005"}i.icon.star.half.outline:before{content:"\f089"}i.icon.sticky.note.outline:before{content:"\f249"}i.icon.stop.circle.outline:before{content:"\f28d"}i.icon.sun.outline:before{content:"\f185"}i.icon.thumbs.down.outline:before{content:"\f165"}i.icon.thumbs.up.outline:before{content:"\f164"}i.icon.times.circle.outline:before{content:"\f057"}i.icon.trash.alternate.outline:before{content:"\f2ed"}i.icon.user.outline:before{content:"\f007"}i.icon.user.circle.outline:before{content:"\f2bd"}i.icon.window.close.outline:before{content:"\f410"}i.icon.window.maximize.outline:before{content:"\f2d0"}i.icon.window.minimize.outline:before{content:"\f2d1"}i.icon.window.restore.outline:before{content:"\f2d2"}i.icon.disk.outline:before{content:"\f0a0"}i.icon.heart.empty,i.icon.star.empty{font-family:outline-icons}i.icon.heart.empty:before{content:"\f004"}i.icon.star.empty:before{content:"\f089"}@font-face{font-family:brand-icons;src:url(../fonts/brand-icons.eot);src:url(../fonts/brand-icons.eot?#iefix) format('embedded-opentype'),url(../fonts/brand-icons.woff2) format('woff2'),url(../fonts/brand-icons.woff) format('woff'),url(../fonts/brand-icons.ttf) format('truetype'),url(../fonts/brand-icons.svg#icons) format('svg');font-style:normal;font-weight:400;font-variant:normal;text-decoration:inherit;text-transform:none}i.icon.\35 00px,i.icon.accessible.icon,i.icon.accusoft,i.icon.adn,i.icon.adversal,i.icon.affiliatetheme,i.icon.algolia,i.icon.amazon,i.icon.amazon.pay,i.icon.amilia,i.icon.android,i.icon.angellist,i.icon.angrycreative,i.icon.angular,i.icon.app.store,i.icon.app.store.ios,i.icon.apper,i.icon.apple,i.icon.apple.pay,i.icon.asymmetrik,i.icon.audible,i.icon.autoprefixer,i.icon.avianex,i.icon.aviato,i.icon.aws,i.icon.bandcamp,i.icon.behance,i.icon.behance.square,i.icon.bimobject,i.icon.bitbucket,i.icon.bitcoin,i.icon.bity,i.icon.black.tie,i.icon.blackberry,i.icon.blogger,i.icon.blogger.b,i.icon.bluetooth,i.icon.bluetooth.b,i.icon.btc,i.icon.buromobelexperte,i.icon.buysellads,i.icon.cc.amazon.pay,i.icon.cc.amex,i.icon.cc.apple.pay,i.icon.cc.diners.club,i.icon.cc.discover,i.icon.cc.jcb,i.icon.cc.mastercard,i.icon.cc.paypal,i.icon.cc.stripe,i.icon.cc.visa,i.icon.centercode,i.icon.chrome,i.icon.cloudscale,i.icon.cloudsmith,i.icon.cloudversify,i.icon.codepen,i.icon.codiepie,i.icon.connectdevelop,i.icon.contao,i.icon.cpanel,i.icon.creative.commons,i.icon.css3,i.icon.css3.alternate,i.icon.cuttlefish,i.icon.d.and.d,i.icon.dashcube,i.icon.delicious,i.icon.deploydog,i.icon.deskpro,i.icon.deviantart,i.icon.digg,i.icon.digital.ocean,i.icon.discord,i.icon.discourse,i.icon.dochub,i.icon.docker,i.icon.draft2digital,i.icon.dribbble,i.icon.dribbble.square,i.icon.dropbox,i.icon.drupal,i.icon.dyalog,i.icon.earlybirds,i.icon.edge,i.icon.elementor,i.icon.ember,i.icon.empire,i.icon.envira,i.icon.erlang,i.icon.ethereum,i.icon.etsy,i.icon.expeditedssl,i.icon.facebook,i.icon.facebook.f,i.icon.facebook.messenger,i.icon.facebook.square,i.icon.firefox,i.icon.first.order,i.icon.firstdraft,i.icon.flickr,i.icon.flipboard,i.icon.fly,i.icon.font.awesome,i.icon.font.awesome.alternate,i.icon.font.awesome.flag,i.icon.fonticons,i.icon.fonticons.fi,i.icon.fort.awesome,i.icon.fort.awesome.alternate,i.icon.forumbee,i.icon.foursquare,i.icon.free.code.camp,i.icon.freebsd,i.icon.get.pocket,i.icon.gg,i.icon.gg.circle,i.icon.git,i.icon.git.square,i.icon.github,i.icon.github.alternate,i.icon.github.square,i.icon.gitkraken,i.icon.gitlab,i.icon.gitter,i.icon.glide,i.icon.glide.g,i.icon.gofore,i.icon.goodreads,i.icon.goodreads.g,i.icon.google,i.icon.google.drive,i.icon.google.play,i.icon.google.plus,i.icon.google.plus.g,i.icon.google.plus.square,i.icon.google.wallet,i.icon.gratipay,i.icon.grav,i.icon.gripfire,i.icon.grunt,i.icon.gulp,i.icon.hacker.news,i.icon.hacker.news.square,i.icon.hips,i.icon.hire.a.helper,i.icon.hooli,i.icon.hotjar,i.icon.houzz,i.icon.html5,i.icon.hubspot,i.icon.imdb,i.icon.instagram,i.icon.internet.explorer,i.icon.ioxhost,i.icon.itunes,i.icon.itunes.note,i.icon.jenkins,i.icon.joget,i.icon.joomla,i.icon.js,i.icon.js.square,i.icon.jsfiddle,i.icon.keycdn,i.icon.kickstarter,i.icon.kickstarter.k,i.icon.korvue,i.icon.laravel,i.icon.lastfm,i.icon.lastfm.square,i.icon.leanpub,i.icon.less,i.icon.linechat,i.icon.linkedin,i.icon.linkedin.alternate,i.icon.linkedin.in,i.icon.linode,i.icon.linux,i.icon.lyft,i.icon.magento,i.icon.maxcdn,i.icon.medapps,i.icon.medium,i.icon.medium.m,i.icon.medrt,i.icon.meetup,i.icon.microsoft,i.icon.mix,i.icon.mixcloud,i.icon.mizuni,i.icon.modx,i.icon.monero,i.icon.napster,i.icon.nintendo.switch,i.icon.node,i.icon.node.js,i.icon.npm,i.icon.ns8,i.icon.nutritionix,i.icon.odnoklassniki,i.icon.odnoklassniki.square,i.icon.opencart,i.icon.openid,i.icon.opera,i.icon.optin.monster,i.icon.osi,i.icon.page4,i.icon.pagelines,i.icon.palfed,i.icon.patreon,i.icon.paypal,i.icon.periscope,i.icon.phabricator,i.icon.phoenix.framework,i.icon.php,i.icon.pied.piper,i.icon.pied.piper.alternate,i.icon.pied.piper.pp,i.icon.pinterest,i.icon.pinterest.p,i.icon.pinterest.square,i.icon.playstation,i.icon.product.hunt,i.icon.pushed,i.icon.python,i.icon.qq,i.icon.quinscape,i.icon.quora,i.icon.ravelry,i.icon.react,i.icon.rebel,i.icon.reddit,i.icon.reddit.alien,i.icon.reddit.square,i.icon.redriver,i.icon.rendact,i.icon.renren,i.icon.replyd,i.icon.resolving,i.icon.rocketchat,i.icon.rockrms,i.icon.safari,i.icon.sass,i.icon.schlix,i.icon.scribd,i.icon.searchengin,i.icon.sellcast,i.icon.sellsy,i.icon.servicestack,i.icon.shirtsinbulk,i.icon.simplybuilt,i.icon.sistrix,i.icon.skyatlas,i.icon.skype,i.icon.slack,i.icon.slack.hash,i.icon.slideshare,i.icon.snapchat,i.icon.snapchat.ghost,i.icon.snapchat.square,i.icon.soundcloud,i.icon.speakap,i.icon.spotify,i.icon.stack.exchange,i.icon.stack.overflow,i.icon.staylinked,i.icon.steam,i.icon.steam.square,i.icon.steam.symbol,i.icon.sticker.mule,i.icon.strava,i.icon.stripe,i.icon.stripe.s,i.icon.studiovinari,i.icon.stumbleupon,i.icon.stumbleupon.circle,i.icon.superpowers,i.icon.supple,i.icon.telegram,i.icon.telegram.plane,i.icon.tencent.weibo,i.icon.themeisle,i.icon.trello,i.icon.tripadvisor,i.icon.tumblr,i.icon.tumblr.square,i.icon.twitch,i.icon.twitter,i.icon.twitter.square,i.icon.typo3,i.icon.uber,i.icon.uikit,i.icon.uniregistry,i.icon.untappd,i.icon.usb,i.icon.ussunnah,i.icon.vaadin,i.icon.viacoin,i.icon.viadeo,i.icon.viadeo.square,i.icon.viber,i.icon.vimeo,i.icon.vimeo.square,i.icon.vimeo.v,i.icon.vine,i.icon.vk,i.icon.vnv,i.icon.vuejs,i.icon.wechat,i.icon.weibo,i.icon.weixin,i.icon.whatsapp,i.icon.whatsapp.square,i.icon.whmcs,i.icon.wikipedia.w,i.icon.windows,i.icon.wordpress,i.icon.wordpress.simple,i.icon.wpbeginner,i.icon.wpexplorer,i.icon.wpforms,i.icon.xbox,i.icon.xing,i.icon.xing.square,i.icon.y.combinator,i.icon.yahoo,i.icon.yandex,i.icon.yandex.international,i.icon.yelp,i.icon.yoast,i.icon.youtube,i.icon.youtube.square{font-family:brand-icons}/*! -* # Semantic UI 2.4.0 - Image -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.image{position:relative;display:inline-block;vertical-align:middle;max-width:100%;background-color:transparent}img.ui.image{display:block}.ui.image img,.ui.image svg{display:block;max-width:100%;height:auto}.ui.hidden.image,.ui.hidden.images{display:none}.ui.hidden.transition.image,.ui.hidden.transition.images{display:block;visibility:hidden}.ui.images>.hidden.transition{display:inline-block;visibility:hidden}.ui.disabled.image,.ui.disabled.images{cursor:default;opacity:.45}.ui.inline.image,.ui.inline.image img,.ui.inline.image svg{display:inline-block}.ui.top.aligned.image,.ui.top.aligned.image img,.ui.top.aligned.image svg,.ui.top.aligned.images .image{display:inline-block;vertical-align:top}.ui.middle.aligned.image,.ui.middle.aligned.image img,.ui.middle.aligned.image svg,.ui.middle.aligned.images .image{display:inline-block;vertical-align:middle}.ui.bottom.aligned.image,.ui.bottom.aligned.image img,.ui.bottom.aligned.image svg,.ui.bottom.aligned.images .image{display:inline-block;vertical-align:bottom}.ui.rounded.image,.ui.rounded.image>*,.ui.rounded.images .image,.ui.rounded.images .image>*{border-radius:.3125em}.ui.bordered.image img,.ui.bordered.image svg,.ui.bordered.images .image,.ui.bordered.images img,.ui.bordered.images svg,img.ui.bordered.image{border:1px solid rgba(0,0,0,.1)}.ui.circular.image,.ui.circular.images{overflow:hidden}.ui.circular.image,.ui.circular.image>*,.ui.circular.images .image,.ui.circular.images .image>*{border-radius:500rem}.ui.fluid.image,.ui.fluid.image img,.ui.fluid.image svg,.ui.fluid.images,.ui.fluid.images img,.ui.fluid.images svg{display:block;width:100%;height:auto}.ui.avatar.image,.ui.avatar.image img,.ui.avatar.image svg,.ui.avatar.images .image,.ui.avatar.images img,.ui.avatar.images svg{margin-right:.25em;display:inline-block;width:2em;height:2em;border-radius:500rem}.ui.spaced.image{display:inline-block!important;margin-left:.5em;margin-right:.5em}.ui[class*="left spaced"].image{margin-left:.5em;margin-right:0}.ui[class*="right spaced"].image{margin-left:0;margin-right:.5em}.ui.floated.image,.ui.floated.images{float:left;margin-right:1em;margin-bottom:1em}.ui.right.floated.image,.ui.right.floated.images{float:right;margin-right:0;margin-bottom:1em;margin-left:1em}.ui.floated.image:last-child,.ui.floated.images:last-child{margin-bottom:0}.ui.centered.image,.ui.centered.images{margin-left:auto;margin-right:auto}.ui.mini.image,.ui.mini.images .image,.ui.mini.images img,.ui.mini.images svg{width:35px;height:auto;font-size:.78571429rem}.ui.tiny.image,.ui.tiny.images .image,.ui.tiny.images img,.ui.tiny.images svg{width:80px;height:auto;font-size:.85714286rem}.ui.small.image,.ui.small.images .image,.ui.small.images img,.ui.small.images svg{width:150px;height:auto;font-size:.92857143rem}.ui.medium.image,.ui.medium.images .image,.ui.medium.images img,.ui.medium.images svg{width:300px;height:auto;font-size:1rem}.ui.large.image,.ui.large.images .image,.ui.large.images img,.ui.large.images svg{width:450px;height:auto;font-size:1.14285714rem}.ui.big.image,.ui.big.images .image,.ui.big.images img,.ui.big.images svg{width:600px;height:auto;font-size:1.28571429rem}.ui.huge.image,.ui.huge.images .image,.ui.huge.images img,.ui.huge.images svg{width:800px;height:auto;font-size:1.42857143rem}.ui.massive.image,.ui.massive.images .image,.ui.massive.images img,.ui.massive.images svg{width:960px;height:auto;font-size:1.71428571rem}.ui.images{font-size:0;margin:0 -.25rem 0}.ui.images .image,.ui.images>img,.ui.images>svg{display:inline-block;margin:0 .25rem .5rem}/*! -* # Semantic UI 2.4.0 - Input -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.input{position:relative;font-weight:400;font-style:normal;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;color:rgba(0,0,0,.87)}.ui.input>input{margin:0;max-width:100%;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;outline:0;-webkit-tap-highlight-color:rgba(255,255,255,0);text-align:left;line-height:1.21428571em;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;padding:.67857143em 1em;background:#fff;border:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87);border-radius:.28571429rem;-webkit-transition:border-color .1s ease,-webkit-box-shadow .1s ease;transition:border-color .1s ease,-webkit-box-shadow .1s ease;transition:box-shadow .1s ease,border-color .1s ease;transition:box-shadow .1s ease,border-color .1s ease,-webkit-box-shadow .1s ease;-webkit-box-shadow:none;box-shadow:none}.ui.input>input::-webkit-input-placeholder{color:rgba(191,191,191,.87)}.ui.input>input::-moz-placeholder{color:rgba(191,191,191,.87)}.ui.input>input:-ms-input-placeholder{color:rgba(191,191,191,.87)}.ui.disabled.input,.ui.input:not(.disabled) input[disabled]{opacity:.45}.ui.disabled.input>input,.ui.input:not(.disabled) input[disabled]{pointer-events:none}.ui.input.down input,.ui.input>input:active{border-color:rgba(0,0,0,.3);background:#fafafa;color:rgba(0,0,0,.87);-webkit-box-shadow:none;box-shadow:none}.ui.loading.loading.input>i.icon:before{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loading.loading.input>i.icon:after{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;-webkit-box-shadow:0 0 0 1px transparent;box-shadow:0 0 0 1px transparent}.ui.input.focus>input,.ui.input>input:focus{border-color:#85b7d9;background:#fff;color:rgba(0,0,0,.8);-webkit-box-shadow:none;box-shadow:none}.ui.input.focus>input::-webkit-input-placeholder,.ui.input>input:focus::-webkit-input-placeholder{color:rgba(115,115,115,.87)}.ui.input.focus>input::-moz-placeholder,.ui.input>input:focus::-moz-placeholder{color:rgba(115,115,115,.87)}.ui.input.focus>input:-ms-input-placeholder,.ui.input>input:focus:-ms-input-placeholder{color:rgba(115,115,115,.87)}.ui.input.error>input{background-color:#fff6f6;border-color:#e0b4b4;color:#9f3a38;-webkit-box-shadow:none;box-shadow:none}.ui.input.error>input::-webkit-input-placeholder{color:#e7bdbc}.ui.input.error>input::-moz-placeholder{color:#e7bdbc}.ui.input.error>input:-ms-input-placeholder{color:#e7bdbc!important}.ui.input.error>input:focus::-webkit-input-placeholder{color:#da9796}.ui.input.error>input:focus::-moz-placeholder{color:#da9796}.ui.input.error>input:focus:-ms-input-placeholder{color:#da9796!important}.ui.transparent.input>input{border-color:transparent!important;background-color:transparent!important;padding:0!important;-webkit-box-shadow:none!important;box-shadow:none!important;border-radius:0!important}.ui.transparent.icon.input>i.icon{width:1.1em}.ui.transparent.icon.input>input{padding-left:0!important;padding-right:2em!important}.ui.transparent[class*="left icon"].input>input{padding-left:2em!important;padding-right:0!important}.ui.transparent.inverted.input{color:#fff}.ui.transparent.inverted.input>input{color:inherit}.ui.transparent.inverted.input>input::-webkit-input-placeholder{color:rgba(255,255,255,.5)}.ui.transparent.inverted.input>input::-moz-placeholder{color:rgba(255,255,255,.5)}.ui.transparent.inverted.input>input:-ms-input-placeholder{color:rgba(255,255,255,.5)}.ui.icon.input>i.icon{cursor:default;position:absolute;line-height:1;text-align:center;top:0;right:0;margin:0;height:100%;width:2.67142857em;opacity:.5;border-radius:0 .28571429rem .28571429rem 0;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.ui.icon.input>i.icon:not(.link){pointer-events:none}.ui.icon.input>input{padding-right:2.67142857em!important}.ui.icon.input>i.icon:after,.ui.icon.input>i.icon:before{left:0;position:absolute;text-align:center;top:50%;width:100%;margin-top:-.5em}.ui.icon.input>i.link.icon{cursor:pointer}.ui.icon.input>i.circular.icon{top:.35em;right:.5em}.ui[class*="left icon"].input>i.icon{right:auto;left:1px;border-radius:.28571429rem 0 0 .28571429rem}.ui[class*="left icon"].input>i.circular.icon{right:auto;left:.5em}.ui[class*="left icon"].input>input{padding-left:2.67142857em!important;padding-right:1em!important}.ui.icon.input>input:focus~i.icon{opacity:1}.ui.labeled.input>.label{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:0;font-size:1em}.ui.labeled.input>.label:not(.corner){padding-top:.78571429em;padding-bottom:.78571429em}.ui.labeled.input:not([class*="corner labeled"]) .label:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.ui.labeled.input:not([class*="corner labeled"]) .label:first-child+input{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:transparent}.ui.labeled.input:not([class*="corner labeled"]) .label:first-child+input:focus{border-left-color:#85b7d9}.ui[class*="right labeled"].input>input{border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-right-color:transparent!important}.ui[class*="right labeled"].input>input+.label{border-top-left-radius:0;border-bottom-left-radius:0}.ui[class*="right labeled"].input>input:focus{border-right-color:#85b7d9!important}.ui.labeled.input .corner.label{top:1px;right:1px;font-size:.64285714em;border-radius:0 .28571429rem 0 0}.ui[class*="corner labeled"]:not([class*="left corner labeled"]).labeled.input>input{padding-right:2.5em!important}.ui[class*="corner labeled"].icon.input:not([class*="left corner labeled"])>input{padding-right:3.25em!important}.ui[class*="corner labeled"].icon.input:not([class*="left corner labeled"])>.icon{margin-right:1.25em}.ui[class*="left corner labeled"].labeled.input>input{padding-left:2.5em!important}.ui[class*="left corner labeled"].icon.input>input{padding-left:3.25em!important}.ui[class*="left corner labeled"].icon.input>.icon{margin-left:1.25em}.ui.input>.ui.corner.label{top:1px;right:1px}.ui.input>.ui.left.corner.label{right:auto;left:1px}.ui.action.input>.button,.ui.action.input>.buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.ui.action.input>.button,.ui.action.input>.buttons>.button{padding-top:.78571429em;padding-bottom:.78571429em;margin:0}.ui.action.input:not([class*="left action"])>input{border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-right-color:transparent!important}.ui.action.input:not([class*="left action"])>.button:not(:first-child),.ui.action.input:not([class*="left action"])>.buttons:not(:first-child)>.button,.ui.action.input:not([class*="left action"])>.dropdown:not(:first-child){border-radius:0}.ui.action.input:not([class*="left action"])>.button:last-child,.ui.action.input:not([class*="left action"])>.buttons:last-child>.button,.ui.action.input:not([class*="left action"])>.dropdown:last-child{border-radius:0 .28571429rem .28571429rem 0}.ui.action.input:not([class*="left action"])>input:focus{border-right-color:#85b7d9!important}.ui[class*="left action"].input>input{border-top-left-radius:0!important;border-bottom-left-radius:0!important;border-left-color:transparent!important}.ui[class*="left action"].input>.button,.ui[class*="left action"].input>.buttons>.button,.ui[class*="left action"].input>.dropdown{border-radius:0}.ui[class*="left action"].input>.button:first-child,.ui[class*="left action"].input>.buttons:first-child>.button,.ui[class*="left action"].input>.dropdown:first-child{border-radius:.28571429rem 0 0 .28571429rem}.ui[class*="left action"].input>input:focus{border-left-color:#85b7d9!important}.ui.inverted.input>input{border:none}.ui.fluid.input{display:-webkit-box;display:-ms-flexbox;display:flex}.ui.fluid.input>input{width:0!important}.ui.mini.input{font-size:.78571429em}.ui.small.input{font-size:.92857143em}.ui.input{font-size:1em}.ui.large.input{font-size:1.14285714em}.ui.big.input{font-size:1.28571429em}.ui.huge.input{font-size:1.42857143em}.ui.massive.input{font-size:1.71428571em}/*! -* # Semantic UI 2.4.0 - Label -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.label{display:inline-block;line-height:1;vertical-align:baseline;margin:0 .14285714em;background-color:#e8e8e8;background-image:none;padding:.5833em .833em;color:rgba(0,0,0,.6);text-transform:none;font-weight:700;border:0 solid transparent;border-radius:.28571429rem;-webkit-transition:background .1s ease;transition:background .1s ease}.ui.label:first-child{margin-left:0}.ui.label:last-child{margin-right:0}a.ui.label{cursor:pointer}.ui.label>a{cursor:pointer;color:inherit;opacity:.5;-webkit-transition:.1s opacity ease;transition:.1s opacity ease}.ui.label>a:hover{opacity:1}.ui.label>img{width:auto!important;vertical-align:middle;height:2.1666em!important}.ui.label>.icon{width:auto;margin:0 .75em 0 0}.ui.label>.detail{display:inline-block;vertical-align:top;font-weight:700;margin-left:1em;opacity:.8}.ui.label>.detail .icon{margin:0 .25em 0 0}.ui.label>.close.icon,.ui.label>.delete.icon{cursor:pointer;margin-right:0;margin-left:.5em;font-size:.92857143em;opacity:.5;-webkit-transition:background .1s ease;transition:background .1s ease}.ui.label>.delete.icon:hover{opacity:1}.ui.labels>.label{margin:0 .5em .5em 0}.ui.header>.ui.label{margin-top:-.29165em}.ui.attached.segment>.ui.top.left.attached.label,.ui.bottom.attached.segment>.ui.top.left.attached.label{border-top-left-radius:0}.ui.attached.segment>.ui.top.right.attached.label,.ui.bottom.attached.segment>.ui.top.right.attached.label{border-top-right-radius:0}.ui.top.attached.segment>.ui.bottom.left.attached.label{border-bottom-left-radius:0}.ui.top.attached.segment>.ui.bottom.right.attached.label{border-bottom-right-radius:0}.ui.top.attached.label+[class*="right floated"]+*,.ui.top.attached.label:first-child+:not(.attached){margin-top:2rem!important}.ui.bottom.attached.label:first-child~:last-child:not(.attached){margin-top:0;margin-bottom:2rem!important}.ui.image.label{width:auto!important;margin-top:0;margin-bottom:0;max-width:9999px;vertical-align:baseline;text-transform:none;background:#e8e8e8;padding:.5833em .833em .5833em .5em;border-radius:.28571429rem;-webkit-box-shadow:none;box-shadow:none}.ui.image.label img{display:inline-block;vertical-align:top;height:2.1666em;margin:-.5833em .5em -.5833em -.5em;border-radius:.28571429rem 0 0 .28571429rem}.ui.image.label .detail{background:rgba(0,0,0,.1);margin:-.5833em -.833em -.5833em .5em;padding:.5833em .833em;border-radius:0 .28571429rem .28571429rem 0}.ui.tag.label,.ui.tag.labels .label{margin-left:1em;position:relative;padding-left:1.5em;padding-right:1.5em;border-radius:0 .28571429rem .28571429rem 0;-webkit-transition:none;transition:none}.ui.tag.label:before,.ui.tag.labels .label:before{position:absolute;-webkit-transform:translateY(-50%) translateX(50%) rotate(-45deg);transform:translateY(-50%) translateX(50%) rotate(-45deg);top:50%;right:100%;content:'';background-color:inherit;background-image:none;width:1.56em;height:1.56em;-webkit-transition:none;transition:none}.ui.tag.label:after,.ui.tag.labels .label:after{position:absolute;content:'';top:50%;left:-.25em;margin-top:-.25em;background-color:#fff!important;width:.5em;height:.5em;-webkit-box-shadow:0 -1px 1px 0 rgba(0,0,0,.3);box-shadow:0 -1px 1px 0 rgba(0,0,0,.3);border-radius:500rem}.ui.corner.label{position:absolute;top:0;right:0;margin:0;padding:0;text-align:center;border-color:#e8e8e8;width:4em;height:4em;z-index:1;-webkit-transition:border-color .1s ease;transition:border-color .1s ease}.ui.corner.label{background-color:transparent!important}.ui.corner.label:after{position:absolute;content:"";right:0;top:0;z-index:-1;width:0;height:0;background-color:transparent!important;border-top:0 solid transparent;border-right:4em solid transparent;border-bottom:4em solid transparent;border-left:0 solid transparent;border-right-color:inherit;-webkit-transition:border-color .1s ease;transition:border-color .1s ease}.ui.corner.label .icon{cursor:default;position:relative;top:.64285714em;left:.78571429em;font-size:1.14285714em;margin:0}.ui.left.corner.label,.ui.left.corner.label:after{right:auto;left:0}.ui.left.corner.label:after{border-top:4em solid transparent;border-right:4em solid transparent;border-bottom:0 solid transparent;border-left:0 solid transparent;border-top-color:inherit}.ui.left.corner.label .icon{left:-.78571429em}.ui.segment>.ui.corner.label{top:-1px;right:-1px}.ui.segment>.ui.left.corner.label{right:auto;left:-1px}.ui.ribbon.label{position:relative;margin:0;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;border-radius:0 .28571429rem .28571429rem 0;border-color:rgba(0,0,0,.15)}.ui.ribbon.label:after{position:absolute;content:'';top:100%;left:0;background-color:transparent!important;border-style:solid;border-width:0 1.2em 1.2em 0;border-color:transparent;border-right-color:inherit;width:0;height:0}.ui.ribbon.label{left:calc(-1rem - 1.2em);margin-right:-1.2em;padding-left:calc(1rem + 1.2em);padding-right:1.2em}.ui[class*="right ribbon"].label{left:calc(100% + 1rem + 1.2em);padding-left:1.2em;padding-right:calc(1rem + 1.2em)}.ui[class*="right ribbon"].label{text-align:left;-webkit-transform:translateX(-100%);transform:translateX(-100%);border-radius:.28571429rem 0 0 .28571429rem}.ui[class*="right ribbon"].label:after{left:auto;right:0;border-style:solid;border-width:1.2em 1.2em 0 0;border-color:transparent;border-top-color:inherit}.ui.card .image>.ribbon.label,.ui.image>.ribbon.label{position:absolute;top:1rem}.ui.card .image>.ui.ribbon.label,.ui.image>.ui.ribbon.label{left:calc(.05rem - 1.2em)}.ui.card .image>.ui[class*="right ribbon"].label,.ui.image>.ui[class*="right ribbon"].label{left:calc(100% + -.05rem + 1.2em);padding-left:.833em}.ui.table td>.ui.ribbon.label{left:calc(-.78571429em - 1.2em)}.ui.table td>.ui[class*="right ribbon"].label{left:calc(100% + .78571429em + 1.2em);padding-left:.833em}.ui.attached.label,.ui[class*="top attached"].label{width:100%;position:absolute;margin:0;top:0;left:0;padding:.75em 1em;border-radius:.21428571rem .21428571rem 0 0}.ui[class*="bottom attached"].label{top:auto;bottom:0;border-radius:0 0 .21428571rem .21428571rem}.ui[class*="top left attached"].label{width:auto;margin-top:0!important;border-radius:.21428571rem 0 .28571429rem 0}.ui[class*="top right attached"].label{width:auto;left:auto;right:0;border-radius:0 .21428571rem 0 .28571429rem}.ui[class*="bottom left attached"].label{width:auto;top:auto;bottom:0;border-radius:0 .28571429rem 0 .21428571rem}.ui[class*="bottom right attached"].label{top:auto;bottom:0;left:auto;right:0;width:auto;border-radius:.28571429rem 0 .21428571rem 0}.ui.label.disabled{opacity:.5}a.ui.label:hover,a.ui.labels .label:hover{background-color:#e0e0e0;border-color:#e0e0e0;background-image:none;color:rgba(0,0,0,.8)}.ui.labels a.label:hover:before,a.ui.label:hover:before{color:rgba(0,0,0,.8)}.ui.active.label{background-color:#d0d0d0;border-color:#d0d0d0;background-image:none;color:rgba(0,0,0,.95)}.ui.active.label:before{background-color:#d0d0d0;background-image:none;color:rgba(0,0,0,.95)}a.ui.active.label:hover,a.ui.labels .active.label:hover{background-color:#c8c8c8;border-color:#c8c8c8;background-image:none;color:rgba(0,0,0,.95)}.ui.labels a.active.label:ActiveHover:before,a.ui.active.label:ActiveHover:before{background-color:#c8c8c8;background-image:none;color:rgba(0,0,0,.95)}.ui.label.visible:not(.dropdown),.ui.labels.visible .label{display:inline-block!important}.ui.label.hidden,.ui.labels.hidden .label{display:none!important}.ui.red.label,.ui.red.labels .label{background-color:#db2828!important;border-color:#db2828!important;color:#fff!important}.ui.red.labels .label:hover,a.ui.red.label:hover{background-color:#d01919!important;border-color:#d01919!important;color:#fff!important}.ui.red.corner.label,.ui.red.corner.label:hover{background-color:transparent!important}.ui.red.ribbon.label{border-color:#b21e1e!important}.ui.basic.red.label{background:none #fff!important;color:#db2828!important;border-color:#db2828!important}.ui.basic.red.labels a.label:hover,a.ui.basic.red.label:hover{background-color:#fff!important;color:#d01919!important;border-color:#d01919!important}.ui.orange.label,.ui.orange.labels .label{background-color:#f2711c!important;border-color:#f2711c!important;color:#fff!important}.ui.orange.labels .label:hover,a.ui.orange.label:hover{background-color:#f26202!important;border-color:#f26202!important;color:#fff!important}.ui.orange.corner.label,.ui.orange.corner.label:hover{background-color:transparent!important}.ui.orange.ribbon.label{border-color:#cf590c!important}.ui.basic.orange.label{background:none #fff!important;color:#f2711c!important;border-color:#f2711c!important}.ui.basic.orange.labels a.label:hover,a.ui.basic.orange.label:hover{background-color:#fff!important;color:#f26202!important;border-color:#f26202!important}.ui.yellow.label,.ui.yellow.labels .label{background-color:#fbbd08!important;border-color:#fbbd08!important;color:#fff!important}.ui.yellow.labels .label:hover,a.ui.yellow.label:hover{background-color:#eaae00!important;border-color:#eaae00!important;color:#fff!important}.ui.yellow.corner.label,.ui.yellow.corner.label:hover{background-color:transparent!important}.ui.yellow.ribbon.label{border-color:#cd9903!important}.ui.basic.yellow.label{background:none #fff!important;color:#fbbd08!important;border-color:#fbbd08!important}.ui.basic.yellow.labels a.label:hover,a.ui.basic.yellow.label:hover{background-color:#fff!important;color:#eaae00!important;border-color:#eaae00!important}.ui.olive.label,.ui.olive.labels .label{background-color:#b5cc18!important;border-color:#b5cc18!important;color:#fff!important}.ui.olive.labels .label:hover,a.ui.olive.label:hover{background-color:#a7bd0d!important;border-color:#a7bd0d!important;color:#fff!important}.ui.olive.corner.label,.ui.olive.corner.label:hover{background-color:transparent!important}.ui.olive.ribbon.label{border-color:#198f35!important}.ui.basic.olive.label{background:none #fff!important;color:#b5cc18!important;border-color:#b5cc18!important}.ui.basic.olive.labels a.label:hover,a.ui.basic.olive.label:hover{background-color:#fff!important;color:#a7bd0d!important;border-color:#a7bd0d!important}.ui.green.label,.ui.green.labels .label{background-color:#21ba45!important;border-color:#21ba45!important;color:#fff!important}.ui.green.labels .label:hover,a.ui.green.label:hover{background-color:#16ab39!important;border-color:#16ab39!important;color:#fff!important}.ui.green.corner.label,.ui.green.corner.label:hover{background-color:transparent!important}.ui.green.ribbon.label{border-color:#198f35!important}.ui.basic.green.label{background:none #fff!important;color:#21ba45!important;border-color:#21ba45!important}.ui.basic.green.labels a.label:hover,a.ui.basic.green.label:hover{background-color:#fff!important;color:#16ab39!important;border-color:#16ab39!important}.ui.teal.label,.ui.teal.labels .label{background-color:#00b5ad!important;border-color:#00b5ad!important;color:#fff!important}.ui.teal.labels .label:hover,a.ui.teal.label:hover{background-color:#009c95!important;border-color:#009c95!important;color:#fff!important}.ui.teal.corner.label,.ui.teal.corner.label:hover{background-color:transparent!important}.ui.teal.ribbon.label{border-color:#00827c!important}.ui.basic.teal.label{background:none #fff!important;color:#00b5ad!important;border-color:#00b5ad!important}.ui.basic.teal.labels a.label:hover,a.ui.basic.teal.label:hover{background-color:#fff!important;color:#009c95!important;border-color:#009c95!important}.ui.blue.label,.ui.blue.labels .label{background-color:#2185d0!important;border-color:#2185d0!important;color:#fff!important}.ui.blue.labels .label:hover,a.ui.blue.label:hover{background-color:#1678c2!important;border-color:#1678c2!important;color:#fff!important}.ui.blue.corner.label,.ui.blue.corner.label:hover{background-color:transparent!important}.ui.blue.ribbon.label{border-color:#1a69a4!important}.ui.basic.blue.label{background:none #fff!important;color:#2185d0!important;border-color:#2185d0!important}.ui.basic.blue.labels a.label:hover,a.ui.basic.blue.label:hover{background-color:#fff!important;color:#1678c2!important;border-color:#1678c2!important}.ui.violet.label,.ui.violet.labels .label{background-color:#6435c9!important;border-color:#6435c9!important;color:#fff!important}.ui.violet.labels .label:hover,a.ui.violet.label:hover{background-color:#5829bb!important;border-color:#5829bb!important;color:#fff!important}.ui.violet.corner.label,.ui.violet.corner.label:hover{background-color:transparent!important}.ui.violet.ribbon.label{border-color:#502aa1!important}.ui.basic.violet.label{background:none #fff!important;color:#6435c9!important;border-color:#6435c9!important}.ui.basic.violet.labels a.label:hover,a.ui.basic.violet.label:hover{background-color:#fff!important;color:#5829bb!important;border-color:#5829bb!important}.ui.purple.label,.ui.purple.labels .label{background-color:#a333c8!important;border-color:#a333c8!important;color:#fff!important}.ui.purple.labels .label:hover,a.ui.purple.label:hover{background-color:#9627ba!important;border-color:#9627ba!important;color:#fff!important}.ui.purple.corner.label,.ui.purple.corner.label:hover{background-color:transparent!important}.ui.purple.ribbon.label{border-color:#82299f!important}.ui.basic.purple.label{background:none #fff!important;color:#a333c8!important;border-color:#a333c8!important}.ui.basic.purple.labels a.label:hover,a.ui.basic.purple.label:hover{background-color:#fff!important;color:#9627ba!important;border-color:#9627ba!important}.ui.pink.label,.ui.pink.labels .label{background-color:#e03997!important;border-color:#e03997!important;color:#fff!important}.ui.pink.labels .label:hover,a.ui.pink.label:hover{background-color:#e61a8d!important;border-color:#e61a8d!important;color:#fff!important}.ui.pink.corner.label,.ui.pink.corner.label:hover{background-color:transparent!important}.ui.pink.ribbon.label{border-color:#c71f7e!important}.ui.basic.pink.label{background:none #fff!important;color:#e03997!important;border-color:#e03997!important}.ui.basic.pink.labels a.label:hover,a.ui.basic.pink.label:hover{background-color:#fff!important;color:#e61a8d!important;border-color:#e61a8d!important}.ui.brown.label,.ui.brown.labels .label{background-color:#a5673f!important;border-color:#a5673f!important;color:#fff!important}.ui.brown.labels .label:hover,a.ui.brown.label:hover{background-color:#975b33!important;border-color:#975b33!important;color:#fff!important}.ui.brown.corner.label,.ui.brown.corner.label:hover{background-color:transparent!important}.ui.brown.ribbon.label{border-color:#805031!important}.ui.basic.brown.label{background:none #fff!important;color:#a5673f!important;border-color:#a5673f!important}.ui.basic.brown.labels a.label:hover,a.ui.basic.brown.label:hover{background-color:#fff!important;color:#975b33!important;border-color:#975b33!important}.ui.grey.label,.ui.grey.labels .label{background-color:#767676!important;border-color:#767676!important;color:#fff!important}.ui.grey.labels .label:hover,a.ui.grey.label:hover{background-color:#838383!important;border-color:#838383!important;color:#fff!important}.ui.grey.corner.label,.ui.grey.corner.label:hover{background-color:transparent!important}.ui.grey.ribbon.label{border-color:#805031!important}.ui.basic.grey.label{background:none #fff!important;color:#767676!important;border-color:#767676!important}.ui.basic.grey.labels a.label:hover,a.ui.basic.grey.label:hover{background-color:#fff!important;color:#838383!important;border-color:#838383!important}.ui.black.label,.ui.black.labels .label{background-color:#1b1c1d!important;border-color:#1b1c1d!important;color:#fff!important}.ui.black.labels .label:hover,a.ui.black.label:hover{background-color:#27292a!important;border-color:#27292a!important;color:#fff!important}.ui.black.corner.label,.ui.black.corner.label:hover{background-color:transparent!important}.ui.black.ribbon.label{border-color:#805031!important}.ui.basic.black.label{background:none #fff!important;color:#1b1c1d!important;border-color:#1b1c1d!important}.ui.basic.black.labels a.label:hover,a.ui.basic.black.label:hover{background-color:#fff!important;color:#27292a!important;border-color:#27292a!important}.ui.basic.label{background:none #fff;border:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87);-webkit-box-shadow:none;box-shadow:none}a.ui.basic.label:hover{text-decoration:none;background:none #fff;color:#1e70bf;-webkit-box-shadow:1px solid rgba(34,36,38,.15);box-shadow:1px solid rgba(34,36,38,.15);-webkit-box-shadow:none;box-shadow:none}.ui.basic.pointing.label:before{border-color:inherit}.ui.fluid.labels>.label,.ui.label.fluid{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ui.inverted.label,.ui.inverted.labels .label{color:rgba(255,255,255,.9)!important}.ui.horizontal.label,.ui.horizontal.labels .label{margin:0 .5em 0 0;padding:.4em .833em;min-width:3em;text-align:center}.ui.circular.label,.ui.circular.labels .label{min-width:2em;min-height:2em;padding:.5em!important;line-height:1em;text-align:center;border-radius:500rem}.ui.empty.circular.label,.ui.empty.circular.labels .label{min-width:0;min-height:0;overflow:hidden;width:.5em;height:.5em;vertical-align:baseline}.ui.pointing.label{position:relative}.ui.attached.pointing.label{position:absolute}.ui.pointing.label:before{background-color:inherit;background-image:inherit;border-width:none;border-style:solid;border-color:inherit}.ui.pointing.label:before{position:absolute;content:'';-webkit-transform:rotate(45deg);transform:rotate(45deg);background-image:none;z-index:2;width:.6666em;height:.6666em;-webkit-transition:background .1s ease;transition:background .1s ease}.ui.pointing.label,.ui[class*="pointing above"].label{margin-top:1em}.ui.pointing.label:before,.ui[class*="pointing above"].label:before{border-width:1px 0 0 1px;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);top:0;left:50%}.ui[class*="bottom pointing"].label,.ui[class*="pointing below"].label{margin-top:0;margin-bottom:1em}.ui[class*="bottom pointing"].label:before,.ui[class*="pointing below"].label:before{border-width:0 1px 1px 0;top:auto;right:auto;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);top:100%;left:50%}.ui[class*="left pointing"].label{margin-top:0;margin-left:.6666em}.ui[class*="left pointing"].label:before{border-width:0 0 1px 1px;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);bottom:auto;right:auto;top:50%;left:0}.ui[class*="right pointing"].label{margin-top:0;margin-right:.6666em}.ui[class*="right pointing"].label:before{border-width:1px 1px 0 0;-webkit-transform:translateX(50%) translateY(-50%) rotate(45deg);transform:translateX(50%) translateY(-50%) rotate(45deg);top:50%;right:0;bottom:auto;left:auto}.ui.basic.pointing.label:before,.ui.basic[class*="pointing above"].label:before{margin-top:-1px}.ui.basic[class*="bottom pointing"].label:before,.ui.basic[class*="pointing below"].label:before{bottom:auto;top:100%;margin-top:1px}.ui.basic[class*="left pointing"].label:before{top:50%;left:-1px}.ui.basic[class*="right pointing"].label:before{top:50%;right:-1px}.ui.floating.label{position:absolute;z-index:100;top:-1em;left:100%;margin:0 0 0 -1.5em!important}.ui.mini.label,.ui.mini.labels .label{font-size:.64285714rem}.ui.tiny.label,.ui.tiny.labels .label{font-size:.71428571rem}.ui.small.label,.ui.small.labels .label{font-size:.78571429rem}.ui.label,.ui.labels .label{font-size:.85714286rem}.ui.large.label,.ui.large.labels .label{font-size:1rem}.ui.big.label,.ui.big.labels .label{font-size:1.28571429rem}.ui.huge.label,.ui.huge.labels .label{font-size:1.42857143rem}.ui.massive.label,.ui.massive.labels .label{font-size:1.71428571rem}/*! -* # Semantic UI 2.4.0 - List -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.list,ol.ui.list,ul.ui.list{list-style-type:none;margin:1em 0;padding:0 0}.ui.list:first-child,ol.ui.list:first-child,ul.ui.list:first-child{margin-top:0;padding-top:0}.ui.list:last-child,ol.ui.list:last-child,ul.ui.list:last-child{margin-bottom:0;padding-bottom:0}.ui.list .list>.item,.ui.list>.item,ol.ui.list li,ul.ui.list li{display:list-item;table-layout:fixed;list-style-type:none;list-style-position:outside;padding:.21428571em 0;line-height:1.14285714em}.ui.list>.item:after,.ui.list>.list>.item,ol.ui.list>li:first-child:after,ul.ui.list>li:first-child:after{content:'';display:block;height:0;clear:both;visibility:hidden}.ui.list .list>.item:first-child,.ui.list>.item:first-child,ol.ui.list li:first-child,ul.ui.list li:first-child{padding-top:0}.ui.list .list>.item:last-child,.ui.list>.item:last-child,ol.ui.list li:last-child,ul.ui.list li:last-child{padding-bottom:0}.ui.list .list,ol.ui.list ol,ul.ui.list ul{clear:both;margin:0;padding:.75em 0 .25em .5em}.ui.list .list>.item,ol.ui.list ol li,ul.ui.list ul li{padding:.14285714em 0;line-height:inherit}.ui.list .list>.item>i.icon,.ui.list>.item>i.icon{display:table-cell;margin:0;padding-top:0;padding-right:.28571429em;vertical-align:top;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.list .list>.item>i.icon:only-child,.ui.list>.item>i.icon:only-child{display:inline-block;vertical-align:top}.ui.list .list>.item>.image,.ui.list>.item>.image{display:table-cell;background-color:transparent;margin:0;vertical-align:top}.ui.list .list>.item>.image:not(:only-child):not(img),.ui.list>.item>.image:not(:only-child):not(img){padding-right:.5em}.ui.list .list>.item>.image img,.ui.list>.item>.image img{vertical-align:top}.ui.list .list>.item>.image:only-child,.ui.list .list>.item>img.image,.ui.list>.item>.image:only-child,.ui.list>.item>img.image{display:inline-block}.ui.list .list>.item>.content,.ui.list>.item>.content{line-height:1.14285714em}.ui.list .list>.item>.icon+.content,.ui.list .list>.item>.image+.content,.ui.list>.item>.icon+.content,.ui.list>.item>.image+.content{display:table-cell;width:100%;padding:0 0 0 .5em;vertical-align:top}.ui.list .list>.item>img.image+.content,.ui.list>.item>img.image+.content{display:inline-block;width:auto}.ui.list .list>.item>.content>.list,.ui.list>.item>.content>.list{margin-left:0;padding-left:0}.ui.list .list>.item .header,.ui.list>.item .header{display:block;margin:0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;color:rgba(0,0,0,.87)}.ui.list .list>.item .description,.ui.list>.item .description{display:block;color:rgba(0,0,0,.7)}.ui.list .list>.item a,.ui.list>.item a{cursor:pointer}.ui.list .list>a.item,.ui.list>a.item{cursor:pointer;color:#4183c4}.ui.list .list>a.item:hover,.ui.list>a.item:hover{color:#1e70bf}.ui.list .list>a.item i.icon,.ui.list>a.item i.icon{color:rgba(0,0,0,.4)}.ui.list .list>.item a.header,.ui.list>.item a.header{cursor:pointer;color:#4183c4!important}.ui.list .list>.item a.header:hover,.ui.list>.item a.header:hover{color:#1e70bf!important}.ui[class*="left floated"].list{float:left}.ui[class*="right floated"].list{float:right}.ui.list .list>.item [class*="left floated"],.ui.list>.item [class*="left floated"]{float:left;margin:0 1em 0 0}.ui.list .list>.item [class*="right floated"],.ui.list>.item [class*="right floated"]{float:right;margin:0 0 0 1em}.ui.menu .ui.list .list>.item,.ui.menu .ui.list>.item{display:list-item;table-layout:fixed;background-color:transparent;list-style-type:none;list-style-position:outside;padding:.21428571em 0;line-height:1.14285714em}.ui.menu .ui.list .list>.item:before,.ui.menu .ui.list>.item:before{border:none;background:0 0}.ui.menu .ui.list .list>.item:first-child,.ui.menu .ui.list>.item:first-child{padding-top:0}.ui.menu .ui.list .list>.item:last-child,.ui.menu .ui.list>.item:last-child{padding-bottom:0}.ui.horizontal.list{display:inline-block;font-size:0}.ui.horizontal.list>.item{display:inline-block;margin-left:1em;font-size:1rem}.ui.horizontal.list:not(.celled)>.item:first-child{margin-left:0!important;padding-left:0!important}.ui.horizontal.list .list{padding-left:0;padding-bottom:0}.ui.horizontal.list .list>.item>.content,.ui.horizontal.list .list>.item>.icon,.ui.horizontal.list .list>.item>.image,.ui.horizontal.list>.item>.content,.ui.horizontal.list>.item>.icon,.ui.horizontal.list>.item>.image{vertical-align:middle}.ui.horizontal.list>.item:first-child,.ui.horizontal.list>.item:last-child{padding-top:.21428571em;padding-bottom:.21428571em}.ui.horizontal.list>.item>i.icon{margin:0;padding:0 .25em 0 0}.ui.horizontal.list>.item>.icon,.ui.horizontal.list>.item>.icon+.content{float:none;display:inline-block}.ui.list .list>.disabled.item,.ui.list>.disabled.item{pointer-events:none;color:rgba(40,40,40,.3)!important}.ui.inverted.list .list>.disabled.item,.ui.inverted.list>.disabled.item{color:rgba(225,225,225,.3)!important}.ui.list .list>a.item:hover .icon,.ui.list>a.item:hover .icon{color:rgba(0,0,0,.87)}.ui.inverted.list .list>a.item>.icon,.ui.inverted.list>a.item>.icon{color:rgba(255,255,255,.7)}.ui.inverted.list .list>.item .header,.ui.inverted.list>.item .header{color:rgba(255,255,255,.9)}.ui.inverted.list .list>.item .description,.ui.inverted.list>.item .description{color:rgba(255,255,255,.7)}.ui.inverted.list .list>a.item,.ui.inverted.list>a.item{cursor:pointer;color:rgba(255,255,255,.9)}.ui.inverted.list .list>a.item:hover,.ui.inverted.list>a.item:hover{color:#1e70bf}.ui.inverted.list .item a:not(.ui){color:rgba(255,255,255,.9)!important}.ui.inverted.list .item a:not(.ui):hover{color:#1e70bf!important}.ui.list [class*="top aligned"],.ui.list[class*="top aligned"] .content,.ui.list[class*="top aligned"] .image{vertical-align:top!important}.ui.list [class*="middle aligned"],.ui.list[class*="middle aligned"] .content,.ui.list[class*="middle aligned"] .image{vertical-align:middle!important}.ui.list [class*="bottom aligned"],.ui.list[class*="bottom aligned"] .content,.ui.list[class*="bottom aligned"] .image{vertical-align:bottom!important}.ui.link.list .item,.ui.link.list .item a:not(.ui),.ui.link.list a.item{color:rgba(0,0,0,.4);-webkit-transition:.1s color ease;transition:.1s color ease}.ui.link.list.list .item a:not(.ui):hover,.ui.link.list.list a.item:hover{color:rgba(0,0,0,.8)}.ui.link.list.list .item a:not(.ui):active,.ui.link.list.list a.item:active{color:rgba(0,0,0,.9)}.ui.link.list.list .active.item,.ui.link.list.list .active.item a:not(.ui){color:rgba(0,0,0,.95)}.ui.inverted.link.list .item,.ui.inverted.link.list .item a:not(.ui),.ui.inverted.link.list a.item{color:rgba(255,255,255,.5)}.ui.inverted.link.list.list .item a:not(.ui):hover,.ui.inverted.link.list.list a.item:hover{color:#fff}.ui.inverted.link.list.list .item a:not(.ui):active,.ui.inverted.link.list.list a.item:active{color:#fff}.ui.inverted.link.list.list .active.item a:not(.ui),.ui.inverted.link.list.list a.active.item{color:#fff}.ui.selection.list .list>.item,.ui.selection.list>.item{cursor:pointer;background:0 0;padding:.5em .5em;margin:0;color:rgba(0,0,0,.4);border-radius:.5em;-webkit-transition:.1s color ease,.1s padding-left ease,.1s background-color ease;transition:.1s color ease,.1s padding-left ease,.1s background-color ease}.ui.selection.list .list>.item:last-child,.ui.selection.list>.item:last-child{margin-bottom:0}.ui.selection.list.list>.item:hover,.ui.selection.list>.item:hover{background:rgba(0,0,0,.03);color:rgba(0,0,0,.8)}.ui.selection.list .list>.item:active,.ui.selection.list>.item:active{background:rgba(0,0,0,.05);color:rgba(0,0,0,.9)}.ui.selection.list .list>.item.active,.ui.selection.list>.item.active{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95)}.ui.inverted.selection.list>.item{background:0 0;color:rgba(255,255,255,.5)}.ui.inverted.selection.list>.item:hover{background:rgba(255,255,255,.02);color:#fff}.ui.inverted.selection.list>.item:active{background:rgba(255,255,255,.08);color:#fff}.ui.inverted.selection.list>.item.active{background:rgba(255,255,255,.08);color:#fff}.ui.celled.selection.list .list>.item,.ui.celled.selection.list>.item,.ui.divided.selection.list .list>.item,.ui.divided.selection.list>.item{border-radius:0}.ui.animated.list>.item{-webkit-transition:.25s color ease .1s,.25s padding-left ease .1s,.25s background-color ease .1s;transition:.25s color ease .1s,.25s padding-left ease .1s,.25s background-color ease .1s}.ui.animated.list:not(.horizontal)>.item:hover{padding-left:1em}.ui.fitted.list:not(.selection) .list>.item,.ui.fitted.list:not(.selection)>.item{padding-left:0;padding-right:0}.ui.fitted.selection.list .list>.item,.ui.fitted.selection.list>.item{margin-left:-.5em;margin-right:-.5em}.ui.bulleted.list,ul.ui.list{margin-left:1.25rem}.ui.bulleted.list .list>.item,.ui.bulleted.list>.item,ul.ui.list li{position:relative}.ui.bulleted.list .list>.item:before,.ui.bulleted.list>.item:before,ul.ui.list li:before{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;position:absolute;top:auto;left:auto;font-weight:400;margin-left:-1.25rem;content:'•';opacity:1;color:inherit;vertical-align:top}.ui.bulleted.list .list>a.item:before,.ui.bulleted.list>a.item:before,ul.ui.list li:before{color:rgba(0,0,0,.87)}.ui.bulleted.list .list,ul.ui.list ul{padding-left:1.25rem}.ui.horizontal.bulleted.list,ul.ui.horizontal.bulleted.list{margin-left:0}.ui.horizontal.bulleted.list>.item,ul.ui.horizontal.bulleted.list li{margin-left:1.75rem}.ui.horizontal.bulleted.list>.item:first-child,ul.ui.horizontal.bulleted.list li:first-child{margin-left:0}.ui.horizontal.bulleted.list>.item::before,ul.ui.horizontal.bulleted.list li::before{color:rgba(0,0,0,.87)}.ui.horizontal.bulleted.list>.item:first-child::before,ul.ui.horizontal.bulleted.list li:first-child::before{display:none}.ui.ordered.list,.ui.ordered.list .list,ol.ui.list,ol.ui.list ol{counter-reset:ordered;margin-left:1.25rem;list-style-type:none}.ui.ordered.list .list>.item,.ui.ordered.list>.item,ol.ui.list li{list-style-type:none;position:relative}.ui.ordered.list .list>.item:before,.ui.ordered.list>.item:before,ol.ui.list li:before{position:absolute;top:auto;left:auto;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;margin-left:-1.25rem;counter-increment:ordered;content:counters(ordered, ".") " ";text-align:right;color:rgba(0,0,0,.87);vertical-align:middle;opacity:.8}.ui.ordered.inverted.list .list>.item:before,.ui.ordered.inverted.list>.item:before,ol.ui.inverted.list li:before{color:rgba(255,255,255,.7)}.ui.ordered.list>.item[data-value],.ui.ordered.list>.list>.item[data-value]{content:attr(data-value)}ol.ui.list li[value]:before{content:attr(value)}.ui.ordered.list .list,ol.ui.list ol{margin-left:1em}.ui.ordered.list .list>.item:before,ol.ui.list ol li:before{margin-left:-2em}.ui.ordered.horizontal.list,ol.ui.horizontal.list{margin-left:0}.ui.ordered.horizontal.list .list>.item:before,.ui.ordered.horizontal.list>.item:before,ol.ui.horizontal.list li:before{position:static;margin:0 .5em 0 0}.ui.divided.list>.item{border-top:1px solid rgba(34,36,38,.15)}.ui.divided.list .list>.item{border-top:none}.ui.divided.list .item .list>.item{border-top:none}.ui.divided.list .list>.item:first-child,.ui.divided.list>.item:first-child{border-top:none}.ui.divided.list:not(.horizontal) .list>.item:first-child{border-top-width:1px}.ui.divided.bulleted.list .list,.ui.divided.bulleted.list:not(.horizontal){margin-left:0;padding-left:0}.ui.divided.bulleted.list>.item:not(.horizontal){padding-left:1.25rem}.ui.divided.ordered.list{margin-left:0}.ui.divided.ordered.list .list>.item,.ui.divided.ordered.list>.item{padding-left:1.25rem}.ui.divided.ordered.list .item .list{margin-left:0;margin-right:0;padding-bottom:.21428571em}.ui.divided.ordered.list .item .list>.item{padding-left:1em}.ui.divided.selection.list .list>.item,.ui.divided.selection.list>.item{margin:0;border-radius:0}.ui.divided.horizontal.list{margin-left:0}.ui.divided.horizontal.list>.item:not(:first-child){padding-left:.5em}.ui.divided.horizontal.list>.item:not(:last-child){padding-right:.5em}.ui.divided.horizontal.list>.item{border-top:none;border-left:1px solid rgba(34,36,38,.15);margin:0;line-height:.6}.ui.horizontal.divided.list>.item:first-child{border-left:none}.ui.divided.inverted.horizontal.list>.item,.ui.divided.inverted.list>.item,.ui.divided.inverted.list>.list{border-color:rgba(255,255,255,.1)}.ui.celled.list>.item,.ui.celled.list>.list{border-top:1px solid rgba(34,36,38,.15);padding-left:.5em;padding-right:.5em}.ui.celled.list>.item:last-child{border-bottom:1px solid rgba(34,36,38,.15)}.ui.celled.list>.item:first-child,.ui.celled.list>.item:last-child{padding-top:.21428571em;padding-bottom:.21428571em}.ui.celled.list .item .list>.item{border-width:0}.ui.celled.list .list>.item:first-child{border-top-width:0}.ui.celled.bulleted.list{margin-left:0}.ui.celled.bulleted.list .list>.item,.ui.celled.bulleted.list>.item{padding-left:1.25rem}.ui.celled.bulleted.list .item .list{margin-left:-1.25rem;margin-right:-1.25rem;padding-bottom:.21428571em}.ui.celled.ordered.list{margin-left:0}.ui.celled.ordered.list .list>.item,.ui.celled.ordered.list>.item{padding-left:1.25rem}.ui.celled.ordered.list .item .list{margin-left:0;margin-right:0;padding-bottom:.21428571em}.ui.celled.ordered.list .list>.item{padding-left:1em}.ui.horizontal.celled.list{margin-left:0}.ui.horizontal.celled.list .list>.item,.ui.horizontal.celled.list>.item{border-top:none;border-left:1px solid rgba(34,36,38,.15);margin:0;padding-left:.5em;padding-right:.5em;line-height:.6}.ui.horizontal.celled.list .list>.item:last-child,.ui.horizontal.celled.list>.item:last-child{border-bottom:none;border-right:1px solid rgba(34,36,38,.15)}.ui.celled.inverted.list>.item,.ui.celled.inverted.list>.list{border-color:1px solid rgba(255,255,255,.1)}.ui.celled.inverted.horizontal.list .list>.item,.ui.celled.inverted.horizontal.list>.item{border-color:1px solid rgba(255,255,255,.1)}.ui.relaxed.list:not(.horizontal)>.item:not(:first-child){padding-top:.42857143em}.ui.relaxed.list:not(.horizontal)>.item:not(:last-child){padding-bottom:.42857143em}.ui.horizontal.relaxed.list .list>.item:not(:first-child),.ui.horizontal.relaxed.list>.item:not(:first-child){padding-left:1rem}.ui.horizontal.relaxed.list .list>.item:not(:last-child),.ui.horizontal.relaxed.list>.item:not(:last-child){padding-right:1rem}.ui[class*="very relaxed"].list:not(.horizontal)>.item:not(:first-child){padding-top:.85714286em}.ui[class*="very relaxed"].list:not(.horizontal)>.item:not(:last-child){padding-bottom:.85714286em}.ui.horizontal[class*="very relaxed"].list .list>.item:not(:first-child),.ui.horizontal[class*="very relaxed"].list>.item:not(:first-child){padding-left:1.5rem}.ui.horizontal[class*="very relaxed"].list .list>.item:not(:last-child),.ui.horizontal[class*="very relaxed"].list>.item:not(:last-child){padding-right:1.5rem}.ui.mini.list{font-size:.78571429em}.ui.tiny.list{font-size:.85714286em}.ui.small.list{font-size:.92857143em}.ui.list{font-size:1em}.ui.large.list{font-size:1.14285714em}.ui.big.list{font-size:1.28571429em}.ui.huge.list{font-size:1.42857143em}.ui.massive.list{font-size:1.71428571em}.ui.mini.horizontal.list .list>.item,.ui.mini.horizontal.list>.item{font-size:.78571429rem}.ui.tiny.horizontal.list .list>.item,.ui.tiny.horizontal.list>.item{font-size:.85714286rem}.ui.small.horizontal.list .list>.item,.ui.small.horizontal.list>.item{font-size:.92857143rem}.ui.horizontal.list .list>.item,.ui.horizontal.list>.item{font-size:1rem}.ui.large.horizontal.list .list>.item,.ui.large.horizontal.list>.item{font-size:1.14285714rem}.ui.big.horizontal.list .list>.item,.ui.big.horizontal.list>.item{font-size:1.28571429rem}.ui.huge.horizontal.list .list>.item,.ui.huge.horizontal.list>.item{font-size:1.42857143rem}.ui.massive.horizontal.list .list>.item,.ui.massive.horizontal.list>.item{font-size:1.71428571rem}/*! -* # Semantic UI 2.4.0 - Loader -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.loader{display:none;position:absolute;top:50%;left:50%;margin:0;text-align:center;z-index:1000;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.ui.loader:before{position:absolute;content:'';top:0;left:50%;width:100%;height:100%;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loader:after{position:absolute;content:'';top:0;left:50%;width:100%;height:100%;-webkit-animation:loader .6s linear;animation:loader .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;-webkit-box-shadow:0 0 0 1px transparent;box-shadow:0 0 0 1px transparent}@-webkit-keyframes loader{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loader{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ui.mini.loader:after,.ui.mini.loader:before{width:1rem;height:1rem;margin:0 0 0 -.5rem}.ui.tiny.loader:after,.ui.tiny.loader:before{width:1.14285714rem;height:1.14285714rem;margin:0 0 0 -.57142857rem}.ui.small.loader:after,.ui.small.loader:before{width:1.71428571rem;height:1.71428571rem;margin:0 0 0 -.85714286rem}.ui.loader:after,.ui.loader:before{width:2.28571429rem;height:2.28571429rem;margin:0 0 0 -1.14285714rem}.ui.large.loader:after,.ui.large.loader:before{width:3.42857143rem;height:3.42857143rem;margin:0 0 0 -1.71428571rem}.ui.big.loader:after,.ui.big.loader:before{width:3.71428571rem;height:3.71428571rem;margin:0 0 0 -1.85714286rem}.ui.huge.loader:after,.ui.huge.loader:before{width:4.14285714rem;height:4.14285714rem;margin:0 0 0 -2.07142857rem}.ui.massive.loader:after,.ui.massive.loader:before{width:4.57142857rem;height:4.57142857rem;margin:0 0 0 -2.28571429rem}.ui.dimmer .loader{display:block}.ui.dimmer .ui.loader{color:rgba(255,255,255,.9)}.ui.dimmer .ui.loader:before{border-color:rgba(255,255,255,.15)}.ui.dimmer .ui.loader:after{border-color:#fff transparent transparent}.ui.inverted.dimmer .ui.loader{color:rgba(0,0,0,.87)}.ui.inverted.dimmer .ui.loader:before{border-color:rgba(0,0,0,.1)}.ui.inverted.dimmer .ui.loader:after{border-color:#767676 transparent transparent}.ui.text.loader{width:auto!important;height:auto!important;text-align:center;font-style:normal}.ui.indeterminate.loader:after{animation-direction:reverse;-webkit-animation-duration:1.2s;animation-duration:1.2s}.ui.loader.active,.ui.loader.visible{display:block}.ui.loader.disabled,.ui.loader.hidden{display:none}.ui.inverted.dimmer .ui.mini.loader,.ui.mini.loader{width:1rem;height:1rem;font-size:.78571429em}.ui.inverted.dimmer .ui.tiny.loader,.ui.tiny.loader{width:1.14285714rem;height:1.14285714rem;font-size:.85714286em}.ui.inverted.dimmer .ui.small.loader,.ui.small.loader{width:1.71428571rem;height:1.71428571rem;font-size:.92857143em}.ui.inverted.dimmer .ui.loader,.ui.loader{width:2.28571429rem;height:2.28571429rem;font-size:1em}.ui.inverted.dimmer .ui.large.loader,.ui.large.loader{width:3.42857143rem;height:3.42857143rem;font-size:1.14285714em}.ui.big.loader,.ui.inverted.dimmer .ui.big.loader{width:3.71428571rem;height:3.71428571rem;font-size:1.28571429em}.ui.huge.loader,.ui.inverted.dimmer .ui.huge.loader{width:4.14285714rem;height:4.14285714rem;font-size:1.42857143em}.ui.inverted.dimmer .ui.massive.loader,.ui.massive.loader{width:4.57142857rem;height:4.57142857rem;font-size:1.71428571em}.ui.mini.text.loader{min-width:1rem;padding-top:1.78571429rem}.ui.tiny.text.loader{min-width:1.14285714rem;padding-top:1.92857143rem}.ui.small.text.loader{min-width:1.71428571rem;padding-top:2.5rem}.ui.text.loader{min-width:2.28571429rem;padding-top:3.07142857rem}.ui.large.text.loader{min-width:3.42857143rem;padding-top:4.21428571rem}.ui.big.text.loader{min-width:3.71428571rem;padding-top:4.5rem}.ui.huge.text.loader{min-width:4.14285714rem;padding-top:4.92857143rem}.ui.massive.text.loader{min-width:4.57142857rem;padding-top:5.35714286rem}.ui.inverted.loader{color:rgba(255,255,255,.9)}.ui.inverted.loader:before{border-color:rgba(255,255,255,.15)}.ui.inverted.loader:after{border-top-color:#fff}.ui.inline.loader{position:relative;vertical-align:middle;margin:0;left:0;top:0;-webkit-transform:none;transform:none}.ui.inline.loader.active,.ui.inline.loader.visible{display:inline-block}.ui.centered.inline.loader.active,.ui.centered.inline.loader.visible{display:block;margin-left:auto;margin-right:auto}/*! -* # Semantic UI 2.4.0 - Loader -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.placeholder{position:static;overflow:hidden;-webkit-animation:placeholderShimmer 2s linear;animation:placeholderShimmer 2s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;background-color:#fff;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.08)),color-stop(15%,rgba(0,0,0,.15)),color-stop(30%,rgba(0,0,0,.08)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.08) 0,rgba(0,0,0,.15) 15%,rgba(0,0,0,.08) 30%);background-image:linear-gradient(to right,rgba(0,0,0,.08) 0,rgba(0,0,0,.15) 15%,rgba(0,0,0,.08) 30%);background-size:1200px 100%;max-width:30rem}@-webkit-keyframes placeholderShimmer{0%{background-position:-1200px 0}100%{background-position:1200px 0}}@keyframes placeholderShimmer{0%{background-position:-1200px 0}100%{background-position:1200px 0}}.ui.placeholder+.ui.placeholder{margin-top:2rem}.ui.placeholder+.ui.placeholder{-webkit-animation-delay:.15s;animation-delay:.15s}.ui.placeholder+.ui.placeholder+.ui.placeholder{-webkit-animation-delay:.3s;animation-delay:.3s}.ui.placeholder+.ui.placeholder+.ui.placeholder+.ui.placeholder{-webkit-animation-delay:.45s;animation-delay:.45s}.ui.placeholder+.ui.placeholder+.ui.placeholder+.ui.placeholder+.ui.placeholder{-webkit-animation-delay:.6s;animation-delay:.6s}.ui.placeholder,.ui.placeholder .image.header:after,.ui.placeholder .line,.ui.placeholder .line:after,.ui.placeholder>:before{background-color:#fff}.ui.placeholder .image:not(.header):not(.ui){height:100px}.ui.placeholder .square.image:not(.header){height:0;overflow:hidden;padding-top:100%}.ui.placeholder .rectangular.image:not(.header){height:0;overflow:hidden;padding-top:75%}.ui.placeholder .line{position:relative;height:.85714286em}.ui.placeholder .line:after,.ui.placeholder .line:before{top:100%;position:absolute;content:'';background-color:inherit}.ui.placeholder .line:before{left:0}.ui.placeholder .line:after{right:0}.ui.placeholder .line{margin-bottom:.5em}.ui.placeholder .line:after,.ui.placeholder .line:before{height:.5em}.ui.placeholder .line:not(:first-child){margin-top:.5em}.ui.placeholder .header{position:relative;overflow:hidden}.ui.placeholder .line:nth-child(1):after{width:0%}.ui.placeholder .line:nth-child(2):after{width:50%}.ui.placeholder .line:nth-child(3):after{width:10%}.ui.placeholder .line:nth-child(4):after{width:35%}.ui.placeholder .line:nth-child(5):after{width:65%}.ui.placeholder .header .line{margin-bottom:.64285714em}.ui.placeholder .header .line:after,.ui.placeholder .header .line:before{height:.64285714em}.ui.placeholder .header .line:not(:first-child){margin-top:.64285714em}.ui.placeholder .header .line:after{width:20%}.ui.placeholder .header .line:nth-child(2):after{width:60%}.ui.placeholder .image.header .line{margin-left:3em}.ui.placeholder .image.header .line:before{width:.71428571rem}.ui.placeholder .image.header:after{display:block;height:.85714286em;content:'';margin-left:3em}.ui.placeholder .header .line:first-child,.ui.placeholder .image .line:first-child,.ui.placeholder .paragraph .line:first-child{height:.01px}.ui.placeholder .header:not(:first-child):before,.ui.placeholder .image:not(:first-child):before,.ui.placeholder .paragraph:not(:first-child):before{height:1.42857143em;content:'';display:block}.ui.inverted.placeholder{background-image:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,.08)),color-stop(15%,rgba(255,255,255,.14)),color-stop(30%,rgba(255,255,255,.08)));background-image:-webkit-linear-gradient(left,rgba(255,255,255,.08) 0,rgba(255,255,255,.14) 15%,rgba(255,255,255,.08) 30%);background-image:linear-gradient(to right,rgba(255,255,255,.08) 0,rgba(255,255,255,.14) 15%,rgba(255,255,255,.08) 30%)}.ui.inverted.placeholder,.ui.inverted.placeholder .image.header:after,.ui.inverted.placeholder .line,.ui.inverted.placeholder .line:after,.ui.inverted.placeholder>:before{background-color:#1b1c1d}.ui.placeholder .full.line.line.line:after{width:0%}.ui.placeholder .very.long.line.line.line:after{width:10%}.ui.placeholder .long.line.line.line:after{width:35%}.ui.placeholder .medium.line.line.line:after{width:50%}.ui.placeholder .short.line.line.line:after{width:65%}.ui.placeholder .very.short.line.line.line:after{width:80%}.ui.fluid.placeholder{max-width:none}/*! -* # Semantic UI 2.4.0 - Rail -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.rail{position:absolute;top:0;width:300px;height:100%}.ui.left.rail{left:auto;right:100%;padding:0 2rem 0 0;margin:0 2rem 0 0}.ui.right.rail{left:100%;right:auto;padding:0 0 0 2rem;margin:0 0 0 2rem}.ui.left.internal.rail{left:0;right:auto;padding:0 0 0 2rem;margin:0 0 0 2rem}.ui.right.internal.rail{left:auto;right:0;padding:0 2rem 0 0;margin:0 2rem 0 0}.ui.dividing.rail{width:302.5px}.ui.left.dividing.rail{padding:0 2.5rem 0 0;margin:0 2.5rem 0 0;border-right:1px solid rgba(34,36,38,.15)}.ui.right.dividing.rail{border-left:1px solid rgba(34,36,38,.15);padding:0 0 0 2.5rem;margin:0 0 0 2.5rem}.ui.close.rail{width:calc(300px + 1em)}.ui.close.left.rail{padding:0 1em 0 0;margin:0 1em 0 0}.ui.close.right.rail{padding:0 0 0 1em;margin:0 0 0 1em}.ui.very.close.rail{width:calc(300px + .5em)}.ui.very.close.left.rail{padding:0 .5em 0 0;margin:0 .5em 0 0}.ui.very.close.right.rail{padding:0 0 0 .5em;margin:0 0 0 .5em}.ui.attached.left.rail,.ui.attached.right.rail{padding:0;margin:0}.ui.mini.rail{font-size:.78571429rem}.ui.tiny.rail{font-size:.85714286rem}.ui.small.rail{font-size:.92857143rem}.ui.rail{font-size:1rem}.ui.large.rail{font-size:1.14285714rem}.ui.big.rail{font-size:1.28571429rem}.ui.huge.rail{font-size:1.42857143rem}.ui.massive.rail{font-size:1.71428571rem}/*! -* # Semantic UI 2.4.0 - Reveal -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.reveal{display:inherit;position:relative!important;font-size:0!important}.ui.reveal>.visible.content{position:absolute!important;top:0!important;left:0!important;z-index:3!important;-webkit-transition:all .5s ease .1s;transition:all .5s ease .1s}.ui.reveal>.hidden.content{position:relative!important;z-index:2!important}.ui.active.reveal .visible.content,.ui.reveal:hover .visible.content{z-index:4!important}.ui.slide.reveal{position:relative!important;overflow:hidden!important;white-space:nowrap}.ui.slide.reveal>.content{display:block;width:100%;white-space:normal;float:left;margin:0;-webkit-transition:-webkit-transform .5s ease .1s;transition:-webkit-transform .5s ease .1s;transition:transform .5s ease .1s;transition:transform .5s ease .1s,-webkit-transform .5s ease .1s}.ui.slide.reveal>.visible.content{position:relative!important}.ui.slide.reveal>.hidden.content{position:absolute!important;left:0!important;width:100%!important;-webkit-transform:translateX(100%)!important;transform:translateX(100%)!important}.ui.slide.active.reveal>.visible.content,.ui.slide.reveal:hover>.visible.content{-webkit-transform:translateX(-100%)!important;transform:translateX(-100%)!important}.ui.slide.active.reveal>.hidden.content,.ui.slide.reveal:hover>.hidden.content{-webkit-transform:translateX(0)!important;transform:translateX(0)!important}.ui.slide.right.reveal>.visible.content{-webkit-transform:translateX(0)!important;transform:translateX(0)!important}.ui.slide.right.reveal>.hidden.content{-webkit-transform:translateX(-100%)!important;transform:translateX(-100%)!important}.ui.slide.right.active.reveal>.visible.content,.ui.slide.right.reveal:hover>.visible.content{-webkit-transform:translateX(100%)!important;transform:translateX(100%)!important}.ui.slide.right.active.reveal>.hidden.content,.ui.slide.right.reveal:hover>.hidden.content{-webkit-transform:translateX(0)!important;transform:translateX(0)!important}.ui.slide.up.reveal>.hidden.content{-webkit-transform:translateY(100%)!important;transform:translateY(100%)!important}.ui.slide.up.active.reveal>.visible.content,.ui.slide.up.reveal:hover>.visible.content{-webkit-transform:translateY(-100%)!important;transform:translateY(-100%)!important}.ui.slide.up.active.reveal>.hidden.content,.ui.slide.up.reveal:hover>.hidden.content{-webkit-transform:translateY(0)!important;transform:translateY(0)!important}.ui.slide.down.reveal>.hidden.content{-webkit-transform:translateY(-100%)!important;transform:translateY(-100%)!important}.ui.slide.down.active.reveal>.visible.content,.ui.slide.down.reveal:hover>.visible.content{-webkit-transform:translateY(100%)!important;transform:translateY(100%)!important}.ui.slide.down.active.reveal>.hidden.content,.ui.slide.down.reveal:hover>.hidden.content{-webkit-transform:translateY(0)!important;transform:translateY(0)!important}.ui.fade.reveal>.visible.content{opacity:1}.ui.fade.active.reveal>.visible.content,.ui.fade.reveal:hover>.visible.content{opacity:0}.ui.move.reveal{position:relative!important;overflow:hidden!important;white-space:nowrap}.ui.move.reveal>.content{display:block;float:left;white-space:normal;margin:0;-webkit-transition:-webkit-transform .5s cubic-bezier(.175,.885,.32,1) .1s;transition:-webkit-transform .5s cubic-bezier(.175,.885,.32,1) .1s;transition:transform .5s cubic-bezier(.175,.885,.32,1) .1s;transition:transform .5s cubic-bezier(.175,.885,.32,1) .1s,-webkit-transform .5s cubic-bezier(.175,.885,.32,1) .1s}.ui.move.reveal>.visible.content{position:relative!important}.ui.move.reveal>.hidden.content{position:absolute!important;left:0!important;width:100%!important}.ui.move.active.reveal>.visible.content,.ui.move.reveal:hover>.visible.content{-webkit-transform:translateX(-100%)!important;transform:translateX(-100%)!important}.ui.move.right.active.reveal>.visible.content,.ui.move.right.reveal:hover>.visible.content{-webkit-transform:translateX(100%)!important;transform:translateX(100%)!important}.ui.move.up.active.reveal>.visible.content,.ui.move.up.reveal:hover>.visible.content{-webkit-transform:translateY(-100%)!important;transform:translateY(-100%)!important}.ui.move.down.active.reveal>.visible.content,.ui.move.down.reveal:hover>.visible.content{-webkit-transform:translateY(100%)!important;transform:translateY(100%)!important}.ui.rotate.reveal>.visible.content{-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-transform:rotate(0);transform:rotate(0)}.ui.rotate.reveal>.visible.content,.ui.rotate.right.reveal>.visible.content{-webkit-transform-origin:bottom right;transform-origin:bottom right}.ui.rotate.active.reveal>.visible.content,.ui.rotate.reveal:hover>.visible.content,.ui.rotate.right.active.reveal>.visible.content,.ui.rotate.right.reveal:hover>.visible.content{-webkit-transform:rotate(110deg);transform:rotate(110deg)}.ui.rotate.left.reveal>.visible.content{-webkit-transform-origin:bottom left;transform-origin:bottom left}.ui.rotate.left.active.reveal>.visible.content,.ui.rotate.left.reveal:hover>.visible.content{-webkit-transform:rotate(-110deg);transform:rotate(-110deg)}.ui.disabled.reveal:hover>.visible.visible.content{position:static!important;display:block!important;opacity:1!important;top:0!important;left:0!important;right:auto!important;bottom:auto!important;-webkit-transform:none!important;transform:none!important}.ui.disabled.reveal:hover>.hidden.hidden.content{display:none!important}.ui.reveal>.ui.ribbon.label{z-index:5}.ui.visible.reveal{overflow:visible}.ui.instant.reveal>.content{-webkit-transition-delay:0s!important;transition-delay:0s!important}.ui.reveal>.content{font-size:1rem!important}/*! -* # Semantic UI 2.4.0 - Segment -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.segment{position:relative;background:#fff;-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15);margin:1rem 0;padding:1em 1em;border-radius:.28571429rem;border:1px solid rgba(34,36,38,.15)}.ui.segment:first-child{margin-top:0}.ui.segment:last-child{margin-bottom:0}.ui.vertical.segment{margin:0;padding-left:0;padding-right:0;background:none transparent;border-radius:0;-webkit-box-shadow:none;box-shadow:none;border:none;border-bottom:1px solid rgba(34,36,38,.15)}.ui.vertical.segment:last-child{border-bottom:none}.ui.inverted.segment>.ui.header{color:#fff}.ui[class*="bottom attached"].segment>[class*="top attached"].label{border-top-left-radius:0;border-top-right-radius:0}.ui[class*="top attached"].segment>[class*="bottom attached"].label{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui.attached.segment:not(.top):not(.bottom)>[class*="top attached"].label{border-top-left-radius:0;border-top-right-radius:0}.ui.attached.segment:not(.top):not(.bottom)>[class*="bottom attached"].label{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui.grid>.row>.ui.segment.column,.ui.grid>.ui.segment.column,.ui.page.grid.segment{padding-top:2em;padding-bottom:2em}.ui.grid.segment{margin:1rem 0;border-radius:.28571429rem}.ui.basic.table.segment{background:#fff;border:1px solid rgba(34,36,38,.15);-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15)}.ui[class*="very basic"].table.segment{padding:1em 1em}.ui.placeholder.segment{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;max-width:initial;-webkit-animation:none;animation:none;overflow:visible;padding:1em 1em;min-height:18rem;background:#f9fafb;border-color:rgba(34,36,38,.15);-webkit-box-shadow:0 2px 25px 0 rgba(34,36,38,.05) inset;box-shadow:0 2px 25px 0 rgba(34,36,38,.05) inset}.ui.placeholder.segment .button,.ui.placeholder.segment textarea{display:block}.ui.placeholder.segment .button,.ui.placeholder.segment .field,.ui.placeholder.segment textarea,.ui.placeholder.segment>.ui.input{max-width:15rem;margin-left:auto;margin-right:auto}.ui.placeholder.segment .column .button,.ui.placeholder.segment .column .field,.ui.placeholder.segment .column textarea,.ui.placeholder.segment .column>.ui.input{max-width:15rem;margin-left:auto;margin-right:auto}.ui.placeholder.segment>.inline{-ms-flex-item-align:center;align-self:center}.ui.placeholder.segment>.inline>.button{display:inline-block;width:auto;margin:0 .35714286rem 0 0}.ui.placeholder.segment>.inline>.button:last-child{margin-right:0}.ui.piled.segment,.ui.piled.segments{margin:3em 0;-webkit-box-shadow:'';box-shadow:'';z-index:auto}.ui.piled.segment:first-child{margin-top:0}.ui.piled.segment:last-child{margin-bottom:0}.ui.piled.segment:after,.ui.piled.segment:before,.ui.piled.segments:after,.ui.piled.segments:before{background-color:#fff;visibility:visible;content:'';display:block;height:100%;left:0;position:absolute;width:100%;border:1px solid rgba(34,36,38,.15);-webkit-box-shadow:'';box-shadow:''}.ui.piled.segment:before,.ui.piled.segments:before{-webkit-transform:rotate(-1.2deg);transform:rotate(-1.2deg);top:0;z-index:-2}.ui.piled.segment:after,.ui.piled.segments:after{-webkit-transform:rotate(1.2deg);transform:rotate(1.2deg);top:0;z-index:-1}.ui[class*="top attached"].piled.segment{margin-top:3em;margin-bottom:0}.ui.piled.segment[class*="top attached"]:first-child{margin-top:0}.ui.piled.segment[class*="bottom attached"]{margin-top:0;margin-bottom:3em}.ui.piled.segment[class*="bottom attached"]:last-child{margin-bottom:0}.ui.stacked.segment{padding-bottom:1.4em}.ui.stacked.segment:after,.ui.stacked.segment:before,.ui.stacked.segments:after,.ui.stacked.segments:before{content:'';position:absolute;bottom:-3px;left:0;border-top:1px solid rgba(34,36,38,.15);background:rgba(0,0,0,.03);width:100%;height:6px;visibility:visible}.ui.stacked.segment:before,.ui.stacked.segments:before{display:none}.ui.tall.stacked.segment:before,.ui.tall.stacked.segments:before{display:block;bottom:0}.ui.stacked.inverted.segment:after,.ui.stacked.inverted.segment:before,.ui.stacked.inverted.segments:after,.ui.stacked.inverted.segments:before{background-color:rgba(0,0,0,.03);border-top:1px solid rgba(34,36,38,.35)}.ui.padded.segment{padding:1.5em}.ui[class*="very padded"].segment{padding:3em}.ui.padded.segment.vertical.segment,.ui[class*="very padded"].vertical.segment{padding-left:0;padding-right:0}.ui.compact.segment{display:table}.ui.compact.segments{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.ui.compact.segments .segment,.ui.segments .compact.segment{display:block;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.ui.circular.segment{display:table-cell;padding:2em;text-align:center;vertical-align:middle;border-radius:500em}.ui.raised.segment,.ui.raised.segments{-webkit-box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.segments{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:relative;margin:1rem 0;border:1px solid rgba(34,36,38,.15);-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15);border-radius:.28571429rem}.ui.segments:first-child{margin-top:0}.ui.segments:last-child{margin-bottom:0}.ui.segments>.segment{top:0;bottom:0;border-radius:0;margin:0;width:auto;-webkit-box-shadow:none;box-shadow:none;border:none;border-top:1px solid rgba(34,36,38,.15)}.ui.segments:not(.horizontal)>.segment:first-child{border-top:none;margin-top:0;bottom:0;margin-bottom:0;top:0;border-radius:.28571429rem .28571429rem 0 0}.ui.segments:not(.horizontal)>.segment:last-child{top:0;bottom:0;margin-top:0;margin-bottom:0;-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15),none;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),none;border-radius:0 0 .28571429rem .28571429rem}.ui.segments:not(.horizontal)>.segment:only-child{border-radius:.28571429rem}.ui.segments>.ui.segments{border-top:1px solid rgba(34,36,38,.15);margin:1rem 1rem}.ui.segments>.segments:first-child{border-top:none}.ui.segments>.segment+.segments:not(.horizontal){margin-top:0}.ui.horizontal.segments{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;background-color:transparent;border-radius:0;padding:0;background-color:#fff;-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15);margin:1rem 0;border-radius:.28571429rem;border:1px solid rgba(34,36,38,.15)}.ui.segments>.horizontal.segments{margin:0;background-color:transparent;border-radius:0;border:none;-webkit-box-shadow:none;box-shadow:none;border-top:1px solid rgba(34,36,38,.15)}.ui.horizontal.segments>.segment{-webkit-box-flex:1;flex:1 1 auto;-ms-flex:1 1 0px;margin:0;min-width:0;background-color:transparent;border-radius:0;border:none;-webkit-box-shadow:none;box-shadow:none;border-left:1px solid rgba(34,36,38,.15)}.ui.segments>.horizontal.segments:first-child{border-top:none}.ui.horizontal.segments>.segment:first-child{border-left:none}.ui.disabled.segment{opacity:.45;color:rgba(40,40,40,.3)}.ui.loading.segment{position:relative;cursor:default;pointer-events:none;text-shadow:none!important;color:transparent!important;-webkit-transition:all 0s linear;transition:all 0s linear}.ui.loading.segment:before{position:absolute;content:'';top:0;left:0;background:rgba(255,255,255,.8);width:100%;height:100%;border-radius:.28571429rem;z-index:100}.ui.loading.segment:after{position:absolute;content:'';top:50%;left:50%;margin:-1.5em 0 0 -1.5em;width:3em;height:3em;-webkit-animation:segment-spin .6s linear;animation:segment-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.1);border-style:solid;border-width:.2em;-webkit-box-shadow:0 0 0 1px transparent;box-shadow:0 0 0 1px transparent;visibility:visible;z-index:101}@-webkit-keyframes segment-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes segment-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ui.basic.segment{background:none transparent;-webkit-box-shadow:none;box-shadow:none;border:none;border-radius:0}.ui.clearing.segment:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui.red.segment:not(.inverted){border-top:2px solid #db2828!important}.ui.inverted.red.segment{background-color:#db2828!important;color:#fff!important}.ui.orange.segment:not(.inverted){border-top:2px solid #f2711c!important}.ui.inverted.orange.segment{background-color:#f2711c!important;color:#fff!important}.ui.yellow.segment:not(.inverted){border-top:2px solid #fbbd08!important}.ui.inverted.yellow.segment{background-color:#fbbd08!important;color:#fff!important}.ui.olive.segment:not(.inverted){border-top:2px solid #b5cc18!important}.ui.inverted.olive.segment{background-color:#b5cc18!important;color:#fff!important}.ui.green.segment:not(.inverted){border-top:2px solid #21ba45!important}.ui.inverted.green.segment{background-color:#21ba45!important;color:#fff!important}.ui.teal.segment:not(.inverted){border-top:2px solid #00b5ad!important}.ui.inverted.teal.segment{background-color:#00b5ad!important;color:#fff!important}.ui.blue.segment:not(.inverted){border-top:2px solid #2185d0!important}.ui.inverted.blue.segment{background-color:#2185d0!important;color:#fff!important}.ui.violet.segment:not(.inverted){border-top:2px solid #6435c9!important}.ui.inverted.violet.segment{background-color:#6435c9!important;color:#fff!important}.ui.purple.segment:not(.inverted){border-top:2px solid #a333c8!important}.ui.inverted.purple.segment{background-color:#a333c8!important;color:#fff!important}.ui.pink.segment:not(.inverted){border-top:2px solid #e03997!important}.ui.inverted.pink.segment{background-color:#e03997!important;color:#fff!important}.ui.brown.segment:not(.inverted){border-top:2px solid #a5673f!important}.ui.inverted.brown.segment{background-color:#a5673f!important;color:#fff!important}.ui.grey.segment:not(.inverted){border-top:2px solid #767676!important}.ui.inverted.grey.segment{background-color:#767676!important;color:#fff!important}.ui.black.segment:not(.inverted){border-top:2px solid #1b1c1d!important}.ui.inverted.black.segment{background-color:#1b1c1d!important;color:#fff!important}.ui[class*="left aligned"].segment{text-align:left}.ui[class*="right aligned"].segment{text-align:right}.ui[class*="center aligned"].segment{text-align:center}.ui.floated.segment,.ui[class*="left floated"].segment{float:left;margin-right:1em}.ui[class*="right floated"].segment{float:right;margin-left:1em}.ui.inverted.segment{border:none;-webkit-box-shadow:none;box-shadow:none}.ui.inverted.segment,.ui.primary.inverted.segment{background:#1b1c1d;color:rgba(255,255,255,.9)}.ui.inverted.segment .segment{color:rgba(0,0,0,.87)}.ui.inverted.segment .inverted.segment{color:rgba(255,255,255,.9)}.ui.inverted.attached.segment{border-color:#555}.ui.secondary.segment{background:#f3f4f5;color:rgba(0,0,0,.6)}.ui.secondary.inverted.segment{background:#4c4f52 -webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.2)),to(rgba(255,255,255,.2)));background:#4c4f52 -webkit-linear-gradient(rgba(255,255,255,.2) 0,rgba(255,255,255,.2) 100%);background:#4c4f52 linear-gradient(rgba(255,255,255,.2) 0,rgba(255,255,255,.2) 100%);color:rgba(255,255,255,.8)}.ui.tertiary.segment{background:#dcddde;color:rgba(0,0,0,.6)}.ui.tertiary.inverted.segment{background:#717579 -webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,.35)),to(rgba(255,255,255,.35)));background:#717579 -webkit-linear-gradient(rgba(255,255,255,.35) 0,rgba(255,255,255,.35) 100%);background:#717579 linear-gradient(rgba(255,255,255,.35) 0,rgba(255,255,255,.35) 100%);color:rgba(255,255,255,.8)}.ui.attached.segment{top:0;bottom:0;border-radius:0;margin:0 -1px;width:calc(100% + 2px);max-width:calc(100% + 2px);-webkit-box-shadow:none;box-shadow:none;border:1px solid #d4d4d5}.ui.attached:not(.message)+.ui.attached.segment:not(.top){border-top:none}.ui[class*="top attached"].segment{bottom:0;margin-bottom:0;top:0;margin-top:1rem;border-radius:.28571429rem .28571429rem 0 0}.ui.segment[class*="top attached"]:first-child{margin-top:0}.ui.segment[class*="bottom attached"]{bottom:0;margin-top:0;top:0;margin-bottom:1rem;-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15),none;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),none;border-radius:0 0 .28571429rem .28571429rem}.ui.segment[class*="bottom attached"]:last-child{margin-bottom:0}.ui.mini.segment,.ui.mini.segments .segment{font-size:.78571429rem}.ui.tiny.segment,.ui.tiny.segments .segment{font-size:.85714286rem}.ui.small.segment,.ui.small.segments .segment{font-size:.92857143rem}.ui.segment,.ui.segments .segment{font-size:1rem}.ui.large.segment,.ui.large.segments .segment{font-size:1.14285714rem}.ui.big.segment,.ui.big.segments .segment{font-size:1.28571429rem}.ui.huge.segment,.ui.huge.segments .segment{font-size:1.42857143rem}.ui.massive.segment,.ui.massive.segments .segment{font-size:1.71428571rem}/*! -* # Semantic UI 2.4.0 - Step -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.steps{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin:1em 0;background:'';-webkit-box-shadow:none;box-shadow:none;line-height:1.14285714em;border-radius:.28571429rem;border:1px solid rgba(34,36,38,.15)}.ui.steps:first-child{margin-top:0}.ui.steps:last-child{margin-bottom:0}.ui.steps .step{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;vertical-align:middle;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0 0;padding:1.14285714em 2em;background:#fff;color:rgba(0,0,0,.87);-webkit-box-shadow:none;box-shadow:none;border-radius:0;border:none;border-right:1px solid rgba(34,36,38,.15);-webkit-transition:background-color .1s ease,opacity .1s ease,color .1s ease,-webkit-box-shadow .1s ease;transition:background-color .1s ease,opacity .1s ease,color .1s ease,-webkit-box-shadow .1s ease;transition:background-color .1s ease,opacity .1s ease,color .1s ease,box-shadow .1s ease;transition:background-color .1s ease,opacity .1s ease,color .1s ease,box-shadow .1s ease,-webkit-box-shadow .1s ease}.ui.steps .step:after{display:none;position:absolute;z-index:2;content:'';top:50%;right:0;border:medium none;background-color:#fff;width:1.14285714em;height:1.14285714em;border-style:solid;border-color:rgba(34,36,38,.15);border-width:0 1px 1px 0;-webkit-transition:background-color .1s ease,opacity .1s ease,color .1s ease,-webkit-box-shadow .1s ease;transition:background-color .1s ease,opacity .1s ease,color .1s ease,-webkit-box-shadow .1s ease;transition:background-color .1s ease,opacity .1s ease,color .1s ease,box-shadow .1s ease;transition:background-color .1s ease,opacity .1s ease,color .1s ease,box-shadow .1s ease,-webkit-box-shadow .1s ease;-webkit-transform:translateY(-50%) translateX(50%) rotate(-45deg);transform:translateY(-50%) translateX(50%) rotate(-45deg)}.ui.steps .step:first-child{padding-left:2em;border-radius:.28571429rem 0 0 .28571429rem}.ui.steps .step:last-child{border-radius:0 .28571429rem .28571429rem 0}.ui.steps .step:last-child{border-right:none;margin-right:0}.ui.steps .step:only-child{border-radius:.28571429rem}.ui.steps .step .title{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1.14285714em;font-weight:700}.ui.steps .step>.title{width:100%}.ui.steps .step .description{font-weight:400;font-size:.92857143em;color:rgba(0,0,0,.87)}.ui.steps .step>.description{width:100%}.ui.steps .step .title~.description{margin-top:.25em}.ui.steps .step>.icon{line-height:1;font-size:2.5em;margin:0 1rem 0 0}.ui.steps .step>.icon,.ui.steps .step>.icon~.content{display:block;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-ms-flex-item-align:middle;align-self:middle}.ui.steps .step>.icon~.content{-webkit-box-flex:1 0 auto;-ms-flex-positive:1 0 auto;flex-grow:1 0 auto}.ui.steps:not(.vertical) .step>.icon{width:auto}.ui.steps .link.step,.ui.steps a.step{cursor:pointer}.ui.ordered.steps{counter-reset:ordered}.ui.ordered.steps .step:before{display:block;position:static;text-align:center;content:counters(ordered, ".");-ms-flex-item-align:middle;align-self:middle;margin-right:1rem;font-size:2.5em;counter-increment:ordered;font-family:inherit;font-weight:700}.ui.ordered.steps .step>*{display:block;-ms-flex-item-align:middle;align-self:middle}.ui.vertical.steps{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:visible}.ui.vertical.steps .step{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;border-radius:0;padding:1.14285714em 2em;border-right:none;border-bottom:1px solid rgba(34,36,38,.15)}.ui.vertical.steps .step:first-child{padding:1.14285714em 2em;border-radius:.28571429rem .28571429rem 0 0}.ui.vertical.steps .step:last-child{border-bottom:none;border-radius:0 0 .28571429rem .28571429rem}.ui.vertical.steps .step:only-child{border-radius:.28571429rem}.ui.vertical.steps .step:after{display:none}.ui.vertical.steps .step:after{top:50%;right:0;border-width:0 1px 1px 0}.ui.vertical.steps .step:after{display:none}.ui.vertical.steps .active.step:after{display:block}.ui.vertical.steps .step:last-child:after{display:none}.ui.vertical.steps .active.step:last-child:after{display:block}@media only screen and (max-width:767px){.ui.steps:not(.unstackable){display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;overflow:visible;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ui.steps:not(.unstackable) .step{width:100%!important;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:0;padding:1.14285714em 2em}.ui.steps:not(.unstackable) .step:first-child{padding:1.14285714em 2em;border-radius:.28571429rem .28571429rem 0 0}.ui.steps:not(.unstackable) .step:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.steps:not(.unstackable) .step:after{display:none!important}.ui.steps:not(.unstackable) .step .content{text-align:center}.ui.ordered.steps:not(.unstackable) .step:before,.ui.steps:not(.unstackable) .step>.icon{margin:0 0 1rem 0}}.ui.steps .link.step:hover,.ui.steps .link.step:hover::after,.ui.steps a.step:hover,.ui.steps a.step:hover::after{background:#f9fafb;color:rgba(0,0,0,.8)}.ui.steps .link.step:active,.ui.steps .link.step:active::after,.ui.steps a.step:active,.ui.steps a.step:active::after{background:#f3f4f5;color:rgba(0,0,0,.9)}.ui.steps .step.active{cursor:auto;background:#f3f4f5}.ui.steps .step.active:after{background:#f3f4f5}.ui.steps .step.active .title{color:#4183c4}.ui.ordered.steps .step.active:before,.ui.steps .active.step .icon{color:rgba(0,0,0,.85)}.ui.steps .step:after{display:block}.ui.steps .active.step:after{display:block}.ui.steps .step:last-child:after{display:none}.ui.steps .active.step:last-child:after{display:none}.ui.steps .link.active.step:hover,.ui.steps .link.active.step:hover::after,.ui.steps a.active.step:hover,.ui.steps a.active.step:hover::after{cursor:pointer;background:#dcddde;color:rgba(0,0,0,.87)}.ui.ordered.steps .step.completed:before,.ui.steps .step.completed>.icon:before{color:#21ba45}.ui.steps .disabled.step{cursor:auto;background:#fff;pointer-events:none}.ui.steps .disabled.step,.ui.steps .disabled.step .description,.ui.steps .disabled.step .title{color:rgba(40,40,40,.3)}.ui.steps .disabled.step:after{background:#fff}@media only screen and (max-width:991px){.ui[class*="tablet stackable"].steps{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;overflow:visible;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ui[class*="tablet stackable"].steps .step{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:0;padding:1.14285714em 2em}.ui[class*="tablet stackable"].steps .step:first-child{padding:1.14285714em 2em;border-radius:.28571429rem .28571429rem 0 0}.ui[class*="tablet stackable"].steps .step:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui[class*="tablet stackable"].steps .step:after{display:none!important}.ui[class*="tablet stackable"].steps .step .content{text-align:center}.ui[class*="tablet stackable"].ordered.steps .step:before,.ui[class*="tablet stackable"].steps .step>.icon{margin:0 0 1rem 0}}.ui.fluid.steps{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%}.ui.attached.steps{width:calc(100% + 2px)!important;margin:0 -1px 0;max-width:calc(100% + 2px);border-radius:.28571429rem .28571429rem 0 0}.ui.attached.steps .step:first-child{border-radius:.28571429rem 0 0 0}.ui.attached.steps .step:last-child{border-radius:0 .28571429rem 0 0}.ui.bottom.attached.steps{margin:0 -1px 0;border-radius:0 0 .28571429rem .28571429rem}.ui.bottom.attached.steps .step:first-child{border-radius:0 0 0 .28571429rem}.ui.bottom.attached.steps .step:last-child{border-radius:0 0 .28571429rem 0}.ui.eight.steps,.ui.five.steps,.ui.four.steps,.ui.one.steps,.ui.seven.steps,.ui.six.steps,.ui.three.steps,.ui.two.steps{width:100%}.ui.eight.steps>.step,.ui.five.steps>.step,.ui.four.steps>.step,.ui.one.steps>.step,.ui.seven.steps>.step,.ui.six.steps>.step,.ui.three.steps>.step,.ui.two.steps>.step{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.ui.one.steps>.step{width:100%}.ui.two.steps>.step{width:50%}.ui.three.steps>.step{width:33.333%}.ui.four.steps>.step{width:25%}.ui.five.steps>.step{width:20%}.ui.six.steps>.step{width:16.666%}.ui.seven.steps>.step{width:14.285%}.ui.eight.steps>.step{width:12.5%}.ui.mini.step,.ui.mini.steps .step{font-size:.78571429rem}.ui.tiny.step,.ui.tiny.steps .step{font-size:.85714286rem}.ui.small.step,.ui.small.steps .step{font-size:.92857143rem}.ui.step,.ui.steps .step{font-size:1rem}.ui.large.step,.ui.large.steps .step{font-size:1.14285714rem}.ui.big.step,.ui.big.steps .step{font-size:1.28571429rem}.ui.huge.step,.ui.huge.steps .step{font-size:1.42857143rem}.ui.massive.step,.ui.massive.steps .step{font-size:1.71428571rem}@font-face{font-family:Step;src:url(data:application/x-font-ttf;charset=utf-8;;base64,AAEAAAAOAIAAAwBgT1MvMj3hSQEAAADsAAAAVmNtYXDQEhm3AAABRAAAAUpjdnQgBkn/lAAABuwAAAAcZnBnbYoKeDsAAAcIAAAJkWdhc3AAAAAQAAAG5AAAAAhnbHlm32cEdgAAApAAAAC2aGVhZAErPHsAAANIAAAANmhoZWEHUwNNAAADgAAAACRobXR4CykAAAAAA6QAAAAMbG9jYQA4AFsAAAOwAAAACG1heHAApgm8AAADuAAAACBuYW1lzJ0aHAAAA9gAAALNcG9zdK69QJgAAAaoAAAAO3ByZXCSoZr/AAAQnAAAAFYAAQO4AZAABQAIAnoCvAAAAIwCegK8AAAB4AAxAQIAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABA6ADoAQNS/2oAWgMLAE8AAAABAAAAAAAAAAAAAwAAAAMAAAAcAAEAAAAAAEQAAwABAAAAHAAEACgAAAAGAAQAAQACAADoAf//AAAAAOgA//8AABgBAAEAAAAAAAAAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADpAKYABUAHEAZDwEAAQFCAAIBAmoAAQABagAAAGEUFxQDEisBFAcBBiInASY0PwE2Mh8BATYyHwEWA6QP/iAQLBD+6g8PTBAsEKQBbhAsEEwPAhYWEP4gDw8BFhAsEEwQEKUBbxAQTBAAAAH//f+xA18DCwAMABJADwABAQpDAAAACwBEFRMCESsBFA4BIi4CPgEyHgEDWXLG6MhuBnq89Lp+AV51xHR0xOrEdHTEAAAAAAEAAAABAADDeRpdXw889QALA+gAAAAAzzWYjQAAAADPNWBN//3/sQOkAwsAAAAIAAIAAAAAAAAAAQAAA1L/agBaA+gAAP/3A6QAAQAAAAAAAAAAAAAAAAAAAAMD6AAAA+gAAANZAAAAAAAAADgAWwABAAAAAwAWAAEAAAAAAAIABgATAG4AAAAtCZEAAAAAAAAAEgDeAAEAAAAAAAAANQAAAAEAAAAAAAEACAA1AAEAAAAAAAIABwA9AAEAAAAAAAMACABEAAEAAAAAAAQACABMAAEAAAAAAAUACwBUAAEAAAAAAAYACABfAAEAAAAAAAoAKwBnAAEAAAAAAAsAEwCSAAMAAQQJAAAAagClAAMAAQQJAAEAEAEPAAMAAQQJAAIADgEfAAMAAQQJAAMAEAEtAAMAAQQJAAQAEAE9AAMAAQQJAAUAFgFNAAMAAQQJAAYAEAFjAAMAAQQJAAoAVgFzAAMAAQQJAAsAJgHJQ29weXJpZ2h0IChDKSAyMDE0IGJ5IG9yaWdpbmFsIGF1dGhvcnMgQCBmb250ZWxsby5jb21mb250ZWxsb1JlZ3VsYXJmb250ZWxsb2ZvbnRlbGxvVmVyc2lvbiAxLjBmb250ZWxsb0dlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAEMAbwBwAHkAcgBpAGcAaAB0ACAAKABDACkAIAAyADAAMQA0ACAAYgB5ACAAbwByAGkAZwBpAG4AYQBsACAAYQB1AHQAaABvAHIAcwAgAEAAIABmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQBmAG8AbgB0AGUAbABsAG8AUgBlAGcAdQBsAGEAcgBmAG8AbgB0AGUAbABsAG8AZgBvAG4AdABlAGwAbABvAFYAZQByAHMAaQBvAG4AIAAxAC4AMABmAG8AbgB0AGUAbABsAG8ARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAQIBAwljaGVja21hcmsGY2lyY2xlAAAAAAEAAf//AA8AAAAAAAAAAAAAAAAAAAAAADIAMgML/7EDC/+xsAAssCBgZi2wASwgZCCwwFCwBCZasARFW1ghIyEbilggsFBQWCGwQFkbILA4UFghsDhZWSCwCkVhZLAoUFghsApFILAwUFghsDBZGyCwwFBYIGYgiophILAKUFhgGyCwIFBYIbAKYBsgsDZQWCGwNmAbYFlZWRuwACtZWSOwAFBYZVlZLbACLCBFILAEJWFkILAFQ1BYsAUjQrAGI0IbISFZsAFgLbADLCMhIyEgZLEFYkIgsAYjQrIKAAIqISCwBkMgiiCKsAArsTAFJYpRWGBQG2FSWVgjWSEgsEBTWLAAKxshsEBZI7AAUFhlWS2wBCywB0MrsgACAENgQi2wBSywByNCIyCwACNCYbCAYrABYLAEKi2wBiwgIEUgsAJFY7ABRWJgRLABYC2wBywgIEUgsAArI7ECBCVgIEWKI2EgZCCwIFBYIbAAG7AwUFiwIBuwQFlZI7AAUFhlWbADJSNhRESwAWAtsAgssQUFRbABYUQtsAkssAFgICCwCUNKsABQWCCwCSNCWbAKQ0qwAFJYILAKI0JZLbAKLCC4BABiILgEAGOKI2GwC0NgIIpgILALI0IjLbALLEtUWLEHAURZJLANZSN4LbAMLEtRWEtTWLEHAURZGyFZJLATZSN4LbANLLEADENVWLEMDEOwAWFCsAorWbAAQ7ACJUKxCQIlQrEKAiVCsAEWIyCwAyVQWLEBAENgsAQlQoqKIIojYbAJKiEjsAFhIIojYbAJKiEbsQEAQ2CwAiVCsAIlYbAJKiFZsAlDR7AKQ0dgsIBiILACRWOwAUViYLEAABMjRLABQ7AAPrIBAQFDYEItsA4ssQAFRVRYALAMI0IgYLABYbUNDQEACwBCQopgsQ0FK7BtKxsiWS2wDyyxAA4rLbAQLLEBDistsBEssQIOKy2wEiyxAw4rLbATLLEEDistsBQssQUOKy2wFSyxBg4rLbAWLLEHDistsBcssQgOKy2wGCyxCQ4rLbAZLLAIK7EABUVUWACwDCNCIGCwAWG1DQ0BAAsAQkKKYLENBSuwbSsbIlktsBossQAZKy2wGyyxARkrLbAcLLECGSstsB0ssQMZKy2wHiyxBBkrLbAfLLEFGSstsCAssQYZKy2wISyxBxkrLbAiLLEIGSstsCMssQkZKy2wJCwgPLABYC2wJSwgYLANYCBDI7ABYEOwAiVhsAFgsCQqIS2wJiywJSuwJSotsCcsICBHICCwAkVjsAFFYmAjYTgjIIpVWCBHICCwAkVjsAFFYmAjYTgbIVktsCgssQAFRVRYALABFrAnKrABFTAbIlktsCkssAgrsQAFRVRYALABFrAnKrABFTAbIlktsCosIDWwAWAtsCssALADRWOwAUVisAArsAJFY7ABRWKwACuwABa0AAAAAABEPiM4sSoBFSotsCwsIDwgRyCwAkVjsAFFYmCwAENhOC2wLSwuFzwtsC4sIDwgRyCwAkVjsAFFYmCwAENhsAFDYzgtsC8ssQIAFiUgLiBHsAAjQrACJUmKikcjRyNhIFhiGyFZsAEjQrIuAQEVFCotsDAssAAWsAQlsAQlRyNHI2GwBkUrZYouIyAgPIo4LbAxLLAAFrAEJbAEJSAuRyNHI2EgsAQjQrAGRSsgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjILAIQyCKI0cjRyNhI0ZgsARDsIBiYCCwACsgiophILACQ2BkI7ADQ2FkUFiwAkNhG7ADQ2BZsAMlsIBiYSMgILAEJiNGYTgbI7AIQ0awAiWwCENHI0cjYWAgsARDsIBiYCMgsAArI7AEQ2CwACuwBSVhsAUlsIBisAQmYSCwBCVgZCOwAyVgZFBYIRsjIVkjICCwBCYjRmE4WS2wMiywABYgICCwBSYgLkcjRyNhIzw4LbAzLLAAFiCwCCNCICAgRiNHsAArI2E4LbA0LLAAFrADJbACJUcjRyNhsABUWC4gPCMhG7ACJbACJUcjRyNhILAFJbAEJUcjRyNhsAYlsAUlSbACJWGwAUVjIyBYYhshWWOwAUViYCMuIyAgPIo4IyFZLbA1LLAAFiCwCEMgLkcjRyNhIGCwIGBmsIBiIyAgPIo4LbA2LCMgLkawAiVGUlggPFkusSYBFCstsDcsIyAuRrACJUZQWCA8WS6xJgEUKy2wOCwjIC5GsAIlRlJYIDxZIyAuRrACJUZQWCA8WS6xJgEUKy2wOSywMCsjIC5GsAIlRlJYIDxZLrEmARQrLbA6LLAxK4ogIDywBCNCijgjIC5GsAIlRlJYIDxZLrEmARQrsARDLrAmKy2wOyywABawBCWwBCYgLkcjRyNhsAZFKyMgPCAuIzixJgEUKy2wPCyxCAQlQrAAFrAEJbAEJSAuRyNHI2EgsAQjQrAGRSsgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjIEewBEOwgGJgILAAKyCKimEgsAJDYGQjsANDYWRQWLACQ2EbsANDYFmwAyWwgGJhsAIlRmE4IyA8IzgbISAgRiNHsAArI2E4IVmxJgEUKy2wPSywMCsusSYBFCstsD4ssDErISMgIDywBCNCIzixJgEUK7AEQy6wJistsD8ssAAVIEewACNCsgABARUUEy6wLCotsEAssAAVIEewACNCsgABARUUEy6wLCotsEEssQABFBOwLSotsEIssC8qLbBDLLAAFkUjIC4gRoojYTixJgEUKy2wRCywCCNCsEMrLbBFLLIAADwrLbBGLLIAATwrLbBHLLIBADwrLbBILLIBATwrLbBJLLIAAD0rLbBKLLIAAT0rLbBLLLIBAD0rLbBMLLIBAT0rLbBNLLIAADkrLbBOLLIAATkrLbBPLLIBADkrLbBQLLIBATkrLbBRLLIAADsrLbBSLLIAATsrLbBTLLIBADsrLbBULLIBATsrLbBVLLIAAD4rLbBWLLIAAT4rLbBXLLIBAD4rLbBYLLIBAT4rLbBZLLIAADorLbBaLLIAATorLbBbLLIBADorLbBcLLIBATorLbBdLLAyKy6xJgEUKy2wXiywMiuwNistsF8ssDIrsDcrLbBgLLAAFrAyK7A4Ky2wYSywMysusSYBFCstsGIssDMrsDYrLbBjLLAzK7A3Ky2wZCywMyuwOCstsGUssDQrLrEmARQrLbBmLLA0K7A2Ky2wZyywNCuwNystsGgssDQrsDgrLbBpLLA1Ky6xJgEUKy2waiywNSuwNistsGsssDUrsDcrLbBsLLA1K7A4Ky2wbSwrsAhlsAMkUHiwARUwLQAAAEu4AMhSWLEBAY5ZuQgACABjILABI0SwAyNwsgQoCUVSRLIKAgcqsQYBRLEkAYhRWLBAiFixBgNEsSYBiFFYuAQAiFixBgFEWVlZWbgB/4WwBI2xBQBEAAA=) format('truetype'),url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAoUAA4AAAAAEPQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABRAAAAEQAAABWPeFJAWNtYXAAAAGIAAAAOgAAAUrQEhm3Y3Z0IAAAAcQAAAAUAAAAHAZJ/5RmcGdtAAAB2AAABPkAAAmRigp4O2dhc3AAAAbUAAAACAAAAAgAAAAQZ2x5ZgAABtwAAACuAAAAtt9nBHZoZWFkAAAHjAAAADUAAAA2ASs8e2hoZWEAAAfEAAAAIAAAACQHUwNNaG10eAAAB+QAAAAMAAAADAspAABsb2NhAAAH8AAAAAgAAAAIADgAW21heHAAAAf4AAAAIAAAACAApgm8bmFtZQAACBgAAAF3AAACzcydGhxwb3N0AAAJkAAAACoAAAA7rr1AmHByZXAAAAm8AAAAVgAAAFaSoZr/eJxjYGTewTiBgZWBg6mKaQ8DA0MPhGZ8wGDIyMTAwMTAysyAFQSkuaYwOLxgeMHIHPQ/iyGKmZvBHyjMCJIDAPe9C2B4nGNgYGBmgGAZBkYGEHAB8hjBfBYGDSDNBqQZGZgYGF4w/v8PUvCCAURLMELVAwEjG8OIBwBk5AavAAB4nGNgQANGDEbM3P83gjAAELQD4XicnVXZdtNWFJU8ZHASOmSgoA7X3DhQ68qEKRgwaSrFdiEdHAitBB2kDHTkncc+62uOQrtWH/m07n09JLR0rbYsls++R1tn2DrnRhwjKn0aiGvUoZKXA6msPZZK90lc13Uvj5UMBnFdthJPSZuonSRKat3sUC7xWOsqWSdYJ+PlIFZPVZ5noAziFB5lSUQbRBuplyZJ4onjJ4kWZxAfJUkgJaMQp9LIUEI1GsRS1aFM6dCr1xNx00DKRqMedVhU90PFJ8c1p9SsA0YqVznCFevVRr4bpwMve5DEOsGzrYcxHnisfpQqkIqR6cg/dkpOlIaBVHHUoVbi6DCTX/eRTCrNQKaMYkWl7oG43f102xYxPXQ6vi5KlUaqurnOKJrt0fGogygP2cbppNzQ2fbw5RlTVKtdcbPtQGYNXErJbHSfRAAdJlLj6QFONZwCqRn1R8XZ588BEslclKo8VTKHegOZMzt7cTHtbiersnCknwcyb3Z2452HQ6dXh3/R+hdM4cxHj+Jifj5C+lBqfiJOJKVGWMzyp4YfcVcgQrkxiAsXyuBThDl0RdrZZl3jtTH2hs/5SqlhPQna6KP4fgr9TiQrHGdRo/VInM1j13Wt3GdQS7W7Fzsyr0OVIu7vCwuuM+eEYZ4WC1VfnvneBTT/Bohn/EDeNIVL+5YpSrRvm6JMu2iKCu0SVKVdNsUU7YoppmnPmmKG9h1TzNKeMzLj/8vc55H7HN7xkJv2XeSmfQ+5ad9HbtoPkJtWITdtHblpLyA3rUZu2lWjOnYEGgZpF1IVQdA0svph3Fab9UDWjDR8aWDyLmLI+upER521tcofxX914gsHcmmip7siF5viLq/bFj483e6rj5pG3bDV+MaR8jAeRnocmtBZ+c3hv+1N3S6a7jKqMugBFUwKwABl7UAC0zrbCaT1mqf48gdgXIZ4zkpDtVSfO4am7+V5X/exOfG+x+3GLrdcd3kJWdYNcmP28N9SZKrrH+UtrVQnR6wrJ49VaxhDKrwour6SlHu0tRu/KKmy8l6U1srnk5CbPYMbQlu27mGwI0xpyiUeXlOlKD3UUo6yQyxvKco84JSLC1qGxLgOdQ9qa8TpoXoYGwshhqG0vRBwSCldFd+0ynfxHqtr2Oj4xRXh6XpyEhGf4ir7UfBU10b96A7avGbdMoMpVaqn+4xPsa/b9lFZaaSOsxe3VAfXNOsaORXTT+Rr4HRvOGjdAz1UfDRBI1U1x+jGKGM0ljXl3wR0MVZ+w2jVYvs93E+dpFWsuUuY7JsT9+C0u/0q+7WcW0bW/dcGvW3kip8jMb8tCvw7B2K3ZA3UO5OBGAvIWdAYxhYmdxiug23EbfY/Jqf/34aFRXJXOxq7eerD1ZNRJXfZ8rjLTXZZ16M2R9VOGvsIjS0PN+bY4XIstsRgQbb+wf8x7gF3aVEC4NDIZZiI2nShnurh6h6rsW04VxIBds2x43QAegAuQd8cu9bzCYD13CPnLsB9cgh2yCH4lByCz8i5BfA5OQRfkEMwIIdgl5w7AA/IIXhIDsEeOQSPyNkE+JIcgq/IIYjJIUjIuQ3wmByCJ+QQfE0OwTdGrk5k/pYH2QD6zqKbQKmdGhzaOGRGrk3Y+zxY9oFFZB9aROqRkesT6lMeLPV7i0j9wSJSfzRyY0L9iQdL/dkiUn+xiNRnxpeZIymvDp7zjg7+BJfqrV4AAAAAAQAB//8AD3icY2BkAALmJUwzGEQZZBwk+RkZGBmdGJgYmbIYgMwsoGSiiLgIs5A2owg7I5uSOqOaiT2jmZE8I5gQY17C/09BQEfg3yt+fh8gvYQxD0j68DOJiQn8U+DnZxQDcQUEljLmCwBpBgbG/3//b2SOZ+Zm4GEQcuAH2sblDLSEm8FFVJhJEGgLH6OSHpMdo5EcI3Nk0bEXJ/LYqvZ82VXHGFd6pKTkyCsQwQAAq+QkqAAAeJxjYGRgYADiw5VSsfH8Nl8ZuJlfAEUYzpvO6IXQCb7///7fyLyEmRvI5WBgAokCAFb/DJAAAAB4nGNgZGBgDvqfxRDF/IKB4f935iUMQBEUwAwAi5YFpgPoAAAD6AAAA1kAAAAAAAAAOABbAAEAAAADABYAAQAAAAAAAgAGABMAbgAAAC0JkQAAAAB4nHWQy2rCQBSG//HSi0JbWui2sypKabxgN4IgWHTTbqS4LTHGJBIzMhkFX6Pv0IfpS/RZ+puMpShNmMx3vjlz5mQAXOMbAvnzxJGzwBmjnAs4Rc9ykf7Zcon8YrmMKt4sn9C/W67gAYHlKm7wwQqidM5ogU/LAlfi0nIBF+LOcpH+0XKJ3LNcxq14tXxC71muYCJSy1Xci6+BWm11FIRG1gZ12W62OnK6lYoqStxYumsTKp3KvpyrxPhxrBxPLfc89oN17Op9uJ8nvk4jlciW09yrkZ/42jX+bFc93QRtY+ZyrtVSDm2GXGm18D3jhMasuo3G3/MwgMIKW2hEvKoQBhI12jrnNppooUOaMkMyM8+KkMBFTONizR1htpIy7nPMGSW0PjNisgOP3+WRH5MC7o9ZRR+tHsYT0u6MKPOSfTns7jBrREqyTDezs9/eU2x4WpvWcNeuS511JTE8qCF5H7u1BY1H72S3Ymi7aPD95/9+AN1fhEsAeJxjYGKAAC4G7ICZgYGRiZGZMzkjNTk7N7Eomy05syg5J5WBAQBE1QZBAABLuADIUlixAQGOWbkIAAgAYyCwASNEsAMjcLIEKAlFUkSyCgIHKrEGAUSxJAGIUViwQIhYsQYDRLEmAYhRWLgEAIhYsQYBRFlZWVm4Af+FsASNsQUARAAA) format('woff')}.ui.ordered.steps .step.completed:before,.ui.steps .step.completed>.icon:before{font-family:Step;content:'\e800'}/*! -* # Semantic UI 2.4.0 - Breadcrumb -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.breadcrumb{line-height:1;display:inline-block;margin:0 0;vertical-align:middle}.ui.breadcrumb:first-child{margin-top:0}.ui.breadcrumb:last-child{margin-bottom:0}.ui.breadcrumb .divider{display:inline-block;opacity:.7;margin:0 .21428571rem 0;font-size:.92857143em;color:rgba(0,0,0,.4);vertical-align:baseline}.ui.breadcrumb a{color:#4183c4}.ui.breadcrumb a:hover{color:#1e70bf}.ui.breadcrumb .icon.divider{font-size:.85714286em;vertical-align:baseline}.ui.breadcrumb a.section{cursor:pointer}.ui.breadcrumb .section{display:inline-block;margin:0;padding:0}.ui.breadcrumb.segment{display:inline-block;padding:.78571429em 1em}.ui.breadcrumb .active.section{font-weight:700}.ui.mini.breadcrumb{font-size:.78571429rem}.ui.tiny.breadcrumb{font-size:.85714286rem}.ui.small.breadcrumb{font-size:.92857143rem}.ui.breadcrumb{font-size:1rem}.ui.large.breadcrumb{font-size:1.14285714rem}.ui.big.breadcrumb{font-size:1.28571429rem}.ui.huge.breadcrumb{font-size:1.42857143rem}.ui.massive.breadcrumb{font-size:1.71428571rem}/*! -* # Semantic UI 2.4.0 - Form -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.form{position:relative;max-width:100%}.ui.form>p{margin:1em 0}.ui.form .field{clear:both;margin:0 0 1em}.ui.form .field:last-child,.ui.form .fields:last-child .field{margin-bottom:0}.ui.form .fields .field{clear:both;margin:0}.ui.form .field>label{display:block;margin:0 0 .28571429rem 0;color:rgba(0,0,0,.87);font-size:.92857143em;font-weight:700;text-transform:none}.ui.form input:not([type]),.ui.form input[type=date],.ui.form input[type=datetime-local],.ui.form input[type=email],.ui.form input[type=file],.ui.form input[type=number],.ui.form input[type=password],.ui.form input[type=search],.ui.form input[type=tel],.ui.form input[type=text],.ui.form input[type=time],.ui.form input[type=url],.ui.form textarea{width:100%;vertical-align:top}.ui.form ::-webkit-datetime-edit,.ui.form ::-webkit-inner-spin-button{height:1.21428571em}.ui.form input:not([type]),.ui.form input[type=date],.ui.form input[type=datetime-local],.ui.form input[type=email],.ui.form input[type=file],.ui.form input[type=number],.ui.form input[type=password],.ui.form input[type=search],.ui.form input[type=tel],.ui.form input[type=text],.ui.form input[type=time],.ui.form input[type=url]{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;margin:0;outline:0;-webkit-appearance:none;tap-highlight-color:rgba(255,255,255,0);line-height:1.21428571em;padding:.67857143em 1em;font-size:1em;background:#fff;border:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87);border-radius:.28571429rem;-webkit-box-shadow:0 0 0 0 transparent inset;box-shadow:0 0 0 0 transparent inset;-webkit-transition:color .1s ease,border-color .1s ease;transition:color .1s ease,border-color .1s ease}.ui.form textarea{margin:0;-webkit-appearance:none;tap-highlight-color:rgba(255,255,255,0);padding:.78571429em 1em;background:#fff;border:1px solid rgba(34,36,38,.15);outline:0;color:rgba(0,0,0,.87);border-radius:.28571429rem;-webkit-box-shadow:0 0 0 0 transparent inset;box-shadow:0 0 0 0 transparent inset;-webkit-transition:color .1s ease,border-color .1s ease;transition:color .1s ease,border-color .1s ease;font-size:1em;line-height:1.2857;resize:vertical}.ui.form textarea:not([rows]){height:12em;min-height:8em;max-height:24em}.ui.form input[type=checkbox],.ui.form textarea{vertical-align:top}.ui.form input.attached{width:auto}.ui.form select{display:block;height:auto;width:100%;background:#fff;border:1px solid rgba(34,36,38,.15);border-radius:.28571429rem;-webkit-box-shadow:0 0 0 0 transparent inset;box-shadow:0 0 0 0 transparent inset;padding:.62em 1em;color:rgba(0,0,0,.87);-webkit-transition:color .1s ease,border-color .1s ease;transition:color .1s ease,border-color .1s ease}.ui.form .field>.selection.dropdown{width:100%}.ui.form .field>.selection.dropdown>.dropdown.icon{float:right}.ui.form .inline.field>.selection.dropdown,.ui.form .inline.fields .field>.selection.dropdown{width:auto}.ui.form .inline.field>.selection.dropdown>.dropdown.icon,.ui.form .inline.fields .field>.selection.dropdown>.dropdown.icon{float:none}.ui.form .field .ui.input,.ui.form .fields .field .ui.input,.ui.form .wide.field .ui.input{width:100%}.ui.form .inline.field:not(.wide) .ui.input,.ui.form .inline.fields .field:not(.wide) .ui.input{width:auto;vertical-align:middle}.ui.form .field .ui.input input,.ui.form .fields .field .ui.input input{width:auto}.ui.form .eight.fields .ui.input input,.ui.form .five.fields .ui.input input,.ui.form .four.fields .ui.input input,.ui.form .nine.fields .ui.input input,.ui.form .seven.fields .ui.input input,.ui.form .six.fields .ui.input input,.ui.form .ten.fields .ui.input input,.ui.form .three.fields .ui.input input,.ui.form .two.fields .ui.input input,.ui.form .wide.field .ui.input input{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;width:0}.ui.form .error.message,.ui.form .success.message,.ui.form .warning.message{display:none}.ui.form .message:first-child{margin-top:0}.ui.form .field .prompt.label{white-space:normal;background:#fff!important;border:1px solid #e0b4b4!important;color:#9f3a38!important}.ui.form .inline.field .prompt,.ui.form .inline.fields .field .prompt{vertical-align:top;margin:-.25em 0 -.5em .5em}.ui.form .inline.field .prompt:before,.ui.form .inline.fields .field .prompt:before{border-width:0 0 1px 1px;bottom:auto;right:auto;top:50%;left:0}.ui.form .field.field input:-webkit-autofill{-webkit-box-shadow:0 0 0 100px ivory inset!important;box-shadow:0 0 0 100px ivory inset!important;border-color:#e5dfa1!important}.ui.form .field.field input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 100px ivory inset!important;box-shadow:0 0 0 100px ivory inset!important;border-color:#d5c315!important}.ui.form .error.error input:-webkit-autofill{-webkit-box-shadow:0 0 0 100px #fffaf0 inset!important;box-shadow:0 0 0 100px #fffaf0 inset!important;border-color:#e0b4b4!important}.ui.form ::-webkit-input-placeholder{color:rgba(191,191,191,.87)}.ui.form :-ms-input-placeholder{color:rgba(191,191,191,.87)!important}.ui.form ::-moz-placeholder{color:rgba(191,191,191,.87)}.ui.form :focus::-webkit-input-placeholder{color:rgba(115,115,115,.87)}.ui.form :focus:-ms-input-placeholder{color:rgba(115,115,115,.87)!important}.ui.form :focus::-moz-placeholder{color:rgba(115,115,115,.87)}.ui.form .error ::-webkit-input-placeholder{color:#e7bdbc}.ui.form .error :-ms-input-placeholder{color:#e7bdbc!important}.ui.form .error ::-moz-placeholder{color:#e7bdbc}.ui.form .error :focus::-webkit-input-placeholder{color:#da9796}.ui.form .error :focus:-ms-input-placeholder{color:#da9796!important}.ui.form .error :focus::-moz-placeholder{color:#da9796}.ui.form input:not([type]):focus,.ui.form input[type=date]:focus,.ui.form input[type=datetime-local]:focus,.ui.form input[type=email]:focus,.ui.form input[type=file]:focus,.ui.form input[type=number]:focus,.ui.form input[type=password]:focus,.ui.form input[type=search]:focus,.ui.form input[type=tel]:focus,.ui.form input[type=text]:focus,.ui.form input[type=time]:focus,.ui.form input[type=url]:focus{color:rgba(0,0,0,.95);border-color:#85b7d9;border-radius:.28571429rem;background:#fff;-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.35) inset;box-shadow:0 0 0 0 rgba(34,36,38,.35) inset}.ui.form textarea:focus{color:rgba(0,0,0,.95);border-color:#85b7d9;border-radius:.28571429rem;background:#fff;-webkit-box-shadow:0 0 0 0 rgba(34,36,38,.35) inset;box-shadow:0 0 0 0 rgba(34,36,38,.35) inset;-webkit-appearance:none}.ui.form.success .success.message:not(:empty){display:block}.ui.form.success .compact.success.message:not(:empty){display:inline-block}.ui.form.success .icon.success.message:not(:empty){display:-webkit-box;display:-ms-flexbox;display:flex}.ui.form.warning .warning.message:not(:empty){display:block}.ui.form.warning .compact.warning.message:not(:empty){display:inline-block}.ui.form.warning .icon.warning.message:not(:empty){display:-webkit-box;display:-ms-flexbox;display:flex}.ui.form.error .error.message:not(:empty){display:block}.ui.form.error .compact.error.message:not(:empty){display:inline-block}.ui.form.error .icon.error.message:not(:empty){display:-webkit-box;display:-ms-flexbox;display:flex}.ui.form .field.error .input,.ui.form .field.error label,.ui.form .fields.error .field .input,.ui.form .fields.error .field label{color:#9f3a38}.ui.form .field.error .corner.label,.ui.form .fields.error .field .corner.label{border-color:#9f3a38;color:#fff}.ui.form .field.error input:not([type]),.ui.form .field.error input[type=date],.ui.form .field.error input[type=datetime-local],.ui.form .field.error input[type=email],.ui.form .field.error input[type=file],.ui.form .field.error input[type=number],.ui.form .field.error input[type=password],.ui.form .field.error input[type=search],.ui.form .field.error input[type=tel],.ui.form .field.error input[type=text],.ui.form .field.error input[type=time],.ui.form .field.error input[type=url],.ui.form .field.error select,.ui.form .field.error textarea,.ui.form .fields.error .field input:not([type]),.ui.form .fields.error .field input[type=date],.ui.form .fields.error .field input[type=datetime-local],.ui.form .fields.error .field input[type=email],.ui.form .fields.error .field input[type=file],.ui.form .fields.error .field input[type=number],.ui.form .fields.error .field input[type=password],.ui.form .fields.error .field input[type=search],.ui.form .fields.error .field input[type=tel],.ui.form .fields.error .field input[type=text],.ui.form .fields.error .field input[type=time],.ui.form .fields.error .field input[type=url],.ui.form .fields.error .field select,.ui.form .fields.error .field textarea{background:#fff6f6;border-color:#e0b4b4;color:#9f3a38;border-radius:'';-webkit-box-shadow:none;box-shadow:none}.ui.form .field.error input:not([type]):focus,.ui.form .field.error input[type=date]:focus,.ui.form .field.error input[type=datetime-local]:focus,.ui.form .field.error input[type=email]:focus,.ui.form .field.error input[type=file]:focus,.ui.form .field.error input[type=number]:focus,.ui.form .field.error input[type=password]:focus,.ui.form .field.error input[type=search]:focus,.ui.form .field.error input[type=tel]:focus,.ui.form .field.error input[type=text]:focus,.ui.form .field.error input[type=time]:focus,.ui.form .field.error input[type=url]:focus,.ui.form .field.error select:focus,.ui.form .field.error textarea:focus{background:#fff6f6;border-color:#e0b4b4;color:#9f3a38;-webkit-appearance:none;-webkit-box-shadow:none;box-shadow:none}.ui.form .field.error select{-webkit-appearance:menulist-button}.ui.form .field.error .ui.dropdown,.ui.form .field.error .ui.dropdown .item,.ui.form .field.error .ui.dropdown .text,.ui.form .fields.error .field .ui.dropdown,.ui.form .fields.error .field .ui.dropdown .item{background:#fff6f6;color:#9f3a38}.ui.form .field.error .ui.dropdown,.ui.form .fields.error .field .ui.dropdown{border-color:#e0b4b4!important}.ui.form .field.error .ui.dropdown:hover,.ui.form .fields.error .field .ui.dropdown:hover{border-color:#e0b4b4!important}.ui.form .field.error .ui.dropdown:hover .menu,.ui.form .fields.error .field .ui.dropdown:hover .menu{border-color:#e0b4b4}.ui.form .field.error .ui.multiple.selection.dropdown>.label,.ui.form .fields.error .field .ui.multiple.selection.dropdown>.label{background-color:#eacbcb;color:#9f3a38}.ui.form .field.error .ui.dropdown .menu .item:hover,.ui.form .fields.error .field .ui.dropdown .menu .item:hover{background-color:#fbe7e7}.ui.form .field.error .ui.dropdown .menu .selected.item,.ui.form .fields.error .field .ui.dropdown .menu .selected.item{background-color:#fbe7e7}.ui.form .field.error .ui.dropdown .menu .active.item,.ui.form .fields.error .field .ui.dropdown .menu .active.item{background-color:#fdcfcf!important}.ui.form .field.error .checkbox:not(.toggle):not(.slider) .box,.ui.form .field.error .checkbox:not(.toggle):not(.slider) label,.ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) .box,.ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) label{color:#9f3a38}.ui.form .field.error .checkbox:not(.toggle):not(.slider) .box:before,.ui.form .field.error .checkbox:not(.toggle):not(.slider) label:before,.ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) .box:before,.ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) label:before{background:#fff6f6;border-color:#e0b4b4}.ui.form .field.error .checkbox .box:after,.ui.form .field.error .checkbox label:after,.ui.form .fields.error .field .checkbox .box:after,.ui.form .fields.error .field .checkbox label:after{color:#9f3a38}.ui.form .disabled.field,.ui.form .disabled.fields .field,.ui.form .field :disabled{pointer-events:none;opacity:.45}.ui.form .field.disabled>label,.ui.form .fields.disabled>label{opacity:.45}.ui.form .field.disabled :disabled{opacity:1}.ui.loading.form{position:relative;cursor:default;pointer-events:none}.ui.loading.form:before{position:absolute;content:'';top:0;left:0;background:rgba(255,255,255,.8);width:100%;height:100%;z-index:100}.ui.loading.form:after{position:absolute;content:'';top:50%;left:50%;margin:-1.5em 0 0 -1.5em;width:3em;height:3em;-webkit-animation:form-spin .6s linear;animation:form-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.1);border-style:solid;border-width:.2em;-webkit-box-shadow:0 0 0 1px transparent;box-shadow:0 0 0 1px transparent;visibility:visible;z-index:101}@-webkit-keyframes form-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes form-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ui.form .required.field>.checkbox:after,.ui.form .required.field>label:after,.ui.form .required.fields.grouped>label:after,.ui.form .required.fields:not(.grouped)>.field>.checkbox:after,.ui.form .required.fields:not(.grouped)>.field>label:after{margin:-.2em 0 0 .2em;content:'*';color:#db2828}.ui.form .required.field>label:after,.ui.form .required.fields.grouped>label:after,.ui.form .required.fields:not(.grouped)>.field>label:after{display:inline-block;vertical-align:top}.ui.form .required.field>.checkbox:after,.ui.form .required.fields:not(.grouped)>.field>.checkbox:after{position:absolute;top:0;left:100%}.ui.form .inverted.segment .ui.checkbox .box,.ui.form .inverted.segment .ui.checkbox label,.ui.form .inverted.segment label,.ui.inverted.form .inline.field>label,.ui.inverted.form .inline.field>p,.ui.inverted.form .inline.fields .field>label,.ui.inverted.form .inline.fields .field>p,.ui.inverted.form .inline.fields>label,.ui.inverted.form .ui.checkbox .box,.ui.inverted.form .ui.checkbox label,.ui.inverted.form label{color:rgba(255,255,255,.9)}.ui.inverted.form input:not([type]),.ui.inverted.form input[type=date],.ui.inverted.form input[type=datetime-local],.ui.inverted.form input[type=email],.ui.inverted.form input[type=file],.ui.inverted.form input[type=number],.ui.inverted.form input[type=password],.ui.inverted.form input[type=search],.ui.inverted.form input[type=tel],.ui.inverted.form input[type=text],.ui.inverted.form input[type=time],.ui.inverted.form input[type=url]{background:#fff;border-color:rgba(255,255,255,.1);color:rgba(0,0,0,.87);-webkit-box-shadow:none;box-shadow:none}.ui.form .grouped.fields{display:block;margin:0 0 1em}.ui.form .grouped.fields:last-child{margin-bottom:0}.ui.form .grouped.fields>label{margin:0 0 .28571429rem 0;color:rgba(0,0,0,.87);font-size:.92857143em;font-weight:700;text-transform:none}.ui.form .grouped.fields .field,.ui.form .grouped.inline.fields .field{display:block;margin:.5em 0;padding:0}.ui.form .fields{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin:0 -.5em 1em}.ui.form .fields>.field{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;padding-left:.5em;padding-right:.5em}.ui.form .fields>.field:first-child{border-left:none;-webkit-box-shadow:none;box-shadow:none}.ui.form .two.fields>.field,.ui.form .two.fields>.fields{width:50%}.ui.form .three.fields>.field,.ui.form .three.fields>.fields{width:33.33333333%}.ui.form .four.fields>.field,.ui.form .four.fields>.fields{width:25%}.ui.form .five.fields>.field,.ui.form .five.fields>.fields{width:20%}.ui.form .six.fields>.field,.ui.form .six.fields>.fields{width:16.66666667%}.ui.form .seven.fields>.field,.ui.form .seven.fields>.fields{width:14.28571429%}.ui.form .eight.fields>.field,.ui.form .eight.fields>.fields{width:12.5%}.ui.form .nine.fields>.field,.ui.form .nine.fields>.fields{width:11.11111111%}.ui.form .ten.fields>.field,.ui.form .ten.fields>.fields{width:10%}@media only screen and (max-width:767px){.ui.form .fields{-ms-flex-wrap:wrap;flex-wrap:wrap}.ui.form:not(.unstackable) .eight.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .eight.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .five.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .five.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .four.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .four.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .nine.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .nine.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .seven.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .seven.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .six.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .six.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .ten.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .ten.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .three.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .three.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .two.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .two.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) [class*="equal width"].fields:not(.unstackable)>.field,.ui[class*="equal width"].form:not(.unstackable) .fields>.field{width:100%!important;margin:0 0 1em}}.ui.form .fields .wide.field{width:6.25%;padding-left:.5em;padding-right:.5em}.ui.form .one.wide.field{width:6.25%!important}.ui.form .two.wide.field{width:12.5%!important}.ui.form .three.wide.field{width:18.75%!important}.ui.form .four.wide.field{width:25%!important}.ui.form .five.wide.field{width:31.25%!important}.ui.form .six.wide.field{width:37.5%!important}.ui.form .seven.wide.field{width:43.75%!important}.ui.form .eight.wide.field{width:50%!important}.ui.form .nine.wide.field{width:56.25%!important}.ui.form .ten.wide.field{width:62.5%!important}.ui.form .eleven.wide.field{width:68.75%!important}.ui.form .twelve.wide.field{width:75%!important}.ui.form .thirteen.wide.field{width:81.25%!important}.ui.form .fourteen.wide.field{width:87.5%!important}.ui.form .fifteen.wide.field{width:93.75%!important}.ui.form .sixteen.wide.field{width:100%!important}@media only screen and (max-width:767px){.ui.form:not(.unstackable) .fields:not(.unstackable)>.eight.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.eleven.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.fifteen.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.five.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.four.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.fourteen.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.nine.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.seven.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.six.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.sixteen.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.ten.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.thirteen.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.three.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.twelve.wide.field,.ui.form:not(.unstackable) .fields:not(.unstackable)>.two.wide.field,.ui.form:not(.unstackable) .five.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .five.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .four.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .four.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .three.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .three.fields:not(.unstackable)>.fields,.ui.form:not(.unstackable) .two.fields:not(.unstackable)>.field,.ui.form:not(.unstackable) .two.fields:not(.unstackable)>.fields{width:100%!important}.ui.form .fields{margin-bottom:0}}.ui.form [class*="equal width"].fields>.field,.ui[class*="equal width"].form .fields>.field{width:100%;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.ui.form .inline.fields{margin:0 0 1em;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ui.form .inline.fields .field{margin:0;padding:0 1em 0 0}.ui.form .inline.field>label,.ui.form .inline.field>p,.ui.form .inline.fields .field>label,.ui.form .inline.fields .field>p,.ui.form .inline.fields>label{display:inline-block;width:auto;margin-top:0;margin-bottom:0;vertical-align:baseline;font-size:.92857143em;font-weight:700;color:rgba(0,0,0,.87);text-transform:none}.ui.form .inline.fields>label{margin:.035714em 1em 0 0}.ui.form .inline.field>input,.ui.form .inline.field>select,.ui.form .inline.fields .field>input,.ui.form .inline.fields .field>select{display:inline-block;width:auto;margin-top:0;margin-bottom:0;vertical-align:middle;font-size:1em}.ui.form .inline.field>:first-child,.ui.form .inline.fields .field>:first-child{margin:0 .85714286em 0 0}.ui.form .inline.field>:only-child,.ui.form .inline.fields .field>:only-child{margin:0}.ui.form .inline.fields .wide.field{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ui.form .inline.fields .wide.field>input,.ui.form .inline.fields .wide.field>select{width:100%}.ui.mini.form{font-size:.78571429rem}.ui.tiny.form{font-size:.85714286rem}.ui.small.form{font-size:.92857143rem}.ui.form{font-size:1rem}.ui.large.form{font-size:1.14285714rem}.ui.big.form{font-size:1.28571429rem}.ui.huge.form{font-size:1.42857143rem}.ui.massive.form{font-size:1.71428571rem}/*! -* # Semantic UI 2.4.0 - Grid -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;padding:0}.ui.grid{margin-top:-1rem;margin-bottom:-1rem;margin-left:-1rem;margin-right:-1rem}.ui.relaxed.grid{margin-left:-1.5rem;margin-right:-1.5rem}.ui[class*="very relaxed"].grid{margin-left:-2.5rem;margin-right:-2.5rem}.ui.grid+.grid{margin-top:1rem}.ui.grid>.column:not(.row),.ui.grid>.row>.column{position:relative;display:inline-block;width:6.25%;padding-left:1rem;padding-right:1rem;vertical-align:top}.ui.grid>*{padding-left:1rem;padding-right:1rem}.ui.grid>.row{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:inherit;-ms-flex-pack:inherit;justify-content:inherit;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%!important;padding:0;padding-top:1rem;padding-bottom:1rem}.ui.grid>.column:not(.row){padding-top:1rem;padding-bottom:1rem}.ui.grid>.row>.column{margin-top:0;margin-bottom:0}.ui.grid>.row>.column>img,.ui.grid>.row>img{max-width:100%}.ui.grid>.ui.grid:first-child{margin-top:0}.ui.grid>.ui.grid:last-child{margin-bottom:0}.ui.aligned.grid .column>.segment:not(.compact):not(.attached),.ui.grid .aligned.row>.column>.segment:not(.compact):not(.attached){width:100%}.ui.grid .row+.ui.divider{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin:1rem 1rem}.ui.grid .column+.ui.vertical.divider{height:calc(50% - 1rem)}.ui.grid>.column:last-child>.horizontal.segment,.ui.grid>.row>.column:last-child>.horizontal.segment{-webkit-box-shadow:none;box-shadow:none}@media only screen and (max-width:767px){.ui.page.grid{width:auto;padding-left:0;padding-right:0;margin-left:0;margin-right:0}}@media only screen and (min-width:768px) and (max-width:991px){.ui.page.grid{width:auto;margin-left:0;margin-right:0;padding-left:2em;padding-right:2em}}@media only screen and (min-width:992px) and (max-width:1199px){.ui.page.grid{width:auto;margin-left:0;margin-right:0;padding-left:3%;padding-right:3%}}@media only screen and (min-width:1200px) and (max-width:1919px){.ui.page.grid{width:auto;margin-left:0;margin-right:0;padding-left:15%;padding-right:15%}}@media only screen and (min-width:1920px){.ui.page.grid{width:auto;margin-left:0;margin-right:0;padding-left:23%;padding-right:23%}}.ui.grid>.column:only-child,.ui.grid>.row>.column:only-child{width:100%}.ui[class*="one column"].grid>.column:not(.row),.ui[class*="one column"].grid>.row>.column{width:100%}.ui[class*="two column"].grid>.column:not(.row),.ui[class*="two column"].grid>.row>.column{width:50%}.ui[class*="three column"].grid>.column:not(.row),.ui[class*="three column"].grid>.row>.column{width:33.33333333%}.ui[class*="four column"].grid>.column:not(.row),.ui[class*="four column"].grid>.row>.column{width:25%}.ui[class*="five column"].grid>.column:not(.row),.ui[class*="five column"].grid>.row>.column{width:20%}.ui[class*="six column"].grid>.column:not(.row),.ui[class*="six column"].grid>.row>.column{width:16.66666667%}.ui[class*="seven column"].grid>.column:not(.row),.ui[class*="seven column"].grid>.row>.column{width:14.28571429%}.ui[class*="eight column"].grid>.column:not(.row),.ui[class*="eight column"].grid>.row>.column{width:12.5%}.ui[class*="nine column"].grid>.column:not(.row),.ui[class*="nine column"].grid>.row>.column{width:11.11111111%}.ui[class*="ten column"].grid>.column:not(.row),.ui[class*="ten column"].grid>.row>.column{width:10%}.ui[class*="eleven column"].grid>.column:not(.row),.ui[class*="eleven column"].grid>.row>.column{width:9.09090909%}.ui[class*="twelve column"].grid>.column:not(.row),.ui[class*="twelve column"].grid>.row>.column{width:8.33333333%}.ui[class*="thirteen column"].grid>.column:not(.row),.ui[class*="thirteen column"].grid>.row>.column{width:7.69230769%}.ui[class*="fourteen column"].grid>.column:not(.row),.ui[class*="fourteen column"].grid>.row>.column{width:7.14285714%}.ui[class*="fifteen column"].grid>.column:not(.row),.ui[class*="fifteen column"].grid>.row>.column{width:6.66666667%}.ui[class*="sixteen column"].grid>.column:not(.row),.ui[class*="sixteen column"].grid>.row>.column{width:6.25%}.ui.grid>[class*="one column"].row>.column{width:100%!important}.ui.grid>[class*="two column"].row>.column{width:50%!important}.ui.grid>[class*="three column"].row>.column{width:33.33333333%!important}.ui.grid>[class*="four column"].row>.column{width:25%!important}.ui.grid>[class*="five column"].row>.column{width:20%!important}.ui.grid>[class*="six column"].row>.column{width:16.66666667%!important}.ui.grid>[class*="seven column"].row>.column{width:14.28571429%!important}.ui.grid>[class*="eight column"].row>.column{width:12.5%!important}.ui.grid>[class*="nine column"].row>.column{width:11.11111111%!important}.ui.grid>[class*="ten column"].row>.column{width:10%!important}.ui.grid>[class*="eleven column"].row>.column{width:9.09090909%!important}.ui.grid>[class*="twelve column"].row>.column{width:8.33333333%!important}.ui.grid>[class*="thirteen column"].row>.column{width:7.69230769%!important}.ui.grid>[class*="fourteen column"].row>.column{width:7.14285714%!important}.ui.grid>[class*="fifteen column"].row>.column{width:6.66666667%!important}.ui.grid>[class*="sixteen column"].row>.column{width:6.25%!important}.ui.celled.page.grid{-webkit-box-shadow:none;box-shadow:none}.ui.column.grid>[class*="one wide"].column,.ui.grid>.column.row>[class*="one wide"].column,.ui.grid>.row>[class*="one wide"].column,.ui.grid>[class*="one wide"].column{width:6.25%!important}.ui.column.grid>[class*="two wide"].column,.ui.grid>.column.row>[class*="two wide"].column,.ui.grid>.row>[class*="two wide"].column,.ui.grid>[class*="two wide"].column{width:12.5%!important}.ui.column.grid>[class*="three wide"].column,.ui.grid>.column.row>[class*="three wide"].column,.ui.grid>.row>[class*="three wide"].column,.ui.grid>[class*="three wide"].column{width:18.75%!important}.ui.column.grid>[class*="four wide"].column,.ui.grid>.column.row>[class*="four wide"].column,.ui.grid>.row>[class*="four wide"].column,.ui.grid>[class*="four wide"].column{width:25%!important}.ui.column.grid>[class*="five wide"].column,.ui.grid>.column.row>[class*="five wide"].column,.ui.grid>.row>[class*="five wide"].column,.ui.grid>[class*="five wide"].column{width:31.25%!important}.ui.column.grid>[class*="six wide"].column,.ui.grid>.column.row>[class*="six wide"].column,.ui.grid>.row>[class*="six wide"].column,.ui.grid>[class*="six wide"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide"].column,.ui.grid>.column.row>[class*="seven wide"].column,.ui.grid>.row>[class*="seven wide"].column,.ui.grid>[class*="seven wide"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide"].column,.ui.grid>.column.row>[class*="eight wide"].column,.ui.grid>.row>[class*="eight wide"].column,.ui.grid>[class*="eight wide"].column{width:50%!important}.ui.column.grid>[class*="nine wide"].column,.ui.grid>.column.row>[class*="nine wide"].column,.ui.grid>.row>[class*="nine wide"].column,.ui.grid>[class*="nine wide"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide"].column,.ui.grid>.column.row>[class*="ten wide"].column,.ui.grid>.row>[class*="ten wide"].column,.ui.grid>[class*="ten wide"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide"].column,.ui.grid>.column.row>[class*="eleven wide"].column,.ui.grid>.row>[class*="eleven wide"].column,.ui.grid>[class*="eleven wide"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide"].column,.ui.grid>.column.row>[class*="twelve wide"].column,.ui.grid>.row>[class*="twelve wide"].column,.ui.grid>[class*="twelve wide"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide"].column,.ui.grid>.column.row>[class*="thirteen wide"].column,.ui.grid>.row>[class*="thirteen wide"].column,.ui.grid>[class*="thirteen wide"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide"].column,.ui.grid>.column.row>[class*="fourteen wide"].column,.ui.grid>.row>[class*="fourteen wide"].column,.ui.grid>[class*="fourteen wide"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide"].column,.ui.grid>.column.row>[class*="fifteen wide"].column,.ui.grid>.row>[class*="fifteen wide"].column,.ui.grid>[class*="fifteen wide"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide"].column,.ui.grid>.column.row>[class*="sixteen wide"].column,.ui.grid>.row>[class*="sixteen wide"].column,.ui.grid>[class*="sixteen wide"].column{width:100%!important}@media only screen and (min-width:320px) and (max-width:767px){.ui.column.grid>[class*="one wide mobile"].column,.ui.grid>.column.row>[class*="one wide mobile"].column,.ui.grid>.row>[class*="one wide mobile"].column,.ui.grid>[class*="one wide mobile"].column{width:6.25%!important}.ui.column.grid>[class*="two wide mobile"].column,.ui.grid>.column.row>[class*="two wide mobile"].column,.ui.grid>.row>[class*="two wide mobile"].column,.ui.grid>[class*="two wide mobile"].column{width:12.5%!important}.ui.column.grid>[class*="three wide mobile"].column,.ui.grid>.column.row>[class*="three wide mobile"].column,.ui.grid>.row>[class*="three wide mobile"].column,.ui.grid>[class*="three wide mobile"].column{width:18.75%!important}.ui.column.grid>[class*="four wide mobile"].column,.ui.grid>.column.row>[class*="four wide mobile"].column,.ui.grid>.row>[class*="four wide mobile"].column,.ui.grid>[class*="four wide mobile"].column{width:25%!important}.ui.column.grid>[class*="five wide mobile"].column,.ui.grid>.column.row>[class*="five wide mobile"].column,.ui.grid>.row>[class*="five wide mobile"].column,.ui.grid>[class*="five wide mobile"].column{width:31.25%!important}.ui.column.grid>[class*="six wide mobile"].column,.ui.grid>.column.row>[class*="six wide mobile"].column,.ui.grid>.row>[class*="six wide mobile"].column,.ui.grid>[class*="six wide mobile"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide mobile"].column,.ui.grid>.column.row>[class*="seven wide mobile"].column,.ui.grid>.row>[class*="seven wide mobile"].column,.ui.grid>[class*="seven wide mobile"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide mobile"].column,.ui.grid>.column.row>[class*="eight wide mobile"].column,.ui.grid>.row>[class*="eight wide mobile"].column,.ui.grid>[class*="eight wide mobile"].column{width:50%!important}.ui.column.grid>[class*="nine wide mobile"].column,.ui.grid>.column.row>[class*="nine wide mobile"].column,.ui.grid>.row>[class*="nine wide mobile"].column,.ui.grid>[class*="nine wide mobile"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide mobile"].column,.ui.grid>.column.row>[class*="ten wide mobile"].column,.ui.grid>.row>[class*="ten wide mobile"].column,.ui.grid>[class*="ten wide mobile"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide mobile"].column,.ui.grid>.column.row>[class*="eleven wide mobile"].column,.ui.grid>.row>[class*="eleven wide mobile"].column,.ui.grid>[class*="eleven wide mobile"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide mobile"].column,.ui.grid>.column.row>[class*="twelve wide mobile"].column,.ui.grid>.row>[class*="twelve wide mobile"].column,.ui.grid>[class*="twelve wide mobile"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide mobile"].column,.ui.grid>.column.row>[class*="thirteen wide mobile"].column,.ui.grid>.row>[class*="thirteen wide mobile"].column,.ui.grid>[class*="thirteen wide mobile"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide mobile"].column,.ui.grid>.column.row>[class*="fourteen wide mobile"].column,.ui.grid>.row>[class*="fourteen wide mobile"].column,.ui.grid>[class*="fourteen wide mobile"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide mobile"].column,.ui.grid>.column.row>[class*="fifteen wide mobile"].column,.ui.grid>.row>[class*="fifteen wide mobile"].column,.ui.grid>[class*="fifteen wide mobile"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide mobile"].column,.ui.grid>.column.row>[class*="sixteen wide mobile"].column,.ui.grid>.row>[class*="sixteen wide mobile"].column,.ui.grid>[class*="sixteen wide mobile"].column{width:100%!important}}@media only screen and (min-width:768px) and (max-width:991px){.ui.column.grid>[class*="one wide tablet"].column,.ui.grid>.column.row>[class*="one wide tablet"].column,.ui.grid>.row>[class*="one wide tablet"].column,.ui.grid>[class*="one wide tablet"].column{width:6.25%!important}.ui.column.grid>[class*="two wide tablet"].column,.ui.grid>.column.row>[class*="two wide tablet"].column,.ui.grid>.row>[class*="two wide tablet"].column,.ui.grid>[class*="two wide tablet"].column{width:12.5%!important}.ui.column.grid>[class*="three wide tablet"].column,.ui.grid>.column.row>[class*="three wide tablet"].column,.ui.grid>.row>[class*="three wide tablet"].column,.ui.grid>[class*="three wide tablet"].column{width:18.75%!important}.ui.column.grid>[class*="four wide tablet"].column,.ui.grid>.column.row>[class*="four wide tablet"].column,.ui.grid>.row>[class*="four wide tablet"].column,.ui.grid>[class*="four wide tablet"].column{width:25%!important}.ui.column.grid>[class*="five wide tablet"].column,.ui.grid>.column.row>[class*="five wide tablet"].column,.ui.grid>.row>[class*="five wide tablet"].column,.ui.grid>[class*="five wide tablet"].column{width:31.25%!important}.ui.column.grid>[class*="six wide tablet"].column,.ui.grid>.column.row>[class*="six wide tablet"].column,.ui.grid>.row>[class*="six wide tablet"].column,.ui.grid>[class*="six wide tablet"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide tablet"].column,.ui.grid>.column.row>[class*="seven wide tablet"].column,.ui.grid>.row>[class*="seven wide tablet"].column,.ui.grid>[class*="seven wide tablet"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide tablet"].column,.ui.grid>.column.row>[class*="eight wide tablet"].column,.ui.grid>.row>[class*="eight wide tablet"].column,.ui.grid>[class*="eight wide tablet"].column{width:50%!important}.ui.column.grid>[class*="nine wide tablet"].column,.ui.grid>.column.row>[class*="nine wide tablet"].column,.ui.grid>.row>[class*="nine wide tablet"].column,.ui.grid>[class*="nine wide tablet"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide tablet"].column,.ui.grid>.column.row>[class*="ten wide tablet"].column,.ui.grid>.row>[class*="ten wide tablet"].column,.ui.grid>[class*="ten wide tablet"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide tablet"].column,.ui.grid>.column.row>[class*="eleven wide tablet"].column,.ui.grid>.row>[class*="eleven wide tablet"].column,.ui.grid>[class*="eleven wide tablet"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide tablet"].column,.ui.grid>.column.row>[class*="twelve wide tablet"].column,.ui.grid>.row>[class*="twelve wide tablet"].column,.ui.grid>[class*="twelve wide tablet"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide tablet"].column,.ui.grid>.column.row>[class*="thirteen wide tablet"].column,.ui.grid>.row>[class*="thirteen wide tablet"].column,.ui.grid>[class*="thirteen wide tablet"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide tablet"].column,.ui.grid>.column.row>[class*="fourteen wide tablet"].column,.ui.grid>.row>[class*="fourteen wide tablet"].column,.ui.grid>[class*="fourteen wide tablet"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide tablet"].column,.ui.grid>.column.row>[class*="fifteen wide tablet"].column,.ui.grid>.row>[class*="fifteen wide tablet"].column,.ui.grid>[class*="fifteen wide tablet"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide tablet"].column,.ui.grid>.column.row>[class*="sixteen wide tablet"].column,.ui.grid>.row>[class*="sixteen wide tablet"].column,.ui.grid>[class*="sixteen wide tablet"].column{width:100%!important}}@media only screen and (min-width:992px){.ui.column.grid>[class*="one wide computer"].column,.ui.grid>.column.row>[class*="one wide computer"].column,.ui.grid>.row>[class*="one wide computer"].column,.ui.grid>[class*="one wide computer"].column{width:6.25%!important}.ui.column.grid>[class*="two wide computer"].column,.ui.grid>.column.row>[class*="two wide computer"].column,.ui.grid>.row>[class*="two wide computer"].column,.ui.grid>[class*="two wide computer"].column{width:12.5%!important}.ui.column.grid>[class*="three wide computer"].column,.ui.grid>.column.row>[class*="three wide computer"].column,.ui.grid>.row>[class*="three wide computer"].column,.ui.grid>[class*="three wide computer"].column{width:18.75%!important}.ui.column.grid>[class*="four wide computer"].column,.ui.grid>.column.row>[class*="four wide computer"].column,.ui.grid>.row>[class*="four wide computer"].column,.ui.grid>[class*="four wide computer"].column{width:25%!important}.ui.column.grid>[class*="five wide computer"].column,.ui.grid>.column.row>[class*="five wide computer"].column,.ui.grid>.row>[class*="five wide computer"].column,.ui.grid>[class*="five wide computer"].column{width:31.25%!important}.ui.column.grid>[class*="six wide computer"].column,.ui.grid>.column.row>[class*="six wide computer"].column,.ui.grid>.row>[class*="six wide computer"].column,.ui.grid>[class*="six wide computer"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide computer"].column,.ui.grid>.column.row>[class*="seven wide computer"].column,.ui.grid>.row>[class*="seven wide computer"].column,.ui.grid>[class*="seven wide computer"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide computer"].column,.ui.grid>.column.row>[class*="eight wide computer"].column,.ui.grid>.row>[class*="eight wide computer"].column,.ui.grid>[class*="eight wide computer"].column{width:50%!important}.ui.column.grid>[class*="nine wide computer"].column,.ui.grid>.column.row>[class*="nine wide computer"].column,.ui.grid>.row>[class*="nine wide computer"].column,.ui.grid>[class*="nine wide computer"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide computer"].column,.ui.grid>.column.row>[class*="ten wide computer"].column,.ui.grid>.row>[class*="ten wide computer"].column,.ui.grid>[class*="ten wide computer"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide computer"].column,.ui.grid>.column.row>[class*="eleven wide computer"].column,.ui.grid>.row>[class*="eleven wide computer"].column,.ui.grid>[class*="eleven wide computer"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide computer"].column,.ui.grid>.column.row>[class*="twelve wide computer"].column,.ui.grid>.row>[class*="twelve wide computer"].column,.ui.grid>[class*="twelve wide computer"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide computer"].column,.ui.grid>.column.row>[class*="thirteen wide computer"].column,.ui.grid>.row>[class*="thirteen wide computer"].column,.ui.grid>[class*="thirteen wide computer"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide computer"].column,.ui.grid>.column.row>[class*="fourteen wide computer"].column,.ui.grid>.row>[class*="fourteen wide computer"].column,.ui.grid>[class*="fourteen wide computer"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide computer"].column,.ui.grid>.column.row>[class*="fifteen wide computer"].column,.ui.grid>.row>[class*="fifteen wide computer"].column,.ui.grid>[class*="fifteen wide computer"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide computer"].column,.ui.grid>.column.row>[class*="sixteen wide computer"].column,.ui.grid>.row>[class*="sixteen wide computer"].column,.ui.grid>[class*="sixteen wide computer"].column{width:100%!important}}@media only screen and (min-width:1200px) and (max-width:1919px){.ui.column.grid>[class*="one wide large screen"].column,.ui.grid>.column.row>[class*="one wide large screen"].column,.ui.grid>.row>[class*="one wide large screen"].column,.ui.grid>[class*="one wide large screen"].column{width:6.25%!important}.ui.column.grid>[class*="two wide large screen"].column,.ui.grid>.column.row>[class*="two wide large screen"].column,.ui.grid>.row>[class*="two wide large screen"].column,.ui.grid>[class*="two wide large screen"].column{width:12.5%!important}.ui.column.grid>[class*="three wide large screen"].column,.ui.grid>.column.row>[class*="three wide large screen"].column,.ui.grid>.row>[class*="three wide large screen"].column,.ui.grid>[class*="three wide large screen"].column{width:18.75%!important}.ui.column.grid>[class*="four wide large screen"].column,.ui.grid>.column.row>[class*="four wide large screen"].column,.ui.grid>.row>[class*="four wide large screen"].column,.ui.grid>[class*="four wide large screen"].column{width:25%!important}.ui.column.grid>[class*="five wide large screen"].column,.ui.grid>.column.row>[class*="five wide large screen"].column,.ui.grid>.row>[class*="five wide large screen"].column,.ui.grid>[class*="five wide large screen"].column{width:31.25%!important}.ui.column.grid>[class*="six wide large screen"].column,.ui.grid>.column.row>[class*="six wide large screen"].column,.ui.grid>.row>[class*="six wide large screen"].column,.ui.grid>[class*="six wide large screen"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide large screen"].column,.ui.grid>.column.row>[class*="seven wide large screen"].column,.ui.grid>.row>[class*="seven wide large screen"].column,.ui.grid>[class*="seven wide large screen"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide large screen"].column,.ui.grid>.column.row>[class*="eight wide large screen"].column,.ui.grid>.row>[class*="eight wide large screen"].column,.ui.grid>[class*="eight wide large screen"].column{width:50%!important}.ui.column.grid>[class*="nine wide large screen"].column,.ui.grid>.column.row>[class*="nine wide large screen"].column,.ui.grid>.row>[class*="nine wide large screen"].column,.ui.grid>[class*="nine wide large screen"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide large screen"].column,.ui.grid>.column.row>[class*="ten wide large screen"].column,.ui.grid>.row>[class*="ten wide large screen"].column,.ui.grid>[class*="ten wide large screen"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide large screen"].column,.ui.grid>.column.row>[class*="eleven wide large screen"].column,.ui.grid>.row>[class*="eleven wide large screen"].column,.ui.grid>[class*="eleven wide large screen"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide large screen"].column,.ui.grid>.column.row>[class*="twelve wide large screen"].column,.ui.grid>.row>[class*="twelve wide large screen"].column,.ui.grid>[class*="twelve wide large screen"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide large screen"].column,.ui.grid>.column.row>[class*="thirteen wide large screen"].column,.ui.grid>.row>[class*="thirteen wide large screen"].column,.ui.grid>[class*="thirteen wide large screen"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide large screen"].column,.ui.grid>.column.row>[class*="fourteen wide large screen"].column,.ui.grid>.row>[class*="fourteen wide large screen"].column,.ui.grid>[class*="fourteen wide large screen"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide large screen"].column,.ui.grid>.column.row>[class*="fifteen wide large screen"].column,.ui.grid>.row>[class*="fifteen wide large screen"].column,.ui.grid>[class*="fifteen wide large screen"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide large screen"].column,.ui.grid>.column.row>[class*="sixteen wide large screen"].column,.ui.grid>.row>[class*="sixteen wide large screen"].column,.ui.grid>[class*="sixteen wide large screen"].column{width:100%!important}}@media only screen and (min-width:1920px){.ui.column.grid>[class*="one wide widescreen"].column,.ui.grid>.column.row>[class*="one wide widescreen"].column,.ui.grid>.row>[class*="one wide widescreen"].column,.ui.grid>[class*="one wide widescreen"].column{width:6.25%!important}.ui.column.grid>[class*="two wide widescreen"].column,.ui.grid>.column.row>[class*="two wide widescreen"].column,.ui.grid>.row>[class*="two wide widescreen"].column,.ui.grid>[class*="two wide widescreen"].column{width:12.5%!important}.ui.column.grid>[class*="three wide widescreen"].column,.ui.grid>.column.row>[class*="three wide widescreen"].column,.ui.grid>.row>[class*="three wide widescreen"].column,.ui.grid>[class*="three wide widescreen"].column{width:18.75%!important}.ui.column.grid>[class*="four wide widescreen"].column,.ui.grid>.column.row>[class*="four wide widescreen"].column,.ui.grid>.row>[class*="four wide widescreen"].column,.ui.grid>[class*="four wide widescreen"].column{width:25%!important}.ui.column.grid>[class*="five wide widescreen"].column,.ui.grid>.column.row>[class*="five wide widescreen"].column,.ui.grid>.row>[class*="five wide widescreen"].column,.ui.grid>[class*="five wide widescreen"].column{width:31.25%!important}.ui.column.grid>[class*="six wide widescreen"].column,.ui.grid>.column.row>[class*="six wide widescreen"].column,.ui.grid>.row>[class*="six wide widescreen"].column,.ui.grid>[class*="six wide widescreen"].column{width:37.5%!important}.ui.column.grid>[class*="seven wide widescreen"].column,.ui.grid>.column.row>[class*="seven wide widescreen"].column,.ui.grid>.row>[class*="seven wide widescreen"].column,.ui.grid>[class*="seven wide widescreen"].column{width:43.75%!important}.ui.column.grid>[class*="eight wide widescreen"].column,.ui.grid>.column.row>[class*="eight wide widescreen"].column,.ui.grid>.row>[class*="eight wide widescreen"].column,.ui.grid>[class*="eight wide widescreen"].column{width:50%!important}.ui.column.grid>[class*="nine wide widescreen"].column,.ui.grid>.column.row>[class*="nine wide widescreen"].column,.ui.grid>.row>[class*="nine wide widescreen"].column,.ui.grid>[class*="nine wide widescreen"].column{width:56.25%!important}.ui.column.grid>[class*="ten wide widescreen"].column,.ui.grid>.column.row>[class*="ten wide widescreen"].column,.ui.grid>.row>[class*="ten wide widescreen"].column,.ui.grid>[class*="ten wide widescreen"].column{width:62.5%!important}.ui.column.grid>[class*="eleven wide widescreen"].column,.ui.grid>.column.row>[class*="eleven wide widescreen"].column,.ui.grid>.row>[class*="eleven wide widescreen"].column,.ui.grid>[class*="eleven wide widescreen"].column{width:68.75%!important}.ui.column.grid>[class*="twelve wide widescreen"].column,.ui.grid>.column.row>[class*="twelve wide widescreen"].column,.ui.grid>.row>[class*="twelve wide widescreen"].column,.ui.grid>[class*="twelve wide widescreen"].column{width:75%!important}.ui.column.grid>[class*="thirteen wide widescreen"].column,.ui.grid>.column.row>[class*="thirteen wide widescreen"].column,.ui.grid>.row>[class*="thirteen wide widescreen"].column,.ui.grid>[class*="thirteen wide widescreen"].column{width:81.25%!important}.ui.column.grid>[class*="fourteen wide widescreen"].column,.ui.grid>.column.row>[class*="fourteen wide widescreen"].column,.ui.grid>.row>[class*="fourteen wide widescreen"].column,.ui.grid>[class*="fourteen wide widescreen"].column{width:87.5%!important}.ui.column.grid>[class*="fifteen wide widescreen"].column,.ui.grid>.column.row>[class*="fifteen wide widescreen"].column,.ui.grid>.row>[class*="fifteen wide widescreen"].column,.ui.grid>[class*="fifteen wide widescreen"].column{width:93.75%!important}.ui.column.grid>[class*="sixteen wide widescreen"].column,.ui.grid>.column.row>[class*="sixteen wide widescreen"].column,.ui.grid>.row>[class*="sixteen wide widescreen"].column,.ui.grid>[class*="sixteen wide widescreen"].column{width:100%!important}}.ui.centered.grid,.ui.centered.grid>.row,.ui.grid>.centered.row{text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.ui.centered.grid>.column:not(.aligned):not(.justified):not(.row),.ui.centered.grid>.row>.column:not(.aligned):not(.justified),.ui.grid .centered.row>.column:not(.aligned):not(.justified){text-align:left}.ui.grid>.centered.column,.ui.grid>.row>.centered.column{display:block;margin-left:auto;margin-right:auto}.ui.grid>.relaxed.row>.column,.ui.relaxed.grid>.column:not(.row),.ui.relaxed.grid>.row>.column{padding-left:1.5rem;padding-right:1.5rem}.ui.grid>[class*="very relaxed"].row>.column,.ui[class*="very relaxed"].grid>.column:not(.row),.ui[class*="very relaxed"].grid>.row>.column{padding-left:2.5rem;padding-right:2.5rem}.ui.grid .relaxed.row+.ui.divider,.ui.relaxed.grid .row+.ui.divider{margin-left:1.5rem;margin-right:1.5rem}.ui.grid [class*="very relaxed"].row+.ui.divider,.ui[class*="very relaxed"].grid .row+.ui.divider{margin-left:2.5rem;margin-right:2.5rem}.ui.padded.grid:not(.vertically):not(.horizontally){margin:0!important}[class*="horizontally padded"].ui.grid{margin-left:0!important;margin-right:0!important}[class*="vertically padded"].ui.grid{margin-top:0!important;margin-bottom:0!important}.ui.grid [class*="left floated"].column{margin-right:auto}.ui.grid [class*="right floated"].column{margin-left:auto}.ui.divided.grid:not([class*="vertically divided"])>.column:not(.row),.ui.divided.grid:not([class*="vertically divided"])>.row>.column{-webkit-box-shadow:-1px 0 0 0 rgba(34,36,38,.15);box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui[class*="vertically divided"].grid>.column:not(.row),.ui[class*="vertically divided"].grid>.row>.column{margin-top:1rem;margin-bottom:1rem;padding-top:0;padding-bottom:0}.ui[class*="vertically divided"].grid>.row{margin-top:0;margin-bottom:0}.ui.divided.grid:not([class*="vertically divided"])>.column:first-child,.ui.divided.grid:not([class*="vertically divided"])>.row>.column:first-child{-webkit-box-shadow:none;box-shadow:none}.ui[class*="vertically divided"].grid>.row:first-child>.column{margin-top:0}.ui.grid>.divided.row>.column{-webkit-box-shadow:-1px 0 0 0 rgba(34,36,38,.15);box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui.grid>.divided.row>.column:first-child{-webkit-box-shadow:none;box-shadow:none}.ui[class*="vertically divided"].grid>.row{position:relative}.ui[class*="vertically divided"].grid>.row:before{position:absolute;content:"";top:0;left:0;width:calc(100% - 2rem);height:1px;margin:0 1rem;-webkit-box-shadow:0 -1px 0 0 rgba(34,36,38,.15);box-shadow:0 -1px 0 0 rgba(34,36,38,.15)}.ui.padded.divided.grid:not(.vertically):not(.horizontally),[class*="horizontally padded"].ui.divided.grid{width:100%}.ui[class*="vertically divided"].grid>.row:first-child:before{-webkit-box-shadow:none;box-shadow:none}.ui.inverted.divided.grid:not([class*="vertically divided"])>.column:not(.row),.ui.inverted.divided.grid:not([class*="vertically divided"])>.row>.column{-webkit-box-shadow:-1px 0 0 0 rgba(255,255,255,.1);box-shadow:-1px 0 0 0 rgba(255,255,255,.1)}.ui.inverted.divided.grid:not([class*="vertically divided"])>.column:not(.row):first-child,.ui.inverted.divided.grid:not([class*="vertically divided"])>.row>.column:first-child{-webkit-box-shadow:none;box-shadow:none}.ui.inverted[class*="vertically divided"].grid>.row:before{-webkit-box-shadow:0 -1px 0 0 rgba(255,255,255,.1);box-shadow:0 -1px 0 0 rgba(255,255,255,.1)}.ui.relaxed[class*="vertically divided"].grid>.row:before{margin-left:1.5rem;margin-right:1.5rem;width:calc(100% - 3rem)}.ui[class*="very relaxed"][class*="vertically divided"].grid>.row:before{margin-left:5rem;margin-right:5rem;width:calc(100% - 5rem)}.ui.celled.grid{width:100%;margin:1em 0;-webkit-box-shadow:0 0 0 1px #d4d4d5;box-shadow:0 0 0 1px #d4d4d5}.ui.celled.grid>.row{width:100%!important;margin:0;padding:0;-webkit-box-shadow:0 -1px 0 0 #d4d4d5;box-shadow:0 -1px 0 0 #d4d4d5}.ui.celled.grid>.column:not(.row),.ui.celled.grid>.row>.column{-webkit-box-shadow:-1px 0 0 0 #d4d4d5;box-shadow:-1px 0 0 0 #d4d4d5}.ui.celled.grid>.column:first-child,.ui.celled.grid>.row>.column:first-child{-webkit-box-shadow:none;box-shadow:none}.ui.celled.grid>.column:not(.row),.ui.celled.grid>.row>.column{padding:1em}.ui.relaxed.celled.grid>.column:not(.row),.ui.relaxed.celled.grid>.row>.column{padding:1.5em}.ui[class*="very relaxed"].celled.grid>.column:not(.row),.ui[class*="very relaxed"].celled.grid>.row>.column{padding:2em}.ui[class*="internally celled"].grid{-webkit-box-shadow:none;box-shadow:none;margin:0}.ui[class*="internally celled"].grid>.row:first-child{-webkit-box-shadow:none;box-shadow:none}.ui[class*="internally celled"].grid>.row>.column:first-child{-webkit-box-shadow:none;box-shadow:none}.ui.grid>.row>[class*="top aligned"].column,.ui.grid>[class*="top aligned"].column:not(.row),.ui.grid>[class*="top aligned"].row>.column,.ui[class*="top aligned"].grid>.column:not(.row),.ui[class*="top aligned"].grid>.row>.column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;vertical-align:top;-ms-flex-item-align:start!important;align-self:flex-start!important}.ui.grid>.row>[class*="middle aligned"].column,.ui.grid>[class*="middle aligned"].column:not(.row),.ui.grid>[class*="middle aligned"].row>.column,.ui[class*="middle aligned"].grid>.column:not(.row),.ui[class*="middle aligned"].grid>.row>.column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;vertical-align:middle;-ms-flex-item-align:center!important;align-self:center!important}.ui.grid>.row>[class*="bottom aligned"].column,.ui.grid>[class*="bottom aligned"].column:not(.row),.ui.grid>[class*="bottom aligned"].row>.column,.ui[class*="bottom aligned"].grid>.column:not(.row),.ui[class*="bottom aligned"].grid>.row>.column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;vertical-align:bottom;-ms-flex-item-align:end!important;align-self:flex-end!important}.ui.grid>.row>.stretched.column,.ui.grid>.stretched.column:not(.row),.ui.grid>.stretched.row>.column,.ui.stretched.grid>.column,.ui.stretched.grid>.row>.column{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ui.grid>.row>.stretched.column>*,.ui.grid>.stretched.column:not(.row)>*,.ui.grid>.stretched.row>.column>*,.ui.stretched.grid>.column>*,.ui.stretched.grid>.row>.column>*{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.ui.grid>.row>[class*="left aligned"].column.column,.ui.grid>[class*="left aligned"].column.column,.ui.grid>[class*="left aligned"].row>.column,.ui[class*="left aligned"].grid>.column,.ui[class*="left aligned"].grid>.row>.column{text-align:left;-ms-flex-item-align:inherit;align-self:inherit}.ui.grid>.row>[class*="center aligned"].column.column,.ui.grid>[class*="center aligned"].column.column,.ui.grid>[class*="center aligned"].row>.column,.ui[class*="center aligned"].grid>.column,.ui[class*="center aligned"].grid>.row>.column{text-align:center;-ms-flex-item-align:inherit;align-self:inherit}.ui[class*="center aligned"].grid{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.ui.grid>.row>[class*="right aligned"].column.column,.ui.grid>[class*="right aligned"].column.column,.ui.grid>[class*="right aligned"].row>.column,.ui[class*="right aligned"].grid>.column,.ui[class*="right aligned"].grid>.row>.column{text-align:right;-ms-flex-item-align:inherit;align-self:inherit}.ui.grid>.justified.column.column,.ui.grid>.justified.row>.column,.ui.grid>.row>.justified.column.column,.ui.justified.grid>.column,.ui.justified.grid>.row>.column{text-align:justify;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.ui.grid>.row>.black.column,.ui.grid>.row>.blue.column,.ui.grid>.row>.brown.column,.ui.grid>.row>.green.column,.ui.grid>.row>.grey.column,.ui.grid>.row>.olive.column,.ui.grid>.row>.orange.column,.ui.grid>.row>.pink.column,.ui.grid>.row>.purple.column,.ui.grid>.row>.red.column,.ui.grid>.row>.teal.column,.ui.grid>.row>.violet.column,.ui.grid>.row>.yellow.column{margin-top:-1rem;margin-bottom:-1rem;padding-top:1rem;padding-bottom:1rem}.ui.grid>.red.column,.ui.grid>.red.row,.ui.grid>.row>.red.column{background-color:#db2828!important;color:#fff}.ui.grid>.orange.column,.ui.grid>.orange.row,.ui.grid>.row>.orange.column{background-color:#f2711c!important;color:#fff}.ui.grid>.row>.yellow.column,.ui.grid>.yellow.column,.ui.grid>.yellow.row{background-color:#fbbd08!important;color:#fff}.ui.grid>.olive.column,.ui.grid>.olive.row,.ui.grid>.row>.olive.column{background-color:#b5cc18!important;color:#fff}.ui.grid>.green.column,.ui.grid>.green.row,.ui.grid>.row>.green.column{background-color:#21ba45!important;color:#fff}.ui.grid>.row>.teal.column,.ui.grid>.teal.column,.ui.grid>.teal.row{background-color:#00b5ad!important;color:#fff}.ui.grid>.blue.column,.ui.grid>.blue.row,.ui.grid>.row>.blue.column{background-color:#2185d0!important;color:#fff}.ui.grid>.row>.violet.column,.ui.grid>.violet.column,.ui.grid>.violet.row{background-color:#6435c9!important;color:#fff}.ui.grid>.purple.column,.ui.grid>.purple.row,.ui.grid>.row>.purple.column{background-color:#a333c8!important;color:#fff}.ui.grid>.pink.column,.ui.grid>.pink.row,.ui.grid>.row>.pink.column{background-color:#e03997!important;color:#fff}.ui.grid>.brown.column,.ui.grid>.brown.row,.ui.grid>.row>.brown.column{background-color:#a5673f!important;color:#fff}.ui.grid>.grey.column,.ui.grid>.grey.row,.ui.grid>.row>.grey.column{background-color:#767676!important;color:#fff}.ui.grid>.black.column,.ui.grid>.black.row,.ui.grid>.row>.black.column{background-color:#1b1c1d!important;color:#fff}.ui.grid>[class*="equal width"].row>.column,.ui[class*="equal width"].grid>.column:not(.row),.ui[class*="equal width"].grid>.row>.column{display:inline-block;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.ui.grid>[class*="equal width"].row>.wide.column,.ui[class*="equal width"].grid>.row>.wide.column,.ui[class*="equal width"].grid>.wide.column{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}@media only screen and (max-width:767px){.ui.grid>[class*="mobile reversed"].row,.ui[class*="mobile reversed"].grid,.ui[class*="mobile reversed"].grid>.row{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ui.stackable[class*="mobile reversed"],.ui[class*="mobile vertically reversed"].grid{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"])>.column:first-child,.ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:first-child{-webkit-box-shadow:-1px 0 0 0 rgba(34,36,38,.15);box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"])>.column:last-child,.ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:last-child{-webkit-box-shadow:none;box-shadow:none}.ui.grid[class*="vertically divided"][class*="mobile vertically reversed"]>.row:first-child:before{-webkit-box-shadow:0 -1px 0 0 rgba(34,36,38,.15);box-shadow:0 -1px 0 0 rgba(34,36,38,.15)}.ui.grid[class*="vertically divided"][class*="mobile vertically reversed"]>.row:last-child:before{-webkit-box-shadow:none;box-shadow:none}.ui[class*="mobile reversed"].celled.grid>.row>.column:first-child{-webkit-box-shadow:-1px 0 0 0 #d4d4d5;box-shadow:-1px 0 0 0 #d4d4d5}.ui[class*="mobile reversed"].celled.grid>.row>.column:last-child{-webkit-box-shadow:none;box-shadow:none}}@media only screen and (min-width:768px) and (max-width:991px){.ui.grid>[class*="tablet reversed"].row,.ui[class*="tablet reversed"].grid,.ui[class*="tablet reversed"].grid>.row{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ui[class*="tablet vertically reversed"].grid{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"])>.column:first-child,.ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:first-child{-webkit-box-shadow:-1px 0 0 0 rgba(34,36,38,.15);box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"])>.column:last-child,.ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:last-child{-webkit-box-shadow:none;box-shadow:none}.ui.grid[class*="vertically divided"][class*="tablet vertically reversed"]>.row:first-child:before{-webkit-box-shadow:0 -1px 0 0 rgba(34,36,38,.15);box-shadow:0 -1px 0 0 rgba(34,36,38,.15)}.ui.grid[class*="vertically divided"][class*="tablet vertically reversed"]>.row:last-child:before{-webkit-box-shadow:none;box-shadow:none}.ui[class*="tablet reversed"].celled.grid>.row>.column:first-child{-webkit-box-shadow:-1px 0 0 0 #d4d4d5;box-shadow:-1px 0 0 0 #d4d4d5}.ui[class*="tablet reversed"].celled.grid>.row>.column:last-child{-webkit-box-shadow:none;box-shadow:none}}@media only screen and (min-width:992px){.ui.grid>[class*="computer reversed"].row,.ui[class*="computer reversed"].grid,.ui[class*="computer reversed"].grid>.row{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ui[class*="computer vertically reversed"].grid{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"])>.column:first-child,.ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:first-child{-webkit-box-shadow:-1px 0 0 0 rgba(34,36,38,.15);box-shadow:-1px 0 0 0 rgba(34,36,38,.15)}.ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"])>.column:last-child,.ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"])>.row>.column:last-child{-webkit-box-shadow:none;box-shadow:none}.ui.grid[class*="vertically divided"][class*="computer vertically reversed"]>.row:first-child:before{-webkit-box-shadow:0 -1px 0 0 rgba(34,36,38,.15);box-shadow:0 -1px 0 0 rgba(34,36,38,.15)}.ui.grid[class*="vertically divided"][class*="computer vertically reversed"]>.row:last-child:before{-webkit-box-shadow:none;box-shadow:none}.ui[class*="computer reversed"].celled.grid>.row>.column:first-child{-webkit-box-shadow:-1px 0 0 0 #d4d4d5;box-shadow:-1px 0 0 0 #d4d4d5}.ui[class*="computer reversed"].celled.grid>.row>.column:last-child{-webkit-box-shadow:none;box-shadow:none}}@media only screen and (min-width:768px) and (max-width:991px){.ui.doubling.grid{width:auto}.ui.doubling.grid>.row,.ui.grid>.doubling.row{margin:0!important;padding:0!important}.ui.doubling.grid>.row>.column,.ui.grid>.doubling.row>.column{display:inline-block!important;padding-top:1rem!important;padding-bottom:1rem!important;-webkit-box-shadow:none!important;box-shadow:none!important;margin:0}.ui.grid>[class*="two column"].doubling.row.row>.column,.ui[class*="two column"].doubling.grid>.column:not(.row),.ui[class*="two column"].doubling.grid>.row>.column{width:100%!important}.ui.grid>[class*="three column"].doubling.row.row>.column,.ui[class*="three column"].doubling.grid>.column:not(.row),.ui[class*="three column"].doubling.grid>.row>.column{width:50%!important}.ui.grid>[class*="four column"].doubling.row.row>.column,.ui[class*="four column"].doubling.grid>.column:not(.row),.ui[class*="four column"].doubling.grid>.row>.column{width:50%!important}.ui.grid>[class*="five column"].doubling.row.row>.column,.ui[class*="five column"].doubling.grid>.column:not(.row),.ui[class*="five column"].doubling.grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="six column"].doubling.row.row>.column,.ui[class*="six column"].doubling.grid>.column:not(.row),.ui[class*="six column"].doubling.grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="seven column"].doubling.row.row>.column,.ui[class*="seven column"].doubling.grid>.column:not(.row),.ui[class*="seven column"].doubling.grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="eight column"].doubling.row.row>.column,.ui[class*="eight column"].doubling.grid>.column:not(.row),.ui[class*="eight column"].doubling.grid>.row>.column{width:25%!important}.ui.grid>[class*="nine column"].doubling.row.row>.column,.ui[class*="nine column"].doubling.grid>.column:not(.row),.ui[class*="nine column"].doubling.grid>.row>.column{width:25%!important}.ui.grid>[class*="ten column"].doubling.row.row>.column,.ui[class*="ten column"].doubling.grid>.column:not(.row),.ui[class*="ten column"].doubling.grid>.row>.column{width:20%!important}.ui.grid>[class*="eleven column"].doubling.row.row>.column,.ui[class*="eleven column"].doubling.grid>.column:not(.row),.ui[class*="eleven column"].doubling.grid>.row>.column{width:20%!important}.ui.grid>[class*="twelve column"].doubling.row.row>.column,.ui[class*="twelve column"].doubling.grid>.column:not(.row),.ui[class*="twelve column"].doubling.grid>.row>.column{width:16.66666667%!important}.ui.grid>[class*="thirteen column"].doubling.row.row>.column,.ui[class*="thirteen column"].doubling.grid>.column:not(.row),.ui[class*="thirteen column"].doubling.grid>.row>.column{width:16.66666667%!important}.ui.grid>[class*="fourteen column"].doubling.row.row>.column,.ui[class*="fourteen column"].doubling.grid>.column:not(.row),.ui[class*="fourteen column"].doubling.grid>.row>.column{width:14.28571429%!important}.ui.grid>[class*="fifteen column"].doubling.row.row>.column,.ui[class*="fifteen column"].doubling.grid>.column:not(.row),.ui[class*="fifteen column"].doubling.grid>.row>.column{width:14.28571429%!important}.ui.grid>[class*="sixteen column"].doubling.row.row>.column,.ui[class*="sixteen column"].doubling.grid>.column:not(.row),.ui[class*="sixteen column"].doubling.grid>.row>.column{width:12.5%!important}}@media only screen and (max-width:767px){.ui.doubling.grid>.row,.ui.grid>.doubling.row{margin:0!important;padding:0!important}.ui.doubling.grid>.row>.column,.ui.grid>.doubling.row>.column{padding-top:1rem!important;padding-bottom:1rem!important;margin:0!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui.grid>[class*="two column"].doubling:not(.stackable).row.row>.column,.ui[class*="two column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="two column"].doubling:not(.stackable).grid>.row>.column{width:100%!important}.ui.grid>[class*="three column"].doubling:not(.stackable).row.row>.column,.ui[class*="three column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="three column"].doubling:not(.stackable).grid>.row>.column{width:50%!important}.ui.grid>[class*="four column"].doubling:not(.stackable).row.row>.column,.ui[class*="four column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="four column"].doubling:not(.stackable).grid>.row>.column{width:50%!important}.ui.grid>[class*="five column"].doubling:not(.stackable).row.row>.column,.ui[class*="five column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="five column"].doubling:not(.stackable).grid>.row>.column{width:50%!important}.ui.grid>[class*="six column"].doubling:not(.stackable).row.row>.column,.ui[class*="six column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="six column"].doubling:not(.stackable).grid>.row>.column{width:50%!important}.ui.grid>[class*="seven column"].doubling:not(.stackable).row.row>.column,.ui[class*="seven column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="seven column"].doubling:not(.stackable).grid>.row>.column{width:50%!important}.ui.grid>[class*="eight column"].doubling:not(.stackable).row.row>.column,.ui[class*="eight column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="eight column"].doubling:not(.stackable).grid>.row>.column{width:50%!important}.ui.grid>[class*="nine column"].doubling:not(.stackable).row.row>.column,.ui[class*="nine column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="nine column"].doubling:not(.stackable).grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="ten column"].doubling:not(.stackable).row.row>.column,.ui[class*="ten column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="ten column"].doubling:not(.stackable).grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="eleven column"].doubling:not(.stackable).row.row>.column,.ui[class*="eleven column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="eleven column"].doubling:not(.stackable).grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="twelve column"].doubling:not(.stackable).row.row>.column,.ui[class*="twelve column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="twelve column"].doubling:not(.stackable).grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="thirteen column"].doubling:not(.stackable).row.row>.column,.ui[class*="thirteen column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="thirteen column"].doubling:not(.stackable).grid>.row>.column{width:33.33333333%!important}.ui.grid>[class*="fourteen column"].doubling:not(.stackable).row.row>.column,.ui[class*="fourteen column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="fourteen column"].doubling:not(.stackable).grid>.row>.column{width:25%!important}.ui.grid>[class*="fifteen column"].doubling:not(.stackable).row.row>.column,.ui[class*="fifteen column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="fifteen column"].doubling:not(.stackable).grid>.row>.column{width:25%!important}.ui.grid>[class*="sixteen column"].doubling:not(.stackable).row.row>.column,.ui[class*="sixteen column"].doubling:not(.stackable).grid>.column:not(.row),.ui[class*="sixteen column"].doubling:not(.stackable).grid>.row>.column{width:25%!important}}@media only screen and (max-width:767px){.ui.stackable.grid{width:auto;margin-left:0!important;margin-right:0!important}.ui.grid>.stackable.stackable.row>.column,.ui.stackable.grid>.column.grid>.column,.ui.stackable.grid>.column.row>.column,.ui.stackable.grid>.column:not(.row),.ui.stackable.grid>.row>.column,.ui.stackable.grid>.row>.wide.column,.ui.stackable.grid>.wide.column{width:100%!important;margin:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important;padding:1rem 1rem!important}.ui.stackable.grid:not(.vertically)>.row{margin:0;padding:0}.ui.container>.ui.stackable.grid>.column,.ui.container>.ui.stackable.grid>.row>.column{padding-left:0!important;padding-right:0!important}.ui.grid .ui.stackable.grid,.ui.segment:not(.vertical) .ui.stackable.page.grid{margin-left:-1rem!important;margin-right:-1rem!important}.ui.stackable.celled.grid>.column:not(.row):first-child,.ui.stackable.celled.grid>.row:first-child>.column:first-child,.ui.stackable.divided.grid>.column:not(.row):first-child,.ui.stackable.divided.grid>.row:first-child>.column:first-child{border-top:none!important}.ui.inverted.stackable.celled.grid>.column:not(.row),.ui.inverted.stackable.celled.grid>.row>.column,.ui.inverted.stackable.divided.grid>.column:not(.row),.ui.inverted.stackable.divided.grid>.row>.column{border-top:1px solid rgba(255,255,255,.1)}.ui.stackable.celled.grid>.column:not(.row),.ui.stackable.celled.grid>.row>.column,.ui.stackable.divided:not(.vertically).grid>.column:not(.row),.ui.stackable.divided:not(.vertically).grid>.row>.column{border-top:1px solid rgba(34,36,38,.15);-webkit-box-shadow:none!important;box-shadow:none!important;padding-top:2rem!important;padding-bottom:2rem!important}.ui.stackable.celled.grid>.row{-webkit-box-shadow:none!important;box-shadow:none!important}.ui.stackable.divided:not(.vertically).grid>.column:not(.row),.ui.stackable.divided:not(.vertically).grid>.row>.column{padding-left:0!important;padding-right:0!important}}@media only screen and (max-width:767px){.ui.grid.grid.grid>.row>[class*="tablet only"].column:not(.mobile),.ui.grid.grid.grid>[class*="tablet only"].column:not(.mobile),.ui.grid.grid.grid>[class*="tablet only"].row:not(.mobile),.ui[class*="tablet only"].grid.grid.grid:not(.mobile){display:none!important}.ui.grid.grid.grid>.row>[class*="computer only"].column:not(.mobile),.ui.grid.grid.grid>[class*="computer only"].column:not(.mobile),.ui.grid.grid.grid>[class*="computer only"].row:not(.mobile),.ui[class*="computer only"].grid.grid.grid:not(.mobile){display:none!important}.ui.grid.grid.grid>.row>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].row:not(.mobile),.ui[class*="large screen only"].grid.grid.grid:not(.mobile){display:none!important}.ui.grid.grid.grid>.row>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].row:not(.mobile),.ui[class*="widescreen only"].grid.grid.grid:not(.mobile){display:none!important}}@media only screen and (min-width:768px) and (max-width:991px){.ui.grid.grid.grid>.row>[class*="mobile only"].column:not(.tablet),.ui.grid.grid.grid>[class*="mobile only"].column:not(.tablet),.ui.grid.grid.grid>[class*="mobile only"].row:not(.tablet),.ui[class*="mobile only"].grid.grid.grid:not(.tablet){display:none!important}.ui.grid.grid.grid>.row>[class*="computer only"].column:not(.tablet),.ui.grid.grid.grid>[class*="computer only"].column:not(.tablet),.ui.grid.grid.grid>[class*="computer only"].row:not(.tablet),.ui[class*="computer only"].grid.grid.grid:not(.tablet){display:none!important}.ui.grid.grid.grid>.row>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].row:not(.mobile),.ui[class*="large screen only"].grid.grid.grid:not(.mobile){display:none!important}.ui.grid.grid.grid>.row>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].row:not(.mobile),.ui[class*="widescreen only"].grid.grid.grid:not(.mobile){display:none!important}}@media only screen and (min-width:992px) and (max-width:1199px){.ui.grid.grid.grid>.row>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].row:not(.computer),.ui[class*="mobile only"].grid.grid.grid:not(.computer){display:none!important}.ui.grid.grid.grid>.row>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].row:not(.computer),.ui[class*="tablet only"].grid.grid.grid:not(.computer){display:none!important}.ui.grid.grid.grid>.row>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="large screen only"].row:not(.mobile),.ui[class*="large screen only"].grid.grid.grid:not(.mobile){display:none!important}.ui.grid.grid.grid>.row>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].row:not(.mobile),.ui[class*="widescreen only"].grid.grid.grid:not(.mobile){display:none!important}}@media only screen and (min-width:1200px) and (max-width:1919px){.ui.grid.grid.grid>.row>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].row:not(.computer),.ui[class*="mobile only"].grid.grid.grid:not(.computer){display:none!important}.ui.grid.grid.grid>.row>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].row:not(.computer),.ui[class*="tablet only"].grid.grid.grid:not(.computer){display:none!important}.ui.grid.grid.grid>.row>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].column:not(.mobile),.ui.grid.grid.grid>[class*="widescreen only"].row:not(.mobile),.ui[class*="widescreen only"].grid.grid.grid:not(.mobile){display:none!important}}@media only screen and (min-width:1920px){.ui.grid.grid.grid>.row>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].column:not(.computer),.ui.grid.grid.grid>[class*="mobile only"].row:not(.computer),.ui[class*="mobile only"].grid.grid.grid:not(.computer){display:none!important}.ui.grid.grid.grid>.row>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].column:not(.computer),.ui.grid.grid.grid>[class*="tablet only"].row:not(.computer),.ui[class*="tablet only"].grid.grid.grid:not(.computer){display:none!important}}.ui.menu{display:-webkit-box;display:-ms-flexbox;display:flex;margin:1rem 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;background:#fff;font-weight:400;border:1px solid rgba(34,36,38,.15);-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15);border-radius:.28571429rem;min-height:2.85714286em}.ui.menu:after{content:'';display:block;height:0;clear:both;visibility:hidden}.ui.menu:first-child{margin-top:0}.ui.menu:last-child{margin-bottom:0}.ui.menu .menu{margin:0}.ui.menu:not(.vertical)>.menu{display:-webkit-box;display:-ms-flexbox;display:flex}.ui.menu:not(.vertical) .item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ui.menu .item{position:relative;vertical-align:middle;line-height:1;text-decoration:none;-webkit-tap-highlight-color:transparent;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:0 0;padding:.92857143em 1.14285714em;text-transform:none;color:rgba(0,0,0,.87);font-weight:400;-webkit-transition:background .1s ease,color .1s ease,-webkit-box-shadow .1s ease;transition:background .1s ease,color .1s ease,-webkit-box-shadow .1s ease;transition:background .1s ease,box-shadow .1s ease,color .1s ease;transition:background .1s ease,box-shadow .1s ease,color .1s ease,-webkit-box-shadow .1s ease}.ui.menu>.item:first-child{border-radius:.28571429rem 0 0 .28571429rem}.ui.menu .item:before{position:absolute;content:'';top:0;right:0;height:100%;width:1px;background:rgba(34,36,38,.1)}.ui.menu .item>a:not(.ui),.ui.menu .item>p:only-child,.ui.menu .text.item>*{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;line-height:1.3}.ui.menu .item>p:first-child{margin-top:0}.ui.menu .item>p:last-child{margin-bottom:0}.ui.menu .item>i.icon{opacity:.9;float:none;margin:0 .35714286em 0 0}.ui.menu:not(.vertical) .item>.button{position:relative;top:0;margin:-.5em 0;padding-bottom:.78571429em;padding-top:.78571429em;font-size:1em}.ui.menu>.container,.ui.menu>.grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:inherit;-ms-flex-align:inherit;align-items:inherit;-webkit-box-orient:inherit;-webkit-box-direction:inherit;-ms-flex-direction:inherit;flex-direction:inherit}.ui.menu .item>.input{width:100%}.ui.menu:not(.vertical) .item>.input{position:relative;top:0;margin:-.5em 0}.ui.menu .item>.input input{font-size:1em;padding-top:.57142857em;padding-bottom:.57142857em}.ui.menu .header.item,.ui.vertical.menu .header.item{margin:0;background:'';text-transform:normal;font-weight:700}.ui.vertical.menu .item>.header:not(.ui){margin:0 0 .5em;font-size:1em;font-weight:700}.ui.menu .item>i.dropdown.icon{padding:0;float:right;margin:0 0 0 1em}.ui.menu .dropdown.item .menu{min-width:calc(100% - 1px);border-radius:0 0 .28571429rem .28571429rem;background:#fff;margin:0 0 0;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.08);box-shadow:0 1px 3px 0 rgba(0,0,0,.08);-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.ui.menu .ui.dropdown .menu>.item{margin:0;text-align:left;font-size:1em!important;padding:.78571429em 1.14285714em!important;background:0 0!important;color:rgba(0,0,0,.87)!important;text-transform:none!important;font-weight:400!important;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-transition:none!important;transition:none!important}.ui.menu .ui.dropdown .menu>.item:hover{background:rgba(0,0,0,.05)!important;color:rgba(0,0,0,.95)!important}.ui.menu .ui.dropdown .menu>.selected.item{background:rgba(0,0,0,.05)!important;color:rgba(0,0,0,.95)!important}.ui.menu .ui.dropdown .menu>.active.item{background:rgba(0,0,0,.03)!important;font-weight:700!important;color:rgba(0,0,0,.95)!important}.ui.menu .ui.dropdown.item .menu .item:not(.filtered){display:block}.ui.menu .ui.dropdown .menu>.item .icon:not(.dropdown){display:inline-block;font-size:1em!important;float:none;margin:0 .75em 0 0!important}.ui.secondary.menu .dropdown.item>.menu,.ui.text.menu .dropdown.item>.menu{border-radius:.28571429rem;margin-top:.35714286em}.ui.menu .pointing.dropdown.item .menu{margin-top:.75em}.ui.inverted.menu .search.dropdown.item>.search,.ui.inverted.menu .search.dropdown.item>.text{color:rgba(255,255,255,.9)}.ui.vertical.menu .dropdown.item>.icon{float:right;content:"\f0da";margin-left:1em}.ui.vertical.menu .dropdown.item .menu{left:100%;min-width:0;margin:0;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.08);box-shadow:0 1px 3px 0 rgba(0,0,0,.08);border-radius:0 .28571429rem .28571429rem .28571429rem}.ui.vertical.menu .dropdown.item.upward .menu{bottom:0}.ui.vertical.menu .dropdown.item:not(.upward) .menu{top:0}.ui.vertical.menu .active.dropdown.item{border-top-right-radius:0;border-bottom-right-radius:0}.ui.vertical.menu .dropdown.active.item{-webkit-box-shadow:none;box-shadow:none}.ui.item.menu .dropdown .menu .item{width:100%}.ui.menu .item>.label{background:#999;color:#fff;margin-left:1em;padding:.3em .78571429em}.ui.vertical.menu .item>.label{background:#999;color:#fff;margin-top:-.15em;margin-bottom:-.15em;padding:.3em .78571429em}.ui.menu .item>.floating.label{padding:.3em .78571429em}.ui.menu .item>img:not(.ui){display:inline-block;vertical-align:middle;margin:-.3em 0;width:2.5em}.ui.vertical.menu .item>img:not(.ui):only-child{display:block;max-width:100%;width:auto}.ui.menu .list .item:before{background:0 0!important}.ui.vertical.sidebar.menu>.item:first-child:before{display:block!important}.ui.vertical.sidebar.menu>.item::before{top:auto;bottom:0}@media only screen and (max-width:767px){.ui.menu>.ui.container{width:100%!important;margin-left:0!important;margin-right:0!important}}@media only screen and (min-width:768px){.ui.menu:not(.secondary):not(.text):not(.tabular):not(.borderless)>.container>.item:not(.right):not(.borderless):first-child{border-left:1px solid rgba(34,36,38,.1)}}.ui.link.menu .item:hover,.ui.menu .dropdown.item:hover,.ui.menu .link.item:hover,.ui.menu a.item:hover{cursor:pointer;background:rgba(0,0,0,.03);color:rgba(0,0,0,.95)}.ui.link.menu .item:active,.ui.menu .link.item:active,.ui.menu a.item:active{background:rgba(0,0,0,.03);color:rgba(0,0,0,.95)}.ui.menu .active.item{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95);font-weight:400;-webkit-box-shadow:none;box-shadow:none}.ui.menu .active.item>i.icon{opacity:1}.ui.menu .active.item:hover,.ui.vertical.menu .active.item:hover{background-color:rgba(0,0,0,.05);color:rgba(0,0,0,.95)}.ui.menu .item.disabled,.ui.menu .item.disabled:hover{cursor:default!important;background-color:transparent!important;color:rgba(40,40,40,.3)!important}.ui.menu:not(.vertical) .left.item,.ui.menu:not(.vertical) :not(.dropdown)>.left.menu{display:-webkit-box;display:-ms-flexbox;display:flex;margin-right:auto!important}.ui.menu:not(.vertical) .right.item,.ui.menu:not(.vertical) .right.menu{display:-webkit-box;display:-ms-flexbox;display:flex;margin-left:auto!important}.ui.menu .right.item::before,.ui.menu .right.menu>.item::before{right:auto;left:0}.ui.vertical.menu{display:block;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background:#fff;-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15)}.ui.vertical.menu .item{display:block;background:0 0;border-top:none;border-right:none}.ui.vertical.menu>.item:first-child{border-radius:.28571429rem .28571429rem 0 0}.ui.vertical.menu>.item:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.vertical.menu .item>.label{float:right;text-align:center}.ui.vertical.menu .item>i.icon{width:1.18em;float:right;margin:0 0 0 .5em}.ui.vertical.menu .item>.label+i.icon{float:none;margin:0 .5em 0 0}.ui.vertical.menu .item:before{position:absolute;content:'';top:0;left:0;width:100%;height:1px;background:rgba(34,36,38,.1)}.ui.vertical.menu .item:first-child:before{display:none!important}.ui.vertical.menu .item>.menu{margin:.5em -1.14285714em 0}.ui.vertical.menu .menu .item{background:0 0;padding:.5em 1.33333333em;font-size:.85714286em;color:rgba(0,0,0,.5)}.ui.vertical.menu .item .menu .link.item:hover,.ui.vertical.menu .item .menu a.item:hover{color:rgba(0,0,0,.85)}.ui.vertical.menu .menu .item:before{display:none}.ui.vertical.menu .active.item{background:rgba(0,0,0,.05);border-radius:0;-webkit-box-shadow:none;box-shadow:none}.ui.vertical.menu>.active.item:first-child{border-radius:.28571429rem .28571429rem 0 0}.ui.vertical.menu>.active.item:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.vertical.menu>.active.item:only-child{border-radius:.28571429rem}.ui.vertical.menu .active.item .menu .active.item{border-left:none}.ui.vertical.menu .item .menu .active.item{background-color:transparent;font-weight:700;color:rgba(0,0,0,.95)}.ui.tabular.menu{border-radius:0;-webkit-box-shadow:none!important;box-shadow:none!important;border:none;background:none transparent;border-bottom:1px solid #d4d4d5}.ui.tabular.fluid.menu{width:calc(100% + 2px)!important}.ui.tabular.menu .item{background:0 0;border-bottom:none;border-left:1px solid transparent;border-right:1px solid transparent;border-top:2px solid transparent;padding:.92857143em 1.42857143em;color:rgba(0,0,0,.87)}.ui.tabular.menu .item:before{display:none}.ui.tabular.menu .item:hover{background-color:transparent;color:rgba(0,0,0,.8)}.ui.tabular.menu .active.item{background:none #fff;color:rgba(0,0,0,.95);border-top-width:1px;border-color:#d4d4d5;font-weight:700;margin-bottom:-1px;-webkit-box-shadow:none;box-shadow:none;border-radius:.28571429rem .28571429rem 0 0!important}.ui.tabular.menu+.attached:not(.top).segment,.ui.tabular.menu+.attached:not(.top).segment+.attached:not(.top).segment{border-top:none;margin-left:0;margin-top:0;margin-right:0;width:100%}.top.attached.segment+.ui.bottom.tabular.menu{position:relative;width:calc(100% + 2px);left:-1px}.ui.bottom.tabular.menu{background:none transparent;border-radius:0;-webkit-box-shadow:none!important;box-shadow:none!important;border-bottom:none;border-top:1px solid #d4d4d5}.ui.bottom.tabular.menu .item{background:0 0;border-left:1px solid transparent;border-right:1px solid transparent;border-bottom:1px solid transparent;border-top:none}.ui.bottom.tabular.menu .active.item{background:none #fff;color:rgba(0,0,0,.95);border-color:#d4d4d5;margin:-1px 0 0 0;border-radius:0 0 .28571429rem .28571429rem!important}.ui.vertical.tabular.menu{background:none transparent;border-radius:0;-webkit-box-shadow:none!important;box-shadow:none!important;border-bottom:none;border-right:1px solid #d4d4d5}.ui.vertical.tabular.menu .item{background:0 0;border-left:1px solid transparent;border-bottom:1px solid transparent;border-top:1px solid transparent;border-right:none}.ui.vertical.tabular.menu .active.item{background:none #fff;color:rgba(0,0,0,.95);border-color:#d4d4d5;margin:0 -1px 0 0;border-radius:.28571429rem 0 0 .28571429rem!important}.ui.vertical.right.tabular.menu{background:none transparent;border-radius:0;-webkit-box-shadow:none!important;box-shadow:none!important;border-bottom:none;border-right:none;border-left:1px solid #d4d4d5}.ui.vertical.right.tabular.menu .item{background:0 0;border-right:1px solid transparent;border-bottom:1px solid transparent;border-top:1px solid transparent;border-left:none}.ui.vertical.right.tabular.menu .active.item{background:none #fff;color:rgba(0,0,0,.95);border-color:#d4d4d5;margin:0 0 0 -1px;border-radius:0 .28571429rem .28571429rem 0!important}.ui.tabular.menu .active.dropdown.item{margin-bottom:0;border-left:1px solid transparent;border-right:1px solid transparent;border-top:2px solid transparent;border-bottom:none}.ui.pagination.menu{margin:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.ui.pagination.menu .item:last-child{border-radius:0 .28571429rem .28571429rem 0}.ui.compact.menu .item:last-child{border-radius:0 .28571429rem .28571429rem 0}.ui.pagination.menu .item:last-child:before{display:none}.ui.pagination.menu .item{min-width:3em;text-align:center}.ui.pagination.menu .icon.item i.icon{vertical-align:top}.ui.pagination.menu .active.item{border-top:none;padding-top:.92857143em;background-color:rgba(0,0,0,.05);color:rgba(0,0,0,.95);-webkit-box-shadow:none;box-shadow:none}.ui.secondary.menu{background:0 0;margin-left:-.35714286em;margin-right:-.35714286em;border-radius:0;border:none;-webkit-box-shadow:none;box-shadow:none}.ui.secondary.menu .item{-ms-flex-item-align:center;align-self:center;-webkit-box-shadow:none;box-shadow:none;border:none;padding:.78571429em .92857143em;margin:0 .35714286em;background:0 0;-webkit-transition:color .1s ease;transition:color .1s ease;border-radius:.28571429rem}.ui.secondary.menu .item:before{display:none!important}.ui.secondary.menu .header.item{border-radius:0;border-right:none;background:none transparent}.ui.secondary.menu .item>img:not(.ui){margin:0}.ui.secondary.menu .dropdown.item:hover,.ui.secondary.menu .link.item:hover,.ui.secondary.menu a.item:hover{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95)}.ui.secondary.menu .active.item{-webkit-box-shadow:none;box-shadow:none;background:rgba(0,0,0,.05);color:rgba(0,0,0,.95);border-radius:.28571429rem}.ui.secondary.menu .active.item:hover{-webkit-box-shadow:none;box-shadow:none;background:rgba(0,0,0,.05);color:rgba(0,0,0,.95)}.ui.secondary.inverted.menu .link.item,.ui.secondary.inverted.menu a.item{color:rgba(255,255,255,.7)!important}.ui.secondary.inverted.menu .dropdown.item:hover,.ui.secondary.inverted.menu .link.item:hover,.ui.secondary.inverted.menu a.item:hover{background:rgba(255,255,255,.08);color:#fff!important}.ui.secondary.inverted.menu .active.item{background:rgba(255,255,255,.15);color:#fff!important}.ui.secondary.item.menu{margin-left:0;margin-right:0}.ui.secondary.item.menu .item:last-child{margin-right:0}.ui.secondary.attached.menu{-webkit-box-shadow:none;box-shadow:none}.ui.vertical.secondary.menu .item:not(.dropdown)>.menu{margin:0 -.92857143em}.ui.vertical.secondary.menu .item:not(.dropdown)>.menu>.item{margin:0;padding:.5em 1.33333333em}.ui.secondary.vertical.menu>.item{border:none;margin:0 0 .35714286em;border-radius:.28571429rem!important}.ui.secondary.vertical.menu>.header.item{border-radius:0}.ui.vertical.secondary.menu .item>.menu .item{background-color:transparent}.ui.secondary.inverted.menu{background-color:transparent}.ui.secondary.pointing.menu{margin-left:0;margin-right:0;border-bottom:2px solid rgba(34,36,38,.15)}.ui.secondary.pointing.menu .item{border-bottom-color:transparent;border-bottom-style:solid;border-radius:0;-ms-flex-item-align:end;align-self:flex-end;margin:0 0 -2px;padding:.85714286em 1.14285714em;border-bottom-width:2px;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.secondary.pointing.menu .header.item{color:rgba(0,0,0,.85)!important}.ui.secondary.pointing.menu .text.item{-webkit-box-shadow:none!important;box-shadow:none!important}.ui.secondary.pointing.menu .item:after{display:none}.ui.secondary.pointing.menu .dropdown.item:hover,.ui.secondary.pointing.menu .link.item:hover,.ui.secondary.pointing.menu a.item:hover{background-color:transparent;color:rgba(0,0,0,.87)}.ui.secondary.pointing.menu .dropdown.item:active,.ui.secondary.pointing.menu .link.item:active,.ui.secondary.pointing.menu a.item:active{background-color:transparent;border-color:rgba(34,36,38,.15)}.ui.secondary.pointing.menu .active.item{background-color:transparent;-webkit-box-shadow:none;box-shadow:none;border-color:#1b1c1d;font-weight:700;color:rgba(0,0,0,.95)}.ui.secondary.pointing.menu .active.item:hover{border-color:#1b1c1d;color:rgba(0,0,0,.95)}.ui.secondary.pointing.menu .active.dropdown.item{border-color:transparent}.ui.secondary.vertical.pointing.menu{border-bottom-width:0;border-right-width:2px;border-right-style:solid;border-right-color:rgba(34,36,38,.15)}.ui.secondary.vertical.pointing.menu .item{border-bottom:none;border-right-style:solid;border-right-color:transparent;border-radius:0!important;margin:0 -2px 0 0;border-right-width:2px}.ui.secondary.vertical.pointing.menu .active.item{border-color:#1b1c1d}.ui.secondary.inverted.pointing.menu{border-color:rgba(255,255,255,.1)}.ui.secondary.inverted.pointing.menu{border-width:2px;border-color:rgba(34,36,38,.15)}.ui.secondary.inverted.pointing.menu .item{color:rgba(255,255,255,.9)}.ui.secondary.inverted.pointing.menu .header.item{color:#fff!important}.ui.secondary.inverted.pointing.menu .link.item:hover,.ui.secondary.inverted.pointing.menu a.item:hover{color:rgba(0,0,0,.95)}.ui.secondary.inverted.pointing.menu .active.item{border-color:#fff;color:#fff}.ui.text.menu{background:none transparent;border-radius:0;-webkit-box-shadow:none;box-shadow:none;border:none;margin:1em -.5em}.ui.text.menu .item{border-radius:0;-webkit-box-shadow:none;box-shadow:none;-ms-flex-item-align:center;align-self:center;margin:0 0;padding:.35714286em .5em;font-weight:400;color:rgba(0,0,0,.6);-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.text.menu .item:before,.ui.text.menu .menu .item:before{display:none!important}.ui.text.menu .header.item{background-color:transparent;opacity:1;color:rgba(0,0,0,.85);font-size:.92857143em;text-transform:uppercase;font-weight:700}.ui.text.menu .item>img:not(.ui){margin:0}.ui.text.item.menu .item{margin:0}.ui.vertical.text.menu{margin:1em 0}.ui.vertical.text.menu:first-child{margin-top:0}.ui.vertical.text.menu:last-child{margin-bottom:0}.ui.vertical.text.menu .item{margin:.57142857em 0;padding-left:0;padding-right:0}.ui.vertical.text.menu .item>i.icon{float:none;margin:0 .35714286em 0 0}.ui.vertical.text.menu .header.item{margin:.57142857em 0 .71428571em}.ui.vertical.text.menu .item:not(.dropdown)>.menu{margin:0}.ui.vertical.text.menu .item:not(.dropdown)>.menu>.item{margin:0;padding:.5em 0}.ui.text.menu .item:hover{opacity:1;background-color:transparent}.ui.text.menu .active.item{background-color:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;font-weight:400;color:rgba(0,0,0,.95)}.ui.text.menu .active.item:hover{background-color:transparent}.ui.text.pointing.menu .active.item:after{-webkit-box-shadow:none;box-shadow:none}.ui.text.attached.menu{-webkit-box-shadow:none;box-shadow:none}.ui.inverted.text.menu,.ui.inverted.text.menu .active.item,.ui.inverted.text.menu .item,.ui.inverted.text.menu .item:hover{background-color:transparent!important}.ui.fluid.text.menu{margin-left:0;margin-right:0}.ui.vertical.icon.menu{display:inline-block;width:auto}.ui.icon.menu .item{height:auto;text-align:center;color:#1b1c1d}.ui.icon.menu .item>.icon:not(.dropdown){margin:0;opacity:1}.ui.icon.menu .icon:before{opacity:1}.ui.menu .icon.item>.icon{width:auto;margin:0 auto}.ui.vertical.icon.menu .item>.icon:not(.dropdown){display:block;opacity:1;margin:0 auto;float:none}.ui.inverted.icon.menu .item{color:#fff}.ui.labeled.icon.menu{text-align:center}.ui.labeled.icon.menu .item{min-width:6em;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ui.labeled.icon.menu .item>.icon:not(.dropdown){height:1em;display:block;font-size:1.71428571em!important;margin:0 auto .5rem!important}.ui.fluid.labeled.icon.menu>.item{min-width:0}@media only screen and (max-width:767px){.ui.stackable.menu{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ui.stackable.menu .item{width:100%!important}.ui.stackable.menu .item:before{position:absolute;content:'';top:auto;bottom:0;left:0;width:100%;height:1px;background:rgba(34,36,38,.1)}.ui.stackable.menu .left.item,.ui.stackable.menu .left.menu{margin-right:0!important}.ui.stackable.menu .right.item,.ui.stackable.menu .right.menu{margin-left:0!important}.ui.stackable.menu .left.menu,.ui.stackable.menu .right.menu{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.ui.menu .red.active.item,.ui.red.menu .active.item{border-color:#db2828!important;color:#db2828!important}.ui.menu .orange.active.item,.ui.orange.menu .active.item{border-color:#f2711c!important;color:#f2711c!important}.ui.menu .yellow.active.item,.ui.yellow.menu .active.item{border-color:#fbbd08!important;color:#fbbd08!important}.ui.menu .olive.active.item,.ui.olive.menu .active.item{border-color:#b5cc18!important;color:#b5cc18!important}.ui.green.menu .active.item,.ui.menu .green.active.item{border-color:#21ba45!important;color:#21ba45!important}.ui.menu .teal.active.item,.ui.teal.menu .active.item{border-color:#00b5ad!important;color:#00b5ad!important}.ui.blue.menu .active.item,.ui.menu .blue.active.item{border-color:#2185d0!important;color:#2185d0!important}.ui.menu .violet.active.item,.ui.violet.menu .active.item{border-color:#6435c9!important;color:#6435c9!important}.ui.menu .purple.active.item,.ui.purple.menu .active.item{border-color:#a333c8!important;color:#a333c8!important}.ui.menu .pink.active.item,.ui.pink.menu .active.item{border-color:#e03997!important;color:#e03997!important}.ui.brown.menu .active.item,.ui.menu .brown.active.item{border-color:#a5673f!important;color:#a5673f!important}.ui.grey.menu .active.item,.ui.menu .grey.active.item{border-color:#767676!important;color:#767676!important}.ui.inverted.menu{border:0 solid transparent;background:#1b1c1d;-webkit-box-shadow:none;box-shadow:none}.ui.inverted.menu .item,.ui.inverted.menu .item>a:not(.ui){background:0 0;color:rgba(255,255,255,.9)}.ui.inverted.menu .item.menu{background:0 0}.ui.inverted.menu .item:before{background:rgba(255,255,255,.08)}.ui.vertical.inverted.menu .item:before{background:rgba(255,255,255,.08)}.ui.vertical.inverted.menu .menu .item,.ui.vertical.inverted.menu .menu .item a:not(.ui){color:rgba(255,255,255,.5)}.ui.inverted.menu .header.item{margin:0;background:0 0;-webkit-box-shadow:none;box-shadow:none}.ui.inverted.menu .item.disabled,.ui.inverted.menu .item.disabled:hover{color:rgba(225,225,225,.3)}.ui.inverted.menu .dropdown.item:hover,.ui.inverted.menu .link.item:hover,.ui.inverted.menu a.item:hover,.ui.link.inverted.menu .item:hover{background:rgba(255,255,255,.08);color:#fff}.ui.vertical.inverted.menu .item .menu .link.item:hover,.ui.vertical.inverted.menu .item .menu a.item:hover{background:0 0;color:#fff}.ui.inverted.menu .link.item:active,.ui.inverted.menu a.item:active{background:rgba(255,255,255,.08);color:#fff}.ui.inverted.menu .active.item{background:rgba(255,255,255,.15);color:#fff!important}.ui.inverted.vertical.menu .item .menu .active.item{background:0 0;color:#fff}.ui.inverted.pointing.menu .active.item:after{background:#3d3e3f!important;margin:0!important;-webkit-box-shadow:none!important;box-shadow:none!important;border:none!important}.ui.inverted.menu .active.item:hover{background:rgba(255,255,255,.15);color:#fff!important}.ui.inverted.pointing.menu .active.item:hover:after{background:#3d3e3f!important}.ui.floated.menu{float:left;margin:0 .5rem 0 0}.ui.floated.menu .item:last-child:before{display:none}.ui.right.floated.menu{float:right;margin:0 0 0 .5rem}.ui.inverted.menu .red.active.item,.ui.inverted.red.menu{background-color:#db2828}.ui.inverted.red.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.red.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .orange.active.item,.ui.inverted.orange.menu{background-color:#f2711c}.ui.inverted.orange.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.orange.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .yellow.active.item,.ui.inverted.yellow.menu{background-color:#fbbd08}.ui.inverted.yellow.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.yellow.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .olive.active.item,.ui.inverted.olive.menu{background-color:#b5cc18}.ui.inverted.olive.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.olive.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.green.menu,.ui.inverted.menu .green.active.item{background-color:#21ba45}.ui.inverted.green.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.green.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .teal.active.item,.ui.inverted.teal.menu{background-color:#00b5ad}.ui.inverted.teal.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.teal.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.blue.menu,.ui.inverted.menu .blue.active.item{background-color:#2185d0}.ui.inverted.blue.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.blue.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .violet.active.item,.ui.inverted.violet.menu{background-color:#6435c9}.ui.inverted.violet.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.violet.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .purple.active.item,.ui.inverted.purple.menu{background-color:#a333c8}.ui.inverted.purple.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.purple.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.menu .pink.active.item,.ui.inverted.pink.menu{background-color:#e03997}.ui.inverted.pink.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.pink.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.brown.menu,.ui.inverted.menu .brown.active.item{background-color:#a5673f}.ui.inverted.brown.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.brown.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.inverted.grey.menu,.ui.inverted.menu .grey.active.item{background-color:#767676}.ui.inverted.grey.menu .item:before{background-color:rgba(34,36,38,.1)}.ui.inverted.grey.menu .active.item{background-color:rgba(0,0,0,.1)!important}.ui.fitted.menu .item,.ui.fitted.menu .item .menu .item,.ui.menu .fitted.item{padding:0}.ui.horizontally.fitted.menu .item,.ui.horizontally.fitted.menu .item .menu .item,.ui.menu .horizontally.fitted.item{padding-top:.92857143em;padding-bottom:.92857143em}.ui.menu .vertically.fitted.item,.ui.vertically.fitted.menu .item,.ui.vertically.fitted.menu .item .menu .item{padding-left:1.14285714em;padding-right:1.14285714em}.ui.borderless.menu .item .menu .item:before,.ui.borderless.menu .item:before,.ui.menu .borderless.item:before{background:0 0!important}.ui.compact.menu{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin:0;vertical-align:middle}.ui.compact.vertical.menu{display:inline-block}.ui.compact.menu .item:last-child{border-radius:0 .28571429rem .28571429rem 0}.ui.compact.menu .item:last-child:before{display:none}.ui.compact.vertical.menu{width:auto!important}.ui.compact.vertical.menu .item:last-child::before{display:block}.ui.menu.fluid,.ui.vertical.menu.fluid{width:100%!important}.ui.item.menu,.ui.item.menu .item{width:100%;padding-left:0!important;padding-right:0!important;margin-left:0!important;margin-right:0!important;text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.ui.attached.item.menu{margin:0 -1px!important}.ui.item.menu .item:last-child:before{display:none}.ui.menu.two.item .item{width:50%}.ui.menu.three.item .item{width:33.333%}.ui.menu.four.item .item{width:25%}.ui.menu.five.item .item{width:20%}.ui.menu.six.item .item{width:16.666%}.ui.menu.seven.item .item{width:14.285%}.ui.menu.eight.item .item{width:12.5%}.ui.menu.nine.item .item{width:11.11%}.ui.menu.ten.item .item{width:10%}.ui.menu.eleven.item .item{width:9.09%}.ui.menu.twelve.item .item{width:8.333%}.ui.menu.fixed{position:fixed;z-index:101;margin:0;width:100%}.ui.menu.fixed,.ui.menu.fixed .item:first-child,.ui.menu.fixed .item:last-child{border-radius:0!important}.ui.fixed.menu,.ui[class*="top fixed"].menu{top:0;left:0;right:auto;bottom:auto}.ui[class*="top fixed"].menu{border-top:none;border-left:none;border-right:none}.ui[class*="right fixed"].menu{border-top:none;border-bottom:none;border-right:none;top:0;right:0;left:auto;bottom:auto;width:auto;height:100%}.ui[class*="bottom fixed"].menu{border-bottom:none;border-left:none;border-right:none;bottom:0;left:0;top:auto;right:auto}.ui[class*="left fixed"].menu{border-top:none;border-bottom:none;border-left:none;top:0;left:0;right:auto;bottom:auto;width:auto;height:100%}.ui.fixed.menu+.ui.grid{padding-top:2.75rem}.ui.pointing.menu .item:after{visibility:hidden;position:absolute;content:'';top:100%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);background:0 0;margin:.5px 0 0;width:.57142857em;height:.57142857em;border:none;border-bottom:1px solid #d4d4d5;border-right:1px solid #d4d4d5;z-index:2;-webkit-transition:background .1s ease;transition:background .1s ease}.ui.vertical.pointing.menu .item:after{position:absolute;top:50%;right:0;bottom:auto;left:auto;-webkit-transform:translateX(50%) translateY(-50%) rotate(45deg);transform:translateX(50%) translateY(-50%) rotate(45deg);margin:0 -.5px 0 0;border:none;border-top:1px solid #d4d4d5;border-right:1px solid #d4d4d5}.ui.pointing.menu .active.item:after{visibility:visible}.ui.pointing.menu .active.dropdown.item:after{visibility:hidden}.ui.pointing.menu .active.item .menu .active.item:after,.ui.pointing.menu .dropdown.active.item:after{display:none}.ui.pointing.menu .active.item:hover:after{background-color:#f2f2f2}.ui.pointing.menu .active.item:after{background-color:#f2f2f2}.ui.pointing.menu .active.item:hover:after{background-color:#f2f2f2}.ui.vertical.pointing.menu .active.item:hover:after{background-color:#f2f2f2}.ui.vertical.pointing.menu .active.item:after{background-color:#f2f2f2}.ui.vertical.pointing.menu .menu .active.item:after{background-color:#fff}.ui.attached.menu{top:0;bottom:0;border-radius:0;margin:0 -1px;width:calc(100% + 2px);max-width:calc(100% + 2px);-webkit-box-shadow:none;box-shadow:none}.ui.attached+.ui.attached.menu:not(.top){border-top:none}.ui[class*="top attached"].menu{bottom:0;margin-bottom:0;top:0;margin-top:1rem;border-radius:.28571429rem .28571429rem 0 0}.ui.menu[class*="top attached"]:first-child{margin-top:0}.ui[class*="bottom attached"].menu{bottom:0;margin-top:0;top:0;margin-bottom:1rem;-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15),none;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),none;border-radius:0 0 .28571429rem .28571429rem}.ui[class*="bottom attached"].menu:last-child{margin-bottom:0}.ui.top.attached.menu>.item:first-child{border-radius:.28571429rem 0 0 0}.ui.bottom.attached.menu>.item:first-child{border-radius:0 0 0 .28571429rem}.ui.attached.menu:not(.tabular){border:1px solid #d4d4d5}.ui.attached.inverted.menu{border:none}.ui.attached.tabular.menu{margin-left:0;margin-right:0;width:100%}.ui.mini.menu{font-size:.78571429rem}.ui.mini.vertical.menu{width:9rem}.ui.tiny.menu{font-size:.85714286rem}.ui.tiny.vertical.menu{width:11rem}.ui.small.menu{font-size:.92857143rem}.ui.small.vertical.menu{width:13rem}.ui.menu{font-size:1rem}.ui.vertical.menu{width:15rem}.ui.large.menu{font-size:1.07142857rem}.ui.large.vertical.menu{width:18rem}.ui.huge.menu{font-size:1.21428571rem}.ui.huge.vertical.menu{width:22rem}.ui.big.menu{font-size:1.14285714rem}.ui.big.vertical.menu{width:20rem}.ui.massive.menu{font-size:1.28571429rem}.ui.massive.vertical.menu{width:25rem}/*! -* # Semantic UI 2.4.0 - Message -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.message{position:relative;min-height:1em;margin:1em 0;background:#f8f8f9;padding:1em 1.5em;line-height:1.4285em;color:rgba(0,0,0,.87);-webkit-transition:opacity .1s ease,color .1s ease,background .1s ease,-webkit-box-shadow .1s ease;transition:opacity .1s ease,color .1s ease,background .1s ease,-webkit-box-shadow .1s ease;transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease;transition:opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease,-webkit-box-shadow .1s ease;border-radius:.28571429rem;-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.22) inset,0 0 0 0 transparent;box-shadow:0 0 0 1px rgba(34,36,38,.22) inset,0 0 0 0 transparent}.ui.message:first-child{margin-top:0}.ui.message:last-child{margin-bottom:0}.ui.message .header{display:block;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;margin:-.14285714em 0 0 0}.ui.message .header:not(.ui){font-size:1.14285714em}.ui.message p{opacity:.85;margin:.75em 0}.ui.message p:first-child{margin-top:0}.ui.message p:last-child{margin-bottom:0}.ui.message .header+p{margin-top:.25em}.ui.message .list:not(.ui){text-align:left;padding:0;opacity:.85;list-style-position:inside;margin:.5em 0 0}.ui.message .list:not(.ui):first-child{margin-top:0}.ui.message .list:not(.ui):last-child{margin-bottom:0}.ui.message .list:not(.ui) li{position:relative;list-style-type:none;margin:0 0 .3em 1em;padding:0}.ui.message .list:not(.ui) li:before{position:absolute;content:'•';left:-1em;height:100%;vertical-align:baseline}.ui.message .list:not(.ui) li:last-child{margin-bottom:0}.ui.message>.icon{margin-right:.6em}.ui.message>.close.icon{cursor:pointer;position:absolute;margin:0;top:.78575em;right:.5em;opacity:.7;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.message>.close.icon:hover{opacity:1}.ui.message>:first-child{margin-top:0}.ui.message>:last-child{margin-bottom:0}.ui.dropdown .menu>.message{margin:0 -1px}.ui.visible.visible.visible.visible.message{display:block}.ui.icon.visible.visible.visible.visible.message{display:-webkit-box;display:-ms-flexbox;display:flex}.ui.hidden.hidden.hidden.hidden.message{display:none}.ui.compact.message{display:inline-block}.ui.compact.icon.message{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.ui.attached.message{margin-bottom:-1px;border-radius:.28571429rem .28571429rem 0 0;-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.15) inset;box-shadow:0 0 0 1px rgba(34,36,38,.15) inset;margin-left:-1px;margin-right:-1px}.ui.attached+.ui.attached.message:not(.top):not(.bottom){margin-top:-1px;border-radius:0}.ui.bottom.attached.message{margin-top:-1px;border-radius:0 0 .28571429rem .28571429rem;-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.15) inset,0 1px 2px 0 rgba(34,36,38,.15);box-shadow:0 0 0 1px rgba(34,36,38,.15) inset,0 1px 2px 0 rgba(34,36,38,.15)}.ui.bottom.attached.message:not(:last-child){margin-bottom:1em}.ui.attached.icon.message{width:auto}.ui.icon.message{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ui.icon.message>.icon:not(.close){display:block;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;line-height:1;vertical-align:middle;font-size:3em;opacity:.8}.ui.icon.message>.content{display:block;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;vertical-align:middle}.ui.icon.message .icon:not(.close)+.content{padding-left:0}.ui.icon.message .circular.icon{width:1em}.ui.floating.message{-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.22) inset,0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);box-shadow:0 0 0 1px rgba(34,36,38,.22) inset,0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.black.message{background-color:#1b1c1d;color:rgba(255,255,255,.9)}.ui.positive.message{background-color:#fcfff5;color:#2c662d}.ui.attached.positive.message,.ui.positive.message{-webkit-box-shadow:0 0 0 1px #a3c293 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #a3c293 inset,0 0 0 0 transparent}.ui.positive.message .header{color:#1a531b}.ui.negative.message{background-color:#fff6f6;color:#9f3a38}.ui.attached.negative.message,.ui.negative.message{-webkit-box-shadow:0 0 0 1px #e0b4b4 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #e0b4b4 inset,0 0 0 0 transparent}.ui.negative.message .header{color:#912d2b}.ui.info.message{background-color:#f8ffff;color:#276f86}.ui.attached.info.message,.ui.info.message{-webkit-box-shadow:0 0 0 1px #a9d5de inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #a9d5de inset,0 0 0 0 transparent}.ui.info.message .header{color:#0e566c}.ui.warning.message{background-color:#fffaf3;color:#573a08}.ui.attached.warning.message,.ui.warning.message{-webkit-box-shadow:0 0 0 1px #c9ba9b inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #c9ba9b inset,0 0 0 0 transparent}.ui.warning.message .header{color:#794b02}.ui.error.message{background-color:#fff6f6;color:#9f3a38}.ui.attached.error.message,.ui.error.message{-webkit-box-shadow:0 0 0 1px #e0b4b4 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #e0b4b4 inset,0 0 0 0 transparent}.ui.error.message .header{color:#912d2b}.ui.success.message{background-color:#fcfff5;color:#2c662d}.ui.attached.success.message,.ui.success.message{-webkit-box-shadow:0 0 0 1px #a3c293 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #a3c293 inset,0 0 0 0 transparent}.ui.success.message .header{color:#1a531b}.ui.black.message,.ui.inverted.message{background-color:#1b1c1d;color:rgba(255,255,255,.9)}.ui.red.message{background-color:#ffe8e6;color:#db2828;-webkit-box-shadow:0 0 0 1px #db2828 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #db2828 inset,0 0 0 0 transparent}.ui.red.message .header{color:#c82121}.ui.orange.message{background-color:#ffedde;color:#f2711c;-webkit-box-shadow:0 0 0 1px #f2711c inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #f2711c inset,0 0 0 0 transparent}.ui.orange.message .header{color:#e7640d}.ui.yellow.message{background-color:#fff8db;color:#b58105;-webkit-box-shadow:0 0 0 1px #b58105 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #b58105 inset,0 0 0 0 transparent}.ui.yellow.message .header{color:#9c6f04}.ui.olive.message{background-color:#fbfdef;color:#8abc1e;-webkit-box-shadow:0 0 0 1px #8abc1e inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #8abc1e inset,0 0 0 0 transparent}.ui.olive.message .header{color:#7aa61a}.ui.green.message{background-color:#e5f9e7;color:#1ebc30;-webkit-box-shadow:0 0 0 1px #1ebc30 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #1ebc30 inset,0 0 0 0 transparent}.ui.green.message .header{color:#1aa62a}.ui.teal.message{background-color:#e1f7f7;color:#10a3a3;-webkit-box-shadow:0 0 0 1px #10a3a3 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #10a3a3 inset,0 0 0 0 transparent}.ui.teal.message .header{color:#0e8c8c}.ui.blue.message{background-color:#dff0ff;color:#2185d0;-webkit-box-shadow:0 0 0 1px #2185d0 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #2185d0 inset,0 0 0 0 transparent}.ui.blue.message .header{color:#1e77ba}.ui.violet.message{background-color:#eae7ff;color:#6435c9;-webkit-box-shadow:0 0 0 1px #6435c9 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #6435c9 inset,0 0 0 0 transparent}.ui.violet.message .header{color:#5a30b5}.ui.purple.message{background-color:#f6e7ff;color:#a333c8;-webkit-box-shadow:0 0 0 1px #a333c8 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #a333c8 inset,0 0 0 0 transparent}.ui.purple.message .header{color:#922eb4}.ui.pink.message{background-color:#ffe3fb;color:#e03997;-webkit-box-shadow:0 0 0 1px #e03997 inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #e03997 inset,0 0 0 0 transparent}.ui.pink.message .header{color:#dd238b}.ui.brown.message{background-color:#f1e2d3;color:#a5673f;-webkit-box-shadow:0 0 0 1px #a5673f inset,0 0 0 0 transparent;box-shadow:0 0 0 1px #a5673f inset,0 0 0 0 transparent}.ui.brown.message .header{color:#935b38}.ui.mini.message{font-size:.78571429em}.ui.tiny.message{font-size:.85714286em}.ui.small.message{font-size:.92857143em}.ui.message{font-size:1em}.ui.large.message{font-size:1.14285714em}.ui.big.message{font-size:1.28571429em}.ui.huge.message{font-size:1.42857143em}.ui.massive.message{font-size:1.71428571em}/*! -* # Semantic UI 2.4.0 - Table -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.table{width:100%;background:#fff;margin:1em 0;border:1px solid rgba(34,36,38,.15);-webkit-box-shadow:none;box-shadow:none;border-radius:.28571429rem;text-align:left;color:rgba(0,0,0,.87);border-collapse:separate;border-spacing:0}.ui.table:first-child{margin-top:0}.ui.table:last-child{margin-bottom:0}.ui.table td,.ui.table th{-webkit-transition:background .1s ease,color .1s ease;transition:background .1s ease,color .1s ease}.ui.table thead{-webkit-box-shadow:none;box-shadow:none}.ui.table thead th{cursor:auto;background:#f9fafb;text-align:inherit;color:rgba(0,0,0,.87);padding:.92857143em .78571429em;vertical-align:inherit;font-style:none;font-weight:700;text-transform:none;border-bottom:1px solid rgba(34,36,38,.1);border-left:none}.ui.table thead tr>th:first-child{border-left:none}.ui.table thead tr:first-child>th:first-child{border-radius:.28571429rem 0 0 0}.ui.table thead tr:first-child>th:last-child{border-radius:0 .28571429rem 0 0}.ui.table thead tr:first-child>th:only-child{border-radius:.28571429rem .28571429rem 0 0}.ui.table tfoot{-webkit-box-shadow:none;box-shadow:none}.ui.table tfoot th{cursor:auto;border-top:1px solid rgba(34,36,38,.15);background:#f9fafb;text-align:inherit;color:rgba(0,0,0,.87);padding:.78571429em .78571429em;vertical-align:middle;font-style:normal;font-weight:400;text-transform:none}.ui.table tfoot tr>th:first-child{border-left:none}.ui.table tfoot tr:first-child>th:first-child{border-radius:0 0 0 .28571429rem}.ui.table tfoot tr:first-child>th:last-child{border-radius:0 0 .28571429rem 0}.ui.table tfoot tr:first-child>th:only-child{border-radius:0 0 .28571429rem .28571429rem}.ui.table tr td{border-top:1px solid rgba(34,36,38,.1)}.ui.table tr:first-child td{border-top:none}.ui.table tbody+tbody tr:first-child td{border-top:1px solid rgba(34,36,38,.1)}.ui.table td{padding:.78571429em .78571429em;text-align:inherit}.ui.table>.icon{vertical-align:baseline}.ui.table>.icon:only-child{margin:0}.ui.table.segment{padding:0}.ui.table.segment:after{display:none}.ui.table.segment.stacked:after{display:block}@media only screen and (max-width:767px){.ui.table:not(.unstackable){width:100%}.ui.table:not(.unstackable) tbody,.ui.table:not(.unstackable) tr,.ui.table:not(.unstackable) tr>td,.ui.table:not(.unstackable) tr>th{width:auto!important;display:block!important}.ui.table:not(.unstackable){padding:0}.ui.table:not(.unstackable) thead{display:block}.ui.table:not(.unstackable) tfoot{display:block}.ui.table:not(.unstackable) tr{padding-top:1em;padding-bottom:1em;-webkit-box-shadow:0 -1px 0 0 rgba(0,0,0,.1) inset!important;box-shadow:0 -1px 0 0 rgba(0,0,0,.1) inset!important}.ui.table:not(.unstackable) tr>td,.ui.table:not(.unstackable) tr>th{background:0 0;border:none!important;padding:.25em .75em!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui.table:not(.unstackable) td:first-child,.ui.table:not(.unstackable) th:first-child{font-weight:700}.ui.definition.table:not(.unstackable) thead th:first-child{-webkit-box-shadow:none!important;box-shadow:none!important}}.ui.table td .image,.ui.table td .image img,.ui.table th .image,.ui.table th .image img{max-width:none}.ui.structured.table{border-collapse:collapse}.ui.structured.table thead th{border-left:none;border-right:none}.ui.structured.sortable.table thead th{border-left:1px solid rgba(34,36,38,.15);border-right:1px solid rgba(34,36,38,.15)}.ui.structured.basic.table th{border-left:none;border-right:none}.ui.structured.celled.table tr td,.ui.structured.celled.table tr th{border-left:1px solid rgba(34,36,38,.1);border-right:1px solid rgba(34,36,38,.1)}.ui.definition.table thead:not(.full-width) th:first-child{pointer-events:none;background:0 0;font-weight:400;color:rgba(0,0,0,.4);-webkit-box-shadow:-1px -1px 0 1px #fff;box-shadow:-1px -1px 0 1px #fff}.ui.definition.table tfoot:not(.full-width) th:first-child{pointer-events:none;background:0 0;font-weight:rgba(0,0,0,.4);color:normal;-webkit-box-shadow:1px 1px 0 1px #fff;box-shadow:1px 1px 0 1px #fff}.ui.celled.definition.table thead:not(.full-width) th:first-child{-webkit-box-shadow:0 -1px 0 1px #fff;box-shadow:0 -1px 0 1px #fff}.ui.celled.definition.table tfoot:not(.full-width) th:first-child{-webkit-box-shadow:0 1px 0 1px #fff;box-shadow:0 1px 0 1px #fff}.ui.definition.table tr td.definition,.ui.definition.table tr td:first-child:not(.ignored){background:rgba(0,0,0,.03);font-weight:700;color:rgba(0,0,0,.95);text-transform:'';-webkit-box-shadow:'';box-shadow:'';text-align:'';font-size:1em;padding-left:'';padding-right:''}.ui.definition.table thead:not(.full-width) th:nth-child(2){border-left:1px solid rgba(34,36,38,.15)}.ui.definition.table tfoot:not(.full-width) th:nth-child(2){border-left:1px solid rgba(34,36,38,.15)}.ui.definition.table td:nth-child(2){border-left:1px solid rgba(34,36,38,.15)}.ui.table td.positive,.ui.table tr.positive{-webkit-box-shadow:0 0 0 #a3c293 inset;box-shadow:0 0 0 #a3c293 inset}.ui.table td.positive,.ui.table tr.positive{background:#fcfff5!important;color:#2c662d!important}.ui.table td.negative,.ui.table tr.negative{-webkit-box-shadow:0 0 0 #e0b4b4 inset;box-shadow:0 0 0 #e0b4b4 inset}.ui.table td.negative,.ui.table tr.negative{background:#fff6f6!important;color:#9f3a38!important}.ui.table td.error,.ui.table tr.error{-webkit-box-shadow:0 0 0 #e0b4b4 inset;box-shadow:0 0 0 #e0b4b4 inset}.ui.table td.error,.ui.table tr.error{background:#fff6f6!important;color:#9f3a38!important}.ui.table td.warning,.ui.table tr.warning{-webkit-box-shadow:0 0 0 #c9ba9b inset;box-shadow:0 0 0 #c9ba9b inset}.ui.table td.warning,.ui.table tr.warning{background:#fffaf3!important;color:#573a08!important}.ui.table td.active,.ui.table tr.active{-webkit-box-shadow:0 0 0 rgba(0,0,0,.87) inset;box-shadow:0 0 0 rgba(0,0,0,.87) inset}.ui.table td.active,.ui.table tr.active{background:#e0e0e0!important;color:rgba(0,0,0,.87)!important}.ui.table tr td.disabled,.ui.table tr.disabled td,.ui.table tr.disabled:hover,.ui.table tr:hover td.disabled{pointer-events:none;color:rgba(40,40,40,.3)}@media only screen and (max-width:991px){.ui[class*="tablet stackable"].table,.ui[class*="tablet stackable"].table tbody,.ui[class*="tablet stackable"].table tr,.ui[class*="tablet stackable"].table tr>td,.ui[class*="tablet stackable"].table tr>th{width:100%!important;display:block!important}.ui[class*="tablet stackable"].table{padding:0}.ui[class*="tablet stackable"].table thead{display:block}.ui[class*="tablet stackable"].table tfoot{display:block}.ui[class*="tablet stackable"].table tr{padding-top:1em;padding-bottom:1em;-webkit-box-shadow:0 -1px 0 0 rgba(0,0,0,.1) inset!important;box-shadow:0 -1px 0 0 rgba(0,0,0,.1) inset!important}.ui[class*="tablet stackable"].table tr>td,.ui[class*="tablet stackable"].table tr>th{background:0 0;border:none!important;padding:.25em .75em;-webkit-box-shadow:none!important;box-shadow:none!important}.ui.definition[class*="tablet stackable"].table thead th:first-child{-webkit-box-shadow:none!important;box-shadow:none!important}}.ui.table [class*="left aligned"],.ui.table[class*="left aligned"]{text-align:left}.ui.table [class*="center aligned"],.ui.table[class*="center aligned"]{text-align:center}.ui.table [class*="right aligned"],.ui.table[class*="right aligned"]{text-align:right}.ui.table [class*="top aligned"],.ui.table[class*="top aligned"]{vertical-align:top}.ui.table [class*="middle aligned"],.ui.table[class*="middle aligned"]{vertical-align:middle}.ui.table [class*="bottom aligned"],.ui.table[class*="bottom aligned"]{vertical-align:bottom}.ui.table td.collapsing,.ui.table th.collapsing{width:1px;white-space:nowrap}.ui.fixed.table{table-layout:fixed}.ui.fixed.table td,.ui.fixed.table th{overflow:hidden;text-overflow:ellipsis}.ui.selectable.table tbody tr:hover,.ui.table tbody tr td.selectable:hover{background:rgba(0,0,0,.05)!important;color:rgba(0,0,0,.95)!important}.ui.inverted.table tbody tr td.selectable:hover,.ui.selectable.inverted.table tbody tr:hover{background:rgba(255,255,255,.08)!important;color:#fff!important}.ui.table tbody tr td.selectable{padding:0}.ui.table tbody tr td.selectable>a:not(.ui){display:block;color:inherit;padding:.78571429em .78571429em}.ui.selectable.table tr.error:hover,.ui.selectable.table tr:hover td.error,.ui.table tr td.selectable.error:hover{background:#ffe7e7!important;color:#943634!important}.ui.selectable.table tr.warning:hover,.ui.selectable.table tr:hover td.warning,.ui.table tr td.selectable.warning:hover{background:#fff4e4!important;color:#493107!important}.ui.selectable.table tr.active:hover,.ui.selectable.table tr:hover td.active,.ui.table tr td.selectable.active:hover{background:#e0e0e0!important;color:rgba(0,0,0,.87)!important}.ui.selectable.table tr.positive:hover,.ui.selectable.table tr:hover td.positive,.ui.table tr td.selectable.positive:hover{background:#f7ffe6!important;color:#275b28!important}.ui.selectable.table tr.negative:hover,.ui.selectable.table tr:hover td.negative,.ui.table tr td.selectable.negative:hover{background:#ffe7e7!important;color:#943634!important}.ui.attached.table{top:0;bottom:0;border-radius:0;margin:0 -1px;width:calc(100% + 2px);max-width:calc(100% + 2px);-webkit-box-shadow:none;box-shadow:none;border:1px solid #d4d4d5}.ui.attached+.ui.attached.table:not(.top){border-top:none}.ui[class*="top attached"].table{bottom:0;margin-bottom:0;top:0;margin-top:1em;border-radius:.28571429rem .28571429rem 0 0}.ui.table[class*="top attached"]:first-child{margin-top:0}.ui[class*="bottom attached"].table{bottom:0;margin-top:0;top:0;margin-bottom:1em;-webkit-box-shadow:none,none;box-shadow:none,none;border-radius:0 0 .28571429rem .28571429rem}.ui[class*="bottom attached"].table:last-child{margin-bottom:0}.ui.striped.table tbody tr:nth-child(2n),.ui.striped.table>tr:nth-child(2n){background-color:rgba(0,0,50,.02)}.ui.inverted.striped.table tbody tr:nth-child(2n),.ui.inverted.striped.table>tr:nth-child(2n){background-color:rgba(255,255,255,.05)}.ui.striped.selectable.selectable.selectable.table tbody tr.active:hover{background:#efefef!important;color:rgba(0,0,0,.95)!important}.ui.table [class*="single line"],.ui.table[class*="single line"]{white-space:nowrap}.ui.table [class*="single line"],.ui.table[class*="single line"]{white-space:nowrap}.ui.red.table{border-top:.2em solid #db2828}.ui.inverted.red.table{background-color:#db2828!important;color:#fff!important}.ui.orange.table{border-top:.2em solid #f2711c}.ui.inverted.orange.table{background-color:#f2711c!important;color:#fff!important}.ui.yellow.table{border-top:.2em solid #fbbd08}.ui.inverted.yellow.table{background-color:#fbbd08!important;color:#fff!important}.ui.olive.table{border-top:.2em solid #b5cc18}.ui.inverted.olive.table{background-color:#b5cc18!important;color:#fff!important}.ui.green.table{border-top:.2em solid #21ba45}.ui.inverted.green.table{background-color:#21ba45!important;color:#fff!important}.ui.teal.table{border-top:.2em solid #00b5ad}.ui.inverted.teal.table{background-color:#00b5ad!important;color:#fff!important}.ui.blue.table{border-top:.2em solid #2185d0}.ui.inverted.blue.table{background-color:#2185d0!important;color:#fff!important}.ui.violet.table{border-top:.2em solid #6435c9}.ui.inverted.violet.table{background-color:#6435c9!important;color:#fff!important}.ui.purple.table{border-top:.2em solid #a333c8}.ui.inverted.purple.table{background-color:#a333c8!important;color:#fff!important}.ui.pink.table{border-top:.2em solid #e03997}.ui.inverted.pink.table{background-color:#e03997!important;color:#fff!important}.ui.brown.table{border-top:.2em solid #a5673f}.ui.inverted.brown.table{background-color:#a5673f!important;color:#fff!important}.ui.grey.table{border-top:.2em solid #767676}.ui.inverted.grey.table{background-color:#767676!important;color:#fff!important}.ui.black.table{border-top:.2em solid #1b1c1d}.ui.inverted.black.table{background-color:#1b1c1d!important;color:#fff!important}.ui.one.column.table td{width:100%}.ui.two.column.table td{width:50%}.ui.three.column.table td{width:33.33333333%}.ui.four.column.table td{width:25%}.ui.five.column.table td{width:20%}.ui.six.column.table td{width:16.66666667%}.ui.seven.column.table td{width:14.28571429%}.ui.eight.column.table td{width:12.5%}.ui.nine.column.table td{width:11.11111111%}.ui.ten.column.table td{width:10%}.ui.eleven.column.table td{width:9.09090909%}.ui.twelve.column.table td{width:8.33333333%}.ui.thirteen.column.table td{width:7.69230769%}.ui.fourteen.column.table td{width:7.14285714%}.ui.fifteen.column.table td{width:6.66666667%}.ui.sixteen.column.table td{width:6.25%}.ui.table td.one.wide,.ui.table th.one.wide{width:6.25%}.ui.table td.two.wide,.ui.table th.two.wide{width:12.5%}.ui.table td.three.wide,.ui.table th.three.wide{width:18.75%}.ui.table td.four.wide,.ui.table th.four.wide{width:25%}.ui.table td.five.wide,.ui.table th.five.wide{width:31.25%}.ui.table td.six.wide,.ui.table th.six.wide{width:37.5%}.ui.table td.seven.wide,.ui.table th.seven.wide{width:43.75%}.ui.table td.eight.wide,.ui.table th.eight.wide{width:50%}.ui.table td.nine.wide,.ui.table th.nine.wide{width:56.25%}.ui.table td.ten.wide,.ui.table th.ten.wide{width:62.5%}.ui.table td.eleven.wide,.ui.table th.eleven.wide{width:68.75%}.ui.table td.twelve.wide,.ui.table th.twelve.wide{width:75%}.ui.table td.thirteen.wide,.ui.table th.thirteen.wide{width:81.25%}.ui.table td.fourteen.wide,.ui.table th.fourteen.wide{width:87.5%}.ui.table td.fifteen.wide,.ui.table th.fifteen.wide{width:93.75%}.ui.table td.sixteen.wide,.ui.table th.sixteen.wide{width:100%}.ui.sortable.table thead th{cursor:pointer;white-space:nowrap;border-left:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87)}.ui.sortable.table thead th:first-child{border-left:none}.ui.sortable.table thead th.sorted,.ui.sortable.table thead th.sorted:hover{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui.sortable.table thead th:after{display:none;font-style:normal;font-weight:400;text-decoration:inherit;content:'';height:1em;width:auto;opacity:.8;margin:0 0 0 .5em;font-family:Icons}.ui.sortable.table thead th.ascending:after{content:'\f0d8'}.ui.sortable.table thead th.descending:after{content:'\f0d7'}.ui.sortable.table th.disabled:hover{cursor:auto;color:rgba(40,40,40,.3)}.ui.sortable.table thead th:hover{background:rgba(0,0,0,.05);color:rgba(0,0,0,.8)}.ui.sortable.table thead th.sorted{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95)}.ui.sortable.table thead th.sorted:after{display:inline-block}.ui.sortable.table thead th.sorted:hover{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95)}.ui.inverted.sortable.table thead th.sorted{background:rgba(255,255,255,.15) -webkit-gradient(linear,left top,left bottom,from(transparent),to(rgba(0,0,0,.05)));background:rgba(255,255,255,.15) -webkit-linear-gradient(transparent,rgba(0,0,0,.05));background:rgba(255,255,255,.15) linear-gradient(transparent,rgba(0,0,0,.05));color:#fff}.ui.inverted.sortable.table thead th:hover{background:rgba(255,255,255,.08) -webkit-gradient(linear,left top,left bottom,from(transparent),to(rgba(0,0,0,.05)));background:rgba(255,255,255,.08) -webkit-linear-gradient(transparent,rgba(0,0,0,.05));background:rgba(255,255,255,.08) linear-gradient(transparent,rgba(0,0,0,.05));color:#fff}.ui.inverted.sortable.table thead th{border-left-color:transparent;border-right-color:transparent}.ui.inverted.table{background:#333;color:rgba(255,255,255,.9);border:none}.ui.inverted.table th{background-color:rgba(0,0,0,.15);border-color:rgba(255,255,255,.1)!important;color:rgba(255,255,255,.9)!important}.ui.inverted.table tr td{border-color:rgba(255,255,255,.1)!important}.ui.inverted.table tr td.disabled,.ui.inverted.table tr.disabled td,.ui.inverted.table tr.disabled:hover td,.ui.inverted.table tr:hover td.disabled{pointer-events:none;color:rgba(225,225,225,.3)}.ui.inverted.definition.table tfoot:not(.full-width) th:first-child,.ui.inverted.definition.table thead:not(.full-width) th:first-child{background:#fff}.ui.inverted.definition.table tr td:first-child{background:rgba(255,255,255,.02);color:#fff}.ui.collapsing.table{width:auto}.ui.basic.table{background:0 0;border:1px solid rgba(34,36,38,.15);-webkit-box-shadow:none;box-shadow:none}.ui.basic.table tfoot,.ui.basic.table thead{-webkit-box-shadow:none;box-shadow:none}.ui.basic.table th{background:0 0;border-left:none}.ui.basic.table tbody tr{border-bottom:1px solid rgba(0,0,0,.1)}.ui.basic.table td{background:0 0}.ui.basic.striped.table tbody tr:nth-child(2n){background-color:rgba(0,0,0,.05)!important}.ui[class*="very basic"].table{border:none}.ui[class*="very basic"].table:not(.sortable):not(.striped) td,.ui[class*="very basic"].table:not(.sortable):not(.striped) th{padding:''}.ui[class*="very basic"].table:not(.sortable):not(.striped) td:first-child,.ui[class*="very basic"].table:not(.sortable):not(.striped) th:first-child{padding-left:0}.ui[class*="very basic"].table:not(.sortable):not(.striped) td:last-child,.ui[class*="very basic"].table:not(.sortable):not(.striped) th:last-child{padding-right:0}.ui[class*="very basic"].table:not(.sortable):not(.striped) thead tr:first-child th{padding-top:0}.ui.celled.table tr td,.ui.celled.table tr th{border-left:1px solid rgba(34,36,38,.1)}.ui.celled.table tr td:first-child,.ui.celled.table tr th:first-child{border-left:none}.ui.padded.table th{padding-left:1em;padding-right:1em}.ui.padded.table td,.ui.padded.table th{padding:1em 1em}.ui[class*="very padded"].table th{padding-left:1.5em;padding-right:1.5em}.ui[class*="very padded"].table td{padding:1.5em 1.5em}.ui.compact.table th{padding-left:.7em;padding-right:.7em}.ui.compact.table td{padding:.5em .7em}.ui[class*="very compact"].table th{padding-left:.6em;padding-right:.6em}.ui[class*="very compact"].table td{padding:.4em .6em}.ui.small.table{font-size:.9em}.ui.table{font-size:1em}.ui.large.table{font-size:1.1em}/*! -* # Semantic UI 2.4.0 - Ad -* http://github.com/semantic-org/semantic-ui/ -* -* -* Copyright 2013 Contributors -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.ad{display:block;overflow:hidden;margin:1em 0}.ui.ad:first-child{margin:0}.ui.ad:last-child{margin:0}.ui.ad iframe{margin:0;padding:0;border:none;overflow:hidden}.ui.leaderboard.ad{width:728px;height:90px}.ui[class*="medium rectangle"].ad{width:300px;height:250px}.ui[class*="large rectangle"].ad{width:336px;height:280px}.ui[class*="half page"].ad{width:300px;height:600px}.ui.square.ad{width:250px;height:250px}.ui[class*="small square"].ad{width:200px;height:200px}.ui[class*="small rectangle"].ad{width:180px;height:150px}.ui[class*="vertical rectangle"].ad{width:240px;height:400px}.ui.button.ad{width:120px;height:90px}.ui[class*="square button"].ad{width:125px;height:125px}.ui[class*="small button"].ad{width:120px;height:60px}.ui.skyscraper.ad{width:120px;height:600px}.ui[class*="wide skyscraper"].ad{width:160px}.ui.banner.ad{width:468px;height:60px}.ui[class*="vertical banner"].ad{width:120px;height:240px}.ui[class*="top banner"].ad{width:930px;height:180px}.ui[class*="half banner"].ad{width:234px;height:60px}.ui[class*="large leaderboard"].ad{width:970px;height:90px}.ui.billboard.ad{width:970px;height:250px}.ui.panorama.ad{width:980px;height:120px}.ui.netboard.ad{width:580px;height:400px}.ui[class*="large mobile banner"].ad{width:320px;height:100px}.ui[class*="mobile leaderboard"].ad{width:320px;height:50px}.ui.mobile.ad{display:none}@media only screen and (max-width:767px){.ui.mobile.ad{display:block}}.ui.centered.ad{margin-left:auto;margin-right:auto}.ui.test.ad{position:relative;background:#545454}.ui.test.ad:after{position:absolute;top:50%;left:50%;width:100%;text-align:center;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);content:'Ad';color:#fff;font-size:1em;font-weight:700}.ui.mobile.test.ad:after{font-size:.85714286em}.ui.test.ad[data-text]:after{content:attr(data-text)}/*! -* # Semantic UI 2.4.0 - Item -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.card,.ui.cards>.card{max-width:100%;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:290px;min-height:0;background:#fff;padding:0;border:none;border-radius:.28571429rem;-webkit-box-shadow:0 1px 3px 0 #d4d4d5,0 0 0 1px #d4d4d5;box-shadow:0 1px 3px 0 #d4d4d5,0 0 0 1px #d4d4d5;-webkit-transition:-webkit-box-shadow .1s ease,-webkit-transform .1s ease;transition:-webkit-box-shadow .1s ease,-webkit-transform .1s ease;transition:box-shadow .1s ease,transform .1s ease;transition:box-shadow .1s ease,transform .1s ease,-webkit-box-shadow .1s ease,-webkit-transform .1s ease;z-index:''}.ui.card{margin:1em 0}.ui.card a,.ui.cards>.card a{cursor:pointer}.ui.card:first-child{margin-top:0}.ui.card:last-child{margin-bottom:0}.ui.cards{display:-webkit-box;display:-ms-flexbox;display:flex;margin:-.875em -.5em;-ms-flex-wrap:wrap;flex-wrap:wrap}.ui.cards>.card{display:-webkit-box;display:-ms-flexbox;display:flex;margin:.875em .5em;float:none}.ui.card:after,.ui.cards:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.cards~.ui.cards{margin-top:.875em}.ui.card>:first-child,.ui.cards>.card>:first-child{border-radius:.28571429rem .28571429rem 0 0!important;border-top:none!important}.ui.card>:last-child,.ui.cards>.card>:last-child{border-radius:0 0 .28571429rem .28571429rem!important}.ui.card>:only-child,.ui.cards>.card>:only-child{border-radius:.28571429rem!important}.ui.card>.image,.ui.cards>.card>.image{position:relative;display:block;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding:0;background:rgba(0,0,0,.05)}.ui.card>.image>img,.ui.cards>.card>.image>img{display:block;width:100%;height:auto;border-radius:inherit}.ui.card>.image:not(.ui)>img,.ui.cards>.card>.image:not(.ui)>img{border:none}.ui.card>.content,.ui.cards>.card>.content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;border:none;border-top:1px solid rgba(34,36,38,.1);background:0 0;margin:0;padding:1em 1em;-webkit-box-shadow:none;box-shadow:none;font-size:1em;border-radius:0}.ui.card>.content:after,.ui.cards>.card>.content:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.card>.content>.header,.ui.cards>.card>.content>.header{display:block;margin:'';font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;color:rgba(0,0,0,.85)}.ui.card>.content>.header:not(.ui),.ui.cards>.card>.content>.header:not(.ui){font-weight:700;font-size:1.28571429em;margin-top:-.21425em;line-height:1.28571429em}.ui.card>.content>.header+.description,.ui.card>.content>.meta+.description,.ui.cards>.card>.content>.header+.description,.ui.cards>.card>.content>.meta+.description{margin-top:.5em}.ui.card [class*="left floated"],.ui.cards>.card [class*="left floated"]{float:left}.ui.card [class*="right floated"],.ui.cards>.card [class*="right floated"]{float:right}.ui.card [class*="left aligned"],.ui.cards>.card [class*="left aligned"]{text-align:left}.ui.card [class*="center aligned"],.ui.cards>.card [class*="center aligned"]{text-align:center}.ui.card [class*="right aligned"],.ui.cards>.card [class*="right aligned"]{text-align:right}.ui.card .content img,.ui.cards>.card .content img{display:inline-block;vertical-align:middle;width:''}.ui.card .avatar img,.ui.card img.avatar,.ui.cards>.card .avatar img,.ui.cards>.card img.avatar{width:2em;height:2em;border-radius:500rem}.ui.card>.content>.description,.ui.cards>.card>.content>.description{clear:both;color:rgba(0,0,0,.68)}.ui.card>.content p,.ui.cards>.card>.content p{margin:0 0 .5em}.ui.card>.content p:last-child,.ui.cards>.card>.content p:last-child{margin-bottom:0}.ui.card .meta,.ui.cards>.card .meta{font-size:1em;color:rgba(0,0,0,.4)}.ui.card .meta *,.ui.cards>.card .meta *{margin-right:.3em}.ui.card .meta :last-child,.ui.cards>.card .meta :last-child{margin-right:0}.ui.card .meta [class*="right floated"],.ui.cards>.card .meta [class*="right floated"]{margin-right:0;margin-left:.3em}.ui.card>.content a:not(.ui),.ui.cards>.card>.content a:not(.ui){color:'';-webkit-transition:color .1s ease;transition:color .1s ease}.ui.card>.content a:not(.ui):hover,.ui.cards>.card>.content a:not(.ui):hover{color:''}.ui.card>.content>a.header,.ui.cards>.card>.content>a.header{color:rgba(0,0,0,.85)}.ui.card>.content>a.header:hover,.ui.cards>.card>.content>a.header:hover{color:#1e70bf}.ui.card .meta>a:not(.ui),.ui.cards>.card .meta>a:not(.ui){color:rgba(0,0,0,.4)}.ui.card .meta>a:not(.ui):hover,.ui.cards>.card .meta>a:not(.ui):hover{color:rgba(0,0,0,.87)}.ui.card>.button,.ui.card>.buttons,.ui.cards>.card>.button,.ui.cards>.card>.buttons{margin:0 -1px;width:calc(100% + 2px)}.ui.card .dimmer,.ui.cards>.card .dimmer{background-color:'';z-index:10}.ui.card>.content .star.icon,.ui.cards>.card>.content .star.icon{cursor:pointer;opacity:.75;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.card>.content .star.icon:hover,.ui.cards>.card>.content .star.icon:hover{opacity:1;color:#ffb70a}.ui.card>.content .active.star.icon,.ui.cards>.card>.content .active.star.icon{color:#ffe623}.ui.card>.content .like.icon,.ui.cards>.card>.content .like.icon{cursor:pointer;opacity:.75;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.card>.content .like.icon:hover,.ui.cards>.card>.content .like.icon:hover{opacity:1;color:#ff2733}.ui.card>.content .active.like.icon,.ui.cards>.card>.content .active.like.icon{color:#ff2733}.ui.card>.extra,.ui.cards>.card>.extra{max-width:100%;min-height:0!important;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;border-top:1px solid rgba(0,0,0,.05)!important;position:static;background:0 0;width:auto;margin:0 0;padding:.75em 1em;top:0;left:0;color:rgba(0,0,0,.4);-webkit-box-shadow:none;box-shadow:none;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.card>.extra a:not(.ui),.ui.cards>.card>.extra a:not(.ui){color:rgba(0,0,0,.4)}.ui.card>.extra a:not(.ui):hover,.ui.cards>.card>.extra a:not(.ui):hover{color:#1e70bf}.ui.raised.card,.ui.raised.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);box-shadow:0 0 0 1px #d4d4d5,0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.link.cards .raised.card:hover,.ui.link.raised.card:hover,.ui.raised.cards a.card:hover,a.ui.raised.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 4px 0 rgba(34,36,38,.15),0 2px 10px 0 rgba(34,36,38,.25);box-shadow:0 0 0 1px #d4d4d5,0 2px 4px 0 rgba(34,36,38,.15),0 2px 10px 0 rgba(34,36,38,.25)}.ui.raised.card,.ui.raised.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);box-shadow:0 0 0 1px #d4d4d5,0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.centered.cards{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.ui.centered.card{margin-left:auto;margin-right:auto}.ui.fluid.card{width:100%;max-width:9999px}.ui.cards a.card,.ui.link.card,.ui.link.cards .card,a.ui.card{-webkit-transform:none;transform:none}.ui.cards a.card:hover,.ui.link.card:hover,.ui.link.cards .card:hover,a.ui.card:hover{cursor:pointer;z-index:5;background:#fff;border:none;-webkit-box-shadow:0 1px 3px 0 #bcbdbd,0 0 0 1px #d4d4d5;box-shadow:0 1px 3px 0 #bcbdbd,0 0 0 1px #d4d4d5;-webkit-transform:translateY(-3px);transform:translateY(-3px)}.ui.cards>.red.card,.ui.red.card,.ui.red.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #db2828,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #db2828,0 1px 3px 0 #d4d4d5}.ui.cards>.red.card:hover,.ui.red.card:hover,.ui.red.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #d01919,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #d01919,0 1px 3px 0 #bcbdbd}.ui.cards>.orange.card,.ui.orange.card,.ui.orange.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #f2711c,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #f2711c,0 1px 3px 0 #d4d4d5}.ui.cards>.orange.card:hover,.ui.orange.card:hover,.ui.orange.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #f26202,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #f26202,0 1px 3px 0 #bcbdbd}.ui.cards>.yellow.card,.ui.yellow.card,.ui.yellow.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #fbbd08,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #fbbd08,0 1px 3px 0 #d4d4d5}.ui.cards>.yellow.card:hover,.ui.yellow.card:hover,.ui.yellow.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #eaae00,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #eaae00,0 1px 3px 0 #bcbdbd}.ui.cards>.olive.card,.ui.olive.card,.ui.olive.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #b5cc18,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #b5cc18,0 1px 3px 0 #d4d4d5}.ui.cards>.olive.card:hover,.ui.olive.card:hover,.ui.olive.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #a7bd0d,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #a7bd0d,0 1px 3px 0 #bcbdbd}.ui.cards>.green.card,.ui.green.card,.ui.green.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #21ba45,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #21ba45,0 1px 3px 0 #d4d4d5}.ui.cards>.green.card:hover,.ui.green.card:hover,.ui.green.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #16ab39,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #16ab39,0 1px 3px 0 #bcbdbd}.ui.cards>.teal.card,.ui.teal.card,.ui.teal.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #00b5ad,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #00b5ad,0 1px 3px 0 #d4d4d5}.ui.cards>.teal.card:hover,.ui.teal.card:hover,.ui.teal.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #009c95,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #009c95,0 1px 3px 0 #bcbdbd}.ui.blue.card,.ui.blue.cards>.card,.ui.cards>.blue.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #2185d0,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #2185d0,0 1px 3px 0 #d4d4d5}.ui.blue.card:hover,.ui.blue.cards>.card:hover,.ui.cards>.blue.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #1678c2,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #1678c2,0 1px 3px 0 #bcbdbd}.ui.cards>.violet.card,.ui.violet.card,.ui.violet.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #6435c9,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #6435c9,0 1px 3px 0 #d4d4d5}.ui.cards>.violet.card:hover,.ui.violet.card:hover,.ui.violet.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #5829bb,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #5829bb,0 1px 3px 0 #bcbdbd}.ui.cards>.purple.card,.ui.purple.card,.ui.purple.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #a333c8,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #a333c8,0 1px 3px 0 #d4d4d5}.ui.cards>.purple.card:hover,.ui.purple.card:hover,.ui.purple.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #9627ba,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #9627ba,0 1px 3px 0 #bcbdbd}.ui.cards>.pink.card,.ui.pink.card,.ui.pink.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #e03997,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #e03997,0 1px 3px 0 #d4d4d5}.ui.cards>.pink.card:hover,.ui.pink.card:hover,.ui.pink.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #e61a8d,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #e61a8d,0 1px 3px 0 #bcbdbd}.ui.brown.card,.ui.brown.cards>.card,.ui.cards>.brown.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #a5673f,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #a5673f,0 1px 3px 0 #d4d4d5}.ui.brown.card:hover,.ui.brown.cards>.card:hover,.ui.cards>.brown.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #975b33,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #975b33,0 1px 3px 0 #bcbdbd}.ui.cards>.grey.card,.ui.grey.card,.ui.grey.cards>.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #767676,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #767676,0 1px 3px 0 #d4d4d5}.ui.cards>.grey.card:hover,.ui.grey.card:hover,.ui.grey.cards>.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #838383,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #838383,0 1px 3px 0 #bcbdbd}.ui.black.card,.ui.black.cards>.card,.ui.cards>.black.card{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #1b1c1d,0 1px 3px 0 #d4d4d5;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #1b1c1d,0 1px 3px 0 #d4d4d5}.ui.black.card:hover,.ui.black.cards>.card:hover,.ui.cards>.black.card:hover{-webkit-box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #27292a,0 1px 3px 0 #bcbdbd;box-shadow:0 0 0 1px #d4d4d5,0 2px 0 0 #27292a,0 1px 3px 0 #bcbdbd}.ui.one.cards{margin-left:0;margin-right:0}.ui.one.cards>.card{width:100%}.ui.two.cards{margin-left:-1em;margin-right:-1em}.ui.two.cards>.card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.three.cards{margin-left:-1em;margin-right:-1em}.ui.three.cards>.card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.four.cards{margin-left:-.75em;margin-right:-.75em}.ui.four.cards>.card{width:calc(25% - 1.5em);margin-left:.75em;margin-right:.75em}.ui.five.cards{margin-left:-.75em;margin-right:-.75em}.ui.five.cards>.card{width:calc(20% - 1.5em);margin-left:.75em;margin-right:.75em}.ui.six.cards{margin-left:-.75em;margin-right:-.75em}.ui.six.cards>.card{width:calc(16.66666667% - 1.5em);margin-left:.75em;margin-right:.75em}.ui.seven.cards{margin-left:-.5em;margin-right:-.5em}.ui.seven.cards>.card{width:calc(14.28571429% - 1em);margin-left:.5em;margin-right:.5em}.ui.eight.cards{margin-left:-.5em;margin-right:-.5em}.ui.eight.cards>.card{width:calc(12.5% - 1em);margin-left:.5em;margin-right:.5em;font-size:11px}.ui.nine.cards{margin-left:-.5em;margin-right:-.5em}.ui.nine.cards>.card{width:calc(11.11111111% - 1em);margin-left:.5em;margin-right:.5em;font-size:10px}.ui.ten.cards{margin-left:-.5em;margin-right:-.5em}.ui.ten.cards>.card{width:calc(10% - 1em);margin-left:.5em;margin-right:.5em}@media only screen and (max-width:767px){.ui.two.doubling.cards{margin-left:0;margin-right:0}.ui.two.doubling.cards>.card{width:100%;margin-left:0;margin-right:0}.ui.three.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.three.doubling.cards>.card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.four.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.four.doubling.cards>.card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.five.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.five.doubling.cards>.card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.six.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.six.doubling.cards>.card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.seven.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.seven.doubling.cards>.card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.eight.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.eight.doubling.cards>.card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.nine.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.nine.doubling.cards>.card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.ten.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.ten.doubling.cards>.card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}}@media only screen and (min-width:768px) and (max-width:991px){.ui.two.doubling.cards{margin-left:0;margin-right:0}.ui.two.doubling.cards>.card{width:100%;margin-left:0;margin-right:0}.ui.three.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.three.doubling.cards>.card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.four.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.four.doubling.cards>.card{width:calc(50% - 2em);margin-left:1em;margin-right:1em}.ui.five.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.five.doubling.cards>.card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.six.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.six.doubling.cards>.card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.eight.doubling.cards{margin-left:-1em;margin-right:-1em}.ui.eight.doubling.cards>.card{width:calc(33.33333333% - 2em);margin-left:1em;margin-right:1em}.ui.eight.doubling.cards{margin-left:-.75em;margin-right:-.75em}.ui.eight.doubling.cards>.card{width:calc(25% - 1.5em);margin-left:.75em;margin-right:.75em}.ui.nine.doubling.cards{margin-left:-.75em;margin-right:-.75em}.ui.nine.doubling.cards>.card{width:calc(25% - 1.5em);margin-left:.75em;margin-right:.75em}.ui.ten.doubling.cards{margin-left:-.75em;margin-right:-.75em}.ui.ten.doubling.cards>.card{width:calc(20% - 1.5em);margin-left:.75em;margin-right:.75em}}@media only screen and (max-width:767px){.ui.stackable.cards{display:block!important}.ui.stackable.cards .card:first-child{margin-top:0!important}.ui.stackable.cards>.card{display:block!important;height:auto!important;margin:1em 1em;padding:0!important;width:calc(100% - 2em)!important}}.ui.cards>.card{font-size:1em}/*! -* # Semantic UI 2.4.0 - Comment -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.comments{margin:1.5em 0;max-width:650px}.ui.comments:first-child{margin-top:0}.ui.comments:last-child{margin-bottom:0}.ui.comments .comment{position:relative;background:0 0;margin:.5em 0 0;padding:.5em 0 0;border:none;border-top:none;line-height:1.2}.ui.comments .comment:first-child{margin-top:0;padding-top:0}.ui.comments .comment .comments{margin:0 0 .5em .5em;padding:1em 0 1em 1em}.ui.comments .comment .comments:before{position:absolute;top:0;left:0}.ui.comments .comment .comments .comment{border:none;border-top:none;background:0 0}.ui.comments .comment .avatar{display:block;width:2.5em;height:auto;float:left;margin:.2em 0 0}.ui.comments .comment .avatar img,.ui.comments .comment img.avatar{display:block;margin:0 auto;width:100%;height:100%;border-radius:.25rem}.ui.comments .comment>.content{display:block}.ui.comments .comment>.avatar~.content{margin-left:3.5em}.ui.comments .comment .author{font-size:1em;color:rgba(0,0,0,.87);font-weight:700}.ui.comments .comment a.author{cursor:pointer}.ui.comments .comment a.author:hover{color:#1e70bf}.ui.comments .comment .metadata{display:inline-block;margin-left:.5em;color:rgba(0,0,0,.4);font-size:.875em}.ui.comments .comment .metadata>*{display:inline-block;margin:0 .5em 0 0}.ui.comments .comment .metadata>:last-child{margin-right:0}.ui.comments .comment .text{margin:.25em 0 .5em;font-size:1em;word-wrap:break-word;color:rgba(0,0,0,.87);line-height:1.3}.ui.comments .comment .actions{font-size:.875em}.ui.comments .comment .actions a{cursor:pointer;display:inline-block;margin:0 .75em 0 0;color:rgba(0,0,0,.4)}.ui.comments .comment .actions a:last-child{margin-right:0}.ui.comments .comment .actions a.active,.ui.comments .comment .actions a:hover{color:rgba(0,0,0,.8)}.ui.comments>.reply.form{margin-top:1em}.ui.comments .comment .reply.form{width:100%;margin-top:1em}.ui.comments .reply.form textarea{font-size:1em;height:12em}.ui.collapsed.comments,.ui.comments .collapsed.comment,.ui.comments .collapsed.comments{display:none}.ui.threaded.comments .comment .comments{margin:-1.5em 0 -1em 1.25em;padding:3em 0 2em 2.25em;-webkit-box-shadow:-1px 0 0 rgba(34,36,38,.15);box-shadow:-1px 0 0 rgba(34,36,38,.15)}.ui.minimal.comments .comment .actions{opacity:0;position:absolute;top:0;right:0;left:auto;-webkit-transition:opacity .2s ease;transition:opacity .2s ease;-webkit-transition-delay:.1s;transition-delay:.1s}.ui.minimal.comments .comment>.content:hover>.actions{opacity:1}.ui.mini.comments{font-size:.78571429rem}.ui.tiny.comments{font-size:.85714286rem}.ui.small.comments{font-size:.92857143rem}.ui.comments{font-size:1rem}.ui.large.comments{font-size:1.14285714rem}.ui.big.comments{font-size:1.28571429rem}.ui.huge.comments{font-size:1.42857143rem}.ui.massive.comments{font-size:1.71428571rem}/*! -* # Semantic UI 2.4.0 - Feed -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.feed{margin:1em 0}.ui.feed:first-child{margin-top:0}.ui.feed:last-child{margin-bottom:0}.ui.feed>.event{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;width:100%;padding:.21428571rem 0;margin:0;background:0 0;border-top:none}.ui.feed>.event:first-child{border-top:0;padding-top:0}.ui.feed>.event:last-child{padding-bottom:0}.ui.feed>.event>.label{display:block;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:2.5em;height:auto;-ms-flex-item-align:stretch;align-self:stretch;text-align:left}.ui.feed>.event>.label .icon{opacity:1;font-size:1.5em;width:100%;padding:.25em;background:0 0;border:none;border-radius:none;color:rgba(0,0,0,.6)}.ui.feed>.event>.label img{width:100%;height:auto;border-radius:500rem}.ui.feed>.event>.label+.content{margin:.5em 0 .35714286em 1.14285714em}.ui.feed>.event>.content{display:block;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-ms-flex-item-align:stretch;align-self:stretch;text-align:left;word-wrap:break-word}.ui.feed>.event:last-child>.content{padding-bottom:0}.ui.feed>.event>.content a{cursor:pointer}.ui.feed>.event>.content .date{margin:-.5rem 0 0;padding:0;font-weight:400;font-size:1em;font-style:normal;color:rgba(0,0,0,.4)}.ui.feed>.event>.content .summary{margin:0;font-size:1em;font-weight:700;color:rgba(0,0,0,.87)}.ui.feed>.event>.content .summary img{display:inline-block;width:auto;height:10em;margin:-.25em .25em 0 0;border-radius:.25em;vertical-align:middle}.ui.feed>.event>.content .user{display:inline-block;font-weight:700;margin-right:0;vertical-align:baseline}.ui.feed>.event>.content .user img{margin:-.25em .25em 0 0;width:auto;height:10em;vertical-align:middle}.ui.feed>.event>.content .summary>.date{display:inline-block;float:none;font-weight:400;font-size:.85714286em;font-style:normal;margin:0 0 0 .5em;padding:0;color:rgba(0,0,0,.4)}.ui.feed>.event>.content .extra{margin:.5em 0 0;background:0 0;padding:0;color:rgba(0,0,0,.87)}.ui.feed>.event>.content .extra.images img{display:inline-block;margin:0 .25em 0 0;width:6em}.ui.feed>.event>.content .extra.text{padding:0;border-left:none;font-size:1em;max-width:500px;line-height:1.4285em}.ui.feed>.event>.content .meta{display:inline-block;font-size:.85714286em;margin:.5em 0 0;background:0 0;border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none;padding:0;color:rgba(0,0,0,.6)}.ui.feed>.event>.content .meta>*{position:relative;margin-left:.75em}.ui.feed>.event>.content .meta>:after{content:'';color:rgba(0,0,0,.2);top:0;left:-1em;opacity:1;position:absolute;vertical-align:top}.ui.feed>.event>.content .meta .like{color:'';-webkit-transition:.2s color ease;transition:.2s color ease}.ui.feed>.event>.content .meta .like:hover .icon{color:#ff2733}.ui.feed>.event>.content .meta .active.like .icon{color:#ef404a}.ui.feed>.event>.content .meta>:first-child{margin-left:0}.ui.feed>.event>.content .meta>:first-child::after{display:none}.ui.feed>.event>.content .meta a,.ui.feed>.event>.content .meta>.icon{cursor:pointer;opacity:1;color:rgba(0,0,0,.5);-webkit-transition:color .1s ease;transition:color .1s ease}.ui.feed>.event>.content .meta a:hover,.ui.feed>.event>.content .meta a:hover .icon,.ui.feed>.event>.content .meta>.icon:hover{color:rgba(0,0,0,.95)}.ui.small.feed{font-size:.92857143rem}.ui.feed{font-size:1rem}.ui.large.feed{font-size:1.14285714rem}/*! -* # Semantic UI 2.4.0 - Item -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.items>.item{display:-webkit-box;display:-ms-flexbox;display:flex;margin:1em 0;width:100%;min-height:0;background:0 0;padding:0;border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:-webkit-box-shadow .1s ease;transition:-webkit-box-shadow .1s ease;transition:box-shadow .1s ease;transition:box-shadow .1s ease,-webkit-box-shadow .1s ease;z-index:''}.ui.items>.item a{cursor:pointer}.ui.items{margin:1.5em 0}.ui.items:first-child{margin-top:0!important}.ui.items:last-child{margin-bottom:0!important}.ui.items>.item:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.items>.item:first-child{margin-top:0}.ui.items>.item:last-child{margin-bottom:0}.ui.items>.item>.image{position:relative;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:block;float:none;margin:0;padding:0;max-height:'';-ms-flex-item-align:top;align-self:top}.ui.items>.item>.image>img{display:block;width:100%;height:auto;border-radius:.125rem;border:none}.ui.items>.item>.image:only-child>img{border-radius:0}.ui.items>.item>.content{display:block;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;background:0 0;margin:0;padding:0;-webkit-box-shadow:none;box-shadow:none;font-size:1em;border:none;border-radius:0}.ui.items>.item>.content:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.items>.item>.image+.content{min-width:0;width:auto;display:block;margin-left:0;-ms-flex-item-align:top;align-self:top;padding-left:1.5em}.ui.items>.item>.content>.header{display:inline-block;margin:-.21425em 0 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;color:rgba(0,0,0,.85)}.ui.items>.item>.content>.header:not(.ui){font-size:1.28571429em}.ui.items>.item [class*="left floated"]{float:left}.ui.items>.item [class*="right floated"]{float:right}.ui.items>.item .content img{-ms-flex-item-align:middle;align-self:middle;width:''}.ui.items>.item .avatar img,.ui.items>.item img.avatar{width:'';height:'';border-radius:500rem}.ui.items>.item>.content>.description{margin-top:.6em;max-width:auto;font-size:1em;line-height:1.4285em;color:rgba(0,0,0,.87)}.ui.items>.item>.content p{margin:0 0 .5em}.ui.items>.item>.content p:last-child{margin-bottom:0}.ui.items>.item .meta{margin:.5em 0 .5em;font-size:1em;line-height:1em;color:rgba(0,0,0,.6)}.ui.items>.item .meta *{margin-right:.3em}.ui.items>.item .meta :last-child{margin-right:0}.ui.items>.item .meta [class*="right floated"]{margin-right:0;margin-left:.3em}.ui.items>.item>.content a:not(.ui){color:'';-webkit-transition:color .1s ease;transition:color .1s ease}.ui.items>.item>.content a:not(.ui):hover{color:''}.ui.items>.item>.content>a.header{color:rgba(0,0,0,.85)}.ui.items>.item>.content>a.header:hover{color:#1e70bf}.ui.items>.item .meta>a:not(.ui){color:rgba(0,0,0,.4)}.ui.items>.item .meta>a:not(.ui):hover{color:rgba(0,0,0,.87)}.ui.items>.item>.content .favorite.icon{cursor:pointer;opacity:.75;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.items>.item>.content .favorite.icon:hover{opacity:1;color:#ffb70a}.ui.items>.item>.content .active.favorite.icon{color:#ffe623}.ui.items>.item>.content .like.icon{cursor:pointer;opacity:.75;-webkit-transition:color .1s ease;transition:color .1s ease}.ui.items>.item>.content .like.icon:hover{opacity:1;color:#ff2733}.ui.items>.item>.content .active.like.icon{color:#ff2733}.ui.items>.item .extra{display:block;position:relative;background:0 0;margin:.5rem 0 0;width:100%;padding:0 0 0;top:0;left:0;color:rgba(0,0,0,.4);-webkit-box-shadow:none;box-shadow:none;-webkit-transition:color .1s ease;transition:color .1s ease;border-top:none}.ui.items>.item .extra>*{margin:.25rem .5rem .25rem 0}.ui.items>.item .extra>[class*="right floated"]{margin:.25rem 0 .25rem .5rem}.ui.items>.item .extra:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.items>.item>.image:not(.ui){width:175px}@media only screen and (min-width:768px) and (max-width:991px){.ui.items>.item{margin:1em 0}.ui.items>.item>.image:not(.ui){width:150px}.ui.items>.item>.image+.content{display:block;padding:0 0 0 1em}}@media only screen and (max-width:767px){.ui.items:not(.unstackable)>.item{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:2em 0}.ui.items:not(.unstackable)>.item>.image{display:block;margin-left:auto;margin-right:auto}.ui.items:not(.unstackable)>.item>.image,.ui.items:not(.unstackable)>.item>.image>img{max-width:100%!important;width:auto!important;max-height:250px!important}.ui.items:not(.unstackable)>.item>.image+.content{display:block;padding:1.5em 0 0}}.ui.items>.item>.image+[class*="top aligned"].content{-ms-flex-item-align:start;align-self:flex-start}.ui.items>.item>.image+[class*="middle aligned"].content{-ms-flex-item-align:center;align-self:center}.ui.items>.item>.image+[class*="bottom aligned"].content{-ms-flex-item-align:end;align-self:flex-end}.ui.relaxed.items>.item{margin:1.5em 0}.ui[class*="very relaxed"].items>.item{margin:2em 0}.ui.divided.items>.item{border-top:1px solid rgba(34,36,38,.15);margin:0;padding:1em 0}.ui.divided.items>.item:first-child{border-top:none;margin-top:0!important;padding-top:0!important}.ui.divided.items>.item:last-child{margin-bottom:0!important;padding-bottom:0!important}.ui.relaxed.divided.items>.item{margin:0;padding:1.5em 0}.ui[class*="very relaxed"].divided.items>.item{margin:0;padding:2em 0}.ui.items a.item:hover,.ui.link.items>.item:hover{cursor:pointer}.ui.items a.item:hover .content .header,.ui.link.items>.item:hover .content .header{color:#1e70bf}.ui.items>.item{font-size:1em}@media only screen and (max-width:767px){.ui.unstackable.items>.item>.image,.ui.unstackable.items>.item>.image>img{width:125px!important}}/*! -* # Semantic UI 2.4.0 - Statistic -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.statistic{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:1em 0;max-width:auto}.ui.statistic+.ui.statistic{margin:0 0 0 1.5em}.ui.statistic:first-child{margin-top:0}.ui.statistic:last-child{margin-bottom:0}.ui.statistics{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap}.ui.statistics>.statistic{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0 1.5em 1em;max-width:auto}.ui.statistics{display:-webkit-box;display:-ms-flexbox;display:flex;margin:1em -1.5em -1em}.ui.statistics:after{display:block;content:' ';height:0;clear:both;overflow:hidden;visibility:hidden}.ui.statistics:first-child{margin-top:0}.ui.statistic>.value,.ui.statistics .statistic>.value{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:4rem;font-weight:400;line-height:1em;color:#1b1c1d;text-transform:uppercase;text-align:center}.ui.statistic>.label,.ui.statistics .statistic>.label{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1em;font-weight:700;color:rgba(0,0,0,.87);text-transform:uppercase;text-align:center}.ui.statistic>.label~.value,.ui.statistics .statistic>.label~.value{margin-top:0}.ui.statistic>.value~.label,.ui.statistics .statistic>.value~.label{margin-top:0}.ui.statistic>.value .icon,.ui.statistics .statistic>.value .icon{opacity:1;width:auto;margin:0}.ui.statistic>.text.value,.ui.statistics .statistic>.text.value{line-height:1em;min-height:2em;font-weight:700;text-align:center}.ui.statistic>.text.value+.label,.ui.statistics .statistic>.text.value+.label{text-align:center}.ui.statistic>.value img,.ui.statistics .statistic>.value img{max-height:3rem;vertical-align:baseline}.ui.ten.statistics{margin:0 0 -1em}.ui.ten.statistics .statistic{min-width:10%;margin:0 0 1em}.ui.nine.statistics{margin:0 0 -1em}.ui.nine.statistics .statistic{min-width:11.11111111%;margin:0 0 1em}.ui.eight.statistics{margin:0 0 -1em}.ui.eight.statistics .statistic{min-width:12.5%;margin:0 0 1em}.ui.seven.statistics{margin:0 0 -1em}.ui.seven.statistics .statistic{min-width:14.28571429%;margin:0 0 1em}.ui.six.statistics{margin:0 0 -1em}.ui.six.statistics .statistic{min-width:16.66666667%;margin:0 0 1em}.ui.five.statistics{margin:0 0 -1em}.ui.five.statistics .statistic{min-width:20%;margin:0 0 1em}.ui.four.statistics{margin:0 0 -1em}.ui.four.statistics .statistic{min-width:25%;margin:0 0 1em}.ui.three.statistics{margin:0 0 -1em}.ui.three.statistics .statistic{min-width:33.33333333%;margin:0 0 1em}.ui.two.statistics{margin:0 0 -1em}.ui.two.statistics .statistic{min-width:50%;margin:0 0 1em}.ui.one.statistics{margin:0 0 -1em}.ui.one.statistics .statistic{min-width:100%;margin:0 0 1em}.ui.horizontal.statistic{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ui.horizontal.statistics{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0;max-width:none}.ui.horizontal.statistics .statistic{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:none;margin:1em 0}.ui.horizontal.statistic>.text.value,.ui.horizontal.statistics>.statistic>.text.value{min-height:0!important}.ui.horizontal.statistic>.value .icon,.ui.horizontal.statistics .statistic>.value .icon{width:1.18em}.ui.horizontal.statistic>.value,.ui.horizontal.statistics .statistic>.value{display:inline-block;vertical-align:middle}.ui.horizontal.statistic>.label,.ui.horizontal.statistics .statistic>.label{display:inline-block;vertical-align:middle;margin:0 0 0 .75em}.ui.red.statistic>.value,.ui.red.statistics .statistic>.value,.ui.statistics .red.statistic>.value{color:#db2828}.ui.orange.statistic>.value,.ui.orange.statistics .statistic>.value,.ui.statistics .orange.statistic>.value{color:#f2711c}.ui.statistics .yellow.statistic>.value,.ui.yellow.statistic>.value,.ui.yellow.statistics .statistic>.value{color:#fbbd08}.ui.olive.statistic>.value,.ui.olive.statistics .statistic>.value,.ui.statistics .olive.statistic>.value{color:#b5cc18}.ui.green.statistic>.value,.ui.green.statistics .statistic>.value,.ui.statistics .green.statistic>.value{color:#21ba45}.ui.statistics .teal.statistic>.value,.ui.teal.statistic>.value,.ui.teal.statistics .statistic>.value{color:#00b5ad}.ui.blue.statistic>.value,.ui.blue.statistics .statistic>.value,.ui.statistics .blue.statistic>.value{color:#2185d0}.ui.statistics .violet.statistic>.value,.ui.violet.statistic>.value,.ui.violet.statistics .statistic>.value{color:#6435c9}.ui.purple.statistic>.value,.ui.purple.statistics .statistic>.value,.ui.statistics .purple.statistic>.value{color:#a333c8}.ui.pink.statistic>.value,.ui.pink.statistics .statistic>.value,.ui.statistics .pink.statistic>.value{color:#e03997}.ui.brown.statistic>.value,.ui.brown.statistics .statistic>.value,.ui.statistics .brown.statistic>.value{color:#a5673f}.ui.grey.statistic>.value,.ui.grey.statistics .statistic>.value,.ui.statistics .grey.statistic>.value{color:#767676}.ui.inverted.statistic .value,.ui.inverted.statistics .statistic>.value{color:#fff}.ui.inverted.statistic .label,.ui.inverted.statistics .statistic>.label{color:rgba(255,255,255,.9)}.ui.inverted.red.statistic>.value,.ui.inverted.red.statistics .statistic>.value,.ui.statistics .inverted.red.statistic>.value{color:#ff695e}.ui.inverted.orange.statistic>.value,.ui.inverted.orange.statistics .statistic>.value,.ui.statistics .inverted.orange.statistic>.value{color:#ff851b}.ui.inverted.yellow.statistic>.value,.ui.inverted.yellow.statistics .statistic>.value,.ui.statistics .inverted.yellow.statistic>.value{color:#ffe21f}.ui.inverted.olive.statistic>.value,.ui.inverted.olive.statistics .statistic>.value,.ui.statistics .inverted.olive.statistic>.value{color:#d9e778}.ui.inverted.green.statistic>.value,.ui.inverted.green.statistics .statistic>.value,.ui.statistics .inverted.green.statistic>.value{color:#2ecc40}.ui.inverted.teal.statistic>.value,.ui.inverted.teal.statistics .statistic>.value,.ui.statistics .inverted.teal.statistic>.value{color:#6dffff}.ui.inverted.blue.statistic>.value,.ui.inverted.blue.statistics .statistic>.value,.ui.statistics .inverted.blue.statistic>.value{color:#54c8ff}.ui.inverted.violet.statistic>.value,.ui.inverted.violet.statistics .statistic>.value,.ui.statistics .inverted.violet.statistic>.value{color:#a291fb}.ui.inverted.purple.statistic>.value,.ui.inverted.purple.statistics .statistic>.value,.ui.statistics .inverted.purple.statistic>.value{color:#dc73ff}.ui.inverted.pink.statistic>.value,.ui.inverted.pink.statistics .statistic>.value,.ui.statistics .inverted.pink.statistic>.value{color:#ff8edf}.ui.inverted.brown.statistic>.value,.ui.inverted.brown.statistics .statistic>.value,.ui.statistics .inverted.brown.statistic>.value{color:#d67c1c}.ui.inverted.grey.statistic>.value,.ui.inverted.grey.statistics .statistic>.value,.ui.statistics .inverted.grey.statistic>.value{color:#dcddde}.ui[class*="left floated"].statistic{float:left;margin:0 2em 1em 0}.ui[class*="right floated"].statistic{float:right;margin:0 0 1em 2em}.ui.floated.statistic:last-child{margin-bottom:0}.ui.mini.statistic>.value,.ui.mini.statistics .statistic>.value{font-size:1.5rem!important}.ui.mini.horizontal.statistic>.value,.ui.mini.horizontal.statistics .statistic>.value{font-size:1.5rem!important}.ui.mini.statistic>.text.value,.ui.mini.statistics .statistic>.text.value{font-size:1rem!important}.ui.tiny.statistic>.value,.ui.tiny.statistics .statistic>.value{font-size:2rem!important}.ui.tiny.horizontal.statistic>.value,.ui.tiny.horizontal.statistics .statistic>.value{font-size:2rem!important}.ui.tiny.statistic>.text.value,.ui.tiny.statistics .statistic>.text.value{font-size:1rem!important}.ui.small.statistic>.value,.ui.small.statistics .statistic>.value{font-size:3rem!important}.ui.small.horizontal.statistic>.value,.ui.small.horizontal.statistics .statistic>.value{font-size:2rem!important}.ui.small.statistic>.text.value,.ui.small.statistics .statistic>.text.value{font-size:1rem!important}.ui.statistic>.value,.ui.statistics .statistic>.value{font-size:4rem!important}.ui.horizontal.statistic>.value,.ui.horizontal.statistics .statistic>.value{font-size:3rem!important}.ui.statistic>.text.value,.ui.statistics .statistic>.text.value{font-size:2rem!important}.ui.large.statistic>.value,.ui.large.statistics .statistic>.value{font-size:5rem!important}.ui.large.horizontal.statistic>.value,.ui.large.horizontal.statistics .statistic>.value{font-size:4rem!important}.ui.large.statistic>.text.value,.ui.large.statistics .statistic>.text.value{font-size:2.5rem!important}.ui.huge.statistic>.value,.ui.huge.statistics .statistic>.value{font-size:6rem!important}.ui.huge.horizontal.statistic>.value,.ui.huge.horizontal.statistics .statistic>.value{font-size:5rem!important}.ui.huge.statistic>.text.value,.ui.huge.statistics .statistic>.text.value{font-size:2.5rem!important}/*! -* # Semantic UI 2.4.0 - Accordion -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.accordion,.ui.accordion .accordion{max-width:100%}.ui.accordion .accordion{margin:1em 0 0;padding:0}.ui.accordion .accordion .title,.ui.accordion .title{cursor:pointer}.ui.accordion .title:not(.ui){padding:.5em 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1em;color:rgba(0,0,0,.87)}.ui.accordion .accordion .title~.content,.ui.accordion .title~.content{display:none}.ui.accordion:not(.styled) .accordion .title~.content:not(.ui),.ui.accordion:not(.styled) .title~.content:not(.ui){margin:'';padding:.5em 0 1em}.ui.accordion:not(.styled) .title~.content:not(.ui):last-child{padding-bottom:0}.ui.accordion .accordion .title .dropdown.icon,.ui.accordion .title .dropdown.icon{display:inline-block;float:none;opacity:1;width:1.25em;height:1em;margin:0 .25rem 0 0;padding:0;font-size:1em;-webkit-transition:opacity .1s ease,-webkit-transform .1s ease;transition:opacity .1s ease,-webkit-transform .1s ease;transition:transform .1s ease,opacity .1s ease;transition:transform .1s ease,opacity .1s ease,-webkit-transform .1s ease;vertical-align:baseline;-webkit-transform:none;transform:none}.ui.accordion.menu .item .title{display:block;padding:0}.ui.accordion.menu .item .title>.dropdown.icon{float:right;margin:.21425em 0 0 1em;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.ui.accordion .ui.header .dropdown.icon{font-size:1em;margin:0 .25rem 0 0}.ui.accordion .accordion .active.title .dropdown.icon,.ui.accordion .active.title .dropdown.icon{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.ui.accordion.menu .item .active.title>.dropdown.icon{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.ui.styled.accordion{width:600px}.ui.styled.accordion,.ui.styled.accordion .accordion{border-radius:.28571429rem;background:#fff;-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15),0 0 0 1px rgba(34,36,38,.15);box-shadow:0 1px 2px 0 rgba(34,36,38,.15),0 0 0 1px rgba(34,36,38,.15)}.ui.styled.accordion .accordion .title,.ui.styled.accordion .title{margin:0;padding:.75em 1em;color:rgba(0,0,0,.4);font-weight:700;border-top:1px solid rgba(34,36,38,.15);-webkit-transition:background .1s ease,color .1s ease;transition:background .1s ease,color .1s ease}.ui.styled.accordion .accordion .title:first-child,.ui.styled.accordion>.title:first-child{border-top:none}.ui.styled.accordion .accordion .content,.ui.styled.accordion .content{margin:0;padding:.5em 1em 1.5em}.ui.styled.accordion .accordion .content{padding:0;padding:.5em 1em 1.5em}.ui.styled.accordion .accordion .active.title,.ui.styled.accordion .accordion .title:hover,.ui.styled.accordion .active.title,.ui.styled.accordion .title:hover{background:0 0;color:rgba(0,0,0,.87)}.ui.styled.accordion .accordion .active.title,.ui.styled.accordion .accordion .title:hover{background:0 0;color:rgba(0,0,0,.87)}.ui.styled.accordion .active.title{background:0 0;color:rgba(0,0,0,.95)}.ui.styled.accordion .accordion .active.title{background:0 0;color:rgba(0,0,0,.95)}.ui.accordion .accordion .active.content,.ui.accordion .active.content{display:block}.ui.fluid.accordion,.ui.fluid.accordion .accordion{width:100%}.ui.inverted.accordion .title:not(.ui){color:rgba(255,255,255,.9)}@font-face{font-family:Accordion;src:url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMggjB5AAAAC8AAAAYGNtYXAPfOIKAAABHAAAAExnYXNwAAAAEAAAAWgAAAAIZ2x5Zryj6HgAAAFwAAAAyGhlYWT/0IhHAAACOAAAADZoaGVhApkB5wAAAnAAAAAkaG10eAJuABIAAAKUAAAAGGxvY2EAjABWAAACrAAAAA5tYXhwAAgAFgAAArwAAAAgbmFtZfC1n04AAALcAAABPHBvc3QAAwAAAAAEGAAAACAAAwIAAZAABQAAAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADw2gHg/+D/4AHgACAAAAABAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADgAAAAKAAgAAgACAAEAIPDa//3//wAAAAAAIPDZ//3//wAB/+MPKwADAAEAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQASAEkAtwFuABMAADc0PwE2FzYXFh0BFAcGJwYvASY1EgaABQgHBQYGBQcIBYAG2wcGfwcBAQcECf8IBAcBAQd/BgYAAAAAAQAAAEkApQFuABMAADcRNDc2MzIfARYVFA8BBiMiJyY1AAUGBwgFgAYGgAUIBwYFWwEACAUGBoAFCAcFgAYGBQcAAAABAAAAAQAAqWYls18PPPUACwIAAAAAAM/9o+4AAAAAz/2j7gAAAAAAtwFuAAAACAACAAAAAAAAAAEAAAHg/+AAAAIAAAAAAAC3AAEAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAQAAAAC3ABIAtwAAAAAAAAAKABQAHgBCAGQAAAABAAAABgAUAAEAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADAAAAAEAAAAAAAIADgBAAAEAAAAAAAMADAAiAAEAAAAAAAQADABOAAEAAAAAAAUAFgAMAAEAAAAAAAYABgAuAAEAAAAAAAoANABaAAMAAQQJAAEADAAAAAMAAQQJAAIADgBAAAMAAQQJAAMADAAiAAMAAQQJAAQADABOAAMAAQQJAAUAFgAMAAMAAQQJAAYADAA0AAMAAQQJAAoANABaAHIAYQB0AGkAbgBnAFYAZQByAHMAaQBvAG4AIAAxAC4AMAByAGEAdABpAG4AZ3JhdGluZwByAGEAdABpAG4AZwBSAGUAZwB1AGwAYQByAHIAYQB0AGkAbgBnAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('truetype'),url(data:application/font-woff;charset=utf-8;base64,d09GRk9UVE8AAASwAAoAAAAABGgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAAA9AAAAS0AAAEtFpovuE9TLzIAAAIkAAAAYAAAAGAIIweQY21hcAAAAoQAAABMAAAATA984gpnYXNwAAAC0AAAAAgAAAAIAAAAEGhlYWQAAALYAAAANgAAADb/0IhHaGhlYQAAAxAAAAAkAAAAJAKZAedobXR4AAADNAAAABgAAAAYAm4AEm1heHAAAANMAAAABgAAAAYABlAAbmFtZQAAA1QAAAE8AAABPPC1n05wb3N0AAAEkAAAACAAAAAgAAMAAAEABAQAAQEBB3JhdGluZwABAgABADr4HAL4GwP4GAQeCgAZU/+Lix4KABlT/4uLDAeLa/iU+HQFHQAAAHkPHQAAAH4RHQAAAAkdAAABJBIABwEBBw0PERQZHnJhdGluZ3JhdGluZ3UwdTF1MjB1RjBEOXVGMERBAAACAYkABAAGAQEEBwoNVp38lA78lA78lA77lA773Z33bxWLkI2Qj44I9xT3FAWOj5CNkIuQi4+JjoePiI2Gi4YIi/uUBYuGiYeHiIiHh4mGi4aLho2Ijwj7FPcUBYeOiY+LkAgO+92L5hWL95QFi5CNkI6Oj4+PjZCLkIuQiY6HCPcU+xQFj4iNhouGi4aJh4eICPsU+xQFiIeGiYaLhouHjYePiI6Jj4uQCA74lBT4lBWLDAoAAAAAAwIAAZAABQAAAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADw2gHg/+D/4AHgACAAAAABAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADgAAAAKAAgAAgACAAEAIPDa//3//wAAAAAAIPDZ//3//wAB/+MPKwADAAEAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAEAADfYOJZfDzz1AAsCAAAAAADP/aPuAAAAAM/9o+4AAAAAALcBbgAAAAgAAgAAAAAAAAABAAAB4P/gAAACAAAAAAAAtwABAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAEAAAAAtwASALcAAAAAUAAABgAAAAAADgCuAAEAAAAAAAEADAAAAAEAAAAAAAIADgBAAAEAAAAAAAMADAAiAAEAAAAAAAQADABOAAEAAAAAAAUAFgAMAAEAAAAAAAYABgAuAAEAAAAAAAoANABaAAMAAQQJAAEADAAAAAMAAQQJAAIADgBAAAMAAQQJAAMADAAiAAMAAQQJAAQADABOAAMAAQQJAAUAFgAMAAMAAQQJAAYADAA0AAMAAQQJAAoANABaAHIAYQB0AGkAbgBnAFYAZQByAHMAaQBvAG4AIAAxAC4AMAByAGEAdABpAG4AZ3JhdGluZwByAGEAdABpAG4AZwBSAGUAZwB1AGwAYQByAHIAYQB0AGkAbgBnAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('woff');font-weight:400;font-style:normal}.ui.accordion .accordion .title .dropdown.icon,.ui.accordion .title .dropdown.icon{font-family:Accordion;line-height:1;-webkit-backface-visibility:hidden;backface-visibility:hidden;font-weight:400;font-style:normal;text-align:center}.ui.accordion .accordion .title .dropdown.icon:before,.ui.accordion .title .dropdown.icon:before{content:'\f0da'}/*! -* # Semantic UI 2.4.0 - Checkbox -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.checkbox{position:relative;display:inline-block;-webkit-backface-visibility:hidden;backface-visibility:hidden;outline:0;vertical-align:baseline;font-style:normal;min-height:17px;font-size:1rem;line-height:17px;min-width:17px}.ui.checkbox input[type=checkbox],.ui.checkbox input[type=radio]{cursor:pointer;position:absolute;top:0;left:0;opacity:0!important;outline:0;z-index:3;width:17px;height:17px}.ui.checkbox .box,.ui.checkbox label{cursor:auto;position:relative;display:block;padding-left:1.85714em;outline:0;font-size:1em}.ui.checkbox .box:before,.ui.checkbox label:before{position:absolute;top:0;left:0;width:17px;height:17px;content:'';background:#fff;border-radius:.21428571rem;-webkit-transition:border .1s ease,opacity .1s ease,-webkit-transform .1s ease,-webkit-box-shadow .1s ease;transition:border .1s ease,opacity .1s ease,-webkit-transform .1s ease,-webkit-box-shadow .1s ease;transition:border .1s ease,opacity .1s ease,transform .1s ease,box-shadow .1s ease;transition:border .1s ease,opacity .1s ease,transform .1s ease,box-shadow .1s ease,-webkit-transform .1s ease,-webkit-box-shadow .1s ease;border:1px solid #d4d4d5}.ui.checkbox .box:after,.ui.checkbox label:after{position:absolute;font-size:14px;top:0;left:0;width:17px;height:17px;text-align:center;opacity:0;color:rgba(0,0,0,.87);-webkit-transition:border .1s ease,opacity .1s ease,-webkit-transform .1s ease,-webkit-box-shadow .1s ease;transition:border .1s ease,opacity .1s ease,-webkit-transform .1s ease,-webkit-box-shadow .1s ease;transition:border .1s ease,opacity .1s ease,transform .1s ease,box-shadow .1s ease;transition:border .1s ease,opacity .1s ease,transform .1s ease,box-shadow .1s ease,-webkit-transform .1s ease,-webkit-box-shadow .1s ease}.ui.checkbox label,.ui.checkbox+label{color:rgba(0,0,0,.87);-webkit-transition:color .1s ease;transition:color .1s ease}.ui.checkbox+label{vertical-align:middle}.ui.checkbox .box:hover::before,.ui.checkbox label:hover::before{background:#fff;border-color:rgba(34,36,38,.35)}.ui.checkbox label:hover,.ui.checkbox+label:hover{color:rgba(0,0,0,.8)}.ui.checkbox .box:active::before,.ui.checkbox label:active::before{background:#f9fafb;border-color:rgba(34,36,38,.35)}.ui.checkbox .box:active::after,.ui.checkbox label:active::after{color:rgba(0,0,0,.95)}.ui.checkbox input:active~label{color:rgba(0,0,0,.95)}.ui.checkbox input:focus~.box:before,.ui.checkbox input:focus~label:before{background:#fff;border-color:#96c8da}.ui.checkbox input:focus~.box:after,.ui.checkbox input:focus~label:after{color:rgba(0,0,0,.95)}.ui.checkbox input:focus~label{color:rgba(0,0,0,.95)}.ui.checkbox input:checked~.box:before,.ui.checkbox input:checked~label:before{background:#fff;border-color:rgba(34,36,38,.35)}.ui.checkbox input:checked~.box:after,.ui.checkbox input:checked~label:after{opacity:1;color:rgba(0,0,0,.95)}.ui.checkbox input:not([type=radio]):indeterminate~.box:before,.ui.checkbox input:not([type=radio]):indeterminate~label:before{background:#fff;border-color:rgba(34,36,38,.35)}.ui.checkbox input:not([type=radio]):indeterminate~.box:after,.ui.checkbox input:not([type=radio]):indeterminate~label:after{opacity:1;color:rgba(0,0,0,.95)}.ui.checkbox input:checked:focus~.box:before,.ui.checkbox input:checked:focus~label:before,.ui.checkbox input:not([type=radio]):indeterminate:focus~.box:before,.ui.checkbox input:not([type=radio]):indeterminate:focus~label:before{background:#fff;border-color:#96c8da}.ui.checkbox input:checked:focus~.box:after,.ui.checkbox input:checked:focus~label:after,.ui.checkbox input:not([type=radio]):indeterminate:focus~.box:after,.ui.checkbox input:not([type=radio]):indeterminate:focus~label:after{color:rgba(0,0,0,.95)}.ui.read-only.checkbox,.ui.read-only.checkbox label{cursor:default}.ui.checkbox input[disabled]~.box:after,.ui.checkbox input[disabled]~label,.ui.disabled.checkbox .box:after,.ui.disabled.checkbox label{cursor:default!important;opacity:.5;color:#000}.ui.checkbox input.hidden{z-index:-1}.ui.checkbox input.hidden+label{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui.radio.checkbox{min-height:15px}.ui.radio.checkbox .box,.ui.radio.checkbox label{padding-left:1.85714em}.ui.radio.checkbox .box:before,.ui.radio.checkbox label:before{content:'';-webkit-transform:none;transform:none;width:15px;height:15px;border-radius:500rem;top:1px;left:0}.ui.radio.checkbox .box:after,.ui.radio.checkbox label:after{border:none;content:''!important;width:15px;height:15px;line-height:15px}.ui.radio.checkbox .box:after,.ui.radio.checkbox label:after{top:1px;left:0;width:15px;height:15px;border-radius:500rem;-webkit-transform:scale(.46666667);transform:scale(.46666667);background-color:rgba(0,0,0,.87)}.ui.radio.checkbox input:focus~.box:before,.ui.radio.checkbox input:focus~label:before{background-color:#fff}.ui.radio.checkbox input:focus~.box:after,.ui.radio.checkbox input:focus~label:after{background-color:rgba(0,0,0,.95)}.ui.radio.checkbox input:indeterminate~.box:after,.ui.radio.checkbox input:indeterminate~label:after{opacity:0}.ui.radio.checkbox input:checked~.box:before,.ui.radio.checkbox input:checked~label:before{background-color:#fff}.ui.radio.checkbox input:checked~.box:after,.ui.radio.checkbox input:checked~label:after{background-color:rgba(0,0,0,.95)}.ui.radio.checkbox input:focus:checked~.box:before,.ui.radio.checkbox input:focus:checked~label:before{background-color:#fff}.ui.radio.checkbox input:focus:checked~.box:after,.ui.radio.checkbox input:focus:checked~label:after{background-color:rgba(0,0,0,.95)}.ui.slider.checkbox{min-height:1.25rem}.ui.slider.checkbox input{width:3.5rem;height:1.25rem}.ui.slider.checkbox .box,.ui.slider.checkbox label{padding-left:4.5rem;line-height:1rem;color:rgba(0,0,0,.4)}.ui.slider.checkbox .box:before,.ui.slider.checkbox label:before{display:block;position:absolute;content:'';border:none!important;left:0;z-index:1;top:.4rem;background-color:rgba(0,0,0,.05);width:3.5rem;height:.21428571rem;-webkit-transform:none;transform:none;border-radius:500rem;-webkit-transition:background .3s ease;transition:background .3s ease}.ui.slider.checkbox .box:after,.ui.slider.checkbox label:after{background:#fff -webkit-gradient(linear,left top,left bottom,from(transparent),to(rgba(0,0,0,.05)));background:#fff -webkit-linear-gradient(transparent,rgba(0,0,0,.05));background:#fff linear-gradient(transparent,rgba(0,0,0,.05));position:absolute;content:''!important;opacity:1;z-index:2;border:none;-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15),0 0 0 1px rgba(34,36,38,.15) inset;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),0 0 0 1px rgba(34,36,38,.15) inset;width:1.5rem;height:1.5rem;top:-.25rem;left:0;-webkit-transform:none;transform:none;border-radius:500rem;-webkit-transition:left .3s ease;transition:left .3s ease}.ui.slider.checkbox input:focus~.box:before,.ui.slider.checkbox input:focus~label:before{background-color:rgba(0,0,0,.15);border:none}.ui.slider.checkbox .box:hover,.ui.slider.checkbox label:hover{color:rgba(0,0,0,.8)}.ui.slider.checkbox .box:hover::before,.ui.slider.checkbox label:hover::before{background:rgba(0,0,0,.15)}.ui.slider.checkbox input:checked~.box,.ui.slider.checkbox input:checked~label{color:rgba(0,0,0,.95)!important}.ui.slider.checkbox input:checked~.box:before,.ui.slider.checkbox input:checked~label:before{background-color:#545454!important}.ui.slider.checkbox input:checked~.box:after,.ui.slider.checkbox input:checked~label:after{left:2rem}.ui.slider.checkbox input:focus:checked~.box,.ui.slider.checkbox input:focus:checked~label{color:rgba(0,0,0,.95)!important}.ui.slider.checkbox input:focus:checked~.box:before,.ui.slider.checkbox input:focus:checked~label:before{background-color:#000!important}.ui.toggle.checkbox{min-height:1.5rem}.ui.toggle.checkbox input{width:3.5rem;height:1.5rem}.ui.toggle.checkbox .box,.ui.toggle.checkbox label{min-height:1.5rem;padding-left:4.5rem;color:rgba(0,0,0,.87)}.ui.toggle.checkbox label{padding-top:.15em}.ui.toggle.checkbox .box:before,.ui.toggle.checkbox label:before{display:block;position:absolute;content:'';z-index:1;-webkit-transform:none;transform:none;border:none;top:0;background:rgba(0,0,0,.05);-webkit-box-shadow:none;box-shadow:none;width:3.5rem;height:1.5rem;border-radius:500rem}.ui.toggle.checkbox .box:after,.ui.toggle.checkbox label:after{background:#fff -webkit-gradient(linear,left top,left bottom,from(transparent),to(rgba(0,0,0,.05)));background:#fff -webkit-linear-gradient(transparent,rgba(0,0,0,.05));background:#fff linear-gradient(transparent,rgba(0,0,0,.05));position:absolute;content:''!important;opacity:1;z-index:2;border:none;-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15),0 0 0 1px rgba(34,36,38,.15) inset;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),0 0 0 1px rgba(34,36,38,.15) inset;width:1.5rem;height:1.5rem;top:0;left:0;border-radius:500rem;-webkit-transition:background .3s ease,left .3s ease;transition:background .3s ease,left .3s ease}.ui.toggle.checkbox input~.box:after,.ui.toggle.checkbox input~label:after{left:-.05rem;-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15),0 0 0 1px rgba(34,36,38,.15) inset;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),0 0 0 1px rgba(34,36,38,.15) inset}.ui.toggle.checkbox input:focus~.box:before,.ui.toggle.checkbox input:focus~label:before{background-color:rgba(0,0,0,.15);border:none}.ui.toggle.checkbox .box:hover::before,.ui.toggle.checkbox label:hover::before{background-color:rgba(0,0,0,.15);border:none}.ui.toggle.checkbox input:checked~.box,.ui.toggle.checkbox input:checked~label{color:rgba(0,0,0,.95)!important}.ui.toggle.checkbox input:checked~.box:before,.ui.toggle.checkbox input:checked~label:before{background-color:#2185d0!important}.ui.toggle.checkbox input:checked~.box:after,.ui.toggle.checkbox input:checked~label:after{left:2.15rem;-webkit-box-shadow:0 1px 2px 0 rgba(34,36,38,.15),0 0 0 1px rgba(34,36,38,.15) inset;box-shadow:0 1px 2px 0 rgba(34,36,38,.15),0 0 0 1px rgba(34,36,38,.15) inset}.ui.toggle.checkbox input:focus:checked~.box,.ui.toggle.checkbox input:focus:checked~label{color:rgba(0,0,0,.95)!important}.ui.toggle.checkbox input:focus:checked~.box:before,.ui.toggle.checkbox input:focus:checked~label:before{background-color:#0d71bb!important}.ui.fitted.checkbox .box,.ui.fitted.checkbox label{padding-left:0!important}.ui.fitted.toggle.checkbox{width:3.5rem}.ui.fitted.slider.checkbox{width:3.5rem}@font-face{font-family:Checkbox;src:url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBD8AAAC8AAAAYGNtYXAYVtCJAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zn4huwUAAAF4AAABYGhlYWQGPe1ZAAAC2AAAADZoaGVhB30DyAAAAxAAAAAkaG10eBBKAEUAAAM0AAAAHGxvY2EAmgESAAADUAAAABBtYXhwAAkALwAAA2AAAAAgbmFtZSC8IugAAAOAAAABknBvc3QAAwAAAAAFFAAAACAAAwMTAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADoAgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6AL//f//AAAAAAAg6AD//f//AAH/4xgEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAEUAUQO7AvgAGgAAARQHAQYjIicBJjU0PwE2MzIfAQE2MzIfARYVA7sQ/hQQFhcQ/uMQEE4QFxcQqAF2EBcXEE4QAnMWEP4UEBABHRAXFhBOEBCoAXcQEE4QFwAAAAABAAABbgMlAkkAFAAAARUUBwYjISInJj0BNDc2MyEyFxYVAyUQEBf9SRcQEBAQFwK3FxAQAhJtFxAQEBAXbRcQEBAQFwAAAAABAAAASQMlA24ALAAAARUUBwYrARUUBwYrASInJj0BIyInJj0BNDc2OwE1NDc2OwEyFxYdATMyFxYVAyUQEBfuEBAXbhYQEO4XEBAQEBfuEBAWbhcQEO4XEBACEm0XEBDuFxAQEBAX7hAQF20XEBDuFxAQEBAX7hAQFwAAAQAAAAIAAHRSzT9fDzz1AAsEAAAAAADRsdR3AAAAANGx1HcAAAAAA7sDbgAAAAgAAgAAAAAAAAABAAADwP/AAAAEAAAAAAADuwABAAAAAAAAAAAAAAAAAAAABwQAAAAAAAAAAAAAAAIAAAAEAABFAyUAAAMlAAAAAAAAAAoAFAAeAE4AcgCwAAEAAAAHAC0AAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAOAK4AAQAAAAAAAQAIAAAAAQAAAAAAAgAHAGkAAQAAAAAAAwAIADkAAQAAAAAABAAIAH4AAQAAAAAABQALABgAAQAAAAAABgAIAFEAAQAAAAAACgAaAJYAAwABBAkAAQAQAAgAAwABBAkAAgAOAHAAAwABBAkAAwAQAEEAAwABBAkABAAQAIYAAwABBAkABQAWACMAAwABBAkABgAQAFkAAwABBAkACgA0ALBDaGVja2JveABDAGgAZQBjAGsAYgBvAHhWZXJzaW9uIDIuMABWAGUAcgBzAGkAbwBuACAAMgAuADBDaGVja2JveABDAGgAZQBjAGsAYgBvAHhDaGVja2JveABDAGgAZQBjAGsAYgBvAHhSZWd1bGFyAFIAZQBnAHUAbABhAHJDaGVja2JveABDAGgAZQBjAGsAYgBvAHhGb250IGdlbmVyYXRlZCBieSBJY29Nb29uLgBGAG8AbgB0ACAAZwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABJAGMAbwBNAG8AbwBuAC4AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('truetype')}.ui.checkbox .box:after,.ui.checkbox label:after{font-family:Checkbox}.ui.checkbox input:checked~.box:after,.ui.checkbox input:checked~label:after{content:'\e800'}.ui.checkbox input:indeterminate~.box:after,.ui.checkbox input:indeterminate~label:after{font-size:12px;content:'\e801'}/*! -* # Semantic UI 2.4.0 - Dimmer -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.dimmable:not(body){position:relative}.ui.dimmer{display:none;position:absolute;top:0!important;left:0!important;width:100%;height:100%;text-align:center;vertical-align:middle;padding:1em;background-color:rgba(0,0,0,.85);opacity:0;line-height:1;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-transition:background-color .5s linear;transition:background-color .5s linear;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;will-change:opacity;z-index:1000}.ui.dimmer>.content{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;color:#fff}.ui.segment>.ui.dimmer{border-radius:inherit!important}.ui.dimmer:not(.inverted)::-webkit-scrollbar-track{background:rgba(255,255,255,.1)}.ui.dimmer:not(.inverted)::-webkit-scrollbar-thumb{background:rgba(255,255,255,.25)}.ui.dimmer:not(.inverted)::-webkit-scrollbar-thumb:window-inactive{background:rgba(255,255,255,.15)}.ui.dimmer:not(.inverted)::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.35)}.animating.dimmable:not(body),.dimmed.dimmable:not(body){overflow:hidden}.dimmed.dimmable>.ui.animating.dimmer,.dimmed.dimmable>.ui.visible.dimmer,.ui.active.dimmer{display:-webkit-box;display:-ms-flexbox;display:flex;opacity:1}.ui.disabled.dimmer{width:0!important;height:0!important}.dimmed.dimmable>.ui.animating.legacy.dimmer,.dimmed.dimmable>.ui.visible.legacy.dimmer,.ui.active.legacy.dimmer{display:block}.ui[class*="top aligned"].dimmer{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.ui[class*="bottom aligned"].dimmer{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.ui.page.dimmer{position:fixed;-webkit-transform-style:'';transform-style:'';-webkit-perspective:2000px;perspective:2000px;-webkit-transform-origin:center center;transform-origin:center center}body.animating.in.dimmable,body.dimmed.dimmable{overflow:hidden}body.dimmable>.dimmer{position:fixed}.blurring.dimmable>:not(.dimmer){-webkit-filter:blur(0) grayscale(0);filter:blur(0) grayscale(0);-webkit-transition:.8s -webkit-filter ease;transition:.8s -webkit-filter ease;transition:.8s filter ease;transition:.8s filter ease,.8s -webkit-filter ease}.blurring.dimmed.dimmable>:not(.dimmer){-webkit-filter:blur(5px) grayscale(.7);filter:blur(5px) grayscale(.7)}.blurring.dimmable>.dimmer{background-color:rgba(0,0,0,.6)}.blurring.dimmable>.inverted.dimmer{background-color:rgba(255,255,255,.6)}.ui.dimmer>.top.aligned.content>*{vertical-align:top}.ui.dimmer>.bottom.aligned.content>*{vertical-align:bottom}.ui.inverted.dimmer{background-color:rgba(255,255,255,.85)}.ui.inverted.dimmer>.content>*{color:#fff}.ui.simple.dimmer{display:block;overflow:hidden;opacity:1;width:0%;height:0%;z-index:-100;background-color:rgba(0,0,0,0)}.dimmed.dimmable>.ui.simple.dimmer{overflow:visible;opacity:1;width:100%;height:100%;background-color:rgba(0,0,0,.85);z-index:1}.ui.simple.inverted.dimmer{background-color:rgba(255,255,255,0)}.dimmed.dimmable>.ui.simple.inverted.dimmer{background-color:rgba(255,255,255,.85)}/*! -* # Semantic UI 2.4.0 - Dropdown -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.dropdown{cursor:pointer;position:relative;display:inline-block;outline:0;text-align:left;-webkit-transition:width .1s ease,-webkit-box-shadow .1s ease;transition:width .1s ease,-webkit-box-shadow .1s ease;transition:box-shadow .1s ease,width .1s ease;transition:box-shadow .1s ease,width .1s ease,-webkit-box-shadow .1s ease;-webkit-tap-highlight-color:transparent}.ui.dropdown .menu{cursor:auto;position:absolute;display:none;outline:0;top:100%;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;margin:0;padding:0 0;background:#fff;font-size:1em;text-shadow:none;text-align:left;-webkit-box-shadow:0 2px 3px 0 rgba(34,36,38,.15);box-shadow:0 2px 3px 0 rgba(34,36,38,.15);border:1px solid rgba(34,36,38,.15);border-radius:.28571429rem;-webkit-transition:opacity .1s ease;transition:opacity .1s ease;z-index:11;will-change:transform,opacity}.ui.dropdown .menu>*{white-space:nowrap}.ui.dropdown>input:not(.search):first-child,.ui.dropdown>select{display:none!important}.ui.dropdown>.dropdown.icon{position:relative;width:auto;font-size:.85714286em;margin:0 0 0 1em}.ui.dropdown .menu>.item .dropdown.icon{width:auto;float:right;margin:0 0 0 1em}.ui.dropdown .menu>.item .dropdown.icon+.text{margin-right:1em}.ui.dropdown>.text{display:inline-block;-webkit-transition:none;transition:none}.ui.dropdown .menu>.item{position:relative;cursor:pointer;display:block;border:none;height:auto;text-align:left;border-top:none;line-height:1em;color:rgba(0,0,0,.87);padding:.78571429rem 1.14285714rem!important;font-size:1rem;text-transform:none;font-weight:400;-webkit-box-shadow:none;box-shadow:none;-webkit-touch-callout:none}.ui.dropdown .menu>.item:first-child{border-top-width:0}.ui.dropdown .menu .item>[class*="right floated"],.ui.dropdown>.text>[class*="right floated"]{float:right!important;margin-right:0!important;margin-left:1em!important}.ui.dropdown .menu .item>[class*="left floated"],.ui.dropdown>.text>[class*="left floated"]{float:left!important;margin-left:0!important;margin-right:1em!important}.ui.dropdown .menu .item>.flag.floated,.ui.dropdown .menu .item>.icon.floated,.ui.dropdown .menu .item>.image.floated,.ui.dropdown .menu .item>img.floated{margin-top:0}.ui.dropdown .menu>.header{margin:1rem 0 .75rem;padding:0 1.14285714rem;color:rgba(0,0,0,.85);font-size:.78571429em;font-weight:700;text-transform:uppercase}.ui.dropdown .menu>.divider{border-top:1px solid rgba(34,36,38,.1);height:0;margin:.5em 0}.ui.dropdown.dropdown .menu>.input{width:auto;display:-webkit-box;display:-ms-flexbox;display:flex;margin:1.14285714rem .78571429rem;min-width:10rem}.ui.dropdown .menu>.header+.input{margin-top:0}.ui.dropdown .menu>.input:not(.transparent) input{padding:.5em 1em}.ui.dropdown .menu>.input:not(.transparent) .button,.ui.dropdown .menu>.input:not(.transparent) .icon,.ui.dropdown .menu>.input:not(.transparent) .label{padding-top:.5em;padding-bottom:.5em}.ui.dropdown .menu>.item>.description,.ui.dropdown>.text>.description{float:right;margin:0 0 0 1em;color:rgba(0,0,0,.4)}.ui.dropdown .menu>.message{padding:.78571429rem 1.14285714rem;font-weight:400}.ui.dropdown .menu>.message:not(.ui){color:rgba(0,0,0,.4)}.ui.dropdown .menu .menu{top:0!important;left:100%;right:auto;margin:0 0 0 -.5em!important;border-radius:.28571429rem!important;z-index:21!important}.ui.dropdown .menu .menu:after{display:none}.ui.dropdown>.text>.flag,.ui.dropdown>.text>.icon,.ui.dropdown>.text>.image,.ui.dropdown>.text>.label,.ui.dropdown>.text>img{margin-top:0}.ui.dropdown .menu>.item>.flag,.ui.dropdown .menu>.item>.icon,.ui.dropdown .menu>.item>.image,.ui.dropdown .menu>.item>.label,.ui.dropdown .menu>.item>img{margin-top:0}.ui.dropdown .menu>.item>.flag,.ui.dropdown .menu>.item>.icon,.ui.dropdown .menu>.item>.image,.ui.dropdown .menu>.item>.label,.ui.dropdown .menu>.item>img,.ui.dropdown>.text>.flag,.ui.dropdown>.text>.icon,.ui.dropdown>.text>.image,.ui.dropdown>.text>.label,.ui.dropdown>.text>img{margin-left:0;float:none;margin-right:.78571429rem}.ui.dropdown .menu>.item>.image,.ui.dropdown .menu>.item>img,.ui.dropdown>.text>.image,.ui.dropdown>.text>img{display:inline-block;vertical-align:top;width:auto;margin-top:-.5em;margin-bottom:-.5em;max-height:2em}.ui.dropdown .ui.menu>.item:before,.ui.menu .ui.dropdown .menu>.item:before{display:none}.ui.menu .ui.dropdown .menu .active.item{border-left:none}.ui.buttons>.ui.dropdown:last-child .menu,.ui.menu .right.dropdown.item .menu,.ui.menu .right.menu .dropdown:last-child .menu{left:auto;right:0}.ui.label.dropdown .menu{min-width:100%}.ui.dropdown.icon.button>.dropdown.icon{margin:0}.ui.button.dropdown .menu{min-width:100%}.ui.selection.dropdown{cursor:pointer;word-wrap:break-word;line-height:1em;white-space:normal;outline:0;-webkit-transform:rotateZ(0);transform:rotateZ(0);min-width:14em;min-height:2.71428571em;background:#fff;display:inline-block;padding:.78571429em 2.1em .78571429em 1em;color:rgba(0,0,0,.87);-webkit-box-shadow:none;box-shadow:none;border:1px solid rgba(34,36,38,.15);border-radius:.28571429rem;-webkit-transition:width .1s ease,-webkit-box-shadow .1s ease;transition:width .1s ease,-webkit-box-shadow .1s ease;transition:box-shadow .1s ease,width .1s ease;transition:box-shadow .1s ease,width .1s ease,-webkit-box-shadow .1s ease}.ui.selection.dropdown.active,.ui.selection.dropdown.visible{z-index:10}select.ui.dropdown{height:38px;padding:.5em;border:1px solid rgba(34,36,38,.15);visibility:visible}.ui.selection.dropdown>.delete.icon,.ui.selection.dropdown>.dropdown.icon,.ui.selection.dropdown>.search.icon{cursor:pointer;position:absolute;width:auto;height:auto;line-height:1.21428571em;top:.78571429em;right:1em;z-index:3;margin:-.78571429em;padding:.91666667em;opacity:.8;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.compact.selection.dropdown{min-width:0}.ui.selection.dropdown .menu{overflow-x:hidden;overflow-y:auto;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-overflow-scrolling:touch;border-top-width:0!important;width:auto;outline:0;margin:0 -1px;min-width:calc(100% + 2px);width:calc(100% + 2px);border-radius:0 0 .28571429rem .28571429rem;-webkit-box-shadow:0 2px 3px 0 rgba(34,36,38,.15);box-shadow:0 2px 3px 0 rgba(34,36,38,.15);-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.selection.dropdown .menu:after,.ui.selection.dropdown .menu:before{display:none}.ui.selection.dropdown .menu>.message{padding:.78571429rem 1.14285714rem}@media only screen and (max-width:767px){.ui.selection.dropdown .menu{max-height:8.01428571rem}}@media only screen and (min-width:768px){.ui.selection.dropdown .menu{max-height:10.68571429rem}}@media only screen and (min-width:992px){.ui.selection.dropdown .menu{max-height:16.02857143rem}}@media only screen and (min-width:1920px){.ui.selection.dropdown .menu{max-height:21.37142857rem}}.ui.selection.dropdown .menu>.item{border-top:1px solid #fafafa;padding:.78571429rem 1.14285714rem!important;white-space:normal;word-wrap:normal}.ui.selection.dropdown .menu>.hidden.addition.item{display:none}.ui.selection.dropdown:hover{border-color:rgba(34,36,38,.35);-webkit-box-shadow:none;box-shadow:none}.ui.selection.active.dropdown{border-color:#96c8da;-webkit-box-shadow:0 2px 3px 0 rgba(34,36,38,.15);box-shadow:0 2px 3px 0 rgba(34,36,38,.15)}.ui.selection.active.dropdown .menu{border-color:#96c8da;-webkit-box-shadow:0 2px 3px 0 rgba(34,36,38,.15);box-shadow:0 2px 3px 0 rgba(34,36,38,.15)}.ui.selection.dropdown:focus{border-color:#96c8da;-webkit-box-shadow:none;box-shadow:none}.ui.selection.dropdown:focus .menu{border-color:#96c8da;-webkit-box-shadow:0 2px 3px 0 rgba(34,36,38,.15);box-shadow:0 2px 3px 0 rgba(34,36,38,.15)}.ui.selection.visible.dropdown>.text:not(.default){font-weight:400;color:rgba(0,0,0,.8)}.ui.selection.active.dropdown:hover{border-color:#96c8da;-webkit-box-shadow:0 2px 3px 0 rgba(34,36,38,.15);box-shadow:0 2px 3px 0 rgba(34,36,38,.15)}.ui.selection.active.dropdown:hover .menu{border-color:#96c8da;-webkit-box-shadow:0 2px 3px 0 rgba(34,36,38,.15);box-shadow:0 2px 3px 0 rgba(34,36,38,.15)}.ui.active.selection.dropdown>.dropdown.icon,.ui.visible.selection.dropdown>.dropdown.icon{opacity:'';z-index:3}.ui.active.selection.dropdown{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.ui.active.empty.selection.dropdown{border-radius:.28571429rem!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui.active.empty.selection.dropdown .menu{border:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui.search.dropdown{min-width:''}.ui.search.dropdown>input.search{background:none transparent!important;border:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;cursor:text;top:0;left:1px;width:100%;outline:0;-webkit-tap-highlight-color:rgba(255,255,255,0);padding:inherit}.ui.search.dropdown>input.search{position:absolute;z-index:2}.ui.search.dropdown>.text{cursor:text;position:relative;left:1px;z-index:3}.ui.search.selection.dropdown>input.search{line-height:1.21428571em;padding:.67857143em 2.1em .67857143em 1em}.ui.search.selection.dropdown>span.sizer{line-height:1.21428571em;padding:.67857143em 2.1em .67857143em 1em;display:none;white-space:pre}.ui.search.dropdown.active>input.search,.ui.search.dropdown.visible>input.search{cursor:auto}.ui.search.dropdown.active>.text,.ui.search.dropdown.visible>.text{pointer-events:none}.ui.active.search.dropdown input.search:focus+.text .flag,.ui.active.search.dropdown input.search:focus+.text .icon{opacity:.45}.ui.active.search.dropdown input.search:focus+.text{color:rgba(115,115,115,.87)!important}.ui.search.dropdown .menu{overflow-x:hidden;overflow-y:auto;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-overflow-scrolling:touch}@media only screen and (max-width:767px){.ui.search.dropdown .menu{max-height:8.01428571rem}}@media only screen and (min-width:768px){.ui.search.dropdown .menu{max-height:10.68571429rem}}@media only screen and (min-width:992px){.ui.search.dropdown .menu{max-height:16.02857143rem}}@media only screen and (min-width:1920px){.ui.search.dropdown .menu{max-height:21.37142857rem}}.ui.multiple.dropdown{padding:.22619048em 2.1em .22619048em .35714286em}.ui.multiple.dropdown .menu{cursor:auto}.ui.multiple.search.dropdown,.ui.multiple.search.dropdown>input.search{cursor:text}.ui.multiple.dropdown>.label{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-block;vertical-align:top;white-space:normal;font-size:1em;padding:.35714286em .78571429em;margin:.14285714rem .28571429rem .14285714rem 0;-webkit-box-shadow:0 0 0 1px rgba(34,36,38,.15) inset;box-shadow:0 0 0 1px rgba(34,36,38,.15) inset}.ui.multiple.dropdown .dropdown.icon{margin:'';padding:''}.ui.multiple.dropdown>.text{position:static;padding:0;max-width:100%;margin:.45238095em 0 .45238095em .64285714em;line-height:1.21428571em}.ui.multiple.dropdown>.label~input.search{margin-left:.14285714em!important}.ui.multiple.dropdown>.label~.text{display:none}.ui.multiple.search.dropdown>.text{display:inline-block;position:absolute;top:0;left:0;padding:inherit;margin:.45238095em 0 .45238095em .64285714em;line-height:1.21428571em}.ui.multiple.search.dropdown>.label~.text{display:none}.ui.multiple.search.dropdown>input.search{position:static;padding:0;max-width:100%;margin:.45238095em 0 .45238095em .64285714em;width:2.2em;line-height:1.21428571em}.ui.inline.dropdown{cursor:pointer;display:inline-block;color:inherit}.ui.inline.dropdown .dropdown.icon{margin:0 .21428571em 0 .21428571em;vertical-align:baseline}.ui.inline.dropdown>.text{font-weight:700}.ui.inline.dropdown .menu{cursor:auto;margin-top:.21428571em;border-radius:.28571429rem}.ui.dropdown .menu .active.item{background:0 0;font-weight:700;color:rgba(0,0,0,.95);-webkit-box-shadow:none;box-shadow:none;z-index:12}.ui.dropdown .menu>.item:hover{background:rgba(0,0,0,.05);color:rgba(0,0,0,.95);z-index:13}.ui.loading.dropdown>i.icon{height:1em!important}.ui.loading.selection.dropdown>i.icon{padding:1.5em 1.28571429em!important}.ui.loading.dropdown>i.icon:before{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loading.dropdown>i.icon:after{position:absolute;content:'';top:50%;left:50%;-webkit-box-shadow:0 0 0 1px transparent;box-shadow:0 0 0 1px transparent;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;-webkit-animation:dropdown-spin .6s linear;animation:dropdown-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em}.ui.loading.dropdown.button>i.icon:after,.ui.loading.dropdown.button>i.icon:before{display:none}@-webkit-keyframes dropdown-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dropdown-spin{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ui.default.dropdown:not(.button)>.text,.ui.dropdown:not(.button)>.default.text{color:rgba(191,191,191,.87)}.ui.default.dropdown:not(.button)>input:focus~.text,.ui.dropdown:not(.button)>input:focus~.default.text{color:rgba(115,115,115,.87)}.ui.loading.dropdown>.text{-webkit-transition:none;transition:none}.ui.dropdown .loading.menu{display:block;visibility:hidden;z-index:-1}.ui.dropdown>.loading.menu{left:0!important;right:auto!important}.ui.dropdown>.menu .loading.menu{left:100%!important;right:auto!important}.ui.dropdown .menu .selected.item,.ui.dropdown.selected{background:rgba(0,0,0,.03);color:rgba(0,0,0,.95)}.ui.dropdown>.filtered.text{visibility:hidden}.ui.dropdown .filtered.item{display:none!important}.ui.dropdown.error,.ui.dropdown.error>.default.text,.ui.dropdown.error>.text{color:#9f3a38}.ui.selection.dropdown.error{background:#fff6f6;border-color:#e0b4b4}.ui.selection.dropdown.error:hover{border-color:#e0b4b4}.ui.dropdown.error>.menu,.ui.dropdown.error>.menu .menu{border-color:#e0b4b4}.ui.dropdown.error>.menu>.item{color:#9f3a38}.ui.multiple.selection.error.dropdown>.label{border-color:#e0b4b4}.ui.dropdown.error>.menu>.item:hover{background-color:#fff2f2}.ui.dropdown.error>.menu .active.item{background-color:#fdcfcf}.ui.dropdown>.clear.dropdown.icon{opacity:.8;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.dropdown>.clear.dropdown.icon:hover{opacity:1}.ui.disabled.dropdown,.ui.dropdown .menu>.disabled.item{cursor:default;pointer-events:none;opacity:.45}.ui.dropdown .menu{left:0}.ui.dropdown .menu .right.menu,.ui.dropdown .right.menu>.menu{left:100%!important;right:auto!important;border-radius:.28571429rem!important}.ui.dropdown>.left.menu{left:auto!important;right:0!important}.ui.dropdown .menu .left.menu,.ui.dropdown>.left.menu .menu{left:auto;right:100%;margin:0 -.5em 0 0!important;border-radius:.28571429rem!important}.ui.dropdown .item .left.dropdown.icon,.ui.dropdown .left.menu .item .dropdown.icon{width:auto;float:left;margin:0}.ui.dropdown .item .left.dropdown.icon,.ui.dropdown .left.menu .item .dropdown.icon{width:auto;float:left;margin:0}.ui.dropdown .item .left.dropdown.icon+.text,.ui.dropdown .left.menu .item .dropdown.icon+.text{margin-left:1em;margin-right:0}.ui.upward.dropdown>.menu{top:auto;bottom:100%;-webkit-box-shadow:0 0 3px 0 rgba(0,0,0,.08);box-shadow:0 0 3px 0 rgba(0,0,0,.08);border-radius:.28571429rem .28571429rem 0 0}.ui.dropdown .upward.menu{top:auto!important;bottom:0!important}.ui.simple.upward.active.dropdown,.ui.simple.upward.dropdown:hover{border-radius:.28571429rem .28571429rem 0 0!important}.ui.upward.dropdown.button:not(.pointing):not(.floating).active{border-radius:.28571429rem .28571429rem 0 0}.ui.upward.selection.dropdown .menu{border-top-width:1px!important;border-bottom-width:0!important;-webkit-box-shadow:0 -2px 3px 0 rgba(0,0,0,.08);box-shadow:0 -2px 3px 0 rgba(0,0,0,.08)}.ui.upward.selection.dropdown:hover{-webkit-box-shadow:0 0 2px 0 rgba(0,0,0,.05);box-shadow:0 0 2px 0 rgba(0,0,0,.05)}.ui.active.upward.selection.dropdown{border-radius:0 0 .28571429rem .28571429rem!important}.ui.upward.selection.dropdown.visible{-webkit-box-shadow:0 0 3px 0 rgba(0,0,0,.08);box-shadow:0 0 3px 0 rgba(0,0,0,.08);border-radius:0 0 .28571429rem .28571429rem!important}.ui.upward.active.selection.dropdown:hover{-webkit-box-shadow:0 0 3px 0 rgba(0,0,0,.05);box-shadow:0 0 3px 0 rgba(0,0,0,.05)}.ui.upward.active.selection.dropdown:hover .menu{-webkit-box-shadow:0 -2px 3px 0 rgba(0,0,0,.08);box-shadow:0 -2px 3px 0 rgba(0,0,0,.08)}.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{overflow-x:hidden;overflow-y:auto}.ui.scrolling.dropdown .menu{overflow-x:hidden;overflow-y:auto;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-overflow-scrolling:touch;min-width:100%!important;width:auto!important}.ui.dropdown .scrolling.menu{position:static;overflow-y:auto;border:none;-webkit-box-shadow:none!important;box-shadow:none!important;border-radius:0!important;margin:0!important;min-width:100%!important;width:auto!important;border-top:1px solid rgba(34,36,38,.15)}.ui.dropdown .scrolling.menu>.item.item.item,.ui.scrolling.dropdown .menu .item.item.item{border-top:none}.ui.dropdown .scrolling.menu .item:first-child,.ui.scrolling.dropdown .menu .item:first-child{border-top:none}.ui.dropdown>.animating.menu .scrolling.menu,.ui.dropdown>.visible.menu .scrolling.menu{display:block}@media all and (-ms-high-contrast:none){.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{min-width:calc(100% - 17px)}}@media only screen and (max-width:767px){.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{max-height:10.28571429rem}}@media only screen and (min-width:768px){.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{max-height:15.42857143rem}}@media only screen and (min-width:992px){.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{max-height:20.57142857rem}}@media only screen and (min-width:1920px){.ui.dropdown .scrolling.menu,.ui.scrolling.dropdown .menu{max-height:20.57142857rem}}.ui.simple.dropdown .menu:after,.ui.simple.dropdown .menu:before{display:none}.ui.simple.dropdown .menu{position:absolute;display:block;overflow:hidden;top:-9999px!important;opacity:0;width:0;height:0;-webkit-transition:opacity .1s ease;transition:opacity .1s ease}.ui.simple.active.dropdown,.ui.simple.dropdown:hover{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.ui.simple.active.dropdown>.menu,.ui.simple.dropdown:hover>.menu{overflow:visible;width:auto;height:auto;top:100%!important;opacity:1}.ui.simple.dropdown:hover>.menu>.item:hover>.menu,.ui.simple.dropdown>.menu>.item:active>.menu{overflow:visible;width:auto;height:auto;top:0!important;left:100%!important;opacity:1}.ui.simple.disabled.dropdown:hover .menu{display:none;height:0;width:0;overflow:hidden}.ui.simple.visible.dropdown>.menu{display:block}.ui.fluid.dropdown{display:block;width:100%;min-width:0}.ui.fluid.dropdown>.dropdown.icon{float:right}.ui.floating.dropdown .menu{left:0;right:auto;-webkit-box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)!important;box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)!important;border-radius:.28571429rem!important}.ui.floating.dropdown>.menu{margin-top:.5em!important;border-radius:.28571429rem!important}.ui.pointing.dropdown>.menu{top:100%;margin-top:.78571429rem;border-radius:.28571429rem}.ui.pointing.dropdown>.menu:after{display:block;position:absolute;pointer-events:none;content:'';visibility:visible;-webkit-transform:rotate(45deg);transform:rotate(45deg);width:.5em;height:.5em;-webkit-box-shadow:-1px -1px 0 0 rgba(34,36,38,.15);box-shadow:-1px -1px 0 0 rgba(34,36,38,.15);background:#fff;z-index:2}.ui.pointing.dropdown>.menu:after{top:-.25em;left:50%;margin:0 0 0 -.25em}.ui.top.left.pointing.dropdown>.menu{top:100%;bottom:auto;left:0;right:auto;margin:1em 0 0}.ui.top.left.pointing.dropdown>.menu{top:100%;bottom:auto;left:0;right:auto;margin:1em 0 0}.ui.top.left.pointing.dropdown>.menu:after{top:-.25em;left:1em;right:auto;margin:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.ui.top.right.pointing.dropdown>.menu{top:100%;bottom:auto;right:0;left:auto;margin:1em 0 0}.ui.top.pointing.dropdown>.left.menu:after,.ui.top.right.pointing.dropdown>.menu:after{top:-.25em;left:auto!important;right:1em!important;margin:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.ui.left.pointing.dropdown>.menu{top:0;left:100%;right:auto;margin:0 0 0 1em}.ui.left.pointing.dropdown>.menu:after{top:1em;left:-.25em;margin:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.ui.left:not(.top):not(.bottom).pointing.dropdown>.left.menu{left:auto!important;right:100%!important;margin:0 1em 0 0}.ui.left:not(.top):not(.bottom).pointing.dropdown>.left.menu:after{top:1em;left:auto;right:-.25em;margin:0;-webkit-transform:rotate(135deg);transform:rotate(135deg)}.ui.right.pointing.dropdown>.menu{top:0;left:auto;right:100%;margin:0 1em 0 0}.ui.right.pointing.dropdown>.menu:after{top:1em;left:auto;right:-.25em;margin:0;-webkit-transform:rotate(135deg);transform:rotate(135deg)}.ui.bottom.pointing.dropdown>.menu{top:auto;bottom:100%;left:0;right:auto;margin:0 0 1em}.ui.bottom.pointing.dropdown>.menu:after{top:auto;bottom:-.25em;right:auto;margin:0;-webkit-transform:rotate(-135deg);transform:rotate(-135deg)}.ui.bottom.pointing.dropdown>.menu .menu{top:auto!important;bottom:0!important}.ui.bottom.left.pointing.dropdown>.menu{left:0;right:auto}.ui.bottom.left.pointing.dropdown>.menu:after{left:1em;right:auto}.ui.bottom.right.pointing.dropdown>.menu{right:0;left:auto}.ui.bottom.right.pointing.dropdown>.menu:after{left:auto;right:1em}.ui.pointing.upward.dropdown .menu,.ui.top.pointing.upward.dropdown .menu{top:auto!important;bottom:100%!important;margin:0 0 .78571429rem;border-radius:.28571429rem}.ui.pointing.upward.dropdown .menu:after,.ui.top.pointing.upward.dropdown .menu:after{top:100%!important;bottom:auto!important;-webkit-box-shadow:1px 1px 0 0 rgba(34,36,38,.15);box-shadow:1px 1px 0 0 rgba(34,36,38,.15);margin:-.25em 0 0}.ui.right.pointing.upward.dropdown:not(.top):not(.bottom) .menu{top:auto!important;bottom:0!important;margin:0 1em 0 0}.ui.right.pointing.upward.dropdown:not(.top):not(.bottom) .menu:after{top:auto!important;bottom:0!important;margin:0 0 1em 0;-webkit-box-shadow:-1px -1px 0 0 rgba(34,36,38,.15);box-shadow:-1px -1px 0 0 rgba(34,36,38,.15)}.ui.left.pointing.upward.dropdown:not(.top):not(.bottom) .menu{top:auto!important;bottom:0!important;margin:0 0 0 1em}.ui.left.pointing.upward.dropdown:not(.top):not(.bottom) .menu:after{top:auto!important;bottom:0!important;margin:0 0 1em 0;-webkit-box-shadow:-1px -1px 0 0 rgba(34,36,38,.15);box-shadow:-1px -1px 0 0 rgba(34,36,38,.15)}@font-face{font-family:Dropdown;src:url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAVgAA8AAAAACFAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABWAAAABwAAAAchGgaq0dERUYAAAF0AAAAHAAAAB4AJwAPT1MvMgAAAZAAAABDAAAAVnW4TJdjbWFwAAAB1AAAAEsAAAFS8CcaqmN2dCAAAAIgAAAABAAAAAQAEQFEZ2FzcAAAAiQAAAAIAAAACP//AANnbHlmAAACLAAAAQoAAAGkrRHP9WhlYWQAAAM4AAAAMAAAADYPK8YyaGhlYQAAA2gAAAAdAAAAJANCAb1obXR4AAADiAAAACIAAAAiCBkAOGxvY2EAAAOsAAAAFAAAABQBnAIybWF4cAAAA8AAAAAfAAAAIAEVAF5uYW1lAAAD4AAAATAAAAKMFGlj5HBvc3QAAAUQAAAARgAAAHJoedjqd2ViZgAABVgAAAAGAAAABrO7W5UAAAABAAAAANXulPUAAAAA1r4hgAAAAADXu2Q1eNpjYGRgYOABYjEgZmJgBEIOIGYB8xgAA/YAN3jaY2BktGOcwMDKwMI4jTGNgYHBHUp/ZZBkaGFgYGJgZWbACgLSXFMYHFT/fLjFeOD/AQY9xjMMbkBhRpAcAN48DQYAeNpjYGBgZoBgGQZGBhDwAfIYwXwWBgMgzQGETAwMqn8+8H649f8/lHX9//9b7Pzf+fWgusCAkY0BzmUE6gHpQwGMDMMeAACbxg7SAAARAUQAAAAB//8AAnjadZBPSsNAGMXfS+yMqYgOhpSuSlKadmUhiVEhEMQzFF22m17BbbvzCh5BXCUn6EG8gjeQ4DepwYo4i+/ffL95j4EDA+CFC7jQuKyIeVHrI3wkleq9F7XrSInKteOeHdda8bOoaeepSc00NWPz/LRec9G8GabyGtEdF7h19z033GAMTK7zbM42xNEZpzYof0RtQ5CUHAQJ73OtVyutc+3b7Ou//b8XNlsPx3jgjUifABdhEohKJJL5iM5p39uqc7X1+sRQSqmGrUVhlsJ4lpmEUVwyT8SUYtg0P9DyNzPADDs+tjrGV6KRCRfsui3eHcL4/p8ZXvfMlcnEU+CLv7hDykOP+AKTPTxbAAB42mNgZGBgAGKuf5KP4vltvjLIMzGAwLV9ig0g+vruFFMQzdjACOJzMIClARh0CTJ42mNgZGBgPPD/AJD8wgAEjA0MjAyogAMAbOQEAQAAAAC7ABEAAAAAAKoAAAH0AAABgAAAAUAACAFAAAgAwAAXAAAAAAAAACoAKgAqADIAbACGAKAAugDSeNpjYGRgYOBkUGFgYgABEMkFhAwM/xn0QAIADdUBdAB42qWQvUoDQRSFv3GjaISUQaymSmGxJoGAsRC0iPYLsU50Y6IxrvlRtPCJJKUPIBb+PIHv4EN4djKuKAqCDHfmu+feOdwZoMCUAJNbAlYUMzaUlM14jjxbngOq7HnOia89z1Pk1vMCa9x7ztPkzfMyJbPj+ZGi6Xp+omxuPD+zaD7meaFg7mb8GrBqHmhwxoAxlm0uiRkpP9X5m26pKRoMxTGR1D49Dv/Yb/91o6l8qL6eu5n2hZQzn68utR9m3FU2cB4t9cdSLG2utI+44Eh/P9bqKO+oJ/WxmXssj77YkrjasZQD6SFddythk3Wtzrf+UF2p076Udla1VNzsERP3kkjVRKel7mp1udXYcHtZSlV7RfmJe1GiFWveluaeKD5/MuJcSk8Tpm/vvwPIbmJleNpjYGKAAFYG7ICTgYGRiZGZkYWRlZGNkZ2Rg5GTLT2nsiDDEEIZsZfmZRqZujmDaDcDAxcI7WIOpS2gtCWUdgQAZkcSmQAAAAFblbO6AAA=) format('woff');font-weight:400;font-style:normal}.ui.dropdown>.dropdown.icon{font-family:Dropdown;line-height:1;height:1em;width:1.23em;-webkit-backface-visibility:hidden;backface-visibility:hidden;font-weight:400;font-style:normal;text-align:center}.ui.dropdown>.dropdown.icon{width:auto}.ui.dropdown>.dropdown.icon:before{content:'\f0d7'}.ui.dropdown .menu .item .dropdown.icon:before{content:'\f0da'}.ui.dropdown .item .left.dropdown.icon:before,.ui.dropdown .left.menu .item .dropdown.icon:before{content:"\f0d9"}.ui.vertical.menu .dropdown.item>.dropdown.icon:before{content:"\f0da"}.ui.dropdown>.clear.icon:before{content:"\f00d"}/*! -* # Semantic UI 2.4.0 - Video -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.embed{position:relative;max-width:100%;height:0;overflow:hidden;background:#dcddde;padding-bottom:56.25%}.ui.embed embed,.ui.embed iframe,.ui.embed object{position:absolute;border:none;width:100%;height:100%;top:0;left:0;margin:0;padding:0}.ui.embed>.embed{display:none}.ui.embed>.placeholder{position:absolute;cursor:pointer;top:0;left:0;display:block;width:100%;height:100%;background-color:radial-gradient(transparent 45%,rgba(0,0,0,.3))}.ui.embed>.icon{cursor:pointer;position:absolute;top:0;left:0;width:100%;height:100%;z-index:2}.ui.embed>.icon:after{position:absolute;top:0;left:0;width:100%;height:100%;z-index:3;content:'';background:-webkit-radial-gradient(transparent 45%,rgba(0,0,0,.3));background:radial-gradient(transparent 45%,rgba(0,0,0,.3));opacity:.5;-webkit-transition:opacity .5s ease;transition:opacity .5s ease}.ui.embed>.icon:before{position:absolute;top:50%;left:50%;z-index:4;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);color:#fff;font-size:6rem;text-shadow:0 2px 10px rgba(34,36,38,.2);-webkit-transition:opacity .5s ease,color .5s ease;transition:opacity .5s ease,color .5s ease;z-index:10}.ui.embed .icon:hover:after{background:-webkit-radial-gradient(transparent 45%,rgba(0,0,0,.3));background:radial-gradient(transparent 45%,rgba(0,0,0,.3));opacity:1}.ui.embed .icon:hover:before{color:#fff}.ui.active.embed>.icon,.ui.active.embed>.placeholder{display:none}.ui.active.embed>.embed{display:block}.ui.square.embed{padding-bottom:100%}.ui[class*="4:3"].embed{padding-bottom:75%}.ui[class*="16:9"].embed{padding-bottom:56.25%}.ui[class*="21:9"].embed{padding-bottom:42.85714286%}/*! -* # Semantic UI 2.4.0 - Modal -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.modal{position:absolute;display:none;z-index:1001;text-align:left;background:#fff;border:none;-webkit-box-shadow:1px 3px 3px 0 rgba(0,0,0,.2),1px 3px 15px 2px rgba(0,0,0,.2);box-shadow:1px 3px 3px 0 rgba(0,0,0,.2),1px 3px 15px 2px rgba(0,0,0,.2);-webkit-transform-origin:50% 25%;transform-origin:50% 25%;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;border-radius:.28571429rem;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;will-change:top,left,margin,transform,opacity}.ui.modal>.icon:first-child+*,.ui.modal>:first-child:not(.icon){border-top-left-radius:.28571429rem;border-top-right-radius:.28571429rem}.ui.modal>:last-child{border-bottom-left-radius:.28571429rem;border-bottom-right-radius:.28571429rem}.ui.modal>.close{cursor:pointer;position:absolute;top:-2.5rem;right:-2.5rem;z-index:1;opacity:.8;font-size:1.25em;color:#fff;width:2.25rem;height:2.25rem;padding:.625rem 0 0 0}.ui.modal>.close:hover{opacity:1}.ui.modal>.header{display:block;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;background:#fff;margin:0;padding:1.25rem 1.5rem;-webkit-box-shadow:none;box-shadow:none;color:rgba(0,0,0,.85);border-bottom:1px solid rgba(34,36,38,.15)}.ui.modal>.header:not(.ui){font-size:1.42857143rem;line-height:1.28571429em;font-weight:700}.ui.modal>.content{display:block;width:100%;font-size:1em;line-height:1.4;padding:1.5rem;background:#fff}.ui.modal>.image.content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.ui.modal>.content>.image{display:block;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:'';-ms-flex-item-align:top;align-self:top}.ui.modal>[class*="top aligned"]{-ms-flex-item-align:top;align-self:top}.ui.modal>[class*="middle aligned"]{-ms-flex-item-align:middle;align-self:middle}.ui.modal>[class*=stretched]{-ms-flex-item-align:stretch;align-self:stretch}.ui.modal>.content>.description{display:block;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;min-width:0;-ms-flex-item-align:top;align-self:top}.ui.modal>.content>.icon+.description,.ui.modal>.content>.image+.description{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;min-width:'';width:auto;padding-left:2em}.ui.modal>.content>.image>i.icon{margin:0;opacity:1;width:auto;line-height:1;font-size:8rem}.ui.modal>.actions{background:#f9fafb;padding:1rem 1rem;border-top:1px solid rgba(34,36,38,.15);text-align:right}.ui.modal .actions>.button{margin-left:.75em}@media only screen and (max-width:767px){.ui.modal{width:95%;margin:0}}@media only screen and (min-width:768px){.ui.modal{width:88%;margin:0}}@media only screen and (min-width:992px){.ui.modal{width:850px;margin:0}}@media only screen and (min-width:1200px){.ui.modal{width:900px;margin:0}}@media only screen and (min-width:1920px){.ui.modal{width:950px;margin:0}}@media only screen and (max-width:991px){.ui.modal>.header{padding-right:2.25rem}.ui.modal>.close{top:1.0535rem;right:1rem;color:rgba(0,0,0,.87)}}@media only screen and (max-width:767px){.ui.modal>.header{padding:.75rem 1rem!important;padding-right:2.25rem!important}.ui.modal>.content{display:block;padding:1rem!important}.ui.modal>.close{top:.5rem!important;right:.5rem!important}.ui.modal .image.content{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ui.modal .content>.image{display:block;max-width:100%;margin:0 auto!important;text-align:center;padding:0 0 1rem!important}.ui.modal>.content>.image>i.icon{font-size:5rem;text-align:center}.ui.modal .content>.description{display:block;width:100%!important;margin:0!important;padding:1rem 0!important;-webkit-box-shadow:none;box-shadow:none}.ui.modal>.actions{padding:1rem 1rem 0!important}.ui.modal .actions>.button,.ui.modal .actions>.buttons{margin-bottom:1rem}}.ui.inverted.dimmer>.ui.modal{-webkit-box-shadow:1px 3px 10px 2px rgba(0,0,0,.2);box-shadow:1px 3px 10px 2px rgba(0,0,0,.2)}.ui.basic.modal{background-color:transparent;border:none;border-radius:0;-webkit-box-shadow:none!important;box-shadow:none!important;color:#fff}.ui.basic.modal>.actions,.ui.basic.modal>.content,.ui.basic.modal>.header{background-color:transparent}.ui.basic.modal>.header{color:#fff}.ui.basic.modal>.close{top:1rem;right:1.5rem}.ui.inverted.dimmer>.basic.modal{color:rgba(0,0,0,.87)}.ui.inverted.dimmer>.ui.basic.modal>.header{color:rgba(0,0,0,.85)}.ui.legacy.modal,.ui.legacy.page.dimmer>.ui.modal{top:50%;left:50%}.ui.legacy.page.dimmer>.ui.scrolling.modal,.ui.page.dimmer>.ui.scrolling.legacy.modal,.ui.top.aligned.dimmer>.ui.legacy.modal,.ui.top.aligned.legacy.page.dimmer>.ui.modal{top:auto}@media only screen and (max-width:991px){.ui.basic.modal>.close{color:#fff}}.ui.loading.modal{display:block;visibility:hidden;z-index:-1}.ui.active.modal{display:block}.modals.dimmer[class*="top aligned"] .modal{margin:5vh auto}@media only screen and (max-width:767px){.modals.dimmer[class*="top aligned"] .modal{margin:1rem auto}}.legacy.modals.dimmer[class*="top aligned"]{padding-top:5vh}@media only screen and (max-width:767px){.legacy.modals.dimmer[class*="top aligned"]{padding-top:1rem}}.scrolling.dimmable.dimmed{overflow:hidden}.scrolling.dimmable>.dimmer{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.scrolling.dimmable.dimmed>.dimmer{overflow:auto;-webkit-overflow-scrolling:touch}.scrolling.dimmable>.dimmer{position:fixed}.modals.dimmer .ui.scrolling.modal{margin:1rem auto}.scrolling.undetached.dimmable.dimmed{overflow:auto;-webkit-overflow-scrolling:touch}.scrolling.undetached.dimmable.dimmed>.dimmer{overflow:hidden}.scrolling.undetached.dimmable .ui.scrolling.modal{position:absolute;left:50%;margin-top:1rem!important}.ui.modal .scrolling.content{max-height:calc(70vh);overflow:auto}.ui.fullscreen.modal{width:95%!important;left:0!important;margin:1em auto}.ui.fullscreen.scrolling.modal{left:0!important}.ui.fullscreen.modal>.header{padding-right:2.25rem}.ui.fullscreen.modal>.close{top:1.0535rem;right:1rem;color:rgba(0,0,0,.87)}.ui.modal{font-size:1rem}.ui.mini.modal>.header:not(.ui){font-size:1.3em}@media only screen and (max-width:767px){.ui.mini.modal{width:95%;margin:0}}@media only screen and (min-width:768px){.ui.mini.modal{width:35.2%;margin:0}}@media only screen and (min-width:992px){.ui.mini.modal{width:340px;margin:0}}@media only screen and (min-width:1200px){.ui.mini.modal{width:360px;margin:0}}@media only screen and (min-width:1920px){.ui.mini.modal{width:380px;margin:0}}.ui.small.modal>.header:not(.ui){font-size:1.3em}@media only screen and (max-width:767px){.ui.tiny.modal{width:95%;margin:0}}@media only screen and (min-width:768px){.ui.tiny.modal{width:52.8%;margin:0}}@media only screen and (min-width:992px){.ui.tiny.modal{width:510px;margin:0}}@media only screen and (min-width:1200px){.ui.tiny.modal{width:540px;margin:0}}@media only screen and (min-width:1920px){.ui.tiny.modal{width:570px;margin:0}}.ui.small.modal>.header:not(.ui){font-size:1.3em}@media only screen and (max-width:767px){.ui.small.modal{width:95%;margin:0}}@media only screen and (min-width:768px){.ui.small.modal{width:70.4%;margin:0}}@media only screen and (min-width:992px){.ui.small.modal{width:680px;margin:0}}@media only screen and (min-width:1200px){.ui.small.modal{width:720px;margin:0}}@media only screen and (min-width:1920px){.ui.small.modal{width:760px;margin:0}}.ui.large.modal>.header{font-size:1.6em}@media only screen and (max-width:767px){.ui.large.modal{width:95%;margin:0}}@media only screen and (min-width:768px){.ui.large.modal{width:88%;margin:0}}@media only screen and (min-width:992px){.ui.large.modal{width:1020px;margin:0}}@media only screen and (min-width:1200px){.ui.large.modal{width:1080px;margin:0}}@media only screen and (min-width:1920px){.ui.large.modal{width:1140px;margin:0}}/*! -* # Semantic UI 2.4.0 - Nag -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.nag{display:none;opacity:.95;position:relative;top:0;left:0;z-index:999;min-height:0;width:100%;margin:0;padding:.75em 1em;background:#555;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.2);box-shadow:0 1px 2px 0 rgba(0,0,0,.2);font-size:1rem;text-align:center;color:rgba(0,0,0,.87);border-radius:0 0 .28571429rem .28571429rem;-webkit-transition:.2s background ease;transition:.2s background ease}a.ui.nag{cursor:pointer}.ui.nag>.title{display:inline-block;margin:0 .5em;color:#fff}.ui.nag>.close.icon{cursor:pointer;opacity:.4;position:absolute;top:50%;right:1em;font-size:1em;margin:-.5em 0 0;color:#fff;-webkit-transition:opacity .2s ease;transition:opacity .2s ease}.ui.nag:hover{background:#555;opacity:1}.ui.nag .close:hover{opacity:1}.ui.overlay.nag{position:absolute;display:block}.ui.fixed.nag{position:fixed}.ui.bottom.nag,.ui.bottom.nags{border-radius:.28571429rem .28571429rem 0 0;top:auto;bottom:0}.ui.inverted.nag,.ui.inverted.nags .nag{background-color:#f3f4f5;color:rgba(0,0,0,.85)}.ui.inverted.nag .close,.ui.inverted.nag .title,.ui.inverted.nags .nag .close,.ui.inverted.nags .nag .title{color:rgba(0,0,0,.4)}.ui.nags .nag{border-radius:0!important}.ui.nags .nag:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.bottom.nags .nag:last-child{border-radius:.28571429rem .28571429rem 0 0}/*! -* # Semantic UI 2.4.0 - Popup -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.popup{display:none;position:absolute;top:0;right:0;min-width:-webkit-min-content;min-width:-moz-min-content;min-width:min-content;z-index:1900;border:1px solid #d4d4d5;line-height:1.4285em;max-width:250px;background:#fff;padding:.833em 1em;font-weight:400;font-style:normal;color:rgba(0,0,0,.87);border-radius:.28571429rem;-webkit-box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15)}.ui.popup>.header{padding:0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1.14285714em;line-height:1.2;font-weight:700}.ui.popup>.header+.content{padding-top:.5em}.ui.popup:before{position:absolute;content:'';width:.71428571em;height:.71428571em;background:#fff;-webkit-transform:rotate(45deg);transform:rotate(45deg);z-index:2;-webkit-box-shadow:1px 1px 0 0 #bababc;box-shadow:1px 1px 0 0 #bababc}[data-tooltip]{position:relative}[data-tooltip]:before{pointer-events:none;position:absolute;content:'';font-size:1rem;width:.71428571em;height:.71428571em;background:#fff;-webkit-transform:rotate(45deg);transform:rotate(45deg);z-index:2;-webkit-box-shadow:1px 1px 0 0 #bababc;box-shadow:1px 1px 0 0 #bababc}[data-tooltip]:after{pointer-events:none;content:attr(data-tooltip);position:absolute;text-transform:none;text-align:left;white-space:nowrap;font-size:1rem;border:1px solid #d4d4d5;line-height:1.4285em;max-width:none;background:#fff;padding:.833em 1em;font-weight:400;font-style:normal;color:rgba(0,0,0,.87);border-radius:.28571429rem;-webkit-box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);z-index:1}[data-tooltip]:not([data-position]):before{top:auto;right:auto;bottom:100%;left:50%;background:#fff;margin-left:-.07142857rem;margin-bottom:.14285714rem}[data-tooltip]:not([data-position]):after{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);bottom:100%;margin-bottom:.5em}[data-tooltip]:after,[data-tooltip]:before{pointer-events:none;visibility:hidden}[data-tooltip]:before{opacity:0;-webkit-transform:rotate(45deg) scale(0)!important;transform:rotate(45deg) scale(0)!important;-webkit-transform-origin:center top;transform-origin:center top;-webkit-transition:all .1s ease;transition:all .1s ease}[data-tooltip]:after{opacity:1;-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-transition:all .1s ease;transition:all .1s ease}[data-tooltip]:hover:after,[data-tooltip]:hover:before{visibility:visible;pointer-events:auto}[data-tooltip]:hover:before{-webkit-transform:rotate(45deg) scale(1)!important;transform:rotate(45deg) scale(1)!important;opacity:1}[data-tooltip]:after,[data-tooltip][data-position="bottom center"]:after,[data-tooltip][data-position="top center"]:after{-webkit-transform:translateX(-50%) scale(0)!important;transform:translateX(-50%) scale(0)!important}[data-tooltip]:hover:after,[data-tooltip][data-position="bottom center"]:hover:after{-webkit-transform:translateX(-50%) scale(1)!important;transform:translateX(-50%) scale(1)!important}[data-tooltip][data-position="left center"]:after,[data-tooltip][data-position="right center"]:after{-webkit-transform:translateY(-50%) scale(0)!important;transform:translateY(-50%) scale(0)!important}[data-tooltip][data-position="left center"]:hover:after,[data-tooltip][data-position="right center"]:hover:after{-webkit-transform:translateY(-50%) scale(1)!important;transform:translateY(-50%) scale(1)!important}[data-tooltip][data-position="bottom left"]:after,[data-tooltip][data-position="bottom right"]:after,[data-tooltip][data-position="top left"]:after,[data-tooltip][data-position="top right"]:after{-webkit-transform:scale(0)!important;transform:scale(0)!important}[data-tooltip][data-position="bottom left"]:hover:after,[data-tooltip][data-position="bottom right"]:hover:after,[data-tooltip][data-position="top left"]:hover:after,[data-tooltip][data-position="top right"]:hover:after{-webkit-transform:scale(1)!important;transform:scale(1)!important}[data-tooltip][data-inverted]:before{-webkit-box-shadow:none!important;box-shadow:none!important}[data-tooltip][data-inverted]:before{background:#1b1c1d}[data-tooltip][data-inverted]:after{background:#1b1c1d;color:#fff;border:none;-webkit-box-shadow:none;box-shadow:none}[data-tooltip][data-inverted]:after .header{background-color:none;color:#fff}[data-position="top center"][data-tooltip]:after{top:auto;right:auto;left:50%;bottom:100%;-webkit-transform:translateX(-50%);transform:translateX(-50%);margin-bottom:.5em}[data-position="top center"][data-tooltip]:before{top:auto;right:auto;bottom:100%;left:50%;background:#fff;margin-left:-.07142857rem;margin-bottom:.14285714rem}[data-position="top left"][data-tooltip]:after{top:auto;right:auto;left:0;bottom:100%;margin-bottom:.5em}[data-position="top left"][data-tooltip]:before{top:auto;right:auto;bottom:100%;left:1em;margin-left:-.07142857rem;margin-bottom:.14285714rem}[data-position="top right"][data-tooltip]:after{top:auto;left:auto;right:0;bottom:100%;margin-bottom:.5em}[data-position="top right"][data-tooltip]:before{top:auto;left:auto;bottom:100%;right:1em;margin-left:-.07142857rem;margin-bottom:.14285714rem}[data-position="bottom center"][data-tooltip]:after{bottom:auto;right:auto;left:50%;top:100%;-webkit-transform:translateX(-50%);transform:translateX(-50%);margin-top:.5em}[data-position="bottom center"][data-tooltip]:before{bottom:auto;right:auto;top:100%;left:50%;margin-left:-.07142857rem;margin-top:.14285714rem}[data-position="bottom left"][data-tooltip]:after{left:0;top:100%;margin-top:.5em}[data-position="bottom left"][data-tooltip]:before{bottom:auto;right:auto;top:100%;left:1em;margin-left:-.07142857rem;margin-top:.14285714rem}[data-position="bottom right"][data-tooltip]:after{right:0;top:100%;margin-top:.5em}[data-position="bottom right"][data-tooltip]:before{bottom:auto;left:auto;top:100%;right:1em;margin-left:-.14285714rem;margin-top:.07142857rem}[data-position="left center"][data-tooltip]:after{right:100%;top:50%;margin-right:.5em;-webkit-transform:translateY(-50%);transform:translateY(-50%)}[data-position="left center"][data-tooltip]:before{right:100%;top:50%;margin-top:-.14285714rem;margin-right:-.07142857rem}[data-position="right center"][data-tooltip]:after{left:100%;top:50%;margin-left:.5em;-webkit-transform:translateY(-50%);transform:translateY(-50%)}[data-position="right center"][data-tooltip]:before{left:100%;top:50%;margin-top:-.07142857rem;margin-left:.14285714rem}[data-position~=bottom][data-tooltip]:before{background:#fff;-webkit-box-shadow:-1px -1px 0 0 #bababc;box-shadow:-1px -1px 0 0 #bababc}[data-position="left center"][data-tooltip]:before{background:#fff;-webkit-box-shadow:1px -1px 0 0 #bababc;box-shadow:1px -1px 0 0 #bababc}[data-position="right center"][data-tooltip]:before{background:#fff;-webkit-box-shadow:-1px 1px 0 0 #bababc;box-shadow:-1px 1px 0 0 #bababc}[data-position~=top][data-tooltip]:before{background:#fff}[data-inverted][data-position~=bottom][data-tooltip]:before{background:#1b1c1d;-webkit-box-shadow:-1px -1px 0 0 #bababc;box-shadow:-1px -1px 0 0 #bababc}[data-inverted][data-position="left center"][data-tooltip]:before{background:#1b1c1d;-webkit-box-shadow:1px -1px 0 0 #bababc;box-shadow:1px -1px 0 0 #bababc}[data-inverted][data-position="right center"][data-tooltip]:before{background:#1b1c1d;-webkit-box-shadow:-1px 1px 0 0 #bababc;box-shadow:-1px 1px 0 0 #bababc}[data-inverted][data-position~=top][data-tooltip]:before{background:#1b1c1d}[data-position~=bottom][data-tooltip]:before{-webkit-transform-origin:center bottom;transform-origin:center bottom}[data-position~=bottom][data-tooltip]:after{-webkit-transform-origin:center top;transform-origin:center top}[data-position="left center"][data-tooltip]:before{-webkit-transform-origin:top center;transform-origin:top center}[data-position="left center"][data-tooltip]:after{-webkit-transform-origin:right center;transform-origin:right center}[data-position="right center"][data-tooltip]:before{-webkit-transform-origin:right center;transform-origin:right center}[data-position="right center"][data-tooltip]:after{-webkit-transform-origin:left center;transform-origin:left center}.ui.popup{margin:0}.ui.top.popup{margin:0 0 .71428571em}.ui.top.left.popup{-webkit-transform-origin:left bottom;transform-origin:left bottom}.ui.top.center.popup{-webkit-transform-origin:center bottom;transform-origin:center bottom}.ui.top.right.popup{-webkit-transform-origin:right bottom;transform-origin:right bottom}.ui.left.center.popup{margin:0 .71428571em 0 0;-webkit-transform-origin:right 50%;transform-origin:right 50%}.ui.right.center.popup{margin:0 0 0 .71428571em;-webkit-transform-origin:left 50%;transform-origin:left 50%}.ui.bottom.popup{margin:.71428571em 0 0}.ui.bottom.left.popup{-webkit-transform-origin:left top;transform-origin:left top}.ui.bottom.center.popup{-webkit-transform-origin:center top;transform-origin:center top}.ui.bottom.right.popup{-webkit-transform-origin:right top;transform-origin:right top}.ui.bottom.center.popup:before{margin-left:-.30714286em;top:-.30714286em;left:50%;right:auto;bottom:auto;-webkit-box-shadow:-1px -1px 0 0 #bababc;box-shadow:-1px -1px 0 0 #bababc}.ui.bottom.left.popup{margin-left:0}.ui.bottom.left.popup:before{top:-.30714286em;left:1em;right:auto;bottom:auto;margin-left:0;-webkit-box-shadow:-1px -1px 0 0 #bababc;box-shadow:-1px -1px 0 0 #bababc}.ui.bottom.right.popup{margin-right:0}.ui.bottom.right.popup:before{top:-.30714286em;right:1em;bottom:auto;left:auto;margin-left:0;-webkit-box-shadow:-1px -1px 0 0 #bababc;box-shadow:-1px -1px 0 0 #bababc}.ui.top.center.popup:before{top:auto;right:auto;bottom:-.30714286em;left:50%;margin-left:-.30714286em}.ui.top.left.popup{margin-left:0}.ui.top.left.popup:before{bottom:-.30714286em;left:1em;top:auto;right:auto;margin-left:0}.ui.top.right.popup{margin-right:0}.ui.top.right.popup:before{bottom:-.30714286em;right:1em;top:auto;left:auto;margin-left:0}.ui.left.center.popup:before{top:50%;right:-.30714286em;bottom:auto;left:auto;margin-top:-.30714286em;-webkit-box-shadow:1px -1px 0 0 #bababc;box-shadow:1px -1px 0 0 #bababc}.ui.right.center.popup:before{top:50%;left:-.30714286em;bottom:auto;right:auto;margin-top:-.30714286em;-webkit-box-shadow:-1px 1px 0 0 #bababc;box-shadow:-1px 1px 0 0 #bababc}.ui.bottom.popup:before{background:#fff}.ui.left.center.popup:before,.ui.right.center.popup:before{background:#fff}.ui.top.popup:before{background:#fff}.ui.inverted.bottom.popup:before{background:#1b1c1d}.ui.inverted.left.center.popup:before,.ui.inverted.right.center.popup:before{background:#1b1c1d}.ui.inverted.top.popup:before{background:#1b1c1d}.ui.popup>.ui.grid:not(.padded){width:calc(100% + 1.75rem);margin:-.7rem -.875rem}.ui.loading.popup{display:block;visibility:hidden;z-index:-1}.ui.animating.popup,.ui.visible.popup{display:block}.ui.visible.popup{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.ui.basic.popup:before{display:none}.ui.wide.popup{max-width:350px}.ui[class*="very wide"].popup{max-width:550px}@media only screen and (max-width:767px){.ui.wide.popup,.ui[class*="very wide"].popup{max-width:250px}}.ui.fluid.popup{width:100%;max-width:none}.ui.inverted.popup{background:#1b1c1d;color:#fff;border:none;-webkit-box-shadow:none;box-shadow:none}.ui.inverted.popup .header{background-color:none;color:#fff}.ui.inverted.popup:before{background-color:#1b1c1d;-webkit-box-shadow:none!important;box-shadow:none!important}.ui.flowing.popup{max-width:none}.ui.mini.popup{font-size:.78571429rem}.ui.tiny.popup{font-size:.85714286rem}.ui.small.popup{font-size:.92857143rem}.ui.popup{font-size:1rem}.ui.large.popup{font-size:1.14285714rem}.ui.huge.popup{font-size:1.42857143rem}/*! -* # Semantic UI 2.4.0 - Progress Bar -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.progress{position:relative;display:block;max-width:100%;border:none;margin:1em 0 2.5em;-webkit-box-shadow:none;box-shadow:none;background:rgba(0,0,0,.1);padding:0;border-radius:.28571429rem}.ui.progress:first-child{margin:0 0 2.5em}.ui.progress:last-child{margin:0 0 1.5em}.ui.progress .bar{display:block;line-height:1;position:relative;width:0%;min-width:2em;background:#888;border-radius:.28571429rem;-webkit-transition:width .1s ease,background-color .1s ease;transition:width .1s ease,background-color .1s ease}.ui.progress .bar>.progress{white-space:nowrap;position:absolute;width:auto;font-size:.92857143em;top:50%;right:.5em;left:auto;bottom:auto;color:rgba(255,255,255,.7);text-shadow:none;margin-top:-.5em;font-weight:700;text-align:left}.ui.progress>.label{position:absolute;width:100%;font-size:1em;top:100%;right:auto;left:0;bottom:auto;color:rgba(0,0,0,.87);font-weight:700;text-shadow:none;margin-top:.2em;text-align:center;-webkit-transition:color .4s ease;transition:color .4s ease}.ui.indicating.progress[data-percent^="1"] .bar,.ui.indicating.progress[data-percent^="2"] .bar{background-color:#d95c5c}.ui.indicating.progress[data-percent^="3"] .bar{background-color:#efbc72}.ui.indicating.progress[data-percent^="4"] .bar,.ui.indicating.progress[data-percent^="5"] .bar{background-color:#e6bb48}.ui.indicating.progress[data-percent^="6"] .bar{background-color:#ddc928}.ui.indicating.progress[data-percent^="7"] .bar,.ui.indicating.progress[data-percent^="8"] .bar{background-color:#b4d95c}.ui.indicating.progress[data-percent^="100"] .bar,.ui.indicating.progress[data-percent^="9"] .bar{background-color:#66da81}.ui.indicating.progress[data-percent^="1"] .label,.ui.indicating.progress[data-percent^="2"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent^="3"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent^="4"] .label,.ui.indicating.progress[data-percent^="5"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent^="6"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent^="7"] .label,.ui.indicating.progress[data-percent^="8"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent^="100"] .label,.ui.indicating.progress[data-percent^="9"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress[data-percent="1"] .bar,.ui.indicating.progress[data-percent="2"] .bar,.ui.indicating.progress[data-percent="3"] .bar,.ui.indicating.progress[data-percent="4"] .bar,.ui.indicating.progress[data-percent="5"] .bar,.ui.indicating.progress[data-percent="6"] .bar,.ui.indicating.progress[data-percent="7"] .bar,.ui.indicating.progress[data-percent="8"] .bar,.ui.indicating.progress[data-percent="9"] .bar{background-color:#d95c5c}.ui.indicating.progress[data-percent="1"] .label,.ui.indicating.progress[data-percent="2"] .label,.ui.indicating.progress[data-percent="3"] .label,.ui.indicating.progress[data-percent="4"] .label,.ui.indicating.progress[data-percent="5"] .label,.ui.indicating.progress[data-percent="6"] .label,.ui.indicating.progress[data-percent="7"] .label,.ui.indicating.progress[data-percent="8"] .label,.ui.indicating.progress[data-percent="9"] .label{color:rgba(0,0,0,.87)}.ui.indicating.progress.success .label{color:#1a531b}.ui.progress.success .bar{background-color:#21ba45!important}.ui.progress.success .bar,.ui.progress.success .bar::after{-webkit-animation:none!important;animation:none!important}.ui.progress.success>.label{color:#1a531b}.ui.progress.warning .bar{background-color:#f2c037!important}.ui.progress.warning .bar,.ui.progress.warning .bar::after{-webkit-animation:none!important;animation:none!important}.ui.progress.warning>.label{color:#794b02}.ui.progress.error .bar{background-color:#db2828!important}.ui.progress.error .bar,.ui.progress.error .bar::after{-webkit-animation:none!important;animation:none!important}.ui.progress.error>.label{color:#912d2b}.ui.active.progress .bar{position:relative;min-width:2em}.ui.active.progress .bar::after{content:'';opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;background:#fff;border-radius:.28571429rem;-webkit-animation:progress-active 2s ease infinite;animation:progress-active 2s ease infinite}@-webkit-keyframes progress-active{0%{opacity:.3;width:0}100%{opacity:0;width:100%}}@keyframes progress-active{0%{opacity:.3;width:0}100%{opacity:0;width:100%}}.ui.disabled.progress{opacity:.35}.ui.disabled.progress .bar,.ui.disabled.progress .bar::after{-webkit-animation:none!important;animation:none!important}.ui.inverted.progress{background:rgba(255,255,255,.08);border:none}.ui.inverted.progress .bar{background:#888}.ui.inverted.progress .bar>.progress{color:#f9fafb}.ui.inverted.progress>.label{color:#fff}.ui.inverted.progress.success>.label{color:#21ba45}.ui.inverted.progress.warning>.label{color:#f2c037}.ui.inverted.progress.error>.label{color:#db2828}.ui.progress.attached{background:0 0;position:relative;border:none;margin:0}.ui.progress.attached,.ui.progress.attached .bar{display:block;height:.2rem;padding:0;overflow:hidden;border-radius:0 0 .28571429rem .28571429rem}.ui.progress.attached .bar{border-radius:0}.ui.progress.top.attached,.ui.progress.top.attached .bar{top:0;border-radius:.28571429rem .28571429rem 0 0}.ui.progress.top.attached .bar{border-radius:0}.ui.card>.ui.attached.progress,.ui.segment>.ui.attached.progress{position:absolute;top:auto;left:0;bottom:100%;width:100%}.ui.card>.ui.bottom.attached.progress,.ui.segment>.ui.bottom.attached.progress{top:100%;bottom:auto}.ui.red.progress .bar{background-color:#db2828}.ui.red.inverted.progress .bar{background-color:#ff695e}.ui.orange.progress .bar{background-color:#f2711c}.ui.orange.inverted.progress .bar{background-color:#ff851b}.ui.yellow.progress .bar{background-color:#fbbd08}.ui.yellow.inverted.progress .bar{background-color:#ffe21f}.ui.olive.progress .bar{background-color:#b5cc18}.ui.olive.inverted.progress .bar{background-color:#d9e778}.ui.green.progress .bar{background-color:#21ba45}.ui.green.inverted.progress .bar{background-color:#2ecc40}.ui.teal.progress .bar{background-color:#00b5ad}.ui.teal.inverted.progress .bar{background-color:#6dffff}.ui.blue.progress .bar{background-color:#2185d0}.ui.blue.inverted.progress .bar{background-color:#54c8ff}.ui.violet.progress .bar{background-color:#6435c9}.ui.violet.inverted.progress .bar{background-color:#a291fb}.ui.purple.progress .bar{background-color:#a333c8}.ui.purple.inverted.progress .bar{background-color:#dc73ff}.ui.pink.progress .bar{background-color:#e03997}.ui.pink.inverted.progress .bar{background-color:#ff8edf}.ui.brown.progress .bar{background-color:#a5673f}.ui.brown.inverted.progress .bar{background-color:#d67c1c}.ui.grey.progress .bar{background-color:#767676}.ui.grey.inverted.progress .bar{background-color:#dcddde}.ui.black.progress .bar{background-color:#1b1c1d}.ui.black.inverted.progress .bar{background-color:#545454}.ui.tiny.progress{font-size:.85714286rem}.ui.tiny.progress .bar{height:.5em}.ui.small.progress{font-size:.92857143rem}.ui.small.progress .bar{height:1em}.ui.progress{font-size:1rem}.ui.progress .bar{height:1.75em}.ui.large.progress{font-size:1.14285714rem}.ui.large.progress .bar{height:2.5em}.ui.big.progress{font-size:1.28571429rem}.ui.big.progress .bar{height:3.5em}/*! -* # Semantic UI 2.4.0 - Rating -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.rating{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;white-space:nowrap;vertical-align:baseline}.ui.rating:last-child{margin-right:0}.ui.rating .icon{padding:0;margin:0;text-align:center;font-weight:400;font-style:normal;-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;cursor:pointer;width:1.25em;height:auto;-webkit-transition:opacity .1s ease,background .1s ease,text-shadow .1s ease,color .1s ease;transition:opacity .1s ease,background .1s ease,text-shadow .1s ease,color .1s ease}.ui.rating .icon{background:0 0;color:rgba(0,0,0,.15)}.ui.rating .active.icon{background:0 0;color:rgba(0,0,0,.85)}.ui.rating .icon.selected,.ui.rating .icon.selected.active{background:0 0;color:rgba(0,0,0,.87)}.ui.star.rating .icon{width:1.25em;height:auto;background:0 0;color:rgba(0,0,0,.15);text-shadow:none}.ui.star.rating .active.icon{background:0 0!important;color:#ffe623!important;text-shadow:0 -1px 0 #ddc507,-1px 0 0 #ddc507,0 1px 0 #ddc507,1px 0 0 #ddc507!important}.ui.star.rating .icon.selected,.ui.star.rating .icon.selected.active{background:0 0!important;color:#fc0!important;text-shadow:0 -1px 0 #e6a200,-1px 0 0 #e6a200,0 1px 0 #e6a200,1px 0 0 #e6a200!important}.ui.heart.rating .icon{width:1.4em;height:auto;background:0 0;color:rgba(0,0,0,.15);text-shadow:none!important}.ui.heart.rating .active.icon{background:0 0!important;color:#ff6d75!important;text-shadow:0 -1px 0 #cd0707,-1px 0 0 #cd0707,0 1px 0 #cd0707,1px 0 0 #cd0707!important}.ui.heart.rating .icon.selected,.ui.heart.rating .icon.selected.active{background:0 0!important;color:#ff3000!important;text-shadow:0 -1px 0 #aa0101,-1px 0 0 #aa0101,0 1px 0 #aa0101,1px 0 0 #aa0101!important}.ui.disabled.rating .icon{cursor:default}.ui.rating.selected .active.icon{opacity:1}.ui.rating .icon.selected,.ui.rating.selected .icon.selected{opacity:1}.ui.mini.rating{font-size:.78571429rem}.ui.tiny.rating{font-size:.85714286rem}.ui.small.rating{font-size:.92857143rem}.ui.rating{font-size:1rem}.ui.large.rating{font-size:1.14285714rem}.ui.huge.rating{font-size:1.42857143rem}.ui.massive.rating{font-size:2rem}@font-face{font-family:Rating;src:url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMggjCBsAAAC8AAAAYGNtYXCj2pm8AAABHAAAAKRnYXNwAAAAEAAAAcAAAAAIZ2x5ZlJbXMYAAAHIAAARnGhlYWQBGAe5AAATZAAAADZoaGVhA+IB/QAAE5wAAAAkaG10eCzgAEMAABPAAAAAcGxvY2EwXCxOAAAUMAAAADptYXhwACIAnAAAFGwAAAAgbmFtZfC1n04AABSMAAABPHBvc3QAAwAAAAAVyAAAACAAAwIAAZAABQAAAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADxZQHg/+D/4AHgACAAAAABAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEAJAAAAAgACAABAAAAAEAIOYF8AbwDfAj8C7wbvBw8Irwl/Cc8SPxZf/9//8AAAAAACDmAPAE8AzwI/Au8G7wcPCH8JfwnPEj8WT//f//AAH/4xoEEAYQAQ/sD+IPow+iD4wPgA98DvYOtgADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAPAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAIAAP/tAgAB0wAKABUAAAEvAQ8BFwc3Fyc3BQc3Jz8BHwEHFycCALFPT7GAHp6eHoD/AHAWW304OH1bFnABGRqgoBp8sFNTsHyyOnxYEnFxElh8OgAAAAACAAD/7QIAAdMACgASAAABLwEPARcHNxcnNwUxER8BBxcnAgCxT0+xgB6enh6A/wA4fVsWcAEZGqCgGnywU1OwfLIBHXESWHw6AAAAAQAA/+0CAAHTAAoAAAEvAQ8BFwc3Fyc3AgCxT0+xgB6enh6AARkaoKAafLBTU7B8AAAAAAEAAAAAAgABwAArAAABFA4CBzEHDgMjIi4CLwEuAzU0PgIzMh4CFz4DMzIeAhUCAAcMEgugBgwMDAYGDAwMBqALEgwHFyg2HhAfGxkKChkbHxAeNigXAS0QHxsZCqAGCwkGBQkLBqAKGRsfEB42KBcHDBILCxIMBxcoNh4AAAAAAgAAAAACAAHAACsAWAAAATQuAiMiDgIHLgMjIg4CFRQeAhcxFx4DMzI+Aj8BPgM1DwEiFCIGMTAmIjQjJy4DNTQ+AjMyHgIfATc+AzMyHgIVFA4CBwIAFyg2HhAfGxkKChkbHxAeNigXBwwSC6AGDAwMBgYMDAwGoAsSDAdbogEBAQEBAaIGCgcEDRceEQkREA4GLy8GDhARCREeFw0EBwoGAS0eNigXBwwSCwsSDAcXKDYeEB8bGQqgBgsJBgUJCwagChkbHxA+ogEBAQGiBg4QEQkRHhcNBAcKBjQ0BgoHBA0XHhEJERAOBgABAAAAAAIAAcAAMQAAARQOAgcxBw4DIyIuAi8BLgM1ND4CMzIeAhcHFwc3Jzc+AzMyHgIVAgAHDBILoAYMDAwGBgwMDAagCxIMBxcoNh4KFRMSCC9wQLBwJwUJCgkFHjYoFwEtEB8bGQqgBgsJBgUJCwagChkbHxAeNigXAwUIBUtAoMBAOwECAQEXKDYeAAABAAAAAAIAAbcAKgAAEzQ3NjMyFxYXFhcWFzY3Njc2NzYzMhcWFRQPAQYjIi8BJicmJyYnJicmNQAkJUARExIQEAsMCgoMCxAQEhMRQCUkQbIGBwcGsgMFBQsKCQkGBwExPyMkBgYLCgkKCgoKCQoLBgYkIz8/QawFBawCBgUNDg4OFRQTAAAAAQAAAA0B2wHSACYAABM0PwI2FzYfAhYVFA8BFxQVFAcGByYvAQcGByYnJjU0PwEnJjUAEI9BBQkIBkCPEAdoGQMDBgUGgIEGBQYDAwEYaAcBIwsCFoEMAQEMgRYCCwYIZJABBQUFAwEBAkVFAgEBAwUFAwOQZAkFAAAAAAIAAAANAdsB0gAkAC4AABM0PwI2FzYfAhYVFA8BFxQVFAcmLwEHBgcmJyY1ND8BJyY1HwEHNxcnNy8BBwAQj0EFCQgGQI8QB2gZDAUGgIEGBQYDAwEYaAc/WBVsaxRXeDY2ASMLAhaBDAEBDIEWAgsGCGSQAQUNAQECRUUCAQEDBQUDA5BkCQURVXg4OHhVEW5uAAABACMAKQHdAXwAGgAANzQ/ATYXNh8BNzYXNh8BFhUUDwEGByYvASY1IwgmCAwLCFS8CAsMCCYICPUIDAsIjgjSCwkmCQEBCVS7CQEBCSYJCg0H9gcBAQePBwwAAAEAHwAfAXMBcwAsAAA3ND8BJyY1ND8BNjMyHwE3NjMyHwEWFRQPARcWFRQPAQYjIi8BBwYjIi8BJjUfCFRUCAgnCAwLCFRUCAwLCCcICFRUCAgnCAsMCFRUCAsMCCcIYgsIVFQIDAsIJwgIVFQICCcICwwIVFQICwwIJwgIVFQICCcIDAAAAAACAAAAJQFJAbcAHwArAAA3NTQ3NjsBNTQ3NjMyFxYdATMyFxYdARQHBiMhIicmNTczNTQnJiMiBwYdAQAICAsKJSY1NCYmCQsICAgIC/7tCwgIW5MWFR4fFRZApQsICDc0JiYmJjQ3CAgLpQsICAgIC8A3HhYVFRYeNwAAAQAAAAcBbgG3ACEAADcRNDc2NzYzITIXFhcWFREUBwYHBiMiLwEHBiMiJyYnJjUABgUKBgYBLAYGCgUGBgUKBQcOCn5+Cg4GBgoFBicBcAoICAMDAwMICAr+kAoICAQCCXl5CQIECAgKAAAAAwAAACUCAAFuABgAMQBKAAA3NDc2NzYzMhcWFxYVFAcGBwYjIicmJyY1MxYXFjMyNzY3JicWFRQHBiMiJyY1NDcGBzcUFxYzMjc2NTQ3NjMyNzY1NCcmIyIHBhUABihDREtLREMoBgYoQ0RLS0RDKAYlJjk5Q0M5OSYrQREmJTU1JSYRQSuEBAQGBgQEEREZBgQEBAQGJBkayQoKQSgoKChBCgoKCkEoJycoQQoKOiMjIyM6RCEeIjUmJSUmNSIeIUQlBgQEBAQGGBIRBAQGBgQEGhojAAAABQAAAAkCAAGJACwAOABRAGgAcAAANzQ3Njc2MzIXNzYzMhcWFxYXFhcWFxYVFDEGBwYPAQYjIicmNTQ3JicmJyY1MxYXNyYnJjU0NwYHNxQXFjMyNzY1NDc2MzI3NjU0JyYjIgcGFRc3Njc2NyYnNxYXFhcWFRQHBgcGBwYjPwEWFRQHBgcABitBQU0ZGhADBQEEBAUFBAUEBQEEHjw8Hg4DBQQiBQ0pIyIZBiUvSxYZDg4RQSuEBAQGBgQEEREZBgQEBAQGJBkaVxU9MzQiIDASGxkZEAYGCxQrODk/LlACFxYlyQsJQycnBRwEAgEDAwIDAwIBAwUCNmxsNhkFFAMFBBUTHh8nCQtKISgSHBsfIh4hRCUGBAQEBAYYEhEEBAYGBAQaGiPJJQUiIjYzISASGhkbCgoKChIXMRsbUZANCyghIA8AAAMAAAAAAbcB2wA5AEoAlAAANzU0NzY7ATY3Njc2NzY3Njc2MzIXFhcWFRQHMzIXFhUUBxYVFAcUFRQHFgcGKwEiJyYnJisBIicmNTcUFxYzMjc2NTQnJiMiBwYVFzMyFxYXFhcWFxYXFhcWOwEyNTQnNjc2NTQnNjU0JyYnNjc2NTQnJisBNDc2NTQnJiMGBwYHBgcGBwYHBgcGBwYHBgcGBwYrARUACwoQTgodEQ4GBAMFBgwLDxgTEwoKDjMdFhYOAgoRARkZKCUbGxsjIQZSEAoLJQUFCAcGBQUGBwgFBUkJBAUFBAQHBwMDBwcCPCUjNwIJBQUFDwMDBAkGBgsLDmUODgoJGwgDAwYFDAYQAQUGAwQGBgYFBgUGBgQJSbcPCwsGJhUPCBERExMMCgkJFBQhGxwWFR4ZFQoKFhMGBh0WKBcXBgcMDAoLDxIHBQYGBQcIBQYGBQgSAQEBAQICAQEDAgEULwgIBQoLCgsJDhQHCQkEAQ0NCg8LCxAdHREcDQ4IEBETEw0GFAEHBwUECAgFBQUFAgO3AAADAAD/2wG3AbcAPABNAJkAADc1NDc2OwEyNzY3NjsBMhcWBxUWFRQVFhUUBxYVFAcGKwEWFRQHBgcGIyInJicmJyYnJicmJyYnIyInJjU3FBcWMzI3NjU0JyYjIgcGFRczMhcWFxYXFhcWFxYXFhcWFxYXFhcWFzI3NjU0JyY1MzI3NjU0JyYjNjc2NTQnNjU0JyYnNjU0JyYrASIHIgcGBwYHBgcGIwYrARUACwoQUgYhJRsbHiAoGRkBEQoCDhYWHTMOCgoTExgPCwoFBgIBBAMFDhEdCk4QCgslBQUIBwYFBQYHCAUFSQkEBgYFBgUGBgYEAwYFARAGDAUGAwMIGwkKDg5lDgsLBgYJBAMDDwUFBQkCDg4ZJSU8AgcHAwMHBwQEBQUECbe3DwsKDAwHBhcWJwIWHQYGExYKChUZHhYVHRoiExQJCgsJDg4MDAwNBg4WJQcLCw+kBwUGBgUHCAUGBgUIpAMCBQYFBQcIBAUHBwITBwwTExERBw0OHBEdHRALCw8KDQ0FCQkHFA4JCwoLCgUICBgMCxUDAgEBAgMBAQG3AAAAAQAAAA0A7gHSABQAABM0PwI2FxEHBgcmJyY1ND8BJyY1ABCPQQUJgQYFBgMDARhoBwEjCwIWgQwB/oNFAgEBAwUFAwOQZAkFAAAAAAIAAAAAAgABtwAqAFkAABM0NzYzMhcWFxYXFhc2NzY3Njc2MzIXFhUUDwEGIyIvASYnJicmJyYnJjUzFB8BNzY1NCcmJyYnJicmIyIHBgcGBwYHBiMiJyYnJicmJyYjIgcGBwYHBgcGFQAkJUARExIQEAsMCgoMCxAQEhMRQCUkQbIGBwcGsgMFBQsKCQkGByU1pqY1BgYJCg4NDg0PDhIRDg8KCgcFCQkFBwoKDw4REg4PDQ4NDgoJBgYBMT8jJAYGCwoJCgoKCgkKCwYGJCM/P0GsBQWsAgYFDQ4ODhUUEzA1oJ82MBcSEgoLBgcCAgcHCwsKCQgHBwgJCgsLBwcCAgcGCwoSEhcAAAACAAAABwFuAbcAIQAoAAA3ETQ3Njc2MyEyFxYXFhURFAcGBwYjIi8BBwYjIicmJyY1PwEfAREhEQAGBQoGBgEsBgYKBQYGBQoFBw4Kfn4KDgYGCgUGJZIZef7cJwFwCggIAwMDAwgICv6QCggIBAIJeXkJAgQICAoIjRl0AWP+nQAAAAABAAAAJQHbAbcAMgAANzU0NzY7ATU0NzYzMhcWHQEUBwYrASInJj0BNCcmIyIHBh0BMzIXFh0BFAcGIyEiJyY1AAgIC8AmJjQ1JiUFBQgSCAUFFhUfHhUWHAsICAgIC/7tCwgIQKULCAg3NSUmJiU1SQgFBgYFCEkeFhUVFh43CAgLpQsICAgICwAAAAIAAQANAdsB0gAiAC0AABM2PwI2MzIfAhYXFg8BFxYHBiMiLwEHBiMiJyY/AScmNx8CLwE/AS8CEwEDDJBABggJBUGODgIDCmcYAgQCCAMIf4IFBgYEAgEZaQgC7hBbEgINSnkILgEBJggCFYILC4IVAggICWWPCgUFA0REAwUFCo9lCQipCTBmEw1HEhFc/u0AAAADAAAAAAHJAbcAFAAlAHkAADc1NDc2OwEyFxYdARQHBisBIicmNTcUFxYzMjc2NTQnJiMiBwYVFzU0NzYzNjc2NzY3Njc2NzY3Njc2NzY3NjMyFxYXFhcWFxYXFhUUFRQHBgcGBxQHBgcGBzMyFxYVFAcWFRYHFgcGBxYHBgcjIicmJyYnJiciJyY1AAUGB1MHBQYGBQdTBwYFJQUFCAcGBQUGBwgFBWQFBQgGDw8OFAkFBAQBAQMCAQIEBAYFBw4KCgcHBQQCAwEBAgMDAgYCAgIBAU8XEBAQBQEOBQUECwMREiYlExYXDAwWJAoHBQY3twcGBQUGB7cIBQUFBQgkBwYFBQYHCAUGBgUIJLcHBQYBEBATGQkFCQgGBQwLBgcICQUGAwMFBAcHBgYICQQEBwsLCwYGCgIDBAMCBBEQFhkSDAoVEhAREAsgFBUBBAUEBAcMAQUFCAAAAAADAAD/2wHJAZIAFAAlAHkAADcUFxYXNxY3Nj0BNCcmBycGBwYdATc0NzY3FhcWFRQHBicGJyY1FzU0NzY3Fjc2NzY3NjcXNhcWBxYXFgcWBxQHFhUUBwYHJxYXFhcWFRYXFhcWFRQVFAcGBwYHBgcGBwYnBicmJyYnJicmJyYnJicmJyYnJiciJyY1AAUGB1MHBQYGBQdTBwYFJQUFCAcGBQUGBwgFBWQGBQcKJBYMDBcWEyUmEhEDCwQFBQ4BBRAQEBdPAQECAgIGAgMDAgEBAwIEBQcHCgoOBwUGBAQCAQIDAQEEBAUJFA4PDwYIBQWlBwYFAQEBBwQJtQkEBwEBAQUGB7eTBwYEAQEEBgcJBAYBAQYECZS4BwYEAgENBwUCBgMBAQEXEyEJEhAREBcIDhAaFhEPAQEFAgQCBQELBQcKDAkIBAUHCgUGBwgDBgIEAQEHBQkIBwUMCwcECgcGCRoREQ8CBgQIAAAAAQAAAAEAAJth57dfDzz1AAsCAAAAAADP/GODAAAAAM/8Y4MAAP/bAgAB2wAAAAgAAgAAAAAAAAABAAAB4P/gAAACAAAAAAACAAABAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAdwAAAHcAAACAAAjAZMAHwFJAAABbgAAAgAAAAIAAAACAAAAAgAAAAEAAAACAAAAAW4AAAHcAAAB3AABAdwAAAHcAAAAAAAAAAoAFAAeAEoAcACKAMoBQAGIAcwCCgJUAoICxgMEAzoDpgRKBRgF7AYSBpgG2gcgB2oIGAjOAAAAAQAAABwAmgAFAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAwAAAABAAAAAAACAA4AQAABAAAAAAADAAwAIgABAAAAAAAEAAwATgABAAAAAAAFABYADAABAAAAAAAGAAYALgABAAAAAAAKADQAWgADAAEECQABAAwAAAADAAEECQACAA4AQAADAAEECQADAAwAIgADAAEECQAEAAwATgADAAEECQAFABYADAADAAEECQAGAAwANAADAAEECQAKADQAWgByAGEAdABpAG4AZwBWAGUAcgBzAGkAbwBuACAAMQAuADAAcgBhAHQAaQBuAGdyYXRpbmcAcgBhAHQAaQBuAGcAUgBlAGcAdQBsAGEAcgByAGEAdABpAG4AZwBGAG8AbgB0ACAAZwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABJAGMAbwBNAG8AbwBuAC4AAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format('truetype'),url(data:application/font-woff;charset=utf-8;base64,d09GRk9UVE8AABcUAAoAAAAAFswAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAAA9AAAEuEAABLho6TvIE9TLzIAABPYAAAAYAAAAGAIIwgbY21hcAAAFDgAAACkAAAApKPambxnYXNwAAAU3AAAAAgAAAAIAAAAEGhlYWQAABTkAAAANgAAADYBGAe5aGhlYQAAFRwAAAAkAAAAJAPiAf1obXR4AAAVQAAAAHAAAABwLOAAQ21heHAAABWwAAAABgAAAAYAHFAAbmFtZQAAFbgAAAE8AAABPPC1n05wb3N0AAAW9AAAACAAAAAgAAMAAAEABAQAAQEBB3JhdGluZwABAgABADr4HAL4GwP4GAQeCgAZU/+Lix4KABlT/4uLDAeLZviU+HQFHQAAAP0PHQAAAQIRHQAAAAkdAAAS2BIAHQEBBw0PERQZHiMoLTI3PEFGS1BVWl9kaW5zeH2Ch4xyYXRpbmdyYXRpbmd1MHUxdTIwdUU2MDB1RTYwMXVFNjAydUU2MDN1RTYwNHVFNjA1dUYwMDR1RjAwNXVGMDA2dUYwMEN1RjAwRHVGMDIzdUYwMkV1RjA2RXVGMDcwdUYwODd1RjA4OHVGMDg5dUYwOEF1RjA5N3VGMDlDdUYxMjN1RjE2NHVGMTY1AAACAYkAGgAcAgABAAQABwAKAA0AVgCWAL0BAgGMAeQCbwLwA4cD5QR0BQMFdgZgB8MJkQtxC7oM2Q1jDggOmRAYEZr8lA78lA78lA77lA74lPetFftFpTz3NDz7NPtFcfcU+xBt+0T3Mt73Mjht90T3FPcQBfuU+0YV+wRRofcQMOP3EZ3D9wXD+wX3EXkwM6H7EPsExQUO+JT3rRX7RaU89zQ8+zT7RXH3FPsQbftE9zLe9zI4bfdE9xT3EAX7lPtGFYuLi/exw/sF9xF5MDOh+xD7BMUFDviU960V+0WlPPc0PPs0+0Vx9xT7EG37RPcy3vcyOG33RPcU9xAFDviU98EVi2B4ZG5wCIuL+zT7NAV7e3t7e4t7i3ube5sI+zT3NAVupniyi7aL3M3N3Iu2i7J4pm6mqLKetovci81JizoIDviU98EVi9xJzTqLYItkeHBucKhknmCLOotJSYs6i2CeZKhwCIuL9zT7NAWbe5t7m4ubi5ubm5sI9zT3NAWopp6yi7YIME0V+zb7NgWKioqKiouKi4qMiowI+zb3NgV6m4Ghi6OLubCwuYuji6GBm3oIule6vwWbnKGVo4u5i7Bmi12Lc4F1ensIDviU98EVi2B4ZG5wCIuL+zT7NAV7e3t7e4t7i3ube5sI+zT3NAVupniyi7aL3M3N3Iuni6WDoX4IXED3BEtL+zT3RPdU+wTLssYFl46YjZiL3IvNSYs6CA6L98UVi7WXrKOio6Otl7aLlouXiZiHl4eWhZaEloSUhZKFk4SShZKEkpKSkZOSkpGUkZaSCJaSlpGXj5iPl42Wi7aLrX+jc6N0l2qLYYthdWBgYAj7RvtABYeIh4mGi4aLh42Hjgj7RvdABYmNiY2Hj4iOhpGDlISUhZWFlIWVhpaHmYaYiZiLmAgOZ4v3txWLkpCPlo0I9yOgzPcWBY6SkI+Ri5CLkIePhAjL+xb3I3YFlomQh4uEi4aJh4aGCCMmpPsjBYuKi4mLiIuHioiJiImIiIqHi4iLh4yHjQj7FM/7FUcFh4mHioiLh4uIjImOiY6KjouPi4yLjYyOCKP3IyPwBYaQiZCLjwgOZ4v3txWLkpCPlo0I9yOgzPcWBY6SkI+Ri5CLkIePhAjL+xb3I3YFlomQh4uEi4aJh4aGCCMmpPsjBYuKi4mLiIuCh4aDi4iLh4yHjQj7FM/7FUcFh4mHioiLh4uIjImOiY6KjouPi4yLjYyOCKP3IyPwBYaQiZCLjwjKeRXjN3b7DfcAxPZSd/cN4t/7DJ1V9wFV+wEFDq73ZhWLk42RkZEIsbIFkZCRjpOLkouSiJCGCN8291D3UAWQkJKOkouTi5GIkYYIsWQFkYaNhIuEi4OJhYWFCPuJ+4kFhYWFiYOLhIuEjYaRCPsi9yIFhZCJkouSCA77AartFYuSjpKQkAjf3zffBYaQiJKLk4uSjpKQkAiysgWRkJGOk4uSi5KIkIYI3zff3wWQkJKOk4uSi5KIkIYIsmQFkIaOhIuEi4OIhIaGCDc33zcFkIaOhIuEi4OIhYaFCGRkBYaGhIiEi4OLhI6GkAg33zc3BYaGhIiEi4OLhY6FkAhksgWGkYiRi5MIDvtLi8sVi/c5BYuSjpKQkJCQko6SiwiVi4vCBYuul6mkpKSkqpiui66LqX6kcqRymG2LaAiLVJSLBZKLkoiQhpCGjoSLhAiL+zkFi4OIhYaGhoWEiYSLCPuniwWEi4SNhpGGkIiRi5MI5vdUFfcni4vCBYufhJx8mn2ZepJ3i3aLeoR9fX18g3qLdwiLVAUO+yaLshWL+AQFi5GNkY+RjpCQj5KNj42PjI+LCPfAiwWPi4+Kj4mRiZCHj4aPhY2Fi4UIi/wEBYuEiYWHhoeGhoeFiIiKhoqHi4GLhI6EkQj7EvcN+xL7DQWEhYOIgouHi4eLh42EjoaPiJCHkImRi5IIDov3XRWLko2Rj5Kltq+vuKW4pbuZvYu9i7t9uHG4ca9npWCPhI2Fi4SLhYmEh4RxYGdoXnAIXnFbflmLWYtbmF6lXqZnrnG2h5KJkouRCLCLFaRkq2yxdLF0tH+4i7iLtJexorGiq6qksm64Z61goZZ3kXaLdItnfm1ycnJybX9oiwhoi22XcqRypH6pi6+LopGglp9gdWdpbl4I9xiwFYuHjIiOiI6IjoqPi4+LjoyOjo2OjY6Lj4ubkJmXl5eWmZGbi4+LjoyOjo2OjY6LjwiLj4mOiY6IjYiNh4tzi3eCenp6eoJ3i3MIDov3XRWLko2Sj5GouK+utqW3pbqYvouci5yJnIgIm6cFjY6NjI+LjIuNi42JjYqOio+JjomOiY6KjomOiY6JjoqNioyKjomMiYuHi4qLiouLCHdnbVVjQ2NDbVV3Zwh9cgWJiIiJiIuJi36SdJiIjYmOi46LjY+UlJlvl3KcdJ90oHeie6WHkYmSi5IIsIsVqlq0Z711CKGzBXqXfpqCnoKdhp6LoIuikaCWn2B1Z2luXgj3GLAVi4eMiI6IjoiOio+Lj4uOjI6OjY6NjouPi5uQmZeXl5aZkZuLj4uOjI6OjY6NjouPCIuPiY6JjoiNiI2Hi3OLd4J6enp6gneLcwji+10VoLAFtI+wmK2hrqKnqKKvdq1wp2uhCJ2rBZ1/nHycepx6mHqWeY+EjYWLhIuEiYWHhIR/gH1+fG9qaXJmeWV5Y4Jhiwi53BXb9yQFjIKMg4uEi3CDc3x1fHV3fHOBCA6L1BWL90sFi5WPlJKSkpKTj5aLCNmLBZKPmJqepJaZlZeVlY+Qj5ONl42WjpeOmI+YkZWTk5OSk46Vi5uLmYiYhZiFlIGSfgiSfo55i3WLeYd5gXgIvosFn4uchJl8mn2Seot3i3qGfIJ9jYSLhYuEi3yIfoR+i4eLh4uHi3eGen99i3CDdnt8CHt8dYNwiwhmiwV5i3mNeY95kHeRc5N1k36Ph4sIOYsFgIuDjoSShJKHlIuVCLCdFYuGjIePiI+Hj4mQi5CLj42Pj46OjY+LkIuQiZCIjoePh42Gi4aLh4mHh4eIioaLhgjUeRWUiwWNi46Lj4qOi4+KjYqOi4+Kj4mQio6KjYqNio+Kj4mQio6KjIqzfquEpIsIrosFr4uemouri5CKkYqQkY6QkI6SjpKNkouSi5KJkoiRlZWQlouYi5CKkImRiZGJj4iOCJGMkI+PlI+UjZKLkouViJODk4SSgo+CiwgmiwWLlpCalJ6UnpCbi5aLnoiYhJSFlH+QeYuGhoeDiYCJf4h/h3+IfoWBg4KHh4SCgH4Ii4qIiYiGh4aIh4mIiIiIh4eGh4aHh4eHiIiHiIeHiIiHiIeKh4mIioiLCIKLi/tLBQ6L90sVi/dLBYuVj5OSk5KSk46WiwjdiwWPi5iPoZOkk6CRnZCdj56Nn4sIq4sFpougg5x8m3yTd4txCIuJBZd8kHuLd4uHi4eLh5J+jn6LfIuEi4SJhZR9kHyLeot3hHp8fH19eoR3iwhYiwWVeI95i3mLdIh6hH6EfoKBfoV+hX2He4uBi4OPg5KFkYaTh5SHlYiTipOKk4qTiJMIiZSIkYiPgZSBl4CaeKR+moSPCD2LBYCLg4+EkoSSh5SLlQiw9zgVi4aMh4+Ij4ePiZCLkIuPjY+Pjo6Nj4uQi5CJkIiOh4+HjYaLhouHiYeHh4iKhouGCNT7OBWUiwWOi46Kj4mPio+IjoiPh4+IjoePiI+Hj4aPho6HjoiNiI6Hj4aOho6Ii4qWfpKDj4YIk4ORgY5+j36OgI1/jYCPg5CGnYuXj5GUkpSOmYuei5aGmoKfgp6GmouWCPCLBZSLlI+SkpOTjpOLlYuSiZKHlIeUho+Fi46PjY+NkY2RjJCLkIuYhpaBlY6RjZKLkgiLkomSiJKIkoaQhY6MkIyRi5CLm4aXgpOBkn6Pe4sIZosFcotrhGN9iouIioaJh4qHiomKiYqIioaKh4mHioiKiYuHioiLh4qIi4mLCIKLi/tLBQ77lIv3txWLkpCPlo0I9yOgzPcWBY6SkI+RiwiL/BL7FUcFh4mHioiLh4uIjImOiY6KjouPi4yLjYyOCKP3IyPwBYaQiZCLjwgOi/fFFYu1l6yjoqOjrZe2i5aLl4mYh5eHloWWhJaElIWShZOEkoWShJKSkpGTkpKRlJGWkgiWkpaRl4+Yj5eNlou2i61/o3OjdJdqi2GLYXVgYGAI+0b7QAWHiIeJhouGi4eNh44I+0b3QAWJjYmNh4+IjoaRg5SElIWVhZSFlYaWh5mGmImYi5gIsIsVi2ucaa9oCPc6+zT3OvczBa+vnK2Lq4ubiZiHl4eXhpSFkoSSg5GCj4KQgo2CjYONgYuBi4KLgIl/hoCGgIWChAiBg4OFhISEhYaFhoaIhoaJhYuFi4aNiJCGkIaRhJGEkoORgZOCkoCRgJB/kICNgosIgYuBi4OJgomCiYKGgoeDhYSEhYSGgod/h3+Jfot7CA77JouyFYv4BAWLkY2Rj5GOkJCPko2PjY+Mj4sI98CLBY+Lj4qPiZGJkIePho+FjYWLhQiL/AQFi4SJhYeGh4aGh4WIiIqGioeLgYuEjoSRCPsS9w37EvsNBYSFg4iCi4eLh4uHjYSOho+IkIeQiZGLkgiwkxX3JvchpHL3DfsIi/f3+7iLi/v3BQ5ni8sVi/c5BYuSjpKQkJCQko6Siwj3VIuLwgWLrpippKSkpKmYrouvi6l+pHKkcpdti2gIi0IFi4aKhoeIh4eHiYaLCHmLBYaLh42Hj4eOipCLkAiL1AWLn4OcfZp9mXqSdot3i3qEfX18fIR6i3cIi1SniwWSi5KIkIaQho6Ei4QIi/s5BYuDiIWGhoaFhImEiwj7p4sFhIuEjYaRhpCIkYuTCA5njPe6FYyQkI6UjQj3I6DM9xYFj5KPj5GLkIuQh4+ECMv7FvcjdgWUiZCIjYaNhoiFhYUIIyak+yMFjIWKhomHiYiIiYaLiIuHjIeNCPsUz/sVRwWHiYeKiIuHi4eNiY6Jj4uQjJEIo/cjI/AFhZGJkY2QCPeB+z0VnILlW3rxiJ6ZmNTS+wydgpxe54v7pwUOZ4vCFYv3SwWLkI2Pjo+Pjo+NkIsI3osFkIuPiY6Ij4eNh4uGCIv7SwWLhomHh4eIh4eKhosIOIsFhouHjIePiI+Jj4uQCLCvFYuGjIePh46IkImQi5CLj42Pjo6PjY+LkIuQiZCIjoePh42Gi4aLhomIh4eIioaLhgjvZxWL90sFi5CNj46Oj4+PjZCLj4ySkJWWlZaVl5SXmJuVl5GRjo6OkI6RjZCNkIyPjI6MkY2TCIySjJGMj4yPjZCOkY6RjpCPjo6Pj42Qi5SLk4qSiZKJkYiPiJCIjoiPho6GjYeMhwiNh4yGjIaMhYuHi4iLiIuHi4eLg4uEiYSJhImFiYeJh4mFh4WLioqJiomJiIqJiokIi4qKiIqJCNqLBZqLmIWWgJaAkH+LfIt6hn2Af46DjYSLhIt9h36Cf4+Bi3+HgImAhYKEhI12hnmAfgh/fXiDcosIZosFfot+jHyOfI5/joOOg41/j32Qc5N8j4SMhouHjYiOh4+Jj4uQCA5ni/c5FYuGjYaOiI+Hj4mQiwjeiwWQi4+Njo+Pjo2Qi5AIi/dKBYuQiZCHjoiPh42Giwg4iwWGi4eJh4eIiImGi4YIi/tKBbD3JhWLkIyPj4+OjpCNkIuQi4+Jj4iOh42Hi4aLhomHiIeHh4eKhouGi4aMiI+Hj4qPi5AI7/snFYv3SwWLkI2Qj46Oj4+NkIuSi5qPo5OZkJePk46TjZeOmo6ajpiMmIsIsIsFpIueg5d9ln6Qeol1koSRgo2Aj4CLgIeAlH+Pfot9i4WJhIiCloCQfIt7i3yFfoGACICAfoZ8iwg8iwWMiIyJi4mMiYyJjYmMiIyKi4mPhI2GjYeNh42GjYOMhIyEi4SLhouHi4iLiYuGioYIioWKhomHioeJh4iGh4eIh4aIh4iFiISJhImDioKLhouHjYiPh4+Ij4iRiJGJkIqPCIqPipGKkomTipGKj4qOiZCJkYiQiJCIjoWSgZZ+nIKXgZaBloGWhJGHi4aLh42HjwiIjomQi48IDviUFPiUFYsMCgAAAAADAgABkAAFAAABTAFmAAAARwFMAWYAAAD1ABkAhAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAEAAAPFlAeD/4P/gAeAAIAAAAAEAAAAAAAAAAAAAACAAAAAAAAIAAAADAAAAFAADAAEAAAAUAAQAkAAAACAAIAAEAAAAAQAg5gXwBvAN8CPwLvBu8HDwivCX8JzxI/Fl//3//wAAAAAAIOYA8ATwDPAj8C7wbvBw8Ifwl/Cc8SPxZP/9//8AAf/jGgQQBhABD+wP4g+jD6IPjA+AD3wO9g62AAMAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAEAAJrVlLJfDzz1AAsCAAAAAADP/GODAAAAAM/8Y4MAAP/bAgAB2wAAAAgAAgAAAAAAAAABAAAB4P/gAAACAAAAAAACAAABAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAdwAAAHcAAACAAAjAZMAHwFJAAABbgAAAgAAAAIAAAACAAAAAgAAAAEAAAACAAAAAW4AAAHcAAAB3AABAdwAAAHcAAAAAFAAABwAAAAAAA4ArgABAAAAAAABAAwAAAABAAAAAAACAA4AQAABAAAAAAADAAwAIgABAAAAAAAEAAwATgABAAAAAAAFABYADAABAAAAAAAGAAYALgABAAAAAAAKADQAWgADAAEECQABAAwAAAADAAEECQACAA4AQAADAAEECQADAAwAIgADAAEECQAEAAwATgADAAEECQAFABYADAADAAEECQAGAAwANAADAAEECQAKADQAWgByAGEAdABpAG4AZwBWAGUAcgBzAGkAbwBuACAAMQAuADAAcgBhAHQAaQBuAGdyYXRpbmcAcgBhAHQAaQBuAGcAUgBlAGcAdQBsAGEAcgByAGEAdABpAG4AZwBGAG8AbgB0ACAAZwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABJAGMAbwBNAG8AbwBuAC4AAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format('woff');font-weight:400;font-style:normal}.ui.rating .icon{font-family:Rating;line-height:1;-webkit-backface-visibility:hidden;backface-visibility:hidden;font-weight:400;font-style:normal;text-align:center}.ui.rating .icon:before{content:'\f005'}.ui.rating .active.icon:before{content:'\f005'}.ui.star.rating .icon:before{content:'\f005'}.ui.star.rating .active.icon:before{content:'\f005'}.ui.star.rating .partial.icon:before{content:'\f006'}.ui.star.rating .partial.icon{content:'\f005'}.ui.heart.rating .icon:before{content:'\f004'}.ui.heart.rating .active.icon:before{content:'\f004'}/*! -* # Semantic UI 2.4.0 - Search -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.search{position:relative}.ui.search>.prompt{margin:0;outline:0;-webkit-appearance:none;-webkit-tap-highlight-color:rgba(255,255,255,0);text-shadow:none;font-style:normal;font-weight:400;line-height:1.21428571em;padding:.67857143em 1em;font-size:1em;background:#fff;border:1px solid rgba(34,36,38,.15);color:rgba(0,0,0,.87);-webkit-box-shadow:0 0 0 0 transparent inset;box-shadow:0 0 0 0 transparent inset;-webkit-transition:background-color .1s ease,color .1s ease,border-color .1s ease,-webkit-box-shadow .1s ease;transition:background-color .1s ease,color .1s ease,border-color .1s ease,-webkit-box-shadow .1s ease;transition:background-color .1s ease,color .1s ease,box-shadow .1s ease,border-color .1s ease;transition:background-color .1s ease,color .1s ease,box-shadow .1s ease,border-color .1s ease,-webkit-box-shadow .1s ease}.ui.search .prompt{border-radius:500rem}.ui.search .prompt~.search.icon{cursor:pointer}.ui.search>.results{display:none;position:absolute;top:100%;left:0;-webkit-transform-origin:center top;transform-origin:center top;white-space:normal;text-align:left;text-transform:none;background:#fff;margin-top:.5em;width:18em;border-radius:.28571429rem;-webkit-box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);box-shadow:0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.15);border:1px solid #d4d4d5;z-index:998}.ui.search>.results>:first-child{border-radius:.28571429rem .28571429rem 0 0}.ui.search>.results>:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.search>.results .result{cursor:pointer;display:block;overflow:hidden;font-size:1em;padding:.85714286em 1.14285714em;color:rgba(0,0,0,.87);line-height:1.33;border-bottom:1px solid rgba(34,36,38,.1)}.ui.search>.results .result:last-child{border-bottom:none!important}.ui.search>.results .result .image{float:right;overflow:hidden;background:0 0;width:5em;height:3em;border-radius:.25em}.ui.search>.results .result .image img{display:block;width:auto;height:100%}.ui.search>.results .result .image+.content{margin:0 6em 0 0}.ui.search>.results .result .title{margin:-.14285714em 0 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-weight:700;font-size:1em;color:rgba(0,0,0,.85)}.ui.search>.results .result .description{margin-top:0;font-size:.92857143em;color:rgba(0,0,0,.4)}.ui.search>.results .result .price{float:right;color:#21ba45}.ui.search>.results>.message{padding:1em 1em}.ui.search>.results>.message .header{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1rem;font-weight:700;color:rgba(0,0,0,.87)}.ui.search>.results>.message .description{margin-top:.25rem;font-size:1em;color:rgba(0,0,0,.87)}.ui.search>.results>.action{display:block;border-top:none;background:#f3f4f5;padding:.92857143em 1em;color:rgba(0,0,0,.87);font-weight:700;text-align:center}.ui.search>.prompt:focus{border-color:rgba(34,36,38,.35);background:#fff;color:rgba(0,0,0,.95)}.ui.loading.search .input>i.icon:before{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loading.search .input>i.icon:after{position:absolute;content:'';top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;-webkit-box-shadow:0 0 0 1px transparent;box-shadow:0 0 0 1px transparent}.ui.category.search>.results .category .result:hover,.ui.search>.results .result:hover{background:#f9fafb}.ui.search .action:hover{background:#e0e0e0}.ui.category.search>.results .category.active{background:#f3f4f5}.ui.category.search>.results .category.active>.name{color:rgba(0,0,0,.87)}.ui.category.search>.results .category .result.active,.ui.search>.results .result.active{position:relative;border-left-color:rgba(34,36,38,.1);background:#f3f4f5;-webkit-box-shadow:none;box-shadow:none}.ui.search>.results .result.active .title{color:rgba(0,0,0,.85)}.ui.search>.results .result.active .description{color:rgba(0,0,0,.85)}.ui.disabled.search{cursor:default;pointer-events:none;opacity:.45}.ui.search.selection .prompt{border-radius:.28571429rem}.ui.search.selection>.icon.input>.remove.icon{pointer-events:none;position:absolute;left:auto;opacity:0;color:'';top:0;right:0;-webkit-transition:color .1s ease,opacity .1s ease;transition:color .1s ease,opacity .1s ease}.ui.search.selection>.icon.input>.active.remove.icon{cursor:pointer;opacity:.8;pointer-events:auto}.ui.search.selection>.icon.input:not([class*="left icon"])>.icon~.remove.icon{right:1.85714em}.ui.search.selection>.icon.input>.remove.icon:hover{opacity:1;color:#db2828}.ui.category.search .results{width:28em}.ui.category.search .results.animating,.ui.category.search .results.visible{display:table}.ui.category.search>.results .category{display:table-row;background:#f3f4f5;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:background .1s ease,border-color .1s ease;transition:background .1s ease,border-color .1s ease}.ui.category.search>.results .category:last-child{border-bottom:none}.ui.category.search>.results .category:first-child .name+.result{border-radius:0 .28571429rem 0 0}.ui.category.search>.results .category:last-child .result:last-child{border-radius:0 0 .28571429rem 0}.ui.category.search>.results .category>.name{display:table-cell;text-overflow:ellipsis;width:100px;white-space:nowrap;background:0 0;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:1em;padding:.4em 1em;font-weight:700;color:rgba(0,0,0,.4);border-bottom:1px solid rgba(34,36,38,.1)}.ui.category.search>.results .category .results{display:table-cell;background:#fff;border-left:1px solid rgba(34,36,38,.15);border-bottom:1px solid rgba(34,36,38,.1)}.ui.category.search>.results .category .result{border-bottom:1px solid rgba(34,36,38,.1);-webkit-transition:background .1s ease,border-color .1s ease;transition:background .1s ease,border-color .1s ease;padding:.85714286em 1.14285714em}.ui[class*="left aligned"].search>.results{right:auto;left:0}.ui[class*="right aligned"].search>.results{right:0;left:auto}.ui.fluid.search .results{width:100%}.ui.mini.search{font-size:.78571429em}.ui.small.search{font-size:.92857143em}.ui.search{font-size:1em}.ui.large.search{font-size:1.14285714em}.ui.big.search{font-size:1.28571429em}.ui.huge.search{font-size:1.42857143em}.ui.massive.search{font-size:1.71428571em}@media only screen and (max-width:767px){.ui.search .results{max-width:calc(100vw - 2rem)}}/*! -* # Semantic UI 2.4.0 - Shape -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.shape{position:relative;vertical-align:top;display:inline-block;-webkit-perspective:2000px;perspective:2000px;-webkit-transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out}.ui.shape .sides{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.ui.shape .side{opacity:1;width:100%;margin:0!important;-webkit-backface-visibility:hidden;backface-visibility:hidden}.ui.shape .side{display:none}.ui.shape .side *{-webkit-backface-visibility:visible!important;backface-visibility:visible!important}.ui.cube.shape .side{min-width:15em;height:15em;padding:2em;background-color:#e6e6e6;color:rgba(0,0,0,.87);-webkit-box-shadow:0 0 2px rgba(0,0,0,.3);box-shadow:0 0 2px rgba(0,0,0,.3)}.ui.cube.shape .side>.content{width:100%;height:100%;display:table;text-align:center;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ui.cube.shape .side>.content>div{display:table-cell;vertical-align:middle;font-size:2em}.ui.text.shape.animating .sides{position:static}.ui.text.shape .side{white-space:nowrap}.ui.text.shape .side>*{white-space:normal}.ui.loading.shape{position:absolute;top:-9999px;left:-9999px}.ui.shape .animating.side{position:absolute;top:0;left:0;display:block;z-index:100}.ui.shape .hidden.side{opacity:.6}.ui.shape.animating .sides{position:absolute}.ui.shape.animating .sides{-webkit-transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out}.ui.shape.animating .side{-webkit-transition:opacity .6s ease-in-out;transition:opacity .6s ease-in-out}.ui.shape .active.side{display:block}/*! -* # Semantic UI 2.4.0 - Sidebar -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.sidebar{position:fixed;top:0;left:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:none;transition:none;will-change:transform;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);visibility:hidden;-webkit-overflow-scrolling:touch;height:100%!important;max-height:100%;border-radius:0!important;margin:0!important;overflow-y:auto!important;z-index:102}.ui.sidebar>*{-webkit-backface-visibility:hidden;backface-visibility:hidden}.ui.left.sidebar{right:auto;left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.ui.right.sidebar{right:0!important;left:auto!important;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.ui.bottom.sidebar,.ui.top.sidebar{width:100%!important;height:auto!important}.ui.top.sidebar{top:0!important;bottom:auto!important;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.ui.bottom.sidebar{top:auto!important;bottom:0!important;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.pushable{height:100%;overflow-x:hidden;padding:0!important}body.pushable{background:#545454!important}.pushable:not(body){-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.pushable:not(body)>.fixed,.pushable:not(body)>.pusher:after,.pushable:not(body)>.ui.sidebar{position:absolute}.pushable>.fixed{position:fixed;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;will-change:transform;z-index:101}.pushable>.pusher{position:relative;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;min-height:100%;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:2}body.pushable>.pusher{background:#fff}.pushable>.pusher{background:inherit}.pushable>.pusher:after{position:fixed;top:0;right:0;content:'';background-color:rgba(0,0,0,.4);overflow:hidden;opacity:0;-webkit-transition:opacity .5s;transition:opacity .5s;will-change:opacity;z-index:1000}.ui.sidebar.menu .item{border-radius:0!important}.pushable>.pusher.dimmed:after{width:100%!important;height:100%!important;opacity:1!important}.ui.animating.sidebar{visibility:visible}.ui.visible.sidebar{visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.left.visible.sidebar,.ui.right.visible.sidebar{-webkit-box-shadow:0 0 20px rgba(34,36,38,.15);box-shadow:0 0 20px rgba(34,36,38,.15)}.ui.bottom.visible.sidebar,.ui.top.visible.sidebar{-webkit-box-shadow:0 0 20px rgba(34,36,38,.15);box-shadow:0 0 20px rgba(34,36,38,.15)}.ui.visible.left.sidebar~.fixed,.ui.visible.left.sidebar~.pusher{-webkit-transform:translate3d(260px,0,0);transform:translate3d(260px,0,0)}.ui.visible.right.sidebar~.fixed,.ui.visible.right.sidebar~.pusher{-webkit-transform:translate3d(-260px,0,0);transform:translate3d(-260px,0,0)}.ui.visible.top.sidebar~.fixed,.ui.visible.top.sidebar~.pusher{-webkit-transform:translate3d(0,36px,0);transform:translate3d(0,36px,0)}.ui.visible.bottom.sidebar~.fixed,.ui.visible.bottom.sidebar~.pusher{-webkit-transform:translate3d(0,-36px,0);transform:translate3d(0,-36px,0)}.ui.visible.left.sidebar~.ui.visible.right.sidebar~.fixed,.ui.visible.left.sidebar~.ui.visible.right.sidebar~.pusher,.ui.visible.right.sidebar~.ui.visible.left.sidebar~.fixed,.ui.visible.right.sidebar~.ui.visible.left.sidebar~.pusher{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.thin.left.sidebar,.ui.thin.right.sidebar{width:150px}.ui[class*="very thin"].left.sidebar,.ui[class*="very thin"].right.sidebar{width:60px}.ui.left.sidebar,.ui.right.sidebar{width:260px}.ui.wide.left.sidebar,.ui.wide.right.sidebar{width:350px}.ui[class*="very wide"].left.sidebar,.ui[class*="very wide"].right.sidebar{width:475px}.ui.visible.thin.left.sidebar~.fixed,.ui.visible.thin.left.sidebar~.pusher{-webkit-transform:translate3d(150px,0,0);transform:translate3d(150px,0,0)}.ui.visible[class*="very thin"].left.sidebar~.fixed,.ui.visible[class*="very thin"].left.sidebar~.pusher{-webkit-transform:translate3d(60px,0,0);transform:translate3d(60px,0,0)}.ui.visible.wide.left.sidebar~.fixed,.ui.visible.wide.left.sidebar~.pusher{-webkit-transform:translate3d(350px,0,0);transform:translate3d(350px,0,0)}.ui.visible[class*="very wide"].left.sidebar~.fixed,.ui.visible[class*="very wide"].left.sidebar~.pusher{-webkit-transform:translate3d(475px,0,0);transform:translate3d(475px,0,0)}.ui.visible.thin.right.sidebar~.fixed,.ui.visible.thin.right.sidebar~.pusher{-webkit-transform:translate3d(-150px,0,0);transform:translate3d(-150px,0,0)}.ui.visible[class*="very thin"].right.sidebar~.fixed,.ui.visible[class*="very thin"].right.sidebar~.pusher{-webkit-transform:translate3d(-60px,0,0);transform:translate3d(-60px,0,0)}.ui.visible.wide.right.sidebar~.fixed,.ui.visible.wide.right.sidebar~.pusher{-webkit-transform:translate3d(-350px,0,0);transform:translate3d(-350px,0,0)}.ui.visible[class*="very wide"].right.sidebar~.fixed,.ui.visible[class*="very wide"].right.sidebar~.pusher{-webkit-transform:translate3d(-475px,0,0);transform:translate3d(-475px,0,0)}.ui.overlay.sidebar{z-index:102}.ui.left.overlay.sidebar{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.ui.right.overlay.sidebar{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.ui.top.overlay.sidebar{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.ui.bottom.overlay.sidebar{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.animating.ui.overlay.sidebar,.ui.visible.overlay.sidebar{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.ui.visible.left.overlay.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.visible.right.overlay.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.visible.top.overlay.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.visible.bottom.overlay.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.visible.overlay.sidebar~.fixed,.ui.visible.overlay.sidebar~.pusher{-webkit-transform:none!important;transform:none!important}.ui.push.sidebar{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:102}.ui.left.push.sidebar{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.ui.right.push.sidebar{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.ui.top.push.sidebar{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.ui.bottom.push.sidebar{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.ui.visible.push.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.uncover.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);z-index:1}.ui.visible.uncover.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.ui.slide.along.sidebar{z-index:1}.ui.left.slide.along.sidebar{-webkit-transform:translate3d(-50%,0,0);transform:translate3d(-50%,0,0)}.ui.right.slide.along.sidebar{-webkit-transform:translate3d(50%,0,0);transform:translate3d(50%,0,0)}.ui.top.slide.along.sidebar{-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.ui.bottom.slide.along.sidebar{-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0)}.ui.animating.slide.along.sidebar{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.ui.visible.slide.along.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.slide.out.sidebar{z-index:1}.ui.left.slide.out.sidebar{-webkit-transform:translate3d(50%,0,0);transform:translate3d(50%,0,0)}.ui.right.slide.out.sidebar{-webkit-transform:translate3d(-50%,0,0);transform:translate3d(-50%,0,0)}.ui.top.slide.out.sidebar{-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0)}.ui.bottom.slide.out.sidebar{-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.ui.animating.slide.out.sidebar{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.ui.visible.slide.out.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.scale.down.sidebar{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:102}.ui.left.scale.down.sidebar{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.ui.right.scale.down.sidebar{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.ui.top.scale.down.sidebar{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.ui.bottom.scale.down.sidebar{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.ui.scale.down.left.sidebar~.pusher{-webkit-transform-origin:75% 50%;transform-origin:75% 50%}.ui.scale.down.right.sidebar~.pusher{-webkit-transform-origin:25% 50%;transform-origin:25% 50%}.ui.scale.down.top.sidebar~.pusher{-webkit-transform-origin:50% 75%;transform-origin:50% 75%}.ui.scale.down.bottom.sidebar~.pusher{-webkit-transform-origin:50% 25%;transform-origin:50% 25%}.ui.animating.scale.down>.visible.ui.sidebar{-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.ui.animating.scale.down.sidebar~.pusher,.ui.visible.scale.down.sidebar~.pusher{display:block!important;width:100%;height:100%;overflow:hidden!important}.ui.visible.scale.down.sidebar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.ui.visible.scale.down.sidebar~.pusher{-webkit-transform:scale(.75);transform:scale(.75)}/*! -* # Semantic UI 2.4.0 - Sticky -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.sticky{position:static;-webkit-transition:none;transition:none;z-index:800}.ui.sticky.bound{position:absolute;left:auto;right:auto}.ui.sticky.fixed{position:fixed;left:auto;right:auto}.ui.sticky.bound.top,.ui.sticky.fixed.top{top:0;bottom:auto}.ui.sticky.bound.bottom,.ui.sticky.fixed.bottom{top:auto;bottom:0}.ui.native.sticky{position:-webkit-sticky;position:-moz-sticky;position:-ms-sticky;position:-o-sticky;position:sticky}/*! -* # Semantic UI 2.4.0 - Tab -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.ui.tab{display:none}.ui.tab.active,.ui.tab.open{display:block}.ui.tab.loading{position:relative;overflow:hidden;display:block;min-height:250px}.ui.tab.loading *{position:relative!important;left:-10000px!important}.ui.tab.loading.segment:before,.ui.tab.loading:before{position:absolute;content:'';top:100px;left:50%;margin:-1.25em 0 0 -1.25em;width:2.5em;height:2.5em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.tab.loading.segment:after,.ui.tab.loading:after{position:absolute;content:'';top:100px;left:50%;margin:-1.25em 0 0 -1.25em;width:2.5em;height:2.5em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;-webkit-box-shadow:0 0 0 1px transparent;box-shadow:0 0 0 1px transparent}/*! -* # Semantic UI 2.4.0 - Transition -* http://github.com/semantic-org/semantic-ui/ -* -* -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/.transition{-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-timing-function:ease;animation-timing-function:ease;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animating.transition{-webkit-backface-visibility:hidden;backface-visibility:hidden;visibility:visible!important}.loading.transition{position:absolute;top:-99999px;left:-99999px}.hidden.transition{display:none;visibility:hidden}.visible.transition{display:block!important;visibility:visible!important}.disabled.transition{-webkit-animation-play-state:paused;animation-play-state:paused}.looping.transition{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.transition.browse{-webkit-animation-duration:.5s;animation-duration:.5s}.transition.browse.in{-webkit-animation-name:browseIn;animation-name:browseIn}.transition.browse.left.out,.transition.browse.out{-webkit-animation-name:browseOutLeft;animation-name:browseOutLeft}.transition.browse.right.out{-webkit-animation-name:browseOutRight;animation-name:browseOutRight}@-webkit-keyframes browseIn{0%{-webkit-transform:scale(.8) translateZ(0);transform:scale(.8) translateZ(0);z-index:-1}10%{-webkit-transform:scale(.8) translateZ(0);transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{-webkit-transform:scale(1.05) translateZ(0);transform:scale(1.05) translateZ(0);opacity:1;z-index:999}100%{-webkit-transform:scale(1) translateZ(0);transform:scale(1) translateZ(0);z-index:999}}@keyframes browseIn{0%{-webkit-transform:scale(.8) translateZ(0);transform:scale(.8) translateZ(0);z-index:-1}10%{-webkit-transform:scale(.8) translateZ(0);transform:scale(.8) translateZ(0);z-index:-1;opacity:.7}80%{-webkit-transform:scale(1.05) translateZ(0);transform:scale(1.05) translateZ(0);opacity:1;z-index:999}100%{-webkit-transform:scale(1) translateZ(0);transform:scale(1) translateZ(0);z-index:999}}@-webkit-keyframes browseOutLeft{0%{z-index:999;-webkit-transform:translateX(0) rotateY(0) rotateX(0);transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;-webkit-transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px);transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}100%{z-index:-1;-webkit-transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutLeft{0%{z-index:999;-webkit-transform:translateX(0) rotateY(0) rotateX(0);transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:-1;-webkit-transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px);transform:translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}100%{z-index:-1;-webkit-transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@-webkit-keyframes browseOutRight{0%{z-index:999;-webkit-transform:translateX(0) rotateY(0) rotateX(0);transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;-webkit-transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px);transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}100%{z-index:1;-webkit-transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}@keyframes browseOutRight{0%{z-index:999;-webkit-transform:translateX(0) rotateY(0) rotateX(0);transform:translateX(0) rotateY(0) rotateX(0)}50%{z-index:1;-webkit-transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px);transform:translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)}80%{opacity:1}100%{z-index:1;-webkit-transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);transform:translateX(0) rotateY(0) rotateX(0) translateZ(-10px);opacity:0}}.drop.transition{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-duration:.4s;animation-duration:.4s;-webkit-animation-timing-function:cubic-bezier(.34,1.61,.7,1);animation-timing-function:cubic-bezier(.34,1.61,.7,1)}.drop.transition.in{-webkit-animation-name:dropIn;animation-name:dropIn}.drop.transition.out{-webkit-animation-name:dropOut;animation-name:dropOut}@-webkit-keyframes dropIn{0%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes dropIn{0%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes dropOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}}@keyframes dropOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}}.transition.fade.in{-webkit-animation-name:fadeIn;animation-name:fadeIn}.transition[class*="fade up"].in{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}.transition[class*="fade down"].in{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}.transition[class*="fade left"].in{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}.transition[class*="fade right"].in{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}.transition.fade.out{-webkit-animation-name:fadeOut;animation-name:fadeOut}.transition[class*="fade up"].out{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}.transition[class*="fade down"].out{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}.transition[class*="fade left"].out{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}.transition[class*="fade right"].out{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(10%);transform:translateY(10%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(10%);transform:translateY(10%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-10%);transform:translateY(-10%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-10%);transform:translateY(-10%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(10%);transform:translateX(10%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(10%);transform:translateX(10%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(-10%);transform:translateX(-10%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(-10%);transform:translateX(-10%)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(5%);transform:translateY(5%)}}@keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(5%);transform:translateY(5%)}}@-webkit-keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-5%);transform:translateY(-5%)}}@keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-5%);transform:translateY(-5%)}}@-webkit-keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(5%);transform:translateX(5%)}}@keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(5%);transform:translateX(5%)}}@-webkit-keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-5%);transform:translateX(-5%)}}@keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-5%);transform:translateX(-5%)}}.flip.transition.in,.flip.transition.out{-webkit-animation-duration:.6s;animation-duration:.6s}.horizontal.flip.transition.in{-webkit-animation-name:horizontalFlipIn;animation-name:horizontalFlipIn}.horizontal.flip.transition.out{-webkit-animation-name:horizontalFlipOut;animation-name:horizontalFlipOut}.vertical.flip.transition.in{-webkit-animation-name:verticalFlipIn;animation-name:verticalFlipIn}.vertical.flip.transition.out{-webkit-animation-name:verticalFlipOut;animation-name:verticalFlipOut}@-webkit-keyframes horizontalFlipIn{0%{-webkit-transform:perspective(2000px) rotateY(-90deg);transform:perspective(2000px) rotateY(-90deg);opacity:0}100%{-webkit-transform:perspective(2000px) rotateY(0);transform:perspective(2000px) rotateY(0);opacity:1}}@keyframes horizontalFlipIn{0%{-webkit-transform:perspective(2000px) rotateY(-90deg);transform:perspective(2000px) rotateY(-90deg);opacity:0}100%{-webkit-transform:perspective(2000px) rotateY(0);transform:perspective(2000px) rotateY(0);opacity:1}}@-webkit-keyframes verticalFlipIn{0%{-webkit-transform:perspective(2000px) rotateX(-90deg);transform:perspective(2000px) rotateX(-90deg);opacity:0}100%{-webkit-transform:perspective(2000px) rotateX(0);transform:perspective(2000px) rotateX(0);opacity:1}}@keyframes verticalFlipIn{0%{-webkit-transform:perspective(2000px) rotateX(-90deg);transform:perspective(2000px) rotateX(-90deg);opacity:0}100%{-webkit-transform:perspective(2000px) rotateX(0);transform:perspective(2000px) rotateX(0);opacity:1}}@-webkit-keyframes horizontalFlipOut{0%{-webkit-transform:perspective(2000px) rotateY(0);transform:perspective(2000px) rotateY(0);opacity:1}100%{-webkit-transform:perspective(2000px) rotateY(90deg);transform:perspective(2000px) rotateY(90deg);opacity:0}}@keyframes horizontalFlipOut{0%{-webkit-transform:perspective(2000px) rotateY(0);transform:perspective(2000px) rotateY(0);opacity:1}100%{-webkit-transform:perspective(2000px) rotateY(90deg);transform:perspective(2000px) rotateY(90deg);opacity:0}}@-webkit-keyframes verticalFlipOut{0%{-webkit-transform:perspective(2000px) rotateX(0);transform:perspective(2000px) rotateX(0);opacity:1}100%{-webkit-transform:perspective(2000px) rotateX(-90deg);transform:perspective(2000px) rotateX(-90deg);opacity:0}}@keyframes verticalFlipOut{0%{-webkit-transform:perspective(2000px) rotateX(0);transform:perspective(2000px) rotateX(0);opacity:1}100%{-webkit-transform:perspective(2000px) rotateX(-90deg);transform:perspective(2000px) rotateX(-90deg);opacity:0}}.scale.transition.in{-webkit-animation-name:scaleIn;animation-name:scaleIn}.scale.transition.out{-webkit-animation-name:scaleOut;animation-name:scaleOut}@-webkit-keyframes scaleIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes scaleIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes scaleOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.9);transform:scale(.9)}}@keyframes scaleOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:0;-webkit-transform:scale(.9);transform:scale(.9)}}.transition.fly{-webkit-animation-duration:.6s;animation-duration:.6s;-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}.transition.fly.in{-webkit-animation-name:flyIn;animation-name:flyIn}.transition[class*="fly up"].in{-webkit-animation-name:flyInUp;animation-name:flyInUp}.transition[class*="fly down"].in{-webkit-animation-name:flyInDown;animation-name:flyInDown}.transition[class*="fly left"].in{-webkit-animation-name:flyInLeft;animation-name:flyInLeft}.transition[class*="fly right"].in{-webkit-animation-name:flyInRight;animation-name:flyInRight}.transition.fly.out{-webkit-animation-name:flyOut;animation-name:flyOut}.transition[class*="fly up"].out{-webkit-animation-name:flyOutUp;animation-name:flyOutUp}.transition[class*="fly down"].out{-webkit-animation-name:flyOutDown;animation-name:flyOutDown}.transition[class*="fly left"].out{-webkit-animation-name:flyOutLeft;animation-name:flyOutLeft}.transition[class*="fly right"].out{-webkit-animation-name:flyOutRight;animation-name:flyOutRight}@-webkit-keyframes flyIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes flyIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@-webkit-keyframes flyInUp{0%{opacity:0;-webkit-transform:translate3d(0,1500px,0);transform:translate3d(0,1500px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes flyInUp{0%{opacity:0;-webkit-transform:translate3d(0,1500px,0);transform:translate3d(0,1500px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@-webkit-keyframes flyInDown{0%{opacity:0;-webkit-transform:translate3d(0,-1500px,0);transform:translate3d(0,-1500px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes flyInDown{0%{opacity:0;-webkit-transform:translate3d(0,-1500px,0);transform:translate3d(0,-1500px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@-webkit-keyframes flyInLeft{0%{opacity:0;-webkit-transform:translate3d(1500px,0,0);transform:translate3d(1500px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes flyInLeft{0%{opacity:0;-webkit-transform:translate3d(1500px,0,0);transform:translate3d(1500px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@-webkit-keyframes flyInRight{0%{opacity:0;-webkit-transform:translate3d(-1500px,0,0);transform:translate3d(-1500px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes flyInRight{0%{opacity:0;-webkit-transform:translate3d(-1500px,0,0);transform:translate3d(-1500px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@-webkit-keyframes flyOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes flyOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@-webkit-keyframes flyOutUp{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes flyOutUp{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@-webkit-keyframes flyOutDown{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes flyOutDown{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@-webkit-keyframes flyOutRight{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes flyOutRight{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@-webkit-keyframes flyOutLeft{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes flyOutLeft{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.transition.slide.in,.transition[class*="slide down"].in{-webkit-animation-name:slideInY;animation-name:slideInY;-webkit-transform-origin:top center;transform-origin:top center}.transition[class*="slide up"].in{-webkit-animation-name:slideInY;animation-name:slideInY;-webkit-transform-origin:bottom center;transform-origin:bottom center}.transition[class*="slide left"].in{-webkit-animation-name:slideInX;animation-name:slideInX;-webkit-transform-origin:center right;transform-origin:center right}.transition[class*="slide right"].in{-webkit-animation-name:slideInX;animation-name:slideInX;-webkit-transform-origin:center left;transform-origin:center left}.transition.slide.out,.transition[class*="slide down"].out{-webkit-animation-name:slideOutY;animation-name:slideOutY;-webkit-transform-origin:top center;transform-origin:top center}.transition[class*="slide up"].out{-webkit-animation-name:slideOutY;animation-name:slideOutY;-webkit-transform-origin:bottom center;transform-origin:bottom center}.transition[class*="slide left"].out{-webkit-animation-name:slideOutX;animation-name:slideOutX;-webkit-transform-origin:center right;transform-origin:center right}.transition[class*="slide right"].out{-webkit-animation-name:slideOutX;animation-name:slideOutX;-webkit-transform-origin:center left;transform-origin:center left}@-webkit-keyframes slideInY{0%{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}100%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes slideInY{0%{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}100%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1)}}@-webkit-keyframes slideInX{0%{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}100%{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes slideInX{0%{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}100%{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@-webkit-keyframes slideOutY{0%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1)}100%{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}}@keyframes slideOutY{0%{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1)}100%{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}}@-webkit-keyframes slideOutX{0%{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}100%{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}}@keyframes slideOutX{0%{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}100%{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}}.transition.swing{-webkit-animation-duration:.8s;animation-duration:.8s}.transition[class*="swing down"].in{-webkit-animation-name:swingInX;animation-name:swingInX;-webkit-transform-origin:top center;transform-origin:top center}.transition[class*="swing up"].in{-webkit-animation-name:swingInX;animation-name:swingInX;-webkit-transform-origin:bottom center;transform-origin:bottom center}.transition[class*="swing left"].in{-webkit-animation-name:swingInY;animation-name:swingInY;-webkit-transform-origin:center right;transform-origin:center right}.transition[class*="swing right"].in{-webkit-animation-name:swingInY;animation-name:swingInY;-webkit-transform-origin:center left;transform-origin:center left}.transition.swing.out,.transition[class*="swing down"].out{-webkit-animation-name:swingOutX;animation-name:swingOutX;-webkit-transform-origin:top center;transform-origin:top center}.transition[class*="swing up"].out{-webkit-animation-name:swingOutX;animation-name:swingOutX;-webkit-transform-origin:bottom center;transform-origin:bottom center}.transition[class*="swing left"].out{-webkit-animation-name:swingOutY;animation-name:swingOutY;-webkit-transform-origin:center right;transform-origin:center right}.transition[class*="swing right"].out{-webkit-animation-name:swingOutY;animation-name:swingOutY;-webkit-transform-origin:center left;transform-origin:center left}@-webkit-keyframes swingInX{0%{-webkit-transform:perspective(1000px) rotateX(90deg);transform:perspective(1000px) rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(1000px) rotateX(-30deg);transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{-webkit-transform:perspective(1000px) rotateX(15deg);transform:perspective(1000px) rotateX(15deg)}80%{-webkit-transform:perspective(1000px) rotateX(-7.5deg);transform:perspective(1000px) rotateX(-7.5deg)}100%{-webkit-transform:perspective(1000px) rotateX(0);transform:perspective(1000px) rotateX(0)}}@keyframes swingInX{0%{-webkit-transform:perspective(1000px) rotateX(90deg);transform:perspective(1000px) rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(1000px) rotateX(-30deg);transform:perspective(1000px) rotateX(-30deg);opacity:1}60%{-webkit-transform:perspective(1000px) rotateX(15deg);transform:perspective(1000px) rotateX(15deg)}80%{-webkit-transform:perspective(1000px) rotateX(-7.5deg);transform:perspective(1000px) rotateX(-7.5deg)}100%{-webkit-transform:perspective(1000px) rotateX(0);transform:perspective(1000px) rotateX(0)}}@-webkit-keyframes swingInY{0%{-webkit-transform:perspective(1000px) rotateY(-90deg);transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{-webkit-transform:perspective(1000px) rotateY(30deg);transform:perspective(1000px) rotateY(30deg);opacity:1}60%{-webkit-transform:perspective(1000px) rotateY(-17.5deg);transform:perspective(1000px) rotateY(-17.5deg)}80%{-webkit-transform:perspective(1000px) rotateY(7.5deg);transform:perspective(1000px) rotateY(7.5deg)}100%{-webkit-transform:perspective(1000px) rotateY(0);transform:perspective(1000px) rotateY(0)}}@keyframes swingInY{0%{-webkit-transform:perspective(1000px) rotateY(-90deg);transform:perspective(1000px) rotateY(-90deg);opacity:0}40%{-webkit-transform:perspective(1000px) rotateY(30deg);transform:perspective(1000px) rotateY(30deg);opacity:1}60%{-webkit-transform:perspective(1000px) rotateY(-17.5deg);transform:perspective(1000px) rotateY(-17.5deg)}80%{-webkit-transform:perspective(1000px) rotateY(7.5deg);transform:perspective(1000px) rotateY(7.5deg)}100%{-webkit-transform:perspective(1000px) rotateY(0);transform:perspective(1000px) rotateY(0)}}@-webkit-keyframes swingOutX{0%{-webkit-transform:perspective(1000px) rotateX(0);transform:perspective(1000px) rotateX(0)}40%{-webkit-transform:perspective(1000px) rotateX(-7.5deg);transform:perspective(1000px) rotateX(-7.5deg)}60%{-webkit-transform:perspective(1000px) rotateX(17.5deg);transform:perspective(1000px) rotateX(17.5deg)}80%{-webkit-transform:perspective(1000px) rotateX(-30deg);transform:perspective(1000px) rotateX(-30deg);opacity:1}100%{-webkit-transform:perspective(1000px) rotateX(90deg);transform:perspective(1000px) rotateX(90deg);opacity:0}}@keyframes swingOutX{0%{-webkit-transform:perspective(1000px) rotateX(0);transform:perspective(1000px) rotateX(0)}40%{-webkit-transform:perspective(1000px) rotateX(-7.5deg);transform:perspective(1000px) rotateX(-7.5deg)}60%{-webkit-transform:perspective(1000px) rotateX(17.5deg);transform:perspective(1000px) rotateX(17.5deg)}80%{-webkit-transform:perspective(1000px) rotateX(-30deg);transform:perspective(1000px) rotateX(-30deg);opacity:1}100%{-webkit-transform:perspective(1000px) rotateX(90deg);transform:perspective(1000px) rotateX(90deg);opacity:0}}@-webkit-keyframes swingOutY{0%{-webkit-transform:perspective(1000px) rotateY(0);transform:perspective(1000px) rotateY(0)}40%{-webkit-transform:perspective(1000px) rotateY(7.5deg);transform:perspective(1000px) rotateY(7.5deg)}60%{-webkit-transform:perspective(1000px) rotateY(-10deg);transform:perspective(1000px) rotateY(-10deg)}80%{-webkit-transform:perspective(1000px) rotateY(30deg);transform:perspective(1000px) rotateY(30deg);opacity:1}100%{-webkit-transform:perspective(1000px) rotateY(-90deg);transform:perspective(1000px) rotateY(-90deg);opacity:0}}@keyframes swingOutY{0%{-webkit-transform:perspective(1000px) rotateY(0);transform:perspective(1000px) rotateY(0)}40%{-webkit-transform:perspective(1000px) rotateY(7.5deg);transform:perspective(1000px) rotateY(7.5deg)}60%{-webkit-transform:perspective(1000px) rotateY(-10deg);transform:perspective(1000px) rotateY(-10deg)}80%{-webkit-transform:perspective(1000px) rotateY(30deg);transform:perspective(1000px) rotateY(30deg);opacity:1}100%{-webkit-transform:perspective(1000px) rotateY(-90deg);transform:perspective(1000px) rotateY(-90deg);opacity:0}}.transition.zoom.in{-webkit-animation-name:zoomIn;animation-name:zoomIn}.transition.zoom.out{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomIn{0%{opacity:1;-webkit-transform:scale(0);transform:scale(0)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes zoomIn{0%{opacity:1;-webkit-transform:scale(0);transform:scale(0)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:1;-webkit-transform:scale(0);transform:scale(0)}}@keyframes zoomOut{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:1;-webkit-transform:scale(0);transform:scale(0)}}.flash.transition{-webkit-animation-duration:750ms;animation-duration:750ms;-webkit-animation-name:flash;animation-name:flash}.shake.transition{-webkit-animation-duration:750ms;animation-duration:750ms;-webkit-animation-name:shake;animation-name:shake}.bounce.transition{-webkit-animation-duration:750ms;animation-duration:750ms;-webkit-animation-name:bounce;animation-name:bounce}.tada.transition{-webkit-animation-duration:750ms;animation-duration:750ms;-webkit-animation-name:tada;animation-name:tada}.pulse.transition{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-name:pulse;animation-name:pulse}.jiggle.transition{-webkit-animation-duration:750ms;animation-duration:750ms;-webkit-animation-name:jiggle;animation-name:jiggle}.transition.glow{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:cubic-bezier(.19,1,.22,1);animation-timing-function:cubic-bezier(.19,1,.22,1)}.transition.glow{-webkit-animation-name:glow;animation-name:glow}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@-webkit-keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0);transform:translateY(0)}40%{-webkit-transform:translateY(-30px);transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px);transform:translateY(-15px)}}@keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0);transform:translateY(0)}40%{-webkit-transform:translateY(-30px);transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px);transform:translateY(-15px)}}@-webkit-keyframes tada{0%{-webkit-transform:scale(1);transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg);transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg);transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg);transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0);transform:scale(1) rotate(0)}}@keyframes tada{0%{-webkit-transform:scale(1);transform:scale(1)}10%,20%{-webkit-transform:scale(.9) rotate(-3deg);transform:scale(.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg);transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg);transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0);transform:scale(1) rotate(0)}}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}50%{-webkit-transform:scale(.9);transform:scale(.9);opacity:.7}100%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes pulse{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}50%{-webkit-transform:scale(.9);transform:scale(.9);opacity:.7}100%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes jiggle{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes jiggle{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@-webkit-keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}100%{background-color:#fcfcfd}}@keyframes glow{0%{background-color:#fcfcfd}30%{background-color:#fff6cd}100%{background-color:#fcfcfd}} diff --git a/static/MarkDown-Editor/plugins/fonts/brand-icons.eot b/static/MarkDown-Editor/plugins/fonts/brand-icons.eot deleted file mode 100644 index 0a1ef3f..0000000 Binary files a/static/MarkDown-Editor/plugins/fonts/brand-icons.eot and /dev/null differ diff --git a/static/MarkDown-Editor/plugins/fonts/brand-icons.svg b/static/MarkDown-Editor/plugins/fonts/brand-icons.svg deleted file mode 100644 index 4c23753..0000000 --- a/static/MarkDown-Editor/plugins/fonts/brand-icons.svg +++ /dev/null @@ -1,1008 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/MarkDown-Editor/plugins/fonts/brand-icons.ttf b/static/MarkDown-Editor/plugins/fonts/brand-icons.ttf deleted file mode 100644 index f990851..0000000 Binary files a/static/MarkDown-Editor/plugins/fonts/brand-icons.ttf and /dev/null differ diff --git a/static/MarkDown-Editor/plugins/fonts/brand-icons.woff b/static/MarkDown-Editor/plugins/fonts/brand-icons.woff deleted file mode 100644 index 2e87401..0000000 Binary files a/static/MarkDown-Editor/plugins/fonts/brand-icons.woff and /dev/null differ diff --git a/static/MarkDown-Editor/plugins/fonts/brand-icons.woff2 b/static/MarkDown-Editor/plugins/fonts/brand-icons.woff2 deleted file mode 100644 index 0d575fd..0000000 Binary files a/static/MarkDown-Editor/plugins/fonts/brand-icons.woff2 and /dev/null differ diff --git a/static/MarkDown-Editor/plugins/fonts/icons.eot b/static/MarkDown-Editor/plugins/fonts/icons.eot deleted file mode 100644 index 25066de..0000000 Binary files a/static/MarkDown-Editor/plugins/fonts/icons.eot and /dev/null differ diff --git a/static/MarkDown-Editor/plugins/fonts/icons.svg b/static/MarkDown-Editor/plugins/fonts/icons.svg deleted file mode 100644 index b9c54d0..0000000 --- a/static/MarkDown-Editor/plugins/fonts/icons.svg +++ /dev/null @@ -1,450 +0,0 @@ - - - - -Created by FontForge 20100429 at Thu Sep 20 22:09:47 2012 - By root -Copyright (C) 2012 by original authors @ fontello.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/MarkDown-Editor/plugins/fonts/icons.ttf b/static/MarkDown-Editor/plugins/fonts/icons.ttf deleted file mode 100644 index 318a264..0000000 Binary files a/static/MarkDown-Editor/plugins/fonts/icons.ttf and /dev/null differ diff --git a/static/MarkDown-Editor/plugins/fonts/icons.woff b/static/MarkDown-Editor/plugins/fonts/icons.woff deleted file mode 100644 index baba1b5..0000000 Binary files a/static/MarkDown-Editor/plugins/fonts/icons.woff and /dev/null differ diff --git a/static/MarkDown-Editor/plugins/fonts/icons.woff2 b/static/MarkDown-Editor/plugins/fonts/icons.woff2 deleted file mode 100644 index eea9aa2..0000000 Binary files a/static/MarkDown-Editor/plugins/fonts/icons.woff2 and /dev/null differ diff --git a/static/MarkDown-Editor/plugins/fonts/outline-icons.eot b/static/MarkDown-Editor/plugins/fonts/outline-icons.eot deleted file mode 100644 index cda0a84..0000000 Binary files a/static/MarkDown-Editor/plugins/fonts/outline-icons.eot and /dev/null differ diff --git a/static/MarkDown-Editor/plugins/fonts/outline-icons.svg b/static/MarkDown-Editor/plugins/fonts/outline-icons.svg deleted file mode 100644 index 2875252..0000000 --- a/static/MarkDown-Editor/plugins/fonts/outline-icons.svg +++ /dev/null @@ -1,366 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/MarkDown-Editor/plugins/fonts/outline-icons.ttf b/static/MarkDown-Editor/plugins/fonts/outline-icons.ttf deleted file mode 100644 index ee13f84..0000000 Binary files a/static/MarkDown-Editor/plugins/fonts/outline-icons.ttf and /dev/null differ diff --git a/static/MarkDown-Editor/plugins/fonts/outline-icons.woff b/static/MarkDown-Editor/plugins/fonts/outline-icons.woff deleted file mode 100644 index bcd8343..0000000 Binary files a/static/MarkDown-Editor/plugins/fonts/outline-icons.woff and /dev/null differ diff --git a/static/MarkDown-Editor/plugins/fonts/outline-icons.woff2 b/static/MarkDown-Editor/plugins/fonts/outline-icons.woff2 deleted file mode 100644 index 35cc7b3..0000000 Binary files a/static/MarkDown-Editor/plugins/fonts/outline-icons.woff2 and /dev/null differ diff --git a/static/MarkDown-Editor/plugins/images/commonmark.png b/static/MarkDown-Editor/plugins/images/commonmark.png deleted file mode 100644 index 95ca4b5..0000000 Binary files a/static/MarkDown-Editor/plugins/images/commonmark.png and /dev/null differ diff --git a/static/MarkDown-Editor/plugins/images/flags.png b/static/MarkDown-Editor/plugins/images/flags.png deleted file mode 100644 index cdd33c3..0000000 Binary files a/static/MarkDown-Editor/plugins/images/flags.png and /dev/null differ diff --git a/static/MarkDown-Editor/plugins/images/heart.png b/static/MarkDown-Editor/plugins/images/heart.png deleted file mode 100644 index 733d262..0000000 Binary files a/static/MarkDown-Editor/plugins/images/heart.png and /dev/null differ diff --git a/static/MarkDown-Editor/plugins/js/ace.js b/static/MarkDown-Editor/plugins/js/ace.js deleted file mode 100644 index b40b0b2..0000000 --- a/static/MarkDown-Editor/plugins/js/ace.js +++ /dev/null @@ -1,20 +0,0 @@ -/*! - * Ace v1.4.2 - * https://cdnjs.com/libraries/ace/ - */ -(function(){function o(n){var i=e;n&&(e[n]||(e[n]={}),i=e[n]);if(!i.define||!i.define.packaged)t.original=i.define,i.define=t,i.define.packaged=!0;if(!i.require||!i.require.packaged)r.original=i.require,i.require=r,i.require.packaged=!0}var ACE_NAMESPACE="",e=function(){return this}();!e&&typeof window!="undefined"&&(e=window);if(!ACE_NAMESPACE&&typeof requirejs!="undefined")return;var t=function(e,n,r){if(typeof e!="string"){t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=n),t.modules[e]||(t.payloads[e]=r,t.modules[e]=null)};t.modules={},t.payloads={};var n=function(e,t,n){if(typeof t=="string"){var i=s(e,t);if(i!=undefined)return n&&n(),i}else if(Object.prototype.toString.call(t)==="[object Array]"){var o=[];for(var u=0,a=t.length;u1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;et.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n=0?parseFloat((i.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((i.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=i.match(/ Gecko\/\d+/),t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(i.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(i.split(" Chrome/")[1])||undefined,t.isEdge=parseFloat(i.split(" Edge/")[1])||undefined,t.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isAndroid=i.indexOf("Android")>=0,t.isChromeOS=i.indexOf(" CrOS ")>=0,t.isIOS=/iPad|iPhone|iPod/.test(i)&&!window.MSStream,t.isIOS&&(t.isMac=!0),t.isMobile=t.isIPad||t.isAndroid}),define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("./useragent"),i="http://www.w3.org/1999/xhtml";t.buildDom=function o(e,t,n){if(typeof e=="string"&&e){var r=document.createTextNode(e);return t&&t.appendChild(r),r}if(!Array.isArray(e))return e;if(typeof e[0]!="string"||!e[0]){var i=[];for(var s=0;s=1.5:!0;if(typeof document!="undefined"){var s=document.createElement("div");t.HI_DPI&&s.style.transform!==undefined&&(t.HAS_CSS_TRANSFORMS=!0),!r.isEdge&&typeof s.style.animationName!="undefined"&&(t.HAS_CSS_ANIMATION=!0),s=null}t.HAS_CSS_TRANSFORMS?t.translate=function(e,t,n){e.style.transform="translate("+Math.round(t)+"px, "+Math.round(n)+"px)"}:t.translate=function(e,t,n){e.style.top=Math.round(n)+"px",e.style.left=Math.round(t)+"px"}}),define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),define("ace/lib/keys",["require","exports","module","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./oop"),i=function(){var e={MODIFIER_KEYS:{16:"Shift",17:"Ctrl",18:"Alt",224:"Meta"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,"super":8,meta:8,command:8,cmd:8},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9","-13":"NumpadEnter",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",107:"+",109:"-",110:".",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",111:"/",106:"*"}},t,n;for(n in e.FUNCTION_KEYS)t=e.FUNCTION_KEYS[n].toLowerCase(),e[t]=parseInt(n,10);for(n in e.PRINTABLE_KEYS)t=e.PRINTABLE_KEYS[n].toLowerCase(),e[t]=parseInt(n,10);return r.mixin(e,e.MODIFIER_KEYS),r.mixin(e,e.PRINTABLE_KEYS),r.mixin(e,e.FUNCTION_KEYS),e.enter=e["return"],e.escape=e.esc,e.del=e["delete"],e[173]="-",function(){var t=["cmd","ctrl","alt","shift"];for(var n=Math.pow(2,t.length);n--;)e.KEY_MODS[n]=t.filter(function(t){return n&e.KEY_MODS[t]}).join("-")+"-"}(),e.KEY_MODS[0]="",e.KEY_MODS[-1]="input-",e}();r.mixin(t,i),t.keyCodeToString=function(e){var t=i[e];return typeof t!="string"&&(t=String.fromCharCode(e)),t.toLowerCase()}}),define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function a(e,t,n){var a=u(t);if(!i.isMac&&s){t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(a|=8);if(s.altGr){if((3&a)==3)return;s.altGr=0}if(n===18||n===17){var f="location"in t?t.location:t.keyLocation;if(n===17&&f===1)s[n]==1&&(o=t.timeStamp);else if(n===18&&a===3&&f===2){var l=t.timeStamp-o;l<50&&(s.altGr=!0)}}}n in r.MODIFIER_KEYS&&(n=-1),a&8&&n>=91&&n<=93&&(n=-1);if(!a&&n===13){var f="location"in t?t.location:t.keyLocation;if(f===3){e(t,a,-n);if(t.defaultPrevented)return}}if(i.isChromeOS&&a&8){e(t,a,n);if(t.defaultPrevented)return;a&=-9}return!!a||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,a,n):!1}function f(){s=Object.create(null)}var r=e("./keys"),i=e("./useragent"),s=null,o=0;t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var r=function(){n.call(e,window.event)};n._wrapper=r,e.attachEvent("on"+t,r)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return e.type=="dblclick"?0:e.type=="contextmenu"||i.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,r){function i(e){n&&n(e),r&&r(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",i,!0),t.removeListener(document,"dragstart",i,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",i,!0),t.addListener(document,"dragstart",i,!0),i},t.addTouchMoveListener=function(e,n){var r,i;t.addListener(e,"touchstart",function(e){var t=e.touches,n=t[0];r=n.clientX,i=n.clientY}),t.addListener(e,"touchmove",function(e){var t=e.touches;if(t.length>1)return;var s=t[0];e.wheelX=r-s.clientX,e.wheelY=i-s.clientY,r=s.clientX,i=s.clientY,n(e)})},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;e.wheelDeltaX!==undefined?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=(e.deltaX||0)*5,e.wheelY=(e.deltaY||0)*5}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=(e.detail||0)*5,e.wheelY=0):(e.wheelX=0,e.wheelY=(e.detail||0)*5),n(e)})},t.addMultiMouseDownListener=function(e,n,r,s){function c(e){t.getButton(e)!==0?o=0:e.detail>1?(o++,o>4&&(o=1)):o=1;if(i.isIE){var c=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;if(!f||c)o=1;f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),o==1&&(u=e.clientX,a=e.clientY)}e._clicks=o,r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}function h(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s]("mousedown",e),r[s](l[o],e)}var o=0,u,a,f,l={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,"mousedown",c),i.isOldIE&&t.addListener(e,"dblclick",h)})};var u=!i.isMac||!i.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};t.getModifierString=function(e){return r.KEY_MODS[u(e)]},t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var o=null;r(e,"keydown",function(e){o=e.keyCode}),r(e,"keypress",function(e){return a(n,e,o)})}else{var u=null;r(e,"keydown",function(e){s[e.keyCode]=(s[e.keyCode]||0)+1;var t=a(n,e,e.keyCode);return u=e.defaultPrevented,t}),r(e,"keypress",function(e){u&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),u=null)}),r(e,"keyup",function(e){s[e.keyCode]=null}),s||(f(),r(window,"focus",f))}};if(typeof window=="object"&&window.postMessage&&!i.isOldIE){var l=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+l++,i=function(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())};t.addListener(n,"message",i),n.postMessage(r,"*")}}t.$idleBlocked=!1,t.onIdle=function(e,n){return setTimeout(function r(){t.$idleBlocked?setTimeout(r,100):e()},n)},t.$idleBlockId=null,t.blockIdle=function(e){t.$idleBlockId&&clearTimeout(t.$idleBlockId),t.$idleBlocked=!0,t.$idleBlockId=setTimeout(function(){t.$idleBlocked=!1},e||100)},t.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.row0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n63,l=400,c=e("../lib/keys"),h=c.KEY_MODS,p=i.isIOS,d=p?/\s/:/\n/,v=function(e,t){function W(){x=!0,n.blur(),n.focus(),x=!1}function V(e){e.keyCode==27&&n.value.lengthC&&T[s]=="\n")o=c.end;else if(rC&&T.slice(0,s).split("\n").length>2)o=c.down;else if(s>C&&T[s-1]==" ")o=c.right,u=h.option;else if(s>C||s==C&&C!=N&&r==s)o=c.right;r!==s&&(u|=h.shift),o&&(t.onCommandKey(null,u,o),N=r,C=s,A(""))};document.addEventListener("selectionchange",s),t.on("destroy",function(){document.removeEventListener("selectionchange",s)})}var n=s.createElement("textarea");n.className="ace_text-input",n.setAttribute("wrap","off"),n.setAttribute("autocorrect","off"),n.setAttribute("autocapitalize","off"),n.setAttribute("spellcheck",!1),n.style.opacity="0",e.insertBefore(n,e.firstChild);var v=!1,m=!1,g=!1,y=!1,b="",w=!0,E=!1;i.isMobile||(n.style.fontSize="1px");var S=!1,x=!1,T="",N=0,C=0;try{var k=document.activeElement===n}catch(L){}r.addListener(n,"blur",function(e){if(x)return;t.onBlur(e),k=!1}),r.addListener(n,"focus",function(e){if(x)return;k=!0;if(i.isEdge)try{if(!document.hasFocus())return}catch(e){}t.onFocus(e),i.isEdge?setTimeout(A):A()}),this.$focusScroll=!1,this.focus=function(){if(b||f||this.$focusScroll=="browser")return n.focus({preventScroll:!0});var e=n.style.top;n.style.position="fixed",n.style.top="0px";try{var t=n.getBoundingClientRect().top!=0}catch(r){return}var i=[];if(t){var s=n.parentElement;while(s&&s.nodeType==1)i.push(s),s.setAttribute("ace_nocontext",!0),!s.parentElement&&s.getRootNode?s=s.getRootNode().host:s=s.parentElement}n.focus({preventScroll:!0}),t&&i.forEach(function(e){e.removeAttribute("ace_nocontext")}),setTimeout(function(){n.style.position="",n.style.top=="0px"&&(n.style.top=e)},0)},this.blur=function(){n.blur()},this.isFocused=function(){return k},t.on("beforeEndOperation",function(){if(t.curOp&&t.curOp.command.name=="insertstring")return;g&&(T=n.value="",z()),A()});var A=p?function(e){if(!k||v&&!e)return;e||(e="");var r="\n ab"+e+"cde fg\n";r!=n.value&&(n.value=T=r);var i=4,s=4+(e.length||(t.selection.isEmpty()?0:1));(N!=i||C!=s)&&n.setSelectionRange(i,s),N=i,C=s}:function(){if(g||y)return;if(!k&&!D)return;g=!0;var e=t.selection,r=e.getRange(),i=e.cursor.row,s=r.start.column,o=r.end.column,u=t.session.getLine(i);if(r.start.row!=i){var a=t.session.getLine(i-1);s=r.start.rowi+1?f.length:o,o+=u.length+1,u=u+"\n"+f}u.length>l&&(s=T.length&&e.value===T&&T&&e.selectionEnd!==C},M=function(e){if(g)return;v?v=!1:O(n)&&(t.selectAll(),A())},_=null;this.setInputHandler=function(e){_=e},this.getInputHandler=function(){return _};var D=!1,P=function(e,r){D&&(D=!1);if(m)return A(),e&&t.onPaste(e),m=!1,"";var i=n.selectionStart,s=n.selectionEnd,o=N,u=T.length-C,a=e,f=e.length-i,l=e.length-s,c=0;while(o>0&&T[c]==e[c])c++,o--;a=a.slice(c),c=1;while(u>0&&T.length-c>N-1&&T[T.length-c]==e[e.length-c])c++,u--;return f-=c-1,l-=c-1,a=a.slice(0,a.length-c+1),!r&&f==a.length&&!o&&!u&&!l?"":(y=!0,a&&!o&&!u&&!f&&!l||S?t.onTextInput(a):t.onTextInput(a,{extendLeft:o,extendRight:u,restoreStart:f,restoreEnd:l}),y=!1,T=e,N=i,C=s,a)},H=function(e){if(g)return U();var t=n.value,r=P(t,!0);(t.length>l+100||d.test(r))&&A()},B=function(e,t,n){var r=e.clipboardData||window.clipboardData;if(!r||u)return;var i=a||n?"Text":"text/plain";try{return t?r.setData(i,t)!==!1:r.getData(i)}catch(e){if(!n)return B(e,t,!0)}},j=function(e,i){var s=t.getCopyText();if(!s)return r.preventDefault(e);B(e,s)?(p&&(A(s),v=s,setTimeout(function(){v=!1},10)),i?t.onCut():t.onCopy(),r.preventDefault(e)):(v=!0,n.value=s,n.select(),setTimeout(function(){v=!1,A(),i?t.onCut():t.onCopy()}))},F=function(e){j(e,!0)},I=function(e){j(e,!1)},q=function(e){var s=B(e);typeof s=="string"?(s&&t.onPaste(s,e),i.isIE&&setTimeout(A),r.preventDefault(e)):(n.value="",m=!0)};r.addCommandKeyListener(n,t.onCommandKey.bind(t)),r.addListener(n,"select",M),r.addListener(n,"input",H),r.addListener(n,"cut",F),r.addListener(n,"copy",I),r.addListener(n,"paste",q),(!("oncut"in n)||!("oncopy"in n)||!("onpaste"in n))&&r.addListener(e,"keydown",function(e){if(i.isMac&&!e.metaKey||!e.ctrlKey)return;switch(e.keyCode){case 67:I(e);break;case 86:q(e);break;case 88:F(e)}});var R=function(e){if(g||!t.onCompositionStart||t.$readOnly)return;g={};if(S)return;setTimeout(U,0),t.on("mousedown",W);var r=t.getSelectionRange();r.end.row=r.start.row,r.end.column=r.start.column,g.markerRange=r,g.selectionStart=N,t.onCompositionStart(g),g.useTextareaForIME?(n.value="",T="",N=0,C=0):(n.msGetInputContext&&(g.context=n.msGetInputContext()),n.getInputContext&&(g.context=n.getInputContext()))},U=function(){if(!g||!t.onCompositionUpdate||t.$readOnly)return;if(S)return W();if(g.useTextareaForIME)t.onCompositionUpdate(n.value);else{var e=n.value;P(e),g.markerRange&&(g.context&&(g.markerRange.start.column=g.selectionStart=g.context.compositionStartOffset),g.markerRange.end.column=g.markerRange.start.column+C-g.selectionStart)}},z=function(e){if(!t.onCompositionEnd||t.$readOnly)return;g=!1,t.onCompositionEnd(),t.off("mousedown",W),e&&H()},X=o.delayedCall(U,50).schedule.bind(null,null);r.addListener(n,"compositionstart",R),r.addListener(n,"compositionupdate",U),r.addListener(n,"keyup",V),r.addListener(n,"keydown",X),r.addListener(n,"compositionend",z),this.getElement=function(){return n},this.setCommandMode=function(e){S=e,n.readOnly=!1},this.setReadOnly=function(e){S||(n.readOnly=e)},this.setCopyWithEmptySelection=function(e){E=e},this.onContextMenu=function(e){D=!0,A(),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,o){b||(b=n.style.cssText),n.style.cssText=(o?"z-index:100000;":"")+(i.isIE?"opacity:0.1;":"")+"text-indent: -"+(N+C)*t.renderer.characterWidth*.5+"px;";var u=t.container.getBoundingClientRect(),a=s.computedStyle(t.container),f=u.top+(parseInt(a.borderTopWidth)||0),l=u.left+(parseInt(u.borderLeftWidth)||0),c=u.bottom-f-n.clientHeight-2,h=function(e){n.style.left=e.clientX-l-2+"px",n.style.top=Math.min(e.clientY-f-2,c)+"px"};h(e);if(e.type!="mousedown")return;t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout($),i.isWin&&r.capture(t.container,h,J)},this.onContextMenuClose=J;var $,K=function(e){t.textInput.onContextMenu(e),J()};r.addListener(n,"mouseup",K),r.addListener(n,"mousedown",function(e){e.preventDefault(),J()}),r.addListener(t.renderer.scroller,"contextmenu",K),r.addListener(n,"contextmenu",K),p&&Q(e,t,n)};t.TextInput=v}),define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"],function(e,t,n){"use strict";function o(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),t.setDefaultHandler("touchmove",this.onTouchMove.bind(e));var n=["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"];n.forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function u(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}function a(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else if(e.start.row==e.end.row-1&&!e.start.column&&!e.end.column)var n=t.column-4;else var n=2*t.row-e.start.row-e.end.row;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var r=e("../lib/useragent"),i=0,s=550;(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var i=this.editor,s=e.getButton();if(s!==0){var o=i.getSelectionRange(),u=o.isEmpty();(u||s==1)&&i.selection.moveToPosition(n),s==2&&(i.textInput.onContextMenu(e.domEvent),r.isMozilla||e.preventDefault());return}this.mousedownEvent.time=Date.now();if(t&&!i.isFocused()){i.focus();if(this.$focusTimeout&&!this.$clickSelection&&!i.inMultiSelectMode){this.setState("focusWait"),this.captureMouse(e);return}}return this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;if(!this.mousedownEvent)return;this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select")},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var r=this.$clickSelection.comparePoint(n);if(r==-1)e=this.$clickSelection.end;else if(r==1)e=this.$clickSelection.start;else{var i=a(this.$clickSelection,n);n=i.cursor,e=i.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,r=n.renderer.screenToTextCoordinates(this.x,this.y),i=n.selection[e](r.row,r.column);if(this.$clickSelection){var s=this.$clickSelection.comparePoint(i.start),o=this.$clickSelection.comparePoint(i.end);if(s==-1&&o<=0){t=this.$clickSelection.end;if(i.end.row!=r.row||i.end.column!=r.column)r=i.start}else if(o==1&&s>=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=a(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=u(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>i||t-this.mousedownEvent.time>this.$focusTimeout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var r=n.getSelectionRange();r.isMultiLine()&&r.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(r.start.row),this.$clickSelection.end=n.selection.getLineRange(r.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(e.getAccelKey())return;e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var n=this.$lastScroll,r=e.domEvent.timeStamp,i=r-n.t,o=i?e.wheelX/i:n.vx,u=i?e.wheelY/i:n.vy;i=1&&t.renderer.isScrollableBy(e.wheelX*e.speed,0)&&(f=!0),a<=1&&t.renderer.isScrollableBy(0,e.wheelY*e.speed)&&(f=!0);if(f)n.allowed=r;else if(r-n.allowedt.session.documentToScreenRow(l.row,l.column))return c()}if(f==s)return;f=s.text.join("
"),i.setHtml(f),i.show(),t._signal("showGutterTooltip",i),t.on("mousewheel",c);if(e.$tooltipFollowsMouse)h(u);else{var p=u.domEvent.target,d=p.getBoundingClientRect(),v=i.getElement().style;v.left=d.right+"px",v.top=d.bottom+"px"}}function c(){o&&(o=clearTimeout(o)),f&&(i.hide(),f=null,t._signal("hideGutterTooltip",i),t.removeEventListener("mousewheel",c))}function h(e){i.setPosition(e.x,e.y)}var t=e.editor,n=t.renderer.$gutterLayer,i=new a(t.container);e.editor.setDefaultHandler("guttermousedown",function(r){if(!t.isFocused()||r.getButton()!=0)return;var i=n.getRegion(r);if(i=="foldWidgets")return;var s=r.getDocumentPosition().row,o=t.session.selection;if(r.getShiftKey())o.selectTo(s,0);else{if(r.domEvent.detail==2)return t.selectAll(),r.preventDefault();e.$clickSelection=t.selection.getLineRange(s)}return e.setState("selectByLines"),e.captureMouse(r),r.preventDefault()});var o,u,f;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,"ace_fold-widget"))return c();f&&e.$tooltipFollowsMouse&&h(t),u=t;if(o)return;o=setTimeout(function(){o=null,u&&!e.isMousePressed?l():c()},50)}),s.addListener(t.renderer.$gutter,"mouseout",function(e){u=null;if(!f||o)return;o=setTimeout(function(){o=null,c()},50)}),t.on("changeSession",c)}function a(e){o.call(this,e)}var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/event"),o=e("../tooltip").Tooltip;i.inherits(a,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,i=this.getWidth(),s=this.getHeight();e+=15,t+=15,e+i>n&&(e-=e+i-n),t+s>r&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=u}),define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},this.getButton=function(){return r.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=i.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)}),define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||e.column!=n.column;if(!S||i||s)t.moveCursorToPosition(e),S=r,x={x:p,y:d};else{var o=l(x.x,x.y,p,d);o>a?S=null:r-S>=u&&(t.renderer.scrollCursorIntoView(),S=null)}}function N(e,n){var r=Date.now(),i=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,u=t.renderer.scroller.getBoundingClientRect(),a={x:{left:p-u.left,right:u.right-p},y:{top:d-u.top,bottom:u.bottom-d}},f=Math.min(a.x.left,a.x.right),l=Math.min(a.y.top,a.y.bottom),c={row:e.row,column:e.column};f/s<=2&&(c.column+=a.x.left=o&&t.renderer.scrollCursorIntoView(c):E=r:E=null}function C(){var e=g;g=t.renderer.screenToTextCoordinates(p,d),T(g,e),N(g,e)}function k(){m=t.selection.toOrientedRange(),h=t.session.addMarker(m,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(v),C(),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.selection.fromOrientedRange(m),t.isFocused()&&!w&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),m=null,g=null,y=0,E=null,S=null,i.removeListener(document,"mousemove",O)}function O(){A==null&&(A=setTimeout(function(){A!=null&&h&&L()},20))}function M(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return e=="text/plain"||e=="Text"})}function _(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],r=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return r&&t.indexOf(i)>=0?o="copy":n.indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}var t=e.editor,n=r.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var f=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];f.forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var c=t.container,h,p,d,v,m,g,y=0,b,w,E,S,x;this.onDragStart=function(e){if(this.cancelDrag||!c.draggable){var r=this;return setTimeout(function(){r.startSelect(),r.captureMouse(e)},0),e.preventDefault()}m=t.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n.scrollTop=0),i.setDragImage&&i.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),i.clearData(),i.setData("Text",t.session.getTextRange()),w=!0,this.setState("drag")},this.onDragEnd=function(e){c.draggable=!1,w=!1,this.setState(null);if(!t.getReadOnly()){var n=e.dataTransfer.dropEffect;!b&&n=="move"&&t.session.remove(t.getSelectionRange()),t.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||(k(),y++),A!==null&&(A=null),e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragLeave=function(e){y--;if(y<=0&&h)return L(),b=null,i.preventDefault(e)},this.onDrop=function(e){if(!g)return;var n=e.dataTransfer;if(w)switch(b){case"move":m.contains(g.row,g.column)?m={start:g,end:g}:m=t.moveText(m,g);break;case"copy":m=t.moveText(m,g,!0)}else{var r=n.getData("Text");m={start:g,end:t.session.insert(g,r)},t.focus(),b=null}return L(),i.preventDefault(e)},i.addListener(c,"dragstart",this.onDragStart.bind(e)),i.addListener(c,"dragend",this.onDragEnd.bind(e)),i.addListener(c,"dragenter",this.onDragEnter.bind(e)),i.addListener(c,"dragover",this.onDragOver.bind(e)),i.addListener(c,"dragleave",this.onDragLeave.bind(e)),i.addListener(c,"drop",this.onDrop.bind(e));var A=null}function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=200,u=200,a=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var n=s.isWin?"default":"move";e.renderer.setCursorStyle(n),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(s.isIE&&this.state=="dragReady"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if(this.state==="dragWait"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(!this.$dragEnabled)return;this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),r=e.getButton(),i=e.domEvent.detail||1;if(i===1&&r===0&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on");if(t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var u=t.container;u.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}).call(f.prototype),t.DragdropHandler=f}),define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){n.readyState===4&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=r.getDocumentHead(),i=document.createElement("script");i.src=e,n.appendChild(i),i.onload=i.onreadystatechange=function(e,n){if(n||!i.readyState||i.readyState=="loaded"||i.readyState=="complete")i=i.onload=i.onreadystatechange=null,n||t()}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o1&&(i=n[n.length-2]);var o=a[t+"Path"];return o==null?o=a.basePath:r=="/"&&(t=r=""),o&&o.slice(-1)!="/"&&(o+="/"),o+t+r+i+this.get("suffix")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i&&!t.$loading[n])return r&&r(i);t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(r);if(t.$loading[n].length>1)return;var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var r=t.$loading[n];t.$loading[n]=null,r.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a),f()};var f=function(){!a.basePath&&!a.workerPath&&!a.modePath&&!a.themePath&&!Object.keys(a.$moduleUrls).length&&(console.error("Unable to infer path to ace from script src,","use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes","or with webpack use ace/webpack-resolver"),f=function(){})};t.init=l}),define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("./default_handlers").DefaultHandlers,o=e("./default_gutter_handler").GutterHandler,u=e("./mouse_event").MouseEvent,a=e("./dragdrop_handler").DragdropHandler,f=e("../config"),l=function(e){var t=this;this.editor=e,new s(this),new o(this),new a(this);var n=function(t){var n=!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement());n&&window.focus(),e.focus()},u=e.renderer.getMouseEventTarget();r.addListener(u,"click",this.onMouseEvent.bind(this,"click")),r.addListener(u,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener([u,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),r.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var f=e.renderer.$gutter;r.addListener(f,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(f,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(f,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(f,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(u,"mousedown",n),r.addListener(f,"mousedown",n),i.isIE&&e.renderer.scrollBarV&&(r.addListener(e.renderer.scrollBarV.element,"mousedown",n),r.addListener(e.renderer.scrollBarH.element,"mousedown",n)),e.on("mousemove",function(n){if(t.state||t.$dragDelay||!t.$dragEnabled)return;var r=e.renderer.screenToTextCoordinates(n.x,n.y),i=e.session.selection.getRange(),s=e.renderer;!i.isEmpty()&&i.insideStart(r.row,r.column)?s.setCursorStyle("default"):s.setCursorStyle("")})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new u(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!n||!n.length)return;this.editor._emit(e,new u(t,this.editor))},this.onMouseWheel=function(e,t){var n=new u(t,this.editor);n.speed=this.$scrollSpeed*2,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.onTouchMove=function(e,t){var n=new u(t,this.editor);n.speed=1,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor,s=this.editor.renderer;s.$keepTextAreaAtCursor&&(s.$keepTextAreaAtCursor=null);var o=this,a=function(e){if(!e)return;if(i.isWebKit&&!e.which&&o.releaseMouse)return o.releaseMouse();o.x=e.clientX,o.y=e.clientY,t&&t(e),o.mouseEvent=new u(e,o.editor),o.$mouseMoved=!0},f=function(e){n.off("beforeEndOperation",c),clearInterval(h),l(),o[o.state+"End"]&&o[o.state+"End"](e),o.state="",s.$keepTextAreaAtCursor==null&&(s.$keepTextAreaAtCursor=!0,s.$moveTextAreaToCursor()),o.isMousePressed=!1,o.$onCaptureMouseMove=o.releaseMouse=null,e&&o.onMouseEvent("mouseup",e),n.endOperation()},l=function(){o[o.state]&&o[o.state](),o.$mouseMoved=!1};if(i.isOldIE&&e.domEvent.type=="dblclick")return setTimeout(function(){f(e)});var c=function(e){if(!o.releaseMouse)return;n.curOp.command.name&&n.curOp.selectionChanged&&(o[o.state+"End"]&&o[o.state+"End"](),o.state="",o.releaseMouse())};n.on("beforeEndOperation",c),n.startOperation({command:{name:"mouse"}}),o.$onCaptureMouseMove=a,o.releaseMouse=r.capture(this.editor.container,a,f);var h=setInterval(l,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){if(t&&t.domEvent&&t.domEvent.type!="contextmenu")return;this.editor.off("nativecontextmenu",e),t&&t.domEvent&&r.stopEvent(t.domEvent)}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:i.isMac?150:0},dragEnabled:{initialValue:!0},focusTimeout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=l}),define("ace/mouse/fold_handler",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";function i(e){e.on("click",function(t){var n=t.getDocumentPosition(),i=e.session,s=i.getFoldAt(n.row,n.column,1);s&&(t.getAccelKey()?i.removeFold(s):i.expandFold(s),t.stop());var o=t.domEvent&&t.domEvent.target;o&&r.hasCssClass(o,"ace_inline_button")&&r.hasCssClass(o,"ace_toggle_wrap")&&(i.setOption("wrap",!0),e.renderer.scrollCursorIntoView())}),e.on("gutterclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[r]&&e.session.onFoldWidgetClick(r,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session,s=i.getParentFoldRangeData(r,!0),o=s.range||s.firstRange;if(o){r=o.start.row;var u=i.getFoldAt(r,i.getLine(r).length,1);u?i.removeFold(u):(i.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}var r=e("../lib/dom");t.FoldHandler=i}),define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){"use strict";var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]==e)return;while(t[t.length-1]&&t[t.length-1]!=this.$defaultHandler)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)},this.addKeyboardHandler=function(e,t){if(!e)return;typeof e=="function"&&!e.handleKeyboard&&(e.handleKeyboard=e);var n=this.$handlers.indexOf(e);n!=-1&&this.$handlers.splice(n,1),t==undefined?this.$handlers.push(e):this.$handlers.splice(t,0,e),n==-1&&e.attach&&e.attach(this.$editor)},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return t==-1?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(n){return n.getStatusText&&n.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,n,r){var s,o=!1,u=this.$editor.commands;for(var a=this.$handlers.length;a--;){s=this.$handlers[a].handleKeyboard(this.$data,e,t,n,r);if(!s||!s.command)continue;s.command=="null"?o=!0:o=u.exec(s.command,this.$editor,s.args,r),o&&r&&e!=-1&&s.passEvent!=1&&s.command.passEvent!=1&&i.stopEvent(r);if(o)break}return!o&&e==-1&&(s={command:"insertstring"},o=u.exec("insertstring",this.$editor,t)),o&&this.$editor._signal&&this.$editor._signal("keyboardActivity",s),o},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(s.prototype),t.KeyBinding=s}),define("ace/lib/bidiutil",["require","exports","module"],function(e,t,n){"use strict";function F(e,t,n,r){var i=s?d:p,c=null,h=null,v=null,m=0,g=null,y=null,b=-1,w=null,E=null,T=[];if(!r)for(w=0,r=[];w0)if(g==16){for(w=b;w-1){for(w=b;w=0;C--){if(r[C]!=N)break;t[C]=s}}}function I(e,t,n){if(o=e){u=i+1;while(u=e)u++;for(a=i,l=u-1;a=t.length||(o=n[r-1])!=b&&o!=w||(c=t[r+1])!=b&&c!=w)return E;return u&&(c=w),c==o?c:E;case k:o=r>0?n[r-1]:S;if(o==b&&r+10&&n[r-1]==b)return b;if(u)return E;p=r+1,h=t.length;while(p=1425&&d<=2303||d==64286;o=t[p];if(v&&(o==y||o==T))return y}if(r<1||(o=t[r-1])==S)return E;return n[r-1];case S:return u=!1,f=!0,s;case x:return l=!0,E;case O:case M:case D:case P:case _:u=!1;case H:return E}}function R(e){var t=e.charCodeAt(0),n=t>>8;return n==0?t>191?g:B[t]:n==5?/[\u0591-\u05f4]/.test(e)?y:g:n==6?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(e)?A:/[\u0660-\u0669\u066b-\u066c]/.test(e)?w:t==1642?L:/[\u06f0-\u06f9]/.test(e)?b:T:n==32&&t<=8287?j[t&255]:n==254?t>=65136?T:E:E}function U(e){return e>="\u064b"&&e<="\u0655"}var r=["\u0621","\u0641"],i=["\u063a","\u064a"],s=0,o=0,u=!1,a=!1,f=!1,l=!1,c=!1,h=!1,p=[[0,3,0,1,0,0,0],[0,3,0,1,2,2,0],[0,3,0,17,2,0,1],[0,3,5,5,4,1,0],[0,3,21,21,4,0,1],[0,3,5,5,4,2,0]],d=[[2,0,1,1,0,1,0],[2,0,1,1,0,2,0],[2,0,2,1,3,2,0],[2,0,2,33,3,1,1]],v=0,m=1,g=0,y=1,b=2,w=3,E=4,S=5,x=6,T=7,N=8,C=9,k=10,L=11,A=12,O=13,M=14,_=15,D=16,P=17,H=18,B=[H,H,H,H,H,H,H,H,H,x,S,x,N,S,H,H,H,H,H,H,H,H,H,H,H,H,H,H,S,S,S,x,N,E,E,L,L,L,E,E,E,E,E,k,C,k,C,C,b,b,b,b,b,b,b,b,b,b,C,E,E,E,E,E,E,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,E,E,E,E,E,E,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,E,E,E,E,H,H,H,H,H,H,S,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,C,E,L,L,L,L,E,E,E,E,g,E,E,H,E,E,L,L,b,b,E,g,E,E,E,b,g,E,E,E,E,E],j=[N,N,N,N,N,N,N,N,N,N,N,H,H,H,g,y,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,N,S,O,M,_,D,P,C,L,L,L,L,L,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,C,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,N];t.L=g,t.R=y,t.EN=b,t.ON_R=3,t.AN=4,t.R_H=5,t.B=6,t.RLE=7,t.DOT="\u00b7",t.doBidiReorder=function(e,n,r){if(e.length<2)return{};var i=e.split(""),o=new Array(i.length),u=new Array(i.length),a=[];s=r?m:v,F(i,a,i.length,n);for(var f=0;fT&&n[f]0&&i[f-1]==="\u0644"&&/\u0622|\u0623|\u0625|\u0627/.test(i[f])&&(a[f-1]=a[f]=t.R_H,f++);i[i.length-1]===t.DOT&&(a[i.length-1]=t.B),i[0]==="\u202b"&&(a[0]=t.RLE);for(var f=0;f=0&&(e=this.session.$docRowCache[n])}return e},this.getSplitIndex=function(){var e=0,t=this.session.$screenRowCache;if(t.length){var n,r=this.session.$getRowCacheIndex(t,this.currentRow);while(this.currentRow-e>0){n=this.session.$getRowCacheIndex(t,this.currentRow-e-1);if(n!==r)break;r=n,e++}}else e=this.currentRow;return e},this.updateRowLine=function(e,t){e===undefined&&(e=this.getDocumentRow());var n=e===this.session.getLength()-1,s=n?this.EOF:this.EOL;this.wrapIndent=0,this.line=this.session.getLine(e),this.isRtlDir=this.line.charAt(0)===this.RLE;if(this.session.$useWrapMode){var o=this.session.$wrapData[e];o&&(t===undefined&&(t=this.getSplitIndex()),t>0&&o.length?(this.wrapIndent=o.indent,this.wrapOffset=this.wrapIndent*this.charWidths[r.L],this.line=tt?this.session.getOverwrite()?e:e-1:t,i=r.getVisualFromLogicalIdx(n,this.bidiMap),s=this.bidiMap.bidiLevels,o=0;!this.session.getOverwrite()&&e<=t&&s[i]%2!==0&&i++;for(var u=0;ut&&s[i]%2===0&&(o+=this.charWidths[s[i]]),this.wrapIndent&&(o+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset),this.isRtlDir&&(o+=this.rtlLineOffset),o},this.getSelections=function(e,t){var n=this.bidiMap,r=n.bidiLevels,i,s=[],o=0,u=Math.min(e,t)-this.wrapIndent,a=Math.max(e,t)-this.wrapIndent,f=!1,l=!1,c=0;this.wrapIndent&&(o+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);for(var h,p=0;p=u&&hn+s/2){n+=s;if(r===i.length-1){s=0;break}s=this.charWidths[i[++r]]}return r>0&&i[r-1]%2!==0&&i[r]%2===0?(e0&&i[r-1]%2===0&&i[r]%2!==0?t=1+(e>n?this.bidiMap.logicalFromVisual[r]:this.bidiMap.logicalFromVisual[r-1]):this.isRtlDir&&r===i.length-1&&s===0&&i[r-1]%2===0||!this.isRtlDir&&r===0&&i[r]%2!==0?t=1+this.bidiMap.logicalFromVisual[r]:(r>0&&i[r-1]%2!==0&&s!==0&&r--,t=this.bidiMap.logicalFromVisual[r]),t===0&&this.isRtlDir&&t++,t+this.wrapIndent}}).call(o.prototype),t.BidiHandler=o}),define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=function(e){this.session=e,this.doc=e.getDocument(),this.clearSelection(),this.cursor=this.lead=this.doc.createAnchor(0,0),this.anchor=this.doc.createAnchor(0,0),this.$silent=!1;var t=this;this.cursor.on("change",function(e){t.$cursorChanged=!0,t.$silent||t._emit("changeCursor"),!t.$isEmpty&&!t.$silent&&t._emit("changeSelection"),!t.$keepDesiredColumnOnChange&&e.old.column!=e.value.column&&(t.$desiredColumn=null)}),this.anchor.on("change",function(){t.$anchorChanged=!0,!t.$isEmpty&&!t.$silent&&t._emit("changeSelection")})};(function(){r.implement(this,s),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return!this.$isEmpty&&this.anchor.row!=this.cursor.row},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(e,t){this.$isEmpty=!1,this.anchor.setPosition(e,t)},this.getAnchor=this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.isBackwards=function(){var e=this.anchor,t=this.lead;return e.row>t.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.$isEmpty?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){this.$setSelection(0,0,Number.MAX_VALUE,Number.MAX_VALUE)},this.setRange=this.setSelectionRange=function(e,t){var n=t?e.end:e.start,r=t?e.start:e.end;this.$setSelection(n.row,n.column,r.row,r.column)},this.$setSelection=function(e,t,n,r){var i=this.$isEmpty,s=this.inMultiSelectMode;this.$silent=!0,this.$cursorChanged=this.$anchorChanged=!1,this.anchor.setPosition(e,t),this.cursor.setPosition(n,r),this.$isEmpty=!o.comparePoints(this.anchor,this.cursor),this.$silent=!1,this.$cursorChanged&&this._emit("changeCursor"),(this.$cursorChanged||this.$anchorChanged||i!=this.$isEmpty||s)&&this._emit("changeSelection")},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t===!0?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.wouldMoveIntoSoftTab=function(e,t,n){var r=e.column,i=e.column+t;return n<0&&(r=e.column-t,i=e.column),this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(r,i).split(" ").length-1==t},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column===0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.wouldMoveIntoSoftTab(e,n,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var i=this.session.getFoldAt(e,t,1);if(i){this.moveCursorTo(i.end.row,i.end.column);return}this.session.nonTokenRe.exec(r)&&(t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t));if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e0&&this.moveCursorWordLeft();return}this.session.tokenRe.exec(s)&&(t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t=0,n,r=/\s/,i=this.session.tokenRe;i.lastIndex=0;if(this.session.tokenRe.exec(e))t=this.session.tokenRe.lastIndex;else{while((n=e[t])&&r.test(n))t++;if(t<1){i.lastIndex=0;while((n=e[t])&&!i.test(n)){i.lastIndex=0,t++;if(r.test(n)){if(t>2){t--;break}while((n=e[t])&&r.test(n))t++;if(t>2)break}}}}return i.lastIndex=0,t},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column),r;t===0&&(e!==0&&(this.session.$bidiHandler.isBidiRow(n.row,this.lead.row)?(r=this.session.$bidiHandler.getPosLeft(n.column),n.column=Math.round(r/this.session.$bidiHandler.charWidths[0])):r=n.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var i=this.session.screenToDocumentPosition(n.row+e,n.column,r);e!==0&&t===0&&i.row===this.lead.row&&i.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[i.row]&&(i.row>0||e>0)&&i.row++,this.moveCursorTo(i.row,i.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0;var i=this.session.getLine(e);/[\uDC00-\uDFFF]/.test(i.charAt(t))&&i.charAt(t-1)&&(this.lead.row==e&&this.lead.column==t+1?t-=1:t+=1),this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var n=this.getCursor();return o.fromPoints(t,n)}catch(r){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(e.start==undefined){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(u.prototype),t.Selection=u}),define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,n){"use strict";var r=e("./config"),i=2e3,s=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){var n=this.states[t],r=[],i=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",u=[];for(var a=0;a1?f.onMatch=this.$applyToken:f.onMatch=f.token),c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null)}r.length||(s[0]=0,r.push("$")),u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){i=e|0},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;il){var g=e.substring(l,m-v.length);h.type==p?h.value+=g:(h.type&&f.push(h),h={type:p,value:g})}for(var y=0;yi){c>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});while(l1&&n[0]!==r&&n.unshift("#tmp",r),{tokens:f,state:n.length?n:r}},this.reportError=r.reportError}).call(s.prototype),t.Tokenizer=s}),define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/lang"),i=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(!t){for(var n in e)this.$rules[n]=e[n];return}for(var n in e){var r=e[n];for(var i=0;i=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},this.getCurrentTokenRange=function(){var e=this.$rowTokens[this.$tokenIndex],t=this.getCurrentTokenColumn();return new r(this.$row,t,this.$row,t+e.value.length)}}).call(i.prototype),t.TokenIterator=i}),define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c={'"':'"',"'":"'"},h=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},p=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},d=function(e){this.add("braces","insertion",function(t,n,r,i,s){var u=r.getCursorPosition(),a=i.doc.getLine(u.row);if(s=="{"){h(r);var l=r.getSelectionRange(),c=i.doc.getTextRange(l);if(c!==""&&c!=="{"&&r.getWrapBehavioursEnabled())return p(l,c,"{","}");if(d.isSaneInsertion(r,i))return/[\]\}\)]/.test(a[u.column])||r.inMultiSelectMode||e&&e.braces?(d.recordAutoInsert(r,i,"}"),{text:"{}",selection:[1,1]}):(d.recordMaybeInsert(r,i,"{"),{text:"{",selection:[1,1]})}else if(s=="}"){h(r);var v=a.substring(u.column,u.column+1);if(v=="}"){var m=i.$findOpeningBracket("}",{column:u.column+1,row:u.row});if(m!==null&&d.isAutoInsertedClosing(u,a,s))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(s=="\n"||s=="\r\n"){h(r);var g="";d.isMaybeInsertedClosing(u,a)&&(g=o.stringRepeat("}",f.maybeInsertedBrackets),d.clearMaybeInsertedClosing());var v=a.substring(u.column,u.column+1);if(v==="}"){var y=i.findMatchingBracket({row:u.row,column:u.column+1},"}");if(!y)return null;var b=this.$getIndent(i.getLine(y.row))}else{if(!g){d.clearMaybeInsertedClosing();return}var b=this.$getIndent(a)}var w=b+i.getTabString();return{text:"\n"+w+"\n"+b+g,selection:[1,w.length,1,w.length]}}d.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){h(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return p(s,o,"(",")");if(d.isSaneInsertion(n,r))return d.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){h(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&d.isAutoInsertedClosing(u,a,i))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){h(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return p(s,o,"[","]");if(d.isSaneInsertion(n,r))return d.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){h(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&d.isAutoInsertedClosing(u,a,i))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){var s=r.$mode.$quotes||c;if(i.length==1&&s[i]){if(this.lineCommentStart&&this.lineCommentStart.indexOf(i)!=-1)return;h(n);var o=i,u=n.getSelectionRange(),a=r.doc.getTextRange(u);if(a!==""&&(a.length!=1||!s[a])&&n.getWrapBehavioursEnabled())return p(u,a,o,o);if(!a){var f=n.getCursorPosition(),l=r.doc.getLine(f.row),d=l.substring(f.column-1,f.column),v=l.substring(f.column,f.column+1),m=r.getTokenAt(f.row,f.column),g=r.getTokenAt(f.row,f.column+1);if(d=="\\"&&m&&/escape/.test(m.type))return null;var y=m&&/string|escape/.test(m.type),b=!g||/string|escape/.test(g.type),w;if(v==o)w=y!==b,w&&/string\.end/.test(g.type)&&(w=!1);else{if(y&&!b)return null;if(y&&b)return null;var E=r.$mode.tokenRe;E.lastIndex=0;var S=E.test(d);E.lastIndex=0;var x=E.test(d);if(S||x)return null;if(v&&!/[\s;,.})\]\\]/.test(v))return null;w=!0}return{text:w?o+o:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.$mode.$quotes||c,o=r.doc.getTextRange(i);if(!i.isMultiLine()&&s.hasOwnProperty(o)){h(n);var u=r.doc.getLine(i.start.row),a=u.substring(i.start.column+1,i.start.column+2);if(a==o)return i.end.column++,i}})};d.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},d.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},d.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},d.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},d.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},d.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},d.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},d.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(d,i),t.CstyleBehaviour=d}),define("ace/unicode",["require","exports","module"],function(e,t,n){"use strict";var r=[48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2],i=0,s=[];for(var o=0;o2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(ne.length&&(E=e.length)}),u==Infinity&&(u=E,s=!1,o=!1),l&&u%f!=0&&(u=Math.floor(u/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new f(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,a=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new l(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new f(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new l(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);a.start.row==c&&(a.start.column+=h),a.end.row==c&&(a.end.column+=h),t.selection.fromOrientedRange(a)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)if(e[t]){var n=e[t],i=n.prototype.$id,s=r.$modes[i];s||(r.$modes[i]=s=new n),r.$modes[t]||(r.$modes[t]=s),this.$embeds.push(t),this.$modes[t]=s}var o=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;t=0&&t.row=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.columnthis.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e0,r=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4?this.$splitAndapplyLargeDelta(e,2e4):(i(this.$lines,e,t),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length-t+1,i=e.start.row,s=e.start.column;for(var o=0,u=0;o20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,r==-1&&(r=t),s<=r&&n.fireUpdateEvent(s,r)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.lines[t]=null;else if(e.action=="remove")this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.lines.splice.apply(this.lines,r),this.states.splice.apply(this.states,r)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i)}}}).call(o.prototype),t.SearchHighlight=o}),define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.apply(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.row=r)break}if(e.action=="insert"){var f=i-r,l=-t.column+n.column;for(;or)break;a.start.row==r&&a.start.column>=t.column&&(a.start.column!=t.column||!this.$insertRight)&&(a.start.column+=l,a.start.row+=f);if(a.end.row==r&&a.end.column>=t.column){if(a.end.column==t.column&&this.$insertRight)continue;a.end.column==t.column&&l>0&&oa.start.column&&a.end.column==s[o+1].start.column&&(a.end.column-=l),a.end.column+=l,a.end.row+=f}}}else{var f=r-i,l=t.column-n.column;for(;oi)break;if(a.end.rowt.column)a.end.column=t.column,a.end.row=t.row}else a.end.column+=l,a.end.row+=f;else a.end.row>i&&(a.end.row+=f);if(a.start.rowt.column)a.start.column=t.column,a.start.row=t.row}else a.start.column+=l,a.start.row+=f;else a.start.row>i&&(a.start.row+=f)}}if(f!=0&&o=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i=t){u=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?(n=new r(0,0,this.getLength(),0),t=!0):typeof e=="number"?n=new r(e,0,e,this.getLine(e).length):"row"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRangeList(n);if(t)this.removeFolds(i);else{var s=i;while(s.length)this.expandFolds(s),s=this.getFoldsInRangeList(n)}if(i.length)return i},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row),i==null&&(i=0),t==null&&(t=e.end.row),n==null&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(tl)break}while(s&&a.test(s.type));s=i.stepBackward()}else s=i.getCurrentToken();return f.end.row=i.getCurrentTokenRow(),f.end.column=i.getCurrentTokenColumn()+s.value.length-2,f}},this.foldAll=function(e,t,n){n==undefined&&(n=1e5);var r=this.foldWidgets;if(!r)return;t=t||this.getLength(),e=e||0;for(var i=e;i=e){i=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(u){}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle==e)return;this.$foldStyle=e,e=="manual"&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)},this.$setFolding=function(e){if(this.$foldMode==e)return;this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation");if(!e||this.$foldStyle=="manual"){this.foldWidgets=null;return}this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};var r=e-1,i;while(r>=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},r=this.$toggleFoldWidget(e,n);if(!r){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(!this.getFoldWidget)return;var n=this.getFoldWidget(e),r=this.getLine(e),i=n==="end"?-1:1,s=this.getFoldAt(e,i===-1?0:r.length,i);if(s)return t.children||t.all?this.removeFold(s):this.expandFold(s),s;var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()){s=this.getFoldAt(o.start.row,o.start.column,1);if(s&&o.isEqual(s.range))return this.removeFold(s),s}if(t.siblings){var u=this.getParentFoldRangeData(e);if(u.range)var a=u.range.start.row+1,f=u.range.end.row;this.foldAll(a,f,t.all?1e4:0)}else t.children?(f=o?o.end.row:this.getLength(),this.foldAll(e+1,f,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(n)return;var r=this.getParentFoldRangeData(t,!0);n=r.range||r.firstRange;if(n){t=n.start.row;var i=this.getFoldAt(t,this.getLine(t).length,1);i?this.removeFold(i):this.addFold("...",n)}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.foldWidgets[t]=null;else if(e.action=="remove")this.foldWidgets.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,r)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n=="")return null;var r=n.match(/([\(\[\{])|([\)\]\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(a=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}r.implement(this,u),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;e.addSession(this),this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.mergeUndoDeltas=!1},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}else this.$syncInformUndoManager=function(){}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){},add:function(){},addSelection:function(){},startNewGroup:function(){},addSession:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.setNavigateWithinSoftTabs=function(e){this.setOption("navigateWithinSoftTabs",e)},this.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(oe&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var t=this.doc.getAllLines(),n=this.$rowLengthCache,r=0,i=0,s=this.$foldData[i],o=s?s.start.row:Infinity,u=t.length;for(var a=0;ao){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;for(var n=e.length-1;n!=-1;n--){var r=e[n];r.action=="insert"||r.action=="remove"?this.doc.revertDelta(r):r.folds&&this.addFolds(r.folds)}!t&&this.$undoSelect&&(e.selectionBefore?this.selection.fromJSON(e.selectionBefore):this.selection.setRange(this.$getUndoSelection(e,!0))),this.$fromUndo=!1},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;for(var n=0;ne.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}s.end=this.insert(s.start,r);if(i.length){var a=e.start,f=s.start,o=f.row-a.row,u=f.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.doc.insertInLine({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new l(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new l(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+i,u),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode")},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var r=this.$constrainWrapLimit(e,n.min,n.max);return r!=this.$wrapLimit&&r>1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=null;this.$updating=!0;if(u!=0)if(n==="remove"){this[t?"$wrapData":"$rowLengthCache"].splice(s,u);var f=this.$foldData;a=this.getFoldsInRange(e),this.removeFolds(a);var l=this.getFoldLine(i.row),c=0;if(l){l.addRemoveChars(i.row,i.column,r.column-i.column),l.shiftRow(-u);var h=this.getFoldLine(s);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c=i.row&&l.shiftRow(-u)}o=s}else{var p=Array(u);p.unshift(s,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,p);var f=this.$foldData,l=this.getFoldLine(s),c=0;if(l){var v=l.range.compareInside(r.row,r.column);v==0?(l=l.split(r.row,r.column),l&&(l.shiftRow(u),l.addRemoveChars(o,0,i.column-r.column))):v==-1&&(l.addRemoveChars(s,0,i.column-r.column),l.shiftRow(u)),c=f.indexOf(l)+1}for(c;c=s&&l.shiftRow(u)}}else{u=Math.abs(e.start.column-e.end.column),n==="remove"&&(a=this.getFoldsInRange(e),this.removeFolds(a),u=-u);var l=this.getFoldLine(s);l&&l.addRemoveChars(s,r.column,u)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(s,o):this.$updateRowLengthCache(s,o),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var r=this.doc.getAllLines(),i=this.getTabSize(),o=this.$wrapData,u=this.$wrapLimit,a,f,l=e;t=Math.min(t,r.length-1);while(l<=t)f=this.getFoldLine(l,f),f?(a=[],f.walk(function(e,t,i,o){var u;if(e!=null){u=this.$getDisplayTokens(e,a.length),u[0]=n;for(var f=1;fr-b){var w=f+r-b;if(e[w-1]>=c&&e[w]>=c){y(w);continue}if(e[w]==n||e[w]==s){for(w;w!=f-1;w--)if(e[w]==n)break;if(w>f){y(w);continue}w=f+r;for(w;w>2)),f-1);while(w>E&&e[w]E&&e[w]E&&e[w]==a)w--}else while(w>E&&e[w]E){y(++w);continue}w=f+r,e[w]==t&&w--,y(w-b)}return o},this.$getDisplayTokens=function(n,r){var i=[],s;r=r||0;for(var o=0;o39&&u<48||u>57&&u<64?i.push(a):u>=4352&&m(u)?i.push(e,t):i.push(e)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i=4352&&m(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.getRowLineCount=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0)var u=f[l],i=this.$docRowCache[l],h=e>f[c-1];else var h=!c;var p=this.getLength()-1,d=this.getNextFoldLine(i),v=d?d.start.row:Infinity;while(u<=e){a=this.getRowLength(i);if(u+a>e||i>=p)break;u+=a,i++,i>v&&(i=d.end.row+1,d=this.getNextFoldLine(i,d),v=d?d.start.row:Infinity),h&&(this.$docRowCache.push(i),this.$screenRowCache.push(u))}if(d&&d.start.row<=i)r=this.getFoldDisplayLine(d),i=d.start.row;else{if(u+a<=e||i>p)return{row:p,column:this.getLine(p).length};r=this.getLine(i),d=null}var m=0,g=Math.floor(e-u);if(this.$useWrapMode){var y=this.$wrapData[i];y&&(o=y[g],g>0&&y.length&&(m=y.indent,s=y[g-1]||y[y.length-1],r=r.substring(s)))}return n!==undefined&&this.$bidiHandler.isBidiRow(u+g,i,g)&&(t=this.$bidiHandler.offsetToCol(n)),s+=this.$getStringScreenWidth(r,t-m)[1],this.$useWrapMode&&s>=o&&(s=o-1),d?d.idxToPosition(s):{row:i,column:s}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);var v=0;if(this.$useWrapMode){var m=this.$wrapData[i];if(m){var g=0;while(d.length>=m[g])r++,g++;d=d.substring(m[g-1]||0,d.length),v=g>0?m.indent:0}}return{row:r,column:v+this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;ro&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e},this.$setFontMetrics=function(e){if(!this.$enableVarChar)return;this.$getStringScreenWidth=function(t,n,r){if(n===0)return[0,0];n||(n=Infinity),r=r||0;var i,s;for(s=0;sn)break}return[r,s]}},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()},this.isFullWidth=m}.call(d.prototype),e("./edit_session/folding").Folding.call(d.prototype),e("./edit_session/bracket_match").BracketMatch.call(d.prototype),o.defineOptions(d.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;this.$wrap=e;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e=e=="auto"?this.$mode.type!="text":e!="text",e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0)))},initialValue:"auto"},indentedSoftWrap:{set:function(){this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0))},initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize")},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},foldStyle:{set:function(e){this.setFoldStyle(e)},handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId},handlesSet:!0}}),t.EditSession=d}),define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";function u(e,t){function n(e){return/\w/.test(e)||t.regExp?"\\b":""}return n(e[0])+e+n(e[e.length-1])}var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};(function(){this.set=function(e){return i.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var r=null;return n.forEach(function(e,n,i,o){return r=new s(e,n,i,o),n==o&&t.start&&t.start.start&&t.skipCurrent!=0&&r.isEqual(t.start)?(r=null,!1):!0}),r},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],u=t.re;if(t.$isMultiLine){var a=u.length,f=i.length-a,l;e:for(var c=u.offset||0;c<=f;c++){for(var h=0;hv)continue;o.push(l=new s(c,v,c+a-1,m)),a>2&&(c=c+a-2)}}else for(var g=0;gE&&o[h].end.row==n.end.row)h--;o=o.slice(g,h+1);for(g=0,h=o.length;g=u;n--)if(c(n,Number.MAX_VALUE,e))return;if(t.wrap==0)return;for(n=a,u=o.row;n>=u;n--)if(c(n,Number.MAX_VALUE,e))return};else var f=function(e){var n=o.row;if(c(n,o.column,e))return;for(n+=1;n<=a;n++)if(c(n,0,e))return;if(t.wrap==0)return;for(n=u,a=o.row;n<=a;n++)if(c(n,0,e))return};if(t.$isMultiLine)var l=n.length,c=function(t,i,s){var o=r?t-l+1:t;if(o<0)return;var u=e.getLine(o),a=u.search(n[0]);if(!r&&ai)return;if(s(o,a,o+l-1,c))return!0};else if(r)var c=function(t,r,i){var s=e.getLine(t),o=[],u,a=0;n.lastIndex=0;while(u=n.exec(s)){var f=u[0].length;a=u.index;if(!f){if(a>=s.length)break;n.lastIndex=a+=1}if(u.index+f>r)break;o.push(u.index,f)}for(var l=o.length-1;l>=0;l-=2){var c=o[l-1],f=o[l];if(i(t,c,t,c+f))return!0}};else var c=function(t,r,i){var s=e.getLine(t),o,u;n.lastIndex=r;while(u=n.exec(s)){var a=u[0].length;o=u.index;if(i(t,o,t,o+a))return!0;if(!a){n.lastIndex=o+=1;if(o>=s.length)return!1}}};return{forEach:f}}}).call(o.prototype),t.Search=o}),define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function u(e,t){o.call(this,e,t),this.$singleCommand=!1}var r=e("../lib/keys"),i=e("../lib/useragent"),s=r.KEY_MODS;u.prototype=o.prototype,function(){function e(e){return typeof e=="object"&&e.bindKey&&e.bindKey.position||(e.isDefault?-100:0)}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&(typeof e=="string"?e:e.name);e=this.commands[n],t||delete this.commands[n];var r=this.commandKeyBinding;for(var i in r){var s=r[i];if(s==e)delete r[i];else if(Array.isArray(s)){var o=s.indexOf(e);o!=-1&&(s.splice(o,1),s.length==1&&(r[i]=s[0]))}}},this.bindKey=function(e,t,n){typeof e=="object"&&e&&(n==undefined&&(n=e.position),e=e[this.platform]);if(!e)return;if(typeof t=="function")return this.addCommand({exec:t,bindKey:e,name:t.name||e});e.split("|").forEach(function(e){var r="";if(e.indexOf(" ")!=-1){var i=e.split(/\s+/);e=i.pop(),i.forEach(function(e){var t=this.parseKeys(e),n=s[t.hashId]+t.key;r+=(r?" ":"")+n,this._addCommandToBinding(r,"chainKeys")},this),r+=" "}var o=this.parseKeys(e),u=s[o.hashId]+o.key;this._addCommandToBinding(r+u,t,n)},this)},this._addCommandToBinding=function(t,n,r){var i=this.commandKeyBinding,s;if(!n)delete i[t];else if(!i[t]||this.$singleCommand)i[t]=n;else{Array.isArray(i[t])?(s=i[t].indexOf(n))!=-1&&i[t].splice(s,1):i[t]=[i[t]],typeof r!="number"&&(r=e(n));var o=i[t];for(s=0;sr)break}o.splice(s,0,n)}},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(!n)return;if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n});if(typeof n!="object")return;n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=s[t]+n;return this.commandKeyBinding[r]},this.handleKeyboard=function(e,t,n,r){if(r<0)return;var i=s[t]+n,o=this.commandKeyBinding[i];e.$keyChain&&(e.$keyChain+=" "+i,o=this.commandKeyBinding[e.$keyChain]||o);if(o)if(o=="chainKeys"||o[o.length-1]=="chainKeys")return e.$keyChain=e.$keyChain||i,{command:"null"};if(e.$keyChain)if(!!t&&t!=4||n.length!=1){if(t==-1||r>0)e.$keyChain=""}else e.$keyChain=e.$keyChain.slice(0,-i.length-1);return{command:o}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(o.prototype),t.HashHandler=o,t.MultiHashHandler=u}),define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../keyboard/hash_handler").MultiHashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){i.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){if(Array.isArray(e)){for(var r=e.length;r--;)if(this.exec(e[r],t,n))return!0;return!1}typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;if(this.$checkCommandState!=0&&e.isAvailable&&!e.isAvailable(t))return!1;var i={editor:t,command:e,args:n};return i.returnValue=this._emit("exec",i),this._signal("afterExec",i),i.returnValue===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function o(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","F4"),exec:function(e){i.loadModule("./ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Shift-F4"),exec:function(e){i.loadModule("./ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:o("Ctrl-L","Command-L"),exec:function(e,t){typeof t!="number"&&(t=parseInt(prompt("Enter line number:"),10)),isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:o("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:o("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:o("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:o("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:o("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:o("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:o("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:o("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:o("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:o("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:o("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:o("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.$copyWithEmptySelection&&e.selection.isEmpty(),n=t?e.selection.getLineRange():e.selection.getRange();e._emit("cut",n),n.isEmpty()||e.session.remove(n),e.clearSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:o("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",bindKey:o("Ctrl-Shift-Backspace",null),exec:function(e){var t=e.selection.getRange();t.start.column=0,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",bindKey:o("Ctrl-Shift-Delete",null),exec:function(e){var t=e.selection.getRange();t.end.column=Number.MAX_VALUE,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:o("Alt-Shift-X","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:o(null,null),exec:function(e){var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,u=e.session.doc.getTextRange(e.selection.getRange()),a=u.replace(/\n\s*/," ").length,f=e.session.doc.getLine(n.row);for(var l=n.row+1;l<=i.row+1;l++){var c=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(l)));c.length!==0&&(c=" "+c),f+=c}i.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,r=e.selection.rangeList.ranges,i=[];r.length<1&&(r=[e.selection.getRange()]);for(var o=0;o=i.lastRow||r.end.row<=i.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}n=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}var s=this.selection.toJSON();this.curOp.selectionAfter=s,this.$lastSel=this.selection.toJSON(),this.session.getUndoManager().addSelection(s),this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=this.$mergeableCommands,r=t.command&&e.command.name==t.command.name;if(e.command.name=="insertstring"){var i=e.args;this.mergeNextCommand===undefined&&(this.mergeNextCommand=!0),r=r&&this.mergeNextCommand&&(!/\s/.test(i)||/\s/.test(t.args)),this.mergeNextCommand=!0}else r=r&&n.indexOf(e.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(r=!1),r?this.session.mergeUndoDeltas=!0:n.indexOf(e.command.name)!==-1&&(this.sequenceStartTime=Date.now())},this.setKeyboardHandler=function(e,t){if(e&&typeof e=="string"&&e!="ace"){this.$keybindingId=e;var n=this;g.loadModule(["keybinding",e],function(r){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(r&&r.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.off("changeCursor",this.$onCursorChange),n.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.onCursorChange(),this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this}),e&&e.bgTokenizer&&e.bgTokenizer.scheduleStart()},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||i.computedStyle(this.container).fontSize},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=t.findMatchingBracket(e.getCursorPosition());if(n)var r=new p(n.row,n.column,n.row,n.column+1);else if(t.$mode.getMatching)var r=t.$mode.getMatching(e.session);r&&(t.$bracketHighlight=t.addMarker(r,"ace_bracket","text"))},50)},this.$highlightTags=function(){if(this.$highlightTagPending)return;var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=e.getCursorPosition(),r=new y(e.session,n.row,n.column),i=r.getCurrentToken();if(!i||!/\b(?:tag-open|tag-name)/.test(i.type)){t.removeMarker(t.$tagHighlight),t.$tagHighlight=null;return}if(i.type.indexOf("tag-open")!=-1){i=r.stepForward();if(!i)return}var s=i.value,o=0,u=r.stepBackward();if(u.value=="<"){do u=i,i=r.stepForward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="=0)}else{do i=u,u=r.stepBackward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="1)&&(t=!1)}if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column,r=t.end.column,i=e.getLine(t.start.row),s=i.substring(n,r);if(s.length>5e3||!/[\w\d]/.test(s))return;var o=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s}),u=i.substring(n-1,r+1);if(!o.test(u))return;return o},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText(),t=this.session.doc.getNewLineCharacter(),n=!1;if(!e&&this.$copyWithEmptySelection){n=!0;var r=this.selection.getAllRanges();for(var i=0;is.length||i.length<2||!i[1])return this.commands.exec("insertstring",this,t);for(var o=s.length;o--;){var u=s[o];u.isEmpty()||r.remove(u),r.insert(u.start,i[o])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,r=n.getMode(),i=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var s=r.transformAction(n.getState(i.row),"insertion",this,n,e);s&&(e!==s.text&&(this.inVirtualSelectionMode||(this.session.mergeUndoDeltas=!1,this.mergeNextCommand=!1)),e=s.text)}e==" "&&(e=this.session.getTabString());if(!this.selection.isEmpty()){var o=this.getSelectionRange();i=this.session.remove(o),this.clearSelection()}else if(this.session.getOverwrite()&&e.indexOf("\n")==-1){var o=new p.fromPoints(i,i);o.end.column+=e.length,this.session.remove(o)}if(e=="\n"||e=="\r\n"){var u=n.getLine(i.row);if(i.column>u.search(/\S|$/)){var a=u.substr(i.column).search(/\S|$/);n.doc.removeInLine(i.row,i.column,i.column+a)}}this.clearSelection();var f=i.column,l=n.getState(i.row),u=n.getLine(i.row),c=r.checkOutdent(l,u,e),h=n.insert(i,e);s&&s.selection&&(s.selection.length==2?this.selection.setSelectionRange(new p(i.row,f+s.selection[0],i.row,f+s.selection[1])):this.selection.setSelectionRange(new p(i.row+s.selection[0],s.selection[1],i.row+s.selection[2],s.selection[3])));if(n.getDocument().isNewLine(e)){var d=r.getNextLineIndent(l,u.slice(0,i.column),n.getTabString());n.insert({row:i.row+1,column:0},d)}c&&r.autoOutdent(l,n,i.row)},this.onTextInput=function(e,t){if(!t)return this.keyBinding.onTextInput(e);this.startOperation({command:{name:"insertstring"}});var n=this.applyComposition.bind(this,e,t);this.selection.rangeCount?this.forEachSelection(n):n(),this.endOperation()},this.applyComposition=function(e,t){if(t.extendLeft||t.extendRight){var n=this.selection.getRange();n.start.column-=t.extendLeft,n.end.column+=t.extendRight,this.selection.setRange(n),!e&&!n.isEmpty()&&this.remove()}(e||!this.selection.isEmpty())&&this.insert(e,!0);if(t.restoreStart||t.restoreEnd){var n=this.selection.getRange();n.start.column-=t.restoreStart,n.end.column-=t.restoreEnd,this.selection.setRange(n)}},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);if(t.end.column===0){var s=n.getTextRange(t);if(s[s.length-1]=="\n"){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;tt.toLowerCase()?1:0});var i=new p(0,0,0,0);for(var r=e.first;r<=e.last;r++){var s=t.getLine(r);i.start.row=r,i.end.row=r,i.end.column=s.length,t.replace(i,n[r-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new p(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&n=u&&o<=a&&(n=t,f.selection.clearSelection(),f.moveCursorTo(e,u+r),f.selection.selectTo(e,a+r)),u=a});var l=this.$toggleWordPairs,c;for(var h=0;hp+1)break;p=d.last}l--,u=this.session.$moveLines(h,p,t?0:e),t&&e==-1&&(c=l+1);while(c<=l)o[c].moveBy(u,0),c++;t||(u=0),a+=u}i.fromOrientedRange(i.ranges[0]),i.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(e)},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection());var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.selection.selectAll()},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),r=new y(this.session,n.row,n.column),i=r.getCurrentToken(),s=i||r.stepForward();if(!s)return;var o,u=!1,a={},f=n.column-s.start,l,c={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g))for(;f=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.session.unfold(e),this.selection.setSelectionRange(e);var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},this.undo=function(){this.session.getUndoManager().undo(this.session),this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.session.getUndoManager().redo(this.session),this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(!e)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.topwindow.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e)return;delete this.setAutoScrollEditorIntoView,this.off("changeSelection",s),this.renderer.off("afterRender",u),this.renderer.off("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&e!="wide",i.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e))}}.call(w.prototype),g.defineOptions(w.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.textInput.setReadOnly(e),this.$resetCursorStyle()},initialValue:!1},copyWithEmptySelection:{set:function(e){this.textInput.setCopyWithEmptySelection(e)},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.$keybindingId},handlesSet:!0},value:{set:function(e){this.session.setValue(e)},get:function(){return this.getValue()},handlesSet:!0,hidden:!0},session:{set:function(e){this.setSession(e)},get:function(){return this.session},handlesSet:!0,hidden:!0},showLineNumbers:{set:function(e){this.renderer.$gutterLayer.setShowLineNumbers(e),this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER),e&&this.$relativeLineNumbers?E.attach(this):E.detach(this)},initialValue:!0},relativeLineNumbers:{set:function(e){this.$showLineNumbers&&e?E.attach(this):E.detach(this)}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",displayIndentGuides:"renderer",showGutter:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",hasCssTransforms:"renderer",maxPixelHeight:"renderer",useTextareaForIME:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimeout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",navigateWithinSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});var E={getText:function(e,t){return(Math.abs(e.selection.lead.row-t)||t+1+(t<9?"\u00b7":""))+""},getWidth:function(e,t,n){return Math.max(t.toString().length,(n.lastRow+1).toString().length,2)*n.characterWidth},update:function(e,t){t.renderer.$loop.schedule(t.renderer.CHANGE_GUTTER)},attach:function(e){e.renderer.$gutterLayer.$renderer=this,e.on("changeSelection",this.update),this.update(null,e)},detach:function(e){e.renderer.$gutterLayer.$renderer==this&&(e.renderer.$gutterLayer.$renderer=null),e.off("changeSelection",this.update),this.update(null,e)}};t.Editor=w}),define("ace/undomanager",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){for(var n=t;n--;){var r=e[n];if(r&&!r[0].ignore){while(n0){a.row+=i,a.column+=a.row==r.row?s:0;continue}!t&&l<=0&&(a.row=n.row,a.column=n.column,l===0&&(a.bias=1))}}function f(e){return{row:e.row,column:e.column}}function l(e){return{start:f(e.start),end:f(e.end),action:e.action,lines:e.lines.slice()}}function c(e){e=e||this;if(Array.isArray(e))return e.map(c).join("\n");var t="";e.action?(t=e.action=="insert"?"+":"-",t+="["+e.lines+"]"):e.value&&(Array.isArray(e.value)?t=e.value.map(h).join("\n"):t=h(e.value)),e.start&&(t+=h(e));if(e.id||e.rev)t+=" ("+(e.id||e.rev)+")";return t}function h(e){return e.start.row+":"+e.start.column+"=>"+e.end.row+":"+e.end.column}function p(e,t){var n=e.action=="insert",r=t.action=="insert";if(n&&r)if(o(t.start,e.end)>=0)m(t,e,-1);else{if(!(o(t.start,e.start)<=0))return null;m(e,t,1)}else if(n&&!r)if(o(t.start,e.end)>=0)m(t,e,-1);else{if(!(o(t.end,e.start)<=0))return null;m(e,t,-1)}else if(!n&&r)if(o(t.start,e.start)>=0)m(t,e,1);else{if(!(o(t.start,e.start)<=0))return null;m(e,t,1)}else if(!n&&!r)if(o(t.start,e.start)>=0)m(t,e,1);else{if(!(o(t.end,e.start)<=0))return null;m(e,t,-1)}return[t,e]}function d(e,t){for(var n=e.length;n--;)for(var r=0;r=0?m(e,t,-1):o(e.start,t.start)<=0?m(t,e,1):(m(e,s.fromPoints(t.start,e.start),-1),m(t,e,1));else if(!n&&r)o(t.start,e.end)>=0?m(t,e,-1):o(t.start,e.start)<=0?m(e,t,1):(m(t,s.fromPoints(e.start,t.start),-1),m(e,t,1));else if(!n&&!r)if(o(t.start,e.end)>=0)m(t,e,-1);else{if(!(o(t.end,e.start)<=0)){var i,u;return o(e.start,t.start)<0&&(i=e,e=y(e,t.start)),o(e.end,t.end)>0&&(u=y(e,t.end)),g(t.end,e.start,e.end,-1),u&&!i&&(e.lines=u.lines,e.start=u.start,e.end=u.end,u=e),[t,i,u].filter(Boolean)}m(e,t,-1)}return[t,e]}function m(e,t,n){g(e.start,t.start,t.end,n),g(e.end,t.start,t.end,n)}function g(e,t,n,r){e.row==(r==1?t:n).row&&(e.column+=r*(n.column-t.column)),e.row+=r*(n.row-t.row)}function y(e,t){var n=e.lines,r=e.end;e.end=f(t);var i=e.end.row-e.start.row,s=n.splice(i,n.length),o=i?t.column:t.column-e.start.column;n.push(s[0].substring(0,o)),s[0]=s[0].substr(o);var u={start:f(t),end:r,lines:s,action:e.action};return u}function b(e,t){t=l(t);for(var n=e.length;n--;){var r=e[n];for(var i=0;i0},this.canRedo=function(){return this.$redoStack.length>0},this.bookmark=function(e){e==undefined&&(e=this.$rev),this.mark=e},this.isAtBookmark=function(){return this.$rev===this.mark},this.toJSON=function(){},this.fromJSON=function(){},this.hasUndo=this.canUndo,this.hasRedo=this.canRedo,this.isClean=this.isAtBookmark,this.markClean=this.bookmark,this.$prettyPrint=function(e){return e?c(e):c(this.$undoStack)+"\n---\n"+c(this.$redoStack)}}).call(r.prototype);var s=e("./range").Range,o=s.comparePoints,u=s.comparePoints;t.UndoManager=r}),define("ace/layer/lines",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=function(e,t){this.element=e,this.canvasHeight=t||5e5,this.element.style.height=this.canvasHeight*2+"px",this.cells=[],this.cellCache=[],this.$offsetCoefficient=0};(function(){this.moveContainer=function(e){r.translate(this.element,0,-(e.firstRowScreen*e.lineHeight%this.canvasHeight)-e.offset*this.$offsetCoefficient)},this.pageChanged=function(e,t){return Math.floor(e.firstRowScreen*e.lineHeight/this.canvasHeight)!==Math.floor(t.firstRowScreen*t.lineHeight/this.canvasHeight)},this.computeLineTop=function(e,t,n){var r=t.firstRowScreen*t.lineHeight,i=Math.floor(r/this.canvasHeight),s=n.documentToScreenRow(e,0)*t.lineHeight;return s-i*this.canvasHeight},this.computeLineHeight=function(e,t,n){return t.lineHeight*n.getRowLength(e)},this.getLength=function(){return this.cells.length},this.get=function(e){return this.cells[e]},this.shift=function(){this.$cacheCell(this.cells.shift())},this.pop=function(){this.$cacheCell(this.cells.pop())},this.push=function(e){if(Array.isArray(e)){this.cells.push.apply(this.cells,e);var t=r.createFragment(this.element);for(var n=0;ns&&(a=i.end.row+1,i=t.getNextFoldLine(a,i),s=i?i.start.row:Infinity);if(a>r){while(this.$lines.getLength()>u+1)this.$lines.pop();break}o=this.$lines.get(++u),o?o.row=a:(o=this.$lines.createCell(a,e,this.session,f),this.$lines.push(o)),this.$renderCell(o,e,i,a),a++}this._signal("afterRender"),this.$updateGutterWidth(e)},this.$updateGutterWidth=function(e){var t=this.session,n=t.gutterRenderer||this.$renderer,r=t.$firstLineNumber,i=this.$lines.last()?this.$lines.last().text:"";if(this.$fixedWidth||t.$useWrapMode)i=t.getLength()+r-1;var s=n?n.getWidth(t,i,e):i.toString().length*e.characterWidth,o=this.$padding||this.$computePadding();s+=o.left+o.right,s!==this.gutterWidth&&!isNaN(s)&&(this.gutterWidth=s,this.element.parentNode.style.width=this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._signal("changeGutterWidth",s))},this.$updateCursorRow=function(){if(!this.$highlightGutterLine)return;var e=this.session.selection.getCursor();if(this.$cursorRow===e.row)return;this.$cursorRow=e.row},this.updateLineHighlight=function(){if(!this.$highlightGutterLine)return;var e=this.session.selection.cursor.row;this.$cursorRow=e;if(this.$cursorCell&&this.$cursorCell.row==e)return;this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ",""));var t=this.$lines.cells;this.$cursorCell=null;for(var n=0;n=this.$cursorRow){if(r.row>this.$cursorRow){var i=this.session.getFoldLine(this.$cursorRow);if(!(n>0&&i&&i.start.row==t[n-1].row))break;r=t[n-1]}r.element.className="ace_gutter-active-line "+r.element.className,this.$cursorCell=r;break}}},this.scrollLines=function(e){var t=this.config;this.config=e,this.$updateCursorRow();if(this.$lines.pageChanged(t,e))return this.update(e);this.$lines.moveContainer(e);var n=Math.min(e.lastRow+e.gutterOffset,this.session.getLength()-1),r=this.oldLastRow;this.oldLastRow=n;if(!t||r0;i--)this.$lines.shift();if(r>n)for(var i=this.session.getFoldedRowCount(n+1,r);i>0;i--)this.$lines.pop();e.firstRowr&&this.$lines.push(this.$renderLines(e,r+1,n)),this.updateLineHighlight(),this._signal("afterRender"),this.$updateGutterWidth(e)},this.$renderLines=function(e,t,n){var r=[],i=t,s=this.session.getNextFoldLine(i),o=s?s.start.row:Infinity;for(;;){i>o&&(i=s.end.row+1,s=this.session.getNextFoldLine(i,s),o=s?s.start.row:Infinity);if(i>n)break;var u=this.$lines.createCell(i,e,this.session,f);this.$renderCell(u,e,s,i),r.push(u),i++}return r},this.$renderCell=function(e,t,n,i){var s=e.element,o=this.session,u=s.childNodes[0],a=s.childNodes[1],f=o.$firstLineNumber,l=o.$breakpoints,c=o.$decorations,h=o.gutterRenderer||this.$renderer,p=this.$showFoldWidgets&&o.foldWidgets,d=n?n.start.row:Number.MAX_VALUE,v="ace_gutter-cell ";this.$highlightGutterLine&&(i==this.$cursorRow||n&&i=d&&this.$cursorRow<=n.end.row)&&(v+="ace_gutter-active-line ",this.$cursorCell!=e&&(this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","")),this.$cursorCell=e)),l[i]&&(v+=l[i]),c[i]&&(v+=c[i]),this.$annotations[i]&&(v+=this.$annotations[i].className),s.className!=v&&(s.className=v);if(p){var m=p[i];m==null&&(m=p[i]=o.getFoldWidget(i))}if(m){var v="ace_fold-widget ace_"+m;m=="start"&&i==d&&in.right-t.right)return"foldWidgets"}}).call(a.prototype),t.Gutter=a}),define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,n,r){return(e?1:0)|(t?2:0)|(n?4:0)|(r?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.elt=function(e,t){var n=this.i!=-1&&this.element.childNodes[this.i];n?this.i++:(n=document.createElement("div"),this.element.appendChild(n),this.i=-1),n.style.cssText=t,n.className=e},this.update=function(e){if(!e)return;this.config=e,this.i=0;var t;for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var i=r.range.clipRows(e.firstRow,e.lastRow);if(i.isEmpty())continue;i=i.toScreenRange(this.session);if(r.renderer){var s=this.$getTop(i.start.row,e),o=this.$padding+i.start.column*e.characterWidth;r.renderer(t,i,o,s,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,i,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,i,r.clazz,e):i.isMultiLine()?r.type=="text"?this.drawTextMarker(t,i,r.clazz,e):this.drawMultiLineMarker(t,i,r.clazz,e):this.drawSingleLineMarker(t,i,r.clazz+" ace_start"+" ace_br15",e)}if(this.i!=-1)while(this.ip,l==f),s,l==f?0:1,o)},this.drawMultiLineMarker=function(e,t,n,r,i){var s=this.$padding,o=r.lineHeight,u=this.$getTop(t.start.row,r),a=s+t.start.column*r.characterWidth;i=i||"";if(this.session.$bidiHandler.isBidiRow(t.start.row)){var f=t.clone();f.end.row=f.start.row,f.end.column=this.session.getLine(f.start.row).length,this.drawBidiSingleLineMarker(e,f,n+" ace_br1 ace_start",r,null,i)}else this.elt(n+" ace_br1 ace_start","height:"+o+"px;"+"right:0;"+"top:"+u+"px;left:"+a+"px;"+(i||""));if(this.session.$bidiHandler.isBidiRow(t.end.row)){var f=t.clone();f.start.row=f.end.row,f.start.column=0,this.drawBidiSingleLineMarker(e,f,n+" ace_br12",r,null,i)}else{u=this.$getTop(t.end.row,r);var l=t.end.column*r.characterWidth;this.elt(n+" ace_br12","height:"+o+"px;"+"width:"+l+"px;"+"top:"+u+"px;"+"left:"+s+"px;"+(i||""))}o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<=0)return;u=this.$getTop(t.start.row+1,r);var c=(t.start.column?1:0)|(t.end.column?0:8);this.elt(n+(c?" ace_br"+c:""),"height:"+o+"px;"+"right:0;"+"top:"+u+"px;"+"left:"+s+"px;"+(i||""))},this.drawSingleLineMarker=function(e,t,n,r,i,s){if(this.session.$bidiHandler.isBidiRow(t.start.row))return this.drawBidiSingleLineMarker(e,t,n,r,i,s);var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;this.elt(n,"height:"+o+"px;"+"width:"+u+"px;"+"top:"+a+"px;"+"left:"+f+"px;"+(s||""))},this.drawBidiSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=this.$getTop(t.start.row,r),a=this.$padding,f=this.session.$bidiHandler.getSelections(t.start.column,t.end.column);f.forEach(function(e){this.elt(n,"height:"+o+"px;"+"width:"+e.width+(i||0)+"px;"+"top:"+u+"px;"+"left:"+(a+e.left)+"px;"+(s||""))},this)},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),this.elt(n,"height:"+o+"px;"+"top:"+s+"px;"+"left:0;right:0;"+(i||""))},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;this.elt(n,"height:"+o+"px;"+"top:"+s+"px;"+"left:0;right:0;"+(i||""))}}).call(s.prototype),t.Marker=s}),define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("./lines").Lines,u=e("../lib/event_emitter").EventEmitter,a=function(e){this.dom=i,this.element=this.dom.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this),this.$lines=new o(this.element)};(function(){r.implement(this,u),this.EOF_CHAR="\u00b6",this.EOL_CHAR_LF="\u00ac",this.EOL_CHAR_CRLF="\u00a4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2014",this.SPACE_CHAR="\u00b7",this.$padding=0,this.MAX_LINE_LENGTH=1e4,this.$updateEolChar=function(){var e=this.session.doc,t=e.getNewLineCharacter()=="\n"&&e.getNewLineMode()!="windows",n=t?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=n)return this.EOL_CHAR=n,!0},this.setPadding=function(e){this.$padding=e,this.element.style.margin="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;nl&&(u=a.end.row+1,a=this.session.getNextFoldLine(u,a),l=a?a.start.row:Infinity);if(u>i)break;var c=s[o++];if(c){this.dom.removeChildren(c),this.$renderLine(c,u,u==l?a:!1);var h=e.lineHeight*this.session.getRowLength(u)+"px";c.style.height!=h&&(f=!0,c.style.height=h)}u++}if(f)while(o0;i--)this.$lines.shift();if(t.lastRow>e.lastRow)for(var i=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);i>0;i--)this.$lines.pop();e.firstRowt.lastRow&&this.$lines.push(this.$renderLinesFragment(e,t.lastRow+1,e.lastRow))},this.$renderLinesFragment=function(e,t,n){var r=[],s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=this.$lines.createCell(s,e,this.session),f=a.element;this.dom.removeChildren(f),i.setStyle(f.style,"height",this.$lines.computeLineHeight(s,e,this.session)+"px"),i.setStyle(f.style,"top",this.$lines.computeLineTop(s,e,this.session)+"px"),this.$renderLine(f,s,s==u?o:!1),this.$useLineGroups()?f.className="ace_line_group":f.className="ace_line",r.push(a),s++}return r},this.update=function(e){this.$lines.moveContainer(e),this.config=e;var t=e.firstRow,n=e.lastRow,r=this.$lines;while(r.getLength())r.pop();r.push(this.$renderLinesFragment(e,t,n))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var o=this,u=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g,a=this.dom.createFragment(this.element),f,l=0;while(f=u.exec(r)){var c=f[1],h=f[2],p=f[3],d=f[4],v=f[5];if(!o.showInvisibles&&h)continue;var m=l!=f.index?r.slice(l,f.index):"";l=f.index+f[0].length,m&&a.appendChild(this.dom.createTextNode(m,this.element));if(c){var g=o.session.getScreenTabSize(t+f.index);a.appendChild(o.$tabStrings[g].cloneNode(!0)),t+=g-1}else if(h)if(o.showInvisibles){var y=this.dom.createElement("span");y.className="ace_invisible ace_invisible_space",y.textContent=s.stringRepeat(o.SPACE_CHAR,h.length),a.appendChild(y)}else a.appendChild(this.com.createTextNode(h,this.element));else if(p){var y=this.dom.createElement("span");y.className="ace_invisible ace_invisible_space ace_invalid",y.textContent=s.stringRepeat(o.SPACE_CHAR,p.length),a.appendChild(y)}else if(d){var b=o.showInvisibles?o.SPACE_CHAR:"";t+=1;var y=this.dom.createElement("span");y.style.width=o.config.characterWidth*2+"px",y.className=o.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",y.textContent=o.showInvisibles?o.SPACE_CHAR:"",a.appendChild(y)}else if(v){t+=1;var y=i.createElement("span");y.style.width=o.config.characterWidth*2+"px",y.className="ace_cjk",y.textContent=v,a.appendChild(y)}}a.appendChild(this.dom.createTextNode(l?r.slice(l):r,this.element));if(!this.$textToken[n.type]){var w="ace_"+n.type.replace(/\./g," ace_"),y=this.dom.createElement("span");n.type=="fold"&&(y.style.width=n.value.length*this.config.characterWidth+"px"),y.className=w,y.appendChild(a),e.appendChild(y)}else e.appendChild(a);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);if(r<=0||r>=n)return t;if(t[0]==" "){r-=r%this.tabSize;var i=r/this.tabSize;for(var s=0;s=o)u=this.$renderToken(a,u,l,c.substring(0,o-r)),c=c.substring(o-r),r=o,a=this.$createLineElement(),e.appendChild(a),a.appendChild(this.dom.createTextNode(s.stringRepeat("\u00a0",n.indent),this.element)),i++,u=0,o=n[i]||Number.MAX_VALUE;c.length!=0&&(r+=c.length,u=this.$renderToken(a,u,l,c))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;sthis.MAX_LINE_LENGTH)return this.$renderOverflowMessage(e,n,r,i);n=this.$renderToken(e,n,r,i)}},this.$renderOverflowMessage=function(e,t,n,r){this.$renderToken(e,t,n,r.slice(0,this.MAX_LINE_LENGTH-t));var i=this.dom.createElement("span");i.className="ace_inline_button ace_keyword ace_toggle_wrap",i.style.position="absolute",i.style.right="0",i.textContent="",e.appendChild(i)},this.$renderLine=function(e,t,n){!n&&n!=0&&(n=this.session.getFoldLine(t));if(n)var r=this.$getFoldLineTokens(t,n);else var r=this.session.getTokens(t);var i=e;if(r.length){var s=this.session.getRowSplitData(t);if(s&&s.length){this.$renderWrappedLine(e,r,s);var i=e.lastChild}else{var i=e;this.$useLineGroups()&&(i=this.$createLineElement(),e.appendChild(i)),this.$renderSimpleLine(i,r)}}else this.$useLineGroups()&&(i=this.$createLineElement(),e.appendChild(i));if(this.showInvisibles&&i){n&&(t=n.end.row);var o=this.dom.createElement("span");o.className="ace_invisible ace_invisible_eol",o.textContent=t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,i.appendChild(o)}},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.lengthn-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(sn?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){}}).call(a.prototype),t.Text=a}),define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateOpacity.bind(this)};(function(){this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)r.setStyle(t[n].style,"opacity",e?"":"0")},this.$startCssAnimation=function(){var e=this.cursors;for(var t=e.length;t--;)e[t].style.animationDuration=this.blinkInterval+"ms";setTimeout(function(){r.addCssClass(this.element,"ace_animate-blinking")}.bind(this))},this.$stopCssAnimation=function(){r.removeCssClass(this.element,"ace_animate-blinking")},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.$stopCssAnimation(),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);if(!this.isBlinking||!this.blinkInterval||!this.isVisible){this.$stopCssAnimation();return}this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));if(r.HAS_CSS_ANIMATION)this.$startCssAnimation();else{var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+(this.session.$bidiHandler.isBidiRow(n.row,e.row)?this.session.$bidiHandler.getPosLeft(n.column):n.column*this.config.characterWidth),i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.isCursorInView=function(e,t){return e.top>=0&&e.tope.height+e.offset||o.top<0)&&n>1)continue;var u=this.cursors[i++]||this.addCursor(),a=u.style;this.drawCursor?this.drawCursor(u,o,e,t[n],this.session):this.isCursorInView(o,e)?(r.setStyle(a,"display","block"),r.translate(u,o.left,o.top),r.setStyle(a,"width",Math.round(e.characterWidth)+"px"),r.setStyle(a,"height",e.lineHeight+"px")):r.setStyle(a,"display","none")}while(this.cursors.length>i)this.removeCursor();var f=this.session.getOverwrite();this.$setOverwrite(f),this.$pixelPos=o,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(i.prototype),t.Cursor=i}),define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=32768,a=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){r.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1}}).call(a.prototype);var f=function(e,t){a.call(this,e),this.scrollTop=0,this.scrollHeight=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px",this.$minWidth=0};r.inherits(f,a),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){this.scrollTop=this.element.scrollTop;if(this.coeff!=1){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=this.setScrollHeight=function(e){this.scrollHeight=e,e>u?(this.coeff=u/e,e=u):this.coeff!=1&&(this.coeff=1),this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)}}.call(f.prototype);var l=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};r.inherits(l,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(l.prototype),t.ScrollBar=f,t.ScrollBarV=f,t.ScrollBarH=l,t.VScrollBar=f,t.HScrollBar=l}),define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.$recursionLimit=2,this.window=t||window;var n=this;this._flush=function(e){n.pending=!1;var t=n.changes;t&&(r.blockIdle(100),n.changes=0,n.onRender(t));if(n.changes){if(n.$recursionLimit--<0)return;n.schedule()}else n.$recursionLimit=2}};(function(){this.schedule=function(e){this.changes=this.changes|e,this.changes&&!this.pending&&(r.nextFrame(this._flush),this.pending=!0)},this.clear=function(e){var t=this.changes;return this.changes=0,t}}).call(i.prototype),t.RenderLoop=i}),define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/event"),u=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,f=256,l=typeof ResizeObserver=="function",c=200,h=t.FontMetrics=function(e){this.el=i.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=i.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=i.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),this.$measureNode.innerHTML=s.stringRepeat("X",f),this.$characterSize={width:0,height:0},l?this.$addObserver():this.checkForSizeChanges()};(function(){r.implement(this,a),this.$characterSize={width:0,height:0},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",u.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(e){e===undefined&&(e=this.$measureSizes());if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$addObserver=function(){var e=this;this.$observer=new window.ResizeObserver(function(t){var n=t[0].contentRect;e.checkForSizeChanges({height:n.height,width:n.width/f})}),this.$observer.observe(this.$measureNode)},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=o.onIdle(function t(){e.checkForSizeChanges(),o.onIdle(t,500)},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(e){var t={height:(e||this.$measureNode).clientHeight,width:(e||this.$measureNode).clientWidth/f};return t.width===0||t.height===0?null:t},this.$measureCharWidth=function(e){this.$main.innerHTML=s.stringRepeat(e,f);var t=this.$main.getBoundingClientRect();return t.width/f},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$observer&&this.$observer.disconnect(),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)},this.$getZoom=function e(t){return t?(window.getComputedStyle(t).zoom||1)*e(t.parentElement):1},this.$initTransformMeasureNodes=function(){var e=function(e,t){return["div",{style:"position: absolute;top:"+e+"px;left:"+t+"px;"}]};this.els=i.buildDom([e(0,0),e(c,0),e(0,c),e(c,c)],this.el)},this.transformCoordinates=function(e,t){function r(e,t,n){var r=e[1]*t[0]-e[0]*t[1];return[(-t[1]*n[0]+t[0]*n[1])/r,(+e[1]*n[0]-e[0]*n[1])/r]}function i(e,t){return[e[0]-t[0],e[1]-t[1]]}function s(e,t){return[e[0]+t[0],e[1]+t[1]]}function o(e,t){return[e*t[0],e*t[1]]}function u(e){var t=e.getBoundingClientRect();return[t.left,t.top]}if(e){var n=this.$getZoom(this.el);e=o(1/n,e)}this.els||this.$initTransformMeasureNodes();var a=u(this.els[0]),f=u(this.els[1]),l=u(this.els[2]),h=u(this.els[3]),p=r(i(h,f),i(h,l),i(s(f,l),s(h,a))),d=o(1+p[0],i(f,a)),v=o(1+p[1],i(l,a));if(t){var m=t,g=p[0]*m[0]/c+p[1]*m[1]/c+1,y=s(o(m[0],d),o(m[1],v));return s(o(1/g/c,y),a)}var b=i(e,a),w=r(i(d,o(p[0],b)),i(v,o(p[1],b)),b);return o(c,w)}}).call(h.prototype)}),define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./config"),o=e("./layer/gutter").Gutter,u=e("./layer/marker").Marker,a=e("./layer/text").Text,f=e("./layer/cursor").Cursor,l=e("./scrollbar").HScrollBar,c=e("./scrollbar").VScrollBar,h=e("./renderloop").RenderLoop,p=e("./layer/font_metrics").FontMetrics,d=e("./lib/event_emitter").EventEmitter,v='.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;text-align: left;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;box-sizing: border-box;min-width: 100%;contain: style size layout;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;contain: style size layout;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {position: absolute;top: 0;left: 0;right: 0;padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {contain: strict;position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;contain: strict;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: transparent;color: inherit;z-index: 1000;opacity: 1;}.ace_composition_placeholder { color: transparent }.ace_composition_marker { border-bottom: 1px solid;position: absolute;border-radius: 0;margin-top: 1px;}[ace_nocontext=true] {transform: none!important;filter: none!important;perspective: none!important;clip-path: none!important;mask : none!important;contain: none!important;perspective: none!important;mix-blend-mode: initial!important;z-index: auto;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;height: 1000000px;contain: style size layout;}.ace_text-layer {font: inherit !important;position: absolute;height: 1000000px;width: 1000000px;contain: style size layout;}.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {contain: style size layout;position: absolute;top: 0;left: 0;right: 0;}.ace_hidpi .ace_text-layer,.ace_hidpi .ace_gutter-layer,.ace_hidpi .ace_content,.ace_hidpi .ace_gutter {contain: strict;will-change: transform;}.ace_hidpi .ace_text-layer > .ace_line, .ace_hidpi .ace_text-layer > .ace_line_group {contain: strict;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {transition: opacity 0.18s;}.ace_animate-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: step-end;animation-name: blink-ace-animate;animation-iteration-count: infinite;}.ace_animate-blinking.ace_smooth-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: ease-in-out;animation-name: blink-ace-animate-smooth;}@keyframes blink-ace-animate {from, to { opacity: 1; }60% { opacity: 0; }}@keyframes blink-ace-animate-smooth {from, to { opacity: 1; }45% { opacity: 1; }60% { opacity: 0; }85% { opacity: 0; }}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;box-sizing: border-box;}.ace_line .ace_fold {box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_inline_button {border: 1px solid lightgray;display: inline-block;margin: -1px 8px;padding: 0 5px;pointer-events: auto;cursor: pointer;}.ace_inline_button:hover {border-color: gray;background: rgba(200,200,200,0.2);display: inline-block;pointer-events: auto;}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}',m=e("./lib/useragent"),g=m.isIE;i.importCssString(v,"ace_editor.css");var y=function(e,t){var n=this;this.container=e||i.createElement("div"),i.addCssClass(this.container,"ace_editor"),i.HI_DPI&&i.addCssClass(this.container,"ace_hidpi"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.$gutter.setAttribute("aria-hidden",!0),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new o(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new u(this.content);var r=this.$textLayer=new a(this.content);this.canvas=r.element,this.$markerFront=new u(this.content),this.$cursorLayer=new f(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new c(this.container,this),this.scrollBarH=new l(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new p(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.margin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$keepTextAreaAtCursor=!m.isIOS,this.$loop=new h(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),s.resetOptions(this),s._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,d),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e);if(!e)return;this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)},this.updateLines=function(e,t,n){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow)return;this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,r){if(this.resizing>2)return;this.resizing>0?this.resizing++:this.resizing=e?1:0;var i=this.container;r||(r=i.clientHeight||i.scrollHeight),n||(n=i.clientWidth||i.scrollWidth);var s=this.$updateCachedSize(e,t,n,r);if(!this.$size.scrollerHeight||!n&&!r)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null},this.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var s=0,o=this.$size,u={width:o.width,height:o.height,scrollerHeight:o.scrollerHeight,scrollerWidth:o.scrollerWidth};r&&(e||o.height!=r)&&(o.height=r,s|=this.CHANGE_SIZE,o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",s|=this.CHANGE_SCROLL);if(n&&(e||o.width!=n)){s|=this.CHANGE_SIZE,o.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,i.setStyle(this.scrollBarH.element.style,"left",t+"px"),i.setStyle(this.scroller.style,"left",t+this.margin.left+"px"),o.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()-this.margin.h),i.setStyle(this.$gutter.style,"left",this.margin.left+"px");var a=this.scrollBarV.getWidth()+"px";i.setStyle(this.scrollBarH.element.style,"right",a),i.setStyle(this.scroller.style,"right",a),i.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight());if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)s|=this.CHANGE_FULL}return o.$dirty=!n||!r,s&&this._signal("resize",u),s},this.onGutterResize=function(e){var t=this.$showGutter?e:0;t!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,t,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):this.$computeLayerConfig()},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e),this.session.$bidiHandler.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){var e=this.textarea.style;if(!this.$keepTextAreaAtCursor){i.translate(this.textarea,-100,0);return}var t=this.$cursorLayer.$pixelPos;if(!t)return;var n=this.$composition;n&&n.markerRange&&(t=this.$cursorLayer.getPixelPosition(n.markerRange.start,!0));var r=this.layerConfig,s=t.top,o=t.left;s-=r.offset;var u=n&&n.useTextareaForIME?this.lineHeight:g?0:1;if(s<0||s>r.height-u){i.translate(this.textarea,0,0);return}var a=1;if(!n)s+=this.lineHeight;else if(n.useTextareaForIME){var f=this.textarea.value;a=this.characterWidth*this.session.$getStringScreenWidth(f)[0],u+=2}else s+=this.lineHeight+2;o-=this.scrollLeft,o>this.$size.scrollerWidth-a&&(o=this.$size.scrollerWidth-a),o+=this.gutterWidth+this.margin.left,i.setStyle(e,"height",u+"px"),i.setStyle(e,"width",a+"px"),i.translate(this.textarea,Math.min(o,this.$size.scrollerWidth-a),Math.min(s,this.$size.height-u))},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow,n=this.session.documentToScreenRow(t,0)*e.lineHeight;return n-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,r){var i=this.scrollMargin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,i.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-i.top),this.updateFull()},this.setMargin=function(e,t,n,r){var i=this.margin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){this.$changes&&(e|=this.$changes,this.$changes=0);if(!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t){this.$changes|=e;return}if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender"),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){e|=this.$computeLayerConfig()|this.$loop.clear();if(n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var r=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;r>0&&(this.scrollTop=r,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig()|this.$loop.clear())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),i.translate(this.content,-this.scrollLeft,-n.offset);var s=n.width+2*this.$padding+"px",o=n.minHeight+"px";i.setStyle(this.content.style,"width",s),i.setStyle(this.content.style,"height",o)}e&this.CHANGE_H_SCROLL&&(i.translate(this.content,-this.scrollLeft,-n.offset),this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left");if(e&this.CHANGE_FULL){this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this._signal("afterRender");return}if(e&this.CHANGE_SCROLL){e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&(e&this.CHANGE_GUTTER||e&this.CHANGE_LINES?this.$gutterLayer.update(n):this.$gutterLayer.scrollLines(n)),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this._signal("afterRender");return}e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER?this.$showGutter&&this.$gutterLayer.update(n):e&this.CHANGE_CURSOR&&this.$highlightGutterLine&&this.$gutterLayer.updateLineHighlight(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var r=n<=2*this.lineHeight,i=!r&&e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||i!=this.$vScroll){i!=this.$vScroll&&(this.$vScroll=i,this.scrollBarV.setVisible(i));var s=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,s,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.$getLongestLine(),o=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-s-2*this.$padding<0),u=this.$horizScroll!==o;u&&(this.$horizScroll=o,this.scrollBarH.setVisible(o));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var f=t.scrollerHeight+this.lineHeight,l=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=l;var c=this.scrollMargin;this.session.setScrollTop(Math.max(-c.top,Math.min(this.scrollTop,i-t.scrollerHeight+c.bottom))),this.session.setScrollLeft(Math.max(-c.left,Math.min(this.scrollLeft,s+2*this.$padding-t.scrollerWidth+c.right)));var h=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+l<0||this.scrollTop>c.top),p=a!==h;p&&(this.$vScroll=h,this.scrollBarV.setVisible(h));var d=this.scrollTop%this.lineHeight,v=Math.ceil(f/this.lineHeight)-1,m=Math.max(0,Math.round((this.scrollTop-d)/this.lineHeight)),g=m+v,y,b,w=this.lineHeight;m=e.screenToDocumentRow(m,0);var E=e.getFoldLine(m);E&&(m=E.start.row),y=e.documentToScreenRow(m,0),b=e.getRowLength(m)*w,g=Math.min(e.screenToDocumentRow(g,0),e.getLength()-1),f=t.scrollerHeight+e.getRowLength(g)*w+b,d=this.scrollTop-y*w;var S=0;if(this.layerConfig.width!=s||u)S=this.CHANGE_H_SCROLL;if(u||p)S=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),p&&(s=this.$getLongestLine());return this.layerConfig={width:s,padding:this.$padding,firstRow:m,firstRowScreen:y,lastRow:g,lineHeight:w,characterWidth:this.characterWidth,minHeight:f,maxHeight:i,offset:d,gutterOffset:w?Math.max(0,Math.ceil((d+t.height-t.scrollerHeight)/w)):0,height:this.$size.scrollerHeight},this.session.$bidiHandler&&this.session.$bidiHandler.setContentWidth(s-this.$padding),S},this.$updateLines=function(){if(!this.$changedLines)return;var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(tthis.$textLayer.MAX_LINE_LENGTH&&(e=this.$textLayer.MAX_LINE_LENGTH+30),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(e*this.characterWidth))},this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},this.addGutterDecoration=function(e,t){this.$gutterLayer.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){this.$gutterLayer.removeGutterDecoration(e,t)},this.updateBreakpoints=function(e){this.$loop.schedule(this.CHANGE_GUTTER)},this.setAnnotations=function(e){this.$gutterLayer.setAnnotations(e),this.$loop.schedule(this.CHANGE_GUTTER)},this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},this.hideCursor=function(){this.$cursorLayer.hideCursor()},this.showCursor=function(){this.$cursorLayer.showCursor()},this.scrollSelectionIntoView=function(e,t,n){this.scrollCursorIntoView(e,n),this.scrollCursorIntoView(t,n)},this.scrollCursorIntoView=function(e,t,n){if(this.$size.scrollerHeight===0)return;var r=this.$cursorLayer.getPixelPosition(e),i=r.left,s=r.top,o=n&&n.top||0,u=n&&n.bottom||0,a=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;a+o>s?(t&&a+o>s+this.lineHeight&&(s-=t*this.$size.scrollerHeight),s===0&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):a+this.$size.scrollerHeight-ui?(i=1-this.scrollMargin.top)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom)return!0;if(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left)return!0;if(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},this.pixelToScreenCoordinates=function(e,t){var n;if(this.$hasCssTransforms){n={top:0,left:0};var r=this.$fontMetrics.transformCoordinates([e,t]);e=r[1]-this.gutterWidth-this.margin.left,t=r[0]}else n=this.scroller.getBoundingClientRect();var i=e+this.scrollLeft-n.left-this.$padding,s=i/this.characterWidth,o=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),u=this.$blockCursor?Math.floor(s):Math.round(s);return{row:o,column:u,side:s-u>0?1:-1,offsetX:i}},this.screenToTextCoordinates=function(e,t){var n;if(this.$hasCssTransforms){n={top:0,left:0};var r=this.$fontMetrics.transformCoordinates([e,t]);e=r[1]-this.gutterWidth-this.margin.left,t=r[0]}else n=this.scroller.getBoundingClientRect();var i=e+this.scrollLeft-n.left-this.$padding,s=i/this.characterWidth,o=this.$blockCursor?Math.floor(s):Math.round(s),u=Math.floor((t+this.scrollTop-n.top)/this.lineHeight);return this.session.screenToDocumentPosition(u,Math.max(o,0),i)},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+(this.session.$bidiHandler.isBidiRow(r.row,e)?this.session.$bidiHandler.getPosLeft(r.column):Math.round(r.column*this.characterWidth)),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition=e,e.cssText||(e.cssText=this.textarea.style.cssText,e.keepTextAreaAtCursor=this.$keepTextAreaAtCursor),e.useTextareaForIME=this.$useTextareaForIME,this.$useTextareaForIME?(this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor(),this.$cursorLayer.element.style.display="none"):e.markerId=this.session.addMarker(e.markerRange,"ace_composition_marker","text")},this.setCompositionText=function(e){var t=this.session.selection.cursor;this.addToken(e,"composition_placeholder",t.row,t.column),this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;this.$composition.markerId&&this.session.removeMarker(this.$composition.markerId),i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null,this.$cursorLayer.element.style.display=""},this.addToken=function(e,t,n,r){var i=this.session;i.bgTokenizer.lines[n]=null;var s={type:t,value:e},o=i.getTokens(n);if(r==null)o.push(s);else{var u=0;for(var a=0;a50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})}}).call(f.prototype);var l=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var r=null,i=!1,u=Object.create(s),a=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){a.messageBuffer.push(e),r&&(i?setTimeout(f):f())},this.setEmitSync=function(e){i=e};var f=function(){var e=a.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};u.postMessage=function(e){a.onMessage({data:e})},u.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},u.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){r=new e[n](u);while(a.messageBuffer.length)f()})};l.prototype=f.prototype,t.UIWorkerClient=l,t.WorkerClient=f,t.createWorker=a}),define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var i=this.pos;i.$insertRight=!0,i.detach(),i.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);r.$insertRight=!0,r.detach(),e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1)})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,s=t.start.column-this.pos.column;this.updateAnchors(e),i&&(this.length+=n);if(i&&!this.session.$fromUndo)if(e.action==="insert")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.insertMergedLines(a,e.lines)}else if(e.action==="remove")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.remove(new r(a.row,a.column,a.row,a.column-n))}this.$updating=!1,this.updateMarkers()},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(this.$updating)return;var e=this,t=this.session,n=function(n,i){t.removeMarker(n.markerId),n.markerId=t.addMarker(new r(n.row,n.column,n.row,n.column+e.length),i,null,!1)};n(this.pos,this.mainClass);for(var i=this.others.length;i--;)n(this.others[i],this.othersClass)},this.onCursorChange=function(e){if(this.$updating||!this.session)return;var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(this.$undoStackDepth===-1)return;var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth;for(var n=0;n1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length&&this.$onRemoveRange(e)},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._signal("removeRange",{ranges:e}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.cursor),s=this.session.documentToScreenPosition(this.anchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)g--;if(g>0){var y=0;while(r[y].isEmpty())y++}for(var b=g;b>=y;b--)r[b].isEmpty()&&r.splice(b,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection")},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=n&&n.keepOrder,i=n==1||n&&n.$byLines,o=this.session,u=this.selection,a=u.rangeList,f=(r?u:a).ranges,l;if(!f.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var c=u._eventRegistry;u._eventRegistry={};var h=new s(o);this.inVirtualSelectionMode=!0;for(var p=f.length;p--;){if(i)while(p>0&&f[p].start.row==f[p-1].end.row)p--;h.fromOrientedRange(f[p]),h.index=p,this.selection=o.selection=h;var d=e.exec?e.exec(this,t||{}):e(this,t||{});!l&&d!==undefined&&(l=d),h.toOrientedRange(f[p])}h.detach(),this.selection=o.selection=u,this.inVirtualSelectionMode=!1,u._eventRegistry=c,u.mergeOverlappingRanges(),u.ranges[0]&&u.fromOrientedRange(u.ranges[0]);var v=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),v&&v.from==v.to&&this.renderer.animateScrolling(v.from),l},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;r0);u<0&&(u=0),f>=c&&(f=c-1)}var p=this.session.removeFullLines(u,f);p=this.$reAlignText(p,l),this.session.insert({row:u,column:0},p.join("\n")+"\n"),l||(o.start.column=0,o.end.column=p[p.length-1].length),this.selection.setRange(o)}else{s.forEach(function(e){t.substractPoint(e.cursor)});var d=0,v=Infinity,m=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>d&&(d=n.column),io?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=d,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e,t){function u(e){return a.stringRepeat(" ",e)}function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var n=!0,r=!0,i,s,o;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?i==null?(i=t[1].length,s=t[2].length,o=t[3].length,t):(i+s+o!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(n=!1),i>t[1].length&&(i=t[1].length),st[3].length&&(o=t[3].length),t):[e]}).map(t?f:n?r?l:f:c)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../../range").Range,i=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?"start":t=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var i=/\S/,s=e.getLine(t),o=s.search(i);if(o==-1)return;var u=n||s.length,a=e.getLength(),f=t,l=t;while(++tf){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=e.getFoldWidget(u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}',t.$id="ace/theme/textmate";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./range").Range;(function(){this.getRowLength=function(e){var t;return this.lineWidgets?t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:t=0,!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets))},this.detach=function(e){var t=this.editor;if(!t)return;this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})},this.updateOnFold=function(e,t){var n=t.lineWidgets;if(!n||!e.action)return;var r=e.data,i=r.start.row,s=r.end.row,o=e.action=="add";for(var u=i+1;u0&&!r[i])i--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=i;o<=s;o++){var u=r[o];if(!u||!u.el)continue;if(u.hidden){u.el.style.top=-100-(u.pixelHeight||0)+"px";continue}u._inDocument||(u._inDocument=!0,t.container.appendChild(u.el));var a=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;u.coverLine||(a+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=a-n.offset+"px";var f=u.coverGutter?0:t.gutterWidth;u.fixedWidth||(f-=t.scrollLeft),u.el.style.left=f+"px",u.fullWidth&&u.screenWidth&&(u.el.style.minWidth=n.width+2*n.padding+"px"),u.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(o.prototype),t.LineWidgets=o}),define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[s]);if(o>0)r=s+1;else{if(!(o<0))return s;i=s-1}}return-(r+1)}function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.length)return;var i=o(r,{row:t,column:-1},s.comparePoints);i<0&&(i=-i-1),i>=r.length?i=n>0?0:r.length-1:i===0&&n<0&&(i=r.length-1);var u=r[i];if(!u||!n)return;if(u.row===t){do u=r[i+=n];while(u&&u.row===t);if(!u)return r.slice()}var a=[];t=u.row;do a[n<0?"unshift":"push"](u),u=r[i+=n];while(u&&u.row==t);return a.length&&a}var r=e("../line_widgets").LineWidgets,i=e("../lib/dom"),s=e("../range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var s=e.getCursorPosition(),o=s.row,a=n.widgetManager.getWidgetsAtRow(o).filter(function(e){return e.type=="errorMarker"})[0];a?a.destroy():o-=t;var f=u(n,o,t),l;if(f){var c=f[0];s.column=(c.pos&&typeof c.column!="number"?c.pos.sc:c.column)||0,s.row=c.row,l=e.renderer.$gutterLayer.$annotations[s.row]}else{if(a)return;l={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveToPosition(s);var h={row:s.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div"),type:"errorMarker"},p=h.el.appendChild(i.createElement("div")),d=h.el.appendChild(i.createElement("div"));d.className="error_widget_arrow "+l.className;var v=e.renderer.$cursorLayer.getPixelPosition(s).left;d.style.left=v+e.renderer.gutterWidth-5+"px",h.el.className="error_widget_wrapper",p.className="error_widget "+l.className,p.innerHTML=l.text.join("
"),p.appendChild(i.createElement("div"));var m=function(e,t,n){if(t===0&&(n==="esc"||n==="return"))return h.destroy(),{command:"null"}};h.destroy=function(){if(e.$mouseHandler.isMousePressed)return;e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(h),e.off("changeSelection",h.destroy),e.off("changeSession",h.destroy),e.off("mouseup",h.destroy),e.off("change",h.destroy)},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",h.destroy),e.on("changeSession",h.destroy),e.on("mouseup",h.destroy),e.on("change",h.destroy),e.session.widgetManager.addLineWidget(h),h.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:h.el.offsetHeight})},i.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),i=e("./lib/event"),s=e("./range").Range,o=e("./editor").Editor,u=e("./edit_session").EditSession,a=e("./undomanager").UndoManager,f=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,typeof define=="function"&&(t.define=define),t.edit=function(e,n){if(typeof e=="string"){var s=e;e=document.getElementById(s);if(!e)throw new Error("ace.edit can't find div #"+s)}if(e&&e.env&&e.env.editor instanceof o)return e.env.editor;var u="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;u=a.value,e=r.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(u=e.textContent,e.innerHTML="");var l=t.createEditSession(u),c=new o(new f(e),l,n),h={document:l,editor:c,onResize:c.resize.bind(c,null)};return a&&(h.textarea=a),i.addListener(window,"resize",h.onResize),c.on("destroy",function(){i.removeListener(window,"resize",h.onResize),h.editor.container.env=null}),c.container.env=c.env=h,c},t.createEditSession=function(e,t){var n=new u(e,t);return n.setUndoManager(new a),n},t.Range=s,t.Editor=o,t.EditSession=u,t.UndoManager=a,t.VirtualRenderer=f,t.version="1.4.2"}); (function() { - window.require(["ace/ace"], function(a) { - if (a) { - a.config.init(true); - a.define = window.define; - } - if (!window.ace) - window.ace = a; - for (var key in a) if (a.hasOwnProperty(key)) - window.ace[key] = a[key]; - window.ace["default"] = window.ace; - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = window.ace; - } - }); -})(); diff --git a/static/MarkDown-Editor/plugins/js/bootstrap.min.js b/static/MarkDown-Editor/plugins/js/bootstrap.min.js deleted file mode 100644 index a788865..0000000 --- a/static/MarkDown-Editor/plugins/js/bootstrap.min.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (C) Federico Zivolo 2020 - Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT). - */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=e.ownerDocument.defaultView,n=o.getComputedStyle(e,null);return t?n[t]:n}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll|overlay)/.test(r+s+p)?e:n(o(e))}function i(e){return e&&e.referenceNode?e.referenceNode:e}function r(e){return 11===e?re:10===e?pe:re||pe}function p(e){if(!e)return document.documentElement;for(var o=r(10)?document.body:null,n=e.offsetParent||null;n===o&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TH','TD','TABLE'].indexOf(n.nodeName)&&'static'===t(n,'position')?p(n):n:e?e.ownerDocument.documentElement:document.documentElement}function s(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||p(e.firstElementChild)===e)}function d(e){return null===e.parentNode?e:d(e.parentNode)}function a(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,n=o?e:t,i=o?t:e,r=document.createRange();r.setStart(n,0),r.setEnd(i,0);var l=r.commonAncestorContainer;if(e!==l&&t!==l||n.contains(i))return s(l)?l:p(l);var f=d(e);return f.host?a(f.host,t):a(e,d(t).host)}function l(e){var t=1=o.clientWidth&&n>=o.clientHeight}),l=0a[e]&&!t.escapeWithReference&&(n=Q(f[o],a[e]-('right'===e?f.width:f.height))),ae({},o,n)}};return l.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';f=le({},f,m[t](e))}),e.offsets.popper=f,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,n=t.reference,i=e.placement.split('-')[0],r=Z,p=-1!==['top','bottom'].indexOf(i),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]r(n[s])&&(e.offsets.popper[d]=r(n[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var n;if(!K(e.instance.modifiers,'arrow','keepTogether'))return e;var i=o.element;if('string'==typeof i){if(i=e.instance.popper.querySelector(i),!i)return e;}else if(!e.instance.popper.contains(i))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',c=a?'bottom':'right',u=S(i)[l];d[c]-us[c]&&(e.offsets.popper[m]+=d[m]+u-s[c]),e.offsets.popper=g(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f]),E=parseFloat(w['border'+f+'Width']),v=b-e.offsets.popper[m]-y-E;return v=ee(Q(s[l]-u,v),0),e.arrowElement=i,e.offsets.arrow=(n={},ae(n,m,$(v)),ae(n,h,''),n),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(W(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=v(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),n=e.placement.split('-')[0],i=T(n),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case ce.FLIP:p=[n,i];break;case ce.CLOCKWISE:p=G(n);break;case ce.COUNTERCLOCKWISE:p=G(n,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(n!==s||p.length===d+1)return e;n=e.placement.split('-')[0],i=T(n);var a=e.offsets.popper,l=e.offsets.reference,f=Z,m='left'===n&&f(a.right)>f(l.left)||'right'===n&&f(a.left)f(l.top)||'bottom'===n&&f(a.top)f(o.right),g=f(a.top)f(o.bottom),b='left'===n&&h||'right'===n&&c||'top'===n&&g||'bottom'===n&&u,w=-1!==['top','bottom'].indexOf(n),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u),E=!!t.flipVariationsByContent&&(w&&'start'===r&&c||w&&'end'===r&&h||!w&&'start'===r&&u||!w&&'end'===r&&g),v=y||E;(m||b||v)&&(e.flipped=!0,(m||b)&&(n=p[d+1]),v&&(r=z(r)),e.placement=n+(r?'-'+r:''),e.offsets.popper=le({},e.offsets.popper,C(e.instance.popper,e.offsets.reference,e.placement)),e=P(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport',flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],n=e.offsets,i=n.popper,r=n.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return i[p?'left':'top']=r[o]-(s?i[p?'width':'height']:0),e.placement=T(t),e.offsets.popper=g(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!K(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=D(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.rightwindow.devicePixelRatio||!fe),c='bottom'===o?'top':'bottom',g='right'===n?'left':'right',b=B('transform');if(d='bottom'==c?'HTML'===l.nodeName?-l.clientHeight+h.bottom:-f.height+h.bottom:h.top,s='right'==g?'HTML'===l.nodeName?-l.clientWidth+h.right:-f.width+h.right:h.left,a&&b)m[b]='translate3d('+s+'px, '+d+'px, 0)',m[c]=0,m[g]=0,m.willChange='transform';else{var w='bottom'==c?-1:1,y='right'==g?-1:1;m[c]=d*w,m[g]=s*y,m.willChange=c+', '+g}var E={"x-placement":e.placement};return e.attributes=le({},E,e.attributes),e.styles=le({},m,e.styles),e.arrowStyles=le({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return V(e.instance.popper,e.styles),j(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&V(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,o,n,i){var r=L(i,t,e,o.positionFixed),p=O(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),V(t,{position:o.positionFixed?'fixed':'absolute'}),o},gpuAcceleration:void 0}}},ge}); - - -/*! - * Bootstrap v4.5.2 (https://getbootstrap.com/) - * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap={},t.jQuery,t.Popper)}(this,(function(t,e,n){"use strict";function i(t,e){for(var n=0;n=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};a.jQueryDetection(),e.fn.emulateTransitionEnd=r,e.event.special[a.TRANSITION_END]={bindType:"transitionend",delegateType:"transitionend",handle:function(t){if(e(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var l="alert",c=e.fn[l],h=function(){function t(t){this._element=t}var n=t.prototype;return n.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},n.dispose=function(){e.removeData(this._element,"bs.alert"),this._element=null},n._getRootElement=function(t){var n=a.getSelectorFromElement(t),i=!1;return n&&(i=document.querySelector(n)),i||(i=e(t).closest(".alert")[0]),i},n._triggerCloseEvent=function(t){var n=e.Event("close.bs.alert");return e(t).trigger(n),n},n._removeElement=function(t){var n=this;if(e(t).removeClass("show"),e(t).hasClass("fade")){var i=a.getTransitionDurationFromElement(t);e(t).one(a.TRANSITION_END,(function(e){return n._destroyElement(t,e)})).emulateTransitionEnd(i)}else this._destroyElement(t)},n._destroyElement=function(t){e(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(n){return this.each((function(){var i=e(this),o=i.data("bs.alert");o||(o=new t(this),i.data("bs.alert",o)),"close"===n&&o[n](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},o(t,null,[{key:"VERSION",get:function(){return"4.5.2"}}]),t}();e(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',h._handleDismiss(new h)),e.fn[l]=h._jQueryInterface,e.fn[l].Constructor=h,e.fn[l].noConflict=function(){return e.fn[l]=c,h._jQueryInterface};var u=e.fn.button,d=function(){function t(t){this._element=t}var n=t.prototype;return n.toggle=function(){var t=!0,n=!0,i=e(this._element).closest('[data-toggle="buttons"]')[0];if(i){var o=this._element.querySelector('input:not([type="hidden"])');if(o){if("radio"===o.type)if(o.checked&&this._element.classList.contains("active"))t=!1;else{var s=i.querySelector(".active");s&&e(s).removeClass("active")}t&&("checkbox"!==o.type&&"radio"!==o.type||(o.checked=!this._element.classList.contains("active")),e(o).trigger("change")),o.focus(),n=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(n&&this._element.setAttribute("aria-pressed",!this._element.classList.contains("active")),t&&e(this._element).toggleClass("active"))},n.dispose=function(){e.removeData(this._element,"bs.button"),this._element=null},t._jQueryInterface=function(n){return this.each((function(){var i=e(this).data("bs.button");i||(i=new t(this),e(this).data("bs.button",i)),"toggle"===n&&i[n]()}))},o(t,null,[{key:"VERSION",get:function(){return"4.5.2"}}]),t}();e(document).on("click.bs.button.data-api",'[data-toggle^="button"]',(function(t){var n=t.target,i=n;if(e(n).hasClass("btn")||(n=e(n).closest(".btn")[0]),!n||n.hasAttribute("disabled")||n.classList.contains("disabled"))t.preventDefault();else{var o=n.querySelector('input:not([type="hidden"])');if(o&&(o.hasAttribute("disabled")||o.classList.contains("disabled")))return void t.preventDefault();("LABEL"!==i.tagName||o&&"checkbox"!==o.type)&&d._jQueryInterface.call(e(n),"toggle")}})).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',(function(t){var n=e(t.target).closest(".btn")[0];e(n).toggleClass("focus",/^focus(in)?$/.test(t.type))})),e(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var n=t.prototype;return n.next=function(){this._isSliding||this._slide("next")},n.nextWhenVisible=function(){!document.hidden&&e(this._element).is(":visible")&&"hidden"!==e(this._element).css("visibility")&&this.next()},n.prev=function(){this._isSliding||this._slide("prev")},n.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(a.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},n.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},n.to=function(t){var n=this;this._activeElement=this._element.querySelector(".active.carousel-item");var i=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)e(this._element).one("slid.bs.carousel",(function(){return n.to(t)}));else{if(i===t)return this.pause(),void this.cycle();var o=t>i?"next":"prev";this._slide(o,this._items[t])}},n.dispose=function(){e(this._element).off(g),e.removeData(this._element,"bs.carousel"),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},n._getConfig=function(t){return t=s({},p,t),a.typeCheckConfig(f,t,_),t},n._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},n._addEventListeners=function(){var t=this;this._config.keyboard&&e(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&e(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},n._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var n=function(e){t._pointerEvent&&v[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},i=function(e){t._pointerEvent&&v[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};e(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(e(this._element).on("pointerdown.bs.carousel",(function(t){return n(t)})),e(this._element).on("pointerup.bs.carousel",(function(t){return i(t)})),this._element.classList.add("pointer-event")):(e(this._element).on("touchstart.bs.carousel",(function(t){return n(t)})),e(this._element).on("touchmove.bs.carousel",(function(e){return function(e){e.originalEvent.touches&&e.originalEvent.touches.length>1?t.touchDeltaX=0:t.touchDeltaX=e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),e(this._element).on("touchend.bs.carousel",(function(t){return i(t)})))}},n._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},n._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},n._getItemByDirection=function(t,e){var n="next"===t,i="prev"===t,o=this._getItemIndex(e),s=this._items.length-1;if((i&&0===o||n&&o===s)&&!this._config.wrap)return e;var r=(o+("prev"===t?-1:1))%this._items.length;return-1===r?this._items[this._items.length-1]:this._items[r]},n._triggerSlideEvent=function(t,n){var i=this._getItemIndex(t),o=this._getItemIndex(this._element.querySelector(".active.carousel-item")),s=e.Event("slide.bs.carousel",{relatedTarget:t,direction:n,from:o,to:i});return e(this._element).trigger(s),s},n._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var n=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));e(n).removeClass("active");var i=this._indicatorsElement.children[this._getItemIndex(t)];i&&e(i).addClass("active")}},n._slide=function(t,n){var i,o,s,r=this,l=this._element.querySelector(".active.carousel-item"),c=this._getItemIndex(l),h=n||l&&this._getItemByDirection(t,l),u=this._getItemIndex(h),d=Boolean(this._interval);if("next"===t?(i="carousel-item-left",o="carousel-item-next",s="left"):(i="carousel-item-right",o="carousel-item-prev",s="right"),h&&e(h).hasClass("active"))this._isSliding=!1;else if(!this._triggerSlideEvent(h,s).isDefaultPrevented()&&l&&h){this._isSliding=!0,d&&this.pause(),this._setActiveIndicatorElement(h);var f=e.Event("slid.bs.carousel",{relatedTarget:h,direction:s,from:c,to:u});if(e(this._element).hasClass("slide")){e(h).addClass(o),a.reflow(h),e(l).addClass(i),e(h).addClass(i);var g=parseInt(h.getAttribute("data-interval"),10);g?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=g):this._config.interval=this._config.defaultInterval||this._config.interval;var m=a.getTransitionDurationFromElement(l);e(l).one(a.TRANSITION_END,(function(){e(h).removeClass(i+" "+o).addClass("active"),e(l).removeClass("active "+o+" "+i),r._isSliding=!1,setTimeout((function(){return e(r._element).trigger(f)}),0)})).emulateTransitionEnd(m)}else e(l).removeClass("active"),e(h).addClass("active"),this._isSliding=!1,e(this._element).trigger(f);d&&this.cycle()}},t._jQueryInterface=function(n){return this.each((function(){var i=e(this).data("bs.carousel"),o=s({},p,e(this).data());"object"==typeof n&&(o=s({},o,n));var r="string"==typeof n?n:o.slide;if(i||(i=new t(this,o),e(this).data("bs.carousel",i)),"number"==typeof n)i.to(n);else if("string"==typeof r){if("undefined"==typeof i[r])throw new TypeError('No method named "'+r+'"');i[r]()}else o.interval&&o.ride&&(i.pause(),i.cycle())}))},t._dataApiClickHandler=function(n){var i=a.getSelectorFromElement(this);if(i){var o=e(i)[0];if(o&&e(o).hasClass("carousel")){var r=s({},e(o).data(),e(this).data()),l=this.getAttribute("data-slide-to");l&&(r.interval=!1),t._jQueryInterface.call(e(o),r),l&&e(o).data("bs.carousel").to(l),n.preventDefault()}}},o(t,null,[{key:"VERSION",get:function(){return"4.5.2"}},{key:"Default",get:function(){return p}}]),t}();e(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",b._dataApiClickHandler),e(window).on("load.bs.carousel.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),n=0,i=t.length;n0&&(this._selector=r,this._triggerArray.push(s))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var n=t.prototype;return n.toggle=function(){e(this._element).hasClass("show")?this.hide():this.show()},n.show=function(){var n,i,o=this;if(!this._isTransitioning&&!e(this._element).hasClass("show")&&(this._parent&&0===(n=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof o._config.parent?t.getAttribute("data-parent")===o._config.parent:t.classList.contains("collapse")}))).length&&(n=null),!(n&&(i=e(n).not(this._selector).data("bs.collapse"))&&i._isTransitioning))){var s=e.Event("show.bs.collapse");if(e(this._element).trigger(s),!s.isDefaultPrevented()){n&&(t._jQueryInterface.call(e(n).not(this._selector),"hide"),i||e(n).data("bs.collapse",null));var r=this._getDimension();e(this._element).removeClass("collapse").addClass("collapsing"),this._element.style[r]=0,this._triggerArray.length&&e(this._triggerArray).removeClass("collapsed").attr("aria-expanded",!0),this.setTransitioning(!0);var l="scroll"+(r[0].toUpperCase()+r.slice(1)),c=a.getTransitionDurationFromElement(this._element);e(this._element).one(a.TRANSITION_END,(function(){e(o._element).removeClass("collapsing").addClass("collapse show"),o._element.style[r]="",o.setTransitioning(!1),e(o._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(c),this._element.style[r]=this._element[l]+"px"}}},n.hide=function(){var t=this;if(!this._isTransitioning&&e(this._element).hasClass("show")){var n=e.Event("hide.bs.collapse");if(e(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension();this._element.style[i]=this._element.getBoundingClientRect()[i]+"px",a.reflow(this._element),e(this._element).addClass("collapsing").removeClass("collapse show");var o=this._triggerArray.length;if(o>0)for(var s=0;s0},i._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=s({},e.offsets,t._config.offset(e.offsets,t._element)||{}),e}:e.offset=this._config.offset,e},i._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),s({},t,this._config.popperConfig)},t._jQueryInterface=function(n){return this.each((function(){var i=e(this).data("bs.dropdown");if(i||(i=new t(this,"object"==typeof n?n:null),e(this).data("bs.dropdown",i)),"string"==typeof n){if("undefined"==typeof i[n])throw new TypeError('No method named "'+n+'"');i[n]()}}))},t._clearMenus=function(n){if(!n||3!==n.which&&("keyup"!==n.type||9===n.which))for(var i=[].slice.call(document.querySelectorAll('[data-toggle="dropdown"]')),o=0,s=i.length;o0&&r--,40===n.which&&rdocument.documentElement.clientHeight;i||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");var o=a.getTransitionDurationFromElement(this._dialog);e(this._element).off(a.TRANSITION_END),e(this._element).one(a.TRANSITION_END,(function(){t._element.classList.remove("modal-static"),i||e(t._element).one(a.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,o)})).emulateTransitionEnd(o),this._element.focus()}else this.hide()},n._showElement=function(t){var n=this,i=e(this._element).hasClass("fade"),o=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),e(this._dialog).hasClass("modal-dialog-scrollable")&&o?o.scrollTop=0:this._element.scrollTop=0,i&&a.reflow(this._element),e(this._element).addClass("show"),this._config.focus&&this._enforceFocus();var s=e.Event("shown.bs.modal",{relatedTarget:t}),r=function(){n._config.focus&&n._element.focus(),n._isTransitioning=!1,e(n._element).trigger(s)};if(i){var l=a.getTransitionDurationFromElement(this._dialog);e(this._dialog).one(a.TRANSITION_END,r).emulateTransitionEnd(l)}else r()},n._enforceFocus=function(){var t=this;e(document).off("focusin.bs.modal").on("focusin.bs.modal",(function(n){document!==n.target&&t._element!==n.target&&0===e(t._element).has(n.target).length&&t._element.focus()}))},n._setEscapeEvent=function(){var t=this;this._isShown?e(this._element).on("keydown.dismiss.bs.modal",(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||e(this._element).off("keydown.dismiss.bs.modal")},n._setResizeEvent=function(){var t=this;this._isShown?e(window).on("resize.bs.modal",(function(e){return t.handleUpdate(e)})):e(window).off("resize.bs.modal")},n._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){e(document.body).removeClass("modal-open"),t._resetAdjustments(),t._resetScrollbar(),e(t._element).trigger("hidden.bs.modal")}))},n._removeBackdrop=function(){this._backdrop&&(e(this._backdrop).remove(),this._backdrop=null)},n._showBackdrop=function(t){var n=this,i=e(this._element).hasClass("fade")?"fade":"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",i&&this._backdrop.classList.add(i),e(this._backdrop).appendTo(document.body),e(this._element).on("click.dismiss.bs.modal",(function(t){n._ignoreBackdropClick?n._ignoreBackdropClick=!1:t.target===t.currentTarget&&n._triggerBackdropTransition()})),i&&a.reflow(this._backdrop),e(this._backdrop).addClass("show"),!t)return;if(!i)return void t();var o=a.getTransitionDurationFromElement(this._backdrop);e(this._backdrop).one(a.TRANSITION_END,t).emulateTransitionEnd(o)}else if(!this._isShown&&this._backdrop){e(this._backdrop).removeClass("show");var s=function(){n._removeBackdrop(),t&&t()};if(e(this._element).hasClass("fade")){var r=a.getTransitionDurationFromElement(this._backdrop);e(this._backdrop).one(a.TRANSITION_END,s).emulateTransitionEnd(r)}else s()}else t&&t()},n._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},n._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},n._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:L,popperConfig:null},K={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},X=function(){function t(t,e){if("undefined"==typeof n)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var i=t.prototype;return i.enable=function(){this._isEnabled=!0},i.disable=function(){this._isEnabled=!1},i.toggleEnabled=function(){this._isEnabled=!this._isEnabled},i.toggle=function(t){if(this._isEnabled)if(t){var n=this.constructor.DATA_KEY,i=e(t.currentTarget).data(n);i||(i=new this.constructor(t.currentTarget,this._getDelegateConfig()),e(t.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(e(this.getTipElement()).hasClass("show"))return void this._leave(null,this);this._enter(null,this)}},i.dispose=function(){clearTimeout(this._timeout),e.removeData(this.element,this.constructor.DATA_KEY),e(this.element).off(this.constructor.EVENT_KEY),e(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&e(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},i.show=function(){var t=this;if("none"===e(this.element).css("display"))throw new Error("Please use show on visible elements");var i=e.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){e(this.element).trigger(i);var o=a.findShadowRoot(this.element),s=e.contains(null!==o?o:this.element.ownerDocument.documentElement,this.element);if(i.isDefaultPrevented()||!s)return;var r=this.getTipElement(),l=a.getUID(this.constructor.NAME);r.setAttribute("id",l),this.element.setAttribute("aria-describedby",l),this.setContent(),this.config.animation&&e(r).addClass("fade");var c="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,h=this._getAttachment(c);this.addAttachmentClass(h);var u=this._getContainer();e(r).data(this.constructor.DATA_KEY,this),e.contains(this.element.ownerDocument.documentElement,this.tip)||e(r).appendTo(u),e(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new n(this.element,r,this._getPopperConfig(h)),e(r).addClass("show"),"ontouchstart"in document.documentElement&&e(document.body).children().on("mouseover",null,e.noop);var d=function(){t.config.animation&&t._fixTransition();var n=t._hoverState;t._hoverState=null,e(t.element).trigger(t.constructor.Event.SHOWN),"out"===n&&t._leave(null,t)};if(e(this.tip).hasClass("fade")){var f=a.getTransitionDurationFromElement(this.tip);e(this.tip).one(a.TRANSITION_END,d).emulateTransitionEnd(f)}else d()}},i.hide=function(t){var n=this,i=this.getTipElement(),o=e.Event(this.constructor.Event.HIDE),s=function(){"show"!==n._hoverState&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),e(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),t&&t()};if(e(this.element).trigger(o),!o.isDefaultPrevented()){if(e(i).removeClass("show"),"ontouchstart"in document.documentElement&&e(document.body).children().off("mouseover",null,e.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,e(this.tip).hasClass("fade")){var r=a.getTransitionDurationFromElement(i);e(i).one(a.TRANSITION_END,s).emulateTransitionEnd(r)}else s();this._hoverState=""}},i.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},i.isWithContent=function(){return Boolean(this.getTitle())},i.addAttachmentClass=function(t){e(this.getTipElement()).addClass("bs-tooltip-"+t)},i.getTipElement=function(){return this.tip=this.tip||e(this.config.template)[0],this.tip},i.setContent=function(){var t=this.getTipElement();this.setElementContent(e(t.querySelectorAll(".tooltip-inner")),this.getTitle()),e(t).removeClass("fade show")},i.setElementContent=function(t,n){"object"!=typeof n||!n.nodeType&&!n.jquery?this.config.html?(this.config.sanitize&&(n=Q(n,this.config.whiteList,this.config.sanitizeFn)),t.html(n)):t.text(n):this.config.html?e(n).parent().is(t)||t.empty().append(n):t.text(e(n).text())},i.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},i._getPopperConfig=function(t){var e=this;return s({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},i._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=s({},e.offsets,t.config.offset(e.offsets,t.element)||{}),e}:e.offset=this.config.offset,e},i._getContainer=function(){return!1===this.config.container?document.body:a.isElement(this.config.container)?e(this.config.container):e(document).find(this.config.container)},i._getAttachment=function(t){return V[t.toUpperCase()]},i._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(n){if("click"===n)e(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==n){var i="hover"===n?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,o="hover"===n?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;e(t.element).on(i,t.config.selector,(function(e){return t._enter(e)})).on(o,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},e(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=s({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},i._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},i._enter=function(t,n){var i=this.constructor.DATA_KEY;(n=n||e(t.currentTarget).data(i))||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),e(t.currentTarget).data(i,n)),t&&(n._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e(n.getTipElement()).hasClass("show")||"show"===n._hoverState?n._hoverState="show":(clearTimeout(n._timeout),n._hoverState="show",n.config.delay&&n.config.delay.show?n._timeout=setTimeout((function(){"show"===n._hoverState&&n.show()}),n.config.delay.show):n.show())},i._leave=function(t,n){var i=this.constructor.DATA_KEY;(n=n||e(t.currentTarget).data(i))||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),e(t.currentTarget).data(i,n)),t&&(n._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState="out",n.config.delay&&n.config.delay.hide?n._timeout=setTimeout((function(){"out"===n._hoverState&&n.hide()}),n.config.delay.hide):n.hide())},i._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},i._getConfig=function(t){var n=e(this.element).data();return Object.keys(n).forEach((function(t){-1!==M.indexOf(t)&&delete n[t]})),"number"==typeof(t=s({},this.constructor.Default,n,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),a.typeCheckConfig(B,t,this.constructor.DefaultType),t.sanitize&&(t.template=Q(t.template,t.whiteList,t.sanitizeFn)),t},i._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},i._cleanTipClass=function(){var t=e(this.getTipElement()),n=t.attr("class").match(U);null!==n&&n.length&&t.removeClass(n.join(""))},i._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},i._fixTransition=function(){var t=this.getTipElement(),n=this.config.animation;null===t.getAttribute("x-placement")&&(e(t).removeClass("fade"),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},t._jQueryInterface=function(n){return this.each((function(){var i=e(this).data("bs.tooltip"),o="object"==typeof n&&n;if((i||!/dispose|hide/.test(n))&&(i||(i=new t(this,o),e(this).data("bs.tooltip",i)),"string"==typeof n)){if("undefined"==typeof i[n])throw new TypeError('No method named "'+n+'"');i[n]()}}))},o(t,null,[{key:"VERSION",get:function(){return"4.5.2"}},{key:"Default",get:function(){return z}},{key:"NAME",get:function(){return B}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return K}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return W}}]),t}();e.fn[B]=X._jQueryInterface,e.fn[B].Constructor=X,e.fn[B].noConflict=function(){return e.fn[B]=H,X._jQueryInterface};var Y="popover",$=e.fn[Y],J=new RegExp("(^|\\s)bs-popover\\S+","g"),G=s({},X.Default,{placement:"right",trigger:"click",content:"",template:''}),Z=s({},X.DefaultType,{content:"(string|element|function)"}),tt={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},et=function(t){var n,i;function s(){return t.apply(this,arguments)||this}i=t,(n=s).prototype=Object.create(i.prototype),n.prototype.constructor=n,n.__proto__=i;var r=s.prototype;return r.isWithContent=function(){return this.getTitle()||this._getContent()},r.addAttachmentClass=function(t){e(this.getTipElement()).addClass("bs-popover-"+t)},r.getTipElement=function(){return this.tip=this.tip||e(this.config.template)[0],this.tip},r.setContent=function(){var t=e(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var n=this._getContent();"function"==typeof n&&(n=n.call(this.element)),this.setElementContent(t.find(".popover-body"),n),t.removeClass("fade show")},r._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},r._cleanTipClass=function(){var t=e(this.getTipElement()),n=t.attr("class").match(J);null!==n&&n.length>0&&t.removeClass(n.join(""))},s._jQueryInterface=function(t){return this.each((function(){var n=e(this).data("bs.popover"),i="object"==typeof t?t:null;if((n||!/dispose|hide/.test(t))&&(n||(n=new s(this,i),e(this).data("bs.popover",n)),"string"==typeof t)){if("undefined"==typeof n[t])throw new TypeError('No method named "'+t+'"');n[t]()}}))},o(s,null,[{key:"VERSION",get:function(){return"4.5.2"}},{key:"Default",get:function(){return G}},{key:"NAME",get:function(){return Y}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return tt}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Z}}]),s}(X);e.fn[Y]=et._jQueryInterface,e.fn[Y].Constructor=et,e.fn[Y].noConflict=function(){return e.fn[Y]=$,et._jQueryInterface};var nt="scrollspy",it=e.fn[nt],ot={offset:10,method:"auto",target:""},st={offset:"number",method:"string",target:"(string|element)"},rt=function(){function t(t,n){var i=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(n),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,e(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return i._process(t)})),this.refresh(),this._process()}var n=t.prototype;return n.refresh=function(){var t=this,n=this._scrollElement===this._scrollElement.window?"offset":"position",i="auto"===this._config.method?n:this._config.method,o="position"===i?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var n,s=a.getSelectorFromElement(t);if(s&&(n=document.querySelector(s)),n){var r=n.getBoundingClientRect();if(r.width||r.height)return[e(n)[i]().top+o,s]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},n.dispose=function(){e.removeData(this._element,"bs.scrollspy"),e(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},n._getConfig=function(t){if("string"!=typeof(t=s({},ot,"object"==typeof t&&t?t:{})).target&&a.isElement(t.target)){var n=e(t.target).attr("id");n||(n=a.getUID(nt),e(t.target).attr("id",n)),t.target="#"+n}return a.typeCheckConfig(nt,t,st),t},n._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},n._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},n._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},n._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t li > .active":".active";i=(i=e.makeArray(e(o).find(r)))[i.length-1]}var l=e.Event("hide.bs.tab",{relatedTarget:this._element}),c=e.Event("show.bs.tab",{relatedTarget:i});if(i&&e(i).trigger(l),e(this._element).trigger(c),!c.isDefaultPrevented()&&!l.isDefaultPrevented()){s&&(n=document.querySelector(s)),this._activate(this._element,o);var h=function(){var n=e.Event("hidden.bs.tab",{relatedTarget:t._element}),o=e.Event("shown.bs.tab",{relatedTarget:i});e(i).trigger(n),e(t._element).trigger(o)};n?this._activate(n,n.parentNode,h):h()}}},n.dispose=function(){e.removeData(this._element,"bs.tab"),this._element=null},n._activate=function(t,n,i){var o=this,s=(!n||"UL"!==n.nodeName&&"OL"!==n.nodeName?e(n).children(".active"):e(n).find("> li > .active"))[0],r=i&&s&&e(s).hasClass("fade"),l=function(){return o._transitionComplete(t,s,i)};if(s&&r){var c=a.getTransitionDurationFromElement(s);e(s).removeClass("show").one(a.TRANSITION_END,l).emulateTransitionEnd(c)}else l()},n._transitionComplete=function(t,n,i){if(n){e(n).removeClass("active");var o=e(n.parentNode).find("> .dropdown-menu .active")[0];o&&e(o).removeClass("active"),"tab"===n.getAttribute("role")&&n.setAttribute("aria-selected",!1)}if(e(t).addClass("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),a.reflow(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&e(t.parentNode).hasClass("dropdown-menu")){var s=e(t).closest(".dropdown")[0];if(s){var r=[].slice.call(s.querySelectorAll(".dropdown-toggle"));e(r).addClass("active")}t.setAttribute("aria-expanded",!0)}i&&i()},t._jQueryInterface=function(n){return this.each((function(){var i=e(this),o=i.data("bs.tab");if(o||(o=new t(this),i.data("bs.tab",o)),"string"==typeof n){if("undefined"==typeof o[n])throw new TypeError('No method named "'+n+'"');o[n]()}}))},o(t,null,[{key:"VERSION",get:function(){return"4.5.2"}}]),t}();e(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),lt._jQueryInterface.call(e(this),"show")})),e.fn.tab=lt._jQueryInterface,e.fn.tab.Constructor=lt,e.fn.tab.noConflict=function(){return e.fn.tab=at,lt._jQueryInterface};var ct=e.fn.toast,ht={animation:"boolean",autohide:"boolean",delay:"number"},ut={animation:!0,autohide:!0,delay:500},dt=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var n=t.prototype;return n.show=function(){var t=this,n=e.Event("show.bs.toast");if(e(this._element).trigger(n),!n.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var i=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),e(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),a.reflow(this._element),this._element.classList.add("showing"),this._config.animation){var o=a.getTransitionDurationFromElement(this._element);e(this._element).one(a.TRANSITION_END,i).emulateTransitionEnd(o)}else i()}},n.hide=function(){if(this._element.classList.contains("show")){var t=e.Event("hide.bs.toast");e(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},n.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),e(this._element).off("click.dismiss.bs.toast"),e.removeData(this._element,"bs.toast"),this._element=null,this._config=null},n._getConfig=function(t){return t=s({},ut,e(this._element).data(),"object"==typeof t&&t?t:{}),a.typeCheckConfig("toast",t,this.constructor.DefaultType),t},n._setListeners=function(){var t=this;e(this._element).on("click.dismiss.bs.toast",'[data-dismiss="toast"]',(function(){return t.hide()}))},n._close=function(){var t=this,n=function(){t._element.classList.add("hide"),e(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var i=a.getTransitionDurationFromElement(this._element);e(this._element).one(a.TRANSITION_END,n).emulateTransitionEnd(i)}else n()},n._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(n){return this.each((function(){var i=e(this),o=i.data("bs.toast");if(o||(o=new t(this,"object"==typeof n&&n),i.data("bs.toast",o)),"string"==typeof n){if("undefined"==typeof o[n])throw new TypeError('No method named "'+n+'"');o[n](this)}}))},o(t,null,[{key:"VERSION",get:function(){return"4.5.2"}},{key:"DefaultType",get:function(){return ht}},{key:"Default",get:function(){return ut}}]),t}();e.fn.toast=dt._jQueryInterface,e.fn.toast.Constructor=dt,e.fn.toast.noConflict=function(){return e.fn.toast=ct,dt._jQueryInterface},t.Alert=h,t.Button=d,t.Carousel=b,t.Collapse=C,t.Dropdown=I,t.Modal=P,t.Popover=et,t.Scrollspy=rt,t.Tab=lt,t.Toast=dt,t.Tooltip=X,t.Util=a,Object.defineProperty(t,"__esModule",{value:!0})})); diff --git a/static/MarkDown-Editor/plugins/js/emojis.min.js b/static/MarkDown-Editor/plugins/js/emojis.min.js deleted file mode 100644 index 1833588..0000000 --- a/static/MarkDown-Editor/plugins/js/emojis.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/* Added Manually by: Summon Agus */ -var emojis = [':yellow_heart:', ':blue_heart:', ':purple_heart:', ':heart:', ':green_heart:', ':broken_heart:', ':heartbeat:', ':heartpulse:', ':two_hearts:', ':revolving_hearts:', ':cupid:', ':sparkling_heart:', ':sparkles:', ':star:', ':star2:', ':dizzy:', ':boom:', ':collision:', ':anger:', ':exclamation:', ':question:', ':grey_exclamation:', ':grey_question:', ':zzz:', ':dash:', ':sweat_drops:', ':notes:', ':musical_note:', ':fire:', ':thumbsup:', ':-1:', ':thumbsdown:', ':ok_hand:', ':punch:', ':facepunch:', ':fist:', ':v:', ':wave:', ':hand:', ':raised_hand:', ':open_hands:', ':point_up:', ':point_down:', ':point_left:', ':point_right:', ':raised_hands:', ':pray:', ':point_up_2:', ':clap:', ':muscle:', ':nail_care:', ':sunny:', ':umbrella:', ':cloud:', ':snowflake:', ':zap:', ':cyclone:', ':foggy:', ':ocean:', ':bouquet:', ':cherry_blossom:', ':tulip:', ':four_leaf_clover:', ':rose:', ':sunflower:', ':hibiscus:', ':maple_leaf:', ':leaves:', ':fallen_leaf:', ':herb:', ':mushroom:', ':cactus:', ':palm_tree:', ':evergreen_tree:', ':deciduous_tree:', ':chestnut:', ':seedling:', ':blossom:', ':ear_of_rice:', ':shell:', ':globe_with_meridians:', ':new_moon:', ':waxing_crescent_moon:', ':first_quarter_moon:', ':waxing_gibbous_moon:', ':full_moon:', ':waning_gibbous_moon:', ':last_quarter_moon:', ':waning_crescent_moon:', ':last_quarter_moon_with_face:', ':first_quarter_moon_with_face:', ':crescent_moon:', ':earth_africa:', ':earth_americas:', ':earth_asia:', ':volcano:', ':milky_way:', ':partly_sunny:', ':bamboo:', ':gift_heart:', ':school_satchel:', ':mortar_board:', ':flags:', ':fireworks:', ':sparkler:', ':wind_chime:', ':rice_scene:', ':gift:', ':bell:', ':no_bell:', ':tanabata_tree:', ':tada:', ':confetti_ball:', ':balloon:', ':crystal_ball:', ':cd:', ':dvd:', ':floppy_disk:', ':camera:', ':video_camera:', ':movie_camera:', ':computer:', ':tv:', ':iphone:', ':phone:', ':telephone:', ':telephone_receiver:', ':pager:', ':fax:', ':minidisc:', ':vhs:', ':sound:', ':speaker:', ':mute:', ':loudspeaker:', ':mega:', ':hourglass:', ':hourglass_flowing_sand:', ':alarm_clock:', ':watch:', ':radio:', ':satellite:', ':loop:', ':mag:', ':mag_right:', ':unlock:', ':lock:', ':lock_with_ink_pen:', ':closed_lock_with_key:', ':key:', ':bulb:', ':flashlight:', ':high_brightness:', ':low_brightness:', ':electric_plug:', ':battery:', ':calling:', ':email:', ':mailbox:', ':postbox:', ':bath:', ':bathtub:', ':shower:', ':toilet:', ':wrench:', ':nut_and_bolt:', ':hammer:', ':seat:', ':moneybag:', ':yen:', ':dollar:', ':pound:', ':euro:', ':credit_card:', ':money_with_wings:', ':e-mail:', ':inbox_tray:', ':outbox_tray:', ':envelope:', ':incoming_envelope:', ':postal_horn:', ':mailbox_closed:', ':mailbox_with_mail:', ':mailbox_with_no_mail:', ':package:', ':door:', ':smoking:', ':bomb:', ':gun:', ':hocho:', ':pill:', ':syringe:', ':page_facing_up:', ':page_with_curl:', ':bookmark_tabs:', ':bar_chart:', ':chart_with_upwards_trend:', ':chart_with_downwards_trend:', ':scroll:', ':clipboard:', ':calendar:', ':date:', ':card_index:', ':file_folder:', ':open_file_folder:', ':scissors:', ':pushpin:', ':paperclip:', ':black_nib:', ':pencil2:', ':straight_ruler:', ':triangular_ruler:', ':closed_book:', ':green_book:', ':blue_book:', ':orange_book:', ':notebook:', ':notebook_with_decorative_cover:', ':ledger:', ':books:', ':bookmark:', ':name_badge:', ':microscope:', ':telescope:', ':newspaper:', ':football:', ':basketball:', ':soccer:', ':baseball:', ':tennis:', ':8ball:', ':rugby_football:', ':bowling:', ':golf:', ':gem:', ':ring:', ':trophy:', ':musical_score:', ':musical_keyboard:', ':violin:', ':video_game:', ':flower_playing_cards:', ':game_die:', ':dart:', ':clapper:', ':memo:', ':pencil:', ':book:', ':art:', ':microphone:', ':headphones:', ':trumpet:', ':saxophone:', ':guitar:', ':shoe:', ':sandal:', ':high_heel:', ':lipstick:', ':boot:', ':shirt:', ':tshirt:', ':necktie:', ':womans_clothes:', ':dress:', ':running_shirt_with_sash:', ':jeans:', ':kimono:', ':bikini:', ':ribbon:', ':tophat:', ':crown:', ':womans_hat:', ':mans_shoe:', ':closed_umbrella:', ':briefcase:', ':handbag:', ':pouch:', ':purse:', ':eyeglasses:', ':fishing_pole_and_fish:', ':coffee:', ':tea:', ':sake:', ':baby_bottle:', ':beer:', ':beers:', ':cocktail:', ':tropical_drink:', ':wine_glass:', ':fork_and_knife:', ':pizza:', ':hamburger:', ':fries:', ':poultry_leg:', ':meat_on_bone:', ':spaghetti:', ':curry:', ':fried_shrimp:', ':bento:', ':sushi:', ':fish_cake:', ':rice_ball:', ':rice_cracker:', ':rice:', ':ramen:', ':stew:', ':oden:', ':dango:', ':egg:', ':bread:', ':doughnut:', ':custard:', ':icecream:', ':ice_cream:', ':shaved_ice:', ':birthday:', ':cake:', ':cookie:', ':chocolate_bar:', ':candy:', ':lollipop:', ':honey_pot:', ':apple:', ':green_apple:', ':tangerine:', ':lemon:', ':cherries:', ':grapes:', ':watermelon:', ':strawberry:', ':peach:', ':melon:', ':banana:', ':pear:', ':pineapple:', ':sweet_potato:', ':eggplant:', ':tomato:', ':corn:', ':house:', ':house_with_garden:', ':school:', ':office:', ':post_office:', ':hospital:', ':bank:', ':convenience_store:', ':love_hotel:', ':hotel:', ':wedding:', ':church:', ':department_store:', ':european_post_office:', ':city_sunrise:', ':city_sunset:', ':japanese_castle:', ':european_castle:', ':tent:', ':factory:', ':tokyo_tower:', ':japan:', ':mount_fuji:', ':sunrise_over_mountains:', ':sunrise:', ':stars:', ':statue_of_liberty:', ':bridge_at_night:', ':carousel_horse:', ':rainbow:', ':ferris_wheel:', ':fountain:', ':roller_coaster:', ':ship:', ':speedboat:', ':boat:', ':sailboat:', ':rowboat:', ':anchor:', ':rocket:', ':airplane:', ':helicopter:', ':steam_locomotive:', ':tram:', ':mountain_railway:', ':bike:', ':aerial_tramway:', ':suspension_railway:', ':mountain_cableway:', ':tractor:', ':blue_car:', ':oncoming_automobile:', ':car:', ':red_car:', ':taxi:', ':oncoming_taxi:', ':articulated_lorry:', ':bus:', ':oncoming_bus:', ':rotating_light:', ':police_car:', ':oncoming_police_car:', ':fire_engine:', ':ambulance:', ':minibus:', ':truck:', ':train:', ':station:', ':train2:', ':bullettrain_front:', ':bullettrain_side:', ':light_rail:', ':monorail:', ':railway_car:', ':trolleybus:', ':ticket:', ':fuelpump:', ':vertical_traffic_light:', ':traffic_light:', ':warning:', ':construction:', ':beginner:', ':atm:', ':slot_machine:', ':busstop:', ':barber:', ':hotsprings:', ':checkered_flag:', ':crossed_flags:', ':izakaya_lantern:', ':moyai:', ':circus_tent:', ':performing_arts:', ':round_pushpin:', ':triangular_flag_on_post:', ':jp:', ':kr:', ':cn:', ':us:', ':fr:', ':es:', ':it:', ':ru:', ':gb:', ':uk:', ':de:', ':one:', ':two:', ':three:', ':four:', ':five:', ':six:', ':seven:', ':eight:', ':nine:', ':keycap_ten:', ':1234:', ':zero:', ':hash:', ':symbols:', ':arrow_backward:', ':arrow_down:', ':arrow_forward:', ':arrow_left:', ':capital_abcd:', ':abcd:', ':abc:', ':arrow_lower_left:', ':arrow_lower_right:', ':arrow_right:', ':arrow_up:', ':arrow_upper_left:', ':arrow_upper_right:', ':arrow_double_down:', ':arrow_double_up:', ':arrow_down_small:', ':arrow_heading_down:', ':arrow_heading_up:', ':leftwards_arrow_with_hook:', ':arrow_right_hook:', ':left_right_arrow:', ':arrow_up_down:', ':arrow_up_small:', ':arrows_clockwise:', ':arrows_counterclockwise:', ':rewind:', ':fast_forward:', ':information_source:', ':ok:', ':twisted_rightwards_arrows:', ':repeat:', ':repeat_one:', ':new:', ':top:', ':up:', ':cool:', ':free:', ':ng:', ':cinema:', ':koko:', ':signal_strength:', ':u5272:', ':u5408:', ':u55b6:', ':u6307:', ':u6708:', ':u6709:', ':u6e80:', ':u7121:', ':u7533:', ':u7a7a:', ':u7981:', ':sa:', ':restroom:', ':mens:', ':womens:', ':baby_symbol:', ':no_smoking:', ':parking:', ':wheelchair:', ':metro:', ':baggage_claim:', ':accept:', ':wc:', ':potable_water:', ':put_litter_in_its_place:', ':secret:', ':congratulations:', ':m:', ':passport_control:', ':left_luggage:', ':customs:', ':ideograph_advantage:', ':cl:', ':sos:', ':id:', ':no_entry_sign:', ':underage:', ':no_mobile_phones:', ':do_not_litter:', ':non-potable_water:', ':no_bicycles:', ':no_pedestrians:', ':children_crossing:', ':no_entry:', ':eight_spoked_asterisk:', ':sparkle:', ':eight_pointed_black_star:', ':heart_decoration:', ':vs:', ':vibration_mode:', ':mobile_phone_off:', ':chart:', ':currency_exchange:', ':aries:', ':taurus:', ':gemini:', ':cancer:', ':leo:', ':virgo:', ':libra:', ':scorpius:', ':sagittarius:', ':capricorn:', ':aquarius:', ':pisces:', ':ophiuchus:', ':six_pointed_star:', ':negative_squared_cross_mark:', ':a:', ':b:', ':ab:', ':o2:', ':diamond_shape_with_a_dot_inside:', ':recycle:', ':end:', ':back:', ':on:', ':soon:', ':clock1:', ':clock130:', ':clock10:', ':clock1030:', ':clock11:', ':clock1130:', ':clock12:', ':clock1230:', ':clock2:', ':clock230:', ':clock3:', ':clock330:', ':clock4:', ':clock430:', ':clock5:', ':clock530:', ':clock6:', ':clock630:', ':clock7:', ':clock730:', ':clock8:', ':clock830:', ':clock9:', ':clock930:', ':heavy_dollar_sign:', ':copyright:', ':registered:', ':tm:', ':x:', ':heavy_exclamation_mark:', ':bangbang:', ':interrobang:', ':o:', ':heavy_multiplication_x:', ':heavy_plus_sign:', ':heavy_minus_sign:', ':heavy_division_sign:', ':white_flower:', ':100:', ':heavy_check_mark:', ':ballot_box_with_check:', ':radio_button:', ':link:', ':curly_loop:', ':wavy_dash:', ':part_alternation_mark:', ':trident:', ':black_small_square:', ':white_small_square:', ':black_medium_small_square:', ':white_medium_small_square:', ':black_medium_square:', ':white_medium_square:', ':white_large_square:', ':white_check_mark:', ':black_square_button:', ':white_square_button:', ':black_circle:', ':white_circle:', ':red_circle:', ':large_blue_circle:', ':large_blue_diamond:', ':large_orange_diamond:', ':small_blue_diamond:', ':small_orange_diamond:', ':small_red_triangle:', ':small_red_triangle_down:'] diff --git a/static/MarkDown-Editor/plugins/js/ext-language_tools.js b/static/MarkDown-Editor/plugins/js/ext-language_tools.js deleted file mode 100644 index 7f7e0a6..0000000 --- a/static/MarkDown-Editor/plugins/js/ext-language_tools.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * Ace v1.4.2 - * https://cdnjs.com/libraries/ace/ - */ -define("ace/snippets",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/anchor","ace/keyboard/hash_handler","ace/tokenizer","ace/lib/dom","ace/editor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./lib/lang"),o=e("./range").Range,u=e("./anchor").Anchor,a=e("./keyboard/hash_handler").HashHandler,f=e("./tokenizer").Tokenizer,l=o.comparePoints,c=function(){this.snippetMap={},this.snippetNameMap={}};(function(){r.implement(this,i),this.getTokenizer=function(){function e(e,t,n){return e=e.substr(1),/^\d+$/.test(e)&&!n.inFormatString?[{tabstopId:parseInt(e,10)}]:[{text:e}]}function t(e){return"(?:[^\\\\"+e+"]|\\\\.)"}return c.$tokenizer=new f({start:[{regex:/:/,onMatch:function(e,t,n){return n.length&&n[0].expectIf?(n[0].expectIf=!1,n[0].elseBranch=n[0],[n[0]]):":"}},{regex:/\\./,onMatch:function(e,t,n){var r=e[1];return r=="}"&&n.length?e=r:"`$\\".indexOf(r)!=-1?e=r:n.inFormatString&&(r=="n"?e="\n":r=="t"?e="\n":"ulULE".indexOf(r)!=-1&&(e={changeCase:r,local:r>"a"})),[e]}},{regex:/}/,onMatch:function(e,t,n){return[n.length?n.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:e},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(t,n,r){var i=e(t.substr(1),n,r);return r.unshift(i[0]),i},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+t("\\|")+"*\\|",onMatch:function(e,t,n){n[0].choices=e.slice(1,-1).split(",")},next:"start"},{regex:"/("+t("/")+"+)/(?:("+t("/")+"*)/)(\\w*):?",onMatch:function(e,t,n){var r=n[0];return r.fmtString=e,e=this.splitRegex.exec(e),r.guard=e[1],r.fmt=e[2],r.flag=e[3],""},next:"start"},{regex:"`"+t("`")+"*`",onMatch:function(e,t,n){return n[0].code=e.splice(1,-1),""},next:"start"},{regex:"\\?",onMatch:function(e,t,n){n[0]&&(n[0].expectIf=!0)},next:"start"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:"/("+t("/")+"+)/",token:"regex"},{regex:"",onMatch:function(e,t,n){n.inFormatString=!0},next:"start"}]}),c.prototype.getTokenizer=function(){return c.$tokenizer},c.$tokenizer},this.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},this.$getDefaultValue=function(e,t){if(/^[A-Z]\d+$/.test(t)){var n=t.substr(1);return(this.variables[t[0]+"__"]||{})[n]}if(/^\d+$/.test(t))return(this.variables.__||{})[t];t=t.replace(/^TM_/,"");if(!e)return;var r=e.session;switch(t){case"CURRENT_WORD":var i=r.getWordRange();case"SELECTION":case"SELECTED_TEXT":return r.getTextRange(i);case"CURRENT_LINE":return r.getLine(e.getCursorPosition().row);case"PREV_LINE":return r.getLine(e.getCursorPosition().row-1);case"LINE_INDEX":return e.getCursorPosition().column;case"LINE_NUMBER":return e.getCursorPosition().row+1;case"SOFT_TABS":return r.getUseSoftTabs()?"YES":"NO";case"TAB_SIZE":return r.getTabSize();case"FILENAME":case"FILEPATH":return"";case"FULLNAME":return"Ace"}},this.variables={},this.getVariableValue=function(e,t){return this.variables.hasOwnProperty(t)?this.variables[t](e,t)||"":this.$getDefaultValue(e,t)||""},this.tmStrFormat=function(e,t,n){var r=t.flag||"",i=t.guard;i=new RegExp(i,r.replace(/[^gi]/,""));var s=this.tokenizeTmSnippet(t.fmt,"formatString"),o=this,u=e.replace(i,function(){o.variables.__=arguments;var e=o.resolveVariables(s,n),t="E";for(var r=0;r1?(y=t[t.length-1].length,g+=t.length-1):y+=e.length,b+=e}else e.start?e.end={row:g,column:y}:e.start={row:g,column:y}});var w=e.getSelectionRange(),E=e.session.replace(w,b),S=new h(e),x=e.inVirtualSelectionMode&&e.selection.index;S.addTabstops(u,w.start,E,x)},this.insertSnippet=function(e,t){var n=this;if(e.inVirtualSelectionMode)return n.insertSnippetForSelection(e,t);e.forEachSelection(function(){n.insertSnippetForSelection(e,t)},null,{keepOrder:!0}),e.tabstopManager&&e.tabstopManager.tabNext()},this.$getScope=function(e){var t=e.session.$mode.$id||"";t=t.split("/").pop();if(t==="html"||t==="php"){t==="php"&&!e.session.$mode.inlinePhp&&(t="html");var n=e.getCursorPosition(),r=e.session.getState(n.row);typeof r=="object"&&(r=r[0]),r.substring&&(r.substring(0,3)=="js-"?t="javascript":r.substring(0,4)=="css-"?t="css":r.substring(0,4)=="php-"&&(t="php"))}return t},this.getActiveScopes=function(e){var t=this.$getScope(e),n=[t],r=this.snippetMap;return r[t]&&r[t].includeScopes&&n.push.apply(n,r[t].includeScopes),n.push("_"),n},this.expandWithTab=function(e,t){var n=this,r=e.forEachSelection(function(){return n.expandSnippetForSelection(e,t)},null,{keepOrder:!0});return r&&e.tabstopManager&&e.tabstopManager.tabNext(),r},this.expandSnippetForSelection=function(e,t){var n=e.getCursorPosition(),r=e.session.getLine(n.row),i=r.substring(0,n.column),s=r.substr(n.column),o=this.snippetMap,u;return this.getActiveScopes(e).some(function(e){var t=o[e];return t&&(u=this.findMatchingSnippet(t,i,s)),!!u},this),u?t&&t.dryRun?!0:(e.session.doc.removeInLine(n.row,n.column-u.replaceBefore.length,n.column+u.replaceAfter.length),this.variables.M__=u.matchBefore,this.variables.T__=u.matchAfter,this.insertSnippetForSelection(e,u.content),this.variables.M__=this.variables.T__=null,!0):!1},this.findMatchingSnippet=function(e,t,n){for(var r=e.length;r--;){var i=e[r];if(i.startRe&&!i.startRe.test(t))continue;if(i.endRe&&!i.endRe.test(n))continue;if(!i.startRe&&!i.endRe)continue;return i.matchBefore=i.startRe?i.startRe.exec(t):[""],i.matchAfter=i.endRe?i.endRe.exec(n):[""],i.replaceBefore=i.triggerRe?i.triggerRe.exec(t)[0]:"",i.replaceAfter=i.endTriggerRe?i.endTriggerRe.exec(n)[0]:"",i}},this.snippetMap={},this.snippetNameMap={},this.register=function(e,t){function o(e){return e&&!/^\^?\(.*\)\$?$|^\\b$/.test(e)&&(e="(?:"+e+")"),e||""}function u(e,t,n){return e=o(e),t=o(t),n?(e=t+e,e&&e[e.length-1]!="$"&&(e+="$")):(e+=t,e&&e[0]!="^"&&(e="^"+e)),new RegExp(e)}function a(e){e.scope||(e.scope=t||"_"),t=e.scope,n[t]||(n[t]=[],r[t]={});var o=r[t];if(e.name){var a=o[e.name];a&&i.unregister(a),o[e.name]=e}n[t].push(e),e.tabTrigger&&!e.trigger&&(!e.guard&&/^\w/.test(e.tabTrigger)&&(e.guard="\\b"),e.trigger=s.escapeRegExp(e.tabTrigger));if(!e.trigger&&!e.guard&&!e.endTrigger&&!e.endGuard)return;e.startRe=u(e.trigger,e.guard,!0),e.triggerRe=new RegExp(e.trigger),e.endRe=u(e.endTrigger,e.endGuard,!0),e.endTriggerRe=new RegExp(e.endTrigger)}var n=this.snippetMap,r=this.snippetNameMap,i=this;e||(e=[]),e&&e.content?a(e):Array.isArray(e)&&e.forEach(a),this._signal("registerSnippets",{scope:t})},this.unregister=function(e,t){function i(e){var i=r[e.scope||t];if(i&&i[e.name]){delete i[e.name];var s=n[e.scope||t],o=s&&s.indexOf(e);o>=0&&s.splice(o,1)}}var n=this.snippetMap,r=this.snippetNameMap;e.content?i(e):Array.isArray(e)&&e.forEach(i)},this.parseSnippetFile=function(e){e=e.replace(/\r/g,"");var t=[],n={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,i;while(i=r.exec(e)){if(i[1])try{n=JSON.parse(i[1]),t.push(n)}catch(s){}if(i[4])n.content=i[4].replace(/^\t/gm,""),t.push(n),n={};else{var o=i[2],u=i[3];if(o=="regex"){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(u)[1],n.trigger=a.exec(u)[1],n.endTrigger=a.exec(u)[1],n.endGuard=a.exec(u)[1]}else o=="snippet"?(n.tabTrigger=u.match(/^\S*/)[0],n.name||(n.name=u)):n[o]=u}}return t},this.getSnippetByName=function(e,t){var n=this.snippetNameMap,r;return this.getActiveScopes(t).some(function(t){var i=n[t];return i&&(r=i[e]),!!r},this),r}}).call(c.prototype);var h=function(e){if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=s.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)};(function(){this.attach=function(e){this.index=0,this.ranges=[],this.tabstops=[],this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(e){var t=e,n=e.action[0]=="r",r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=i.column-r.column;n&&(u=-u,a=-a);if(!this.$inChange&&n){var f=this.selectedTabstop,c=f&&!f.some(function(e){return l(e.start,r)<=0&&l(e.end,i)>=0});if(c)return this.detach()}var h=this.ranges;for(var p=0;p0){this.removeRange(d),p--;continue}d.start.row==s&&d.start.column>r.column&&(d.start.column+=a),d.end.row==s&&d.end.column>=r.column&&(d.end.column+=a),d.start.row>=s&&(d.start.row+=u),d.end.row>=s&&(d.end.row+=u),l(d.start,d.end)>0&&this.removeRange(d)}h.length||this.detach()},this.updateLinkedFields=function(){var e=this.selectedTabstop;if(!e||!e.hasLinkedRanges)return;this.$inChange=!0;var n=this.editor.session,r=n.getTextRange(e.firstNonLinked);for(var i=e.length;i--;){var s=e[i];if(!s.linked)continue;var o=t.snippetManager.tmStrFormat(r,s.original);n.replace(s,o)}this.$inChange=!1},this.onAfterExec=function(e){e.command&&!e.command.readOnly&&this.updateLinkedFields()},this.onChangeSelection=function(){if(!this.editor)return;var e=this.editor.selection.lead,t=this.editor.selection.anchor,n=this.editor.selection.isEmpty();for(var r=this.ranges.length;r--;){if(this.ranges[r].linked)continue;var i=this.ranges[r].contains(e.row,e.column),s=n||this.ranges[r].contains(t.row,t.column);if(i&&s)return}this.detach()},this.onChangeSession=function(){this.detach()},this.tabNext=function(e){var t=this.tabstops.length,n=this.index+(e||1);n=Math.min(Math.max(n,1),t),n==t&&(n=0),this.selectTabstop(n),n===0&&this.detach()},this.selectTabstop=function(e){this.$openTabstops=null;var t=this.tabstops[this.index];t&&this.addTabstopMarkers(t),this.index=e,t=this.tabstops[this.index];if(!t||!t.length)return;this.selectedTabstop=t;if(!this.editor.inVirtualSelectionMode){var n=this.editor.multiSelect;n.toSingleRange(t.firstNonLinked.clone());for(var r=t.length;r--;){if(t.hasLinkedRanges&&t[r].linked)continue;n.addRange(t[r].clone(),!0)}n.ranges[0]&&n.addRange(n.ranges[0].clone())}else this.editor.selection.setRange(t.firstNonLinked);this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.addTabstops=function(e,t,n){this.$openTabstops||(this.$openTabstops=[]);if(!e[0]){var r=o.fromPoints(n,n);v(r.start,t),v(r.end,t),e[0]=[r],e[0].index=0}var i=this.index,s=[i+1,0],u=this.ranges;e.forEach(function(e,n){var r=this.$openTabstops[n]||e;for(var i=e.length;i--;){var a=e[i],f=o.fromPoints(a.start,a.end||a.start);d(f.start,t),d(f.end,t),f.original=a,f.tabstop=r,u.push(f),r!=e?r.unshift(f):r[i]=f,a.fmtString?(f.linked=!0,r.hasLinkedRanges=!0):r.firstNonLinked||(r.firstNonLinked=f)}r.firstNonLinked||(r.hasLinkedRanges=!1),r===e&&(s.push(r),this.$openTabstops[n]=r),this.addTabstopMarkers(r)},this),s.length>2&&(this.tabstops.length&&s.push(s.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,s))},this.addTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},this.removeTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},this.removeRange=function(e){var t=e.tabstop.indexOf(e);e.tabstop.splice(t,1),t=this.ranges.indexOf(e),this.ranges.splice(t,1),this.editor.session.removeMarker(e.markerId),e.tabstop.length||(t=this.tabstops.indexOf(e.tabstop),t!=-1&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},this.keyboardHandler=new a,this.keyboardHandler.bindKeys({Tab:function(e){if(t.snippetManager&&t.snippetManager.expandWithTab(e))return;e.tabstopManager.tabNext(1)},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1)},Esc:function(e){e.tabstopManager.detach()},Return:function(e){return!1}})}).call(h.prototype);var p={};p.onChange=u.prototype.onChange,p.setPosition=function(e,t){this.pos.row=e,this.pos.column=t},p.update=function(e,t,n){this.$insertRight=n,this.pos=e,this.onChange(t)};var d=function(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row},v=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};e("./lib/dom").importCssString(".ace_snippet-marker { -moz-box-sizing: border-box; box-sizing: border-box; background: rgba(194, 193, 208, 0.09); border: 1px dotted rgba(211, 208, 235, 0.62); position: absolute;}"),t.snippetManager=new c;var m=e("./editor").Editor;(function(){this.insertSnippet=function(e,n){return t.snippetManager.insertSnippet(this,e,n)},this.expandSnippet=function(e){return t.snippetManager.expandWithTab(this,e)}}).call(m.prototype)}),define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../virtual_renderer").VirtualRenderer,i=e("../editor").Editor,s=e("../range").Range,o=e("../lib/event"),u=e("../lib/lang"),a=e("../lib/dom"),f=function(e){var t=new r(e);t.$maxLines=4;var n=new i(t);return n.setHighlightActiveLine(!1),n.setShowPrintMargin(!1),n.renderer.setShowGutter(!1),n.renderer.setHighlightGutterLine(!1),n.$mouseHandler.$focusTimeout=0,n.$highlightTagPending=!0,n},l=function(e){var t=a.createElement("div"),n=new f(t);e&&e.appendChild(t),t.style.display="none",n.renderer.content.style.cursor="default",n.renderer.setStyle("ace_autocomplete"),n.setOption("displayIndentGuides",!1),n.setOption("dragDelay",150);var r=function(){};n.focus=r,n.$isFocused=!0,n.renderer.$cursorLayer.restartTimer=r,n.renderer.$cursorLayer.element.style.opacity=0,n.renderer.$maxLines=8,n.renderer.$keepTextAreaAtCursor=!1,n.setHighlightActiveLine(!1),n.session.highlight(""),n.session.$searchHighlight.clazz="ace_highlight-marker",n.on("mousedown",function(e){var t=e.getDocumentPosition();n.selection.moveToPosition(t),c.start.row=c.end.row=t.row,e.stop()});var i,l=new s(-1,0,-1,Infinity),c=new s(-1,0,-1,Infinity);c.id=n.session.addMarker(c,"ace_active-line","fullLine"),n.setSelectOnHover=function(e){e?l.id&&(n.session.removeMarker(l.id),l.id=null):l.id=n.session.addMarker(l,"ace_line-hover","fullLine")},n.setSelectOnHover(!1),n.on("mousemove",function(e){if(!i){i=e;return}if(i.x==e.x&&i.y==e.y)return;i=e,i.scrollTop=n.renderer.scrollTop;var t=i.getDocumentPosition().row;l.start.row!=t&&(l.id||n.setRow(t),p(t))}),n.renderer.on("beforeRender",function(){if(i&&l.start.row!=-1){i.$pos=null;var e=i.getDocumentPosition().row;l.id||n.setRow(e),p(e,!0)}}),n.renderer.on("afterRender",function(){var e=n.getRow(),t=n.renderer.$textLayer,r=t.element.childNodes[e-t.config.firstRow];r!==t.selectedNode&&t.selectedNode&&a.removeCssClass(t.selectedNode,"ace_selected"),t.selectedNode=r,r&&a.addCssClass(r,"ace_selected")});var h=function(){p(-1)},p=function(e,t){e!==l.start.row&&(l.start.row=l.end.row=e,t||n.session._emit("changeBackMarker"),n._emit("changeHoverMarker"))};n.getHoveredRow=function(){return l.start.row},o.addListener(n.container,"mouseout",h),n.on("hide",h),n.on("changeSelection",h),n.session.doc.getLength=function(){return n.data.length},n.session.doc.getLine=function(e){var t=n.data[e];return typeof t=="string"?t:t&&t.value||""};var d=n.session.bgTokenizer;return d.$tokenizeRow=function(e){function s(e,n){e&&r.push({type:(t.className||"")+(n||""),value:e})}var t=n.data[e],r=[];if(!t)return r;typeof t=="string"&&(t={value:t});var i=t.caption||t.value||t.name,o=i.toLowerCase(),u=(n.filterText||"").toLowerCase(),a=0,f=0;for(var l=0;l<=u.length;l++)if(l!=f&&(t.matchMask&1<o/2&&!r;c&&l+t+f>o?(a.$maxPixelHeight=l-2*this.$borderSize,s.style.top="",s.style.bottom=o-l+"px",n.isTopdown=!1):(l+=t,a.$maxPixelHeight=o-l-.2*t,s.style.top=l+"px",s.style.bottom="",n.isTopdown=!0),s.style.display="";var h=e.left;h+s.offsetWidth>u&&(h=u-s.offsetWidth),s.style.left=h+"px",this._signal("show"),i=null,n.isOpen=!0},n.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},n.$imageSize=0,n.$borderSize=1,n};a.importCssString(".ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line { background-color: #CAD6FA; z-index: 1;}.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line { background-color: #3a674e;}.ace_editor.ace_autocomplete .ace_line-hover { border: 1px solid #abbffe; margin-top: -1px; background: rgba(233,233,253,0.4); position: absolute; z-index: 2;}.ace_dark.ace_editor.ace_autocomplete .ace_line-hover { border: 1px solid rgba(109, 150, 13, 0.8); background: rgba(58, 103, 78, 0.62);}.ace_completion-meta { opacity: 0.5; margin: 0.9em;}.ace_editor.ace_autocomplete .ace_completion-highlight{ color: #2d69c7;}.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{ color: #93ca12;}.ace_editor.ace_autocomplete { width: 300px; z-index: 200000; border: 1px lightgray solid; position: fixed; box-shadow: 2px 3px 5px rgba(0,0,0,.2); line-height: 1.4; background: #fefefe; color: #111;}.ace_dark.ace_editor.ace_autocomplete { border: 1px #484747 solid; box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51); line-height: 1.4; background: #25282c; color: #c1c1c1;}","autocompletion.css"),t.AcePopup=l}),define("ace/autocomplete/util",["require","exports","module"],function(e,t,n){"use strict";t.parForEach=function(e,t,n){var r=0,i=e.length;i===0&&n();for(var s=0;s=0;s--){if(!n.test(e[s]))break;i.push(e[s])}return i.reverse().join("")},t.retrieveFollowingIdentifier=function(e,t,n){n=n||r;var i=[];for(var s=t;s=n?-1:t+1;break;case"start":t=0;break;case"end":t=n}this.popup.setRow(t)},this.insertMatch=function(e,t){e||(e=this.popup.getData(this.popup.getRow()));if(!e)return!1;if(e.completer&&e.completer.insertMatch)e.completer.insertMatch(this.editor,e);else{if(this.completions.filterText){var n=this.editor.selection.getAllRanges();for(var r=0,i;i=n[r];r++)i.start.column-=this.completions.filterText.length,this.editor.session.remove(i)}e.snippet?f.insertSnippet(this.editor,e.snippet):this.editor.execCommand("insertstring",e.value||e)}this.detach()},this.commands={Up:function(e){e.completer.goTo("up")},Down:function(e){e.completer.goTo("down")},"Ctrl-Up|Ctrl-Home":function(e){e.completer.goTo("start")},"Ctrl-Down|Ctrl-End":function(e){e.completer.goTo("end")},Esc:function(e){e.completer.detach()},Return:function(e){return e.completer.insertMatch()},"Shift-Return":function(e){e.completer.insertMatch(null,{deleteSuffix:!0})},Tab:function(e){var t=e.completer.insertMatch();if(!!t||!!e.tabstopManager)return t;e.completer.goTo("down")},PageUp:function(e){e.completer.popup.gotoPageUp()},PageDown:function(e){e.completer.popup.gotoPageDown()}},this.gatherCompletions=function(e,t){var n=e.getSession(),r=e.getCursorPosition(),i=s.getCompletionPrefix(e);this.base=n.doc.createAnchor(r.row,r.column-i.length),this.base.$insertRight=!0;var o=[],u=e.completers.length;return e.completers.forEach(function(a,f){a.getCompletions(e,n,r,i,function(n,r){!n&&r&&(o=o.concat(r)),t(null,{prefix:s.getCompletionPrefix(e),matches:o,finished:--u===0})})}),!0},this.showPopup=function(e){this.editor&&this.detach(),this.activated=!0,this.editor=e,e.completer!=this&&(e.completer&&e.completer.detach(),e.completer=this),e.on("changeSelection",this.changeListener),e.on("blur",this.blurListener),e.on("mousedown",this.mousedownListener),e.on("mousewheel",this.mousewheelListener),this.updateCompletions()},this.updateCompletions=function(e){if(e&&this.base&&this.completions){var t=this.editor.getCursorPosition(),n=this.editor.session.getTextRange({start:this.base,end:t});if(n==this.completions.filterText)return;this.completions.setFilter(n);if(!this.completions.filtered.length)return this.detach();if(this.completions.filtered.length==1&&this.completions.filtered[0].value==n&&!this.completions.filtered[0].snippet)return this.detach();this.openPopup(this.editor,n,e);return}var r=this.gatherCompletionsId;this.gatherCompletions(this.editor,function(t,n){var i=function(){if(!n.finished)return;return this.detach()}.bind(this),s=n.prefix,o=n&&n.matches;if(!o||!o.length)return i();if(s.indexOf(n.prefix)!==0||r!=this.gatherCompletionsId)return;this.completions=new c(o),this.exactMatch&&(this.completions.exactMatch=!0),this.completions.setFilter(s);var u=this.completions.filtered;if(!u.length)return i();if(u.length==1&&u[0].value==s&&!u[0].snippet)return i();if(this.autoInsert&&u.length==1&&n.finished)return this.insertMatch(u[0]);this.openPopup(this.editor,s,e)}.bind(this))},this.cancelContextMenu=function(){this.editor.$mouseHandler.cancelContextMenu()},this.updateDocTooltip=function(){var e=this.popup,t=e.data,n=t&&(t[e.getHoveredRow()]||t[e.getRow()]),r=null;if(!n||!this.editor||!this.popup.isOpen)return this.hideDocTooltip();this.editor.completers.some(function(e){return e.getDocTooltip&&(r=e.getDocTooltip(n)),r}),r||(r=n),typeof r=="string"&&(r={docText:r});if(!r||!r.docHTML&&!r.docText)return this.hideDocTooltip();this.showDocTooltip(r)},this.showDocTooltip=function(e){this.tooltipNode||(this.tooltipNode=a.createElement("div"),this.tooltipNode.className="ace_tooltip ace_doc-tooltip",this.tooltipNode.style.margin=0,this.tooltipNode.style.pointerEvents="auto",this.tooltipNode.tabIndex=-1,this.tooltipNode.onblur=this.blurListener.bind(this),this.tooltipNode.onclick=this.onTooltipClick.bind(this));var t=this.tooltipNode;e.docHTML?t.innerHTML=e.docHTML:e.docText&&(t.textContent=e.docText),t.parentNode||document.body.appendChild(t);var n=this.popup,r=n.container.getBoundingClientRect();t.style.top=n.container.style.top,t.style.bottom=n.container.style.bottom,t.style.display="block",window.innerWidth-r.right<320?r.left<320?n.isTopdown?(t.style.top=r.bottom+"px",t.style.left=r.left+"px",t.style.right="",t.style.bottom=""):(t.style.top=n.container.offsetTop-t.offsetHeight+"px",t.style.left=r.left+"px",t.style.right="",t.style.bottom=""):(t.style.right=window.innerWidth-r.left+"px",t.style.left=""):(t.style.left=r.right+1+"px",t.style.right="")},this.hideDocTooltip=function(){this.tooltipTimer.cancel();if(!this.tooltipNode)return;var e=this.tooltipNode;!this.editor.isFocused()&&document.activeElement==e&&this.editor.focus(),this.tooltipNode=null,e.parentNode&&e.parentNode.removeChild(e)},this.onTooltipClick=function(e){var t=e.target;while(t&&t!=this.tooltipNode){if(t.nodeName=="A"&&t.href){t.rel="noreferrer",t.target="_blank";break}t=t.parentNode}}}).call(l.prototype),l.startCommand={name:"startAutocomplete",exec:function(e){e.completer||(e.completer=new l),e.completer.autoInsert=!1,e.completer.autoSelect=!0,e.completer.showPopup(e),e.completer.cancelContextMenu()},bindKey:"Ctrl-Space|Ctrl-Shift-Space|Alt-Space"};var c=function(e,t){this.all=e,this.filtered=e,this.filterText=t||"",this.exactMatch=!1};(function(){this.setFilter=function(e){if(e.length>this.filterText&&e.lastIndexOf(this.filterText,0)===0)var t=this.filtered;else var t=this.all;this.filterText=e,t=this.filterCompletions(t,this.filterText),t=t.sort(function(e,t){return t.exactMatch-e.exactMatch||t.$score-e.$score||(e.caption||e.value)<(t.caption||t.value)});var n=null;t=t.filter(function(e){var t=e.snippet||e.caption||e.value;return t===n?!1:(n=t,!0)}),this.filtered=t},this.filterCompletions=function(e,t){var n=[],r=t.toUpperCase(),i=t.toLowerCase();e:for(var s=0,o;o=e[s];s++){var u=o.caption||o.value||o.snippet;if(!u)continue;var a=-1,f=0,l=0,c,h;if(this.exactMatch){if(t!==u.substr(0,t.length))continue e}else{var p=u.toLowerCase().indexOf(i);if(p>-1)l=p;else for(var d=0;d=0?m<0||v0&&(a===-1&&(l+=10),l+=h,f|=1<",o.escapeHTML(e.caption),"","
",o.escapeHTML(e.snippet)].join(""))}},c=[l,a,f];t.setCompleters=function(e){c.length=0,e&&c.push.apply(c,e)},t.addCompleter=function(e){c.push(e)},t.textCompleter=a,t.keyWordCompleter=f,t.snippetCompleter=l;var h={name:"expandSnippet",exec:function(e){return r.expandWithTab(e)},bindKey:"Tab"},p=function(e,t){d(t.session.$mode)},d=function(e){var t=e.$id;r.files||(r.files={}),v(t),e.modes&&e.modes.forEach(d)},v=function(e){if(!e||r.files[e])return;var t=e.replace("mode","snippets");r.files[e]={},s.loadModule(t,function(t){t&&(r.files[e]=t,!t.snippets&&t.snippetText&&(t.snippets=r.parseSnippetFile(t.snippetText)),r.register(t.snippets||[],t.scope),t.includeScopes&&(r.snippetMap[t.scope].includeScopes=t.includeScopes,t.includeScopes.forEach(function(e){v("ace/mode/"+e)})))})},m=function(e){var t=e.editor,n=t.completer&&t.completer.activated;if(e.command.name==="backspace")n&&!u.getCompletionPrefix(t)&&t.completer.detach();else if(e.command.name==="insertstring"){var r=u.getCompletionPrefix(t);r&&!n&&(t.completer||(t.completer=new i),t.completer.autoInsert=!1,t.completer.showPopup(t))}},g=e("../editor").Editor;e("../config").defineOptions(g.prototype,"editor",{enableBasicAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:c),this.commands.addCommand(i.startCommand)):this.commands.removeCommand(i.startCommand)},value:!1},enableLiveAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:c),this.commands.on("afterExec",m)):this.commands.removeListener("afterExec",m)},value:!1},enableSnippets:{set:function(e){e?(this.commands.addCommand(h),this.on("changeMode",p),p(null,this)):(this.commands.removeCommand(h),this.off("changeMode",p))},value:!1}})}); (function() { - window.require(["ace/ext/language_tools"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); -})(); diff --git a/static/MarkDown-Editor/plugins/js/highlight.min.js b/static/MarkDown-Editor/plugins/js/highlight.min.js deleted file mode 100644 index 0271416..0000000 --- a/static/MarkDown-Editor/plugins/js/highlight.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! highlight.js v9.9.0 | BSD3 License | git.io/hljslicense */ -!function(e){var t="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):t&&(t.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return t.hljs}))}(function(e){function t(e){return e.replace(/[&<>]/gm,function(e){return L[e]})}function r(e){return e.nodeName.toLowerCase()}function a(e,t){var r=e&&e.exec(t);return r&&0===r.index}function n(e){return C.test(e)}function i(e){var t,r,a,i,s=e.className+" ";if(s+=e.parentNode?e.parentNode.className:"",r=E.exec(s))return y(r[1])?r[1]:"no-highlight";for(s=s.split(/\s+/),t=0,a=s.length;a>t;t++)if(i=s[t],n(i)||y(i))return i}function s(e,t){var r,a={};for(r in e)a[r]=e[r];if(t)for(r in t)a[r]=t[r];return a}function c(e){var t=[];return function a(e,n){for(var i=e.firstChild;i;i=i.nextSibling)3===i.nodeType?n+=i.nodeValue.length:1===i.nodeType&&(t.push({event:"start",offset:n,node:i}),n=a(i,n),r(i).match(/br|hr|img|input/)||t.push({event:"stop",offset:n,node:i}));return n}(e,0),t}function o(e,a,n){function i(){return e.length&&a.length?e[0].offset!==a[0].offset?e[0].offset"}function c(e){u+=""}function o(e){("start"===e.event?s:c)(e.node)}for(var l=0,u="",d=[];e.length||a.length;){var b=i();if(u+=t(n.substring(l,b[0].offset)),l=b[0].offset,b===e){d.reverse().forEach(c);do o(b.splice(0,1)[0]),b=i();while(b===e&&b.length&&b[0].offset===l);d.reverse().forEach(s)}else"start"===b[0].event?d.push(b[0].node):d.pop(),o(b.splice(0,1)[0])}return u+t(n.substr(l))}function l(e){function t(e){return e&&e.source||e}function r(r,a){return new RegExp(t(r),"m"+(e.cI?"i":"")+(a?"g":""))}function a(n,i){if(!n.compiled){if(n.compiled=!0,n.k=n.k||n.bK,n.k){var c={},o=function(t,r){e.cI&&(r=r.toLowerCase()),r.split(" ").forEach(function(e){var r=e.split("|");c[r[0]]=[t,r[1]?Number(r[1]):1]})};"string"==typeof n.k?o("keyword",n.k):N(n.k).forEach(function(e){o(e,n.k[e])}),n.k=c}n.lR=r(n.l||/\w+/,!0),i&&(n.bK&&(n.b="\\b("+n.bK.split(" ").join("|")+")\\b"),n.b||(n.b=/\B|\b/),n.bR=r(n.b),n.e||n.eW||(n.e=/\B|\b/),n.e&&(n.eR=r(n.e)),n.tE=t(n.e)||"",n.eW&&i.tE&&(n.tE+=(n.e?"|":"")+i.tE)),n.i&&(n.iR=r(n.i)),null==n.r&&(n.r=1),n.c||(n.c=[]);var l=[];n.c.forEach(function(e){e.v?e.v.forEach(function(t){l.push(s(e,t))}):l.push("self"===e?n:e)}),n.c=l,n.c.forEach(function(e){a(e,n)}),n.starts&&a(n.starts,i);var u=n.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([n.tE,n.i]).map(t).filter(Boolean);n.t=u.length?r(u.join("|"),!0):{exec:function(){return null}}}}a(e)}function u(e,r,n,i){function s(e,t){var r,n;for(r=0,n=t.c.length;n>r;r++)if(a(t.c[r].bR,e))return t.c[r]}function c(e,t){if(a(e.eR,t)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?c(e.parent,t):void 0}function o(e,t){return!n&&a(t.iR,e)}function b(e,t){var r=v.cI?t[0].toLowerCase():t[0];return e.k.hasOwnProperty(r)&&e.k[r]}function p(e,t,r,a){var n=a?"":S.classPrefix,i='',i+t+s}function m(){var e,r,a,n;if(!N.k)return t(E);for(n="",r=0,N.lR.lastIndex=0,a=N.lR.exec(E);a;)n+=t(E.substring(r,a.index)),e=b(N,a),e?(M+=e[1],n+=p(e[0],t(a[0]))):n+=t(a[0]),r=N.lR.lastIndex,a=N.lR.exec(E);return n+t(E.substr(r))}function f(){var e="string"==typeof N.sL;if(e&&!k[N.sL])return t(E);var r=e?u(N.sL,E,!0,x[N.sL]):d(E,N.sL.length?N.sL:void 0);return N.r>0&&(M+=r.r),e&&(x[N.sL]=r.top),p(r.language,r.value,!1,!0)}function g(){C+=null!=N.sL?f():m(),E=""}function _(e){C+=e.cN?p(e.cN,"",!0):"",N=Object.create(e,{parent:{value:N}})}function h(e,t){if(E+=e,null==t)return g(),0;var r=s(t,N);if(r)return r.skip?E+=t:(r.eB&&(E+=t),g(),r.rB||r.eB||(E=t)),_(r,t),r.rB?0:t.length;var a=c(N,t);if(a){var n=N;n.skip?E+=t:(n.rE||n.eE||(E+=t),g(),n.eE&&(E=t));do N.cN&&(C+=B),N.skip||(M+=N.r),N=N.parent;while(N!==a.parent);return a.starts&&_(a.starts,""),n.rE?0:t.length}if(o(t,N))throw new Error('Illegal lexeme "'+t+'" for mode "'+(N.cN||"")+'"');return E+=t,t.length||1}var v=y(e);if(!v)throw new Error('Unknown language: "'+e+'"');l(v);var w,N=i||v,x={},C="";for(w=N;w!==v;w=w.parent)w.cN&&(C=p(w.cN,"",!0)+C);var E="",M=0;try{for(var L,R,A=0;;){if(N.t.lastIndex=A,L=N.t.exec(r),!L)break;R=h(r.substring(A,L.index),L[0]),A=L.index+R}for(h(r.substr(A)),w=N;w.parent;w=w.parent)w.cN&&(C+=B);return{r:M,value:C,language:e,top:N}}catch($){if($.message&&-1!==$.message.indexOf("Illegal"))return{r:0,value:t(r)};throw $}}function d(e,r){r=r||S.languages||N(k);var a={r:0,value:t(e)},n=a;return r.filter(y).forEach(function(t){var r=u(t,e,!1);r.language=t,r.r>n.r&&(n=r),r.r>a.r&&(n=a,a=r)}),n.language&&(a.second_best=n),a}function b(e){return S.tabReplace||S.useBR?e.replace(M,function(e,t){return S.useBR&&"\n"===e?"
":S.tabReplace?t.replace(/\t/g,S.tabReplace):void 0}):e}function p(e,t,r){var a=t?x[t]:r,n=[e.trim()];return e.match(/\bhljs\b/)||n.push("hljs"),-1===e.indexOf(a)&&n.push(a),n.join(" ").trim()}function m(e){var t,r,a,s,l,m=i(e);n(m)||(S.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e,l=t.textContent,a=m?u(m,l,!0):d(l),r=c(t),r.length&&(s=document.createElementNS("http://www.w3.org/1999/xhtml","div"),s.innerHTML=a.value,a.value=o(r,c(s),l)),a.value=b(a.value),e.innerHTML=a.value,e.className=p(e.className,m,a.language),e.result={language:a.language,re:a.r},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.r}))}function f(e){S=s(S,e)}function g(){if(!g.called){g.called=!0;var e=document.querySelectorAll("pre code");w.forEach.call(e,m)}}function _(){addEventListener("DOMContentLoaded",g,!1),addEventListener("load",g,!1)}function h(t,r){var a=k[t]=r(e);a.aliases&&a.aliases.forEach(function(e){x[e]=t})}function v(){return N(k)}function y(e){return e=(e||"").toLowerCase(),k[e]||k[x[e]]}var w=[],N=Object.keys,k={},x={},C=/^(no-?highlight|plain|text)$/i,E=/\blang(?:uage)?-([\w-]+)\b/i,M=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,B="
",S={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},L={"&":"&","<":"<",">":">"};return e.highlight=u,e.highlightAuto=d,e.fixMarkup=b,e.highlightBlock=m,e.configure=f,e.initHighlighting=g,e.initHighlightingOnLoad=_,e.registerLanguage=h,e.listLanguages=v,e.getLanguage=y,e.inherit=s,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|like)\b/},e.C=function(t,r,a){var n=e.inherit({cN:"comment",b:t,e:r,c:[]},a||{});return n.c.push(e.PWM),n.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),n},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e.registerLanguage("apache",function(e){var t={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"section",b:""},{cN:"attribute",b:/\w+/,r:0,k:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"meta",b:"\\s\\[",e:"\\]$"},{cN:"variable",b:"[\\$%]\\{",e:"\\}",c:["self",t]},t,e.QSM]}}],i:/\S/}}),e.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},r={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/-?[a-z\._]+/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,r,a,t]}}),e.registerLanguage("coffeescript",function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},r="[A-Za-z$_][0-9A-Za-z$_]*",a={cN:"subst",b:/#\{/,e:/}/,k:t},n=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,a]},{b:/"/,e:/"/,c:[e.BE,a]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[a,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{b:"@"+r},{sL:"javascript",eB:!0,eE:!0,v:[{b:"```",e:"```"},{b:"`",e:"`"}]}];a.c=n;var i=e.inherit(e.TM,{b:r}),s="(\\(.*\\))?\\s*\\B[-=]>",c={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:t,c:["self"].concat(n)}]};return{aliases:["coffee","cson","iced"],k:t,i:/\/\*/,c:n.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+r+"\\s*=\\s*"+s,e:"[-=]>",rB:!0,c:[i,c]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:s,e:"[-=]>",rB:!0,c:[c]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[i]},i]},{b:r+":",e:":",rB:!0,rE:!0,r:0}])}}),e.registerLanguage("cpp",function(e){var t={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},r={cN:"string",v:[{b:'(u8?|U)?L?"',e:'"',i:"\\n",c:[e.BE]},{b:'(u8?|U)?R"',e:'"',c:[e.BE]},{b:"'\\\\?.",e:"'",i:"."}]},a={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],r:0},n={cN:"meta",b:/#\s*[a-z]+\b/,e:/$/,k:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},c:[{b:/\\\n/,r:0},e.inherit(r,{cN:"meta-string"}),{cN:"meta-string",b:"<",e:">",i:"\\n"},e.CLCM,e.CBCM]},i=e.IR+"\\s*\\(",s={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},c=[t,e.CLCM,e.CBCM,a,r];return{aliases:["c","cc","h","c++","h++","hpp"],k:s,i:"",k:s,c:["self",t]},{b:e.IR+"::",k:s},{v:[{b:/=/,e:/;/},{b:/\(/,e:/\)/},{bK:"new throw return else",e:/;/}],k:s,c:c.concat([{b:/\(/,e:/\)/,k:s,c:c.concat(["self"]),r:0}]),r:0},{cN:"function",b:"("+e.IR+"[\\*&\\s]+)+"+i,rB:!0,e:/[{;=]/,eE:!0,k:s,i:/[^\w\s\*&]/,c:[{b:i,rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:s,r:0,c:[e.CLCM,e.CBCM,r,a,t]},e.CLCM,e.CBCM,n]}]),exports:{preprocessor:n,strings:r,k:s}}}),e.registerLanguage("cs",function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double else enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while nameof add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},r={cN:"string",b:'@"',e:'"',c:[{b:'""'}]},a=e.inherit(r,{i:/\n/}),n={cN:"subst",b:"{",e:"}",k:t},i=e.inherit(n,{i:/\n/}),s={cN:"string",b:/\$"/,e:'"',i:/\n/,c:[{b:"{{"},{b:"}}"},e.BE,i]},c={cN:"string",b:/\$@"/,e:'"',c:[{b:"{{"},{b:"}}"},{b:'""'},n]},o=e.inherit(c,{i:/\n/,c:[{b:"{{"},{b:"}}"},{b:'""'},i]});n.c=[c,s,r,e.ASM,e.QSM,e.CNM,e.CBCM],i.c=[o,s,a,e.ASM,e.QSM,e.CNM,e.inherit(e.CBCM,{i:/\n/})];var l={v:[c,s,r,e.ASM,e.QSM]},u=e.IR+"(<"+e.IR+"(\\s*,\\s*"+e.IR+")*>)?(\\[\\])?";return{aliases:["csharp"],k:t,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",r:0},{b:""},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},l,e.CNM,{bK:"class interface",e:/[{;=]/,i:/[^\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{bK:"new return throw await",r:0},{cN:"function",b:"("+u+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:t,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,r:0,c:[l,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}}),e.registerLanguage("css",function(e){var t="[a-zA-Z-][a-zA-Z0-9_-]*",r={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:t,r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,r]}]}}),e.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"meta",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"comment",v:[{b:/Index: /,e:/$/},{b:/={3,}/,e:/$/},{b:/^\-{3}/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+{3}/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"addition",b:"^\\!",e:"$"}]}}),e.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",r:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}}),e.registerLanguage("ini",function(e){var t={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"section",b:/^\s*\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_-]+\s*=\s*/,e:"$",rB:!0,c:[{cN:"attr",b:/[a-z0-9\[\]_-]+/},{b:/=/,eW:!0,r:0,c:[{cN:"literal",b:/\bon|off|true|false|yes|no\b/},{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},t,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM]}]}]}}),e.registerLanguage("java",function(e){var t="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",r=t+"(<"+t+"(\\s*,\\s*"+t+")*>)?",a="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n="\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",i={cN:"number",b:n,r:0};return{aliases:["jsp"],k:a,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"("+r+"\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:a,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:a,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},i,{cN:"meta",b:"@[A-Za-z]+"}]}}),e.registerLanguage("javascript",function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",r={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:r,c:[]},i={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,i,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:r,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,i,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:t+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:t,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+t+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:t},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,c:s}]}]},{b://,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:t}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:s}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#(?!!)/}}),e.registerLanguage("json",function(e){var t={literal:"true false null"},r=[e.QSM,e.CNM],a={e:",",eW:!0,eE:!0,c:r,k:t},n={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(a,{b:/:/})],i:"\\S"},i={b:"\\[",e:"\\]",c:[e.inherit(a)],i:"\\S"};return r.splice(r.length,0,n,i),{c:r,k:t,i:"\\S"}}),e.registerLanguage("makefile",function(e){var t={cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]};return{aliases:["mk","mak"],c:[e.HCM,{b:/^\w+\s*\W*=/,rB:!0,r:0,starts:{e:/\s*\W*=/,eE:!0,starts:{e:/$/,r:0,c:[t]}}},{cN:"section",b:/^[\w]+:\s*$/},{cN:"meta",b:/^\.PHONY:/,e:/$/,k:{"meta-keyword":".PHONY"},l:/[\.\w]+/},{b:/^\t+/,e:/$/,r:0,c:[e.QSM,t]}]}}),e.registerLanguage("xml",function(e){var t="[A-Za-z0-9\\._:-]+",r={eW:!0,i:/`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},e.C("",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0}]},{cN:"tag",b:"|$)",e:">",k:{name:"style"},c:[r],starts:{e:"",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"|$)",e:">",k:{name:"script"},c:[r],starts:{e:"",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"meta",v:[{b:/<\?xml/,e:/\?>/,r:10},{b:/<\?\w+/,e:/\?>/}]},{cN:"tag",b:"",c:[{cN:"name",b:/[^\/><\s]+/,r:0},r]}]}}),e.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```w*s*$",e:"^```s*$"},{b:"`.+?`"},{b:"^( {4}| )",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}}),e.registerLanguage("nginx",function(e){var t={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},r={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,t],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[t]},{cN:"regexp",c:[e.BE,t],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},t]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],r:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:r}],r:0}],i:"[^\\s\\}]"}}),e.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},r={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},a=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:r,l:a,i:""}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:a,c:[e.UTM]},{b:"\\."+e.UIR,r:0}]}}),e.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},a={b:"->{",e:"}"},n={v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=[e.BE,r,n],s=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),a,{cN:"string",c:i,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"function",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",eE:!0,r:5,c:[e.TM]},{b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=s,a.c=s,{aliases:["pl","pm"],l:/[\w\.]+/,k:t,c:s}}),e.registerLanguage("php",function(e){var t={b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},r={cN:"meta",b:/<\?(php)?|\?>/},a={cN:"string",c:[e.BE,r],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},n={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[r]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},r,{cN:"keyword",b:/\$this\b/},t,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",t,e.CBCM,a,n]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},a,n]}}),e.registerLanguage("python",function(e){var t={cN:"meta",b:/^(>>>|\.\.\.) /},r={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[t],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[t],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},e.ASM,e.QSM]},a={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},n={cN:"params",b:/\(/,e:/\)/,c:["self",t,a,r]};return{aliases:["py","gyp"],k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)|=>/,c:[t,a,r,e.HCM,{v:[{cN:"function",bK:"def"},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,n,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}}),e.registerLanguage("ruby",function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},a={cN:"doctag",b:"@[A-Za-z]+"},n={b:"#<",e:">"},i=[e.C("#","$",{c:[a]}),e.C("^\\=begin","^\\=end",{c:[a],r:10}),e.C("^__END__","\\n$")],s={cN:"subst",b:"#\\{",e:"}",k:r},c={cN:"string",c:[e.BE,s],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{b:/<<(-?)\w+$/,e:/^\s*\w+$/}]},o={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:r},l=[c,n,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?" -}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(i)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:t}),o].concat(i)},{b:e.IR+"::"},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":(?!\\s)",c:[c,{b:t}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{cN:"params",b:/\|/,e:/\|/,k:r},{b:"("+e.RSR+"|unless)\\s*",c:[n,{cN:"regexp",c:[e.BE,s],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(i),r:0}].concat(i);s.c=l,o.c=l;var u="[>?]>",d="[\\w#]+\\(\\w+\\):\\d+:\\d+>",b="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",p=[{b:/^\s*=>/,starts:{e:"$",c:l}},{cN:"meta",b:"^("+u+"|"+d+"|"+b+")",starts:{e:"$",c:l}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,i:/\/\*/,c:i.concat(p).concat(l)}}),e.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>{}*#]/,c:[{bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment",e:/;/,eW:!0,l:/[\w\.]+/,k:{keyword:"abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text varchar varying void"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}}),e}); diff --git a/static/MarkDown-Editor/plugins/js/jquery.min.js b/static/MarkDown-Editor/plugins/js/jquery.min.js deleted file mode 100644 index c4c6022..0000000 --- a/static/MarkDown-Editor/plugins/js/jquery.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+R+")"+R+"*"),U=new RegExp(R+"|>"),V=new RegExp(W),X=new RegExp("^"+B+"$"),Q={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),TAG:new RegExp("^("+B+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+I+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,G=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+R+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){C()},ae=xe(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{O.apply(t=P.call(d.childNodes),d.childNodes),t[d.childNodes.length].nodeType}catch(e){O={apply:t.length?function(e,t){q.apply(e,P.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,d=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==d&&9!==d&&11!==d)return n;if(!r&&(C(e),e=e||T,E)){if(11!==d&&(u=Z.exec(t)))if(i=u[1]){if(9===d){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return O.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&p.getElementsByClassName&&e.getElementsByClassName)return O.apply(n,e.getElementsByClassName(i)),n}if(p.qsa&&!k[t+" "]&&(!v||!v.test(t))&&(1!==d||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===d&&(U.test(t)||_.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&p.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=A)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+be(l[o]);c=l.join(",")}try{return O.apply(n,f.querySelectorAll(c)),n}catch(e){k(t,!0)}finally{s===A&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>x.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[A]=!0,e}function ce(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)x.attrHandle[n[r]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pe(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in p=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},C=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:d;return r!=T&&9===r.nodeType&&r.documentElement&&(a=(T=r).documentElement,E=!i(T),d!=T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),p.scope=ce(function(e){return a.appendChild(e).appendChild(T.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),p.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),p.getElementsByTagName=ce(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),p.getElementsByClassName=J.test(T.getElementsByClassName),p.getById=ce(function(e){return a.appendChild(e).id=A,!T.getElementsByName||!T.getElementsByName(A).length}),p.getById?(x.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(x.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),x.find.TAG=p.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):p.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},x.find.CLASS=p.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(p.qsa=J.test(T.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+R+"*(?:value|"+I+")"),e.querySelectorAll("[id~="+A+"-]").length||v.push("~="),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+R+"*name"+R+"*="+R+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+A+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+R+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(p.matchesSelector=J.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){p.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",W)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=J.test(a.compareDocumentPosition),y=t||J.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!p.sortDetached&&t.compareDocumentPosition(e)===n?e==T||e.ownerDocument==d&&y(d,e)?-1:t==T||t.ownerDocument==d&&y(d,t)?1:u?H(u,e)-H(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==T?-1:t==T?1:i?-1:o?1:u?H(u,e)-H(u,t):0;if(i===o)return de(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?de(a[r],s[r]):a[r]==d?-1:s[r]==d?1:0}),T},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(C(e),p.matchesSelector&&E&&!k[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||p.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){k(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return b(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||L,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:j.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:w,!0)),k.test(r[1])&&E.isPlainObject(t))for(r in t)b(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=w.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):b(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,L=E(w);var q=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,pe=/^$|^module$|\/(?:java|ecma)script/i;le=w.createDocumentFragment().appendChild(w.createElement("div")),(ce=w.createElement("input")).setAttribute("type","radio"),ce.setAttribute("checked","checked"),ce.setAttribute("name","t"),le.appendChild(ce),m.checkClone=le.cloneNode(!0).cloneNode(!0).lastChild.checked,le.innerHTML="",m.noCloneChecked=!!le.cloneNode(!0).lastChild.defaultValue,le.innerHTML="",m.option=!!le.lastChild;var he={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ge(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&S(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var ye=/<|&#?\w+;/;function me(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),d=[],p=0,h=e.length;p\s*$/g;function Le(e,t){return S(e,"table")&&S(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function je(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n
",2===ft.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(m.createHTMLDocument?((r=(t=w.implementation.createHTMLDocument("")).createElement("base")).href=w.location.href,t.head.appendChild(r)):t=w),o=!n&&[],(i=k.exec(e))?[t.createElement(i[1])]:(i=me([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),b(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=Fe(m.pixelPosition,function(e,t){if(t)return t=We(e,n),Ie.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getSelectionRange().start,a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(o.column/.test(r.getLine(o.row).slice(o.column)))return;while(!u(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==o.row&&(d=d.substring(0,o.column-p));if(this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return this.getCommentFoldWidget(e,n)&&e.getCommentFoldRange(n,e.getLine(n).length);var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column"},this.createWorker=function(e){var t=new f(["ace"],"ace/mode/xml_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/xml"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0;",meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../config").$modes,i=e("../lib/oop"),s=e("../lib/lang"),o=e("./text_highlight_rules").TextHighlightRules,u=e("./html_highlight_rules").HtmlHighlightRules,a=function(e){return"(?:[^"+s.escapeRegExp(e)+"\\\\]|\\\\.)*"},f=function(){u.call(this);var e={token:"support.function",regex:/^\s*(```+[^`]*|~~~+[^~]*)$/,onMatch:function(e,t,n,i){var s=e.match(/^(\s*)([`~]+)(.*)/),o=/[\w-]+|$/.exec(s[3])[0];return r[o]||(o=""),n.unshift("githubblock",[],[s[1],s[2],o],t),this.token},next:"githubblock"},t=[{token:"support.function",regex:".*",onMatch:function(e,t,n,i){var s=n[1],o=n[2][0],u=n[2][1],a=n[2][2],f=/^(\s*)(`+|~+)\s*$/.exec(e);if(f&&f[1].length=u.length&&f[2][0]==u[0])return n.splice(0,3),this.next=n.shift(),this.token;this.next="";if(a&&r[a]){var l=r[a].getTokenizer().getLineTokens(e,s.slice(0));return n[1]=l.state,l.tokens}return this.token}}];this.$rules.start.unshift({token:"empty_line",regex:"^$",next:"allowBlock"},{token:"markup.heading.1",regex:"^=+(?=\\s*$)"},{token:"markup.heading.2",regex:"^\\-+(?=\\s*$)"},{token:function(e){return"markup.heading."+e.length},regex:/^#{1,6}(?=\s|$)/,next:"header"},e,{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{token:"constant",regex:"^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$",next:"allowBlock"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic"}),this.addRules({basic:[{token:"constant.language.escape",regex:/\\[\\`*_{}\[\]()#+\-.!]/},{token:"support.function",regex:"(`+)(.*?[^`])(\\1)"},{token:["text","constant","text","url","string","text"],regex:'^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'},{token:["text","string","text","constant","text"],regex:"(\\[)("+a("]")+")(\\]\\s*\\[)("+a("]")+")(\\])"},{token:["text","string","text","markup.underline","string","text"],regex:"(\\!?\\[)("+a("]")+")(\\]\\()"+'((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)'+'(\\s*"'+a('"')+'"\\s*)?'+"(\\))"},{token:"string.strong",regex:"([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"},{token:"string.emphasis",regex:"([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"},{token:["text","url","text"],regex:"(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"}],allowBlock:[{token:"support.function",regex:"^ {4}.+",next:"allowBlock"},{token:"empty_line",regex:"^$",next:"allowBlock"},{token:"empty",regex:"",next:"start"}],header:[{regex:"$",next:"start"},{include:"basic"},{defaultToken:"heading"}],"listblock-start":[{token:"support.variable",regex:/(?:\[[ x]\])?/,next:"listblock"}],listblock:[{token:"empty_line",regex:"^$",next:"start"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic",noEscape:!0},e,{defaultToken:"list"}],blockquote:[{token:"empty_line",regex:"^\\s*$",next:"start"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{include:"basic",noEscape:!0},{defaultToken:"string.blockquote"}],githubblock:t}),this.normalizeRules()};i.inherits(f,o),t.MarkdownHighlightRules=f}),define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.foldingStartMarker=/^(?:[=-]+\s*$|#{1,6} |`{3})/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?r[0]=="`"?e.bgTokenizer.getState(n)=="start"?"end":"start":"start":""},this.getFoldWidgetRange=function(e,t,n){function l(t){return f=e.getTokens(t)[0],f&&f.type.lastIndexOf(c,0)===0}function h(){var e=f.value[0];return e=="="?6:e=="-"?5:7-f.value.search(/[^#]/)}var r=e.getLine(n),i=r.length,o=e.getLength(),u=n,a=n;if(!r.match(this.foldingStartMarker))return;if(r[0]=="`"){if(e.bgTokenizer.getState(n)!=="start"){while(++n0){r=e.getLine(n);if(r[0]=="`"&r.substring(0,3)=="```")break}return new s(n,r.length,u,0)}var f,c="markup.heading";if(l(n)){var p=h();while(++n=p)break}a=n-(!f||["=","-"].indexOf(f.value[0])==-1?1:2);if(a>u)while(a>u&&/^\s*$/.test(e.getLine(a)))a--;if(a>u){var v=e.getLine(a).length;return new s(u,i,a,v)}}}}.call(o.prototype)}),define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.reservedKeywords="!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set|function|declare|readonly",o=t.languageConstructs="[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",u=function(){var e=this.createKeywordMapper({keyword:s,"support.function.builtin":o,"invalid.deprecated":"debugger"},"identifier"),t="(?:(?:[1-9]\\d*)|(?:0))",n="(?:\\.\\d+)",r="(?:\\d+)",i="(?:(?:"+r+"?"+n+")|(?:"+r+"\\.))",u="(?:(?:"+i+"|"+r+")"+")",a="(?:"+u+"|"+i+")",f="(?:&"+r+")",l="[a-zA-Z_][a-zA-Z0-9_]*",c="(?:"+l+"(?==))",h="(?:\\$(?:SHLVL|\\$|\\!|\\?))",p="(?:"+l+"\\s*\\(\\))";this.$rules={start:[{token:"constant",regex:/\\./},{token:["text","comment"],regex:/(^|\s)(#.*)$/},{token:"string.start",regex:'"',push:[{token:"constant.language.escape",regex:/\\(?:[$`"\\]|$)/},{include:"variables"},{token:"keyword.operator",regex:/`/},{token:"string.end",regex:'"',next:"pop"},{defaultToken:"string"}]},{token:"string",regex:"\\$'",push:[{token:"constant.language.escape",regex:/\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/},{token:"string",regex:"'",next:"pop"},{defaultToken:"string"}]},{regex:"<<<",token:"keyword.operator"},{stateName:"heredoc",regex:"(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[4]),[{type:"constant",value:i[1]},{type:"text",value:i[2]},{type:"string",value:i[3]},{type:"support.class",value:i[4]},{type:"string",value:i[5]}]},rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:["keyword","text","text","text","variable"],regex:/(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/},{token:"variable.language",regex:h},{token:"variable",regex:c},{include:"variables"},{token:"support.function",regex:p},{token:"support.function",regex:f},{token:"string",start:"'",end:"'"},{token:"constant.numeric",regex:a},{token:"constant.numeric",regex:t+"\\b"},{token:e,regex:"[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]"},{token:"punctuation.operator",regex:";"},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]]"},{token:"paren.rparen",regex:"[\\)\\}]",next:"pop"}],variables:[{token:"variable",regex:/(\$)(\w+)/},{token:["variable","paren.lparen"],regex:/(\$)(\()/,push:"start"},{token:["variable","paren.lparen","keyword.operator","variable","keyword.operator"],regex:/(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/,push:"start"},{token:"variable",regex:/\$[*@#?\-$!0_]/},{token:["variable","paren.lparen"],regex:/(\$)(\{)/,push:"start"}]},this.normalizeRules()};r.inherits(u,i),t.ShHighlightRules=u}),define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sh_highlight_rules").ShHighlightRules,o=e("../range").Range,u=e("./folding/cstyle").FoldMode,a=e("./behaviour/cstyle").CstyleBehaviour,f=function(){this.HighlightRules=s,this.foldingRules=new u,this.$behaviour=new a};r.inherits(f,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new o(n,r.length-i.length,n,r.length))},this.$id="ace/mode/sh"}.call(f.prototype),t.Mode=f}),define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript","ace/mode/xml","ace/mode/html","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown","ace/mode/javascript","ace/mode/html","ace/mode/sh","ace/mode/sh","ace/mode/xml","ace/mode/css"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript").Mode,o=e("./xml").Mode,u=e("./html").Mode,a=e("./markdown_highlight_rules").MarkdownHighlightRules,f=e("./folding/markdown").FoldMode,l=function(){this.HighlightRules=a,this.createModeDelegates({javascript:e("./javascript").Mode,html:e("./html").Mode,bash:e("./sh").Mode,sh:e("./sh").Mode,xml:e("./xml").Mode,css:e("./css").Mode}),this.foldingRules=new f,this.$behaviour=this.$defaultBehaviour};r.inherits(l,i),function(){this.type="text",this.blockComment={start:""},this.getNextLineIndent=function(e,t,n){if(e=="listblock"){var r=/^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(t);if(!r)return"";var i=r[2];return i||(i=parseInt(r[3],10)+1+"."),r[1]+i+r[4]}return this.$getIndent(t)},this.$id="ace/mode/markdown"}.call(l.prototype),t.Mode=l}); (function() { - window.require(["ace/mode/markdown"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); -})(); diff --git a/static/MarkDown-Editor/plugins/js/resizable.min.js b/static/MarkDown-Editor/plugins/js/resizable.min.js deleted file mode 100644 index 1f7270c..0000000 --- a/static/MarkDown-Editor/plugins/js/resizable.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * resizable 1.0.1 - * https://github.com/tannernetwork/resizable - * - * Copyright 2015-2017 Tanner (http://tanner.zone) - * Released under the MIT license - */ -!function(a){a.fn.resizable=function(b){var c=a.extend({direction:["top","right","bottom","left"]},b),d=null;return this.each(function(){var b=this,e=a(this),f=!1,g={},h={top:!1,right:!1,bottom:!1,left:!1},i={};if(e.addClass("resizable"),c.direction instanceof Array)for(var j=c.direction.length-1;j>=0;j--)switch(c.direction[j]){case"top":case"t":h.top=!0;break;case"right":case"r":h.right=!0;break;case"bottom":case"b":h.bottom=!0;break;case"left":case"l":h.left=!0}else if("string"==typeof c.direction)switch(c.direction){case"vertical":case"v":h.top=!0,h.bottom=!0;break;case"horizontal":case"h":h.right=!0,h.left=!0;break;case"top":case"t":h.top=!0;break;case"right":case"r":h.right=!0;break;case"bottom":case"b":h.bottom=!0;break;case"left":case"l":h.left=!0}h.top&&(i.top=a("
").addClass("resizable-handle resizable-t").appendTo(e)),h.right&&(i.right=a("
").addClass("resizable-handle resizable-r").appendTo(e)),h.bottom&&(i.bottom=a("
").addClass("resizable-handle resizable-b").appendTo(e)),h.left&&(i.left=a("
").addClass("resizable-handle resizable-l").appendTo(e)),a(this).children(".resizable-l, .resizable-r, .resizable-t, .resizable-b").mousedown(function(h){d=b;var i;switch(!0){case a(this).hasClass("resizable-l"):i="l";break;case a(this).hasClass("resizable-r"):i="r";break;case a(this).hasClass("resizable-t"):i="t";break;case a(this).hasClass("resizable-b"):i="b"}f=!0,g={x:h.clientX,y:h.clientY,height:e.height(),width:e.width(),direction:i},a("html").addClass("resizable-resizing resizable-resizing-"+g.direction),d==b&&"function"==typeof c.start&&c.start.apply(b)}),a(window).mousemove(function(a){if(f){var h=a.clientX-g.x,i=a.clientY-g.y;switch(g.direction){case"r":e.width(g.width+h);break;case"l":e.width(g.width-h);break;case"b":e.height(g.height+i);break;case"t":e.height(g.height-i)}d==b&&"function"==typeof c.resize&&c.resize.apply(b)}}).mouseup(function(e){f=!1,a("html").removeClass("resizable-resizing resizable-resizing-"+g.direction),d==b&&"function"==typeof c.stop&&c.stop.apply(b),_current=null})})}}(jQuery); diff --git a/static/MarkDown-Editor/plugins/js/semantic.min.js b/static/MarkDown-Editor/plugins/js/semantic.min.js deleted file mode 100644 index 0e741a2..0000000 --- a/static/MarkDown-Editor/plugins/js/semantic.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/* -* # Semantic UI - 2.4.1 -* https://github.com/Semantic-Org/Semantic-UI -* http://www.semantic-ui.com/ -* -* Copyright 2014 Contributors -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/ -!function(p,h,v,b){p.site=p.fn.site=function(e){var s,l,i=(new Date).getTime(),o=[],t=e,n="string"==typeof t,c=[].slice.call(arguments,1),u=p.isPlainObject(e)?p.extend(!0,{},p.site.settings,e):p.extend({},p.site.settings),a=u.namespace,d=u.error,r="module-"+a,f=p(v),m=this,g=f.data(r);return s={initialize:function(){s.instantiate()},instantiate:function(){s.verbose("Storing instance of site",s),g=s,f.data(r,s)},normalize:function(){s.fix.console(),s.fix.requestAnimationFrame()},fix:{console:function(){s.debug("Normalizing window.console"),console!==b&&console.log!==b||(s.verbose("Console not available, normalizing events"),s.disable.console()),void 0!==console.group&&void 0!==console.groupEnd&&void 0!==console.groupCollapsed||(s.verbose("Console group not available, normalizing events"),h.console.group=function(){},h.console.groupEnd=function(){},h.console.groupCollapsed=function(){}),void 0===console.markTimeline&&(s.verbose("Mark timeline not available, normalizing events"),h.console.markTimeline=function(){})},consoleClear:function(){s.debug("Disabling programmatic console clearing"),h.console.clear=function(){}},requestAnimationFrame:function(){s.debug("Normalizing requestAnimationFrame"),h.requestAnimationFrame===b&&(s.debug("RequestAnimationFrame not available, normalizing event"),h.requestAnimationFrame=h.requestAnimationFrame||h.mozRequestAnimationFrame||h.webkitRequestAnimationFrame||h.msRequestAnimationFrame||function(e){setTimeout(e,0)})}},moduleExists:function(e){return p.fn[e]!==b&&p.fn[e].settings!==b},enabled:{modules:function(e){var n=[];return e=e||u.modules,p.each(e,function(e,t){s.moduleExists(t)&&n.push(t)}),n}},disabled:{modules:function(e){var n=[];return e=e||u.modules,p.each(e,function(e,t){s.moduleExists(t)||n.push(t)}),n}},change:{setting:function(o,a,e,r){e="string"==typeof e?"all"===e?u.modules:[e]:e||u.modules,r=r===b||r,p.each(e,function(e,t){var n,i=!s.moduleExists(t)||(p.fn[t].settings.namespace||!1);s.moduleExists(t)&&(s.verbose("Changing default setting",o,a,t),p.fn[t].settings[o]=a,r&&i&&0<(n=p(":data(module-"+i+")")).length&&(s.verbose("Modifying existing settings",n),n[t]("setting",o,a)))})},settings:function(i,e,o){e="string"==typeof e?[e]:e||u.modules,o=o===b||o,p.each(e,function(e,t){var n;s.moduleExists(t)&&(s.verbose("Changing default setting",i,t),p.extend(!0,p.fn[t].settings,i),o&&a&&0<(n=p(":data(module-"+a+")")).length&&(s.verbose("Modifying existing settings",n),n[t]("setting",i)))})}},enable:{console:function(){s.console(!0)},debug:function(e,t){e=e||u.modules,s.debug("Enabling debug for modules",e),s.change.setting("debug",!0,e,t)},verbose:function(e,t){e=e||u.modules,s.debug("Enabling verbose debug for modules",e),s.change.setting("verbose",!0,e,t)}},disable:{console:function(){s.console(!1)},debug:function(e,t){e=e||u.modules,s.debug("Disabling debug for modules",e),s.change.setting("debug",!1,e,t)},verbose:function(e,t){e=e||u.modules,s.debug("Disabling verbose debug for modules",e),s.change.setting("verbose",!1,e,t)}},console:function(e){if(e){if(g.cache.console===b)return void s.error(d.console);s.debug("Restoring console function"),h.console=g.cache.console}else s.debug("Disabling console function"),g.cache.console=h.console,h.console={clear:function(){},error:function(){},group:function(){},groupCollapsed:function(){},groupEnd:function(){},info:function(){},log:function(){},markTimeline:function(){},warn:function(){}}},destroy:function(){s.verbose("Destroying previous site for",f),f.removeData(r)},cache:{},setting:function(e,t){if(p.isPlainObject(e))p.extend(!0,u,e);else{if(t===b)return u[e];u[e]=t}},internal:function(e,t){if(p.isPlainObject(e))p.extend(!0,s,e);else{if(t===b)return s[e];s[e]=t}},debug:function(){u.debug&&(u.performance?s.performance.log(arguments):(s.debug=Function.prototype.bind.call(console.info,console,u.name+":"),s.debug.apply(console,arguments)))},verbose:function(){u.verbose&&u.debug&&(u.performance?s.performance.log(arguments):(s.verbose=Function.prototype.bind.call(console.info,console,u.name+":"),s.verbose.apply(console,arguments)))},error:function(){s.error=Function.prototype.bind.call(console.error,console,u.name+":"),s.error.apply(console,arguments)},performance:{log:function(e){var t,n;u.performance&&(n=(t=(new Date).getTime())-(i||t),i=t,o.push({Element:m,Name:e[0],Arguments:[].slice.call(e,1)||"","Execution Time":n})),clearTimeout(s.performance.timer),s.performance.timer=setTimeout(s.performance.display,500)},display:function(){var e=u.name+":",n=0;i=!1,clearTimeout(s.performance.timer),p.each(o,function(e,t){n+=t["Execution Time"]}),e+=" "+n+"ms",(console.group!==b||console.table!==b)&&0")},fields:function(e){var n=F();return F.each(e,function(e,t){n=n.add(h.get.field(t))}),n},validation:function(n){var i,o;return!!c&&(F.each(c,function(e,t){o=t.identifier||e,h.get.field(o)[0]==n[0]&&(t.identifier=o,i=t)}),i||!1)},value:function(e){var t=[];return t.push(e),h.get.values.call(v,t)[e]},values:function(e){var t=F.isArray(e)?h.get.fields(e):n,c={};return t.each(function(e,t){var n=F(t),i=(n.prop("type"),n.prop("name")),o=n.val(),a=n.is(f.checkbox),r=n.is(f.radio),s=-1!==i.indexOf("[]"),l=!!a&&n.is(":checked");i&&(s?(i=i.replace("[]",""),c[i]||(c[i]=[]),a?l?c[i].push(o||!0):c[i].push(!1):c[i].push(o)):r?c[i]!==D&&0!=c[i]||(c[i]=!!l&&(o||!0)):c[i]=a?!!l&&(o||!0):o)}),c}},has:{field:function(e){return h.verbose("Checking for existence of a field with identifier",e),"string"!=typeof(e=h.escape.string(e))&&h.error(s.identifier,e),0"}),F(n+="")},prompt:function(e){return F("
").addClass("ui basic red pointing prompt label").html(e[0])}},rules:{empty:function(e){return!(e===D||""===e||F.isArray(e)&&0===e.length)},checked:function(){return 0=t},length:function(e,t){return e!==D&&e.length>=t},exactLength:function(e,t){return e!==D&&e.length==t},maxLength:function(e,t){return e!==D&&e.length<=t},match:function(e,t){var n;F(this);return 0=t)},exactCount:function(e,t){return 0==t?""===e:1==t?""!==e&&-1===e.search(","):e.split(",").length==t},maxCount:function(e,t){return 0!=t&&(1==t?-1===e.search(","):e.split(",").length<=t)}}}}(jQuery,window,document),function(S,k,e,T){"use strict";k=void 0!==k&&k.Math==Math?k:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),S.fn.accordion=function(a){var v,r=S(this),b=(new Date).getTime(),y=[],x=a,C="string"==typeof x,w=[].slice.call(arguments,1);k.requestAnimationFrame||k.mozRequestAnimationFrame||k.webkitRequestAnimationFrame||k.msRequestAnimationFrame;return r.each(function(){var e,c,u=S.isPlainObject(a)?S.extend(!0,{},S.fn.accordion.settings,a):S.extend({},S.fn.accordion.settings),d=u.className,t=u.namespace,f=u.selector,s=u.error,n="."+t,i="module-"+t,o=r.selector||"",m=S(this),g=m.find(f.title),p=m.find(f.content),l=this,h=m.data(i);c={initialize:function(){c.debug("Initializing",m),c.bind.events(),u.observeChanges&&c.observeChanges(),c.instantiate()},instantiate:function(){h=c,m.data(i,c)},destroy:function(){c.debug("Destroying previous instance",m),m.off(n).removeData(i)},refresh:function(){g=m.find(f.title),p=m.find(f.content)},observeChanges:function(){"MutationObserver"in k&&((e=new MutationObserver(function(e){c.debug("DOM tree modified, updating selector cache"),c.refresh()})).observe(l,{childList:!0,subtree:!0}),c.debug("Setting up mutation observer",e))},bind:{events:function(){c.debug("Binding delegated events"),m.on(u.on+n,f.trigger,c.event.click)}},event:{click:function(){c.toggle.call(this)}},toggle:function(e){var t=e!==T?"number"==typeof e?g.eq(e):S(e).closest(f.title):S(this).closest(f.title),n=t.next(p),i=n.hasClass(d.animating),o=n.hasClass(d.active),a=o&&!i,r=!o&&i;c.debug("Toggling visibility of content",t),a||r?u.collapsible?c.close.call(t):c.debug("Cannot close accordion content collapsing is disabled"):c.open.call(t)},open:function(e){var t=e!==T?"number"==typeof e?g.eq(e):S(e).closest(f.title):S(this).closest(f.title),n=t.next(p),i=n.hasClass(d.animating);n.hasClass(d.active)||i?c.debug("Accordion already open, skipping",n):(c.debug("Opening accordion content",t),u.onOpening.call(n),u.onChanging.call(n),u.exclusive&&c.closeOthers.call(t),t.addClass(d.active),n.stop(!0,!0).addClass(d.animating),u.animateChildren&&(S.fn.transition!==T&&m.transition("is supported")?n.children().transition({animation:"fade in",queue:!1,useFailSafe:!0,debug:u.debug,verbose:u.verbose,duration:u.duration}):n.children().stop(!0,!0).animate({opacity:1},u.duration,c.resetOpacity)),n.slideDown(u.duration,u.easing,function(){n.removeClass(d.animating).addClass(d.active),c.reset.display.call(this),u.onOpen.call(this),u.onChange.call(this)}))},close:function(e){var t=e!==T?"number"==typeof e?g.eq(e):S(e).closest(f.title):S(this).closest(f.title),n=t.next(p),i=n.hasClass(d.animating),o=n.hasClass(d.active);!o&&!(!o&&i)||o&&i||(c.debug("Closing accordion content",n),u.onClosing.call(n),u.onChanging.call(n),t.removeClass(d.active),n.stop(!0,!0).addClass(d.animating),u.animateChildren&&(S.fn.transition!==T&&m.transition("is supported")?n.children().transition({animation:"fade out",queue:!1,useFailSafe:!0,debug:u.debug,verbose:u.verbose,duration:u.duration}):n.children().stop(!0,!0).animate({opacity:0},u.duration,c.resetOpacity)),n.slideUp(u.duration,u.easing,function(){n.removeClass(d.animating).removeClass(d.active),c.reset.display.call(this),u.onClose.call(this),u.onChange.call(this)}))},closeOthers:function(e){var t,n,i,o=e!==T?g.eq(e):S(this).closest(f.title),a=o.parents(f.content).prev(f.title),r=o.closest(f.accordion),s=f.title+"."+d.active+":visible",l=f.content+"."+d.active+":visible";i=u.closeNested?(t=r.find(s).not(a)).next(p):(t=r.find(s).not(a),n=r.find(l).find(s).not(a),(t=t.not(n)).next(p)),0 adjusting invoked element"),c=c.closest(o.checkbox),s.refresh())}},setup:function(){s.set.initialLoad(),s.is.indeterminate()?(s.debug("Initial value is indeterminate"),s.indeterminate()):s.is.checked()?(s.debug("Initial value is checked"),s.check()):(s.debug("Initial value is unchecked"),s.uncheck()),s.remove.initialLoad()},refresh:function(){u=c.children(o.label),d=c.children(o.input),f=d[0]},hide:{input:function(){s.verbose("Modifying z-index to be unselectable"),d.addClass(t.hidden)}},show:{input:function(){s.verbose("Modifying z-index to be selectable"),d.removeClass(t.hidden)}},observeChanges:function(){"MutationObserver"in A&&((e=new MutationObserver(function(e){s.debug("DOM tree modified, updating selector cache"),s.refresh()})).observe(h,{childList:!0,subtree:!0}),s.debug("Setting up mutation observer",e))},attachEvents:function(e,t){var n=T(e);t=T.isFunction(s[t])?s[t]:s.toggle,0").insertAfter(d),s.debug("Creating label",u))}},has:{label:function(){return 0 .ui.dimmer",content:".ui.dimmer > .content, .ui.dimmer > .content > .center"},template:{dimmer:function(){return S("
").attr("class","ui dimmer")}}}}(jQuery,window,document),function(Y,Z,K,J){"use strict";Z=void 0!==Z&&Z.Math==Math?Z:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),Y.fn.dropdown=function(M){var L,V=Y(this),N=Y(K),H=V.selector||"",U="ontouchstart"in K.documentElement,W=(new Date).getTime(),B=[],Q=M,X="string"==typeof Q,$=[].slice.call(arguments,1);return V.each(function(n){var e,t,i,o,a,r,s,g,p=Y.isPlainObject(M)?Y.extend(!0,{},Y.fn.dropdown.settings,M):Y.extend({},Y.fn.dropdown.settings),h=p.className,c=p.message,l=p.fields,v=p.keys,b=p.metadata,u=p.namespace,d=p.regExp,y=p.selector,f=p.error,m=p.templates,x="."+u,C="module-"+u,w=Y(this),S=Y(p.context),k=w.find(y.text),T=w.find(y.search),A=w.find(y.sizer),R=w.find(y.input),P=w.find(y.icon),E=0").html(o).attr("data-"+b.value,t).attr("data-"+b.text,t).addClass(h.addition).addClass(h.item),p.hideAdditions&&i.addClass(h.hidden),n=n===J?i:n.add(i),g.verbose("Creating user choices for value",t,i))}),n)},userLabels:function(e){var t=g.get.userValues();t&&(g.debug("Adding user labels",t),Y.each(t,function(e,t){g.verbose("Adding custom user value"),g.add.label(t,t)}))},menu:function(){F=Y("
").addClass(h.menu).appendTo(w)},sizer:function(){A=Y("").addClass(h.sizer).insertAfter(T)}},search:function(e){e=e!==J?e:g.get.query(),g.verbose("Searching for query",e),g.has.minCharacters(e)?g.filter(e):g.hide()},select:{firstUnfiltered:function(){g.verbose("Selecting first non-filtered element"),g.remove.selectedItem(),O.not(y.unselectable).not(y.addition+y.hidden).eq(0).addClass(h.selected)},nextAvailable:function(e){var t=(e=e.eq(0)).nextAll(y.item).not(y.unselectable).eq(0),n=e.prevAll(y.item).not(y.unselectable).eq(0);0").addClass(h.search).prop("autocomplete","off").insertBefore(k)),g.is.multiple()&&g.is.searchSelection()&&!g.has.sizer()&&g.create.sizer(),p.allowTab&&g.set.tabbable()},select:function(){var e=g.get.selectValues();g.debug("Dropdown initialized on a select",e),w.is("select")&&(R=w),0").attr("class",R.attr("class")).addClass(h.selection).addClass(h.dropdown).html(m.dropdown(e)).insertBefore(R),R.hasClass(h.multiple)&&!1===R.prop("multiple")&&(g.error(f.missingMultiple),R.prop("multiple",!0)),R.is("[multiple]")&&g.set.multiple(),R.prop("disabled")&&(g.debug("Disabling dropdown"),w.addClass(h.disabled)),R.removeAttr("class").detach().prependTo(w)),g.refresh()},menu:function(e){F.html(m.menu(e,l)),O=F.find(y.item)},reference:function(){g.debug("Dropdown behavior was called on select, replacing with closest dropdown"),w=w.parent(y.dropdown),I=w.data(C),z=w.get(0),g.refresh(),g.setup.returnedObject()},returnedObject:function(){var e=V.slice(0,n),t=V.slice(n+1);V=e.add(w).add(t)}},refresh:function(){g.refreshSelectors(),g.refreshData()},refreshItems:function(){O=F.find(y.item)},refreshSelectors:function(){g.verbose("Refreshing selector cache"),k=w.find(y.text),T=w.find(y.search),R=w.find(y.input),P=w.find(y.icon),E=0 modified, recreating menu");var n=!1;Y.each(e,function(e,t){if(Y(t.target).is("select")||Y(t.addedNodes).is("select"))return n=!0}),n&&(g.disconnect.selectObserver(),g.refresh(),g.setup.select(),g.set.selected(),g.observe.select())}},menu:{mutation:function(e){var t=e[0],n=t.addedNodes?Y(t.addedNodes[0]):Y(!1),i=t.removedNodes?Y(t.removedNodes[0]):Y(!1),o=n.add(i),a=o.is(y.addition)||0t.name?1:-1}),g.debug("Retrieved and sorted values from select",o)):g.debug("Retrieved values from select",o),o},activeItem:function(){return O.filter("."+h.active)},selectedItem:function(){var e=O.not(y.unselectable).filter("."+h.selected);return 0=p.maxSelections?(g.debug("Maximum selection count reached"),p.useLabels&&(O.addClass(h.filtered),g.add.message(c.maxSelections)),!0):(g.verbose("No longer at maximum selection count"),g.remove.message(),g.remove.filteredItem(),g.is.searchSelection()&&g.filterItems(),!1))}},restore:{defaults:function(){g.clear(),g.restore.defaultText(),g.restore.defaultValue()},defaultText:function(){var e=g.get.defaultText();e===g.get.placeholderText?(g.debug("Restoring default placeholder text",e),g.set.placeholderText(e)):(g.debug("Restoring default text",e),g.set.text(e))},placeholderText:function(){g.set.placeholderText()},defaultValue:function(){var e=g.get.defaultValue();e!==J&&(g.debug("Restoring default value",e),""!==e?(g.set.value(e),g.set.selected()):(g.remove.activeItem(),g.remove.selectedItem()))},labels:function(){p.allowAdditions&&(p.useLabels||(g.error(f.labels),p.useLabels=!0),g.debug("Restoring selected values"),g.create.userLabels()),g.check.maxSelections()},selected:function(){g.restore.values(),g.is.multiple()?(g.debug("Restoring previously selected values and labels"),g.restore.labels()):g.debug("Restoring previously selected values")},values:function(){g.set.initialLoad(),p.apiSettings&&p.saveRemoteData&&g.get.remoteValues()?g.restore.remoteValues():g.set.selected(),g.remove.initialLoad()},remoteValues:function(){var e=g.get.remoteValues();g.debug("Recreating selected from session data",e),e&&(g.is.single()?Y.each(e,function(e,t){g.set.text(t)}):Y.each(e,function(e,t){g.add.label(e,t)}))}},read:{remoteData:function(e){var t;if(Z.Storage!==J)return(t=sessionStorage.getItem(e))!==J&&t;g.error(f.noStorage)}},save:{defaults:function(){g.save.defaultText(),g.save.placeholderText(),g.save.defaultValue()},defaultValue:function(){var e=g.get.value();g.verbose("Saving default value as",e),w.data(b.defaultValue,e)},defaultText:function(){var e=g.get.text();g.verbose("Saving default text as",e),w.data(b.defaultText,e)},placeholderText:function(){var e;!1!==p.placeholder&&k.hasClass(h.placeholder)&&(e=g.get.text(),g.verbose("Saving placeholder text as",e),w.data(b.placeholderText,e))},remoteData:function(e,t){Z.Storage!==J?(g.verbose("Saving remote data to session storage",t,e),sessionStorage.setItem(t,e)):g.error(f.noStorage)}},clear:function(){g.is.multiple()&&p.useLabels?g.remove.labels():(g.remove.activeItem(),g.remove.selectedItem()),g.set.placeholderText(),g.clearValue()},clearValue:function(){g.set.value("")},scrollPage:function(e,t){var n,i,o=t||g.get.selectedItem(),a=o.closest(y.menu),r=a.outerHeight(),s=a.scrollTop(),l=O.eq(0).outerHeight(),c=Math.floor(r/l),u=(a.prop("scrollHeight"),"up"==e?s-l*c:s+l*c),d=O.not(y.unselectable);i="up"==e?d.index(o)-c:d.index(o)+c,0<(n=("up"==e?0<=i:i").addClass(h.label).attr("data-"+b.value,a).html(m.label(a,t)),i=p.onLabelCreate.call(i,a,t),g.has.label(e)?g.debug("User selection already exists, skipping",a):(p.label.variation&&i.addClass(p.label.variation),!0===n?(g.debug("Animating in label",i),i.addClass(h.hidden).insertBefore(o).transition(p.label.transition,p.label.duration)):(g.debug("Adding selection label",i),i.insertBefore(o)))},message:function(e){var t=F.children(y.message),n=p.templates.message(g.add.variables(e));0").html(n).addClass(h.message).appendTo(F)},optionValue:function(e){var t=g.escape.value(e);0").prop("value",t).addClass(h.addition).html(e).appendTo(R),g.verbose("Adding user addition as an
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:L,popperConfig:null},K={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},X=function(){function t(t,e){if("undefined"==typeof n)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var i=t.prototype;return i.enable=function(){this._isEnabled=!0},i.disable=function(){this._isEnabled=!1},i.toggleEnabled=function(){this._isEnabled=!this._isEnabled},i.toggle=function(t){if(this._isEnabled)if(t){var n=this.constructor.DATA_KEY,i=e(t.currentTarget).data(n);i||(i=new this.constructor(t.currentTarget,this._getDelegateConfig()),e(t.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(e(this.getTipElement()).hasClass("show"))return void this._leave(null,this);this._enter(null,this)}},i.dispose=function(){clearTimeout(this._timeout),e.removeData(this.element,this.constructor.DATA_KEY),e(this.element).off(this.constructor.EVENT_KEY),e(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&e(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},i.show=function(){var t=this;if("none"===e(this.element).css("display"))throw new Error("Please use show on visible elements");var i=e.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){e(this.element).trigger(i);var o=a.findShadowRoot(this.element),s=e.contains(null!==o?o:this.element.ownerDocument.documentElement,this.element);if(i.isDefaultPrevented()||!s)return;var r=this.getTipElement(),l=a.getUID(this.constructor.NAME);r.setAttribute("id",l),this.element.setAttribute("aria-describedby",l),this.setContent(),this.config.animation&&e(r).addClass("fade");var c="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,h=this._getAttachment(c);this.addAttachmentClass(h);var u=this._getContainer();e(r).data(this.constructor.DATA_KEY,this),e.contains(this.element.ownerDocument.documentElement,this.tip)||e(r).appendTo(u),e(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new n(this.element,r,this._getPopperConfig(h)),e(r).addClass("show"),"ontouchstart"in document.documentElement&&e(document.body).children().on("mouseover",null,e.noop);var d=function(){t.config.animation&&t._fixTransition();var n=t._hoverState;t._hoverState=null,e(t.element).trigger(t.constructor.Event.SHOWN),"out"===n&&t._leave(null,t)};if(e(this.tip).hasClass("fade")){var f=a.getTransitionDurationFromElement(this.tip);e(this.tip).one(a.TRANSITION_END,d).emulateTransitionEnd(f)}else d()}},i.hide=function(t){var n=this,i=this.getTipElement(),o=e.Event(this.constructor.Event.HIDE),s=function(){"show"!==n._hoverState&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),e(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),t&&t()};if(e(this.element).trigger(o),!o.isDefaultPrevented()){if(e(i).removeClass("show"),"ontouchstart"in document.documentElement&&e(document.body).children().off("mouseover",null,e.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,e(this.tip).hasClass("fade")){var r=a.getTransitionDurationFromElement(i);e(i).one(a.TRANSITION_END,s).emulateTransitionEnd(r)}else s();this._hoverState=""}},i.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},i.isWithContent=function(){return Boolean(this.getTitle())},i.addAttachmentClass=function(t){e(this.getTipElement()).addClass("bs-tooltip-"+t)},i.getTipElement=function(){return this.tip=this.tip||e(this.config.template)[0],this.tip},i.setContent=function(){var t=this.getTipElement();this.setElementContent(e(t.querySelectorAll(".tooltip-inner")),this.getTitle()),e(t).removeClass("fade show")},i.setElementContent=function(t,n){"object"!=typeof n||!n.nodeType&&!n.jquery?this.config.html?(this.config.sanitize&&(n=Q(n,this.config.whiteList,this.config.sanitizeFn)),t.html(n)):t.text(n):this.config.html?e(n).parent().is(t)||t.empty().append(n):t.text(e(n).text())},i.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},i._getPopperConfig=function(t){var e=this;return s({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},i._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=s({},e.offsets,t.config.offset(e.offsets,t.element)||{}),e}:e.offset=this.config.offset,e},i._getContainer=function(){return!1===this.config.container?document.body:a.isElement(this.config.container)?e(this.config.container):e(document).find(this.config.container)},i._getAttachment=function(t){return V[t.toUpperCase()]},i._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(n){if("click"===n)e(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==n){var i="hover"===n?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,o="hover"===n?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;e(t.element).on(i,t.config.selector,(function(e){return t._enter(e)})).on(o,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},e(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=s({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},i._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},i._enter=function(t,n){var i=this.constructor.DATA_KEY;(n=n||e(t.currentTarget).data(i))||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),e(t.currentTarget).data(i,n)),t&&(n._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e(n.getTipElement()).hasClass("show")||"show"===n._hoverState?n._hoverState="show":(clearTimeout(n._timeout),n._hoverState="show",n.config.delay&&n.config.delay.show?n._timeout=setTimeout((function(){"show"===n._hoverState&&n.show()}),n.config.delay.show):n.show())},i._leave=function(t,n){var i=this.constructor.DATA_KEY;(n=n||e(t.currentTarget).data(i))||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),e(t.currentTarget).data(i,n)),t&&(n._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState="out",n.config.delay&&n.config.delay.hide?n._timeout=setTimeout((function(){"out"===n._hoverState&&n.hide()}),n.config.delay.hide):n.hide())},i._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},i._getConfig=function(t){var n=e(this.element).data();return Object.keys(n).forEach((function(t){-1!==M.indexOf(t)&&delete n[t]})),"number"==typeof(t=s({},this.constructor.Default,n,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),a.typeCheckConfig(B,t,this.constructor.DefaultType),t.sanitize&&(t.template=Q(t.template,t.whiteList,t.sanitizeFn)),t},i._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},i._cleanTipClass=function(){var t=e(this.getTipElement()),n=t.attr("class").match(U);null!==n&&n.length&&t.removeClass(n.join(""))},i._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},i._fixTransition=function(){var t=this.getTipElement(),n=this.config.animation;null===t.getAttribute("x-placement")&&(e(t).removeClass("fade"),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},t._jQueryInterface=function(n){return this.each((function(){var i=e(this).data("bs.tooltip"),o="object"==typeof n&&n;if((i||!/dispose|hide/.test(n))&&(i||(i=new t(this,o),e(this).data("bs.tooltip",i)),"string"==typeof n)){if("undefined"==typeof i[n])throw new TypeError('No method named "'+n+'"');i[n]()}}))},o(t,null,[{key:"VERSION",get:function(){return"4.5.2"}},{key:"Default",get:function(){return z}},{key:"NAME",get:function(){return B}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return K}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return W}}]),t}();e.fn[B]=X._jQueryInterface,e.fn[B].Constructor=X,e.fn[B].noConflict=function(){return e.fn[B]=H,X._jQueryInterface};var Y="popover",$=e.fn[Y],J=new RegExp("(^|\\s)bs-popover\\S+","g"),G=s({},X.Default,{placement:"right",trigger:"click",content:"",template:''}),Z=s({},X.DefaultType,{content:"(string|element|function)"}),tt={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},et=function(t){var n,i;function s(){return t.apply(this,arguments)||this}i=t,(n=s).prototype=Object.create(i.prototype),n.prototype.constructor=n,n.__proto__=i;var r=s.prototype;return r.isWithContent=function(){return this.getTitle()||this._getContent()},r.addAttachmentClass=function(t){e(this.getTipElement()).addClass("bs-popover-"+t)},r.getTipElement=function(){return this.tip=this.tip||e(this.config.template)[0],this.tip},r.setContent=function(){var t=e(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var n=this._getContent();"function"==typeof n&&(n=n.call(this.element)),this.setElementContent(t.find(".popover-body"),n),t.removeClass("fade show")},r._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},r._cleanTipClass=function(){var t=e(this.getTipElement()),n=t.attr("class").match(J);null!==n&&n.length>0&&t.removeClass(n.join(""))},s._jQueryInterface=function(t){return this.each((function(){var n=e(this).data("bs.popover"),i="object"==typeof t?t:null;if((n||!/dispose|hide/.test(t))&&(n||(n=new s(this,i),e(this).data("bs.popover",n)),"string"==typeof t)){if("undefined"==typeof n[t])throw new TypeError('No method named "'+t+'"');n[t]()}}))},o(s,null,[{key:"VERSION",get:function(){return"4.5.2"}},{key:"Default",get:function(){return G}},{key:"NAME",get:function(){return Y}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return tt}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Z}}]),s}(X);e.fn[Y]=et._jQueryInterface,e.fn[Y].Constructor=et,e.fn[Y].noConflict=function(){return e.fn[Y]=$,et._jQueryInterface};var nt="scrollspy",it=e.fn[nt],ot={offset:10,method:"auto",target:""},st={offset:"number",method:"string",target:"(string|element)"},rt=function(){function t(t,n){var i=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(n),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,e(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return i._process(t)})),this.refresh(),this._process()}var n=t.prototype;return n.refresh=function(){var t=this,n=this._scrollElement===this._scrollElement.window?"offset":"position",i="auto"===this._config.method?n:this._config.method,o="position"===i?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var n,s=a.getSelectorFromElement(t);if(s&&(n=document.querySelector(s)),n){var r=n.getBoundingClientRect();if(r.width||r.height)return[e(n)[i]().top+o,s]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},n.dispose=function(){e.removeData(this._element,"bs.scrollspy"),e(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},n._getConfig=function(t){if("string"!=typeof(t=s({},ot,"object"==typeof t&&t?t:{})).target&&a.isElement(t.target)){var n=e(t.target).attr("id");n||(n=a.getUID(nt),e(t.target).attr("id",n)),t.target="#"+n}return a.typeCheckConfig(nt,t,st),t},n._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},n._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},n._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},n._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t li > .active":".active";i=(i=e.makeArray(e(o).find(r)))[i.length-1]}var l=e.Event("hide.bs.tab",{relatedTarget:this._element}),c=e.Event("show.bs.tab",{relatedTarget:i});if(i&&e(i).trigger(l),e(this._element).trigger(c),!c.isDefaultPrevented()&&!l.isDefaultPrevented()){s&&(n=document.querySelector(s)),this._activate(this._element,o);var h=function(){var n=e.Event("hidden.bs.tab",{relatedTarget:t._element}),o=e.Event("shown.bs.tab",{relatedTarget:i});e(i).trigger(n),e(t._element).trigger(o)};n?this._activate(n,n.parentNode,h):h()}}},n.dispose=function(){e.removeData(this._element,"bs.tab"),this._element=null},n._activate=function(t,n,i){var o=this,s=(!n||"UL"!==n.nodeName&&"OL"!==n.nodeName?e(n).children(".active"):e(n).find("> li > .active"))[0],r=i&&s&&e(s).hasClass("fade"),l=function(){return o._transitionComplete(t,s,i)};if(s&&r){var c=a.getTransitionDurationFromElement(s);e(s).removeClass("show").one(a.TRANSITION_END,l).emulateTransitionEnd(c)}else l()},n._transitionComplete=function(t,n,i){if(n){e(n).removeClass("active");var o=e(n.parentNode).find("> .dropdown-menu .active")[0];o&&e(o).removeClass("active"),"tab"===n.getAttribute("role")&&n.setAttribute("aria-selected",!1)}if(e(t).addClass("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),a.reflow(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&e(t.parentNode).hasClass("dropdown-menu")){var s=e(t).closest(".dropdown")[0];if(s){var r=[].slice.call(s.querySelectorAll(".dropdown-toggle"));e(r).addClass("active")}t.setAttribute("aria-expanded",!0)}i&&i()},t._jQueryInterface=function(n){return this.each((function(){var i=e(this),o=i.data("bs.tab");if(o||(o=new t(this),i.data("bs.tab",o)),"string"==typeof n){if("undefined"==typeof o[n])throw new TypeError('No method named "'+n+'"');o[n]()}}))},o(t,null,[{key:"VERSION",get:function(){return"4.5.2"}}]),t}();e(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),lt._jQueryInterface.call(e(this),"show")})),e.fn.tab=lt._jQueryInterface,e.fn.tab.Constructor=lt,e.fn.tab.noConflict=function(){return e.fn.tab=at,lt._jQueryInterface};var ct=e.fn.toast,ht={animation:"boolean",autohide:"boolean",delay:"number"},ut={animation:!0,autohide:!0,delay:500},dt=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var n=t.prototype;return n.show=function(){var t=this,n=e.Event("show.bs.toast");if(e(this._element).trigger(n),!n.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var i=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),e(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),a.reflow(this._element),this._element.classList.add("showing"),this._config.animation){var o=a.getTransitionDurationFromElement(this._element);e(this._element).one(a.TRANSITION_END,i).emulateTransitionEnd(o)}else i()}},n.hide=function(){if(this._element.classList.contains("show")){var t=e.Event("hide.bs.toast");e(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},n.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),e(this._element).off("click.dismiss.bs.toast"),e.removeData(this._element,"bs.toast"),this._element=null,this._config=null},n._getConfig=function(t){return t=s({},ut,e(this._element).data(),"object"==typeof t&&t?t:{}),a.typeCheckConfig("toast",t,this.constructor.DefaultType),t},n._setListeners=function(){var t=this;e(this._element).on("click.dismiss.bs.toast",'[data-dismiss="toast"]',(function(){return t.hide()}))},n._close=function(){var t=this,n=function(){t._element.classList.add("hide"),e(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var i=a.getTransitionDurationFromElement(this._element);e(this._element).one(a.TRANSITION_END,n).emulateTransitionEnd(i)}else n()},n._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(n){return this.each((function(){var i=e(this),o=i.data("bs.toast");if(o||(o=new t(this,"object"==typeof n&&n),i.data("bs.toast",o)),"string"==typeof n){if("undefined"==typeof o[n])throw new TypeError('No method named "'+n+'"');o[n](this)}}))},o(t,null,[{key:"VERSION",get:function(){return"4.5.2"}},{key:"DefaultType",get:function(){return ht}},{key:"Default",get:function(){return ut}}]),t}();e.fn.toast=dt._jQueryInterface,e.fn.toast.Constructor=dt,e.fn.toast.noConflict=function(){return e.fn.toast=ct,dt._jQueryInterface},t.Alert=h,t.Button=d,t.Carousel=b,t.Collapse=C,t.Dropdown=I,t.Modal=P,t.Popover=et,t.Scrollspy=rt,t.Tab=lt,t.Toast=dt,t.Tooltip=X,t.Util=a,Object.defineProperty(t,"__esModule",{value:!0})})); diff --git a/static/plugins/js/emojis.min.js b/static/plugins/js/emojis.min.js deleted file mode 100644 index 1833588..0000000 --- a/static/plugins/js/emojis.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/* Added Manually by: Summon Agus */ -var emojis = [':yellow_heart:', ':blue_heart:', ':purple_heart:', ':heart:', ':green_heart:', ':broken_heart:', ':heartbeat:', ':heartpulse:', ':two_hearts:', ':revolving_hearts:', ':cupid:', ':sparkling_heart:', ':sparkles:', ':star:', ':star2:', ':dizzy:', ':boom:', ':collision:', ':anger:', ':exclamation:', ':question:', ':grey_exclamation:', ':grey_question:', ':zzz:', ':dash:', ':sweat_drops:', ':notes:', ':musical_note:', ':fire:', ':thumbsup:', ':-1:', ':thumbsdown:', ':ok_hand:', ':punch:', ':facepunch:', ':fist:', ':v:', ':wave:', ':hand:', ':raised_hand:', ':open_hands:', ':point_up:', ':point_down:', ':point_left:', ':point_right:', ':raised_hands:', ':pray:', ':point_up_2:', ':clap:', ':muscle:', ':nail_care:', ':sunny:', ':umbrella:', ':cloud:', ':snowflake:', ':zap:', ':cyclone:', ':foggy:', ':ocean:', ':bouquet:', ':cherry_blossom:', ':tulip:', ':four_leaf_clover:', ':rose:', ':sunflower:', ':hibiscus:', ':maple_leaf:', ':leaves:', ':fallen_leaf:', ':herb:', ':mushroom:', ':cactus:', ':palm_tree:', ':evergreen_tree:', ':deciduous_tree:', ':chestnut:', ':seedling:', ':blossom:', ':ear_of_rice:', ':shell:', ':globe_with_meridians:', ':new_moon:', ':waxing_crescent_moon:', ':first_quarter_moon:', ':waxing_gibbous_moon:', ':full_moon:', ':waning_gibbous_moon:', ':last_quarter_moon:', ':waning_crescent_moon:', ':last_quarter_moon_with_face:', ':first_quarter_moon_with_face:', ':crescent_moon:', ':earth_africa:', ':earth_americas:', ':earth_asia:', ':volcano:', ':milky_way:', ':partly_sunny:', ':bamboo:', ':gift_heart:', ':school_satchel:', ':mortar_board:', ':flags:', ':fireworks:', ':sparkler:', ':wind_chime:', ':rice_scene:', ':gift:', ':bell:', ':no_bell:', ':tanabata_tree:', ':tada:', ':confetti_ball:', ':balloon:', ':crystal_ball:', ':cd:', ':dvd:', ':floppy_disk:', ':camera:', ':video_camera:', ':movie_camera:', ':computer:', ':tv:', ':iphone:', ':phone:', ':telephone:', ':telephone_receiver:', ':pager:', ':fax:', ':minidisc:', ':vhs:', ':sound:', ':speaker:', ':mute:', ':loudspeaker:', ':mega:', ':hourglass:', ':hourglass_flowing_sand:', ':alarm_clock:', ':watch:', ':radio:', ':satellite:', ':loop:', ':mag:', ':mag_right:', ':unlock:', ':lock:', ':lock_with_ink_pen:', ':closed_lock_with_key:', ':key:', ':bulb:', ':flashlight:', ':high_brightness:', ':low_brightness:', ':electric_plug:', ':battery:', ':calling:', ':email:', ':mailbox:', ':postbox:', ':bath:', ':bathtub:', ':shower:', ':toilet:', ':wrench:', ':nut_and_bolt:', ':hammer:', ':seat:', ':moneybag:', ':yen:', ':dollar:', ':pound:', ':euro:', ':credit_card:', ':money_with_wings:', ':e-mail:', ':inbox_tray:', ':outbox_tray:', ':envelope:', ':incoming_envelope:', ':postal_horn:', ':mailbox_closed:', ':mailbox_with_mail:', ':mailbox_with_no_mail:', ':package:', ':door:', ':smoking:', ':bomb:', ':gun:', ':hocho:', ':pill:', ':syringe:', ':page_facing_up:', ':page_with_curl:', ':bookmark_tabs:', ':bar_chart:', ':chart_with_upwards_trend:', ':chart_with_downwards_trend:', ':scroll:', ':clipboard:', ':calendar:', ':date:', ':card_index:', ':file_folder:', ':open_file_folder:', ':scissors:', ':pushpin:', ':paperclip:', ':black_nib:', ':pencil2:', ':straight_ruler:', ':triangular_ruler:', ':closed_book:', ':green_book:', ':blue_book:', ':orange_book:', ':notebook:', ':notebook_with_decorative_cover:', ':ledger:', ':books:', ':bookmark:', ':name_badge:', ':microscope:', ':telescope:', ':newspaper:', ':football:', ':basketball:', ':soccer:', ':baseball:', ':tennis:', ':8ball:', ':rugby_football:', ':bowling:', ':golf:', ':gem:', ':ring:', ':trophy:', ':musical_score:', ':musical_keyboard:', ':violin:', ':video_game:', ':flower_playing_cards:', ':game_die:', ':dart:', ':clapper:', ':memo:', ':pencil:', ':book:', ':art:', ':microphone:', ':headphones:', ':trumpet:', ':saxophone:', ':guitar:', ':shoe:', ':sandal:', ':high_heel:', ':lipstick:', ':boot:', ':shirt:', ':tshirt:', ':necktie:', ':womans_clothes:', ':dress:', ':running_shirt_with_sash:', ':jeans:', ':kimono:', ':bikini:', ':ribbon:', ':tophat:', ':crown:', ':womans_hat:', ':mans_shoe:', ':closed_umbrella:', ':briefcase:', ':handbag:', ':pouch:', ':purse:', ':eyeglasses:', ':fishing_pole_and_fish:', ':coffee:', ':tea:', ':sake:', ':baby_bottle:', ':beer:', ':beers:', ':cocktail:', ':tropical_drink:', ':wine_glass:', ':fork_and_knife:', ':pizza:', ':hamburger:', ':fries:', ':poultry_leg:', ':meat_on_bone:', ':spaghetti:', ':curry:', ':fried_shrimp:', ':bento:', ':sushi:', ':fish_cake:', ':rice_ball:', ':rice_cracker:', ':rice:', ':ramen:', ':stew:', ':oden:', ':dango:', ':egg:', ':bread:', ':doughnut:', ':custard:', ':icecream:', ':ice_cream:', ':shaved_ice:', ':birthday:', ':cake:', ':cookie:', ':chocolate_bar:', ':candy:', ':lollipop:', ':honey_pot:', ':apple:', ':green_apple:', ':tangerine:', ':lemon:', ':cherries:', ':grapes:', ':watermelon:', ':strawberry:', ':peach:', ':melon:', ':banana:', ':pear:', ':pineapple:', ':sweet_potato:', ':eggplant:', ':tomato:', ':corn:', ':house:', ':house_with_garden:', ':school:', ':office:', ':post_office:', ':hospital:', ':bank:', ':convenience_store:', ':love_hotel:', ':hotel:', ':wedding:', ':church:', ':department_store:', ':european_post_office:', ':city_sunrise:', ':city_sunset:', ':japanese_castle:', ':european_castle:', ':tent:', ':factory:', ':tokyo_tower:', ':japan:', ':mount_fuji:', ':sunrise_over_mountains:', ':sunrise:', ':stars:', ':statue_of_liberty:', ':bridge_at_night:', ':carousel_horse:', ':rainbow:', ':ferris_wheel:', ':fountain:', ':roller_coaster:', ':ship:', ':speedboat:', ':boat:', ':sailboat:', ':rowboat:', ':anchor:', ':rocket:', ':airplane:', ':helicopter:', ':steam_locomotive:', ':tram:', ':mountain_railway:', ':bike:', ':aerial_tramway:', ':suspension_railway:', ':mountain_cableway:', ':tractor:', ':blue_car:', ':oncoming_automobile:', ':car:', ':red_car:', ':taxi:', ':oncoming_taxi:', ':articulated_lorry:', ':bus:', ':oncoming_bus:', ':rotating_light:', ':police_car:', ':oncoming_police_car:', ':fire_engine:', ':ambulance:', ':minibus:', ':truck:', ':train:', ':station:', ':train2:', ':bullettrain_front:', ':bullettrain_side:', ':light_rail:', ':monorail:', ':railway_car:', ':trolleybus:', ':ticket:', ':fuelpump:', ':vertical_traffic_light:', ':traffic_light:', ':warning:', ':construction:', ':beginner:', ':atm:', ':slot_machine:', ':busstop:', ':barber:', ':hotsprings:', ':checkered_flag:', ':crossed_flags:', ':izakaya_lantern:', ':moyai:', ':circus_tent:', ':performing_arts:', ':round_pushpin:', ':triangular_flag_on_post:', ':jp:', ':kr:', ':cn:', ':us:', ':fr:', ':es:', ':it:', ':ru:', ':gb:', ':uk:', ':de:', ':one:', ':two:', ':three:', ':four:', ':five:', ':six:', ':seven:', ':eight:', ':nine:', ':keycap_ten:', ':1234:', ':zero:', ':hash:', ':symbols:', ':arrow_backward:', ':arrow_down:', ':arrow_forward:', ':arrow_left:', ':capital_abcd:', ':abcd:', ':abc:', ':arrow_lower_left:', ':arrow_lower_right:', ':arrow_right:', ':arrow_up:', ':arrow_upper_left:', ':arrow_upper_right:', ':arrow_double_down:', ':arrow_double_up:', ':arrow_down_small:', ':arrow_heading_down:', ':arrow_heading_up:', ':leftwards_arrow_with_hook:', ':arrow_right_hook:', ':left_right_arrow:', ':arrow_up_down:', ':arrow_up_small:', ':arrows_clockwise:', ':arrows_counterclockwise:', ':rewind:', ':fast_forward:', ':information_source:', ':ok:', ':twisted_rightwards_arrows:', ':repeat:', ':repeat_one:', ':new:', ':top:', ':up:', ':cool:', ':free:', ':ng:', ':cinema:', ':koko:', ':signal_strength:', ':u5272:', ':u5408:', ':u55b6:', ':u6307:', ':u6708:', ':u6709:', ':u6e80:', ':u7121:', ':u7533:', ':u7a7a:', ':u7981:', ':sa:', ':restroom:', ':mens:', ':womens:', ':baby_symbol:', ':no_smoking:', ':parking:', ':wheelchair:', ':metro:', ':baggage_claim:', ':accept:', ':wc:', ':potable_water:', ':put_litter_in_its_place:', ':secret:', ':congratulations:', ':m:', ':passport_control:', ':left_luggage:', ':customs:', ':ideograph_advantage:', ':cl:', ':sos:', ':id:', ':no_entry_sign:', ':underage:', ':no_mobile_phones:', ':do_not_litter:', ':non-potable_water:', ':no_bicycles:', ':no_pedestrians:', ':children_crossing:', ':no_entry:', ':eight_spoked_asterisk:', ':sparkle:', ':eight_pointed_black_star:', ':heart_decoration:', ':vs:', ':vibration_mode:', ':mobile_phone_off:', ':chart:', ':currency_exchange:', ':aries:', ':taurus:', ':gemini:', ':cancer:', ':leo:', ':virgo:', ':libra:', ':scorpius:', ':sagittarius:', ':capricorn:', ':aquarius:', ':pisces:', ':ophiuchus:', ':six_pointed_star:', ':negative_squared_cross_mark:', ':a:', ':b:', ':ab:', ':o2:', ':diamond_shape_with_a_dot_inside:', ':recycle:', ':end:', ':back:', ':on:', ':soon:', ':clock1:', ':clock130:', ':clock10:', ':clock1030:', ':clock11:', ':clock1130:', ':clock12:', ':clock1230:', ':clock2:', ':clock230:', ':clock3:', ':clock330:', ':clock4:', ':clock430:', ':clock5:', ':clock530:', ':clock6:', ':clock630:', ':clock7:', ':clock730:', ':clock8:', ':clock830:', ':clock9:', ':clock930:', ':heavy_dollar_sign:', ':copyright:', ':registered:', ':tm:', ':x:', ':heavy_exclamation_mark:', ':bangbang:', ':interrobang:', ':o:', ':heavy_multiplication_x:', ':heavy_plus_sign:', ':heavy_minus_sign:', ':heavy_division_sign:', ':white_flower:', ':100:', ':heavy_check_mark:', ':ballot_box_with_check:', ':radio_button:', ':link:', ':curly_loop:', ':wavy_dash:', ':part_alternation_mark:', ':trident:', ':black_small_square:', ':white_small_square:', ':black_medium_small_square:', ':white_medium_small_square:', ':black_medium_square:', ':white_medium_square:', ':white_large_square:', ':white_check_mark:', ':black_square_button:', ':white_square_button:', ':black_circle:', ':white_circle:', ':red_circle:', ':large_blue_circle:', ':large_blue_diamond:', ':large_orange_diamond:', ':small_blue_diamond:', ':small_orange_diamond:', ':small_red_triangle:', ':small_red_triangle_down:'] diff --git a/static/plugins/js/ext-language_tools.js b/static/plugins/js/ext-language_tools.js deleted file mode 100644 index 7f7e0a6..0000000 --- a/static/plugins/js/ext-language_tools.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * Ace v1.4.2 - * https://cdnjs.com/libraries/ace/ - */ -define("ace/snippets",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/anchor","ace/keyboard/hash_handler","ace/tokenizer","ace/lib/dom","ace/editor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./lib/lang"),o=e("./range").Range,u=e("./anchor").Anchor,a=e("./keyboard/hash_handler").HashHandler,f=e("./tokenizer").Tokenizer,l=o.comparePoints,c=function(){this.snippetMap={},this.snippetNameMap={}};(function(){r.implement(this,i),this.getTokenizer=function(){function e(e,t,n){return e=e.substr(1),/^\d+$/.test(e)&&!n.inFormatString?[{tabstopId:parseInt(e,10)}]:[{text:e}]}function t(e){return"(?:[^\\\\"+e+"]|\\\\.)"}return c.$tokenizer=new f({start:[{regex:/:/,onMatch:function(e,t,n){return n.length&&n[0].expectIf?(n[0].expectIf=!1,n[0].elseBranch=n[0],[n[0]]):":"}},{regex:/\\./,onMatch:function(e,t,n){var r=e[1];return r=="}"&&n.length?e=r:"`$\\".indexOf(r)!=-1?e=r:n.inFormatString&&(r=="n"?e="\n":r=="t"?e="\n":"ulULE".indexOf(r)!=-1&&(e={changeCase:r,local:r>"a"})),[e]}},{regex:/}/,onMatch:function(e,t,n){return[n.length?n.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:e},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(t,n,r){var i=e(t.substr(1),n,r);return r.unshift(i[0]),i},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+t("\\|")+"*\\|",onMatch:function(e,t,n){n[0].choices=e.slice(1,-1).split(",")},next:"start"},{regex:"/("+t("/")+"+)/(?:("+t("/")+"*)/)(\\w*):?",onMatch:function(e,t,n){var r=n[0];return r.fmtString=e,e=this.splitRegex.exec(e),r.guard=e[1],r.fmt=e[2],r.flag=e[3],""},next:"start"},{regex:"`"+t("`")+"*`",onMatch:function(e,t,n){return n[0].code=e.splice(1,-1),""},next:"start"},{regex:"\\?",onMatch:function(e,t,n){n[0]&&(n[0].expectIf=!0)},next:"start"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:"/("+t("/")+"+)/",token:"regex"},{regex:"",onMatch:function(e,t,n){n.inFormatString=!0},next:"start"}]}),c.prototype.getTokenizer=function(){return c.$tokenizer},c.$tokenizer},this.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},this.$getDefaultValue=function(e,t){if(/^[A-Z]\d+$/.test(t)){var n=t.substr(1);return(this.variables[t[0]+"__"]||{})[n]}if(/^\d+$/.test(t))return(this.variables.__||{})[t];t=t.replace(/^TM_/,"");if(!e)return;var r=e.session;switch(t){case"CURRENT_WORD":var i=r.getWordRange();case"SELECTION":case"SELECTED_TEXT":return r.getTextRange(i);case"CURRENT_LINE":return r.getLine(e.getCursorPosition().row);case"PREV_LINE":return r.getLine(e.getCursorPosition().row-1);case"LINE_INDEX":return e.getCursorPosition().column;case"LINE_NUMBER":return e.getCursorPosition().row+1;case"SOFT_TABS":return r.getUseSoftTabs()?"YES":"NO";case"TAB_SIZE":return r.getTabSize();case"FILENAME":case"FILEPATH":return"";case"FULLNAME":return"Ace"}},this.variables={},this.getVariableValue=function(e,t){return this.variables.hasOwnProperty(t)?this.variables[t](e,t)||"":this.$getDefaultValue(e,t)||""},this.tmStrFormat=function(e,t,n){var r=t.flag||"",i=t.guard;i=new RegExp(i,r.replace(/[^gi]/,""));var s=this.tokenizeTmSnippet(t.fmt,"formatString"),o=this,u=e.replace(i,function(){o.variables.__=arguments;var e=o.resolveVariables(s,n),t="E";for(var r=0;r1?(y=t[t.length-1].length,g+=t.length-1):y+=e.length,b+=e}else e.start?e.end={row:g,column:y}:e.start={row:g,column:y}});var w=e.getSelectionRange(),E=e.session.replace(w,b),S=new h(e),x=e.inVirtualSelectionMode&&e.selection.index;S.addTabstops(u,w.start,E,x)},this.insertSnippet=function(e,t){var n=this;if(e.inVirtualSelectionMode)return n.insertSnippetForSelection(e,t);e.forEachSelection(function(){n.insertSnippetForSelection(e,t)},null,{keepOrder:!0}),e.tabstopManager&&e.tabstopManager.tabNext()},this.$getScope=function(e){var t=e.session.$mode.$id||"";t=t.split("/").pop();if(t==="html"||t==="php"){t==="php"&&!e.session.$mode.inlinePhp&&(t="html");var n=e.getCursorPosition(),r=e.session.getState(n.row);typeof r=="object"&&(r=r[0]),r.substring&&(r.substring(0,3)=="js-"?t="javascript":r.substring(0,4)=="css-"?t="css":r.substring(0,4)=="php-"&&(t="php"))}return t},this.getActiveScopes=function(e){var t=this.$getScope(e),n=[t],r=this.snippetMap;return r[t]&&r[t].includeScopes&&n.push.apply(n,r[t].includeScopes),n.push("_"),n},this.expandWithTab=function(e,t){var n=this,r=e.forEachSelection(function(){return n.expandSnippetForSelection(e,t)},null,{keepOrder:!0});return r&&e.tabstopManager&&e.tabstopManager.tabNext(),r},this.expandSnippetForSelection=function(e,t){var n=e.getCursorPosition(),r=e.session.getLine(n.row),i=r.substring(0,n.column),s=r.substr(n.column),o=this.snippetMap,u;return this.getActiveScopes(e).some(function(e){var t=o[e];return t&&(u=this.findMatchingSnippet(t,i,s)),!!u},this),u?t&&t.dryRun?!0:(e.session.doc.removeInLine(n.row,n.column-u.replaceBefore.length,n.column+u.replaceAfter.length),this.variables.M__=u.matchBefore,this.variables.T__=u.matchAfter,this.insertSnippetForSelection(e,u.content),this.variables.M__=this.variables.T__=null,!0):!1},this.findMatchingSnippet=function(e,t,n){for(var r=e.length;r--;){var i=e[r];if(i.startRe&&!i.startRe.test(t))continue;if(i.endRe&&!i.endRe.test(n))continue;if(!i.startRe&&!i.endRe)continue;return i.matchBefore=i.startRe?i.startRe.exec(t):[""],i.matchAfter=i.endRe?i.endRe.exec(n):[""],i.replaceBefore=i.triggerRe?i.triggerRe.exec(t)[0]:"",i.replaceAfter=i.endTriggerRe?i.endTriggerRe.exec(n)[0]:"",i}},this.snippetMap={},this.snippetNameMap={},this.register=function(e,t){function o(e){return e&&!/^\^?\(.*\)\$?$|^\\b$/.test(e)&&(e="(?:"+e+")"),e||""}function u(e,t,n){return e=o(e),t=o(t),n?(e=t+e,e&&e[e.length-1]!="$"&&(e+="$")):(e+=t,e&&e[0]!="^"&&(e="^"+e)),new RegExp(e)}function a(e){e.scope||(e.scope=t||"_"),t=e.scope,n[t]||(n[t]=[],r[t]={});var o=r[t];if(e.name){var a=o[e.name];a&&i.unregister(a),o[e.name]=e}n[t].push(e),e.tabTrigger&&!e.trigger&&(!e.guard&&/^\w/.test(e.tabTrigger)&&(e.guard="\\b"),e.trigger=s.escapeRegExp(e.tabTrigger));if(!e.trigger&&!e.guard&&!e.endTrigger&&!e.endGuard)return;e.startRe=u(e.trigger,e.guard,!0),e.triggerRe=new RegExp(e.trigger),e.endRe=u(e.endTrigger,e.endGuard,!0),e.endTriggerRe=new RegExp(e.endTrigger)}var n=this.snippetMap,r=this.snippetNameMap,i=this;e||(e=[]),e&&e.content?a(e):Array.isArray(e)&&e.forEach(a),this._signal("registerSnippets",{scope:t})},this.unregister=function(e,t){function i(e){var i=r[e.scope||t];if(i&&i[e.name]){delete i[e.name];var s=n[e.scope||t],o=s&&s.indexOf(e);o>=0&&s.splice(o,1)}}var n=this.snippetMap,r=this.snippetNameMap;e.content?i(e):Array.isArray(e)&&e.forEach(i)},this.parseSnippetFile=function(e){e=e.replace(/\r/g,"");var t=[],n={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,i;while(i=r.exec(e)){if(i[1])try{n=JSON.parse(i[1]),t.push(n)}catch(s){}if(i[4])n.content=i[4].replace(/^\t/gm,""),t.push(n),n={};else{var o=i[2],u=i[3];if(o=="regex"){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(u)[1],n.trigger=a.exec(u)[1],n.endTrigger=a.exec(u)[1],n.endGuard=a.exec(u)[1]}else o=="snippet"?(n.tabTrigger=u.match(/^\S*/)[0],n.name||(n.name=u)):n[o]=u}}return t},this.getSnippetByName=function(e,t){var n=this.snippetNameMap,r;return this.getActiveScopes(t).some(function(t){var i=n[t];return i&&(r=i[e]),!!r},this),r}}).call(c.prototype);var h=function(e){if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=s.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)};(function(){this.attach=function(e){this.index=0,this.ranges=[],this.tabstops=[],this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(e){var t=e,n=e.action[0]=="r",r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=i.column-r.column;n&&(u=-u,a=-a);if(!this.$inChange&&n){var f=this.selectedTabstop,c=f&&!f.some(function(e){return l(e.start,r)<=0&&l(e.end,i)>=0});if(c)return this.detach()}var h=this.ranges;for(var p=0;p0){this.removeRange(d),p--;continue}d.start.row==s&&d.start.column>r.column&&(d.start.column+=a),d.end.row==s&&d.end.column>=r.column&&(d.end.column+=a),d.start.row>=s&&(d.start.row+=u),d.end.row>=s&&(d.end.row+=u),l(d.start,d.end)>0&&this.removeRange(d)}h.length||this.detach()},this.updateLinkedFields=function(){var e=this.selectedTabstop;if(!e||!e.hasLinkedRanges)return;this.$inChange=!0;var n=this.editor.session,r=n.getTextRange(e.firstNonLinked);for(var i=e.length;i--;){var s=e[i];if(!s.linked)continue;var o=t.snippetManager.tmStrFormat(r,s.original);n.replace(s,o)}this.$inChange=!1},this.onAfterExec=function(e){e.command&&!e.command.readOnly&&this.updateLinkedFields()},this.onChangeSelection=function(){if(!this.editor)return;var e=this.editor.selection.lead,t=this.editor.selection.anchor,n=this.editor.selection.isEmpty();for(var r=this.ranges.length;r--;){if(this.ranges[r].linked)continue;var i=this.ranges[r].contains(e.row,e.column),s=n||this.ranges[r].contains(t.row,t.column);if(i&&s)return}this.detach()},this.onChangeSession=function(){this.detach()},this.tabNext=function(e){var t=this.tabstops.length,n=this.index+(e||1);n=Math.min(Math.max(n,1),t),n==t&&(n=0),this.selectTabstop(n),n===0&&this.detach()},this.selectTabstop=function(e){this.$openTabstops=null;var t=this.tabstops[this.index];t&&this.addTabstopMarkers(t),this.index=e,t=this.tabstops[this.index];if(!t||!t.length)return;this.selectedTabstop=t;if(!this.editor.inVirtualSelectionMode){var n=this.editor.multiSelect;n.toSingleRange(t.firstNonLinked.clone());for(var r=t.length;r--;){if(t.hasLinkedRanges&&t[r].linked)continue;n.addRange(t[r].clone(),!0)}n.ranges[0]&&n.addRange(n.ranges[0].clone())}else this.editor.selection.setRange(t.firstNonLinked);this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.addTabstops=function(e,t,n){this.$openTabstops||(this.$openTabstops=[]);if(!e[0]){var r=o.fromPoints(n,n);v(r.start,t),v(r.end,t),e[0]=[r],e[0].index=0}var i=this.index,s=[i+1,0],u=this.ranges;e.forEach(function(e,n){var r=this.$openTabstops[n]||e;for(var i=e.length;i--;){var a=e[i],f=o.fromPoints(a.start,a.end||a.start);d(f.start,t),d(f.end,t),f.original=a,f.tabstop=r,u.push(f),r!=e?r.unshift(f):r[i]=f,a.fmtString?(f.linked=!0,r.hasLinkedRanges=!0):r.firstNonLinked||(r.firstNonLinked=f)}r.firstNonLinked||(r.hasLinkedRanges=!1),r===e&&(s.push(r),this.$openTabstops[n]=r),this.addTabstopMarkers(r)},this),s.length>2&&(this.tabstops.length&&s.push(s.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,s))},this.addTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},this.removeTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},this.removeRange=function(e){var t=e.tabstop.indexOf(e);e.tabstop.splice(t,1),t=this.ranges.indexOf(e),this.ranges.splice(t,1),this.editor.session.removeMarker(e.markerId),e.tabstop.length||(t=this.tabstops.indexOf(e.tabstop),t!=-1&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},this.keyboardHandler=new a,this.keyboardHandler.bindKeys({Tab:function(e){if(t.snippetManager&&t.snippetManager.expandWithTab(e))return;e.tabstopManager.tabNext(1)},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1)},Esc:function(e){e.tabstopManager.detach()},Return:function(e){return!1}})}).call(h.prototype);var p={};p.onChange=u.prototype.onChange,p.setPosition=function(e,t){this.pos.row=e,this.pos.column=t},p.update=function(e,t,n){this.$insertRight=n,this.pos=e,this.onChange(t)};var d=function(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row},v=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};e("./lib/dom").importCssString(".ace_snippet-marker { -moz-box-sizing: border-box; box-sizing: border-box; background: rgba(194, 193, 208, 0.09); border: 1px dotted rgba(211, 208, 235, 0.62); position: absolute;}"),t.snippetManager=new c;var m=e("./editor").Editor;(function(){this.insertSnippet=function(e,n){return t.snippetManager.insertSnippet(this,e,n)},this.expandSnippet=function(e){return t.snippetManager.expandWithTab(this,e)}}).call(m.prototype)}),define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../virtual_renderer").VirtualRenderer,i=e("../editor").Editor,s=e("../range").Range,o=e("../lib/event"),u=e("../lib/lang"),a=e("../lib/dom"),f=function(e){var t=new r(e);t.$maxLines=4;var n=new i(t);return n.setHighlightActiveLine(!1),n.setShowPrintMargin(!1),n.renderer.setShowGutter(!1),n.renderer.setHighlightGutterLine(!1),n.$mouseHandler.$focusTimeout=0,n.$highlightTagPending=!0,n},l=function(e){var t=a.createElement("div"),n=new f(t);e&&e.appendChild(t),t.style.display="none",n.renderer.content.style.cursor="default",n.renderer.setStyle("ace_autocomplete"),n.setOption("displayIndentGuides",!1),n.setOption("dragDelay",150);var r=function(){};n.focus=r,n.$isFocused=!0,n.renderer.$cursorLayer.restartTimer=r,n.renderer.$cursorLayer.element.style.opacity=0,n.renderer.$maxLines=8,n.renderer.$keepTextAreaAtCursor=!1,n.setHighlightActiveLine(!1),n.session.highlight(""),n.session.$searchHighlight.clazz="ace_highlight-marker",n.on("mousedown",function(e){var t=e.getDocumentPosition();n.selection.moveToPosition(t),c.start.row=c.end.row=t.row,e.stop()});var i,l=new s(-1,0,-1,Infinity),c=new s(-1,0,-1,Infinity);c.id=n.session.addMarker(c,"ace_active-line","fullLine"),n.setSelectOnHover=function(e){e?l.id&&(n.session.removeMarker(l.id),l.id=null):l.id=n.session.addMarker(l,"ace_line-hover","fullLine")},n.setSelectOnHover(!1),n.on("mousemove",function(e){if(!i){i=e;return}if(i.x==e.x&&i.y==e.y)return;i=e,i.scrollTop=n.renderer.scrollTop;var t=i.getDocumentPosition().row;l.start.row!=t&&(l.id||n.setRow(t),p(t))}),n.renderer.on("beforeRender",function(){if(i&&l.start.row!=-1){i.$pos=null;var e=i.getDocumentPosition().row;l.id||n.setRow(e),p(e,!0)}}),n.renderer.on("afterRender",function(){var e=n.getRow(),t=n.renderer.$textLayer,r=t.element.childNodes[e-t.config.firstRow];r!==t.selectedNode&&t.selectedNode&&a.removeCssClass(t.selectedNode,"ace_selected"),t.selectedNode=r,r&&a.addCssClass(r,"ace_selected")});var h=function(){p(-1)},p=function(e,t){e!==l.start.row&&(l.start.row=l.end.row=e,t||n.session._emit("changeBackMarker"),n._emit("changeHoverMarker"))};n.getHoveredRow=function(){return l.start.row},o.addListener(n.container,"mouseout",h),n.on("hide",h),n.on("changeSelection",h),n.session.doc.getLength=function(){return n.data.length},n.session.doc.getLine=function(e){var t=n.data[e];return typeof t=="string"?t:t&&t.value||""};var d=n.session.bgTokenizer;return d.$tokenizeRow=function(e){function s(e,n){e&&r.push({type:(t.className||"")+(n||""),value:e})}var t=n.data[e],r=[];if(!t)return r;typeof t=="string"&&(t={value:t});var i=t.caption||t.value||t.name,o=i.toLowerCase(),u=(n.filterText||"").toLowerCase(),a=0,f=0;for(var l=0;l<=u.length;l++)if(l!=f&&(t.matchMask&1<o/2&&!r;c&&l+t+f>o?(a.$maxPixelHeight=l-2*this.$borderSize,s.style.top="",s.style.bottom=o-l+"px",n.isTopdown=!1):(l+=t,a.$maxPixelHeight=o-l-.2*t,s.style.top=l+"px",s.style.bottom="",n.isTopdown=!0),s.style.display="";var h=e.left;h+s.offsetWidth>u&&(h=u-s.offsetWidth),s.style.left=h+"px",this._signal("show"),i=null,n.isOpen=!0},n.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},n.$imageSize=0,n.$borderSize=1,n};a.importCssString(".ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line { background-color: #CAD6FA; z-index: 1;}.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line { background-color: #3a674e;}.ace_editor.ace_autocomplete .ace_line-hover { border: 1px solid #abbffe; margin-top: -1px; background: rgba(233,233,253,0.4); position: absolute; z-index: 2;}.ace_dark.ace_editor.ace_autocomplete .ace_line-hover { border: 1px solid rgba(109, 150, 13, 0.8); background: rgba(58, 103, 78, 0.62);}.ace_completion-meta { opacity: 0.5; margin: 0.9em;}.ace_editor.ace_autocomplete .ace_completion-highlight{ color: #2d69c7;}.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{ color: #93ca12;}.ace_editor.ace_autocomplete { width: 300px; z-index: 200000; border: 1px lightgray solid; position: fixed; box-shadow: 2px 3px 5px rgba(0,0,0,.2); line-height: 1.4; background: #fefefe; color: #111;}.ace_dark.ace_editor.ace_autocomplete { border: 1px #484747 solid; box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51); line-height: 1.4; background: #25282c; color: #c1c1c1;}","autocompletion.css"),t.AcePopup=l}),define("ace/autocomplete/util",["require","exports","module"],function(e,t,n){"use strict";t.parForEach=function(e,t,n){var r=0,i=e.length;i===0&&n();for(var s=0;s=0;s--){if(!n.test(e[s]))break;i.push(e[s])}return i.reverse().join("")},t.retrieveFollowingIdentifier=function(e,t,n){n=n||r;var i=[];for(var s=t;s=n?-1:t+1;break;case"start":t=0;break;case"end":t=n}this.popup.setRow(t)},this.insertMatch=function(e,t){e||(e=this.popup.getData(this.popup.getRow()));if(!e)return!1;if(e.completer&&e.completer.insertMatch)e.completer.insertMatch(this.editor,e);else{if(this.completions.filterText){var n=this.editor.selection.getAllRanges();for(var r=0,i;i=n[r];r++)i.start.column-=this.completions.filterText.length,this.editor.session.remove(i)}e.snippet?f.insertSnippet(this.editor,e.snippet):this.editor.execCommand("insertstring",e.value||e)}this.detach()},this.commands={Up:function(e){e.completer.goTo("up")},Down:function(e){e.completer.goTo("down")},"Ctrl-Up|Ctrl-Home":function(e){e.completer.goTo("start")},"Ctrl-Down|Ctrl-End":function(e){e.completer.goTo("end")},Esc:function(e){e.completer.detach()},Return:function(e){return e.completer.insertMatch()},"Shift-Return":function(e){e.completer.insertMatch(null,{deleteSuffix:!0})},Tab:function(e){var t=e.completer.insertMatch();if(!!t||!!e.tabstopManager)return t;e.completer.goTo("down")},PageUp:function(e){e.completer.popup.gotoPageUp()},PageDown:function(e){e.completer.popup.gotoPageDown()}},this.gatherCompletions=function(e,t){var n=e.getSession(),r=e.getCursorPosition(),i=s.getCompletionPrefix(e);this.base=n.doc.createAnchor(r.row,r.column-i.length),this.base.$insertRight=!0;var o=[],u=e.completers.length;return e.completers.forEach(function(a,f){a.getCompletions(e,n,r,i,function(n,r){!n&&r&&(o=o.concat(r)),t(null,{prefix:s.getCompletionPrefix(e),matches:o,finished:--u===0})})}),!0},this.showPopup=function(e){this.editor&&this.detach(),this.activated=!0,this.editor=e,e.completer!=this&&(e.completer&&e.completer.detach(),e.completer=this),e.on("changeSelection",this.changeListener),e.on("blur",this.blurListener),e.on("mousedown",this.mousedownListener),e.on("mousewheel",this.mousewheelListener),this.updateCompletions()},this.updateCompletions=function(e){if(e&&this.base&&this.completions){var t=this.editor.getCursorPosition(),n=this.editor.session.getTextRange({start:this.base,end:t});if(n==this.completions.filterText)return;this.completions.setFilter(n);if(!this.completions.filtered.length)return this.detach();if(this.completions.filtered.length==1&&this.completions.filtered[0].value==n&&!this.completions.filtered[0].snippet)return this.detach();this.openPopup(this.editor,n,e);return}var r=this.gatherCompletionsId;this.gatherCompletions(this.editor,function(t,n){var i=function(){if(!n.finished)return;return this.detach()}.bind(this),s=n.prefix,o=n&&n.matches;if(!o||!o.length)return i();if(s.indexOf(n.prefix)!==0||r!=this.gatherCompletionsId)return;this.completions=new c(o),this.exactMatch&&(this.completions.exactMatch=!0),this.completions.setFilter(s);var u=this.completions.filtered;if(!u.length)return i();if(u.length==1&&u[0].value==s&&!u[0].snippet)return i();if(this.autoInsert&&u.length==1&&n.finished)return this.insertMatch(u[0]);this.openPopup(this.editor,s,e)}.bind(this))},this.cancelContextMenu=function(){this.editor.$mouseHandler.cancelContextMenu()},this.updateDocTooltip=function(){var e=this.popup,t=e.data,n=t&&(t[e.getHoveredRow()]||t[e.getRow()]),r=null;if(!n||!this.editor||!this.popup.isOpen)return this.hideDocTooltip();this.editor.completers.some(function(e){return e.getDocTooltip&&(r=e.getDocTooltip(n)),r}),r||(r=n),typeof r=="string"&&(r={docText:r});if(!r||!r.docHTML&&!r.docText)return this.hideDocTooltip();this.showDocTooltip(r)},this.showDocTooltip=function(e){this.tooltipNode||(this.tooltipNode=a.createElement("div"),this.tooltipNode.className="ace_tooltip ace_doc-tooltip",this.tooltipNode.style.margin=0,this.tooltipNode.style.pointerEvents="auto",this.tooltipNode.tabIndex=-1,this.tooltipNode.onblur=this.blurListener.bind(this),this.tooltipNode.onclick=this.onTooltipClick.bind(this));var t=this.tooltipNode;e.docHTML?t.innerHTML=e.docHTML:e.docText&&(t.textContent=e.docText),t.parentNode||document.body.appendChild(t);var n=this.popup,r=n.container.getBoundingClientRect();t.style.top=n.container.style.top,t.style.bottom=n.container.style.bottom,t.style.display="block",window.innerWidth-r.right<320?r.left<320?n.isTopdown?(t.style.top=r.bottom+"px",t.style.left=r.left+"px",t.style.right="",t.style.bottom=""):(t.style.top=n.container.offsetTop-t.offsetHeight+"px",t.style.left=r.left+"px",t.style.right="",t.style.bottom=""):(t.style.right=window.innerWidth-r.left+"px",t.style.left=""):(t.style.left=r.right+1+"px",t.style.right="")},this.hideDocTooltip=function(){this.tooltipTimer.cancel();if(!this.tooltipNode)return;var e=this.tooltipNode;!this.editor.isFocused()&&document.activeElement==e&&this.editor.focus(),this.tooltipNode=null,e.parentNode&&e.parentNode.removeChild(e)},this.onTooltipClick=function(e){var t=e.target;while(t&&t!=this.tooltipNode){if(t.nodeName=="A"&&t.href){t.rel="noreferrer",t.target="_blank";break}t=t.parentNode}}}).call(l.prototype),l.startCommand={name:"startAutocomplete",exec:function(e){e.completer||(e.completer=new l),e.completer.autoInsert=!1,e.completer.autoSelect=!0,e.completer.showPopup(e),e.completer.cancelContextMenu()},bindKey:"Ctrl-Space|Ctrl-Shift-Space|Alt-Space"};var c=function(e,t){this.all=e,this.filtered=e,this.filterText=t||"",this.exactMatch=!1};(function(){this.setFilter=function(e){if(e.length>this.filterText&&e.lastIndexOf(this.filterText,0)===0)var t=this.filtered;else var t=this.all;this.filterText=e,t=this.filterCompletions(t,this.filterText),t=t.sort(function(e,t){return t.exactMatch-e.exactMatch||t.$score-e.$score||(e.caption||e.value)<(t.caption||t.value)});var n=null;t=t.filter(function(e){var t=e.snippet||e.caption||e.value;return t===n?!1:(n=t,!0)}),this.filtered=t},this.filterCompletions=function(e,t){var n=[],r=t.toUpperCase(),i=t.toLowerCase();e:for(var s=0,o;o=e[s];s++){var u=o.caption||o.value||o.snippet;if(!u)continue;var a=-1,f=0,l=0,c,h;if(this.exactMatch){if(t!==u.substr(0,t.length))continue e}else{var p=u.toLowerCase().indexOf(i);if(p>-1)l=p;else for(var d=0;d=0?m<0||v0&&(a===-1&&(l+=10),l+=h,f|=1<",o.escapeHTML(e.caption),"","
",o.escapeHTML(e.snippet)].join(""))}},c=[l,a,f];t.setCompleters=function(e){c.length=0,e&&c.push.apply(c,e)},t.addCompleter=function(e){c.push(e)},t.textCompleter=a,t.keyWordCompleter=f,t.snippetCompleter=l;var h={name:"expandSnippet",exec:function(e){return r.expandWithTab(e)},bindKey:"Tab"},p=function(e,t){d(t.session.$mode)},d=function(e){var t=e.$id;r.files||(r.files={}),v(t),e.modes&&e.modes.forEach(d)},v=function(e){if(!e||r.files[e])return;var t=e.replace("mode","snippets");r.files[e]={},s.loadModule(t,function(t){t&&(r.files[e]=t,!t.snippets&&t.snippetText&&(t.snippets=r.parseSnippetFile(t.snippetText)),r.register(t.snippets||[],t.scope),t.includeScopes&&(r.snippetMap[t.scope].includeScopes=t.includeScopes,t.includeScopes.forEach(function(e){v("ace/mode/"+e)})))})},m=function(e){var t=e.editor,n=t.completer&&t.completer.activated;if(e.command.name==="backspace")n&&!u.getCompletionPrefix(t)&&t.completer.detach();else if(e.command.name==="insertstring"){var r=u.getCompletionPrefix(t);r&&!n&&(t.completer||(t.completer=new i),t.completer.autoInsert=!1,t.completer.showPopup(t))}},g=e("../editor").Editor;e("../config").defineOptions(g.prototype,"editor",{enableBasicAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:c),this.commands.addCommand(i.startCommand)):this.commands.removeCommand(i.startCommand)},value:!1},enableLiveAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:c),this.commands.on("afterExec",m)):this.commands.removeListener("afterExec",m)},value:!1},enableSnippets:{set:function(e){e?(this.commands.addCommand(h),this.on("changeMode",p),p(null,this)):(this.commands.removeCommand(h),this.off("changeMode",p))},value:!1}})}); (function() { - window.require(["ace/ext/language_tools"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); -})(); diff --git a/static/plugins/js/highlight.min.js b/static/plugins/js/highlight.min.js deleted file mode 100644 index 0271416..0000000 --- a/static/plugins/js/highlight.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! highlight.js v9.9.0 | BSD3 License | git.io/hljslicense */ -!function(e){var t="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):t&&(t.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return t.hljs}))}(function(e){function t(e){return e.replace(/[&<>]/gm,function(e){return L[e]})}function r(e){return e.nodeName.toLowerCase()}function a(e,t){var r=e&&e.exec(t);return r&&0===r.index}function n(e){return C.test(e)}function i(e){var t,r,a,i,s=e.className+" ";if(s+=e.parentNode?e.parentNode.className:"",r=E.exec(s))return y(r[1])?r[1]:"no-highlight";for(s=s.split(/\s+/),t=0,a=s.length;a>t;t++)if(i=s[t],n(i)||y(i))return i}function s(e,t){var r,a={};for(r in e)a[r]=e[r];if(t)for(r in t)a[r]=t[r];return a}function c(e){var t=[];return function a(e,n){for(var i=e.firstChild;i;i=i.nextSibling)3===i.nodeType?n+=i.nodeValue.length:1===i.nodeType&&(t.push({event:"start",offset:n,node:i}),n=a(i,n),r(i).match(/br|hr|img|input/)||t.push({event:"stop",offset:n,node:i}));return n}(e,0),t}function o(e,a,n){function i(){return e.length&&a.length?e[0].offset!==a[0].offset?e[0].offset"}function c(e){u+=""}function o(e){("start"===e.event?s:c)(e.node)}for(var l=0,u="",d=[];e.length||a.length;){var b=i();if(u+=t(n.substring(l,b[0].offset)),l=b[0].offset,b===e){d.reverse().forEach(c);do o(b.splice(0,1)[0]),b=i();while(b===e&&b.length&&b[0].offset===l);d.reverse().forEach(s)}else"start"===b[0].event?d.push(b[0].node):d.pop(),o(b.splice(0,1)[0])}return u+t(n.substr(l))}function l(e){function t(e){return e&&e.source||e}function r(r,a){return new RegExp(t(r),"m"+(e.cI?"i":"")+(a?"g":""))}function a(n,i){if(!n.compiled){if(n.compiled=!0,n.k=n.k||n.bK,n.k){var c={},o=function(t,r){e.cI&&(r=r.toLowerCase()),r.split(" ").forEach(function(e){var r=e.split("|");c[r[0]]=[t,r[1]?Number(r[1]):1]})};"string"==typeof n.k?o("keyword",n.k):N(n.k).forEach(function(e){o(e,n.k[e])}),n.k=c}n.lR=r(n.l||/\w+/,!0),i&&(n.bK&&(n.b="\\b("+n.bK.split(" ").join("|")+")\\b"),n.b||(n.b=/\B|\b/),n.bR=r(n.b),n.e||n.eW||(n.e=/\B|\b/),n.e&&(n.eR=r(n.e)),n.tE=t(n.e)||"",n.eW&&i.tE&&(n.tE+=(n.e?"|":"")+i.tE)),n.i&&(n.iR=r(n.i)),null==n.r&&(n.r=1),n.c||(n.c=[]);var l=[];n.c.forEach(function(e){e.v?e.v.forEach(function(t){l.push(s(e,t))}):l.push("self"===e?n:e)}),n.c=l,n.c.forEach(function(e){a(e,n)}),n.starts&&a(n.starts,i);var u=n.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([n.tE,n.i]).map(t).filter(Boolean);n.t=u.length?r(u.join("|"),!0):{exec:function(){return null}}}}a(e)}function u(e,r,n,i){function s(e,t){var r,n;for(r=0,n=t.c.length;n>r;r++)if(a(t.c[r].bR,e))return t.c[r]}function c(e,t){if(a(e.eR,t)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?c(e.parent,t):void 0}function o(e,t){return!n&&a(t.iR,e)}function b(e,t){var r=v.cI?t[0].toLowerCase():t[0];return e.k.hasOwnProperty(r)&&e.k[r]}function p(e,t,r,a){var n=a?"":S.classPrefix,i='',i+t+s}function m(){var e,r,a,n;if(!N.k)return t(E);for(n="",r=0,N.lR.lastIndex=0,a=N.lR.exec(E);a;)n+=t(E.substring(r,a.index)),e=b(N,a),e?(M+=e[1],n+=p(e[0],t(a[0]))):n+=t(a[0]),r=N.lR.lastIndex,a=N.lR.exec(E);return n+t(E.substr(r))}function f(){var e="string"==typeof N.sL;if(e&&!k[N.sL])return t(E);var r=e?u(N.sL,E,!0,x[N.sL]):d(E,N.sL.length?N.sL:void 0);return N.r>0&&(M+=r.r),e&&(x[N.sL]=r.top),p(r.language,r.value,!1,!0)}function g(){C+=null!=N.sL?f():m(),E=""}function _(e){C+=e.cN?p(e.cN,"",!0):"",N=Object.create(e,{parent:{value:N}})}function h(e,t){if(E+=e,null==t)return g(),0;var r=s(t,N);if(r)return r.skip?E+=t:(r.eB&&(E+=t),g(),r.rB||r.eB||(E=t)),_(r,t),r.rB?0:t.length;var a=c(N,t);if(a){var n=N;n.skip?E+=t:(n.rE||n.eE||(E+=t),g(),n.eE&&(E=t));do N.cN&&(C+=B),N.skip||(M+=N.r),N=N.parent;while(N!==a.parent);return a.starts&&_(a.starts,""),n.rE?0:t.length}if(o(t,N))throw new Error('Illegal lexeme "'+t+'" for mode "'+(N.cN||"")+'"');return E+=t,t.length||1}var v=y(e);if(!v)throw new Error('Unknown language: "'+e+'"');l(v);var w,N=i||v,x={},C="";for(w=N;w!==v;w=w.parent)w.cN&&(C=p(w.cN,"",!0)+C);var E="",M=0;try{for(var L,R,A=0;;){if(N.t.lastIndex=A,L=N.t.exec(r),!L)break;R=h(r.substring(A,L.index),L[0]),A=L.index+R}for(h(r.substr(A)),w=N;w.parent;w=w.parent)w.cN&&(C+=B);return{r:M,value:C,language:e,top:N}}catch($){if($.message&&-1!==$.message.indexOf("Illegal"))return{r:0,value:t(r)};throw $}}function d(e,r){r=r||S.languages||N(k);var a={r:0,value:t(e)},n=a;return r.filter(y).forEach(function(t){var r=u(t,e,!1);r.language=t,r.r>n.r&&(n=r),r.r>a.r&&(n=a,a=r)}),n.language&&(a.second_best=n),a}function b(e){return S.tabReplace||S.useBR?e.replace(M,function(e,t){return S.useBR&&"\n"===e?"
":S.tabReplace?t.replace(/\t/g,S.tabReplace):void 0}):e}function p(e,t,r){var a=t?x[t]:r,n=[e.trim()];return e.match(/\bhljs\b/)||n.push("hljs"),-1===e.indexOf(a)&&n.push(a),n.join(" ").trim()}function m(e){var t,r,a,s,l,m=i(e);n(m)||(S.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e,l=t.textContent,a=m?u(m,l,!0):d(l),r=c(t),r.length&&(s=document.createElementNS("http://www.w3.org/1999/xhtml","div"),s.innerHTML=a.value,a.value=o(r,c(s),l)),a.value=b(a.value),e.innerHTML=a.value,e.className=p(e.className,m,a.language),e.result={language:a.language,re:a.r},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.r}))}function f(e){S=s(S,e)}function g(){if(!g.called){g.called=!0;var e=document.querySelectorAll("pre code");w.forEach.call(e,m)}}function _(){addEventListener("DOMContentLoaded",g,!1),addEventListener("load",g,!1)}function h(t,r){var a=k[t]=r(e);a.aliases&&a.aliases.forEach(function(e){x[e]=t})}function v(){return N(k)}function y(e){return e=(e||"").toLowerCase(),k[e]||k[x[e]]}var w=[],N=Object.keys,k={},x={},C=/^(no-?highlight|plain|text)$/i,E=/\blang(?:uage)?-([\w-]+)\b/i,M=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,B="
",S={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},L={"&":"&","<":"<",">":">"};return e.highlight=u,e.highlightAuto=d,e.fixMarkup=b,e.highlightBlock=m,e.configure=f,e.initHighlighting=g,e.initHighlightingOnLoad=_,e.registerLanguage=h,e.listLanguages=v,e.getLanguage=y,e.inherit=s,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|like)\b/},e.C=function(t,r,a){var n=e.inherit({cN:"comment",b:t,e:r,c:[]},a||{});return n.c.push(e.PWM),n.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),n},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e.registerLanguage("apache",function(e){var t={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"section",b:""},{cN:"attribute",b:/\w+/,r:0,k:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"meta",b:"\\s\\[",e:"\\]$"},{cN:"variable",b:"[\\$%]\\{",e:"\\}",c:["self",t]},t,e.QSM]}}],i:/\S/}}),e.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},r={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/-?[a-z\._]+/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,r,a,t]}}),e.registerLanguage("coffeescript",function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},r="[A-Za-z$_][0-9A-Za-z$_]*",a={cN:"subst",b:/#\{/,e:/}/,k:t},n=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,a]},{b:/"/,e:/"/,c:[e.BE,a]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[a,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{b:"@"+r},{sL:"javascript",eB:!0,eE:!0,v:[{b:"```",e:"```"},{b:"`",e:"`"}]}];a.c=n;var i=e.inherit(e.TM,{b:r}),s="(\\(.*\\))?\\s*\\B[-=]>",c={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:t,c:["self"].concat(n)}]};return{aliases:["coffee","cson","iced"],k:t,i:/\/\*/,c:n.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+r+"\\s*=\\s*"+s,e:"[-=]>",rB:!0,c:[i,c]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:s,e:"[-=]>",rB:!0,c:[c]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[i]},i]},{b:r+":",e:":",rB:!0,rE:!0,r:0}])}}),e.registerLanguage("cpp",function(e){var t={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},r={cN:"string",v:[{b:'(u8?|U)?L?"',e:'"',i:"\\n",c:[e.BE]},{b:'(u8?|U)?R"',e:'"',c:[e.BE]},{b:"'\\\\?.",e:"'",i:"."}]},a={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],r:0},n={cN:"meta",b:/#\s*[a-z]+\b/,e:/$/,k:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},c:[{b:/\\\n/,r:0},e.inherit(r,{cN:"meta-string"}),{cN:"meta-string",b:"<",e:">",i:"\\n"},e.CLCM,e.CBCM]},i=e.IR+"\\s*\\(",s={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},c=[t,e.CLCM,e.CBCM,a,r];return{aliases:["c","cc","h","c++","h++","hpp"],k:s,i:"",k:s,c:["self",t]},{b:e.IR+"::",k:s},{v:[{b:/=/,e:/;/},{b:/\(/,e:/\)/},{bK:"new throw return else",e:/;/}],k:s,c:c.concat([{b:/\(/,e:/\)/,k:s,c:c.concat(["self"]),r:0}]),r:0},{cN:"function",b:"("+e.IR+"[\\*&\\s]+)+"+i,rB:!0,e:/[{;=]/,eE:!0,k:s,i:/[^\w\s\*&]/,c:[{b:i,rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:s,r:0,c:[e.CLCM,e.CBCM,r,a,t]},e.CLCM,e.CBCM,n]}]),exports:{preprocessor:n,strings:r,k:s}}}),e.registerLanguage("cs",function(e){var t={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double else enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while nameof add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},r={cN:"string",b:'@"',e:'"',c:[{b:'""'}]},a=e.inherit(r,{i:/\n/}),n={cN:"subst",b:"{",e:"}",k:t},i=e.inherit(n,{i:/\n/}),s={cN:"string",b:/\$"/,e:'"',i:/\n/,c:[{b:"{{"},{b:"}}"},e.BE,i]},c={cN:"string",b:/\$@"/,e:'"',c:[{b:"{{"},{b:"}}"},{b:'""'},n]},o=e.inherit(c,{i:/\n/,c:[{b:"{{"},{b:"}}"},{b:'""'},i]});n.c=[c,s,r,e.ASM,e.QSM,e.CNM,e.CBCM],i.c=[o,s,a,e.ASM,e.QSM,e.CNM,e.inherit(e.CBCM,{i:/\n/})];var l={v:[c,s,r,e.ASM,e.QSM]},u=e.IR+"(<"+e.IR+"(\\s*,\\s*"+e.IR+")*>)?(\\[\\])?";return{aliases:["csharp"],k:t,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",r:0},{b:""},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},l,e.CNM,{bK:"class interface",e:/[{;=]/,i:/[^\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{bK:"new return throw await",r:0},{cN:"function",b:"("+u+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:t,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,r:0,c:[l,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}}),e.registerLanguage("css",function(e){var t="[a-zA-Z-][a-zA-Z0-9_-]*",r={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:t,r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,r]}]}}),e.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"meta",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"comment",v:[{b:/Index: /,e:/$/},{b:/={3,}/,e:/$/},{b:/^\-{3}/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+{3}/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"addition",b:"^\\!",e:"$"}]}}),e.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",r:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}}),e.registerLanguage("ini",function(e){var t={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"section",b:/^\s*\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_-]+\s*=\s*/,e:"$",rB:!0,c:[{cN:"attr",b:/[a-z0-9\[\]_-]+/},{b:/=/,eW:!0,r:0,c:[{cN:"literal",b:/\bon|off|true|false|yes|no\b/},{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},t,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM]}]}]}}),e.registerLanguage("java",function(e){var t="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",r=t+"(<"+t+"(\\s*,\\s*"+t+")*>)?",a="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n="\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",i={cN:"number",b:n,r:0};return{aliases:["jsp"],k:a,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"("+r+"\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:a,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:a,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},i,{cN:"meta",b:"@[A-Za-z]+"}]}}),e.registerLanguage("javascript",function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",r={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:r,c:[]},i={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,i,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:r,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,i,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:t+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:t,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+t+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:t},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,c:s}]}]},{b://,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:t}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:s}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#(?!!)/}}),e.registerLanguage("json",function(e){var t={literal:"true false null"},r=[e.QSM,e.CNM],a={e:",",eW:!0,eE:!0,c:r,k:t},n={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(a,{b:/:/})],i:"\\S"},i={b:"\\[",e:"\\]",c:[e.inherit(a)],i:"\\S"};return r.splice(r.length,0,n,i),{c:r,k:t,i:"\\S"}}),e.registerLanguage("makefile",function(e){var t={cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]};return{aliases:["mk","mak"],c:[e.HCM,{b:/^\w+\s*\W*=/,rB:!0,r:0,starts:{e:/\s*\W*=/,eE:!0,starts:{e:/$/,r:0,c:[t]}}},{cN:"section",b:/^[\w]+:\s*$/},{cN:"meta",b:/^\.PHONY:/,e:/$/,k:{"meta-keyword":".PHONY"},l:/[\.\w]+/},{b:/^\t+/,e:/$/,r:0,c:[e.QSM,t]}]}}),e.registerLanguage("xml",function(e){var t="[A-Za-z0-9\\._:-]+",r={eW:!0,i:/`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},e.C("",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0}]},{cN:"tag",b:"|$)",e:">",k:{name:"style"},c:[r],starts:{e:"",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"|$)",e:">",k:{name:"script"},c:[r],starts:{e:"",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"meta",v:[{b:/<\?xml/,e:/\?>/,r:10},{b:/<\?\w+/,e:/\?>/}]},{cN:"tag",b:"",c:[{cN:"name",b:/[^\/><\s]+/,r:0},r]}]}}),e.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```w*s*$",e:"^```s*$"},{b:"`.+?`"},{b:"^( {4}| )",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}}),e.registerLanguage("nginx",function(e){var t={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},r={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,t],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[t]},{cN:"regexp",c:[e.BE,t],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},t]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],r:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:r}],r:0}],i:"[^\\s\\}]"}}),e.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},r={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},a=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:r,l:a,i:""}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:a,c:[e.UTM]},{b:"\\."+e.UIR,r:0}]}}),e.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},a={b:"->{",e:"}"},n={v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=[e.BE,r,n],s=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),a,{cN:"string",c:i,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"function",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",eE:!0,r:5,c:[e.TM]},{b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=s,a.c=s,{aliases:["pl","pm"],l:/[\w\.]+/,k:t,c:s}}),e.registerLanguage("php",function(e){var t={b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},r={cN:"meta",b:/<\?(php)?|\?>/},a={cN:"string",c:[e.BE,r],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},n={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[r]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},r,{cN:"keyword",b:/\$this\b/},t,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",t,e.CBCM,a,n]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},a,n]}}),e.registerLanguage("python",function(e){var t={cN:"meta",b:/^(>>>|\.\.\.) /},r={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[t],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[t],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},e.ASM,e.QSM]},a={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},n={cN:"params",b:/\(/,e:/\)/,c:["self",t,a,r]};return{aliases:["py","gyp"],k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)|=>/,c:[t,a,r,e.HCM,{v:[{cN:"function",bK:"def"},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,n,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}}),e.registerLanguage("ruby",function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},a={cN:"doctag",b:"@[A-Za-z]+"},n={b:"#<",e:">"},i=[e.C("#","$",{c:[a]}),e.C("^\\=begin","^\\=end",{c:[a],r:10}),e.C("^__END__","\\n$")],s={cN:"subst",b:"#\\{",e:"}",k:r},c={cN:"string",c:[e.BE,s],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{b:/<<(-?)\w+$/,e:/^\s*\w+$/}]},o={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:r},l=[c,n,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?" -}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(i)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:t}),o].concat(i)},{b:e.IR+"::"},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":(?!\\s)",c:[c,{b:t}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{cN:"params",b:/\|/,e:/\|/,k:r},{b:"("+e.RSR+"|unless)\\s*",c:[n,{cN:"regexp",c:[e.BE,s],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(i),r:0}].concat(i);s.c=l,o.c=l;var u="[>?]>",d="[\\w#]+\\(\\w+\\):\\d+:\\d+>",b="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",p=[{b:/^\s*=>/,starts:{e:"$",c:l}},{cN:"meta",b:"^("+u+"|"+d+"|"+b+")",starts:{e:"$",c:l}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,i:/\/\*/,c:i.concat(p).concat(l)}}),e.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>{}*#]/,c:[{bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment",e:/;/,eW:!0,l:/[\w\.]+/,k:{keyword:"abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text varchar varying void"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}}),e}); diff --git a/static/plugins/js/jquery.min.js b/static/plugins/js/jquery.min.js deleted file mode 100644 index c4c6022..0000000 --- a/static/plugins/js/jquery.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+R+")"+R+"*"),U=new RegExp(R+"|>"),V=new RegExp(W),X=new RegExp("^"+B+"$"),Q={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),TAG:new RegExp("^("+B+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+I+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,G=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+R+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){C()},ae=xe(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{O.apply(t=P.call(d.childNodes),d.childNodes),t[d.childNodes.length].nodeType}catch(e){O={apply:t.length?function(e,t){q.apply(e,P.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,d=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==d&&9!==d&&11!==d)return n;if(!r&&(C(e),e=e||T,E)){if(11!==d&&(u=Z.exec(t)))if(i=u[1]){if(9===d){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return O.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&p.getElementsByClassName&&e.getElementsByClassName)return O.apply(n,e.getElementsByClassName(i)),n}if(p.qsa&&!k[t+" "]&&(!v||!v.test(t))&&(1!==d||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===d&&(U.test(t)||_.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&p.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=A)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+be(l[o]);c=l.join(",")}try{return O.apply(n,f.querySelectorAll(c)),n}catch(e){k(t,!0)}finally{s===A&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>x.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[A]=!0,e}function ce(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)x.attrHandle[n[r]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pe(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in p=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},C=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:d;return r!=T&&9===r.nodeType&&r.documentElement&&(a=(T=r).documentElement,E=!i(T),d!=T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),p.scope=ce(function(e){return a.appendChild(e).appendChild(T.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),p.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),p.getElementsByTagName=ce(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),p.getElementsByClassName=J.test(T.getElementsByClassName),p.getById=ce(function(e){return a.appendChild(e).id=A,!T.getElementsByName||!T.getElementsByName(A).length}),p.getById?(x.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(x.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),x.find.TAG=p.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):p.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},x.find.CLASS=p.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(p.qsa=J.test(T.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+R+"*(?:value|"+I+")"),e.querySelectorAll("[id~="+A+"-]").length||v.push("~="),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+R+"*name"+R+"*="+R+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+A+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+R+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(p.matchesSelector=J.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){p.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",W)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=J.test(a.compareDocumentPosition),y=t||J.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!p.sortDetached&&t.compareDocumentPosition(e)===n?e==T||e.ownerDocument==d&&y(d,e)?-1:t==T||t.ownerDocument==d&&y(d,t)?1:u?H(u,e)-H(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==T?-1:t==T?1:i?-1:o?1:u?H(u,e)-H(u,t):0;if(i===o)return de(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?de(a[r],s[r]):a[r]==d?-1:s[r]==d?1:0}),T},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(C(e),p.matchesSelector&&E&&!k[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||p.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){k(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return b(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||L,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:j.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:w,!0)),k.test(r[1])&&E.isPlainObject(t))for(r in t)b(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=w.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):b(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,L=E(w);var q=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,pe=/^$|^module$|\/(?:java|ecma)script/i;le=w.createDocumentFragment().appendChild(w.createElement("div")),(ce=w.createElement("input")).setAttribute("type","radio"),ce.setAttribute("checked","checked"),ce.setAttribute("name","t"),le.appendChild(ce),m.checkClone=le.cloneNode(!0).cloneNode(!0).lastChild.checked,le.innerHTML="",m.noCloneChecked=!!le.cloneNode(!0).lastChild.defaultValue,le.innerHTML="",m.option=!!le.lastChild;var he={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ge(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&S(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var ye=/<|&#?\w+;/;function me(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),d=[],p=0,h=e.length;p\s*$/g;function Le(e,t){return S(e,"table")&&S(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function je(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n
",2===ft.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(m.createHTMLDocument?((r=(t=w.implementation.createHTMLDocument("")).createElement("base")).href=w.location.href,t.head.appendChild(r)):t=w),o=!n&&[],(i=k.exec(e))?[t.createElement(i[1])]:(i=me([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),b(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=Fe(m.pixelPosition,function(e,t){if(t)return t=We(e,n),Ie.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getSelectionRange().start,a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(o.column/.test(r.getLine(o.row).slice(o.column)))return;while(!u(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==o.row&&(d=d.substring(0,o.column-p));if(this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return this.getCommentFoldWidget(e,n)&&e.getCommentFoldRange(n,e.getLine(n).length);var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column"},this.createWorker=function(e){var t=new f(["ace"],"ace/mode/xml_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/xml"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0;",meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../config").$modes,i=e("../lib/oop"),s=e("../lib/lang"),o=e("./text_highlight_rules").TextHighlightRules,u=e("./html_highlight_rules").HtmlHighlightRules,a=function(e){return"(?:[^"+s.escapeRegExp(e)+"\\\\]|\\\\.)*"},f=function(){u.call(this);var e={token:"support.function",regex:/^\s*(```+[^`]*|~~~+[^~]*)$/,onMatch:function(e,t,n,i){var s=e.match(/^(\s*)([`~]+)(.*)/),o=/[\w-]+|$/.exec(s[3])[0];return r[o]||(o=""),n.unshift("githubblock",[],[s[1],s[2],o],t),this.token},next:"githubblock"},t=[{token:"support.function",regex:".*",onMatch:function(e,t,n,i){var s=n[1],o=n[2][0],u=n[2][1],a=n[2][2],f=/^(\s*)(`+|~+)\s*$/.exec(e);if(f&&f[1].length=u.length&&f[2][0]==u[0])return n.splice(0,3),this.next=n.shift(),this.token;this.next="";if(a&&r[a]){var l=r[a].getTokenizer().getLineTokens(e,s.slice(0));return n[1]=l.state,l.tokens}return this.token}}];this.$rules.start.unshift({token:"empty_line",regex:"^$",next:"allowBlock"},{token:"markup.heading.1",regex:"^=+(?=\\s*$)"},{token:"markup.heading.2",regex:"^\\-+(?=\\s*$)"},{token:function(e){return"markup.heading."+e.length},regex:/^#{1,6}(?=\s|$)/,next:"header"},e,{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{token:"constant",regex:"^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$",next:"allowBlock"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic"}),this.addRules({basic:[{token:"constant.language.escape",regex:/\\[\\`*_{}\[\]()#+\-.!]/},{token:"support.function",regex:"(`+)(.*?[^`])(\\1)"},{token:["text","constant","text","url","string","text"],regex:'^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'},{token:["text","string","text","constant","text"],regex:"(\\[)("+a("]")+")(\\]\\s*\\[)("+a("]")+")(\\])"},{token:["text","string","text","markup.underline","string","text"],regex:"(\\!?\\[)("+a("]")+")(\\]\\()"+'((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)'+'(\\s*"'+a('"')+'"\\s*)?'+"(\\))"},{token:"string.strong",regex:"([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"},{token:"string.emphasis",regex:"([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"},{token:["text","url","text"],regex:"(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"}],allowBlock:[{token:"support.function",regex:"^ {4}.+",next:"allowBlock"},{token:"empty_line",regex:"^$",next:"allowBlock"},{token:"empty",regex:"",next:"start"}],header:[{regex:"$",next:"start"},{include:"basic"},{defaultToken:"heading"}],"listblock-start":[{token:"support.variable",regex:/(?:\[[ x]\])?/,next:"listblock"}],listblock:[{token:"empty_line",regex:"^$",next:"start"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic",noEscape:!0},e,{defaultToken:"list"}],blockquote:[{token:"empty_line",regex:"^\\s*$",next:"start"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{include:"basic",noEscape:!0},{defaultToken:"string.blockquote"}],githubblock:t}),this.normalizeRules()};i.inherits(f,o),t.MarkdownHighlightRules=f}),define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.foldingStartMarker=/^(?:[=-]+\s*$|#{1,6} |`{3})/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?r[0]=="`"?e.bgTokenizer.getState(n)=="start"?"end":"start":"start":""},this.getFoldWidgetRange=function(e,t,n){function l(t){return f=e.getTokens(t)[0],f&&f.type.lastIndexOf(c,0)===0}function h(){var e=f.value[0];return e=="="?6:e=="-"?5:7-f.value.search(/[^#]/)}var r=e.getLine(n),i=r.length,o=e.getLength(),u=n,a=n;if(!r.match(this.foldingStartMarker))return;if(r[0]=="`"){if(e.bgTokenizer.getState(n)!=="start"){while(++n0){r=e.getLine(n);if(r[0]=="`"&r.substring(0,3)=="```")break}return new s(n,r.length,u,0)}var f,c="markup.heading";if(l(n)){var p=h();while(++n=p)break}a=n-(!f||["=","-"].indexOf(f.value[0])==-1?1:2);if(a>u)while(a>u&&/^\s*$/.test(e.getLine(a)))a--;if(a>u){var v=e.getLine(a).length;return new s(u,i,a,v)}}}}.call(o.prototype)}),define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.reservedKeywords="!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set|function|declare|readonly",o=t.languageConstructs="[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",u=function(){var e=this.createKeywordMapper({keyword:s,"support.function.builtin":o,"invalid.deprecated":"debugger"},"identifier"),t="(?:(?:[1-9]\\d*)|(?:0))",n="(?:\\.\\d+)",r="(?:\\d+)",i="(?:(?:"+r+"?"+n+")|(?:"+r+"\\.))",u="(?:(?:"+i+"|"+r+")"+")",a="(?:"+u+"|"+i+")",f="(?:&"+r+")",l="[a-zA-Z_][a-zA-Z0-9_]*",c="(?:"+l+"(?==))",h="(?:\\$(?:SHLVL|\\$|\\!|\\?))",p="(?:"+l+"\\s*\\(\\))";this.$rules={start:[{token:"constant",regex:/\\./},{token:["text","comment"],regex:/(^|\s)(#.*)$/},{token:"string.start",regex:'"',push:[{token:"constant.language.escape",regex:/\\(?:[$`"\\]|$)/},{include:"variables"},{token:"keyword.operator",regex:/`/},{token:"string.end",regex:'"',next:"pop"},{defaultToken:"string"}]},{token:"string",regex:"\\$'",push:[{token:"constant.language.escape",regex:/\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/},{token:"string",regex:"'",next:"pop"},{defaultToken:"string"}]},{regex:"<<<",token:"keyword.operator"},{stateName:"heredoc",regex:"(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[4]),[{type:"constant",value:i[1]},{type:"text",value:i[2]},{type:"string",value:i[3]},{type:"support.class",value:i[4]},{type:"string",value:i[5]}]},rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:["keyword","text","text","text","variable"],regex:/(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/},{token:"variable.language",regex:h},{token:"variable",regex:c},{include:"variables"},{token:"support.function",regex:p},{token:"support.function",regex:f},{token:"string",start:"'",end:"'"},{token:"constant.numeric",regex:a},{token:"constant.numeric",regex:t+"\\b"},{token:e,regex:"[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]"},{token:"punctuation.operator",regex:";"},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]]"},{token:"paren.rparen",regex:"[\\)\\}]",next:"pop"}],variables:[{token:"variable",regex:/(\$)(\w+)/},{token:["variable","paren.lparen"],regex:/(\$)(\()/,push:"start"},{token:["variable","paren.lparen","keyword.operator","variable","keyword.operator"],regex:/(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/,push:"start"},{token:"variable",regex:/\$[*@#?\-$!0_]/},{token:["variable","paren.lparen"],regex:/(\$)(\{)/,push:"start"}]},this.normalizeRules()};r.inherits(u,i),t.ShHighlightRules=u}),define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sh_highlight_rules").ShHighlightRules,o=e("../range").Range,u=e("./folding/cstyle").FoldMode,a=e("./behaviour/cstyle").CstyleBehaviour,f=function(){this.HighlightRules=s,this.foldingRules=new u,this.$behaviour=new a};r.inherits(f,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new o(n,r.length-i.length,n,r.length))},this.$id="ace/mode/sh"}.call(f.prototype),t.Mode=f}),define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript","ace/mode/xml","ace/mode/html","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown","ace/mode/javascript","ace/mode/html","ace/mode/sh","ace/mode/sh","ace/mode/xml","ace/mode/css"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript").Mode,o=e("./xml").Mode,u=e("./html").Mode,a=e("./markdown_highlight_rules").MarkdownHighlightRules,f=e("./folding/markdown").FoldMode,l=function(){this.HighlightRules=a,this.createModeDelegates({javascript:e("./javascript").Mode,html:e("./html").Mode,bash:e("./sh").Mode,sh:e("./sh").Mode,xml:e("./xml").Mode,css:e("./css").Mode}),this.foldingRules=new f,this.$behaviour=this.$defaultBehaviour};r.inherits(l,i),function(){this.type="text",this.blockComment={start:""},this.getNextLineIndent=function(e,t,n){if(e=="listblock"){var r=/^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(t);if(!r)return"";var i=r[2];return i||(i=parseInt(r[3],10)+1+"."),r[1]+i+r[4]}return this.$getIndent(t)},this.$id="ace/mode/markdown"}.call(l.prototype),t.Mode=l}); (function() { - window.require(["ace/mode/markdown"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); -})(); diff --git a/static/plugins/js/resizable.min.js b/static/plugins/js/resizable.min.js deleted file mode 100644 index 1f7270c..0000000 --- a/static/plugins/js/resizable.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * resizable 1.0.1 - * https://github.com/tannernetwork/resizable - * - * Copyright 2015-2017 Tanner (http://tanner.zone) - * Released under the MIT license - */ -!function(a){a.fn.resizable=function(b){var c=a.extend({direction:["top","right","bottom","left"]},b),d=null;return this.each(function(){var b=this,e=a(this),f=!1,g={},h={top:!1,right:!1,bottom:!1,left:!1},i={};if(e.addClass("resizable"),c.direction instanceof Array)for(var j=c.direction.length-1;j>=0;j--)switch(c.direction[j]){case"top":case"t":h.top=!0;break;case"right":case"r":h.right=!0;break;case"bottom":case"b":h.bottom=!0;break;case"left":case"l":h.left=!0}else if("string"==typeof c.direction)switch(c.direction){case"vertical":case"v":h.top=!0,h.bottom=!0;break;case"horizontal":case"h":h.right=!0,h.left=!0;break;case"top":case"t":h.top=!0;break;case"right":case"r":h.right=!0;break;case"bottom":case"b":h.bottom=!0;break;case"left":case"l":h.left=!0}h.top&&(i.top=a("
").addClass("resizable-handle resizable-t").appendTo(e)),h.right&&(i.right=a("
").addClass("resizable-handle resizable-r").appendTo(e)),h.bottom&&(i.bottom=a("
").addClass("resizable-handle resizable-b").appendTo(e)),h.left&&(i.left=a("
").addClass("resizable-handle resizable-l").appendTo(e)),a(this).children(".resizable-l, .resizable-r, .resizable-t, .resizable-b").mousedown(function(h){d=b;var i;switch(!0){case a(this).hasClass("resizable-l"):i="l";break;case a(this).hasClass("resizable-r"):i="r";break;case a(this).hasClass("resizable-t"):i="t";break;case a(this).hasClass("resizable-b"):i="b"}f=!0,g={x:h.clientX,y:h.clientY,height:e.height(),width:e.width(),direction:i},a("html").addClass("resizable-resizing resizable-resizing-"+g.direction),d==b&&"function"==typeof c.start&&c.start.apply(b)}),a(window).mousemove(function(a){if(f){var h=a.clientX-g.x,i=a.clientY-g.y;switch(g.direction){case"r":e.width(g.width+h);break;case"l":e.width(g.width-h);break;case"b":e.height(g.height+i);break;case"t":e.height(g.height-i)}d==b&&"function"==typeof c.resize&&c.resize.apply(b)}}).mouseup(function(e){f=!1,a("html").removeClass("resizable-resizing resizable-resizing-"+g.direction),d==b&&"function"==typeof c.stop&&c.stop.apply(b),_current=null})})}}(jQuery); diff --git a/static/plugins/js/semantic.min.js b/static/plugins/js/semantic.min.js deleted file mode 100644 index 0e741a2..0000000 --- a/static/plugins/js/semantic.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/* -* # Semantic UI - 2.4.1 -* https://github.com/Semantic-Org/Semantic-UI -* http://www.semantic-ui.com/ -* -* Copyright 2014 Contributors -* Released under the MIT license -* http://opensource.org/licenses/MIT -* -*/ -!function(p,h,v,b){p.site=p.fn.site=function(e){var s,l,i=(new Date).getTime(),o=[],t=e,n="string"==typeof t,c=[].slice.call(arguments,1),u=p.isPlainObject(e)?p.extend(!0,{},p.site.settings,e):p.extend({},p.site.settings),a=u.namespace,d=u.error,r="module-"+a,f=p(v),m=this,g=f.data(r);return s={initialize:function(){s.instantiate()},instantiate:function(){s.verbose("Storing instance of site",s),g=s,f.data(r,s)},normalize:function(){s.fix.console(),s.fix.requestAnimationFrame()},fix:{console:function(){s.debug("Normalizing window.console"),console!==b&&console.log!==b||(s.verbose("Console not available, normalizing events"),s.disable.console()),void 0!==console.group&&void 0!==console.groupEnd&&void 0!==console.groupCollapsed||(s.verbose("Console group not available, normalizing events"),h.console.group=function(){},h.console.groupEnd=function(){},h.console.groupCollapsed=function(){}),void 0===console.markTimeline&&(s.verbose("Mark timeline not available, normalizing events"),h.console.markTimeline=function(){})},consoleClear:function(){s.debug("Disabling programmatic console clearing"),h.console.clear=function(){}},requestAnimationFrame:function(){s.debug("Normalizing requestAnimationFrame"),h.requestAnimationFrame===b&&(s.debug("RequestAnimationFrame not available, normalizing event"),h.requestAnimationFrame=h.requestAnimationFrame||h.mozRequestAnimationFrame||h.webkitRequestAnimationFrame||h.msRequestAnimationFrame||function(e){setTimeout(e,0)})}},moduleExists:function(e){return p.fn[e]!==b&&p.fn[e].settings!==b},enabled:{modules:function(e){var n=[];return e=e||u.modules,p.each(e,function(e,t){s.moduleExists(t)&&n.push(t)}),n}},disabled:{modules:function(e){var n=[];return e=e||u.modules,p.each(e,function(e,t){s.moduleExists(t)||n.push(t)}),n}},change:{setting:function(o,a,e,r){e="string"==typeof e?"all"===e?u.modules:[e]:e||u.modules,r=r===b||r,p.each(e,function(e,t){var n,i=!s.moduleExists(t)||(p.fn[t].settings.namespace||!1);s.moduleExists(t)&&(s.verbose("Changing default setting",o,a,t),p.fn[t].settings[o]=a,r&&i&&0<(n=p(":data(module-"+i+")")).length&&(s.verbose("Modifying existing settings",n),n[t]("setting",o,a)))})},settings:function(i,e,o){e="string"==typeof e?[e]:e||u.modules,o=o===b||o,p.each(e,function(e,t){var n;s.moduleExists(t)&&(s.verbose("Changing default setting",i,t),p.extend(!0,p.fn[t].settings,i),o&&a&&0<(n=p(":data(module-"+a+")")).length&&(s.verbose("Modifying existing settings",n),n[t]("setting",i)))})}},enable:{console:function(){s.console(!0)},debug:function(e,t){e=e||u.modules,s.debug("Enabling debug for modules",e),s.change.setting("debug",!0,e,t)},verbose:function(e,t){e=e||u.modules,s.debug("Enabling verbose debug for modules",e),s.change.setting("verbose",!0,e,t)}},disable:{console:function(){s.console(!1)},debug:function(e,t){e=e||u.modules,s.debug("Disabling debug for modules",e),s.change.setting("debug",!1,e,t)},verbose:function(e,t){e=e||u.modules,s.debug("Disabling verbose debug for modules",e),s.change.setting("verbose",!1,e,t)}},console:function(e){if(e){if(g.cache.console===b)return void s.error(d.console);s.debug("Restoring console function"),h.console=g.cache.console}else s.debug("Disabling console function"),g.cache.console=h.console,h.console={clear:function(){},error:function(){},group:function(){},groupCollapsed:function(){},groupEnd:function(){},info:function(){},log:function(){},markTimeline:function(){},warn:function(){}}},destroy:function(){s.verbose("Destroying previous site for",f),f.removeData(r)},cache:{},setting:function(e,t){if(p.isPlainObject(e))p.extend(!0,u,e);else{if(t===b)return u[e];u[e]=t}},internal:function(e,t){if(p.isPlainObject(e))p.extend(!0,s,e);else{if(t===b)return s[e];s[e]=t}},debug:function(){u.debug&&(u.performance?s.performance.log(arguments):(s.debug=Function.prototype.bind.call(console.info,console,u.name+":"),s.debug.apply(console,arguments)))},verbose:function(){u.verbose&&u.debug&&(u.performance?s.performance.log(arguments):(s.verbose=Function.prototype.bind.call(console.info,console,u.name+":"),s.verbose.apply(console,arguments)))},error:function(){s.error=Function.prototype.bind.call(console.error,console,u.name+":"),s.error.apply(console,arguments)},performance:{log:function(e){var t,n;u.performance&&(n=(t=(new Date).getTime())-(i||t),i=t,o.push({Element:m,Name:e[0],Arguments:[].slice.call(e,1)||"","Execution Time":n})),clearTimeout(s.performance.timer),s.performance.timer=setTimeout(s.performance.display,500)},display:function(){var e=u.name+":",n=0;i=!1,clearTimeout(s.performance.timer),p.each(o,function(e,t){n+=t["Execution Time"]}),e+=" "+n+"ms",(console.group!==b||console.table!==b)&&0")},fields:function(e){var n=F();return F.each(e,function(e,t){n=n.add(h.get.field(t))}),n},validation:function(n){var i,o;return!!c&&(F.each(c,function(e,t){o=t.identifier||e,h.get.field(o)[0]==n[0]&&(t.identifier=o,i=t)}),i||!1)},value:function(e){var t=[];return t.push(e),h.get.values.call(v,t)[e]},values:function(e){var t=F.isArray(e)?h.get.fields(e):n,c={};return t.each(function(e,t){var n=F(t),i=(n.prop("type"),n.prop("name")),o=n.val(),a=n.is(f.checkbox),r=n.is(f.radio),s=-1!==i.indexOf("[]"),l=!!a&&n.is(":checked");i&&(s?(i=i.replace("[]",""),c[i]||(c[i]=[]),a?l?c[i].push(o||!0):c[i].push(!1):c[i].push(o)):r?c[i]!==D&&0!=c[i]||(c[i]=!!l&&(o||!0)):c[i]=a?!!l&&(o||!0):o)}),c}},has:{field:function(e){return h.verbose("Checking for existence of a field with identifier",e),"string"!=typeof(e=h.escape.string(e))&&h.error(s.identifier,e),0"}),F(n+="")},prompt:function(e){return F("
").addClass("ui basic red pointing prompt label").html(e[0])}},rules:{empty:function(e){return!(e===D||""===e||F.isArray(e)&&0===e.length)},checked:function(){return 0=t},length:function(e,t){return e!==D&&e.length>=t},exactLength:function(e,t){return e!==D&&e.length==t},maxLength:function(e,t){return e!==D&&e.length<=t},match:function(e,t){var n;F(this);return 0=t)},exactCount:function(e,t){return 0==t?""===e:1==t?""!==e&&-1===e.search(","):e.split(",").length==t},maxCount:function(e,t){return 0!=t&&(1==t?-1===e.search(","):e.split(",").length<=t)}}}}(jQuery,window,document),function(S,k,e,T){"use strict";k=void 0!==k&&k.Math==Math?k:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),S.fn.accordion=function(a){var v,r=S(this),b=(new Date).getTime(),y=[],x=a,C="string"==typeof x,w=[].slice.call(arguments,1);k.requestAnimationFrame||k.mozRequestAnimationFrame||k.webkitRequestAnimationFrame||k.msRequestAnimationFrame;return r.each(function(){var e,c,u=S.isPlainObject(a)?S.extend(!0,{},S.fn.accordion.settings,a):S.extend({},S.fn.accordion.settings),d=u.className,t=u.namespace,f=u.selector,s=u.error,n="."+t,i="module-"+t,o=r.selector||"",m=S(this),g=m.find(f.title),p=m.find(f.content),l=this,h=m.data(i);c={initialize:function(){c.debug("Initializing",m),c.bind.events(),u.observeChanges&&c.observeChanges(),c.instantiate()},instantiate:function(){h=c,m.data(i,c)},destroy:function(){c.debug("Destroying previous instance",m),m.off(n).removeData(i)},refresh:function(){g=m.find(f.title),p=m.find(f.content)},observeChanges:function(){"MutationObserver"in k&&((e=new MutationObserver(function(e){c.debug("DOM tree modified, updating selector cache"),c.refresh()})).observe(l,{childList:!0,subtree:!0}),c.debug("Setting up mutation observer",e))},bind:{events:function(){c.debug("Binding delegated events"),m.on(u.on+n,f.trigger,c.event.click)}},event:{click:function(){c.toggle.call(this)}},toggle:function(e){var t=e!==T?"number"==typeof e?g.eq(e):S(e).closest(f.title):S(this).closest(f.title),n=t.next(p),i=n.hasClass(d.animating),o=n.hasClass(d.active),a=o&&!i,r=!o&&i;c.debug("Toggling visibility of content",t),a||r?u.collapsible?c.close.call(t):c.debug("Cannot close accordion content collapsing is disabled"):c.open.call(t)},open:function(e){var t=e!==T?"number"==typeof e?g.eq(e):S(e).closest(f.title):S(this).closest(f.title),n=t.next(p),i=n.hasClass(d.animating);n.hasClass(d.active)||i?c.debug("Accordion already open, skipping",n):(c.debug("Opening accordion content",t),u.onOpening.call(n),u.onChanging.call(n),u.exclusive&&c.closeOthers.call(t),t.addClass(d.active),n.stop(!0,!0).addClass(d.animating),u.animateChildren&&(S.fn.transition!==T&&m.transition("is supported")?n.children().transition({animation:"fade in",queue:!1,useFailSafe:!0,debug:u.debug,verbose:u.verbose,duration:u.duration}):n.children().stop(!0,!0).animate({opacity:1},u.duration,c.resetOpacity)),n.slideDown(u.duration,u.easing,function(){n.removeClass(d.animating).addClass(d.active),c.reset.display.call(this),u.onOpen.call(this),u.onChange.call(this)}))},close:function(e){var t=e!==T?"number"==typeof e?g.eq(e):S(e).closest(f.title):S(this).closest(f.title),n=t.next(p),i=n.hasClass(d.animating),o=n.hasClass(d.active);!o&&!(!o&&i)||o&&i||(c.debug("Closing accordion content",n),u.onClosing.call(n),u.onChanging.call(n),t.removeClass(d.active),n.stop(!0,!0).addClass(d.animating),u.animateChildren&&(S.fn.transition!==T&&m.transition("is supported")?n.children().transition({animation:"fade out",queue:!1,useFailSafe:!0,debug:u.debug,verbose:u.verbose,duration:u.duration}):n.children().stop(!0,!0).animate({opacity:0},u.duration,c.resetOpacity)),n.slideUp(u.duration,u.easing,function(){n.removeClass(d.animating).removeClass(d.active),c.reset.display.call(this),u.onClose.call(this),u.onChange.call(this)}))},closeOthers:function(e){var t,n,i,o=e!==T?g.eq(e):S(this).closest(f.title),a=o.parents(f.content).prev(f.title),r=o.closest(f.accordion),s=f.title+"."+d.active+":visible",l=f.content+"."+d.active+":visible";i=u.closeNested?(t=r.find(s).not(a)).next(p):(t=r.find(s).not(a),n=r.find(l).find(s).not(a),(t=t.not(n)).next(p)),0 adjusting invoked element"),c=c.closest(o.checkbox),s.refresh())}},setup:function(){s.set.initialLoad(),s.is.indeterminate()?(s.debug("Initial value is indeterminate"),s.indeterminate()):s.is.checked()?(s.debug("Initial value is checked"),s.check()):(s.debug("Initial value is unchecked"),s.uncheck()),s.remove.initialLoad()},refresh:function(){u=c.children(o.label),d=c.children(o.input),f=d[0]},hide:{input:function(){s.verbose("Modifying z-index to be unselectable"),d.addClass(t.hidden)}},show:{input:function(){s.verbose("Modifying z-index to be selectable"),d.removeClass(t.hidden)}},observeChanges:function(){"MutationObserver"in A&&((e=new MutationObserver(function(e){s.debug("DOM tree modified, updating selector cache"),s.refresh()})).observe(h,{childList:!0,subtree:!0}),s.debug("Setting up mutation observer",e))},attachEvents:function(e,t){var n=T(e);t=T.isFunction(s[t])?s[t]:s.toggle,0").insertAfter(d),s.debug("Creating label",u))}},has:{label:function(){return 0 .ui.dimmer",content:".ui.dimmer > .content, .ui.dimmer > .content > .center"},template:{dimmer:function(){return S("
").attr("class","ui dimmer")}}}}(jQuery,window,document),function(Y,Z,K,J){"use strict";Z=void 0!==Z&&Z.Math==Math?Z:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),Y.fn.dropdown=function(M){var L,V=Y(this),N=Y(K),H=V.selector||"",U="ontouchstart"in K.documentElement,W=(new Date).getTime(),B=[],Q=M,X="string"==typeof Q,$=[].slice.call(arguments,1);return V.each(function(n){var e,t,i,o,a,r,s,g,p=Y.isPlainObject(M)?Y.extend(!0,{},Y.fn.dropdown.settings,M):Y.extend({},Y.fn.dropdown.settings),h=p.className,c=p.message,l=p.fields,v=p.keys,b=p.metadata,u=p.namespace,d=p.regExp,y=p.selector,f=p.error,m=p.templates,x="."+u,C="module-"+u,w=Y(this),S=Y(p.context),k=w.find(y.text),T=w.find(y.search),A=w.find(y.sizer),R=w.find(y.input),P=w.find(y.icon),E=0").html(o).attr("data-"+b.value,t).attr("data-"+b.text,t).addClass(h.addition).addClass(h.item),p.hideAdditions&&i.addClass(h.hidden),n=n===J?i:n.add(i),g.verbose("Creating user choices for value",t,i))}),n)},userLabels:function(e){var t=g.get.userValues();t&&(g.debug("Adding user labels",t),Y.each(t,function(e,t){g.verbose("Adding custom user value"),g.add.label(t,t)}))},menu:function(){F=Y("
").addClass(h.menu).appendTo(w)},sizer:function(){A=Y("").addClass(h.sizer).insertAfter(T)}},search:function(e){e=e!==J?e:g.get.query(),g.verbose("Searching for query",e),g.has.minCharacters(e)?g.filter(e):g.hide()},select:{firstUnfiltered:function(){g.verbose("Selecting first non-filtered element"),g.remove.selectedItem(),O.not(y.unselectable).not(y.addition+y.hidden).eq(0).addClass(h.selected)},nextAvailable:function(e){var t=(e=e.eq(0)).nextAll(y.item).not(y.unselectable).eq(0),n=e.prevAll(y.item).not(y.unselectable).eq(0);0").addClass(h.search).prop("autocomplete","off").insertBefore(k)),g.is.multiple()&&g.is.searchSelection()&&!g.has.sizer()&&g.create.sizer(),p.allowTab&&g.set.tabbable()},select:function(){var e=g.get.selectValues();g.debug("Dropdown initialized on a select",e),w.is("select")&&(R=w),0").attr("class",R.attr("class")).addClass(h.selection).addClass(h.dropdown).html(m.dropdown(e)).insertBefore(R),R.hasClass(h.multiple)&&!1===R.prop("multiple")&&(g.error(f.missingMultiple),R.prop("multiple",!0)),R.is("[multiple]")&&g.set.multiple(),R.prop("disabled")&&(g.debug("Disabling dropdown"),w.addClass(h.disabled)),R.removeAttr("class").detach().prependTo(w)),g.refresh()},menu:function(e){F.html(m.menu(e,l)),O=F.find(y.item)},reference:function(){g.debug("Dropdown behavior was called on select, replacing with closest dropdown"),w=w.parent(y.dropdown),I=w.data(C),z=w.get(0),g.refresh(),g.setup.returnedObject()},returnedObject:function(){var e=V.slice(0,n),t=V.slice(n+1);V=e.add(w).add(t)}},refresh:function(){g.refreshSelectors(),g.refreshData()},refreshItems:function(){O=F.find(y.item)},refreshSelectors:function(){g.verbose("Refreshing selector cache"),k=w.find(y.text),T=w.find(y.search),R=w.find(y.input),P=w.find(y.icon),E=0 modified, recreating menu");var n=!1;Y.each(e,function(e,t){if(Y(t.target).is("select")||Y(t.addedNodes).is("select"))return n=!0}),n&&(g.disconnect.selectObserver(),g.refresh(),g.setup.select(),g.set.selected(),g.observe.select())}},menu:{mutation:function(e){var t=e[0],n=t.addedNodes?Y(t.addedNodes[0]):Y(!1),i=t.removedNodes?Y(t.removedNodes[0]):Y(!1),o=n.add(i),a=o.is(y.addition)||0t.name?1:-1}),g.debug("Retrieved and sorted values from select",o)):g.debug("Retrieved values from select",o),o},activeItem:function(){return O.filter("."+h.active)},selectedItem:function(){var e=O.not(y.unselectable).filter("."+h.selected);return 0=p.maxSelections?(g.debug("Maximum selection count reached"),p.useLabels&&(O.addClass(h.filtered),g.add.message(c.maxSelections)),!0):(g.verbose("No longer at maximum selection count"),g.remove.message(),g.remove.filteredItem(),g.is.searchSelection()&&g.filterItems(),!1))}},restore:{defaults:function(){g.clear(),g.restore.defaultText(),g.restore.defaultValue()},defaultText:function(){var e=g.get.defaultText();e===g.get.placeholderText?(g.debug("Restoring default placeholder text",e),g.set.placeholderText(e)):(g.debug("Restoring default text",e),g.set.text(e))},placeholderText:function(){g.set.placeholderText()},defaultValue:function(){var e=g.get.defaultValue();e!==J&&(g.debug("Restoring default value",e),""!==e?(g.set.value(e),g.set.selected()):(g.remove.activeItem(),g.remove.selectedItem()))},labels:function(){p.allowAdditions&&(p.useLabels||(g.error(f.labels),p.useLabels=!0),g.debug("Restoring selected values"),g.create.userLabels()),g.check.maxSelections()},selected:function(){g.restore.values(),g.is.multiple()?(g.debug("Restoring previously selected values and labels"),g.restore.labels()):g.debug("Restoring previously selected values")},values:function(){g.set.initialLoad(),p.apiSettings&&p.saveRemoteData&&g.get.remoteValues()?g.restore.remoteValues():g.set.selected(),g.remove.initialLoad()},remoteValues:function(){var e=g.get.remoteValues();g.debug("Recreating selected from session data",e),e&&(g.is.single()?Y.each(e,function(e,t){g.set.text(t)}):Y.each(e,function(e,t){g.add.label(e,t)}))}},read:{remoteData:function(e){var t;if(Z.Storage!==J)return(t=sessionStorage.getItem(e))!==J&&t;g.error(f.noStorage)}},save:{defaults:function(){g.save.defaultText(),g.save.placeholderText(),g.save.defaultValue()},defaultValue:function(){var e=g.get.value();g.verbose("Saving default value as",e),w.data(b.defaultValue,e)},defaultText:function(){var e=g.get.text();g.verbose("Saving default text as",e),w.data(b.defaultText,e)},placeholderText:function(){var e;!1!==p.placeholder&&k.hasClass(h.placeholder)&&(e=g.get.text(),g.verbose("Saving placeholder text as",e),w.data(b.placeholderText,e))},remoteData:function(e,t){Z.Storage!==J?(g.verbose("Saving remote data to session storage",t,e),sessionStorage.setItem(t,e)):g.error(f.noStorage)}},clear:function(){g.is.multiple()&&p.useLabels?g.remove.labels():(g.remove.activeItem(),g.remove.selectedItem()),g.set.placeholderText(),g.clearValue()},clearValue:function(){g.set.value("")},scrollPage:function(e,t){var n,i,o=t||g.get.selectedItem(),a=o.closest(y.menu),r=a.outerHeight(),s=a.scrollTop(),l=O.eq(0).outerHeight(),c=Math.floor(r/l),u=(a.prop("scrollHeight"),"up"==e?s-l*c:s+l*c),d=O.not(y.unselectable);i="up"==e?d.index(o)-c:d.index(o)+c,0<(n=("up"==e?0<=i:i").addClass(h.label).attr("data-"+b.value,a).html(m.label(a,t)),i=p.onLabelCreate.call(i,a,t),g.has.label(e)?g.debug("User selection already exists, skipping",a):(p.label.variation&&i.addClass(p.label.variation),!0===n?(g.debug("Animating in label",i),i.addClass(h.hidden).insertBefore(o).transition(p.label.transition,p.label.duration)):(g.debug("Adding selection label",i),i.insertBefore(o)))},message:function(e){var t=F.children(y.message),n=p.templates.message(g.add.variables(e));0").html(n).addClass(h.message).appendTo(F)},optionValue:function(e){var t=g.escape.value(e);0").prop("value",t).addClass(h.addition).html(e).appendTo(R),g.verbose("Adding user addition as an
- - -
-
-
 
- - - - - - - - - - - - - -{% endblock content %} diff --git a/templates/profile/UserProfile_Profile_ActivityTab.html b/templates/profile/UserProfile_Profile_ActivityTab.html deleted file mode 100644 index 2d82898..0000000 --- a/templates/profile/UserProfile_Profile_ActivityTab.html +++ /dev/null @@ -1,787 +0,0 @@ -{% extends 'profile/base.html' %} -{% load humanize %} -{% load qa_tags %} - -{% block content %} - - - - - - - - - User {{profileData.user}} - Stack Overflow - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - - -
- - - - - - - - - -
- - - -
- -
- - -
- -
-
-
-
-
-
-
- {{profileData.user}} -
-
-
-
-
-
-
{{profileData.title}}
-
    - -
  • -
    -
    - -
    -
    -Joined {{profileData.user.date_joined|naturaltime}} -
    -
    -
  • - - - - {% if not profileData.is_high_moderator %} -
  • -
    -
    -
    - Last Seen {{ online_user_activity.last_activity|naturaltime }} -
    -
    -
  • - {% endif %} - -
- -
    - - -
  • -
    -
    - -
    -
    -
    - {{profileData.location}} -
    -
    -
    -
  • -
-
-
- - - -
- - - - -
-
- - Profile - Activity - {% if request.user.is_authenticated %} - {% if request.user == profileData.user %} - Settings - {% endif %} - {% endif %} -
-
-
-
-
-
- -
- - -
-
-
-
-
Stats
-
-
-
-
{{profileData.user|calculate_reputation}}
reputation -
-
-
{{getAllTheViewsOfAllTheQuestion.total_views__sum}}
- reached -
-
-
{{profileData.user|count_answers_by_user}}
- answer{{profileData.user|count_answers_by_user|pluralize}} -
-
-
{{profileData.user|count_questions_by_user}}
- question{{profileData.user|count_questions_by_user|pluralize}} -
- -
-
-
- - - - -
-
- -
-
-
-
-
About
-
-
-

- {% if profileData.about_me == None %} - About me is Blank - {% else %} - {{profileData.about_me}} - {% endif %} -

-
-
-
- -
-
- -
-
-
- Badges -
- View all badges -
-
-
-
- {% if goldBadges %} -
-
- -
-
-
- {{goldBadges.count}} -
-
- gold badges -
-
-
-
- -
- {% else %} -
-
- -
-
- This user doesn’t have any gold badges yet. -
-
- {% endif %} -
-
- -
-
- {% if silverBadges %} -
-
- - -
-
-
- {{silverBadges.count}} -
-
- silver badge -
-
-
- -
-
    - {% for badge in silverBadges %} -
  • -  
    {{badge.tag_name}}
    -
    {{badge.date|date:"D d M Y"}}
    -
  • - {% endfor %} -
-
- {% else %} -
-
- -
-
- This user doesn’t have any gold badges yet. -
-
- {% endif %} -
-
- -
-
- {% if bronzeBadges %} -
-
- -
-
-
- {{bronzeBadges.count}} -
-
- bronze badges -
-
-
-
-
    - {% for badge in bronzeBadges %} -
  • -  
    {{badge.tag_name}}
    -
    {{badge.date|date:"D d M Y"}}
    -
  • - {% endfor %} -
-
-
-
- {% else %} -
-
- -
-
- This user doesn’t have any gold badges yet. -
-
- {% endif %} -
-
-
- - - -{% if topTags %} -
-
-
- Top tags -
- - - View all tags - -
- -
- {% for topTag in topTags %} -
-
- -
-
-
-
-
Score
-
-
-
-
Posts
-
-
-
-
Posts
-
-
-
-
-
- {% endfor %} -
-
-{% else %} - -
-
-
- Top tags -
- - - View all tags - -
- -
-
- This user has not participated in any tags. -
-
-
- -{% endif %} - - -
-
-
-
Top posts
-
- View all questions, and answers -
-
-
-
- - - -
-
-
- - - - - -
- -
- {% for post in results %} -
-
-
-
- {% if post.post_owner %} - - {% else %} - - {% endif %} -
-
{% if post.post_owner %}{{post.calculate_UpVote_DownVote}}{% else %}{{post.countAllTheVotes}}{% endif %}
- -
{{post.date}}
-
-
-
- {% endfor %} -
- -
- {% for question in questions %} -
-
-
-
- -
-
{{question.calculate_UpVote_DownVote}}
- -
{{question.date}}
-
-
-
- {% endfor %} -
- -
- {% for answer in answers %} -
-
-
-
- -
-
{{answer.countAllTheVotes}}
- -
{{answer.date}}
-
-
-
- {% endfor %} -
-
-
- -
-
-
-
-
- -
-
- - - - - - - -
-
-
 
- - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/profile/Votes_castActivity.html b/templates/profile/Votes_castActivity.html deleted file mode 100644 index e6859d0..0000000 --- a/templates/profile/Votes_castActivity.html +++ /dev/null @@ -1,1979 +0,0 @@ -{% load humanize %} {% load static %} {% load qa_tags %} {% block content %} - - - - - - - - - - - - - - -
-
- -{% if request.user.is_authenticated %} - -
- -
- - -{% else %} - -
- -
- -{% endif %} - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - -
-
- - -
- -
-
-
-
- -
- -
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
{{profileData.user}}
-
-
-
-
-
{{profileData.title}}
-
    -
  • -
    -
    -
    Joined {{profileData.user.date_joined|naturaltime}}
    -
    -
  • - - {% if not profileData.is_high_moderator %} -
  • -
    -
    -
    Last Seen {{ online_user_activity.last_activity|naturaltime }}
    -
    -
  • {% endif %}
- -
-
{% if request.user == profileData.user %} - {% endif %}
-
-
Profile Activity {% if request.user == profileData.user %} Settings {% endif %}
-
-
-
-
- - - - - - -
-
- - - - - - - -
-
- - - - -
-
-

-{{countallVotes}} Vote{{countallVotes|pluralize}} cast

-
- - {% for post in allPosts %} - - -
- - - - - - - - {% if post.upvote_by_q %} - - {% elif post.downvote_by_q %} - - {% elif post.question_to_closing %} - - {% elif post.question_to_opening %} - - {% elif post.answer_owner %} - - {% endif %} - - -
-
-
- {% if post.upvote_by_q %}{{post.date}}{% elif post.downvote_by_q %}{{post.date}}{% elif post.question_to_closing %}{{post.date}}{% elif post.question_to_opening %}{{post.date_opening}}{% elif post.answer_owner %}{{post.date}}-{% endif %} -
-
-
- {% if post.upvote_by_q %}upvote-{% elif post.downvote_by_q %}downvote-{% elif post.question_to_closing %}vote to close{% elif post.question_to_opening %}vote to reopen{% elif post.answer_owner %}vote on answer-{% endif %} - - {{post.upvote_question_of.title}} - - {{post.downvote_question_of.title}} - - {{post.question_to_closing.title}} - - {{post.question_to_opening.title}} - - {{post.body|truncatechars:80}} -
-
- - {% endfor %} - - - - - -
- -
- -
-
- - - - -{% if request.user.is_authenticated %} - -{% endif %} - - - -
-
-
 
- - - - {% endblock content %} \ No newline at end of file diff --git a/templates/profile/activitAnswers.html b/templates/profile/activitAnswers.html deleted file mode 100644 index 7c9867f..0000000 --- a/templates/profile/activitAnswers.html +++ /dev/null @@ -1,2373 +0,0 @@ -{% load review_tags %} -{% load humanize %} -{% load cache %} -{% load qa_tags %} -{% load static %} - -{% block content %} - - - - - - - - - - - - - - - - - - - - - -
-
-{% if request.user.is_authenticated %} - - -
- -
- - -{% else %} - -
- -
- -{% endif %} - - - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - -
-
- - - -
- -
-
-
-
- - - - - -
- - - - - - - - - -
- - -
- -
- - -
- -
-
-
-
-
-
-
- {{profileData.user}} -
-
-
-
-
-
-
{{profileData.title}}
- -
    -
  • -
    -
    - -
    -
    -Joined {{profileData.user.date_joined|naturaltime}} -
    -
    -
  • - - - - - - {% if not profileData.is_high_moderator %} -
  • -
    -
    -
    - Last Seen {{ online_user_activity.last_activity|naturaltime }} -
    -
    -
  • - {% endif %} -
- - -
-
- - - -{% if request.user == profileData.user %} - -{% endif %} -
- - - -
-
- - Profile - Activity -{% if request.user == profileData.user %} - Settings -{% endif %} -
-
-
-
-
-
- - - - - - - - - - - - - - -
-
- - - - - - - - - -
-
- - - - - - - - - -
-
- -

{{countAnswers}} Answers

- -
-
- - - -
-
-
- - - - - - - - - -
- -
-
-
-{% for answer in mostVotes_answers %} -
- -
- {{answer.a_vote_ups.all.count}} -
- - - - {{answer.date}} - -
-{% endfor %} -
-
-{% if mostVotes_answers.has_other_pages %} -
    - {% if mostVotes_answers.has_previous %} -
  • «
  • - {% else %} -
  • «
  • - {% endif %} - {% for i in mostVotes_answers.paginator.page_range %} - {% if mostVotes_answers.number == i %} -
    {{ i }}
    - {% else %} - {{ i }} - {% endif %} - {% endfor %} - {% if users.has_next %} -
  • »
  • - {% else %} -
  • »
  • - {% endif %} -
-{% endif %} -
-
- - - - -
-
-
-{% for answer in recentEdited_answers %} -
- -
- {{answer.a_vote_ups.all.count}} -
- - - - {{answer.a_edited_time}} - -
-{% endfor %} -
-
-{% if recentEdited_answers.has_other_pages %} -
    - {% if recentEdited_answers.has_previous %} -
  • «
  • - {% else %} -
  • «
  • - {% endif %} - {% for i in recentEdited_answers.paginator.page_range %} - {% if recentEdited_answers.number == i %} -
    {{ i }}
    - {% else %} - {{ i }} - {% endif %} - {% endfor %} - {% if users.has_next %} -
  • »
  • - {% else %} -
  • »
  • - {% endif %} -
-{% endif %} -
-
-
- - -
-
-
-{% for answer in newest_answers %} -
- -
- {{answer.a_vote_ups.all.count}} -
- - - - {{answer.date}} - -
-{% endfor %} -
-
-{% if newest_answers.has_other_pages %} -
    - {% if newest_answers.has_previous %} -
  • «
  • - {% else %} -
  • «
  • - {% endif %} - {% for i in newest_answers.paginator.page_range %} - {% if newest_answers.number == i %} -
    {{ i }}
    - {% else %} - {{ i }} - {% endif %} - {% endfor %} - {% if users.has_next %} -
  • »
  • - {% else %} -
  • »
  • - {% endif %} -
-{% endif %} -
-
-
- - - -
- -
- - - -
-
-
- - - -{% if request.user.is_authenticated %} - -{% endif %} - - - - - - - - - - -
-
-
 
- - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/profile/allActionsActivity.html b/templates/profile/allActionsActivity.html deleted file mode 100644 index 9899507..0000000 --- a/templates/profile/allActionsActivity.html +++ /dev/null @@ -1,2361 +0,0 @@ -{% load humanize %} -{% load static %} -{% load qa_tags %} - -{% block content %} - - - - - - - - - - - - - - - - -
-
- -{% if request.user.is_authenticated %} - - -
- -
- - -{% else %} - -
- -
- -{% endif %} - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - - -
-
- - - -
- -
-
-
-
- - - - - -
- - - - - - - - -
- - -
- -
- - -
- -
-
-
-
-
-
-
- {{profileData}} -
-
-
-
-
-
-
{{profileData.title}}
- -
    - - -
  • -
    -
    - -
    -
    -Joined {{profileData.user.date_joined|naturaltime}} -
    -
    -
  • - - - - - {% if not profileData.is_high_moderator %} -
  • -
    -
    -
    - Last Seen {{ online_user_activity.last_activity|naturaltime }} -
    -
    -
  • - {% endif %} - - -
- - -
-
- - -{% if request.user == profileData.user %} - -{% endif %} -
- - -
- -
-
-
-
-
- - - - - - - - - - - -
-
- - - - - - - - - - -
-
- - - - - - - -
-
-

-{{countActions}} Action{{countActions|pluralize}}

- -
- -
- - - - -{% for result in paginatedResults %} - -{% if result.title %} - - - - - - - -{% endif %} - - - -{% if result.answer_owner %} - - - - - - - -{% endif %} - - - -{% if result.commented_by %} - - - - - - - -{% endif %} - - - -{% if result.question_to_closing %} - - - - - - - -{% endif %} - - - -{% if request.user.is_authenticated %} - -{% if result.question_bounty %} - - - - - - - -{% endif %} -{% endif %} - - - -{% if request.user.is_authenticated %} - -{% if result.badge_type %} - - - - - - - -{% endif %} -{% endif %} - - - -{% endfor %} - -
{{result.date|naturaltime}}
Question Asked< - {{result.title|truncatechars:80}} -
- added 1 character in body -
{{result.date|naturaltime}}
Answered - {{result.body|truncatechars:80}} -
- added 1 character in body -
{{result.date|naturaltime}}
Commented - {{result.comment}} -
- added 1 character in body -
{{result.date|naturaltime}}
Reviewed - Get all the Booleans of Model accordingly -
- added 1 character in body -
{{result.date|naturaltime}}
Bounty - {{result.question_bounty.title|truncatechars:80}} -
- added 1 character in body -
{{result.date|naturaltime}}
Badge Earned - {{result.tag_name}} -
- added 1 character in body -
-
- - -{% if alls.has_other_pages %} -
    - {% if alls.has_previous %} -
  • «
  • - {% else %} -
  • «
  • - {% endif %} - {% for i in alls.paginator.page_range %} - {% if alls.number == i %} - -
  • {{ i }} (current)
  • - - - {% else %} -
  • {{ i }}
  • - {% endif %} - {% endfor %} - {% if alls.has_next %} -
  • »
  • - {% else %} -
  • »
  • - {% endif %} -
-{% endif %} - - - - - -
- -
- -
-
- - - - - -{% if request.user.is_authenticated %} - -{% endif %} - - - - - -
-
-
 
- - - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/profile/badgesActivity.html b/templates/profile/badgesActivity.html deleted file mode 100644 index 61ec446..0000000 --- a/templates/profile/badgesActivity.html +++ /dev/null @@ -1,2304 +0,0 @@ -{% load humanize %} -{% load static %} -{% load qa_tags %} - -{% block content %} - - - - - - - - - - - - - - - - -
-
-{% if request.user.is_authenticated %} - - -
- -
- - -{% else %} - -
- -
- -{% endif %} - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - -
- - - - - - - -
- - -
- -
- - -
- -
-
-
-
-
- {{profileData.user}} -
-
-
-
-
-
-
{{profileData.title}}
- -
    - - -
  • -
    -
    - -
    -
    -Joined {{profileData.user.date_joined|naturaltime}} -
    -
    -
  • - - - - - {% if not profileData.is_high_moderator %} -
  • -
    -
    -
    - Last Seen {{ online_user_activity.last_activity|naturaltime }} -
    -
    -
  • - {% endif %} - - -
- - - - -
-
- - -{% if request.user == profileData.user %} - -{% endif %} -
- - -
-
- Profile - Activity -{% if request.user == profileData.user %} - Settings -{% endif %} -
-
-
-
-
-
- - - - - - - - - - - - - - - - -
-
- - - - - - - - - - -
-
- - - - - - - -
-
-

- {{totalBadges}} Badge{{totalBadges|pluralize}} -

- -
- -
- - - {% for badge in badges %} - - - - - {% endfor %} - -
-  {{badge.tag_name}} - -
- -
- - -
- -
- - -
-
- - -{% if request.user.is_authenticated %} - -{% endif %} - - - - - - - -
-
-
 
- - - - - - - - - - - -{% endblock content %} - - - - - diff --git a/templates/profile/base.html b/templates/profile/base.html deleted file mode 100644 index a59038f..0000000 --- a/templates/profile/base.html +++ /dev/null @@ -1,1095 +0,0 @@ -{% load static %} -{% load qa_tags %} -{% load humanize %} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{% if request.user.is_authenticated %} - - -
- -
- - -{% else %} - -
- -
- -{% endif %} - - - - - - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - -
-
- - - -
- -
-
-
-
- - - -
-
- - - - {% if messages %} - {% for message in messages %} - {% if message.tags == 'error' %} -
{{message|safe}}
- {% else %} -
- {{message|safe}}
- {% endif %} - {% endfor %} - {% endif %} -
- - - - - - - - - - -
-
-
 
- - - - - -{% block content %}{% endblock content %} {% block js %}{% endblock js%} {% block css %}{% endblock css %} - diff --git a/templates/profile/bookmarksActivity.html b/templates/profile/bookmarksActivity.html deleted file mode 100644 index 9e5a4cb..0000000 --- a/templates/profile/bookmarksActivity.html +++ /dev/null @@ -1,2424 +0,0 @@ -{% load humanize %} -{% load static %} -{% load qa_tags %} - -{% block content %} - - - - - - - - - - - - - -
-
- -{% if request.user.is_authenticated %} - - -
- -
- - -{% else %} - -
- -
- -{% endif %} - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - - -
-
- - - -
- -
-
-
-
- - - - -
- - - - - - - - -
- - -
- -
- - -
- -
-
-
-
-
-
-
- {{profileData.user}} -
-
-
-
-
-
-
{{profileData.title}}
- -
    - - -
  • -
    -
    - -
    -
    -Joined {{profileData.user.date_joined|naturaltime}} -
    -
    -
  • - - - - {% if not profileData.is_high_moderator %} -
  • -
    -
    -
    - Last Seen {{ online_user_activity.last_activity|naturaltime }} -
    -
    -
  • - {% endif %} - -
- -
-
- -{% if request.user == profileData.user %} - -{% endif %} -
- - -
-
- Profile - Activity -{% if request.user == profileData.user %} - Settings -{% endif %} -
-
-
-
-
-
- - - - - - - - - - - - - - -
-
- - - - - - - - -
-
- - - - - - - -
-
-

- {{totalBookmarks}} Bookmark{{totalBookmarks|pluralize}} -

-
-
- - - - -
-
-
- - - - - - - - - - -
- -
-
-
- - {% for bkms_question in mostVotes_bookmarks %} -
-
- -
-
-
-
{{bkms_question.bookmarked_question.calculate_UpVote_DownVote}}
-
votes
-
-
-
{{bkms_question.bookmarked_question.count_answers}}
-
answer
-
-
-
{{bkms_question.bookmarked_question.calculate_viewers}}
-
views
-
-
-
- -

{{bkms_question.bookmarked_question.title}}

- -
- {% for tag in bkms_question.bookmarked_question.tags.all %} - - {% endfor %} -
- -
- {{bkms_question.bookmarked_question.date}} - {{bkms_question.bookmarked_question.post_owner}} {{bkms_question.bookmarked_question.post_owner|calculate_reputation}} -
-
-
-{% endfor %} -
-
-
- - - -
-
-
- {% for bkms_question in activity_bookmarks %} -
-
- -
-
-
-
{{bkms_question.bookmarked_question.calculate_UpVote_DownVote}}
-
votes
-
-
-
{{bkms_question.bookmarked_question.count_answers}}
-
answer
-
-
-
{{bkms_question.bookmarked_question.calculate_viewers}}
-
views
-
-
-
- -

{{bkms_question.bookmarked_question.title}}

- -
- {% for tag in bkms_question.bookmarked_question.tags.all %} - - {% endfor %} -
- -
- {{bkms_question.bookmarked_question.date}} - {{bkms_question.bookmarked_question.post_owner}} {{bkms_question.bookmarked_question.post_owner|calculate_reputation}} -
-
-
-{% endfor %} -
-
-
- - - - - -
-
-
- {% for bkms_question in newest_bookmarks %} -
-
- -
-
-
-
{{bkms_question.bookmarked_question.calculate_UpVote_DownVote}}
-
votes
-
-
-
{{bkms_question.bookmarked_question.count_answers}}
-
answer
-
-
-
{{bkms_question.bookmarked_question.calculate_viewers}}
-
views
-
-
-
- -

{{bkms_question.bookmarked_question.title}}

- -
- {% for tag in bkms_question.bookmarked_question.tags.all %} - - {% endfor %} -
- -
- {{bkms_question.bookmarked_question.date}} - {{bkms_question.bookmarked_question.post_owner}} {{bkms_question.bookmarked_question.post_owner|calculate_reputation}} -
-
-
-{% endfor %} -
-
-
- - - - - - -
-
-
- {% for bkms_question in views_bookmarks %} -
-
- -
-
-
-
{{bkms_question.bookmarked_question.calculate_UpVote_DownVote}}
-
votes
-
-
-
{{bkms_question.bookmarked_question.count_answers}}
-
answer
-
-
-
{{bkms_question.bookmarked_question.calculate_viewers}}
-
views
-
-
-
- -

{{bkms_question.bookmarked_question.title}}

- -
- {% for tag in bkms_question.bookmarked_question.tags.all %} - - {% endfor %} -
- -
- {{bkms_question.bookmarked_question.date}} - {{bkms_question.bookmarked_question.post_owner}} {{bkms_question.bookmarked_question.post_owner|calculate_reputation}} -
-
-
-{% endfor %} -
-
-
- - - -
-
- - -
- -
-
- - - - -{% if request.user.is_authenticated %} - -{% endif %} - - - - - -
-
-
 
- - - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/profile/bountiesActivity.html b/templates/profile/bountiesActivity.html deleted file mode 100644 index 40df9ed..0000000 --- a/templates/profile/bountiesActivity.html +++ /dev/null @@ -1,2267 +0,0 @@ -{% load review_tags %} -{% load humanize %} -{% load cache %} -{% load qa_tags %} -{% load static %} - -{% block content %} - - - - - - - - - - - - - - - - - - - - -
-
- -{% if request.user.is_authenticated %} - - -
- -
- - -{% else %} - -
- -
- -{% endif %} - - - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - -
-
- - - -
- -
-
-
-
- - - - - - -
- - - - - - - - - -
- - -
- -
- - -
- -
-
-
-
-
-
-
- {{profileData.user}} -
-
-
-
-
-
-
{{profileData.title}}
- -
    -
  • -
    -
    - -
    -
    -Joined {{profileData.user.date_joined|naturaltime}} -
    -
    -
  • - - - - - - {% if not profileData.is_high_moderator %} -
  • -
    -
    -
    - Last Seen {{ online_user_activity.last_activity|naturaltime }} -
    -
    -
  • - {% endif %} -
- - -
-
- - - -{% if request.user == profileData.user %} - -{% endif %} -
- - - -
-
- - Profile - Activity -{% if request.user == profileData.user %} - Settings -{% endif %} -
-
-
-
-
-
- - - - - - - - - -
-
- - - - - - - - - -
-
- - - - - - - - - -
-
- -

{{countBounties}} Bounty{{countBounties|pluralize}}

- -
-
- - -
-
-
- - - - - - - - - -
- -
-
-
-{% for question in active_bounties %} -
- -
- {{question.question_bounty.qupvote_set.all.count}} -
- - - - {{question.question_bounty.date}} - -
-{% endfor %} -
-
-
- - - - -
-
-
-{% for question in earned_bounties %} -
- -
- {{question.question_bounty.qupvote_set.all.count}} -
- - - - {{question.question_bounty.date}} - -
-{% endfor %} -
-
-
- - -
- -
- - - -
-
-
- - - - -{% if request.user.is_authenticated %} - -{% endif %} - - - - - - -
-
-
 
- - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/profile/flag_summary.html b/templates/profile/flag_summary.html deleted file mode 100644 index 05d9bb2..0000000 --- a/templates/profile/flag_summary.html +++ /dev/null @@ -1,442 +0,0 @@ -{% extends 'profile/base.html' %} -{% load qa_tags %} - -{% block content %} - - - - - - - - Flags raised by {{profileData}} - Stack Overflow - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - -
- - - - - - - - -
- -
-

Flags raised by {{profileData}}

-
- - -
- -
-

-Flagging is a way to bring inappropriate content or behavior to the attention of the community. See: What is flagging?
-These are the flags that you have raised, along with their current status. You can filter this list using the links in the sidebar.

-
- - - - - - - - -{% for flag in results %} - -
- - - - -
- - {% if flag.question_forFlag %} - {{flag.actions_Flag_Q}} - {% elif flag.answer_forFlag %} - {{flag.actions_Flag_Q}} - {% else %} - {{flag.why_flagging}} - {% endif %} - – - - {% if flag.question_forFlag %} - {{flag.flagged_by}} - {% elif flag.answer_forFlag %} - {{flag.flagged_by}} - {% else %} - {{flag.flagged_by}} - {% endif %} - - - {% if flag.question_forFlag %} - {{flag.flagged_at}} - {% elif flag.answer_forFlag %} - {{flag.flagged_at}} - {% else %} - {{flag.date}} - {% endif %} - -   - - {% if flag.question_forFlag %} - - - {% for review in flag.question_forFlag.reviewflagpost_set.all %} - {% if review.flagReviewActions == "DELETE_IT" or review.flagReviewActions == "CLOSE_IT" %} - Helpful - {% elif review.flagReviewActions == "STAY_AS_IT_IS" %} - Rejected - {% endif %} - {% endfor %} - - - - {% elif flag.answer_forFlag %} - - - {% for review in flag.answer_forFlag.reviewflagpost_set.all %} - {% if review.flagReviewActions == "DELETE_IT" or review.flagReviewActions == "CLOSE_IT" %} - Helpful - {% elif review.flagReviewActions == "STAY_AS_IT_IS" %} - Rejected - {% endif %} - {% endfor %} - - - {% else %} - - - - {% for review in flag.comment_of.reviewflagcomment_set.all %} - {% if review.c_flagReviewActions == "DELETE_IT" %} - Helpful - {% else %} - Rejected - {% endif %} - {% endfor %} - - {% endif %} - -
-
- -{% endfor %} - - - - - - -
-
- -
- - - - - - - -
-
- - - - - -
-
-
 
- - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/profile/home.html b/templates/profile/home.html deleted file mode 100644 index 7fc5bad..0000000 --- a/templates/profile/home.html +++ /dev/null @@ -1,289 +0,0 @@ -{% extends 'profile/base.html' %} -{% load static %} -{% load humanize %} -{% load qa_tags %} - -{% block content %} - - - - - - - - Stack Overflow - Where Developers Learn, Share, & Build Careers - - - - - - -
-
- -
- - - - - - - - -
- - -
- - - -
-

Top Questions

- -
- - -
-
-
-
- Interesting - - - {{count_bounty}}Bountied - - - Hot - - - Week - - - Month -
-
-
- - -
- {% for question in questionsHome %} -
-
-
-
-
-
{{question.calculate_UpVote_DownVote}}
-
vote{{question.calculate_UpVote_DownVote|pluralize}}
-
- -
-
{{question.count_answers}}
-
answer{{question.count_answers|pluralize}}
-
- -
-
{{question.calculate_viewers}}
-
view{{question.calculate_viewers|pluralize}}
-
-
- -
-

{{question.title}}

-
- - {% for tag in question.tags.all %} - - {% endfor %} - -
- asked - {{question.date|naturaltime}} - - {{question.post_owner}} {{question.post_owner|calculate_reputation}} -
-
-
- - - -
- -
-
-{% endfor %} -
- -
-

Looking for more? Browse the complete list of questions, or popular tags. Help us answer unanswered questions.

- -
- - -
-
- - - - - -
-
-
 
- - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/profile/questionsActivity.html b/templates/profile/questionsActivity.html deleted file mode 100644 index 45e77a4..0000000 --- a/templates/profile/questionsActivity.html +++ /dev/null @@ -1,2396 +0,0 @@ -{% load humanize %} -{% load static %} -{% load qa_tags %} - -{% block content %} - - - - - - - - - - - - - - - -
-
- - -{% if request.user.is_authenticated %} -
- -
- - -{% else %} - -
- -
- -{% endif %} - - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - - -
-
- - - -
- -
-
-
-
- - - - -
- - - - - - - - -
- - -
- -
- - -
- -
-
-
-
-
-
-
- {{profileData.user}} -
-
-
-
-
-
-
{{profileData.title}}
- -
    -
  • -
    -
    - -
    -
    - Joined {{profileData.user.date_joined|naturaltime}} -
    -
    -
  • - - - - - {% if not profileData.is_high_moderator %} -
  • -
    -
    -
    - Last Seen {{ online_user_activity.last_activity|naturaltime }} -
    -
    -
  • - {% endif %} -
- -
-
- - -{% if request.user == profileData.user %} - -{% endif %} -
- - -
-
- Profile - Activity - {% if request.user == profileData.user %} - Settings - {% endif %} -
-
-
-
-
-
- - - - - - - - - - - - -
-
- - - - - - - - - - - -
-
- - - - - - - - -
-
-

- {{countQuestions}} Question{{countQuestions|pluralize}} -

- -
-
- - - - -
-
- - - -
- - - - - - -
- -
-
-
- {% for question in question_most_votes %} - -
-
 
-
-
-
{{question.calculate_UpVote_DownVote}}
-
vote
-
-
-
{{question.count_answers}}
-
answer
-
-
-
{{question.calculate_viewers}}
-
views
-
-
-
-

{{question.title}}

- {% for tag in question.tags.all %} -
- - {% endfor %} -
-
- {% if question.lastEdited_by %}Edited - {{question.q_edited_time}}{% else %}Asked - {{question.date}}{% endif %} - {% if question.lastEdited_by %}{{question.lastEdited_by}}{% endif %} {% if question.lastEdited_by %}{{question.lastEdited_by|calculate_reputation}}{% endif %} -
-
-
- -{% endfor %} -
-
- - - -
- {% for question in question_recent_activity %} -
-
-
-
 
-
-
-
{{question.calculate_UpVote_DownVote}}
-
vote
-
-
-
{{question.count_answers}}
-
answer
-
-
-
{{question.calculate_viewers}}
-
views
-
-
-
-

{{question.title}}

- {% for tag in question.tags.all %} -
- - {% endfor %} -
-
- {% if question.lastEdited_by %}Edited - {{question.q_edited_time}}{% else %}Asked - {{question.date}}{% endif %} - {% if question.lastEdited_by %}{{question.lastEdited_by}}{% endif %} {% if question.lastEdited_by %}{{question.lastEdited_by|calculate_reputation}}{% endif %} -
-
-
- -{% endfor %} -
-
- - - - - - - -
- {% for question in question_newest %} -
-
-
-
 
-
-
-
{{question.calculate_UpVote_DownVote}}
-
vote
-
-
-
{{question.count_answers}}
-
answer
-
-
-
{{question.calculate_viewers}}
-
views
-
-
-
-

{{question.title}}

- {% for tag in question.tags.all %} -
- - {% endfor %} -
-
- {% if question.lastEdited_by %}Edited - {{question.q_edited_time}}{% else %}Asked - {{question.date}}{% endif %} - {% if question.lastEdited_by %}{{question.lastEdited_by}}{% endif %} {% if question.lastEdited_by %}{{question.lastEdited_by|calculate_reputation}}{% endif %} -
-
-
- -{% endfor %} -
-
- - - -
- {% for question in question_most_views %} -
-
-
-
 
-
-
-
{{question.calculate_UpVote_DownVote}}
-
vote
-
-
-
{{question.count_answers}}
-
answer
-
-
-
{{question.calculate_viewers}}
-
views
-
-
-
-

{{question.title}}

- {% for tag in question.tags.all %} -
- - {% endfor %} -
-
- {% if question.lastEdited_by %}Edited - {{question.q_edited_time}}{% else %}Asked - {{question.date}}{% endif %} - {% if question.lastEdited_by %}{{question.lastEdited_by}}{% endif %} {% if question.lastEdited_by %}{{question.lastEdited_by|calculate_reputation}}{% endif %} -
-
-
- -{% endfor %} -
-
- -
- -
- - -
- - - - -
- -
- - -
-
- - - - -{% if request.user.is_authenticated %} - -{% endif %} - - - - - - -
-
-
 
- - - - - - - - - - - -{% endblock content %} - - - - - diff --git a/templates/profile/reputationActivity.html b/templates/profile/reputationActivity.html deleted file mode 100644 index cb3fbba..0000000 --- a/templates/profile/reputationActivity.html +++ /dev/null @@ -1,2412 +0,0 @@ -{% load review_tags %} -{% load humanize %} -{% load cache %} -{% load qa_tags %} -{% load static %} - -{% block content %} - - - - - - - - - - - - - - - - - - - - - -
-
-{% if request.user.is_authenticated %} - - -
- -
- - -{% else %} - -
- -
- -{% endif %} - - - - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - -
-
- - - -
- -
-
-
-
- - - - - - - - -
- - - - - - - - - -
- - -
- -
- - -
- -
-
-
-
-
-
-
- {{profileData.user}} -
-
-
-
-
-
-
{{profileData.title}}
- -
    -
  • -
    -
    - -
    -
    -Joined {{profileData.user.date_joined|naturaltime}} -
    -
    -
  • - - - - - - {% if not profileData.is_high_moderator %} -
  • -
    -
    -
    - Last Seen {{ online_user_activity.last_activity|naturaltime }} -
    -
    -
  • - {% endif %} -
- - -
-
- - - -{% if request.user == profileData.user %} - -{% endif %} -
- - - -
-
- - Profile - Activity -{% if request.user == profileData.user %} - Settings -{% endif %} -
-
-
-
-
-
- - - - - - - - - -
-
- - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - - -
-
- -

{{profileData.user|calculate_reputation}} Reputation

- -
-
- - -
-
-
- - - - - - - - -
- -
-
-
-{% for question in get_rep_data %} - - - -{% if question.question_O %} - -
- - -
-
- {% if question.inc_dec == "Increased" %} - Q - + {{question.question_rep_C}} - {% else %} - Q - - {{question.question_rep_C}} - {% endif %} -
-
- -
- - - -
- {{question.date_earned|naturaltime}} ({{question.date_earned}}) -
- -
- -
-
-
-
-
-
- -{% elif question.answer_O %} - - -
- - -
-
- {% if question.inc_dec == "Increased" %} - A - {{question.answer_rep_C}} - {% else %} - A - {{question.answer_rep_C}} - {% endif %} -
-
- - -
- - - - -
- {{question.date_earned|naturaltime}} ({{question.date_earned }}) -
- -
- -
-
-
-
-
-
- - -{% endif %} - -{% endfor %} -
-
-
- - - - - -
-
-
-{% for question in earned_bounties %} -
- -
- {{question.question_bounty.qupvote_set.all.count}} -
- - - - {{question.question_bounty.date}} - -
-{% endfor %} -
-
-
- -
- -
- - - -
-
-
- - - -{% if request.user.is_authenticated %} - -{% endif %} - - - - - - - -
-
-
 
- - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/profile/taggedItems_ofUser.html b/templates/profile/taggedItems_ofUser.html deleted file mode 100644 index 9e1f3ab..0000000 --- a/templates/profile/taggedItems_ofUser.html +++ /dev/null @@ -1,238 +0,0 @@ -{% extends 'profile/base.html' %} - - -{% block content %} - - - -
-
- - - - -
- - - - - - -
- -
-
-

-Search Results

- -
- -
Results tagged with
- - -
-
- {{getAllQuestions.count}} result{{getAllQuestions.count|pluralize}} -
-
-
-
- -{% for question in getAllQuestions %} - -
-
-
-
-
- {{question.calculate_UpVote_DownVote}} -
vote{{question.calculate_UpVote_DownVote|pluralize}}
-
-
-
-
- -
- - -
- {{question.body|truncatechars:80}} -
- -
- {% for tag in question.tags.all %} - - {% endfor %} -
- -
- asked {{question.date}} - -
-
-
-
- -{% endfor %} - - - -
-
-
- -
- - -
-
- - - - - - - - - -
-
-
 
- - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/profile/tagsActivity.html b/templates/profile/tagsActivity.html deleted file mode 100644 index 18ba7e8..0000000 --- a/templates/profile/tagsActivity.html +++ /dev/null @@ -1,2254 +0,0 @@ -{% load humanize %} -{% load static %} -{% load qa_tags %} - -{% block content %} - - - - - - - - - - - - - - - - -
-
-{% if request.user.is_authenticated %} - - -
- -
- - -{% else %} - -
- -
- -{% endif %} - - - - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - - - -
-
- - - -
- -
-
-
-
- - - - -
- - - - - - - - -
- - -
- -
- - -
- -
- -
-
-
-
- {{profileData.user}} -
-
-
-
-
-
-
{{profileData.title}}
- -
    - - -
  • -
    -
    - -
    -
    -Joined {{profileData.user.date_joined|naturaltime}} -
    -
    -
  • - - - - - - {% if not profileData.is_high_moderator %} -
  • -
    -
    -
    - Last Seen {{ online_user_activity.last_activity|naturaltime }} -
    -
    -
  • - {% endif %} -
- - -
-
- -{% if request.user == profileData.user %} - -{% endif %} -
- - -
-
- Profile - Activity -{% if request.user == profileData.user %} - Settings -{% endif %} -
-
-
-
-
-
- - - - - - - - - - - - - - -
-
- - - - - - - - - - -
-
- - - - - - -
-
-

- {{tags.count}} Tags -

-
- -
- - - {% for tag in tags %} - - - - {% endfor %} - -
- - -   - - -
-
- -
-
- - -
-
- - - - -{% if request.user.is_authenticated %} - -{% endif %} - - - - - - - -
-
-
 
- - - - - - - - - - - -{% endblock content %} - - - - - - - - - - - - - - - - - - - - - - diff --git a/templates/profile/tagsPage.html b/templates/profile/tagsPage.html deleted file mode 100644 index 12befa0..0000000 --- a/templates/profile/tagsPage.html +++ /dev/null @@ -1,304 +0,0 @@ -{% extends 'profile/base.html' %} -{% load qa_tags %} - -{% block content %} - - - - - - - - - - Tags - Stack Overflow - - - - - - - - - - - - - - - - - - - - -
-
- - -
- - - - - - - -
- - -
-

- Tags -

- -

- A tag is a keyword or label that categorizes your question with other, similar questions. Using the right tags makes it easier for others to find and answer your question. -

- - -
-
- - -
- - - -
- - - -
-
- {% for tag in All_tags %} -
-
-
- -
-
- -
- P is a language for asynchronous event-driven programming written by Microsoft. Questions should include code examples sufficient to reproduce the problem. -
- -
-
{{tag|count_questions_by_tag_without_user}} question{{tag|count_questions_by_tag_without_user|pluralize}}
-
-
-
- {% endfor %} -
-
- - - - - - - -
- - - -
-
-
- - - - - - - -
-
-
 
- - - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/profile/tourPage.html b/templates/profile/tourPage.html deleted file mode 100644 index 4792785..0000000 --- a/templates/profile/tourPage.html +++ /dev/null @@ -1,109 +0,0 @@ -{% extends 'profile/base.html' %} - -{% block content %} - - - - - - -
-
-

Stack OverFlow Clone

-
-

This Page is for Award the "Informed" Badge on scroll, Badge will be awarded automatically when you scroll down to 75%. This is just demonstration to show.

-
- -
-

Cras mattis consectetur purus sit amet fermentum. Donec id elit non mi porta gravida at eget metus. Donec id elit non mi porta gravida at eget metus. Aenean lacinia bibendum nulla sed consectetur.

-

Tristique Aenean Etiam Cras

-

Donec id elit non mi porta gravida at eget metus. Donec ullamcorper nulla non metus auctor fringilla. Nulla vitae elit libero, a pharetra augue. Donec sed odio dui. Donec id elit non mi porta gravida at eget metus. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.

-

Cras mattis consectetur purus sit amet fermentum. Donec id elit non mi porta gravida at eget metus. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Etiam porta sem malesuada magna mollis euismod. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper nulla non metus auctor fringilla.

-

Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Donec ullamcorper nulla non metus auctor fringilla. Sed posuere consectetur est at lobortis. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Aenean lacinia bibendum nulla sed consectetur. Nulla vitae elit libero, a pharetra augue.

-

Donec sed odio dui. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Cras mattis consectetur purus sit amet fermentum. Maecenas sed diam eget risus varius blandit sit amet non magna.

-
    -
  • Ullamcorper Aenean Ornare
  • -
  • Ridiculus Lorem Malesuada Consectetur
  • -
  • Aenean Tristique Sit Lorem Purus
  • -
  • Vehicula Egestas Mollis Cursus Nibh
  • -
-

Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Sed posuere consectetur est at lobortis. Sed posuere consectetur est at lobortis. Maecenas faucibus mollis interdum. Nullam id dolor id nibh ultricies vehicula ut id elit. Aenean lacinia bibendum nulla sed consectetur. Nullam quis risus eget urna mollis ornare vel eu leo.

-

Bibendum Aenean Dapibus Tristique

-

Cras mattis consectetur purus sit amet fermentum. Donec id elit non mi porta gravida at eget metus. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Etiam porta sem malesuada magna mollis euismod. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper nulla non metus auctor fringilla.

-

Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Donec ullamcorper nulla non metus auctor fringilla. Sed posuere consectetur est at lobortis. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Aenean lacinia bibendum nulla sed consectetur. Nulla vitae elit libero, a pharetra augue.

-

Donec sed odio dui. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Cras mattis consectetur purus sit amet fermentum. Maecenas sed diam eget risus varius blandit sit amet non magna.

-
    -
  • Ullamcorper Aenean Ornare
  • -
  • Ridiculus Lorem Malesuada Consectetur
  • -
  • Aenean Tristique Sit Lorem Purus
  • -
  • Vehicula Egestas Mollis Cursus Nibh
  • -
- -
-
- - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/profile/usersPage.html b/templates/profile/usersPage.html deleted file mode 100644 index 363cd28..0000000 --- a/templates/profile/usersPage.html +++ /dev/null @@ -1,247 +0,0 @@ -{% extends 'profile/base.html' %} -{% block content %} -{% load qa_tags %} - - - - - - - - Users - Stack Overflow - - - - - - -
-
- -
- - - - - - - - - -
- -
- -

- Users -

- -
-
- - -
- -
- - -
-
- {% for user in users %} - - {% endfor %} -
-
- - - - - - - -
- -
-
- - - - - - -
-
-
 
- - - - - - - - -{% endblock content %} - diff --git a/templates/qa/BountiedQuestions.html b/templates/qa/BountiedQuestions.html deleted file mode 100644 index b047f85..0000000 --- a/templates/qa/BountiedQuestions.html +++ /dev/null @@ -1,1308 +0,0 @@ -{% load humanize %} -{% load static %} -{% load qa_tags %} - -{% block content %} - - - - - - - - - - - Questions - Stack Overflow-Clone - - - - - - - - - - - - - - -
-
-{% if request.user.is_authenticated %} - - -
- -
- - -{% else %} - -
- -
- -{% endif %} - - - - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - -
-
- - - -
- -
-
-
-
- - - - -
- - - - - - - - -
- - - -
- - - - -
-

Bountied Questions

- -
- - - -
-
-
- {{questionsCount}} - question{{questionsCount|pluralize}} -
- -
-
-
- -
Newest
-
- -
Active
-
- {% if query == '' %} - -
Bountied
-
{{count_bounty}}
-
- {% else %} - -
Bountied
-
{{count_bounty}}
-
- {% endif %} - {% if query == '' %} - -
Unanswered
-
- {% else %} - -
Unanswered
-
- {% endif %} - -
- -
-
- -
- -
- -
-
- - -
-
- - - - - - - -
- {% csrf_token %} -
-
-
-
-
-
- Filter by - - -
-
-
- {% if bool_1 == True %} - - {% else %} - - {% endif %} -
- -
-
- - -
-
-
- {% if bool_2 == True %} - - {% else %} - - {% endif %} -
- -
-
-
-
-
- {% if bool_3 == True %} - - {% else %} - - {% endif %} -
- -
-
-
-
-
-
- Sorted by - -
-
-
- {% if selected == "Newest" %} - - {% else %} - - {% endif %} -
- -
-
- -
-
-
- {% if selected == "RecentActivity" %} - - {% else %} - - {% endif %} -
- -
-
-
-
-
- {% if selected == "MostVotes" %} - - {% else %} - - {% endif %} -
- -
-
-
-
-
- {% if selected == "BountyEndingSoon" %} - - {% else %} - - {% endif %} -
- -
-
- - -
-
-
-
- Tagged with -
-
-
-
-
-
-
-
-
-
- - -
-
- -
-
-
-
-
-
- - - - -
- - - -
- -{% for question in questions %} -
-
-
-
-
- {{question.calculate_UpVote_DownVote}} -
vote{{question.calculate_UpVote_DownVote|pluralize}}
-
-
-
- {{question.count_answers}}answer{{question.count_answers|pluralize}} -
-
-
{{question.calculate_viewers}} view{{question.calculate_viewers|pluralize}}
-
- - -
-

{{question.title}}

-
- {{question.body|truncatechars:200}} -
- -
-
-
- {% for tag in question.get_all_tags %} - - {% endfor %} -
-
-
- -
-
-
-
-{% endfor %} - - - -
- -
- -
- - -
- {% if questions.has_other_pages %} - {% for i in questions.paginator.page_range %} - {% if questions.number == i %} -
{{ i }}
- {% else %} - {{ i }} - {% endif %} - {% endfor %} - {% endif %} -
- - - -
- - - - -
-
- - - - - - - -
-
-
 
- - - - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/qa/Questions_List.html b/templates/qa/Questions_List.html deleted file mode 100644 index b9c27a5..0000000 --- a/templates/qa/Questions_List.html +++ /dev/null @@ -1,1304 +0,0 @@ -{% load humanize %} -{% load static %} -{% load qa_tags %} - -{% block content %} - - - - - - - - - - - Questions - Stack Overflow-Clone - - - - - - - - - - - - - - - -
-
-{% if request.user.is_authenticated %} - - -
- -
- - -{% else %} - -
- -
- -{% endif %} - - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - -
-
- - - -
- -
-
-
-
- - - - - -
- - - - - - - - -
- - - -
- - - - -
-

All Questions

- -
- - - -
-
-
- {{countQuestions}} - question{{countQuestions|pluralize}} -
- -
-
-
- -
Newest
-
- {% if query == '' %} - -
Active
-
- {% else %} - -
Active
-
- {% endif %} - {% if query == '' %} - -
Bountied
-
{{count_bounty}}
-
- {% else %} - -
Bountied
-
{{count_bounty}}
-
- {% endif %} - {% if query == '' %} - -
Unanswered
-
- {% else %} - -
Unanswered
-
- {% endif %} - -
- -
-
- -
- -
- -
-
- - -
-
- - - - - - - -
- {% csrf_token %} -
-
-
-
-
-
- Filter by - - -
-
-
- {% if bool_1 == True %} - - {% else %} - - {% endif %} -
- -
-
- - -
-
-
- {% if bool_2 == True %} - - {% else %} - - {% endif %} -
- -
-
-
-
-
- {% if bool_3 == True %} - - {% else %} - - {% endif %} -
- -
-
-
-
-
-
- Sorted by - -
-
-
- {% if selected == "Newest" %} - - {% else %} - - {% endif %} -
- -
-
- -
-
-
- {% if selected == "RecentActivity" %} - - {% else %} - - {% endif %} -
- -
-
-
-
-
- {% if selected == "MostVotes" %} - - {% else %} - - {% endif %} -
- -
-
-
-
-
- {% if selected == "BountyEndingSoon" %} - - {% else %} - - {% endif %} -
- -
-
- - -
-
-
-
- Tagged with -
-
-
-
-
-
-
-
-
-
- - -
-
- -
-
-
-
-
-
- - - - -
- - - -
- -{% for question in questions %} -
-
-
-
-
- {{question.calculate_UpVote_DownVote}} -
vote{{question.calculate_UpVote_DownVote|pluralize}}
-
-
-
- {{question.count_answers}}answer{{question.count_answers|pluralize}} -
-
-
{{question.calculate_viewers}} view{{question.calculate_viewers|pluralize}}
-
- - -
-

{{question.title}}

-
- {{question.body|truncatechars:200}} -
- -
-
-
- {% for tag in question.get_all_tags %} - - {% endfor %} -
-
-
- -
-
-
-
-{% endfor %} - - - -
- -
- -
- - -
- {% if questions.has_other_pages %} - {% for i in questions.paginator.page_range %} - {% if questions.number == i %} -
{{ i }}
- {% else %} - {{ i }} - {% endif %} - {% endfor %} - {% endif %} -
- - - -
- - - - -
-
- - - - - - - -
-
-
 
- - - - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/qa/TimeLineAnswer.html b/templates/qa/TimeLineAnswer.html deleted file mode 100644 index d5a3191..0000000 --- a/templates/qa/TimeLineAnswer.html +++ /dev/null @@ -1,346 +0,0 @@ -{% extends 'profile/base.html' %} -{% load humanize %} - -{% block content %} - - - - - - - Timeline {{data.title}} - Stack Overflow - Clone - - - - - - - - - - - -
-
- -
- - - - - - - -
- -
-
-

- Timeline for {{data.body|truncatechars:80}} -

-

- Current License: - __License Name__ -

-
- -
- {{countEvents}} event{{countEvents|pluralize}} -
- - - - - - - - - - - - - - - - - - -{% for elmnt in paginated_timeline %} - - - - - - - - - - - - - - - - - - - - - -{% endfor %} - - - -
- {% if paginated_timeline.has_other_pages %} -
    - {% if paginated_timeline.has_previous %} -
  • «
  • - {% else %} -
  • «
  • - {% endif %} - {% for i in paginated_timeline.paginator.page_range %} - {% if paginated_timeline.number == i %} -
    {{ i }}
    - {% else %} - {{ i }} - {% endif %} - {% endfor %} - {% if users.has_next %} -
  • »
  • - {% else %} -
  • »
  • - {% endif %} -
- {% endif %} -
- - - - -
whenwhatbycomment
- {% if elmnt.date %}{{elmnt.date|naturaltime}}{% elif elmnt.edited_suggested_at %}{{elmnt.edited_suggested_at|naturaltime}}{% endif %} - - - - - {% if elmnt.answer_comment %} - commented - {% elif elmnt.answer_owner %} - answered - {% elif elmnt.edited_answer %} - edit suggessted - {% endif %} - - - - - - - - - {% if elmnt.answer_comment %} - {{elmnt.commented_by}} - {% elif elmnt.edited_answer %} - {{elmnt.edit_suggested_by}} - {% endif %} - - - - - - - {% if elmnt.answer_owner %}timeline{% else %}timeline{% endif %} - score: {{data.countAllTheVotes}} - -
- -
-
-
- - - - - - -
-
-
 
- - - - - - - - -{% for s in paginated_timeline %} - - - -{% if s.question_comment %} - {{s.comment}} -{% elif s.answer_owner %} - {{s.body}} -{% elif s.by_user %} - N/A -{% elif s.upvote_by_q %} - N/A -{% elif s.downvote_by_q %} - N/A -{% elif s.edited_question %} - N/A -{% endif %} - - - -{% endfor %} - - - -{% for dat in post_answer %} -{% for s in dat.anshis.all %} - - -Previous :- {{s.next_record.instance.body}} -{{s.history_user}} -{{s.history_date}} -

Previous Record

-{{s.prev_record.body}} -

Next Record

-{{s.next_record.body}} -{{s.instance}} - -



- - - -{% endfor %}{% endfor %} - - - - - - -{% endblock content %} - - - - - - diff --git a/templates/qa/TimeLineQuestion.html b/templates/qa/TimeLineQuestion.html deleted file mode 100644 index da3ff84..0000000 --- a/templates/qa/TimeLineQuestion.html +++ /dev/null @@ -1,308 +0,0 @@ -{% extends 'profile/base.html' %} -{% load humanize %} - -{% block content %} - - - - - - - Timeline {{data.title}} - Stack Overflow - Clone - - - - - - - - - - - -
-
- -
- - - - - - - -
- -
-
-

- Timeline for {{data.title}} -

-

- Current License: - __License Name__ -

-
- -
- {{countEvents}} event{{countEvents|pluralize}} -
- - - - - - - - - - - - - - - - - - -{% for elmnt in paginated_timeline %} - - - - - - - - - - - - - - - - - - - - - -{% endfor %} - - - -
- {% if paginated_timeline.has_other_pages %} -
    - {% if paginated_timeline.has_previous %} -
  • «
  • - {% else %} -
  • «
  • - {% endif %} - {% for i in paginated_timeline.paginator.page_range %} - {% if paginated_timeline.number == i %} -
    {{ i }}
    - {% else %} - {{ i }} - {% endif %} - {% endfor %} - {% if users.has_next %} -
  • »
  • - {% else %} -
  • »
  • - {% endif %} -
- {% endif %} -
- - - - -
whenwhatbycomment
- {% if elmnt.date %}{{elmnt.date|naturaltime}}{% elif elmnt.edited_suggested_at %}{{elmnt.edited_suggested_at|naturaltime}}{% endif %} - - - - - {% if elmnt.question_comment %}commented{% elif elmnt.answer_owner %}answered{% elif elmnt.by_user %}bounty offered{% elif elmnt.upvote_by_q %}upvote{% elif elmnt.downvote_by_q %}downvote{% elif elmnt.edited_question %}edit suggessted{% endif %} - - - - - - - - - {% if elmnt.question_comment %}{{elmnt.commented_by}}{% elif elmnt.answer_owner %}{{elmnt.answer_owner}}{% elif elmnt.by_user %}N/A{% elif elmnt.upvote_by_q %}{{elmnt.upvote_by_q}}{% elif elmnt.downvote_by_q %}{{elmnt.downvote_by_q}}{% elif elmnt.edited_question %}N/A{% endif %} - - - - - - - {% if elmnt.answer_owner %}timeline{% else %}timeline{% endif %} - score: 0 - -
- -
-
-
- - - - -
-
-
 
- - - - - - - - -{% for s in paginated_timeline %} - - - -{% if s.question_comment %} - {{s.comment}} -{% elif s.answer_owner %} - {{s.body}} -{% elif s.by_user %} - N/A -{% elif s.upvote_by_q %} - N/A -{% elif s.downvote_by_q %} - N/A -{% elif s.edited_question %} - N/A -{% endif %} - - - -{% endfor %} - - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/qa/activeQuestions.html b/templates/qa/activeQuestions.html deleted file mode 100644 index be34ebe..0000000 --- a/templates/qa/activeQuestions.html +++ /dev/null @@ -1,1322 +0,0 @@ -{% load humanize %} -{% load static %} -{% load qa_tags %} - -{% block content %} - - - - - - - - - - - Questions - Stack Overflow-Clone - - - - - - - - - - - - - - -
-
-{% if request.user.is_authenticated %} - - -
- -
- - -{% else %} - -
- -
- -{% endif %} - - - - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - -
-
- - - -
- -
-
-
-
- - - - - -
- - - - - - - - -
- - - -
- - - - -
-

Unanswered Questions

- -
- - - -
-
-
- {{questionsCount}} - question{{questionsCount|pluralize}} -
- -
-
-
- -
Newest
-
- {% if query == '' %} - -
Active
-
- {% else %} - -
Active
-
- {% endif %} - {% if query == '' %} - -
Bountied
-
{{count_bounty}}
-
- {% else %} - -
Bountied
-
{{count_bounty}}
-
- {% endif %} - {% if query == '' %} - -
Unanswered
-
- {% else %} - -
Unanswered
-
- {% endif %} - -
- -
-
- -
- -
- -
-
- - -
-
- - - - - - - -
- {% csrf_token %} -
-
-
-
-
-
- Filter by - - -
-
-
- {% if bool_1 == True %} - - {% else %} - - {% endif %} -
- -
-
- - -
-
-
- {% if bool_2 == True %} - - {% else %} - - {% endif %} -
- -
-
-
-
-
- {% if bool_3 == True %} - - {% else %} - - {% endif %} -
- -
-
-
-
-
-
- Sorted by - -
-
-
- {% if selected == "Newest" %} - - {% else %} - - {% endif %} -
- -
-
- -
-
-
- {% if selected == "RecentActivity" %} - - {% else %} - - {% endif %} -
- -
-
-
-
-
- {% if selected == "MostVotes" %} - - {% else %} - - {% endif %} -
- -
-
-
-
-
- {% if selected == "BountyEndingSoon" %} - - {% else %} - - {% endif %} -
- -
-
- - -
-
-
-
- Tagged with -
-
-
-
-
-
-
-
-
-
- - -
-
- -
-
-
-
-
-
- - - - -
- - - -
- -{% for question in questions %} -
-
-
-
-
- {{question.calculate_UpVote_DownVote}} -
vote{{question.calculate_UpVote_DownVote|pluralize}}
-
-
-
- {{question.count_answers}}answer{{question.count_answers|pluralize}} -
-
-
{{question.calculate_viewers}} view{{question.calculate_viewers|pluralize}}
-
- - -
-

{{question.title}}

-
- {{question.body|truncatechars:200}} -
- -
-
-
- {% for tag in question.get_all_tags %} - - {% endfor %} -
-
-
- -
-
-
-
-{% endfor %} - - - -
- -
- -
- - -
- {% if questions.has_other_pages %} - {% for i in questions.paginator.page_range %} - {% if questions.number == i %} -
{{ i }}
- {% else %} - {{ i }} - {% endif %} - {% endfor %} - {% endif %} -
- - - -
- - - - -
-
- - - - - - - -
-
-
 
- - - - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/qa/answer_edit_history.html b/templates/qa/answer_edit_history.html deleted file mode 100644 index f4b1b18..0000000 --- a/templates/qa/answer_edit_history.html +++ /dev/null @@ -1,242 +0,0 @@ -{% extends 'profile/base.html' %} -{% load humanize %} -{% load martortags %} - -{% block content %} - - - - - - - - - - -
-
-
- - - - - - -
- -
- - {% for history in editHistory %} - -
-
-
- -
-
-
-
- -
-
-
- Edit - Link - -
-
-
-
- -
- - - -
-
-
-
- -
-
- - - - - - -
{{history.prev_record.body|safe_markdown}}
{{history.next_record.body|safe_markdown}}
-
-
-
- - {% endfor %} - -
-
-
- - - - - - -
-
- - - - -
-
-
 
- - - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/qa/banUser.html b/templates/qa/banUser.html deleted file mode 100644 index 937ab23..0000000 --- a/templates/qa/banUser.html +++ /dev/null @@ -1,47 +0,0 @@ -{% extends 'profile/base.html' %} -{% load crispy_forms_tags %} -{% load humanize %} - -{% block content %} - -
-
- - - - - - - - -{% for s in userBanHistory %} - - - - - - - - - - - -{% endfor %} - - -
DateBanned forSuspension PeriodBanned ByCompleted ?
{{s.baned_at|naturaltime}}{{s.banned_reasons}}{{s.ban_till}}{{s.banned_by}}{% if s.is_banned %}Completed{% else %}On Going{% endif %}
-
- - - -
-
- {% csrf_token %} - - {{ ban_form|crispy }} -
- -
-
- -{% endblock content %} \ No newline at end of file diff --git a/templates/qa/edit_answer.html b/templates/qa/edit_answer.html deleted file mode 100644 index e040636..0000000 --- a/templates/qa/edit_answer.html +++ /dev/null @@ -1,256 +0,0 @@ -{% extends "profile/base.html" %} -{% load crispy_forms_tags %} -{% load static %} - -{% block content %} - - - - - - - - - - - Edit - Stack Overflow - - - - - - - - -
-
- -
- - - - - - - - -
- - - -
- -
-

Your edit will be placed in a queue until it is peer reviewed.

-

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

-
- - - -
-
- {% csrf_token %} -
- {{form}} -
- -
-
- - - - -
- - - - -
- -
-
- - - - - - - -
-
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -{% endblock content %} - diff --git a/templates/qa/edit_question.html b/templates/qa/edit_question.html deleted file mode 100644 index 4ceeb57..0000000 --- a/templates/qa/edit_question.html +++ /dev/null @@ -1,334 +0,0 @@ -{% extends "profile/base.html" %} -{% load crispy_forms_tags %} -{% load static %} - -{% block content %} - - - - - - - - - - - Edit - Stack Overflow - - - - - - - - - -
-
- - - - - - -
- - - - - - - - -
- - - -
- -
-

Your edit will be placed in a queue until it is peer reviewed.

-

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

-
- - - - - -
- {% csrf_token %} -
- -
-
-
- -
-
-
- -
-
-
-
- - - -
- -
-
-
- {{form.body}} -
-
-
-
-
- -
- -
- -
-
-
- -
-
-
- - -
-

-
-
-
-
-
-
- - -
- -
- -
-
-
-
- {% if form.errors %} -
{{form.errors}}
- {% endif %} - -
- - Cancel -
- -
-
- -
- - - - -
- - - -
-
- - - - - - - - -
-
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{% endblock content %} - diff --git a/templates/qa/getQuestionEditHistory.html b/templates/qa/getQuestionEditHistory.html deleted file mode 100644 index 089ec0a..0000000 --- a/templates/qa/getQuestionEditHistory.html +++ /dev/null @@ -1,244 +0,0 @@ -{% extends 'profile/base.html' %} -{% load humanize %} -{% load martortags %} - -{% block content %} - - - - - - - - - - - -
-
-
- - - - - - -
- -
- - {% for history in editHistory %} - -
-
-
- -
-
-
-
- -
-
-
- Edit - Link - -
-
-
-
- -
- - - -
-
-
-
- -
-
- - - - - - -
{{history.prev_record.body|safe_markdown}}
{{history.next_record.body|safe_markdown}}
-
-
-
- - {% endfor %} - -
-
-
- - - - - - -
-
- - - - - -
-
-
 
- - - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/qa/new_question.html b/templates/qa/new_question.html deleted file mode 100644 index 18ea31f..0000000 --- a/templates/qa/new_question.html +++ /dev/null @@ -1,425 +0,0 @@ -{% extends "profile/base.html" %} -{% load static %} -{% load crispy_forms_tags %} - -{% block content %} - - - - - - - - - - - - -
-
- - - - -
- - -
- - -
-
- Ask a public question -
-
- -
-
- - - -
- {% csrf_token %} -
-
-
-
- -
- -

-
-
-
-
-
- - -
-
- -
-
-
- {{ form.body }} -
-
-
-
-
-
-
-
- - - - - -
-
-
-
- -
- -
-
- -
-

-
-
-
-
-
-
-
- - -
- -
-
- -
-
- -
-
- -
-
- - -
-
-
- - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
 
- - - - - - - - -{% endblock content %} - diff --git a/templates/qa/questionDetailView.html b/templates/qa/questionDetailView.html deleted file mode 100644 index 6ad21b0..0000000 --- a/templates/qa/questionDetailView.html +++ /dev/null @@ -1,2306 +0,0 @@ -{% extends 'profile/base.html' %} -{% load humanize %} -{% load crispy_forms_tags %} -{% load static %} -{% load qa_tags %} -{% load martortags %} - -{% block content %} - - - - - - - {{data.title}}- Stack Overflow - - - - - - - - - - - - - - - - -
-
- - - -
- - - - -
-
- - -
- - - -
-
- Asked - -
- -
- Viewed - {{data.viewers.all.count}} times -
-
- - - - - -
-
- -
-
-
-
-
- {% if request.user == likepost.upvote_by_q %} - - {% else %} - - {% endif %} - {% if request.user.profile.established_user_Priv == False %} -
-
{{data.calculate_UpVote_DownVote}}
-
- {% elif request.user.profile.established_user_Priv %} -
-
-
{{data.calculate_UpVote_DownVote}}
-
-
- {% endif %} -
-
- -
- -
-
- {% if request.user == likeDownpost.downvote_by_q %} - - {% else %} - - {% endif %} -
-
- -
- - {% if request.user == bookmarked_by_user.bookmarked_by %} - - {% else %} - - {% endif %} - -
- - - -
-
- -
-
- -
- - {% if data.is_deleted %} - - {% endif %} - - {% if data.is_bountied %} - - {% endif %} - - - - {% if data.is_closed %} - - {% endif %} - - - - - -
-

{{data.body|safe_markdown}}

-
- -
- -
- -
-
-
-
-
- -
- Share -
- - {% if canMakeAnotherEdit == True %} - -
- Edit -
- - {% else %} - - - - - - {% endif %} - - - {% if request.user.profile.accessTo_moderatorTools %} -
- Edit-Tag -
- {% endif %} - - {% if request.user.profile.protect_questions %} - {% if data.is_protected == False %} -
- -
- {% endif %} - {% endif %} - - {% if request.user.profile.set_bounties %} - {% if data.is_bountied == False %} - - {% endif %} - {% endif %} - - {% if request.user.profile.flag_posts %} -
- Flag -
- {% endif %} - - {% if request.user.profile.cast_close_AND_Reopen_votes %} - {% if data.is_closed == False %} -
- -
- {% else %} -
- -
- {% endif %} - {% endif %} - - {% if request.user == data.post_owner %} - {% if data.is_deleted %} -
- Undelete -
- {% else %} -
- Delete -
- {% endif %} - {% endif %} - -
-
- {% csrf_token %} - - -
-
-
-
-
-
-
- - -
- - - {% if show_new_contributer_message %} -
- -
- - - New contributor - -
- -
-
- {{data.post_owner}} is a new contributor Code of Conduct -
-
- {% endif %} -
-
-
-
- - - 1 - - - - -
-
-
    - {% for comment in getAllTheComments %} -
  • -
    -
    - -
    - -
    {{comment.count_upvote}}
    - {% if request.user in comment.com_upvote.all %} - - {% else %} - - {% endif %} -
    -
    - -
    - - -
    - -
    -
    -
    - -
    -
    - {{comment.comment}} - - - {{comment.date|naturaltime}} - - - - -
    -
    -
  • - {% endfor %} -
-
- - -
-{% if request.user.is_authenticated %} - - -{% endif %} -
- -
-
Add Comment
-
- -
- -
-
- -
- - - - - - -
- -
-
- - -
-
-
-
- -
- - -
-
-
-

- {{data.answer_set.all.count}} Answer{{data.answer_set.all|pluralize}} - 1 -

-
-
-
- Active - Oldest - Votes -
-
-
-
- - -{% for answer in answers %} - - - - -
- - - -
-
-
- - -
-
- {% if user in answer.a_vote_ups.all %} - - {% else %} - - {% endif %} - {% if request.user.profile.established_user_Priv == False %} -
-
{{answer.countAllTheVotes}}
-
- {% elif request.user.profile.established_user_Priv %} -
-
-
{{answer.countAllTheVotes}}
-
-
- {% endif %} -
-
- -
- -
-
- {% if user in answer.a_vote_downs.all %} - - {% else %} - - {% endif %} -
-
- - {% if request.user == data.post_owner %} - -
- -
- {% if answer.accepted %} - - {% else %} - - {% endif %} -
-
- - {% endif %} - -{% if data.is_bountied %} -{% if request.user == answer.answer_owner %} - - -
- - {% if answer.is_bountied_awarded %} - - {% else %} - - {% endif %} - -
- -{% else %} - - {% if answer.is_bountied_awarded %} - - {% else %} - - {% endif %} - -{% endif %} -{% endif %} -
- - - - - -
- -
-
- -
- -{% if answer.is_deleted %} - -{% endif %} - -

{{answer.body|safe_markdown}}

-
-
- -
-
-
-
- Share -
- -
- Edit -
- - {% if request.user == answer.answer_owner %} - {% if answer.is_deleted %} -
- Undelete -
- {% else %} -
- Delete -
- {% endif %} - {% endif %} - -
- -
-
- - -
- - - -
- - -
-
-
- -
- -
-
-
-
- - - - 5 -
-
-
    - {% for comment in answer.commentq_set.all %} -
  • -
    - -
    -
    -
    {{comment.count_upvote}}
    - {% if request.user in comment.com_upvote.all %} - - {% else %} - - {% endif %} -
    -
    - -

    -
    - -
    -
    - - - -
    -
    - - {{comment.comment}} - {{comment.date}} ({{comment.date|naturaltime}}) -
    -
    - -
  • - - - {% endfor %} -
-
- -
-{% if request.user.is_authenticated %} - - -{% endif %} -
-
-
-
Add Comment
-
- -
- -
-
-
-
- - - - - - -
- - -
-
-{% endfor %} - - - - - - - - - - - -
- {% if answers.has_other_pages %} -
    - {% if answers.has_previous %} -
  • «
  • - {% else %} -
  • «
  • - {% endif %} - {% for i in answers.paginator.page_range %} - {% if answers.number == i %} -
    {{ i }}
    - {% else %} - {{ i }} - {% endif %} - {% endfor %} - {% if users.has_next %} -
  • »
  • - {% else %} -
  • »
  • - {% endif %} -
- {% endif %} -
- - -
-
-
-
- - - -{% if request.user.is_authenticated %} - -

Your Answer

- -
-
- {% csrf_token %} -
- {{ form.body }} - {% if request.user.profile.create_wiki_posts %} -
-
-
- -
- -
-
- {% endif %} -
-
- -
-
-
-{% endif %} - - - -
-
- -
- - -
- - - -
-
- - - - - - - - -
-
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{% if data.is_question_bountied == False %} - - - -
- - - -
- - - - -{% endif %} - - - - - - - - - - - - - - - - - - - -{% if data.is_protected %} - -
This question is protected because of {{why_protecting}} you need atleast 10 Reputation to Answer it
- -{% endif %} - - -{% if data.is_protected %} - -
- - - -
- -{% endif %} - -
-
- {{countThem}} -
-
- - - - - - - - - - - - - - - -{% if canMakeAnotherEdit == True %} -Edit Question -{% else %} - -Edit Question -{% endif %} - - - - - - - - - -{% if data.is_closed == False %} - - - - - - -
- - - -
- - - - - - - - -{% else %} - - - - - - -
- - - -
- - - - - - - - -{% endif %} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{% endblock content %} - - - - - - - - -{% block js %} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{% endblock js %} - - - -{% block css %} - -{% endblock css %} \ No newline at end of file diff --git a/templates/qa/taggedItemsFrom_All.html b/templates/qa/taggedItemsFrom_All.html deleted file mode 100644 index 253f28c..0000000 --- a/templates/qa/taggedItemsFrom_All.html +++ /dev/null @@ -1,1027 +0,0 @@ -{% load humanize %} -{% load static %} -{% load qa_tags %} - -{% block content %} - - - - - - - - - - - Questions - Stack Overflow-Clone - - - - - - - - - - - - - - -
-
-{% if request.user.is_authenticated %} - - -
- -
- - -{% else %} - -
- -
- -{% endif %} - - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - -
-
- - - -
- -
-
-
-
- - - - - -
- - - - - - - - -
- - - -
- - - - -
-

Questions tagged [{{tag}}]

- -
- - - -
-
-
- {{count_questions}} - question{{count_questions|pluralize}} -
- -
-
- -
-
-
-
- - - -
- -{% for question in questions %} -
-
-
-
-
- {{question.calculate_UpVote_DownVote}} -
vote{{question.calculate_UpVote_DownVote|pluralize}}
-
-
-
- {{question.count_answers}}answer{{question.count_answers|pluralize}} -
-
-
{{question.calculate_viewers}} view{{question.calculate_viewers|pluralize}}
-
- - -
-

{{question.title}}

-
- {{question.body|truncatechars:200}} -
- -
-
-
- {% for tag in question.get_all_tags %} - - {% endfor %} -
-
-
- -
-
-
-
-{% endfor %} - - - -
- -
- -
- - -
- {% if questions.has_other_pages %} - {% for i in questions.paginator.page_range %} - {% if questions.number == i %} -
{{ i }}
- {% else %} - {{ i }} - {% endif %} - {% endfor %} - {% endif %} -
- - - -
- - - - -
-
- - - - - - -
-
-
 
- - - - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/qa/unansweredQuestions.html b/templates/qa/unansweredQuestions.html deleted file mode 100644 index 3c1a84a..0000000 --- a/templates/qa/unansweredQuestions.html +++ /dev/null @@ -1,1302 +0,0 @@ -{% load humanize %} -{% load static %} -{% load qa_tags %} - -{% block content %} - - - - - - - - - - - Questions - Stack Overflow-Clone - - - - - - - - - - - - - - -
-
-{% if request.user.is_authenticated %} - - -
- -
- - -{% else %} - -
- -
- -{% endif %} - - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - -
-
- - - -
- -
-
-
-
- - - - - -
- - - - - - - - -
- - - -
- - - - -
-

Unanswered Questions

- -
- - - -
-
-
- {{questionsCount}} - question{{questionsCount|pluralize}} -
- -
-
-
- -
Newest
-
- {% if query == '' %} - -
Active
-
- {% else %} - -
Active
-
- {% endif %} - {% if query == '' %} - -
Bountied
-
{{count_bounty}}
-
- {% else %} - -
Bountied
-
{{count_bounty}}
-
- {% endif %} - {% if query == '' %} - -
Unanswered
-
- {% else %} - -
Unanswered
-
- {% endif %} - -
- -
-
- -
- -
- -
-
- - -
-
- - - - - - - -
- {% csrf_token %} -
-
-
-
-
-
- Filter by - - -
-
-
- {% if bool_1 == True %} - - {% else %} - - {% endif %} -
- -
-
- - -
-
-
- {% if bool_2 == True %} - - {% else %} - - {% endif %} -
- -
-
-
-
-
- {% if bool_3 == True %} - - {% else %} - - {% endif %} -
- -
-
-
-
-
-
- Sorted by - -
-
-
- {% if selected == "Newest" %} - - {% else %} - - {% endif %} -
- -
-
- -
-
-
- {% if selected == "RecentActivity" %} - - {% else %} - - {% endif %} -
- -
-
-
-
-
- {% if selected == "MostVotes" %} - - {% else %} - - {% endif %} -
- -
-
-
-
-
- {% if selected == "BountyEndingSoon" %} - - {% else %} - - {% endif %} -
- -
-
- - -
-
-
-
- Tagged with -
-
-
-
-
-
-
-
-
-
- - -
-
- -
-
-
-
-
-
- - - - -
- - - -
- -{% for question in questions %} -
-
-
-
-
- {{question.calculate_UpVote_DownVote}} -
vote{{question.calculate_UpVote_DownVote|pluralize}}
-
-
-
- {{question.count_answers}}answer{{question.count_answers|pluralize}} -
-
-
{{question.calculate_viewers}} view{{question.calculate_viewers|pluralize}}
-
- - -
-

{{question.title}}

-
- {{question.body|truncatechars:200}} -
- -
-
-
- {% for tag in question.get_all_tags %} - - {% endfor %} -
-
-
- -
-
-
-
-{% endfor %} - - - -
- -
- -
- - -
- {% if questions.has_other_pages %} - {% for i in questions.paginator.page_range %} - {% if questions.number == i %} -
{{ i }}
- {% else %} - {{ i }} - {% endif %} - {% endfor %} - {% endif %} -
- - - -
- - - - -
-
- - - - - - -
-
-
 
- - - - - - - - - -{% endblock content %} \ No newline at end of file diff --git a/templates/review/Close_Q_History.html b/templates/review/Close_Q_History.html deleted file mode 100644 index a358dc8..0000000 --- a/templates/review/Close_Q_History.html +++ /dev/null @@ -1,928 +0,0 @@ -{% load humanize %} -{% load qa_tags %} -{% load static %} - - - - - - - - - - Review History - Suggested edits - Stack Overflow - Clone - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - - -
-
- - - -
- -
-
-
-
- - - - - -
- -
- - - -
-
-
-

- Suggested edits -

-

Approve, reject, or improve edits suggested by users.

-

- about the Suggested edits queue. -

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - {% for history in getHistory %} - - - - - - - {% endfor %} -
UserTaskActionDate
-{{history.user}} -suggested edit on {{history.question_to_closing.title}} - {{history.why_closing}} - - {{history.date|naturaltime}} -
- -
-
-
- - - - - - - - - - -
-
-
 
- - - - - diff --git a/templates/review/Close_Q_Review.html b/templates/review/Close_Q_Review.html deleted file mode 100644 index cae66a1..0000000 --- a/templates/review/Close_Q_Review.html +++ /dev/null @@ -1,1372 +0,0 @@ -{% load static %} -{% load humanize %} -{% load qa_tags %} - -{% load crispy_forms_tags %} - - - - Review Close Questions - Stack Overflow - - - - - - - - - - - - - - - - - - -
-
- - - - -
- -
- - - - - - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - -
- - - -
- - - -
-
-
-

- Suggested Closed Question Votes -

-

Approve, reject, or improve edits suggested by users.

-

- about the Suggested edits queue. -

-
-
- -
-
- - - - -
-
- - -{% if is_reviewed %} - -{% endif %} - - - - - - - - - -
Review the close question vote
-
-
-
- {{data.count_answers}} answer{{data.count_answers|pluralize}} -
- -
- {{data.calculate_viewers}} view{{data.calculate_viewers|pluralize}} -
-
-
-
{{data.title}}
-
-
- - -
- -
-
-
- {{data.post_owner}}
- {{data.post_owner|calculate_reputation}} - - {{data.post_owner|calculateGoldBadges}} gold badges - - - {{data.post_owner|calculatSilvereBadges}} silver badges - - - {{data.post_owner|calculateBronzeBadges}} bronze badges -
-
Asked - {{data.date|naturaltime}} -
-
-
-
-
- - - -
-
- - -
-
- -
- -
-
-
-
-
- {% if request.user == likepost.upvote_by_q %} - - {% else %} - - {% endif %} -
-

{{data.calculate_UpVote_DownVote}}

-
-
-
-
-
- {% if request.user == likeDownpost.downvote_by_q %} - - {% else %} - - {% endif %} -
-
-
-
-
- -
-
-
-
-

{{data.title}}

-
{{data.body}}
-
-
-
-
- {% for tag in data.tags.all %} - - {% endfor %} -
-
- -
- - Asked {{data.date|naturaltime}} - - -
- -
-
-
-
-
-
-
- - -
-
-
    -
-
- - -
-
- -
- - - -
- - -{% for ans in data.answer_set.all %} - - - -
-
-
-
-
-
- {% if user in ans.a_vote_ups.all %} - - {% else %} - - {% endif %} -
-

{{ans.countAllTheVotes}}

-
-
-
- - -
-
- {% if user in ans.a_vote_downs.all %} - - {% else %} - - {% endif %} -
-
- - {% if ans.accepted %} - - {% else %} - - {% endif %} - - - - - - -
- -
- - - -
-
- {{ans.body}} -
-
-
- -
-
-
-
- -
- -
-
-
-
-
-
-

-{% endfor %} - - -
-
-
- - - -{% if is_reviewed == False %} -
-
-
- Actions -
-
- {% csrf_token %} -
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
-{% endif %} - - - - -{% if is_reviewed == False %} -
-
- {% csrf_token %} -
-
- Actions -
-
- -
-
- -
-
- -
-
-
-
-{% endif %} -
-
-
-
-
- - - - - -
-
-
 
- - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{% for s in getAll_Votes_required_in_close_and_completed %} - - -{% if s.why_closing == "DUPLICATE" %} - -
-{{s.why_closing}} - of {{s.duplicate_of}} -{{s.user}} -

- -{% else %} -
-{{s.why_closing}} - -{{s.user}} -

-{% endif %} - - -{% endfor %} - diff --git a/templates/review/First_Answer_Review.html b/templates/review/First_Answer_Review.html deleted file mode 100644 index ad4a894..0000000 --- a/templates/review/First_Answer_Review.html +++ /dev/null @@ -1,1353 +0,0 @@ -{% load static %} -{% load humanize %} -{% load qa_tags %} - -{% load crispy_forms_tags %} - - - - Review First Answers - Stack Overflow - - - - - - - - - - - - - - -
-
- - - - - -
- -
- - - - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - - -
-
- - - -
- -
-
-
-
- - - - - -
- - - -
- - -
- - -
-
- - -{% if is_reviewed %} - -{% endif %} - - - -{% if actionWas %} - - -{% endif %} - - - - - - - - - - - - - - - - - - - - - - - - -
Review the following First Answers
-
-
- -
-
-
- -
- - -
- -
-
-
- {{data.answer_owner}}
- - {{data.answer_owner|calculate_reputation}} - - - {{data.answer_owner|calculateGoldBadges}} gold badges - - - {{data.answer_owner|calculatSilvereBadges}} silver badges - - - {{data.answer_owner|calculateBronzeBadges}} bronze badges -
-
Answered - {{data.date|naturaltime}} -
-
-
-
-
- - - -
-
- - -
-
- -
- -
-
-
-
-
- {% if user in data.a_vote_ups.all %} - - {% else %} - - {% endif %} -
-

{{data.countAllTheVotes}}

-
-
-
- -
-
- {% if user in data.a_vote_downs.all %} - - {% else %} - - {% endif %} -
-
-
-
-
-
-
-
-
-

{{data.title}}

-
- {{data.body}} -
-
-
-
-
- {% for tag in data.questionans.tags.all %} - - {% endfor %} -
-
- - -
- - Answered {{data.date|naturaltime}} - - -
- - -
- -
-
-
- {{data.answer_owner}}
- - {{data.answer_owner|calculate_reputation}} - - - {{data.answer_owner|calculateGoldBadges}} gold badges - - - {{data.answer_owner|calculatSilvereBadges}} silver badges - - - {{data.answer_owner|calculateBronzeBadges}} bronze badges -
-
-
-
- -
- -
- - - -
- - - - -
-
-
-
-
-
- {% if request.user == likepost.upvote_by_q %} - - {% else %} - - {% endif %} -
-

{{data.questionans.calculate_UpVote_DownVote}}

-
-
-
- -
-
- {% if request.user == likeDownpost.downvote_by_q %} - - {% else %} - - {% endif %} -
-
- -
-
- - - -
-
- {{data.questionans.body}} -
-
-
- -
-
-
-
- -
- -
-
-
-
-
-
-

- - -
-
-
- - - -{% if is_reviewed == False %} -
-
-
- Actions -
-
- {% csrf_token %} -
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
-{% endif %} - -{% if is_reviewed == False %} -
-
- {% csrf_token %} -
-
- Actions -
-
- -
-
- -
-
- -
-
-
-
-{% endif %} -
-
-
-
- -
-
- - - - -
-
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/templates/review/First_Question_Review.html b/templates/review/First_Question_Review.html deleted file mode 100644 index 758fc60..0000000 --- a/templates/review/First_Question_Review.html +++ /dev/null @@ -1,2159 +0,0 @@ -{% load static %} -{% load humanize %} -{% load qa_tags %} - -{% load crispy_forms_tags %} - - - Review First Questions - Stack Overflow - - - - - - - - - - - - -
-
- - - - - - -
- -
- - - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - - - - - - - - - - - - - -
- - - -
- - - -
-
-
-

- Suggested First Questions -

-

Approve, reject, or improve edits suggested by users.

-

- about the Suggested edits queue. -

-
-
- -
-
- - - - -
-
- - -{% if is_reviewed %} - -{% endif %} - - - - - - - - - - - - - - - - -{% if actionWas %} - - -{% endif %} - - - - - - - - - - - - - - - - - - - - - - - - -
Review the following question edit
-
-
-
- 1 answer -
- -
- 33 views -
-
-
-
{{data.title}}
-
-
- - -
- -
-
-
- {{data.post_owner}}
- {{data.post_owner|calculate_reputation}} - - {{data.post_owner|calculateGoldBadges}} gold badges - - - {{data.post_owner|calculatSilvereBadges}} silver badges - - - {{data.post_owner|calculateBronzeBadges}} bronze badges -
-
Asked - {{data.date|naturaltime}} -
-
-
-
-
- - - -
-
- - -
-
- -
- -
-
-
-
-
- {% if request.user == likepost.upvote_by_q %} - - {% else %} - - {% endif %} -
-

{{allToShowVotes}}

-
-
-
- -
-
- {% if request.user == likeDownpost.downvote_by_q %} - - {% else %} - - {% endif %} -
-
- -
- -
-
- - - -
- - -
- -
- -
-

{{data.title}}

-
- {{data.body|truncatechars:3}} -
-
-
-
- - - - -
- - -
- - Asked {{data.date|naturaltime}} - - - -
- - -
-
-
-
-
-
-
-
- - -
-
-
    -
-
- - -
-
- -
- - - -
- - -{% for ans in data.answer_set.all %} - - - -
-
-
-
-
-
- {% if user in ans.a_vote_ups.all %} - - {% else %} - - {% endif %} -
-

{{ans.countAllTheVotes}}

-
-
-
- - - -
-
- {% if user in ans.a_vote_downs.all %} - - {% else %} - - {% endif %} -
-
- - {% if ans.accepted %} - - {% else %} - - {% endif %} - - - -
- -
- - - -
-
- {{ans.body|truncatechars:30}} -
-
-
- -
-
-
-
- -
- -
-
-
-
-
-
-

-{% endfor %} - - - - -
-
-
- - -{% if is_reviewed == False %} -
-
-
- Actions -
-
- {% csrf_token %} -
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
-{% endif %} - -{% if is_reviewed == False %} -
-
- {% csrf_token %} -
-
- Actions -
-
- -
-
- -
-
- -
-
-
-
-{% endif %} -
-
-
-
- -
-
- - - - - - - - -
-
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - diff --git a/templates/review/Flag_Comment_Review.html b/templates/review/Flag_Comment_Review.html deleted file mode 100644 index d3f8480..0000000 --- a/templates/review/Flag_Comment_Review.html +++ /dev/null @@ -1,1387 +0,0 @@ -{% load static %} -{% load humanize %} -{% load qa_tags %} - -{% load crispy_forms_tags %} - - - Review Flagged Comments - Stack Overflow - Clone - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - -
- -
- - - - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - -
-
- - - -
- -
-
-
-
- - - -
- - - -
- - - -
-
-
-

- Flagged Comments -

-

Approve, reject, or improve edits suggested by users.

-

- about the Suggested edits queue. -

-
-
- -
-
- - - - -
-
- - -{% if is_reviewed %} - -{% endif %} - - - - - - - - -{% if actionWas %} - - -{% endif %} - - - - - -
Review the following question edit
-
-
-
- {% if data.question_comment %} - {{data.question_comment.count_answers}} answer - {% endif %} -
- -
- {% if data.question_comment %} - {{data.question_comment.calculate_viewers}} views - {% endif %} -
-
-
- {% if data.question_comment %} -
{{data.question_comment.title}}
-
-
- - -
- -
-
-
- {{data.question_comment.post_owner}}
- {{data.question_comment.post_owner|calculate_reputation}} - - {{data.question_comment.post_owner|calculateGoldBadges}} gold badges - - - {{data.question_comment.post_owner|calculatSilvereBadges}} silver badges - - - {{data.question_comment.post_owner|calculateBronzeBadges}} bronze badges -
-
Asked - {{data.question_comment.date|naturaltime}} -
-
-
- {% else %} -
{{data.answer_comment.body}}
-
-
- - -
- -
-
-
- {{data.answer_comment.answer_owner}}
- {{data.answer_comment.answer_owner|calculate_reputation}} - - {{data.answer_comment.answer_owner|calculateGoldBadges}} gold badges - - - {{data.answer_comment.answer_owner|calculatSilvereBadges}} silver badges - - - {{data.answer_comment.answer_owner|calculateBronzeBadges}} bronze badges -
-
Answered - {{data.answer_comment.date|naturaltime}} -
-
-
- {% endif %} -
-
- - - -
-
- - -
-
- -
-
-
-
-
- - {% if request.user in data.com_upvote.all %} - - {% else %} - - {% endif %} - -
-
-
- -
-
-
-
-
-
- {{data.comment}} -
-
-
-
-
- -
- - Commented {{data.date|naturaltime}} - - - -
-
-
-
- - - -
- - - -{% if data.question_comment %} - - -
-
-
-
- -
-
- {% if request.user == likepost.upvote_by_q %} - - {% else %} - - {% endif %} -
-

{{data.question_comment.calculate_UpVote_DownVote}}

-
-
-
- -
-
- {% if request.user == likeDownpost.downvote_by_q %} - - {% else %} - - {% endif %} -
-
- - - - -
- -
- -
-
- {{data.question_comment.body}} -
-
-
- -
-
-
-
-
- -
- -
-
-
-
- - - -
-
-

- - -{% elif data.answer_comment %} - - - - -
-
-
-
- - -
-
- {% if user in data.answer_comment.a_vote_ups.all %} - - {% else %} - - {% endif %} -
-

{{data.answer_comment.countAllTheVotes}}

-
-
-
- -
-
- {% if user in data.answer_comment.a_vote_downs.all %} - - {% else %} - - {% endif %} -
-
- - - - -
- -
- -
-
- {{data.answer_comment.body}} -
-
-
- -
-
-
-
- -
- -
-
-
-
-
-
-

- - - - - -{% endif %} - - -
-
-
- {% if is_reviewed == False %} -
-
-
- Actions -
-
- {% csrf_token %} -
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
- {% endif %} - - {% if is_reviewed == False %} -
-
- {% csrf_token %} -
-
- Actions -
-
- -
-
- -
-
- -
-
-
-
- {% endif %} -
-
-
-
- -
-
- - - - - - -
-
-
 
- - - - - - - - - - - - - - - \ No newline at end of file diff --git a/templates/review/Flag_Post_History.html b/templates/review/Flag_Post_History.html deleted file mode 100644 index c6d6617..0000000 --- a/templates/review/Flag_Post_History.html +++ /dev/null @@ -1,855 +0,0 @@ -{% load humanize %} -{% load qa_tags %} -{% load static %} - - - - - - - - - Review History - Suggested edits - Stack Overflow - - - - - - - - - - -
-
- -
- -
- - - - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - -
-
- - - -
- -
-
-
-
- - - - - -
-
-
-
-
-

- Flag Post -

-
-
- -
-
- - - - - - - - - - {% for history in getAllReviewingItems %} - - - - - - - {% endfor %} -
UserTaskActionDate
- {{history.flagged_by}} - - suggested edit on {{history.edited_question.title}} - - {{history.actions_Flag_Q}} - - - {{history.flagged_at|naturaltime}} -
-
-
-
- - - - - - - - - - - - - - -
-
-
 
- - - - - diff --git a/templates/review/Flag_Post_Review.html b/templates/review/Flag_Post_Review.html deleted file mode 100644 index b803e54..0000000 --- a/templates/review/Flag_Post_Review.html +++ /dev/null @@ -1,1725 +0,0 @@ -{% load static %} -{% load humanize %} -{% load qa_tags %} - -{% load crispy_forms_tags %} - - - Review Flag Posts - Stack Overflow - Clone - - - - - - - - - - - - - - -
-
- - - - - -
- -
- - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - -
-
- - - -
- -
-
-
-
- - - - - - - -
- - - -
- - -
-
-
-

- Flag Posts -

-

Delete, Reject, or Close.

-

- about the Flag Post queue. -

-
-
- -
-
- - - - -
-
- - -{% if is_question %} - -

Question

- -{% if is_reviewed %} - -{% endif %} - - - - - - - - - - - - - -
Review the following Flag Post
-
-
-
- {% if is_question %} {{data.count_answers}} Answer{{data.count_answers|pluralize}} {% endif %} -
- -
- {% if is_question %} {{data.calculate_viewers}} view{{data.calculate_viewers|pluralize}} {% else %} {{data.count_ViewsOf_Q}} view{{data.count_ViewsOf_Q|pluralize}} {% endif %} -
-
-
-
- {{data.title}} -
-
- -
- - -
- -
-
-
- {{data.post_owner}}
- {{data.post_owner|calculate_reputation}} - - {{data.post_owner|calculateGoldBadges}} gold badges - - - {{data.post_owner|calculatSilvereBadges}} silver badges - - - {{data.post_owner|calculateBronzeBadges}} bronze badges -
-
Asked - {{data.date|naturaltime}} -
-
- -
-
-
- - - -
-
- - -
-
- -
- -
-
-
-
-
- {% if request.user == likepost.upvote_by_q %} - - {% else %} - - {% endif %} -
-

{{allToShowVotes}}

-
-
-
- -
-
- {% if request.user == likeDownpost.downvote_by_q %} - - {% else %} - - {% endif %} -
-
- -
- -
-
- - - -
- - -
-
-
-

{{data.title}}

-
- {{data.body}} -
-
-
-
- -
- {% for tag in data.tags.all %} - - {% endfor %} -
-
- - - -
- - Answered {{data.date|naturaltime}} - - - -
- - -
- -
- -
- - - -
- - -{% for ans in data.answer_set.all %} - - - -
-
-
-
-
-
- {% if user in ans.a_vote_ups.all %} - - {% else %} - - {% endif %} -
-

{{ans.countAllTheVotes}}

-
-
-
- - - -
-
- {% if user in ans.a_vote_downs.all %} - - {% else %} - - {% endif %} -
-
- - {% if ans.accepted %} - - {% else %} - - {% endif %} - - - -
- -
- - - -
-
- {{ans.body}} -
-
-
- -
-
-
-
- -
- - -
-
-
-
-
-
-

-{% endfor %} - - - - - -
-
-
- - -{% if is_reviewed == False %} -
-
-
- Actions -
-
- {% csrf_token %} -
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
-{% endif %} - -{% if is_reviewed == False %} -
-
- {% csrf_token %} -
-
- Actions -
-
- -
-
- -
-
- -
-
-
-
-{% endif %} - - - -{% elif is_answer == True %} - - - -{% if is_reviewed %} - -{% endif %} - - - - - - - - - - - - - - - -
Review the following Flagged Answers
-
-
-
- {% if is_question %} {{data.answer_set.all}} {% endif %} -
- -
- {% if is_question %} {{data.viewers.all.count}} {% else %} {{data.questionans.viewers.all.count}} {% endif %} views -
-
-
-
{{data.title}}
-
-
- - -
- -
-
-
- {{data.answer_owner}}
- {{data.answer_owner|calculate_reputation}} - - {{data.answer_owner|calculateGoldBadges}} gold badges - - - {{data.answer_owner|calculatSilvereBadges}} silver badges - - - {{data.answer_owner|calculateBronzeBadges}} bronze badges -
-
Asked - {{data.date|naturaltime}} -
-
-
-
-
- - - -
-
- - -
-
- -
- -
-
-
-
-
- {% if user in data.a_vote_ups.all %} - - {% else %} - - {% endif %} -
-

{{data.countAllTheVotes}}

-
-
-
- - - -
-
- {% if user in data.a_vote_downs.all %} - - {% else %} - - {% endif %} -
-
-
- -
-
- - - -
- - -
- -
- -
-

{{data.title}}

-
- {{data.body}} -
-
-
-
- - - -
- {% for tag in data.tags.all %} - - {% endfor %} -
-
- - - -
- - Answered {{data.date|naturaltime}} - - -
- - - -
- -
- -
- - - -
- - - - - -
-
-
-
-
-
- {% if request.user == likepost.upvote_by_q %} - - {% else %} - - {% endif %} -
-

{{allToShowVotes}}

-
-
-
- -
-
- {% if request.user == likeDownpost.downvote_by_q %} - - {% else %} - - {% endif %} -
-
- - - -
- -
- - - -
-
- {{data.questionans.body}} -
-
-
- -
-
-
-
- -
- -
-
-
-
-
-
-

- - - - - -
-
-
- - -{% if is_reviewed == False %} -
-
-
- Actions -
-
- {% csrf_token %} -
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
-{% endif %} - -{% if is_reviewed == False %} -
-
- {% csrf_token %} -
-
- Actions -
-
- -
-
- -
-
- -
-
-
-
-{% endif %} - -{% endif %} - - - -
-
-
-
- -
-
- - - - - - -
-
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/templates/review/Late_Answer_Review.html b/templates/review/Late_Answer_Review.html deleted file mode 100644 index 6b47697..0000000 --- a/templates/review/Late_Answer_Review.html +++ /dev/null @@ -1,1620 +0,0 @@ -{% load static %} -{% load humanize %} -{% load qa_tags %} - -{% load crispy_forms_tags %} - - - - Review Late Answers - Stack Overflow - - - - - - - - - - - - -
-
- - - - - -
- -
- - - - - - - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - -
- - - -
- - -
- - -
-
- - - {% if is_reviewed %} - - {% endif %} - - - - - - - -{% if actionWas %} - -{% endif %} - - - - - - - - - - - - - - - - - - - - - - - -
Review the following First Answers
-
-
-
- 1 answer -
- -
- 33 views -
-
-
-
- {{data.title}} -
-
- - -
-
-{{data.answer_owner}}
10310 bronze badges
-
- Answered - 29 days ago -
-
- -
-
-
- - - -
-
- - -
-
- -
-
-
-
-
-
- {% if user in data.a_vote_ups.all %} - - {% else %} - - {% endif %} -
-

{{data.countAllTheVotes}}

-
-
-
- -
-
- {% if user in data.a_vote_downs.all %} - - {% else %} - - {% endif %} -
-
-
-
- -
-
-
-
-
-

{{data.title}}

-
- {{data.body}} -
-
-
-
-
- {% for tag in data.questionans.tags.all %} - - {% endfor %} -
-
- - -
- - Answered {{data.date|naturaltime}} - - -
-
-
-
- - - -
- - - - - -
-
-
-
-
-
- {% if request.user == likepost.upvote_by_q %} - - {% else %} - - {% endif %} -
-

{{allToShowVotes}}

-
-
-
- -
-
- {% if request.user == likeDownpost.downvote_by_q %} - - {% else %} - - {% endif %} -
-
- - {% if ans.accepted %} - - {% else %} - - {% endif %} - - - -
- -
- - - -
-
- {{data.questionans.body|truncatechars:30}} -
-
-
- -
-
-
-
- -
- -
-
-
-
-
-
-

- - -
-
-
- - - - -{% if is_reviewed == False %} -
-
-
- Actions -
-
- {% csrf_token %} -
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
-{% endif %} - -{% if is_reviewed == False %} -
-
- {% csrf_token %} -
-
- Actions -
-
- -
-
- -
-
- -
-
-
-
-{% endif %} -
-
-
-
- -
-
- - - - - - - - - - -
-
-
 
- - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Answer :- {{data.body}} - - -
-
- {% csrf_token %} - - -
- -
- -
- -
- -
- - -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/templates/review/Low_Quality_Post_Review.html b/templates/review/Low_Quality_Post_Review.html deleted file mode 100644 index 1b369a9..0000000 --- a/templates/review/Low_Quality_Post_Review.html +++ /dev/null @@ -1,1779 +0,0 @@ -{% load static %} -{% load humanize %} -{% load qa_tags %} - -{% load crispy_forms_tags %} - - - Review Low Quality Posts - Stack Overflow - - - - - - - - - - - - - - - - - -
-
- - - - - -
- -
- - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - -
- - - -
- - -
- - - -
-
- - -{% if is_question %} - -

Question

- -{% if is_reviewed %} - -{% endif %} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Review the following Low Quality Question
-
-
-
- {{data.answer_set.all.count}} answers -
- -
- {{data.viewers.all.count}} views -
-
-
-
{{data.title}}
-
-
- - -
- -
-
-
- {{data.post_owner}}
- {{data.post_owner|calculate_reputation}} - - {{data.post_owner|calculateGoldBadges}} gold badges - - - {{data.post_owner|calculatSilvereBadges}} silver badges - - - {{data.post_owner|calculateBronzeBadges}} bronze badges -
-
Asked - {{data.date|naturaltime}} -
-
- -
-
-
- - - -
-
- - -
-
- -
- -
-
-
-
-
- {% if request.user == likepost.upvote_by_q %} - - {% else %} - - {% endif %} -
-

{{allToShowVotes}}

-
-
-
- -
-
- {% if request.user == likeDownpost.downvote_by_q %} - - {% else %} - - {% endif %} -
-
- -
- -
-
- - - -
- - -
- -
- -
-

{{data.title}}

-
- {{data.body|truncatechars:3}} -
-
-
-
- - - -
- {% for tag in data.tags.all %} - - {% endfor %} -
-
- - - -
- - Answered {{data.date|naturaltime}} - - - -
- - -
-
-
-
-
-
-
-
- - -
-
-
    -
-
- - -
-
- -
- - - -
- - -{% for ans in data.answer_set.all %} - - - -
-
-
-
-
-
- {% if user in ans.a_vote_ups.all %} - - {% else %} - - {% endif %} -
-

{{ans.countAllTheVotes}}

-
-
-
- - - -
-
- {% if user in ans.a_vote_downs.all %} - - {% else %} - - {% endif %} -
-
- - {% if ans.accepted %} - - {% else %} - - {% endif %} - - - -
- -
- - - -
-
- {{ans.body|truncatechars:30}} -
-
-
- -
-
-
-
- -
- -
-
-
-
-
-
-

-{% endfor %} - - - - - -
-
-
- - -{% if is_reviewed == False %} -
-
-
- Actions -
-
- {% csrf_token %} -
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
-{% endif %} - -{% if is_reviewed == False %} -
-
- {% csrf_token %} -
-
- Actions -
-
- -
-
- -
-
- -
-
-
-
-{% endif %} - - - -{% elif is_answer == True %} - -

Answer

- -{% if is_reviewed %} - -{% endif %} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Review the following Low Quality Answer
-
- {{data.body|truncatechars:20}} -
- -
-
{{data.title}}
-
-
- - -
- -
-
-
- {{data.answer_owner}}
- {{data.answer_owner|calculate_reputation}} - - {{data.answer_owner|calculateGoldBadges}} gold badges - - - {{data.answer_owner|calculatSilvereBadges}} silver badges - - - {{data.answer_owner|calculateBronzeBadges}} bronze badges -
-
Answered - {{data.date|naturaltime}} -
-
-
-
-
- - - -
-
- - -
-
- -
- -
-
-
-
-
- {% if user in data.a_vote_ups.all %} - - {% else %} - - {% endif %} -
-

{{data.countAllTheVotes}}

-
-
-
- - - -
-
- {% if user in data.a_vote_downs.all %} - - {% else %} - - {% endif %} -
-
-
- -
- -
-
- {{data.body}} -
-
-
- -
-
-
-
- -
- -
-
-
-
- - - - -
- - - -
- - - -
- - - - - -
-
-
-
-
-
- {% if request.user == likepost.upvote_by_q %} - - {% else %} - - {% endif %} -
-

{{allToShowVotes}}

-
-
-
- -
-
- {% if request.user == likeDownpost.downvote_by_q %} - - {% else %} - - {% endif %} -
-
- - - -
- -
- - - - -
-
- {{data.questionans.body|truncatechars:30}} -
-
-
- -
-
-
-
- -
- -
-
-
-
-
-
-

- - - - - -
-
-
- - -{% if is_reviewed == False %} -
-
-
- Actions -
-
- {% csrf_token %} -
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
-{% endif %} - -{% if is_reviewed == False %} -
-
- {% csrf_token %} -
-
- Actions -
-
- -
-
- -
-
- -
-
-
-
-{% endif %} - - -{% endif %} - - - -
-
-
-
- -
-
- - - - - -
-
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/templates/review/ReOpenQuestionReview.html b/templates/review/ReOpenQuestionReview.html deleted file mode 100644 index 2d3e67a..0000000 --- a/templates/review/ReOpenQuestionReview.html +++ /dev/null @@ -1,1661 +0,0 @@ -{% load static %} -{% load humanize %} -{% load qa_tags %} - -{% load crispy_forms_tags %} - - - Review Close Questions - Stack Overflow - - - - - - - - - - - - - - -
-
- - - - - - -
- -
- - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - -
-
- - - -
- -
-
-
-
- - - - - -
- - - -
- - - -
-
-
-

- Suggested Re-Open Question Votes -

-

Approve, reject, or improve edits suggested by users.

-

- about the Suggested edits queue. -

-
-
- -
-
- - - - -
-
- - -{% if is_reviewed %} - -{% endif %} - - - - - - - - - - -
Review the close question vote
-
-
-
- {{data.count_answers}} answer{{data.count_answers|pluralize}} -
- -
- {{data.calculate_viewers}} views{{data.calculate_viewers|pluralize}} -
-
-
-
{{data.title}}
-
-
- - -
- -
-
-
- {{data.post_owner}}
- {{data.post_owner|calculate_reputation}} - - {{data.post_owner|calculateGoldBadges}} gold badges - - - {{data.post_owner|calculatSilvereBadges}} silver badges - - - {{data.post_owner|calculateBronzeBadges}} bronze badges -
-
Asked - {{data.date|naturaltime}} -
-
-
-
-
- - - -
-
- - -
-
- -
- -
-
-
-
-
- {% if request.user == likepost.upvote_by_q %} - - {% else %} - - {% endif %} -
-

{{allToShowVotes}}

-
-
-
- -
-
- {% if request.user == likeDownpost.downvote_by_q %} - - {% else %} - - {% endif %} -
-
- -
- -
-
-
-
-
-
-

{{data.title}}

-
- {{data.body|truncatechars:3}} -
-
-
-
- -
- {% for tag in data.tags.all %} - - {% endfor %} -
-
- - -
- - Asked {{data.date|naturaltime}} - - -
-
- - - -
- -
- - - -
- - -{% for ans in data.answer_set.all %} - - - -
-
-
-
-
-
- {% if user in ans.a_vote_ups.all %} - - {% else %} - - {% endif %} -
-

{{ans.countAllTheVotes}}

-
-
-
- - - -
-
- {% if user in ans.a_vote_downs.all %} - - {% else %} - - {% endif %} -
-
- - {% if ans.accepted %} - - {% else %} - - {% endif %} - - - -
- -
- - - -
-
- {{ans.body}} -
-
-
- -
-
-
-
- -
- -
-
-
-
-
-
-

-{% endfor %} - - -
-
-
- - - -{% if is_reviewed == False %} -
-
-
- Actions -
-
- {% csrf_token %} -
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
-{% endif %} - - - - -{% if is_reviewed == False %} -
-
- {% csrf_token %} -
-
- Actions -
-
- -
-
- -
-
- -
-
-
-
-{% endif %} -
-
-
-
-
-
- - - - - -
-
-
 
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{% for s in getAll_Votes_required_in_close_and_completed %} - - -{% if s.why_closing == "DUPLICATE" %} - -
-{{s.why_closing}} - of {{s.duplicate_of}} -{{s.user}} -

- -{% else %} -
-{{s.why_closing}} - -{{s.user}} -

-{% endif %} - - -{% endfor %} - - - - - - - - - - - - - - - - - - - - diff --git a/templates/review/Suggessted_Edit_History.html b/templates/review/Suggessted_Edit_History.html deleted file mode 100644 index 1d19e12..0000000 --- a/templates/review/Suggessted_Edit_History.html +++ /dev/null @@ -1,1598 +0,0 @@ -{% load humanize %} -{% load static %} - - - - - - - - - - Review History - Suggested edits - Stack Overflow - - - - - - - - - - - - - -
-
- -
- -
- - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - -
-
- - - -
- -
-
-
-
- - - - - - - - - - - -
- - - - - - - - -
- - - - -
-
-
-

- Suggested edits -

-

Approve, reject, or improve edits suggested by users.

-

- about the Suggested edits queue. -

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - {% for history in getAllReviewingItems %} - - - - - - - {% endfor %} -
UserTaskActionDate
-{{history.edit_suggested_by}} -suggested edit on {{history.edited_question.title}} - - {{history.rev_Action}} - - - {{history.edited_suggested_at|naturaltime}} -
- -
-
- - -
-
-
- - - - - - - - - - - - -
-
-
 
- - - - - diff --git a/templates/review/Suggessted_Edit_Review.html b/templates/review/Suggessted_Edit_Review.html deleted file mode 100644 index c655f04..0000000 --- a/templates/review/Suggessted_Edit_Review.html +++ /dev/null @@ -1,2935 +0,0 @@ -{% load crispy_forms_tags %} -{% load static %} -{% load martortags %} -{% load humanize %} -{% load qa_tags %} - - - - - - - - Review Suggested edits - Stack Overflow - - - - - - - - - - - -
-
- - - - - - - - - - -{% if request.user.is_authenticated %} - - -
- -
- - -{% else %} - -
- -
- -{% endif %} - - - - - - - - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - - -
-
- - - -
- -
-
-
-
- - - - - - - - - - - - - -
- - - - - - - - -
- - - - - -
- -{% if is_question %} - -
-
-

- Suggested edits -

-

Approve, reject, or improve edits suggested by users.

-

- about the Suggested edits queue. -

-
-
- -
-
- -{% if is_reviewed %} - -{% endif %} - - - -{% if is_stopped %} - -{% endif %} - - - - - - - -
-
- - - - -
Review the following question edit
-
-
-
- {{data.answer_set.all.count}} answers -
- -
- {{data.viewers.all.count}} views -
-
-
-
{{previousHistory.title}}
-
-
-
-{{data.post_owner}} - - -
- - {{data.post_owner|calculate_reputation}} - - - {{data.post_owner|calculateGoldBadges}} Gold badges - - - {{data.post_owner|calculatSilvereBadges}} silver badges - - - {{data.post_owner|calculateBronzeBadges}} bronze badges -
-
- Asked - {{data.date|naturaltime}} -
-
-
-
-
- - - -
-
- - -
-
- - - -
- - -
-
- -
-
- -
-
-
-
-
- {% if request.user == likepost.upvote_by_q %} - - {% else %} - - {% endif %} -
-

{{allToShowVotes}}

-
-
-
- -
-
- {% if request.user == likeDownpost.downvote_by_q %} - - {% else %} - - {% endif %} -
-
- -
-
- - - -
-

- Comment: Edited some words in Question -

-
-
-
-
-

Old

-
{{previousHistory}}
-
-

{{previousHistoryBody|safe_markdown}}

-
-
- -
-

New

-
{{getNewEdit_Title.title}}
-
-

{{getNewEdit_Body|safe_markdown}}

-
-
-
-
- -
- {% for tag in data.tags.all %} - - {% endfor %} -
-
- - -
- - Proposed {{getThisItemFromReview.date_reviewed|naturaltime}} - - - -
-
- - -{% for comment in data.commentq_set.all %} - -
-
- -
-
- -{% endfor %} - - - - - - - -
- -
- - - - -
- -{% for answer in STORING_THE_ORIGINAL %} - -
-
- - -
-
-
-
- {% if user in answer.a_vote_ups.all %} - - {% else %} - - {% endif %} -
-

{{answer.countAllTheVotes}}

-
-
-
-
-
- {% if user in answer.a_vote_downs.all %} - - {% else %} - - {% endif %} -
-
-
-
- - - -
-

{{answer.body}}

-
-
- -
-
-
-
-
- -
- -
- - -
- -
-
-
-
-
-
-
- - - -{% endfor %} - - - -
- -
-
- - -{% if is_reviewed == False %} -
-
-
- Actions -
-
- {% csrf_token %} -
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
-{% endif %} - - - -{% if is_reviewed == False %} -
-
- {% csrf_token %} -
-
- Actions -
-
- -
-
-
-
- -
-
-
-
-{% endif %} - - -
-
-
-
- -
-
- - -{% elif is_answer %} - -
-
-

- Suggested edits -

-

Approve, reject, or improve edits suggested by users.

-

- about the Suggested edits queue. -

-
-
- -
-
- -{% if is_reviewed %} - -{% endif %} - - - -{% if is_stopped %} - -{% endif %} - - - - - - - - - - - - - - - - - - - -
-
- -
-
-
- -
-
-
-
-
-
-
-
- Tags(max 3) -
- -
-
-
-
-
- - -
-
-
- - -
-
-
-
-
-
-
- -
- -
-
- - - - -
Review the following Answer edit
-
-
-
- 4 answers -
- -
- 89 views -
-
-
-
{{previousHistory.title}}
-
-
-
-{{data.answer_owner}}
10310 bronze badges
-
- Asked - {{data.date|naturaltime}} -
-
-
-
-
- - - -
-
- - - - - -
-
- -
- - -
-
- -
-
- -
-
-
- - -
-
- {% if user in data.a_vote_ups.all %} - - {% else %} - - {% endif %} -
-

{{data.countAllTheVotes}}

-
-
-
- - - -
-
- {% if user in data.a_vote_downs.all %} - - {% else %} - - {% endif %} -
-
- - -
-
- - - -
-

- Comment: {{data.why_editing_answer}} -

-
-
-
-
-

Old

- -
-

{{previousHistoryBody|safe_markdown}} -

-
- -
-

New

-

{{getNewEdit_Title.title}}

-
-

{{getNewEdit_Body|safe_markdown}}

-
-
-
-
- -
- {% for tag in data.tags.all %} - - {% endfor %} -
-
- - -
- - Proposed 60 secs ago - - - -
-
- - 0 -
-
-
    - -
-
- - -
-
- -
- - - -
- -
-
-
-
-
-
- {% if request.user == likepost.upvote_by_q %} - - {% else %} - - {% endif %} -
-

{{allToShowVotes}}

-
-
-
- -
-
- {% if request.user == likeDownpost.downvote_by_q %} - - {% else %} - - {% endif %} -
-
-
-
- - - - -
- -
- -
-
-

{{data.questionans.title}}

-
- {{data.questionans.body}} -
-
-
- -
- {% for tag in data.questionans.tags.all %} - - {% endfor %} -
-
- - - -
- - - - 0 -
-
-
    - -
-
- - -
-
-
- - - -
- -
-
- - -{% if is_reviewed == False %} -
-
-
- Actions -
-
- {% csrf_token %} -
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
-{% endif %} - - -{% if is_reviewed == False %} -
-
- {% csrf_token %} -
-
- Actions -
-
- -
-
- - - -
-
- -
-
-
-
-{% endif %} -
-
-
- - - - - - - -{% endif %} - - - - - - -
-
-
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{% if is_question %} - - -
- - -