uffd 2.2.0__tar.gz → 2.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {uffd-2.2.0/uffd.egg-info → uffd-2.3.1}/PKG-INFO +34 -4
- {uffd-2.2.0 → uffd-2.3.1}/README.md +3 -3
- uffd-2.3.1/tests/test_csrf.py +102 -0
- uffd-2.3.1/tests/test_password_hash.py +206 -0
- uffd-2.3.1/tests/test_ratelimit.py +46 -0
- uffd-2.3.1/tests/test_remailer.py +85 -0
- uffd-2.3.1/tests/test_tasks.py +39 -0
- uffd-2.3.1/tests/test_utils.py +12 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/__init__.py +1 -2
- uffd-2.3.1/uffd/babel.cfg +2 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/database.py +0 -12
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/23293f32b503_deactivate_users.py +14 -14
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/2b68f688bec1_remailer_v2.py +13 -13
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/468995a9c9ee_unique_email_addresses.py +7 -7
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/54b2413586fd_invite_pk_change.py +8 -8
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/704d1245331c_remailer_setting_and_api_permission.py +14 -14
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/878b25c4fae7_ldap_to_db.py +18 -18
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/a29870f95175_initial_migration.py +5 -5
- uffd-2.3.1/uffd/migrations/versions/a594d3b3e05b_added_role_locked.py +35 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/a60ce68b9214_fix_not_null_on_role_groups_group_id.py +2 -2
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/a8c6b6e91c28_device_login.py +1 -1
- uffd-2.3.1/uffd/migrations/versions/a9b449776953_add_mfa_method_totp_last_counter.py +51 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/aeb07202a6c8_locking_and_new_id_allocation.py +2 -2
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/af07cea65391_unified_password_hashing_for_user_and_signup.py +2 -2
- uffd-2.3.1/uffd/migrations/versions/aff5f350dcdf_added_role_is_default.py +37 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/b273d7fdaa25_multiple_email_addresses.py +4 -4
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/b8fbefca3675_added_api_permission_for_metrics.py +10 -10
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/b9d3f7dac9db_move_api_and_oauth2_clients_to_db.py +6 -6
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/bad6fc529510_added_rolegroup_requires_mfa_and_cleanup.py +2 -2
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/cbca20cf64d9_constraint_name_fixes.py +5 -5
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/e13b733ec856_per_service_email_preferences.py +4 -4
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/e249233e2a31_remailer_mode_overwrite.py +2 -2
- {uffd-2.2.0 → uffd-2.3.1}/uffd/models/api.py +5 -5
- {uffd-2.2.0 → uffd-2.3.1}/uffd/models/invite.py +4 -4
- {uffd-2.2.0 → uffd-2.3.1}/uffd/models/mfa.py +10 -7
- {uffd-2.2.0 → uffd-2.3.1}/uffd/models/role.py +3 -3
- {uffd-2.2.0 → uffd-2.3.1}/uffd/models/service.py +5 -5
- {uffd-2.2.0 → uffd-2.3.1}/uffd/models/session.py +2 -3
- {uffd-2.2.0 → uffd-2.3.1}/uffd/models/user.py +4 -4
- {uffd-2.2.0 → uffd-2.3.1}/uffd/password_hash.py +2 -2
- {uffd-2.2.0 → uffd-2.3.1}/uffd/remailer.py +0 -2
- {uffd-2.2.0 → uffd-2.3.1}/uffd/views/api.py +1 -1
- {uffd-2.2.0 → uffd-2.3.1}/uffd/views/mfa.py +1 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/views/oauth2.py +9 -1
- {uffd-2.2.0 → uffd-2.3.1}/uffd/views/service.py +1 -1
- {uffd-2.2.0 → uffd-2.3.1/uffd.egg-info}/PKG-INFO +34 -4
- {uffd-2.2.0 → uffd-2.3.1}/uffd.egg-info/SOURCES.txt +7 -0
- uffd-2.2.0/uffd/babel.cfg +0 -3
- uffd-2.2.0/uffd/migrations/versions/a594d3b3e05b_added_role_locked.py +0 -23
- uffd-2.2.0/uffd/migrations/versions/aff5f350dcdf_added_role_is_default.py +0 -23
- {uffd-2.2.0 → uffd-2.3.1}/LICENSE +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/MANIFEST.in +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/setup.cfg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/setup.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/commands/__init__.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/commands/cleanup.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/commands/gendevcert.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/commands/group.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/commands/profile.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/commands/role.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/commands/roles_update_all.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/commands/unique_email_addresses.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/commands/user.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/csrf.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/default_config.cfg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/fido2_compat.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/README.md +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/alembic.ini +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/env.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/script.py.mako +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/042879d5e3ac_lower_case_mail_receive_addresses.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/09d2edcaf0cc_add_expires_attribute_to_ratelimit_event.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/11ecc8f1ac3b_mysql_compat_fixes.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/2a6b1fb82ce6_added_missing_oauth2grant_code_index.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/5a07d4a63b64_role_inclusion.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/5cab70e95bf8_invite_creator_and_role_moderator_group.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/9f824f61d8ac_use_utc_for_datetime.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/bf71799b7b9e_add_id_to_signup_table.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/e9a67175e179_add_id_to_selfservice_tokens.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/migrations/versions/f2eb2c52a61f_add_serviceuser.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/models/__init__.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/models/mail.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/models/misc.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/models/oauth2.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/models/ratelimit.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/models/selfservice.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/models/signup.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/navbar.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/secure_redirect.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/sendmail.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap-grid.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap-grid.css.map +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap-grid.min.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap-grid.min.css.map +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap-reboot.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap-reboot.css.map +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap-reboot.min.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap-reboot.min.css.map +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap.bundle.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap.bundle.js.map +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap.bundle.min.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap.bundle.min.js.map +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap.css.map +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap.js.map +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap.min.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap.min.css.map +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap.min.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/bootstrap/bootstrap.min.js.map +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/cbor.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/empty.png +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/LICENSE.txt +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/css/all.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/css/all.min.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/css/brands.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/css/brands.min.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/css/fontawesome.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/css/fontawesome.min.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/css/regular.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/css/regular.min.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/css/solid.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/css/solid.min.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/css/svg-with-js.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/css/svg-with-js.min.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/css/v4-shims.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/css/v4-shims.min.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/js/all.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/js/all.min.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/js/brands.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/js/brands.min.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/js/conflict-detection.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/js/conflict-detection.min.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/js/fontawesome.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/js/fontawesome.min.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/js/regular.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/js/regular.min.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/js/solid.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/js/solid.min.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/js/v4-shims.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/js/v4-shims.min.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/less/_animated.less +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/less/_bordered-pulled.less +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/less/_core.less +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/less/_fixed-width.less +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/less/_icons.less +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/less/_larger.less +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/less/_list.less +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/less/_mixins.less +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/less/_rotated-flipped.less +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/less/_screen-reader.less +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/less/_shims.less +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/less/_stacked.less +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/less/_variables.less +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/less/brands.less +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/less/fontawesome.less +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/less/regular.less +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/less/solid.less +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/less/v4-shims.less +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/metadata/categories.yml +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/metadata/icons.json +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/metadata/icons.yml +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/metadata/shims.json +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/metadata/shims.yml +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/metadata/sponsors.yml +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/scss/_animated.scss +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/scss/_bordered-pulled.scss +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/scss/_core.scss +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/scss/_fixed-width.scss +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/scss/_icons.scss +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/scss/_larger.scss +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/scss/_list.scss +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/scss/_mixins.scss +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/scss/_rotated-flipped.scss +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/scss/_screen-reader.scss +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/scss/_shims.scss +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/scss/_stacked.scss +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/scss/_variables.scss +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/scss/brands.scss +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/scss/fontawesome.scss +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/scss/regular.scss +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/scss/solid.scss +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/scss/v4-shims.scss +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/sprites/brands.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/sprites/regular.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/sprites/solid.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/500px.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/accessible-icon.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/accusoft.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/acquisitions-incorporated.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/adn.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/adobe.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/adversal.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/affiliatetheme.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/airbnb.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/algolia.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/alipay.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/amazon-pay.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/amazon.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/amilia.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/android.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/angellist.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/angrycreative.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/angular.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/app-store-ios.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/app-store.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/apper.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/apple-pay.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/apple.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/artstation.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/asymmetrik.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/atlassian.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/audible.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/autoprefixer.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/avianex.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/aviato.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/aws.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/bandcamp.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/battle-net.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/behance-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/behance.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/bimobject.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/bitbucket.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/bitcoin.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/bity.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/black-tie.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/blackberry.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/blogger-b.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/blogger.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/bluetooth-b.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/bluetooth.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/bootstrap.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/btc.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/buffer.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/buromobelexperte.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/buy-n-large.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/buysellads.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/canadian-maple-leaf.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/cc-amazon-pay.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/cc-amex.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/cc-apple-pay.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/cc-diners-club.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/cc-discover.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/cc-jcb.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/cc-mastercard.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/cc-paypal.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/cc-stripe.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/cc-visa.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/centercode.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/centos.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/chrome.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/chromecast.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/cloudscale.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/cloudsmith.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/cloudversify.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/codepen.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/codiepie.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/confluence.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/connectdevelop.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/contao.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/cotton-bureau.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/cpanel.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/creative-commons-by.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/creative-commons-nc-eu.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/creative-commons-nc-jp.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/creative-commons-nc.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/creative-commons-nd.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/creative-commons-pd-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/creative-commons-pd.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/creative-commons-remix.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/creative-commons-sa.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/creative-commons-sampling-plus.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/creative-commons-sampling.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/creative-commons-share.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/creative-commons-zero.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/creative-commons.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/critical-role.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/css3-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/css3.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/cuttlefish.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/d-and-d-beyond.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/d-and-d.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/dashcube.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/delicious.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/deploydog.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/deskpro.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/dev.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/deviantart.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/dhl.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/diaspora.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/digg.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/digital-ocean.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/discord.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/discourse.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/dochub.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/docker.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/draft2digital.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/dribbble-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/dribbble.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/dropbox.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/drupal.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/dyalog.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/earlybirds.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/ebay.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/edge.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/elementor.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/ello.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/ember.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/empire.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/envira.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/erlang.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/ethereum.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/etsy.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/evernote.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/expeditedssl.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/facebook-f.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/facebook-messenger.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/facebook-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/facebook.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/fantasy-flight-games.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/fedex.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/fedora.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/figma.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/firefox-browser.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/firefox.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/first-order-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/first-order.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/firstdraft.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/flickr.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/flipboard.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/fly.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/font-awesome-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/font-awesome-flag.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/font-awesome-logo-full.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/font-awesome.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/fonticons-fi.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/fonticons.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/fort-awesome-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/fort-awesome.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/forumbee.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/foursquare.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/free-code-camp.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/freebsd.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/fulcrum.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/galactic-republic.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/galactic-senate.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/get-pocket.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/gg-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/gg.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/git-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/git-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/git.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/github-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/github-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/github.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/gitkraken.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/gitlab.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/gitter.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/glide-g.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/glide.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/gofore.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/goodreads-g.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/goodreads.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/google-drive.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/google-play.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/google-plus-g.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/google-plus-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/google-plus.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/google-wallet.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/google.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/gratipay.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/grav.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/gripfire.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/grunt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/gulp.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/hacker-news-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/hacker-news.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/hackerrank.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/hips.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/hire-a-helper.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/hooli.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/hornbill.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/hotjar.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/houzz.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/html5.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/hubspot.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/ideal.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/imdb.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/instagram.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/intercom.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/internet-explorer.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/invision.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/ioxhost.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/itch-io.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/itunes-note.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/itunes.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/java.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/jedi-order.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/jenkins.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/jira.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/joget.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/joomla.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/js-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/js.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/jsfiddle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/kaggle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/keybase.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/keycdn.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/kickstarter-k.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/kickstarter.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/korvue.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/laravel.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/lastfm-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/lastfm.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/leanpub.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/less.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/line.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/linkedin-in.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/linkedin.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/linode.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/linux.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/lyft.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/magento.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/mailchimp.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/mandalorian.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/markdown.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/mastodon.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/maxcdn.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/mdb.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/medapps.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/medium-m.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/medium.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/medrt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/meetup.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/megaport.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/mendeley.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/microblog.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/microsoft.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/mix.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/mixcloud.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/mizuni.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/modx.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/monero.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/napster.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/neos.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/nimblr.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/node-js.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/node.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/npm.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/ns8.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/nutritionix.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/odnoklassniki-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/odnoklassniki.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/old-republic.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/opencart.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/openid.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/opera.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/optin-monster.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/orcid.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/osi.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/page4.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/pagelines.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/palfed.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/patreon.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/paypal.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/penny-arcade.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/periscope.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/phabricator.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/phoenix-framework.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/phoenix-squadron.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/php.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/pied-piper-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/pied-piper-hat.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/pied-piper-pp.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/pied-piper-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/pied-piper.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/pinterest-p.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/pinterest-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/pinterest.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/playstation.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/product-hunt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/pushed.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/python.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/qq.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/quinscape.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/quora.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/r-project.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/raspberry-pi.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/ravelry.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/react.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/reacteurope.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/readme.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/rebel.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/red-river.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/reddit-alien.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/reddit-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/reddit.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/redhat.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/renren.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/replyd.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/researchgate.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/resolving.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/rev.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/rocketchat.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/rockrms.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/safari.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/salesforce.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/sass.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/schlix.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/scribd.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/searchengin.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/sellcast.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/sellsy.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/servicestack.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/shirtsinbulk.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/shopware.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/simplybuilt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/sistrix.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/sith.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/sketch.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/skyatlas.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/skype.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/slack-hash.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/slack.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/slideshare.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/snapchat-ghost.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/snapchat-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/snapchat.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/soundcloud.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/sourcetree.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/speakap.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/speaker-deck.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/spotify.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/squarespace.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/stack-exchange.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/stack-overflow.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/stackpath.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/staylinked.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/steam-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/steam-symbol.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/steam.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/sticker-mule.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/strava.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/stripe-s.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/stripe.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/studiovinari.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/stumbleupon-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/stumbleupon.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/superpowers.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/supple.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/suse.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/swift.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/symfony.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/teamspeak.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/telegram-plane.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/telegram.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/tencent-weibo.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/the-red-yeti.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/themeco.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/themeisle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/think-peaks.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/trade-federation.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/trello.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/tripadvisor.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/tumblr-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/tumblr.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/twitch.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/twitter-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/twitter.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/typo3.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/uber.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/ubuntu.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/uikit.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/umbraco.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/uniregistry.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/unity.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/untappd.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/ups.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/usb.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/usps.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/ussunnah.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/vaadin.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/viacoin.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/viadeo-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/viadeo.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/viber.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/vimeo-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/vimeo-v.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/vimeo.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/vine.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/vk.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/vnv.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/vuejs.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/waze.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/weebly.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/weibo.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/weixin.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/whatsapp-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/whatsapp.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/whmcs.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/wikipedia-w.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/windows.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/wix.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/wizards-of-the-coast.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/wolf-pack-battalion.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/wordpress-simple.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/wordpress.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/wpbeginner.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/wpexplorer.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/wpforms.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/wpressr.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/xbox.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/xing-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/xing.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/y-combinator.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/yahoo.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/yammer.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/yandex-international.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/yandex.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/yarn.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/yelp.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/yoast.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/youtube-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/youtube.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/brands/zhihu.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/address-book.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/address-card.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/angry.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/arrow-alt-circle-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/arrow-alt-circle-left.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/arrow-alt-circle-right.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/arrow-alt-circle-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/bell-slash.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/bell.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/bookmark.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/building.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/calendar-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/calendar-check.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/calendar-minus.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/calendar-plus.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/calendar-times.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/calendar.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/caret-square-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/caret-square-left.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/caret-square-right.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/caret-square-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/chart-bar.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/check-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/check-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/clipboard.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/clock.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/clone.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/closed-captioning.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/comment-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/comment-dots.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/comment.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/comments.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/compass.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/copy.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/copyright.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/credit-card.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/dizzy.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/dot-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/edit.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/envelope-open.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/envelope.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/eye-slash.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/eye.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/file-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/file-archive.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/file-audio.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/file-code.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/file-excel.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/file-image.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/file-pdf.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/file-powerpoint.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/file-video.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/file-word.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/file.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/flag.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/flushed.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/folder-open.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/folder.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/font-awesome-logo-full.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/frown-open.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/frown.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/futbol.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/gem.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/grimace.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/grin-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/grin-beam-sweat.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/grin-beam.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/grin-hearts.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/grin-squint-tears.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/grin-squint.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/grin-stars.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/grin-tears.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/grin-tongue-squint.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/grin-tongue-wink.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/grin-tongue.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/grin-wink.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/grin.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/hand-lizard.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/hand-paper.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/hand-peace.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/hand-point-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/hand-point-left.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/hand-point-right.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/hand-point-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/hand-pointer.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/hand-rock.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/hand-scissors.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/hand-spock.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/handshake.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/hdd.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/heart.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/hospital.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/hourglass.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/id-badge.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/id-card.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/image.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/images.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/keyboard.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/kiss-beam.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/kiss-wink-heart.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/kiss.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/laugh-beam.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/laugh-squint.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/laugh-wink.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/laugh.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/lemon.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/life-ring.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/lightbulb.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/list-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/map.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/meh-blank.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/meh-rolling-eyes.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/meh.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/minus-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/money-bill-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/moon.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/newspaper.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/object-group.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/object-ungroup.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/paper-plane.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/pause-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/play-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/plus-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/question-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/registered.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/sad-cry.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/sad-tear.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/save.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/share-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/smile-beam.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/smile-wink.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/smile.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/snowflake.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/star-half.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/star.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/sticky-note.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/stop-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/sun.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/surprise.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/thumbs-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/thumbs-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/times-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/tired.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/trash-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/user-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/user.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/window-close.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/window-maximize.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/window-minimize.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/regular/window-restore.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/ad.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/address-book.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/address-card.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/adjust.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/air-freshener.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/align-center.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/align-justify.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/align-left.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/align-right.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/allergies.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/ambulance.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/american-sign-language-interpreting.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/anchor.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/angle-double-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/angle-double-left.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/angle-double-right.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/angle-double-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/angle-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/angle-left.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/angle-right.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/angle-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/angry.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/ankh.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/apple-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/archive.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/archway.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/arrow-alt-circle-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/arrow-alt-circle-left.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/arrow-alt-circle-right.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/arrow-alt-circle-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/arrow-circle-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/arrow-circle-left.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/arrow-circle-right.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/arrow-circle-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/arrow-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/arrow-left.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/arrow-right.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/arrow-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/arrows-alt-h.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/arrows-alt-v.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/arrows-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/assistive-listening-systems.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/asterisk.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/at.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/atlas.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/atom.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/audio-description.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/award.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/baby-carriage.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/baby.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/backspace.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/backward.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bacon.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bahai.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/balance-scale-left.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/balance-scale-right.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/balance-scale.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/ban.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/band-aid.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/barcode.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bars.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/baseball-ball.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/basketball-ball.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bath.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/battery-empty.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/battery-full.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/battery-half.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/battery-quarter.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/battery-three-quarters.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bed.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/beer.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bell-slash.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bell.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bezier-curve.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bible.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bicycle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/biking.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/binoculars.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/biohazard.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/birthday-cake.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/blender-phone.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/blender.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/blind.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/blog.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bold.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bolt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bomb.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bone.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bong.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/book-dead.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/book-medical.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/book-open.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/book-reader.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/book.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bookmark.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/border-all.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/border-none.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/border-style.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bowling-ball.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/box-open.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/box.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/boxes.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/braille.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/brain.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bread-slice.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/briefcase-medical.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/briefcase.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/broadcast-tower.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/broom.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/brush.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bug.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/building.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bullhorn.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bullseye.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/burn.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bus-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/bus.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/business-time.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/calculator.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/calendar-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/calendar-check.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/calendar-day.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/calendar-minus.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/calendar-plus.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/calendar-times.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/calendar-week.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/calendar.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/camera-retro.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/camera.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/campground.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/candy-cane.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cannabis.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/capsules.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/car-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/car-battery.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/car-crash.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/car-side.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/car.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/caravan.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/caret-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/caret-left.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/caret-right.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/caret-square-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/caret-square-left.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/caret-square-right.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/caret-square-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/caret-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/carrot.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cart-arrow-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cart-plus.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cash-register.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cat.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/certificate.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chair.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chalkboard-teacher.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chalkboard.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/charging-station.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chart-area.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chart-bar.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chart-line.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chart-pie.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/check-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/check-double.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/check-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/check.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cheese.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chess-bishop.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chess-board.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chess-king.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chess-knight.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chess-pawn.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chess-queen.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chess-rook.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chess.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chevron-circle-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chevron-circle-left.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chevron-circle-right.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chevron-circle-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chevron-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chevron-left.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chevron-right.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/chevron-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/child.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/church.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/circle-notch.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/city.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/clinic-medical.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/clipboard-check.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/clipboard-list.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/clipboard.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/clock.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/clone.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/closed-captioning.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cloud-download-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cloud-meatball.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cloud-moon-rain.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cloud-moon.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cloud-rain.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cloud-showers-heavy.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cloud-sun-rain.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cloud-sun.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cloud-upload-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cloud.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cocktail.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/code-branch.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/code.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/coffee.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cog.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cogs.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/coins.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/columns.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/comment-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/comment-dollar.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/comment-dots.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/comment-medical.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/comment-slash.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/comment.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/comments-dollar.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/comments.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/compact-disc.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/compass.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/compress-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/compress-arrows-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/compress.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/concierge-bell.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cookie-bite.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cookie.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/copy.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/copyright.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/couch.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/credit-card.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/crop-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/crop.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cross.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/crosshairs.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/crow.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/crown.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/crutch.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cube.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cubes.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/cut.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/database.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/deaf.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/democrat.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/desktop.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dharmachakra.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/diagnoses.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dice-d20.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dice-d6.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dice-five.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dice-four.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dice-one.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dice-six.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dice-three.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dice-two.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dice.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/digital-tachograph.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/directions.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/divide.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dizzy.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dna.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dog.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dollar-sign.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dolly-flatbed.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dolly.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/donate.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/door-closed.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/door-open.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dot-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dove.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/download.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/drafting-compass.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dragon.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/draw-polygon.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/drum-steelpan.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/drum.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/drumstick-bite.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dumbbell.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dumpster-fire.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dumpster.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/dungeon.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/edit.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/egg.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/eject.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/ellipsis-h.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/ellipsis-v.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/envelope-open-text.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/envelope-open.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/envelope-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/envelope.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/equals.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/eraser.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/ethernet.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/euro-sign.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/exchange-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/exclamation-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/exclamation-triangle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/exclamation.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/expand-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/expand-arrows-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/expand.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/external-link-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/external-link-square-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/eye-dropper.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/eye-slash.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/eye.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/fan.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/fast-backward.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/fast-forward.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/fax.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/feather-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/feather.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/female.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/fighter-jet.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-archive.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-audio.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-code.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-contract.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-csv.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-download.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-excel.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-export.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-image.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-import.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-invoice-dollar.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-invoice.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-medical-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-medical.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-pdf.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-powerpoint.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-prescription.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-signature.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-upload.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-video.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file-word.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/file.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/fill-drip.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/fill.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/film.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/filter.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/fingerprint.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/fire-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/fire-extinguisher.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/fire.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/first-aid.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/fish.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/fist-raised.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/flag-checkered.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/flag-usa.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/flag.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/flask.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/flushed.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/folder-minus.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/folder-open.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/folder-plus.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/folder.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/font-awesome-logo-full.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/font.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/football-ball.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/forward.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/frog.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/frown-open.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/frown.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/funnel-dollar.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/futbol.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/gamepad.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/gas-pump.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/gavel.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/gem.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/genderless.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/ghost.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/gift.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/gifts.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/glass-cheers.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/glass-martini-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/glass-martini.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/glass-whiskey.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/glasses.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/globe-africa.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/globe-americas.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/globe-asia.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/globe-europe.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/globe.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/golf-ball.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/gopuram.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/graduation-cap.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/greater-than-equal.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/greater-than.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/grimace.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/grin-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/grin-beam-sweat.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/grin-beam.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/grin-hearts.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/grin-squint-tears.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/grin-squint.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/grin-stars.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/grin-tears.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/grin-tongue-squint.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/grin-tongue-wink.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/grin-tongue.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/grin-wink.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/grin.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/grip-horizontal.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/grip-lines-vertical.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/grip-lines.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/grip-vertical.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/guitar.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/h-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hamburger.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hammer.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hamsa.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hand-holding-heart.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hand-holding-usd.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hand-holding.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hand-lizard.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hand-middle-finger.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hand-paper.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hand-peace.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hand-point-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hand-point-left.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hand-point-right.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hand-point-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hand-pointer.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hand-rock.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hand-scissors.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hand-spock.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hands-helping.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hands.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/handshake.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hanukiah.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hard-hat.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hashtag.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hat-cowboy-side.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hat-cowboy.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hat-wizard.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hdd.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/heading.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/headphones-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/headphones.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/headset.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/heart-broken.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/heart.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/heartbeat.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/helicopter.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/highlighter.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hiking.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hippo.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/history.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hockey-puck.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/holly-berry.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/home.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/horse-head.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/horse.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hospital-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hospital-symbol.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hospital.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hot-tub.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hotdog.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hotel.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hourglass-end.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hourglass-half.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hourglass-start.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hourglass.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/house-damage.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/hryvnia.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/i-cursor.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/ice-cream.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/icicles.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/icons.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/id-badge.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/id-card-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/id-card.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/igloo.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/image.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/images.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/inbox.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/indent.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/industry.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/infinity.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/info-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/info.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/italic.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/jedi.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/joint.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/journal-whills.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/kaaba.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/key.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/keyboard.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/khanda.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/kiss-beam.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/kiss-wink-heart.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/kiss.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/kiwi-bird.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/landmark.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/language.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/laptop-code.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/laptop-medical.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/laptop.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/laugh-beam.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/laugh-squint.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/laugh-wink.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/laugh.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/layer-group.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/leaf.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/lemon.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/less-than-equal.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/less-than.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/level-down-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/level-up-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/life-ring.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/lightbulb.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/link.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/lira-sign.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/list-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/list-ol.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/list-ul.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/list.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/location-arrow.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/lock-open.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/lock.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/long-arrow-alt-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/long-arrow-alt-left.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/long-arrow-alt-right.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/long-arrow-alt-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/low-vision.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/luggage-cart.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/magic.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/magnet.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/mail-bulk.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/male.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/map-marked-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/map-marked.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/map-marker-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/map-marker.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/map-pin.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/map-signs.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/map.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/marker.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/mars-double.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/mars-stroke-h.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/mars-stroke-v.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/mars-stroke.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/mars.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/mask.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/medal.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/medkit.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/meh-blank.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/meh-rolling-eyes.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/meh.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/memory.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/menorah.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/mercury.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/meteor.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/microchip.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/microphone-alt-slash.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/microphone-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/microphone-slash.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/microphone.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/microscope.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/minus-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/minus-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/minus.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/mitten.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/mobile-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/mobile.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/money-bill-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/money-bill-wave-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/money-bill-wave.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/money-bill.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/money-check-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/money-check.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/monument.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/moon.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/mortar-pestle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/mosque.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/motorcycle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/mountain.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/mouse-pointer.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/mouse.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/mug-hot.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/music.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/network-wired.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/neuter.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/newspaper.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/not-equal.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/notes-medical.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/object-group.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/object-ungroup.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/oil-can.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/om.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/otter.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/outdent.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/pager.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/paint-brush.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/paint-roller.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/palette.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/pallet.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/paper-plane.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/paperclip.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/parachute-box.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/paragraph.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/parking.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/passport.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/pastafarianism.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/paste.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/pause-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/pause.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/paw.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/peace.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/pen-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/pen-fancy.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/pen-nib.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/pen-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/pen.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/pencil-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/pencil-ruler.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/people-carry.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/pepper-hot.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/percent.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/percentage.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/person-booth.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/phone-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/phone-slash.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/phone-square-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/phone-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/phone-volume.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/phone.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/photo-video.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/piggy-bank.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/pills.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/pizza-slice.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/place-of-worship.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/plane-arrival.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/plane-departure.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/plane.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/play-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/play.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/plug.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/plus-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/plus-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/plus.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/podcast.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/poll-h.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/poll.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/poo-storm.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/poo.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/poop.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/portrait.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/pound-sign.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/power-off.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/pray.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/praying-hands.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/prescription-bottle-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/prescription-bottle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/prescription.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/print.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/procedures.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/project-diagram.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/puzzle-piece.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/qrcode.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/question-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/question.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/quidditch.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/quote-left.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/quote-right.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/quran.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/radiation-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/radiation.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/rainbow.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/random.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/receipt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/record-vinyl.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/recycle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/redo-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/redo.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/registered.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/remove-format.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/reply-all.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/reply.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/republican.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/restroom.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/retweet.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/ribbon.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/ring.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/road.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/robot.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/rocket.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/route.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/rss-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/rss.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/ruble-sign.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/ruler-combined.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/ruler-horizontal.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/ruler-vertical.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/ruler.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/running.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/rupee-sign.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sad-cry.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sad-tear.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/satellite-dish.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/satellite.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/save.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/school.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/screwdriver.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/scroll.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sd-card.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/search-dollar.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/search-location.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/search-minus.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/search-plus.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/search.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/seedling.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/server.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/shapes.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/share-alt-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/share-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/share-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/share.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/shekel-sign.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/shield-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/ship.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/shipping-fast.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/shoe-prints.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/shopping-bag.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/shopping-basket.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/shopping-cart.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/shower.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/shuttle-van.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sign-in-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sign-language.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sign-out-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sign.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/signal.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/signature.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sim-card.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sitemap.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/skating.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/skiing-nordic.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/skiing.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/skull-crossbones.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/skull.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/slash.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sleigh.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sliders-h.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/smile-beam.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/smile-wink.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/smile.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/smog.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/smoking-ban.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/smoking.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sms.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/snowboarding.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/snowflake.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/snowman.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/snowplow.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/socks.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/solar-panel.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sort-alpha-down-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sort-alpha-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sort-alpha-up-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sort-alpha-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sort-amount-down-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sort-amount-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sort-amount-up-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sort-amount-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sort-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sort-numeric-down-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sort-numeric-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sort-numeric-up-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sort-numeric-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sort-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sort.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/spa.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/space-shuttle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/spell-check.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/spider.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/spinner.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/splotch.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/spray-can.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/square-full.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/square-root-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/stamp.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/star-and-crescent.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/star-half-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/star-half.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/star-of-david.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/star-of-life.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/star.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/step-backward.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/step-forward.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/stethoscope.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sticky-note.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/stop-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/stop.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/stopwatch.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/store-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/store.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/stream.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/street-view.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/strikethrough.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/stroopwafel.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/subscript.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/subway.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/suitcase-rolling.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/suitcase.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sun.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/superscript.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/surprise.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/swatchbook.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/swimmer.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/swimming-pool.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/synagogue.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sync-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/sync.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/syringe.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/table-tennis.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/table.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tablet-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tablet.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tablets.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tachometer-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tag.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tags.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tape.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tasks.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/taxi.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/teeth-open.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/teeth.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/temperature-high.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/temperature-low.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tenge.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/terminal.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/text-height.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/text-width.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/th-large.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/th-list.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/th.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/theater-masks.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/thermometer-empty.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/thermometer-full.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/thermometer-half.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/thermometer-quarter.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/thermometer-three-quarters.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/thermometer.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/thumbs-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/thumbs-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/thumbtack.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/ticket-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/times-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/times.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tint-slash.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tint.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tired.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/toggle-off.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/toggle-on.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/toilet-paper.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/toilet.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/toolbox.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tools.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tooth.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/torah.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/torii-gate.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tractor.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/trademark.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/traffic-light.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/trailer.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/train.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tram.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/transgender-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/transgender.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/trash-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/trash-restore-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/trash-restore.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/trash.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tree.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/trophy.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/truck-loading.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/truck-monster.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/truck-moving.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/truck-pickup.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/truck.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tshirt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tty.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/tv.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/umbrella-beach.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/umbrella.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/underline.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/undo-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/undo.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/universal-access.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/university.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/unlink.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/unlock-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/unlock.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/upload.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-alt-slash.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-astronaut.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-check.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-circle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-clock.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-cog.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-edit.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-friends.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-graduate.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-injured.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-lock.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-md.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-minus.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-ninja.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-nurse.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-plus.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-secret.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-shield.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-slash.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-tag.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-tie.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user-times.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/user.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/users-cog.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/users.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/utensil-spoon.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/utensils.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/vector-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/venus-double.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/venus-mars.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/venus.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/vial.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/vials.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/video-slash.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/video.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/vihara.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/voicemail.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/volleyball-ball.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/volume-down.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/volume-mute.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/volume-off.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/volume-up.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/vote-yea.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/vr-cardboard.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/walking.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/wallet.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/warehouse.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/water.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/wave-square.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/weight-hanging.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/weight.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/wheelchair.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/wifi.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/wind.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/window-close.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/window-maximize.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/window-minimize.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/window-restore.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/wine-bottle.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/wine-glass-alt.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/wine-glass.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/won-sign.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/wrench.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/x-ray.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/yen-sign.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/svgs/solid/yin-yang.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/webfonts/fa-brands-400.eot +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/webfonts/fa-brands-400.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/webfonts/fa-brands-400.ttf +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/webfonts/fa-brands-400.woff +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/webfonts/fa-brands-400.woff2 +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/webfonts/fa-regular-400.eot +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/webfonts/fa-regular-400.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/webfonts/fa-regular-400.ttf +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/webfonts/fa-regular-400.woff +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/webfonts/fa-regular-400.woff2 +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/webfonts/fa-solid-900.eot +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/webfonts/fa-solid-900.svg +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/webfonts/fa-solid-900.ttf +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/webfonts/fa-solid-900.woff +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/fa/webfonts/fa-solid-900.woff2 +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/jquery/jquery-3.4.1.min.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/jquery/jquery-3.4.1.min.map +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/popper/popper-1.16.0.min.js +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/static/style.css +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/tasks.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/template_helper.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/403.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/base.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/base_narrow.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/group/list.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/group/show.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/invite/list.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/invite/new.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/invite/use.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/mail/list.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/mail/show.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/mfa/auth.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/mfa/disable.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/mfa/setup.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/mfa/setup_recovery.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/mfa/setup_totp.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/oauth2/error.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/oauth2/logout.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/role/list.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/role/show.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/rolemod/list.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/rolemod/show.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/selfservice/forgot_password.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/selfservice/mailverification.mail.txt +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/selfservice/newuser.mail.txt +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/selfservice/passwordreset.mail.txt +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/selfservice/self.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/selfservice/set_password.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/service/api.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/service/index.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/service/oauth2.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/service/overview.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/service/show.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/session/deviceauth.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/session/devicelogin.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/session/login.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/signup/confirm.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/signup/mail.txt +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/signup/start.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/signup/submitted.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/user/list.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/templates/user/show.html +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/translations/de/LC_MESSAGES/messages.mo +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/translations/de/LC_MESSAGES/messages.po +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/utils.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/views/__init__.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/views/group.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/views/invite.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/views/mail.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/views/role.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/views/rolemod.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/views/selfservice.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/views/session.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/views/signup.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd/views/user.py +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd.egg-info/dependency_links.txt +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd.egg-info/not-zip-safe +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd.egg-info/requires.txt +0 -0
- {uffd-2.2.0 → uffd-2.3.1}/uffd.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: uffd
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.1
|
|
4
4
|
Summary: Web-based user management and single sign-on software
|
|
5
5
|
Home-page: https://git.cccv.de/uffd/uffd
|
|
6
6
|
Author: CCCV
|
|
@@ -17,6 +17,36 @@ Classifier: Framework :: Flask
|
|
|
17
17
|
Requires-Python: >=3.7
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
19
|
License-File: LICENSE
|
|
20
|
+
Requires-Dist: flask==1.0.2
|
|
21
|
+
Requires-Dist: Flask-SQLAlchemy==2.1
|
|
22
|
+
Requires-Dist: qrcode==6.1
|
|
23
|
+
Requires-Dist: fido2==0.5.0
|
|
24
|
+
Requires-Dist: oauthlib==2.1.0
|
|
25
|
+
Requires-Dist: Flask-Migrate==2.1.1
|
|
26
|
+
Requires-Dist: Flask-Babel==0.11.2
|
|
27
|
+
Requires-Dist: alembic==1.0.0
|
|
28
|
+
Requires-Dist: argon2-cffi==18.3.0
|
|
29
|
+
Requires-Dist: itsdangerous==0.24
|
|
30
|
+
Requires-Dist: prometheus-client==0.9
|
|
31
|
+
Requires-Dist: certifi==2018.8.24
|
|
32
|
+
Requires-Dist: cffi
|
|
33
|
+
Requires-Dist: chardet==3.0.4
|
|
34
|
+
Requires-Dist: click==7.0
|
|
35
|
+
Requires-Dist: cryptography==2.6.1
|
|
36
|
+
Requires-Dist: idna==2.6
|
|
37
|
+
Requires-Dist: Jinja2==2.10
|
|
38
|
+
Requires-Dist: MarkupSafe==1.1.0
|
|
39
|
+
Requires-Dist: oauthlib==2.1.0
|
|
40
|
+
Requires-Dist: pyasn1==0.4.2
|
|
41
|
+
Requires-Dist: pycparser==2.19
|
|
42
|
+
Requires-Dist: requests==2.21.0
|
|
43
|
+
Requires-Dist: requests-oauthlib==1.0.0
|
|
44
|
+
Requires-Dist: six==1.12.0
|
|
45
|
+
Requires-Dist: SQLAlchemy==1.2.18
|
|
46
|
+
Requires-Dist: urllib3==1.24.1
|
|
47
|
+
Requires-Dist: Werkzeug==0.14.1
|
|
48
|
+
Requires-Dist: python-dateutil==2.7.3
|
|
49
|
+
Requires-Dist: Mako==1.0.7
|
|
20
50
|
|
|
21
51
|
**DO NOT INSTALL FROM PIP FOR PRODUCTION DEPLOYMENTS**, see [Deployment](#Deployment) for more information.
|
|
22
52
|
|
|
@@ -45,7 +75,7 @@ Please note that we refer to Debian packages here and **not** pip packages.
|
|
|
45
75
|
- python3-itsdangerous (also a dependency of python3-flask)
|
|
46
76
|
- python3-mysqldb or python3-pymysql for MariaDB support
|
|
47
77
|
|
|
48
|
-
Some of the dependencies (especially fido2) changed their API in recent versions, so make sure to install the versions from Debian
|
|
78
|
+
Some of the dependencies (especially fido2) changed their API in recent versions, so make sure to install the versions from Debian Bookworm, Bullseye or Buster.
|
|
49
79
|
For development, you can also use virtualenv with the supplied `requirements.txt`.
|
|
50
80
|
|
|
51
81
|
## Development
|
|
@@ -81,7 +111,7 @@ The dependencies of the pip package roughly represent the versions shipped by De
|
|
|
81
111
|
We do not keep them updated and we do not test the pip package!
|
|
82
112
|
The pip package only exists for local testing/development and to help build the Debian package.
|
|
83
113
|
|
|
84
|
-
We provide packages for Debian stable and
|
|
114
|
+
We provide packages for Debian stable, oldstable and oldoldstable (currently Bookworm, Bullseye and Buster).
|
|
85
115
|
Since all dependencies are available in the official package mirrors, you will get security updates for everything but uffd itself from Debian.
|
|
86
116
|
|
|
87
117
|
To install uffd on Debian Bullseye, add our package mirror to `/etc/sources.list`:
|
|
@@ -90,7 +120,7 @@ To install uffd on Debian Bullseye, add our package mirror to `/etc/sources.list
|
|
|
90
120
|
deb https://packages.cccv.de/uffd bullseye main
|
|
91
121
|
```
|
|
92
122
|
|
|
93
|
-
Then download [cccv-archive-key.gpg](cccv-archive-key.gpg) and add it to the trusted repository keys in `/etc/apt/trusted.gpg.d/`.
|
|
123
|
+
Then download [cccv-archive-key.gpg](https://packages.cccv.de/docs/cccv-archive-key.gpg) and add it to the trusted repository keys in `/etc/apt/trusted.gpg.d/`.
|
|
94
124
|
Afterwards run `apt update && apt install uffd` to install the package.
|
|
95
125
|
|
|
96
126
|
The Debian package uses uwsgi to run uffd and ships an `uffd-admin` script to execute flask commands in the correct context.
|
|
@@ -21,7 +21,7 @@ Please note that we refer to Debian packages here and **not** pip packages.
|
|
|
21
21
|
- python3-itsdangerous (also a dependency of python3-flask)
|
|
22
22
|
- python3-mysqldb or python3-pymysql for MariaDB support
|
|
23
23
|
|
|
24
|
-
Some of the dependencies (especially fido2) changed their API in recent versions, so make sure to install the versions from Debian
|
|
24
|
+
Some of the dependencies (especially fido2) changed their API in recent versions, so make sure to install the versions from Debian Bookworm, Bullseye or Buster.
|
|
25
25
|
For development, you can also use virtualenv with the supplied `requirements.txt`.
|
|
26
26
|
|
|
27
27
|
## Development
|
|
@@ -57,7 +57,7 @@ The dependencies of the pip package roughly represent the versions shipped by De
|
|
|
57
57
|
We do not keep them updated and we do not test the pip package!
|
|
58
58
|
The pip package only exists for local testing/development and to help build the Debian package.
|
|
59
59
|
|
|
60
|
-
We provide packages for Debian stable and
|
|
60
|
+
We provide packages for Debian stable, oldstable and oldoldstable (currently Bookworm, Bullseye and Buster).
|
|
61
61
|
Since all dependencies are available in the official package mirrors, you will get security updates for everything but uffd itself from Debian.
|
|
62
62
|
|
|
63
63
|
To install uffd on Debian Bullseye, add our package mirror to `/etc/sources.list`:
|
|
@@ -66,7 +66,7 @@ To install uffd on Debian Bullseye, add our package mirror to `/etc/sources.list
|
|
|
66
66
|
deb https://packages.cccv.de/uffd bullseye main
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
Then download [cccv-archive-key.gpg](cccv-archive-key.gpg) and add it to the trusted repository keys in `/etc/apt/trusted.gpg.d/`.
|
|
69
|
+
Then download [cccv-archive-key.gpg](https://packages.cccv.de/docs/cccv-archive-key.gpg) and add it to the trusted repository keys in `/etc/apt/trusted.gpg.d/`.
|
|
70
70
|
Afterwards run `apt update && apt install uffd` to install the package.
|
|
71
71
|
|
|
72
72
|
The Debian package uses uwsgi to run uffd and ships an `uffd-admin` script to execute flask commands in the correct context.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import unittest
|
|
2
|
+
|
|
3
|
+
from flask import Flask, Blueprint, session, url_for
|
|
4
|
+
|
|
5
|
+
from uffd.csrf import bp as csrf_bp, csrf_protect
|
|
6
|
+
|
|
7
|
+
uid_counter = 0
|
|
8
|
+
|
|
9
|
+
class TestCSRF(unittest.TestCase):
|
|
10
|
+
unprotected_ep = 'foo'
|
|
11
|
+
protected_ep = 'bar'
|
|
12
|
+
|
|
13
|
+
def setUp(self):
|
|
14
|
+
self.app = Flask(__name__)
|
|
15
|
+
self.app.testing = True
|
|
16
|
+
self.app.config['SECRET_KEY'] = 'DEBUGKEY'
|
|
17
|
+
self.app.register_blueprint(csrf_bp)
|
|
18
|
+
|
|
19
|
+
@self.app.route('/', methods=['GET', 'POST'])
|
|
20
|
+
def index():
|
|
21
|
+
return 'SUCCESS', 200
|
|
22
|
+
|
|
23
|
+
@self.app.route('/login', methods=['GET', 'POST'])
|
|
24
|
+
def login():
|
|
25
|
+
global uid_counter
|
|
26
|
+
session['_csrf_token'] = 'secret_csrf_token%d'%uid_counter
|
|
27
|
+
uid_counter += 1
|
|
28
|
+
return 'Ok', 200
|
|
29
|
+
|
|
30
|
+
@self.app.route('/logout', methods=['GET', 'POST'])
|
|
31
|
+
def logout():
|
|
32
|
+
session.clear()
|
|
33
|
+
return 'Ok', 200
|
|
34
|
+
|
|
35
|
+
@self.app.route('/foo', methods=['GET', 'POST'])
|
|
36
|
+
def foo():
|
|
37
|
+
return 'SUCCESS', 200
|
|
38
|
+
|
|
39
|
+
@self.app.route('/bar', methods=['GET', 'POST'])
|
|
40
|
+
@csrf_protect()
|
|
41
|
+
def bar():
|
|
42
|
+
return 'SUCCESS', 200
|
|
43
|
+
|
|
44
|
+
self.bp = Blueprint('bp', __name__)
|
|
45
|
+
|
|
46
|
+
@self.bp.route('/foo', methods=['GET', 'POST'])
|
|
47
|
+
@csrf_protect(blueprint=self.bp) # This time on .foo and not on .bar!
|
|
48
|
+
def foo():
|
|
49
|
+
return 'SUCCESS', 200
|
|
50
|
+
|
|
51
|
+
@self.bp.route('/bar', methods=['GET', 'POST'])
|
|
52
|
+
def bar():
|
|
53
|
+
return 'SUCCESS', 200
|
|
54
|
+
|
|
55
|
+
self.app.register_blueprint(self.bp, url_prefix='/bp/')
|
|
56
|
+
self.client = self.app.test_client()
|
|
57
|
+
self.client.__enter__()
|
|
58
|
+
# Just do some request so that we can use url_for
|
|
59
|
+
self.client.get(path='/')
|
|
60
|
+
|
|
61
|
+
def tearDown(self):
|
|
62
|
+
self.client.__exit__(None, None, None)
|
|
63
|
+
|
|
64
|
+
def set_token(self):
|
|
65
|
+
self.client.get(path='/login')
|
|
66
|
+
|
|
67
|
+
def clear_token(self):
|
|
68
|
+
self.client.get(path='/logout')
|
|
69
|
+
|
|
70
|
+
def test_notoken_unprotected(self):
|
|
71
|
+
url = url_for(self.unprotected_ep)
|
|
72
|
+
self.assertTrue('csrf' not in url)
|
|
73
|
+
self.assertEqual(self.client.get(path=url).data, b'SUCCESS')
|
|
74
|
+
|
|
75
|
+
def test_token_unprotected(self):
|
|
76
|
+
self.set_token()
|
|
77
|
+
self.test_notoken_unprotected()
|
|
78
|
+
|
|
79
|
+
def test_notoken_protected(self):
|
|
80
|
+
url = url_for(self.protected_ep)
|
|
81
|
+
self.assertNotEqual(self.client.get(path=url).data, b'SUCCESS')
|
|
82
|
+
|
|
83
|
+
def test_token_protected(self):
|
|
84
|
+
self.set_token()
|
|
85
|
+
url = url_for(self.protected_ep)
|
|
86
|
+
self.assertEqual(self.client.get(path=url).data, b'SUCCESS')
|
|
87
|
+
|
|
88
|
+
def test_wrong_token_protected(self):
|
|
89
|
+
self.set_token()
|
|
90
|
+
url = url_for(self.protected_ep)
|
|
91
|
+
self.set_token()
|
|
92
|
+
self.assertNotEqual(self.client.get(path=url).data, b'SUCCESS')
|
|
93
|
+
|
|
94
|
+
def test_deleted_token_protected(self):
|
|
95
|
+
self.set_token()
|
|
96
|
+
url = url_for(self.protected_ep)
|
|
97
|
+
self.clear_token()
|
|
98
|
+
self.assertNotEqual(self.client.get(path=url).data, b'SUCCESS')
|
|
99
|
+
|
|
100
|
+
class TestBlueprintCSRF(TestCSRF):
|
|
101
|
+
unprotected_ep = 'bp.bar'
|
|
102
|
+
protected_ep = 'bp.foo'
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import unittest
|
|
2
|
+
|
|
3
|
+
from uffd.password_hash import *
|
|
4
|
+
|
|
5
|
+
class TestPasswordHashRegistry(unittest.TestCase):
|
|
6
|
+
def test(self):
|
|
7
|
+
registry = PasswordHashRegistry()
|
|
8
|
+
|
|
9
|
+
@registry.register
|
|
10
|
+
class TestPasswordHash:
|
|
11
|
+
METHOD_NAME = 'test'
|
|
12
|
+
def __init__(self, value, **kwargs):
|
|
13
|
+
self.value = value
|
|
14
|
+
self.kwargs = kwargs
|
|
15
|
+
|
|
16
|
+
@registry.register
|
|
17
|
+
class Test2PasswordHash:
|
|
18
|
+
METHOD_NAME = 'test2'
|
|
19
|
+
|
|
20
|
+
result = registry.parse('{test}data', key='value')
|
|
21
|
+
self.assertIsInstance(result, TestPasswordHash)
|
|
22
|
+
self.assertEqual(result.value, '{test}data')
|
|
23
|
+
self.assertEqual(result.kwargs, {'key': 'value'})
|
|
24
|
+
with self.assertRaises(ValueError):
|
|
25
|
+
registry.parse('{invalid}data')
|
|
26
|
+
with self.assertRaises(ValueError):
|
|
27
|
+
registry.parse('invalid')
|
|
28
|
+
with self.assertRaises(ValueError):
|
|
29
|
+
registry.parse('{invalid')
|
|
30
|
+
|
|
31
|
+
class TestPasswordHash(unittest.TestCase):
|
|
32
|
+
def setUp(self):
|
|
33
|
+
class TestPasswordHash(PasswordHash):
|
|
34
|
+
@classmethod
|
|
35
|
+
def from_password(cls, password):
|
|
36
|
+
cls(build_value(cls.METHOD_NAME, password))
|
|
37
|
+
|
|
38
|
+
def verify(self, password):
|
|
39
|
+
return self.data == password
|
|
40
|
+
|
|
41
|
+
class TestPasswordHash1(TestPasswordHash):
|
|
42
|
+
METHOD_NAME = 'test1'
|
|
43
|
+
|
|
44
|
+
class TestPasswordHash2(TestPasswordHash):
|
|
45
|
+
METHOD_NAME = 'test2'
|
|
46
|
+
|
|
47
|
+
self.TestPasswordHash1 = TestPasswordHash1
|
|
48
|
+
self.TestPasswordHash2 = TestPasswordHash2
|
|
49
|
+
|
|
50
|
+
def test(self):
|
|
51
|
+
obj = self.TestPasswordHash1('{test1}data')
|
|
52
|
+
self.assertEqual(obj.value, '{test1}data')
|
|
53
|
+
self.assertEqual(obj.data, 'data')
|
|
54
|
+
self.assertIs(obj.target_cls, self.TestPasswordHash1)
|
|
55
|
+
self.assertFalse(obj.needs_rehash)
|
|
56
|
+
|
|
57
|
+
def test_invalid(self):
|
|
58
|
+
with self.assertRaises(ValueError):
|
|
59
|
+
self.TestPasswordHash1('invalid')
|
|
60
|
+
with self.assertRaises(ValueError):
|
|
61
|
+
self.TestPasswordHash1('{invalid}data')
|
|
62
|
+
with self.assertRaises(ValueError):
|
|
63
|
+
self.TestPasswordHash1('{test2}data')
|
|
64
|
+
|
|
65
|
+
def test_target_cls(self):
|
|
66
|
+
obj = self.TestPasswordHash1('{test1}data', target_cls=self.TestPasswordHash1)
|
|
67
|
+
self.assertEqual(obj.value, '{test1}data')
|
|
68
|
+
self.assertEqual(obj.data, 'data')
|
|
69
|
+
self.assertIs(obj.target_cls, self.TestPasswordHash1)
|
|
70
|
+
self.assertFalse(obj.needs_rehash)
|
|
71
|
+
obj = self.TestPasswordHash1('{test1}data', target_cls=self.TestPasswordHash2)
|
|
72
|
+
self.assertEqual(obj.value, '{test1}data')
|
|
73
|
+
self.assertEqual(obj.data, 'data')
|
|
74
|
+
self.assertIs(obj.target_cls, self.TestPasswordHash2)
|
|
75
|
+
self.assertTrue(obj.needs_rehash)
|
|
76
|
+
obj = self.TestPasswordHash1('{test1}data', target_cls=PasswordHash)
|
|
77
|
+
self.assertEqual(obj.value, '{test1}data')
|
|
78
|
+
self.assertEqual(obj.data, 'data')
|
|
79
|
+
self.assertIs(obj.target_cls, PasswordHash)
|
|
80
|
+
self.assertFalse(obj.needs_rehash)
|
|
81
|
+
|
|
82
|
+
class TestPlaintextPasswordHash(unittest.TestCase):
|
|
83
|
+
def test_verify(self):
|
|
84
|
+
obj = PlaintextPasswordHash('{plain}password')
|
|
85
|
+
self.assertTrue(obj.verify('password'))
|
|
86
|
+
self.assertFalse(obj.verify('notpassword'))
|
|
87
|
+
|
|
88
|
+
def test_from_password(self):
|
|
89
|
+
obj = PlaintextPasswordHash.from_password('password')
|
|
90
|
+
self.assertEqual(obj.value, '{plain}password')
|
|
91
|
+
self.assertTrue(obj.verify('password'))
|
|
92
|
+
self.assertFalse(obj.verify('notpassword'))
|
|
93
|
+
|
|
94
|
+
class TestHashlibPasswordHash(unittest.TestCase):
|
|
95
|
+
def test_verify(self):
|
|
96
|
+
obj = SHA512PasswordHash('{sha512}sQnzu7wkTrgkQZF+0G1hi5AI3Qmzvv0bXgc5THBqi7mAsdd4Xll27ASbRt9fEyavWi6m0QP9B8lThf+rDKy8hg==')
|
|
97
|
+
self.assertTrue(obj.verify('password'))
|
|
98
|
+
self.assertFalse(obj.verify('notpassword'))
|
|
99
|
+
|
|
100
|
+
def test_from_password(self):
|
|
101
|
+
obj = SHA512PasswordHash.from_password('password')
|
|
102
|
+
self.assertIsNotNone(obj.value)
|
|
103
|
+
self.assertTrue(obj.value.startswith('{sha512}'))
|
|
104
|
+
self.assertTrue(obj.verify('password'))
|
|
105
|
+
self.assertFalse(obj.verify('notpassword'))
|
|
106
|
+
|
|
107
|
+
class TestSaltedHashlibPasswordHash(unittest.TestCase):
|
|
108
|
+
def test_verify(self):
|
|
109
|
+
obj = SaltedSHA512PasswordHash('{ssha512}dOeDLmVpHJThhHeag10Hm2g4T7s3SBE6rGHcXUolXJHVufY4qT782rwZ/0XE6cuLcBZ0KpnwmUzRpAEtZBdv+JYEEtZQs/uC')
|
|
110
|
+
self.assertTrue(obj.verify('password'))
|
|
111
|
+
self.assertFalse(obj.verify('notpassword'))
|
|
112
|
+
|
|
113
|
+
def test_from_password(self):
|
|
114
|
+
obj = SaltedSHA512PasswordHash.from_password('password')
|
|
115
|
+
self.assertIsNotNone(obj.value)
|
|
116
|
+
self.assertTrue(obj.value.startswith('{ssha512}'))
|
|
117
|
+
self.assertTrue(obj.verify('password'))
|
|
118
|
+
self.assertFalse(obj.verify('notpassword'))
|
|
119
|
+
|
|
120
|
+
class TestCryptPasswordHash(unittest.TestCase):
|
|
121
|
+
def test_verify(self):
|
|
122
|
+
obj = CryptPasswordHash('{crypt}$5$UbTTMBH9NRurlQcX$bUiUTyedvmArlVt.62ZLRV80e2v3DjcBp/tSDkP2imD')
|
|
123
|
+
self.assertTrue(obj.verify('password'))
|
|
124
|
+
self.assertFalse(obj.verify('notpassword'))
|
|
125
|
+
|
|
126
|
+
def test_from_password(self):
|
|
127
|
+
obj = CryptPasswordHash.from_password('password')
|
|
128
|
+
self.assertIsNotNone(obj.value)
|
|
129
|
+
self.assertTrue(obj.value.startswith('{crypt}'))
|
|
130
|
+
self.assertTrue(obj.verify('password'))
|
|
131
|
+
self.assertFalse(obj.verify('notpassword'))
|
|
132
|
+
|
|
133
|
+
class TestArgon2PasswordHash(unittest.TestCase):
|
|
134
|
+
def test_verify(self):
|
|
135
|
+
obj = Argon2PasswordHash('{argon2}$argon2id$v=19$m=102400,t=2,p=8$Jc8LpCgPLjwlN/7efHLvwQ$ZqSg3CFb2/hBb3X8hOq4aw')
|
|
136
|
+
self.assertTrue(obj.verify('password'))
|
|
137
|
+
self.assertFalse(obj.verify('notpassword'))
|
|
138
|
+
obj = Argon2PasswordHash('{argon2}$invalid$')
|
|
139
|
+
self.assertFalse(obj.verify('password'))
|
|
140
|
+
|
|
141
|
+
def test_from_password(self):
|
|
142
|
+
obj = Argon2PasswordHash.from_password('password')
|
|
143
|
+
self.assertIsNotNone(obj.value)
|
|
144
|
+
self.assertTrue(obj.value.startswith('{argon2}'))
|
|
145
|
+
self.assertTrue(obj.verify('password'))
|
|
146
|
+
self.assertFalse(obj.verify('notpassword'))
|
|
147
|
+
|
|
148
|
+
def test_needs_rehash(self):
|
|
149
|
+
obj = Argon2PasswordHash('{argon2}$argon2id$v=19$m=102400,t=2,p=8$Jc8LpCgPLjwlN/7efHLvwQ$ZqSg3CFb2/hBb3X8hOq4aw')
|
|
150
|
+
self.assertFalse(obj.needs_rehash)
|
|
151
|
+
obj = Argon2PasswordHash('{argon2}$argon2id$v=19$m=102400,t=2,p=8$Jc8LpCgPLjwlN/7efHLvwQ$ZqSg3CFb2/hBb3X8hOq4aw', target_cls=PlaintextPasswordHash)
|
|
152
|
+
self.assertTrue(obj.needs_rehash)
|
|
153
|
+
obj = Argon2PasswordHash('{argon2}$argon2d$v=19$m=102400,t=2,p=8$kshPgLU1+h72l/Z8QWh8Ig$tYerKCe/5I2BCPKu8hCl2w')
|
|
154
|
+
self.assertTrue(obj.needs_rehash)
|
|
155
|
+
obj = Argon2PasswordHash('{argon2}$argon2id$v=19$m=102400,t=1,p=8$aa6i4vg/szKX5xHVGFaAeQ$v6j0ltuVqQaZlmuepaVJ1A')
|
|
156
|
+
self.assertTrue(obj.needs_rehash)
|
|
157
|
+
|
|
158
|
+
class TestInvalidPasswordHash(unittest.TestCase):
|
|
159
|
+
def test(self):
|
|
160
|
+
obj = InvalidPasswordHash('test')
|
|
161
|
+
self.assertEqual(obj.value, 'test')
|
|
162
|
+
self.assertFalse(obj.verify('test'))
|
|
163
|
+
self.assertTrue(obj.needs_rehash)
|
|
164
|
+
self.assertFalse(obj)
|
|
165
|
+
obj = InvalidPasswordHash(None)
|
|
166
|
+
self.assertIsNone(obj.value)
|
|
167
|
+
self.assertFalse(obj.verify('test'))
|
|
168
|
+
self.assertTrue(obj.needs_rehash)
|
|
169
|
+
self.assertFalse(obj)
|
|
170
|
+
|
|
171
|
+
class TestPasswordWrapper(unittest.TestCase):
|
|
172
|
+
def setUp(self):
|
|
173
|
+
class Test:
|
|
174
|
+
password_hash = None
|
|
175
|
+
password = PasswordHashAttribute('password_hash', PlaintextPasswordHash)
|
|
176
|
+
|
|
177
|
+
self.test = Test()
|
|
178
|
+
|
|
179
|
+
def test_get_none(self):
|
|
180
|
+
self.test.password_hash = None
|
|
181
|
+
obj = self.test.password
|
|
182
|
+
self.assertIsInstance(obj, InvalidPasswordHash)
|
|
183
|
+
self.assertEqual(obj.value, None)
|
|
184
|
+
self.assertTrue(obj.needs_rehash)
|
|
185
|
+
|
|
186
|
+
def test_get_valid(self):
|
|
187
|
+
self.test.password_hash = '{plain}password'
|
|
188
|
+
obj = self.test.password
|
|
189
|
+
self.assertIsInstance(obj, PlaintextPasswordHash)
|
|
190
|
+
self.assertEqual(obj.value, '{plain}password')
|
|
191
|
+
self.assertFalse(obj.needs_rehash)
|
|
192
|
+
|
|
193
|
+
def test_get_needs_rehash(self):
|
|
194
|
+
self.test.password_hash = '{ssha512}dOeDLmVpHJThhHeag10Hm2g4T7s3SBE6rGHcXUolXJHVufY4qT782rwZ/0XE6cuLcBZ0KpnwmUzRpAEtZBdv+JYEEtZQs/uC'
|
|
195
|
+
obj = self.test.password
|
|
196
|
+
self.assertIsInstance(obj, SaltedSHA512PasswordHash)
|
|
197
|
+
self.assertEqual(obj.value, '{ssha512}dOeDLmVpHJThhHeag10Hm2g4T7s3SBE6rGHcXUolXJHVufY4qT782rwZ/0XE6cuLcBZ0KpnwmUzRpAEtZBdv+JYEEtZQs/uC')
|
|
198
|
+
self.assertTrue(obj.needs_rehash)
|
|
199
|
+
|
|
200
|
+
def test_set(self):
|
|
201
|
+
self.test.password = 'password'
|
|
202
|
+
self.assertEqual(self.test.password_hash, '{plain}password')
|
|
203
|
+
|
|
204
|
+
def test_set_none(self):
|
|
205
|
+
self.test.password = None
|
|
206
|
+
self.assertIsNone(self.test.password_hash)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from uffd.models.ratelimit import get_addrkey, format_delay, Ratelimit
|
|
2
|
+
|
|
3
|
+
from tests.utils import UffdTestCase
|
|
4
|
+
|
|
5
|
+
class TestRatelimit(UffdTestCase):
|
|
6
|
+
def test_limiting(self):
|
|
7
|
+
cases = [
|
|
8
|
+
(1*60, 3),
|
|
9
|
+
(1*60*60, 3),
|
|
10
|
+
(1*60*60, 25),
|
|
11
|
+
]
|
|
12
|
+
for index, case in enumerate(cases):
|
|
13
|
+
interval, limit = case
|
|
14
|
+
key = str(index)
|
|
15
|
+
ratelimit = Ratelimit('test', interval, limit)
|
|
16
|
+
for i in range(limit):
|
|
17
|
+
ratelimit.log(key)
|
|
18
|
+
self.assertLessEqual(ratelimit.get_delay(key), interval)
|
|
19
|
+
ratelimit.log(key)
|
|
20
|
+
self.assertGreater(ratelimit.get_delay(key), interval)
|
|
21
|
+
|
|
22
|
+
def test_addrkey(self):
|
|
23
|
+
self.assertEqual(get_addrkey('192.168.0.1'), get_addrkey('192.168.0.99'))
|
|
24
|
+
self.assertNotEqual(get_addrkey('192.168.0.1'), get_addrkey('192.168.1.1'))
|
|
25
|
+
self.assertEqual(get_addrkey('fdee:707a:f38a:c369::'), get_addrkey('fdee:707a:f38a:ffff::'))
|
|
26
|
+
self.assertNotEqual(get_addrkey('fdee:707a:f38a:c369::'), get_addrkey('fdee:707a:f38b:c369::'))
|
|
27
|
+
cases = [
|
|
28
|
+
'',
|
|
29
|
+
'192.168.0.',
|
|
30
|
+
':',
|
|
31
|
+
'::',
|
|
32
|
+
'192.168.0.1/24',
|
|
33
|
+
'192.168.0.1/24',
|
|
34
|
+
'host.example.com',
|
|
35
|
+
]
|
|
36
|
+
for case in cases:
|
|
37
|
+
self.assertIsInstance(get_addrkey(case), str)
|
|
38
|
+
|
|
39
|
+
def test_format_delay(self):
|
|
40
|
+
self.assertIsInstance(format_delay(0), str)
|
|
41
|
+
self.assertIsInstance(format_delay(1), str)
|
|
42
|
+
self.assertIsInstance(format_delay(30), str)
|
|
43
|
+
self.assertIsInstance(format_delay(60), str)
|
|
44
|
+
self.assertIsInstance(format_delay(120), str)
|
|
45
|
+
self.assertIsInstance(format_delay(3600), str)
|
|
46
|
+
self.assertIsInstance(format_delay(4000), str)
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
from uffd.remailer import remailer
|
|
2
|
+
|
|
3
|
+
from tests.utils import UffdTestCase
|
|
4
|
+
|
|
5
|
+
USER_ID = 1234
|
|
6
|
+
SERVICE1_ID = 4223
|
|
7
|
+
SERVICE2_ID = 3242
|
|
8
|
+
ADDR_V1_S1 = 'v1-WzQyMjMsMTIzNF0.MeO6bHGTgIyPvvq2r3xriokLMCU@remailer.example.com'
|
|
9
|
+
ADDR_V1_S2 = 'v1-WzMyNDIsMTIzNF0.p2a_RkJc0oHBc9u4_S8G9METflA@remailer.example.com'
|
|
10
|
+
ADDR_V2_S1 = 'v2-lm2demrtfqytemzulu-ghr3u3drsoaizd567k3k67dlrkeqwmbf@remailer.example.com'
|
|
11
|
+
ADDR_V2_S2 = 'v2-lmztenbsfqytemzulu-u5tl6rscltjidqlt3o4p2lyg6targ7sq@remailer.example.com'
|
|
12
|
+
|
|
13
|
+
class TestRemailer(UffdTestCase):
|
|
14
|
+
def test_is_remailer_domain(self):
|
|
15
|
+
self.app.config['REMAILER_DOMAIN'] = 'remailer.example.com'
|
|
16
|
+
self.assertTrue(remailer.is_remailer_domain('remailer.example.com'))
|
|
17
|
+
self.assertTrue(remailer.is_remailer_domain('REMAILER.EXAMPLE.COM'))
|
|
18
|
+
self.assertTrue(remailer.is_remailer_domain(' remailer.example.com '))
|
|
19
|
+
self.assertFalse(remailer.is_remailer_domain('other.remailer.example.com'))
|
|
20
|
+
self.assertFalse(remailer.is_remailer_domain('example.com'))
|
|
21
|
+
self.app.config['REMAILER_OLD_DOMAINS'] = [' OTHER.remailer.example.com ']
|
|
22
|
+
self.assertTrue(remailer.is_remailer_domain(' OTHER.remailer.example.com '))
|
|
23
|
+
self.assertTrue(remailer.is_remailer_domain('remailer.example.com'))
|
|
24
|
+
self.assertTrue(remailer.is_remailer_domain('other.remailer.example.com'))
|
|
25
|
+
self.assertFalse(remailer.is_remailer_domain('example.com'))
|
|
26
|
+
|
|
27
|
+
def test_build_v1_address(self):
|
|
28
|
+
self.app.config['REMAILER_DOMAIN'] = 'remailer.example.com'
|
|
29
|
+
self.assertEqual(remailer.build_v1_address(SERVICE1_ID, USER_ID), ADDR_V1_S1)
|
|
30
|
+
self.assertEqual(remailer.build_v1_address(SERVICE2_ID, USER_ID), ADDR_V1_S2)
|
|
31
|
+
long_addr = remailer.build_v1_address(1000, 1000000)
|
|
32
|
+
self.assertLessEqual(len(long_addr.split('@')[0]), 64)
|
|
33
|
+
self.assertLessEqual(len(long_addr), 256)
|
|
34
|
+
self.app.config['REMAILER_OLD_DOMAINS'] = ['old.remailer.example.com']
|
|
35
|
+
self.assertEqual(remailer.build_v1_address(SERVICE1_ID, USER_ID), ADDR_V1_S1)
|
|
36
|
+
self.app.config['REMAILER_SECRET_KEY'] = self.app.config['SECRET_KEY']
|
|
37
|
+
self.assertEqual(remailer.build_v1_address(SERVICE1_ID, USER_ID), ADDR_V1_S1)
|
|
38
|
+
self.app.config['REMAILER_SECRET_KEY'] = 'REMAILER-DEBUGKEY'
|
|
39
|
+
self.assertNotEqual(remailer.build_v1_address(SERVICE1_ID, USER_ID), ADDR_V1_S1)
|
|
40
|
+
|
|
41
|
+
def test_build_v2_address(self):
|
|
42
|
+
self.app.config['REMAILER_DOMAIN'] = 'remailer.example.com'
|
|
43
|
+
self.assertEqual(remailer.build_v2_address(SERVICE1_ID, USER_ID), ADDR_V2_S1)
|
|
44
|
+
self.assertEqual(remailer.build_v2_address(SERVICE2_ID, USER_ID), ADDR_V2_S2)
|
|
45
|
+
long_addr = remailer.build_v2_address(1000, 1000000)
|
|
46
|
+
self.assertLessEqual(len(long_addr.split('@')[0]), 64)
|
|
47
|
+
self.assertLessEqual(len(long_addr), 256)
|
|
48
|
+
self.app.config['REMAILER_OLD_DOMAINS'] = ['old.remailer.example.com']
|
|
49
|
+
self.assertEqual(remailer.build_v2_address(SERVICE1_ID, USER_ID), ADDR_V2_S1)
|
|
50
|
+
self.app.config['REMAILER_SECRET_KEY'] = self.app.config['SECRET_KEY']
|
|
51
|
+
self.assertEqual(remailer.build_v2_address(SERVICE1_ID, USER_ID), ADDR_V2_S1)
|
|
52
|
+
self.app.config['REMAILER_SECRET_KEY'] = 'REMAILER-DEBUGKEY'
|
|
53
|
+
self.assertNotEqual(remailer.build_v2_address(SERVICE1_ID, USER_ID), ADDR_V2_S1)
|
|
54
|
+
|
|
55
|
+
def test_parse_address(self):
|
|
56
|
+
# REMAILER_DOMAIN behaviour
|
|
57
|
+
self.app.config['REMAILER_DOMAIN'] = None
|
|
58
|
+
self.assertIsNone(remailer.parse_address(ADDR_V1_S2))
|
|
59
|
+
self.assertIsNone(remailer.parse_address(ADDR_V2_S2))
|
|
60
|
+
self.assertIsNone(remailer.parse_address('foo@example.com'))
|
|
61
|
+
self.app.config['REMAILER_DOMAIN'] = 'remailer.example.com'
|
|
62
|
+
self.assertEqual(remailer.parse_address(ADDR_V1_S2), (SERVICE2_ID, USER_ID))
|
|
63
|
+
self.assertEqual(remailer.parse_address(ADDR_V2_S2), (SERVICE2_ID, USER_ID))
|
|
64
|
+
self.assertIsNone(remailer.parse_address('foo@example.com'))
|
|
65
|
+
self.assertIsNone(remailer.parse_address('foo@remailer.example.com'))
|
|
66
|
+
self.assertIsNone(remailer.parse_address('v1-foo@remailer.example.com'))
|
|
67
|
+
self.assertIsNone(remailer.parse_address('v2-foo@remailer.example.com'))
|
|
68
|
+
self.assertIsNone(remailer.parse_address('v2-foo-bar@remailer.example.com'))
|
|
69
|
+
self.app.config['REMAILER_DOMAIN'] = 'new-remailer.example.com'
|
|
70
|
+
self.assertIsNone(remailer.parse_address(ADDR_V1_S2))
|
|
71
|
+
self.assertIsNone(remailer.parse_address(ADDR_V2_S2))
|
|
72
|
+
self.app.config['REMAILER_OLD_DOMAINS'] = ['remailer.example.com']
|
|
73
|
+
self.assertEqual(remailer.parse_address(ADDR_V1_S2), (SERVICE2_ID, USER_ID))
|
|
74
|
+
self.assertEqual(remailer.parse_address(ADDR_V2_S2), (SERVICE2_ID, USER_ID))
|
|
75
|
+
# REMAILER_SECRET_KEY behaviour
|
|
76
|
+
self.app.config['REMAILER_DOMAIN'] = 'remailer.example.com'
|
|
77
|
+
self.app.config['REMAILER_OLD_DOMAINS'] = []
|
|
78
|
+
self.assertEqual(remailer.parse_address(ADDR_V1_S2), (SERVICE2_ID, USER_ID))
|
|
79
|
+
self.assertEqual(remailer.parse_address(ADDR_V2_S2), (SERVICE2_ID, USER_ID))
|
|
80
|
+
self.app.config['REMAILER_SECRET_KEY'] = self.app.config['SECRET_KEY']
|
|
81
|
+
self.assertEqual(remailer.parse_address(ADDR_V1_S2), (SERVICE2_ID, USER_ID))
|
|
82
|
+
self.assertEqual(remailer.parse_address(ADDR_V2_S2), (SERVICE2_ID, USER_ID))
|
|
83
|
+
self.app.config['REMAILER_SECRET_KEY'] = 'REMAILER-DEBUGKEY'
|
|
84
|
+
self.assertIsNone(remailer.parse_address(ADDR_V1_S2))
|
|
85
|
+
self.assertIsNone(remailer.parse_address(ADDR_V2_S2))
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import unittest
|
|
2
|
+
|
|
3
|
+
from flask import Flask
|
|
4
|
+
from flask_sqlalchemy import SQLAlchemy
|
|
5
|
+
|
|
6
|
+
from uffd.tasks import CleanupTask
|
|
7
|
+
|
|
8
|
+
class TestCleanupTask(unittest.TestCase):
|
|
9
|
+
def test(self):
|
|
10
|
+
app = Flask(__name__)
|
|
11
|
+
app.testing = True
|
|
12
|
+
app.debug = True
|
|
13
|
+
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:'
|
|
14
|
+
db = SQLAlchemy(app)
|
|
15
|
+
cleanup_task = CleanupTask()
|
|
16
|
+
|
|
17
|
+
@cleanup_task.delete_by_attribute('delete_me')
|
|
18
|
+
class TestModel(db.Model):
|
|
19
|
+
id = db.Column(db.Integer(), primary_key=True, autoincrement=True)
|
|
20
|
+
delete_me = db.Column(db.Boolean(), default=False, nullable=False)
|
|
21
|
+
|
|
22
|
+
with app.test_request_context():
|
|
23
|
+
db.create_all()
|
|
24
|
+
db.session.add(TestModel(delete_me=True))
|
|
25
|
+
db.session.add(TestModel(delete_me=True))
|
|
26
|
+
db.session.add(TestModel(delete_me=True))
|
|
27
|
+
db.session.add(TestModel(delete_me=False))
|
|
28
|
+
db.session.add(TestModel(delete_me=False))
|
|
29
|
+
db.session.commit()
|
|
30
|
+
db.session.expire_all()
|
|
31
|
+
self.assertEqual(TestModel.query.count(), 5)
|
|
32
|
+
|
|
33
|
+
with app.test_request_context():
|
|
34
|
+
cleanup_task.run()
|
|
35
|
+
db.session.commit()
|
|
36
|
+
db.session.expire_all()
|
|
37
|
+
|
|
38
|
+
with app.test_request_context():
|
|
39
|
+
self.assertEqual(TestModel.query.count(), 2)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from uffd.utils import nopad_b32decode, nopad_b32encode, nopad_urlsafe_b64decode, nopad_urlsafe_b64encode
|
|
2
|
+
|
|
3
|
+
from tests.utils import UffdTestCase
|
|
4
|
+
|
|
5
|
+
class TestUtils(UffdTestCase):
|
|
6
|
+
def test_nopad_b32(self):
|
|
7
|
+
for n in range(0, 32):
|
|
8
|
+
self.assertEqual(b'X'*n, nopad_b32decode(nopad_b32encode(b'X'*n)))
|
|
9
|
+
|
|
10
|
+
def test_nopad_b64(self):
|
|
11
|
+
for n in range(0, 32):
|
|
12
|
+
self.assertEqual(b'X'*n, nopad_urlsafe_b64decode(nopad_urlsafe_b64encode(b'X'*n)))
|
|
@@ -8,7 +8,7 @@ from babel.dates import LOCALTZ
|
|
|
8
8
|
from werkzeug.exceptions import Forbidden
|
|
9
9
|
from flask_migrate import Migrate
|
|
10
10
|
|
|
11
|
-
from .database import db,
|
|
11
|
+
from .database import db, customize_db_engine
|
|
12
12
|
from .template_helper import register_template_helper
|
|
13
13
|
from .navbar import setup_navbar
|
|
14
14
|
from .csrf import bp as csrf_bp
|
|
@@ -52,7 +52,6 @@ def init_config(app: Flask, test_config):
|
|
|
52
52
|
|
|
53
53
|
def create_app(test_config=None): # pylint: disable=too-many-locals,too-many-statements
|
|
54
54
|
app = Flask(__name__, instance_relative_config=False)
|
|
55
|
-
app.json_encoder = SQLAlchemyJSON
|
|
56
55
|
|
|
57
56
|
init_config(app, test_config)
|
|
58
57
|
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
from collections import OrderedDict
|
|
2
|
-
|
|
3
1
|
from sqlalchemy import MetaData, event
|
|
4
2
|
from sqlalchemy.types import TypeDecorator, Text
|
|
5
3
|
from sqlalchemy.ext.mutable import MutableList
|
|
6
4
|
from flask_sqlalchemy import SQLAlchemy
|
|
7
|
-
from flask.json import JSONEncoder
|
|
8
5
|
|
|
9
6
|
convention = {
|
|
10
7
|
'ix': 'ix_%(column_0_label)s',
|
|
@@ -48,15 +45,6 @@ def customize_db_engine(engine):
|
|
|
48
45
|
cursor.execute('SET NAMES utf8mb4 COLLATE utf8mb4_nopad_bin')
|
|
49
46
|
cursor.close()
|
|
50
47
|
|
|
51
|
-
class SQLAlchemyJSON(JSONEncoder):
|
|
52
|
-
def default(self, o):
|
|
53
|
-
if isinstance(o, db.Model):
|
|
54
|
-
result = OrderedDict()
|
|
55
|
-
for key in o.__mapper__.c.keys():
|
|
56
|
-
result[key] = getattr(o, key)
|
|
57
|
-
return result
|
|
58
|
-
return JSONEncoder.default(self, o)
|
|
59
|
-
|
|
60
48
|
class CommaSeparatedList(TypeDecorator):
|
|
61
49
|
# For some reason TypeDecorator.process_literal_param and
|
|
62
50
|
# TypeEngine.python_type are abstract but not actually required
|