├── Docker-compose.yml ├── Dockerfile ├── README.md ├── TodoApp ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-39.pyc │ ├── settings.cpython-39.pyc │ ├── urls.cpython-39.pyc │ └── wsgi.cpython-39.pyc ├── asgi.py ├── settings.py ├── urls.py └── wsgi.py ├── db.sqlite3 ├── manage.py ├── preview └── todo.png ├── requirements.txt └── todo ├── __init__.py ├── __pycache__ ├── __init__.cpython-39.pyc ├── admin.cpython-39.pyc ├── apps.cpython-39.pyc ├── models.cpython-39.pyc ├── urls.cpython-39.pyc └── views.cpython-39.pyc ├── admin.py ├── apps.py ├── migrations ├── 0001_initial.py ├── __init__.py └── __pycache__ │ ├── 0001_initial.cpython-39.pyc │ └── __init__.cpython-39.pyc ├── models.py ├── static ├── css │ ├── bootstrap.min.css │ └── main.css └── js │ ├── bootstrap.min.js │ ├── jquery-3.2.1.slim.min.js │ └── popper.min.js ├── templates └── todo_temp │ ├── base.html │ ├── footer_references.html │ ├── header_references.html │ └── index.html ├── tests.py ├── urls.py └── views.py /Docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '4' 2 | services: 3 | web: 4 | build: . 5 | command: python3 manage.py runserver 0.0.0.0:3000 6 | ports: 7 | - 3000:3000 -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3 2 | WORKDIR /app 3 | ADD . /app 4 | COPY ./requirements.txt /app/requirements.txt 5 | RUN pip install -r requirements.txt 6 | COPY . /app -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Django Todo Application

2 |
3 | 4 |
5 | 6 |
7 | 8 |

Precedences

9 | 10 |

Features

11 | 12 | - [x] Admin Panel 13 | - [x] Relational Model 14 | - [x] Able To Manage Admin Panel 15 | - [x] Able To Customize Admin Panel 16 | - [x] Able To Create Super Users Such as Admin 17 | - [x] Able To Use Any Type of Databases (Current Database is Sqlite3) 18 | - [x] Able To Add , Delete and Mark your Events as Completed in Your List 19 | - [x] Responsive Site (Optimization) 20 | - [x] Backend Security 21 | 22 |
23 | 24 |

Language used in This Project

25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
33 | 34 |

WorkSpace

35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
45 | 46 |

Installation

47 | 48 |

Linux:


49 | Run The Command Below On Terminal 👇 50 | 51 | ``` 52 | ~ sudo apt install docker && sudo apt install docker-compose 53 | ``` 54 | 55 |
56 | 57 |

How To Run

58 | 59 | First of All Clone the project from here `~ git clone https://github.com/shervinbdndev/TodoApp.git` 60 | 61 | Then go To Project's Directory with ``~ cd TodoApp`` No Matters if Your Using Windows or Linux. 62 | 63 | Run The Commands Below On Terminal 👇 64 | 65 | ``` 66 | ~ docker-compose build 67 | ~ docker-compose up 68 | ``` 69 | 70 | After that you need to open ``http://127.0.0.1:3000`` for accessing the website. -------------------------------------------------------------------------------- /TodoApp/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shervinbdndev/TodoApp/fd6a444cc1709b6aa77b0d293bbb9e5669386f1a/TodoApp/__init__.py -------------------------------------------------------------------------------- /TodoApp/__pycache__/__init__.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shervinbdndev/TodoApp/fd6a444cc1709b6aa77b0d293bbb9e5669386f1a/TodoApp/__pycache__/__init__.cpython-39.pyc -------------------------------------------------------------------------------- /TodoApp/__pycache__/settings.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shervinbdndev/TodoApp/fd6a444cc1709b6aa77b0d293bbb9e5669386f1a/TodoApp/__pycache__/settings.cpython-39.pyc -------------------------------------------------------------------------------- /TodoApp/__pycache__/urls.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shervinbdndev/TodoApp/fd6a444cc1709b6aa77b0d293bbb9e5669386f1a/TodoApp/__pycache__/urls.cpython-39.pyc -------------------------------------------------------------------------------- /TodoApp/__pycache__/wsgi.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shervinbdndev/TodoApp/fd6a444cc1709b6aa77b0d293bbb9e5669386f1a/TodoApp/__pycache__/wsgi.cpython-39.pyc -------------------------------------------------------------------------------- /TodoApp/asgi.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from django.core.asgi import get_asgi_application 4 | 5 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'TodoApp.settings') 6 | 7 | application = get_asgi_application() -------------------------------------------------------------------------------- /TodoApp/settings.py: -------------------------------------------------------------------------------- 1 | import os 2 | from pathlib import Path 3 | 4 | 5 | BASE_DIR = Path(__file__).resolve().parent.parent 6 | 7 | 8 | SECRET_KEY = 'django-insecure-i%6^kmj)+2x@pknlu-8d#yeij^^j4f$rv%4d#7u^_5pup9hwzq' 9 | 10 | 11 | DEBUG = True 12 | 13 | ALLOWED_HOSTS = [] 14 | 15 | 16 | 17 | INSTALLED_APPS = [ 18 | 'django.contrib.admin', 19 | 'django.contrib.auth', 20 | 'django.contrib.contenttypes', 21 | 'django.contrib.sessions', 22 | 'django.contrib.messages', 23 | 'django.contrib.staticfiles', 24 | 'todo.apps.TodoConfig', 25 | ] 26 | 27 | MIDDLEWARE = [ 28 | 'django.middleware.security.SecurityMiddleware', 29 | 'django.contrib.sessions.middleware.SessionMiddleware', 30 | 'django.middleware.common.CommonMiddleware', 31 | 'django.middleware.csrf.CsrfViewMiddleware', 32 | 'django.contrib.auth.middleware.AuthenticationMiddleware', 33 | 'django.contrib.messages.middleware.MessageMiddleware', 34 | 'django.middleware.clickjacking.XFrameOptionsMiddleware', 35 | ] 36 | 37 | ROOT_URLCONF = 'TodoApp.urls' 38 | 39 | TEMPLATES = [ 40 | { 41 | 'BACKEND': 'django.template.backends.django.DjangoTemplates', 42 | 'DIRS': [ 43 | os.path.join(BASE_DIR , 'templates') 44 | ], 45 | 'APP_DIRS': True, 46 | 'OPTIONS': { 47 | 'context_processors': [ 48 | 'django.template.context_processors.debug', 49 | 'django.template.context_processors.request', 50 | 'django.contrib.auth.context_processors.auth', 51 | 'django.contrib.messages.context_processors.messages', 52 | ], 53 | }, 54 | }, 55 | ] 56 | 57 | WSGI_APPLICATION = 'TodoApp.wsgi.application' 58 | 59 | 60 | 61 | DATABASES = { 62 | 'default': { 63 | 'ENGINE': 'django.db.backends.sqlite3', 64 | 'NAME': os.path.join(BASE_DIR , 'db.sqlite3'), 65 | } 66 | } 67 | 68 | 69 | 70 | AUTH_PASSWORD_VALIDATORS = [ 71 | { 72 | 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 73 | }, 74 | { 75 | 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 76 | }, 77 | { 78 | 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 79 | }, 80 | { 81 | 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 82 | }, 83 | ] 84 | 85 | 86 | 87 | LANGUAGE_CODE = 'en-us' 88 | 89 | TIME_ZONE = 'UTC' 90 | 91 | USE_I18N = True 92 | 93 | USE_L10N = True 94 | 95 | USE_TZ = True 96 | 97 | 98 | 99 | STATIC_URL = '/static/' 100 | 101 | 102 | DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' -------------------------------------------------------------------------------- /TodoApp/urls.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from TodoApp import settings 3 | from django.conf.urls.static import static 4 | from django.urls.conf import (path , include) 5 | from django.contrib.staticfiles.urls import staticfiles_urlpatterns 6 | 7 | 8 | 9 | urlpatterns = [ 10 | path(route='admin/', view=admin.site.urls , name='admin'), 11 | path(route='' , view=include("todo.urls") , name='index') 12 | ] 13 | 14 | 15 | if (settings.DEBUG): 16 | urlpatterns += staticfiles_urlpatterns() 17 | urlpatterns += static(settings.STATIC_URL) -------------------------------------------------------------------------------- /TodoApp/wsgi.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from django.core.wsgi import get_wsgi_application 4 | 5 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'TodoApp.settings') 6 | 7 | application = get_wsgi_application() 8 | -------------------------------------------------------------------------------- /db.sqlite3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shervinbdndev/TodoApp/fd6a444cc1709b6aa77b0d293bbb9e5669386f1a/db.sqlite3 -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | 4 | 5 | def main(): 6 | """Run administrative tasks.""" 7 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'TodoApp.settings') 8 | try: 9 | from django.core.management import execute_from_command_line 10 | except ImportError as exc: 11 | raise ImportError( 12 | "Couldn't import Django. Are you sure it's installed and " 13 | "available on your PYTHONPATH environment variable? Did you " 14 | "forget to activate a virtual environment?" 15 | ) from exc 16 | execute_from_command_line(sys.argv) 17 | 18 | 19 | if __name__ == '__main__': 20 | main() -------------------------------------------------------------------------------- /preview/todo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shervinbdndev/TodoApp/fd6a444cc1709b6aa77b0d293bbb9e5669386f1a/preview/todo.png -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | django 2 | gunicorn -------------------------------------------------------------------------------- /todo/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shervinbdndev/TodoApp/fd6a444cc1709b6aa77b0d293bbb9e5669386f1a/todo/__init__.py -------------------------------------------------------------------------------- /todo/__pycache__/__init__.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shervinbdndev/TodoApp/fd6a444cc1709b6aa77b0d293bbb9e5669386f1a/todo/__pycache__/__init__.cpython-39.pyc -------------------------------------------------------------------------------- /todo/__pycache__/admin.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shervinbdndev/TodoApp/fd6a444cc1709b6aa77b0d293bbb9e5669386f1a/todo/__pycache__/admin.cpython-39.pyc -------------------------------------------------------------------------------- /todo/__pycache__/apps.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shervinbdndev/TodoApp/fd6a444cc1709b6aa77b0d293bbb9e5669386f1a/todo/__pycache__/apps.cpython-39.pyc -------------------------------------------------------------------------------- /todo/__pycache__/models.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shervinbdndev/TodoApp/fd6a444cc1709b6aa77b0d293bbb9e5669386f1a/todo/__pycache__/models.cpython-39.pyc -------------------------------------------------------------------------------- /todo/__pycache__/urls.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shervinbdndev/TodoApp/fd6a444cc1709b6aa77b0d293bbb9e5669386f1a/todo/__pycache__/urls.cpython-39.pyc -------------------------------------------------------------------------------- /todo/__pycache__/views.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shervinbdndev/TodoApp/fd6a444cc1709b6aa77b0d293bbb9e5669386f1a/todo/__pycache__/views.cpython-39.pyc -------------------------------------------------------------------------------- /todo/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from .models import TodoDatabase 3 | 4 | 5 | class TodoDatabaseModelAdmin(admin.ModelAdmin): 6 | list_display = ['title' , 'created_at' , 'modified_at'] 7 | 8 | 9 | admin.site.register(TodoDatabase , TodoDatabaseModelAdmin) -------------------------------------------------------------------------------- /todo/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class TodoConfig(AppConfig): 5 | default_auto_field = 'django.db.models.BigAutoField' 6 | name = 'todo' 7 | -------------------------------------------------------------------------------- /todo/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.0.3 on 2022-03-12 08:16 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | initial = True 9 | 10 | dependencies = [ 11 | ] 12 | 13 | operations = [ 14 | migrations.CreateModel( 15 | name='TodoDatabase', 16 | fields=[ 17 | ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 18 | ('title', models.CharField(max_length=100)), 19 | ('completed', models.BooleanField(default=False)), 20 | ('created_at', models.DateTimeField(auto_now_add=True)), 21 | ('modified_at', models.DateTimeField(auto_now=True)), 22 | ], 23 | options={ 24 | 'verbose_name': 'Todo Table', 25 | 'verbose_name_plural': 'List Of Todos', 26 | }, 27 | ), 28 | ] 29 | -------------------------------------------------------------------------------- /todo/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shervinbdndev/TodoApp/fd6a444cc1709b6aa77b0d293bbb9e5669386f1a/todo/migrations/__init__.py -------------------------------------------------------------------------------- /todo/migrations/__pycache__/0001_initial.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shervinbdndev/TodoApp/fd6a444cc1709b6aa77b0d293bbb9e5669386f1a/todo/migrations/__pycache__/0001_initial.cpython-39.pyc -------------------------------------------------------------------------------- /todo/migrations/__pycache__/__init__.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shervinbdndev/TodoApp/fd6a444cc1709b6aa77b0d293bbb9e5669386f1a/todo/migrations/__pycache__/__init__.cpython-39.pyc -------------------------------------------------------------------------------- /todo/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | 4 | class TodoDatabase(models.Model): 5 | title = models.CharField(max_length = 100) 6 | completed = models.BooleanField(default = False) 7 | created_at = models.DateTimeField(auto_now_add = True) 8 | modified_at = models.DateTimeField(auto_now = True) 9 | 10 | def __str__(self) -> str: 11 | super(TodoDatabase , self).__str__() 12 | return self.title 13 | 14 | class Meta: 15 | verbose_name = 'Todo Table' 16 | verbose_name_plural = 'List Of Todos' -------------------------------------------------------------------------------- /todo/static/css/main.css: -------------------------------------------------------------------------------- 1 | .list-group-item{ 2 | border-radius: 5px; 3 | background: #625B99; 4 | color: white; 5 | border-color: black; 6 | } -------------------------------------------------------------------------------- /todo/static/js/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v4.3.1 (https://getbootstrap.com/) 3 | * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | !(function (t, e) { 7 | "object" == typeof exports && "undefined" != typeof module 8 | ? e(exports, require("jquery"), require("popper.js")) 9 | : "function" == typeof define && define.amd 10 | ? define(["exports", "jquery", "popper.js"], e) 11 | : e(((t = t || self).bootstrap = {}), t.jQuery, t.Popper); 12 | })(this, function (t, g, u) { 13 | "use strict"; 14 | function i(t, e) { 15 | for (var n = 0; n < e.length; n++) { 16 | var i = e[n]; 17 | (i.enumerable = i.enumerable || !1), 18 | (i.configurable = !0), 19 | "value" in i && (i.writable = !0), 20 | Object.defineProperty(t, i.key, i); 21 | } 22 | } 23 | function s(t, e, n) { 24 | return e && i(t.prototype, e), n && i(t, n), t; 25 | } 26 | function l(o) { 27 | for (var t = 1; t < arguments.length; t++) { 28 | var r = null != arguments[t] ? arguments[t] : {}, 29 | e = Object.keys(r); 30 | "function" == typeof Object.getOwnPropertySymbols && 31 | (e = e.concat( 32 | Object.getOwnPropertySymbols(r).filter(function (t) { 33 | return Object.getOwnPropertyDescriptor(r, t).enumerable; 34 | }) 35 | )), 36 | e.forEach(function (t) { 37 | var e, n, i; 38 | (e = o), 39 | (i = r[(n = t)]), 40 | n in e 41 | ? Object.defineProperty(e, n, { 42 | value: i, 43 | enumerable: !0, 44 | configurable: !0, 45 | writable: !0, 46 | }) 47 | : (e[n] = i); 48 | }); 49 | } 50 | return o; 51 | } 52 | (g = g && g.hasOwnProperty("default") ? g.default : g), 53 | (u = u && u.hasOwnProperty("default") ? u.default : u); 54 | var e = "transitionend"; 55 | function n(t) { 56 | var e = this, 57 | n = !1; 58 | return ( 59 | g(this).one(_.TRANSITION_END, function () { 60 | n = !0; 61 | }), 62 | setTimeout(function () { 63 | n || _.triggerTransitionEnd(e); 64 | }, t), 65 | this 66 | ); 67 | } 68 | var _ = { 69 | TRANSITION_END: "bsTransitionEnd", 70 | getUID: function (t) { 71 | for (; (t += ~~(1e6 * Math.random())), document.getElementById(t); ); 72 | return t; 73 | }, 74 | getSelectorFromElement: function (t) { 75 | var e = t.getAttribute("data-target"); 76 | if (!e || "#" === e) { 77 | var n = t.getAttribute("href"); 78 | e = n && "#" !== n ? n.trim() : ""; 79 | } 80 | try { 81 | return document.querySelector(e) ? e : null; 82 | } catch (t) { 83 | return null; 84 | } 85 | }, 86 | getTransitionDurationFromElement: function (t) { 87 | if (!t) return 0; 88 | var e = g(t).css("transition-duration"), 89 | n = g(t).css("transition-delay"), 90 | i = parseFloat(e), 91 | o = parseFloat(n); 92 | return i || o 93 | ? ((e = e.split(",")[0]), 94 | (n = n.split(",")[0]), 95 | 1e3 * (parseFloat(e) + parseFloat(n))) 96 | : 0; 97 | }, 98 | reflow: function (t) { 99 | return t.offsetHeight; 100 | }, 101 | triggerTransitionEnd: function (t) { 102 | g(t).trigger(e); 103 | }, 104 | supportsTransitionEnd: function () { 105 | return Boolean(e); 106 | }, 107 | isElement: function (t) { 108 | return (t[0] || t).nodeType; 109 | }, 110 | typeCheckConfig: function (t, e, n) { 111 | for (var i in n) 112 | if (Object.prototype.hasOwnProperty.call(n, i)) { 113 | var o = n[i], 114 | r = e[i], 115 | s = 116 | r && _.isElement(r) 117 | ? "element" 118 | : ((a = r), 119 | {}.toString 120 | .call(a) 121 | .match(/\s([a-z]+)/i)[1] 122 | .toLowerCase()); 123 | if (!new RegExp(o).test(s)) 124 | throw new Error( 125 | t.toUpperCase() + 126 | ': Option "' + 127 | i + 128 | '" provided type "' + 129 | s + 130 | '" but expected type "' + 131 | o + 132 | '".' 133 | ); 134 | } 135 | var a; 136 | }, 137 | findShadowRoot: function (t) { 138 | if (!document.documentElement.attachShadow) return null; 139 | if ("function" != typeof t.getRootNode) 140 | return t instanceof ShadowRoot 141 | ? t 142 | : t.parentNode 143 | ? _.findShadowRoot(t.parentNode) 144 | : null; 145 | var e = t.getRootNode(); 146 | return e instanceof ShadowRoot ? e : null; 147 | }, 148 | }; 149 | (g.fn.emulateTransitionEnd = n), 150 | (g.event.special[_.TRANSITION_END] = { 151 | bindType: e, 152 | delegateType: e, 153 | handle: function (t) { 154 | if (g(t.target).is(this)) 155 | return t.handleObj.handler.apply(this, arguments); 156 | }, 157 | }); 158 | var o = "alert", 159 | r = "bs.alert", 160 | a = "." + r, 161 | c = g.fn[o], 162 | h = { 163 | CLOSE: "close" + a, 164 | CLOSED: "closed" + a, 165 | CLICK_DATA_API: "click" + a + ".data-api", 166 | }, 167 | f = "alert", 168 | d = "fade", 169 | m = "show", 170 | p = (function () { 171 | function i(t) { 172 | this._element = t; 173 | } 174 | var t = i.prototype; 175 | return ( 176 | (t.close = function (t) { 177 | var e = this._element; 178 | t && (e = this._getRootElement(t)), 179 | this._triggerCloseEvent(e).isDefaultPrevented() || 180 | this._removeElement(e); 181 | }), 182 | (t.dispose = function () { 183 | g.removeData(this._element, r), (this._element = null); 184 | }), 185 | (t._getRootElement = function (t) { 186 | var e = _.getSelectorFromElement(t), 187 | n = !1; 188 | return ( 189 | e && (n = document.querySelector(e)), 190 | n || (n = g(t).closest("." + f)[0]), 191 | n 192 | ); 193 | }), 194 | (t._triggerCloseEvent = function (t) { 195 | var e = g.Event(h.CLOSE); 196 | return g(t).trigger(e), e; 197 | }), 198 | (t._removeElement = function (e) { 199 | var n = this; 200 | if ((g(e).removeClass(m), g(e).hasClass(d))) { 201 | var t = _.getTransitionDurationFromElement(e); 202 | g(e) 203 | .one(_.TRANSITION_END, function (t) { 204 | return n._destroyElement(e, t); 205 | }) 206 | .emulateTransitionEnd(t); 207 | } else this._destroyElement(e); 208 | }), 209 | (t._destroyElement = function (t) { 210 | g(t).detach().trigger(h.CLOSED).remove(); 211 | }), 212 | (i._jQueryInterface = function (n) { 213 | return this.each(function () { 214 | var t = g(this), 215 | e = t.data(r); 216 | e || ((e = new i(this)), t.data(r, e)), "close" === n && e[n](this); 217 | }); 218 | }), 219 | (i._handleDismiss = function (e) { 220 | return function (t) { 221 | t && t.preventDefault(), e.close(this); 222 | }; 223 | }), 224 | s(i, null, [ 225 | { 226 | key: "VERSION", 227 | get: function () { 228 | return "4.3.1"; 229 | }, 230 | }, 231 | ]), 232 | i 233 | ); 234 | })(); 235 | g(document).on( 236 | h.CLICK_DATA_API, 237 | '[data-dismiss="alert"]', 238 | p._handleDismiss(new p()) 239 | ), 240 | (g.fn[o] = p._jQueryInterface), 241 | (g.fn[o].Constructor = p), 242 | (g.fn[o].noConflict = function () { 243 | return (g.fn[o] = c), p._jQueryInterface; 244 | }); 245 | var v = "button", 246 | y = "bs.button", 247 | E = "." + y, 248 | C = ".data-api", 249 | T = g.fn[v], 250 | S = "active", 251 | b = "btn", 252 | I = "focus", 253 | D = '[data-toggle^="button"]', 254 | w = '[data-toggle="buttons"]', 255 | A = 'input:not([type="hidden"])', 256 | N = ".active", 257 | O = ".btn", 258 | k = { 259 | CLICK_DATA_API: "click" + E + C, 260 | FOCUS_BLUR_DATA_API: "focus" + E + C + " blur" + E + C, 261 | }, 262 | P = (function () { 263 | function n(t) { 264 | this._element = t; 265 | } 266 | var t = n.prototype; 267 | return ( 268 | (t.toggle = function () { 269 | var t = !0, 270 | e = !0, 271 | n = g(this._element).closest(w)[0]; 272 | if (n) { 273 | var i = this._element.querySelector(A); 274 | if (i) { 275 | if ("radio" === i.type) 276 | if (i.checked && this._element.classList.contains(S)) t = !1; 277 | else { 278 | var o = n.querySelector(N); 279 | o && g(o).removeClass(S); 280 | } 281 | if (t) { 282 | if ( 283 | i.hasAttribute("disabled") || 284 | n.hasAttribute("disabled") || 285 | i.classList.contains("disabled") || 286 | n.classList.contains("disabled") 287 | ) 288 | return; 289 | (i.checked = !this._element.classList.contains(S)), 290 | g(i).trigger("change"); 291 | } 292 | i.focus(), (e = !1); 293 | } 294 | } 295 | e && 296 | this._element.setAttribute( 297 | "aria-pressed", 298 | !this._element.classList.contains(S) 299 | ), 300 | t && g(this._element).toggleClass(S); 301 | }), 302 | (t.dispose = function () { 303 | g.removeData(this._element, y), (this._element = null); 304 | }), 305 | (n._jQueryInterface = function (e) { 306 | return this.each(function () { 307 | var t = g(this).data(y); 308 | t || ((t = new n(this)), g(this).data(y, t)), 309 | "toggle" === e && t[e](); 310 | }); 311 | }), 312 | s(n, null, [ 313 | { 314 | key: "VERSION", 315 | get: function () { 316 | return "4.3.1"; 317 | }, 318 | }, 319 | ]), 320 | n 321 | ); 322 | })(); 323 | g(document) 324 | .on(k.CLICK_DATA_API, D, function (t) { 325 | t.preventDefault(); 326 | var e = t.target; 327 | g(e).hasClass(b) || (e = g(e).closest(O)), 328 | P._jQueryInterface.call(g(e), "toggle"); 329 | }) 330 | .on(k.FOCUS_BLUR_DATA_API, D, function (t) { 331 | var e = g(t.target).closest(O)[0]; 332 | g(e).toggleClass(I, /^focus(in)?$/.test(t.type)); 333 | }), 334 | (g.fn[v] = P._jQueryInterface), 335 | (g.fn[v].Constructor = P), 336 | (g.fn[v].noConflict = function () { 337 | return (g.fn[v] = T), P._jQueryInterface; 338 | }); 339 | var L = "carousel", 340 | j = "bs.carousel", 341 | H = "." + j, 342 | R = ".data-api", 343 | x = g.fn[L], 344 | F = { 345 | interval: 5e3, 346 | keyboard: !0, 347 | slide: !1, 348 | pause: "hover", 349 | wrap: !0, 350 | touch: !0, 351 | }, 352 | U = { 353 | interval: "(number|boolean)", 354 | keyboard: "boolean", 355 | slide: "(boolean|string)", 356 | pause: "(string|boolean)", 357 | wrap: "boolean", 358 | touch: "boolean", 359 | }, 360 | W = "next", 361 | q = "prev", 362 | M = "left", 363 | K = "right", 364 | Q = { 365 | SLIDE: "slide" + H, 366 | SLID: "slid" + H, 367 | KEYDOWN: "keydown" + H, 368 | MOUSEENTER: "mouseenter" + H, 369 | MOUSELEAVE: "mouseleave" + H, 370 | TOUCHSTART: "touchstart" + H, 371 | TOUCHMOVE: "touchmove" + H, 372 | TOUCHEND: "touchend" + H, 373 | POINTERDOWN: "pointerdown" + H, 374 | POINTERUP: "pointerup" + H, 375 | DRAG_START: "dragstart" + H, 376 | LOAD_DATA_API: "load" + H + R, 377 | CLICK_DATA_API: "click" + H + R, 378 | }, 379 | B = "carousel", 380 | V = "active", 381 | Y = "slide", 382 | z = "carousel-item-right", 383 | X = "carousel-item-left", 384 | $ = "carousel-item-next", 385 | G = "carousel-item-prev", 386 | J = "pointer-event", 387 | Z = ".active", 388 | tt = ".active.carousel-item", 389 | et = ".carousel-item", 390 | nt = ".carousel-item img", 391 | it = ".carousel-item-next, .carousel-item-prev", 392 | ot = ".carousel-indicators", 393 | rt = "[data-slide], [data-slide-to]", 394 | st = '[data-ride="carousel"]', 395 | at = { TOUCH: "touch", PEN: "pen" }, 396 | lt = (function () { 397 | function r(t, e) { 398 | (this._items = null), 399 | (this._interval = null), 400 | (this._activeElement = null), 401 | (this._isPaused = !1), 402 | (this._isSliding = !1), 403 | (this.touchTimeout = null), 404 | (this.touchStartX = 0), 405 | (this.touchDeltaX = 0), 406 | (this._config = this._getConfig(e)), 407 | (this._element = t), 408 | (this._indicatorsElement = this._element.querySelector(ot)), 409 | (this._touchSupported = 410 | "ontouchstart" in document.documentElement || 411 | 0 < navigator.maxTouchPoints), 412 | (this._pointerEvent = Boolean( 413 | window.PointerEvent || window.MSPointerEvent 414 | )), 415 | this._addEventListeners(); 416 | } 417 | var t = r.prototype; 418 | return ( 419 | (t.next = function () { 420 | this._isSliding || this._slide(W); 421 | }), 422 | (t.nextWhenVisible = function () { 423 | !document.hidden && 424 | g(this._element).is(":visible") && 425 | "hidden" !== g(this._element).css("visibility") && 426 | this.next(); 427 | }), 428 | (t.prev = function () { 429 | this._isSliding || this._slide(q); 430 | }), 431 | (t.pause = function (t) { 432 | t || (this._isPaused = !0), 433 | this._element.querySelector(it) && 434 | (_.triggerTransitionEnd(this._element), this.cycle(!0)), 435 | clearInterval(this._interval), 436 | (this._interval = null); 437 | }), 438 | (t.cycle = function (t) { 439 | t || (this._isPaused = !1), 440 | this._interval && 441 | (clearInterval(this._interval), (this._interval = null)), 442 | this._config.interval && 443 | !this._isPaused && 444 | (this._interval = setInterval( 445 | (document.visibilityState 446 | ? this.nextWhenVisible 447 | : this.next 448 | ).bind(this), 449 | this._config.interval 450 | )); 451 | }), 452 | (t.to = function (t) { 453 | var e = this; 454 | this._activeElement = this._element.querySelector(tt); 455 | var n = this._getItemIndex(this._activeElement); 456 | if (!(t > this._items.length - 1 || t < 0)) 457 | if (this._isSliding) 458 | g(this._element).one(Q.SLID, function () { 459 | return e.to(t); 460 | }); 461 | else { 462 | if (n === t) return this.pause(), void this.cycle(); 463 | var i = n < t ? W : q; 464 | this._slide(i, this._items[t]); 465 | } 466 | }), 467 | (t.dispose = function () { 468 | g(this._element).off(H), 469 | g.removeData(this._element, j), 470 | (this._items = null), 471 | (this._config = null), 472 | (this._element = null), 473 | (this._interval = null), 474 | (this._isPaused = null), 475 | (this._isSliding = null), 476 | (this._activeElement = null), 477 | (this._indicatorsElement = null); 478 | }), 479 | (t._getConfig = function (t) { 480 | return (t = l({}, F, t)), _.typeCheckConfig(L, t, U), t; 481 | }), 482 | (t._handleSwipe = function () { 483 | var t = Math.abs(this.touchDeltaX); 484 | if (!(t <= 40)) { 485 | var e = t / this.touchDeltaX; 486 | 0 < e && this.prev(), e < 0 && this.next(); 487 | } 488 | }), 489 | (t._addEventListeners = function () { 490 | var e = this; 491 | this._config.keyboard && 492 | g(this._element).on(Q.KEYDOWN, function (t) { 493 | return e._keydown(t); 494 | }), 495 | "hover" === this._config.pause && 496 | g(this._element) 497 | .on(Q.MOUSEENTER, function (t) { 498 | return e.pause(t); 499 | }) 500 | .on(Q.MOUSELEAVE, function (t) { 501 | return e.cycle(t); 502 | }), 503 | this._config.touch && this._addTouchEventListeners(); 504 | }), 505 | (t._addTouchEventListeners = function () { 506 | var n = this; 507 | if (this._touchSupported) { 508 | var e = function (t) { 509 | n._pointerEvent && at[t.originalEvent.pointerType.toUpperCase()] 510 | ? (n.touchStartX = t.originalEvent.clientX) 511 | : n._pointerEvent || 512 | (n.touchStartX = t.originalEvent.touches[0].clientX); 513 | }, 514 | i = function (t) { 515 | n._pointerEvent && 516 | at[t.originalEvent.pointerType.toUpperCase()] && 517 | (n.touchDeltaX = t.originalEvent.clientX - n.touchStartX), 518 | n._handleSwipe(), 519 | "hover" === n._config.pause && 520 | (n.pause(), 521 | n.touchTimeout && clearTimeout(n.touchTimeout), 522 | (n.touchTimeout = setTimeout(function (t) { 523 | return n.cycle(t); 524 | }, 500 + n._config.interval))); 525 | }; 526 | g(this._element.querySelectorAll(nt)).on( 527 | Q.DRAG_START, 528 | function (t) { 529 | return t.preventDefault(); 530 | } 531 | ), 532 | this._pointerEvent 533 | ? (g(this._element).on(Q.POINTERDOWN, function (t) { 534 | return e(t); 535 | }), 536 | g(this._element).on(Q.POINTERUP, function (t) { 537 | return i(t); 538 | }), 539 | this._element.classList.add(J)) 540 | : (g(this._element).on(Q.TOUCHSTART, function (t) { 541 | return e(t); 542 | }), 543 | g(this._element).on(Q.TOUCHMOVE, function (t) { 544 | var e; 545 | (e = t).originalEvent.touches && 546 | 1 < e.originalEvent.touches.length 547 | ? (n.touchDeltaX = 0) 548 | : (n.touchDeltaX = 549 | e.originalEvent.touches[0].clientX - n.touchStartX); 550 | }), 551 | g(this._element).on(Q.TOUCHEND, function (t) { 552 | return i(t); 553 | })); 554 | } 555 | }), 556 | (t._keydown = function (t) { 557 | if (!/input|textarea/i.test(t.target.tagName)) 558 | switch (t.which) { 559 | case 37: 560 | t.preventDefault(), this.prev(); 561 | break; 562 | case 39: 563 | t.preventDefault(), this.next(); 564 | } 565 | }), 566 | (t._getItemIndex = function (t) { 567 | return ( 568 | (this._items = 569 | t && t.parentNode 570 | ? [].slice.call(t.parentNode.querySelectorAll(et)) 571 | : []), 572 | this._items.indexOf(t) 573 | ); 574 | }), 575 | (t._getItemByDirection = function (t, e) { 576 | var n = t === W, 577 | i = t === q, 578 | o = this._getItemIndex(e), 579 | r = this._items.length - 1; 580 | if (((i && 0 === o) || (n && o === r)) && !this._config.wrap) 581 | return e; 582 | var s = (o + (t === q ? -1 : 1)) % this._items.length; 583 | return -1 === s 584 | ? this._items[this._items.length - 1] 585 | : this._items[s]; 586 | }), 587 | (t._triggerSlideEvent = function (t, e) { 588 | var n = this._getItemIndex(t), 589 | i = this._getItemIndex(this._element.querySelector(tt)), 590 | o = g.Event(Q.SLIDE, { 591 | relatedTarget: t, 592 | direction: e, 593 | from: i, 594 | to: n, 595 | }); 596 | return g(this._element).trigger(o), o; 597 | }), 598 | (t._setActiveIndicatorElement = function (t) { 599 | if (this._indicatorsElement) { 600 | var e = [].slice.call(this._indicatorsElement.querySelectorAll(Z)); 601 | g(e).removeClass(V); 602 | var n = this._indicatorsElement.children[this._getItemIndex(t)]; 603 | n && g(n).addClass(V); 604 | } 605 | }), 606 | (t._slide = function (t, e) { 607 | var n, 608 | i, 609 | o, 610 | r = this, 611 | s = this._element.querySelector(tt), 612 | a = this._getItemIndex(s), 613 | l = e || (s && this._getItemByDirection(t, s)), 614 | c = this._getItemIndex(l), 615 | h = Boolean(this._interval); 616 | if ( 617 | ((o = t === W ? ((n = X), (i = $), M) : ((n = z), (i = G), K)), 618 | l && g(l).hasClass(V)) 619 | ) 620 | this._isSliding = !1; 621 | else if ( 622 | !this._triggerSlideEvent(l, o).isDefaultPrevented() && 623 | s && 624 | l 625 | ) { 626 | (this._isSliding = !0), 627 | h && this.pause(), 628 | this._setActiveIndicatorElement(l); 629 | var u = g.Event(Q.SLID, { 630 | relatedTarget: l, 631 | direction: o, 632 | from: a, 633 | to: c, 634 | }); 635 | if (g(this._element).hasClass(Y)) { 636 | g(l).addClass(i), _.reflow(l), g(s).addClass(n), g(l).addClass(n); 637 | var f = parseInt(l.getAttribute("data-interval"), 10); 638 | this._config.interval = f 639 | ? ((this._config.defaultInterval = 640 | this._config.defaultInterval || this._config.interval), 641 | f) 642 | : this._config.defaultInterval || this._config.interval; 643 | var d = _.getTransitionDurationFromElement(s); 644 | g(s) 645 | .one(_.TRANSITION_END, function () { 646 | g(l) 647 | .removeClass(n + " " + i) 648 | .addClass(V), 649 | g(s).removeClass(V + " " + i + " " + n), 650 | (r._isSliding = !1), 651 | setTimeout(function () { 652 | return g(r._element).trigger(u); 653 | }, 0); 654 | }) 655 | .emulateTransitionEnd(d); 656 | } else 657 | g(s).removeClass(V), 658 | g(l).addClass(V), 659 | (this._isSliding = !1), 660 | g(this._element).trigger(u); 661 | h && this.cycle(); 662 | } 663 | }), 664 | (r._jQueryInterface = function (i) { 665 | return this.each(function () { 666 | var t = g(this).data(j), 667 | e = l({}, F, g(this).data()); 668 | "object" == typeof i && (e = l({}, e, i)); 669 | var n = "string" == typeof i ? i : e.slide; 670 | if ( 671 | (t || ((t = new r(this, e)), g(this).data(j, t)), 672 | "number" == typeof i) 673 | ) 674 | t.to(i); 675 | else if ("string" == typeof n) { 676 | if ("undefined" == typeof t[n]) 677 | throw new TypeError('No method named "' + n + '"'); 678 | t[n](); 679 | } else e.interval && e.ride && (t.pause(), t.cycle()); 680 | }); 681 | }), 682 | (r._dataApiClickHandler = function (t) { 683 | var e = _.getSelectorFromElement(this); 684 | if (e) { 685 | var n = g(e)[0]; 686 | if (n && g(n).hasClass(B)) { 687 | var i = l({}, g(n).data(), g(this).data()), 688 | o = this.getAttribute("data-slide-to"); 689 | o && (i.interval = !1), 690 | r._jQueryInterface.call(g(n), i), 691 | o && g(n).data(j).to(o), 692 | t.preventDefault(); 693 | } 694 | } 695 | }), 696 | s(r, null, [ 697 | { 698 | key: "VERSION", 699 | get: function () { 700 | return "4.3.1"; 701 | }, 702 | }, 703 | { 704 | key: "Default", 705 | get: function () { 706 | return F; 707 | }, 708 | }, 709 | ]), 710 | r 711 | ); 712 | })(); 713 | g(document).on(Q.CLICK_DATA_API, rt, lt._dataApiClickHandler), 714 | g(window).on(Q.LOAD_DATA_API, function () { 715 | for ( 716 | var t = [].slice.call(document.querySelectorAll(st)), 717 | e = 0, 718 | n = t.length; 719 | e < n; 720 | e++ 721 | ) { 722 | var i = g(t[e]); 723 | lt._jQueryInterface.call(i, i.data()); 724 | } 725 | }), 726 | (g.fn[L] = lt._jQueryInterface), 727 | (g.fn[L].Constructor = lt), 728 | (g.fn[L].noConflict = function () { 729 | return (g.fn[L] = x), lt._jQueryInterface; 730 | }); 731 | var ct = "collapse", 732 | ht = "bs.collapse", 733 | ut = "." + ht, 734 | ft = g.fn[ct], 735 | dt = { toggle: !0, parent: "" }, 736 | gt = { toggle: "boolean", parent: "(string|element)" }, 737 | _t = { 738 | SHOW: "show" + ut, 739 | SHOWN: "shown" + ut, 740 | HIDE: "hide" + ut, 741 | HIDDEN: "hidden" + ut, 742 | CLICK_DATA_API: "click" + ut + ".data-api", 743 | }, 744 | mt = "show", 745 | pt = "collapse", 746 | vt = "collapsing", 747 | yt = "collapsed", 748 | Et = "width", 749 | Ct = "height", 750 | Tt = ".show, .collapsing", 751 | St = '[data-toggle="collapse"]', 752 | bt = (function () { 753 | function a(e, t) { 754 | (this._isTransitioning = !1), 755 | (this._element = e), 756 | (this._config = this._getConfig(t)), 757 | (this._triggerArray = [].slice.call( 758 | document.querySelectorAll( 759 | '[data-toggle="collapse"][href="#' + 760 | e.id + 761 | '"],[data-toggle="collapse"][data-target="#' + 762 | e.id + 763 | '"]' 764 | ) 765 | )); 766 | for ( 767 | var n = [].slice.call(document.querySelectorAll(St)), 768 | i = 0, 769 | o = n.length; 770 | i < o; 771 | i++ 772 | ) { 773 | var r = n[i], 774 | s = _.getSelectorFromElement(r), 775 | a = [].slice 776 | .call(document.querySelectorAll(s)) 777 | .filter(function (t) { 778 | return t === e; 779 | }); 780 | null !== s && 781 | 0 < a.length && 782 | ((this._selector = s), this._triggerArray.push(r)); 783 | } 784 | (this._parent = this._config.parent ? this._getParent() : null), 785 | this._config.parent || 786 | this._addAriaAndCollapsedClass(this._element, this._triggerArray), 787 | this._config.toggle && this.toggle(); 788 | } 789 | var t = a.prototype; 790 | return ( 791 | (t.toggle = function () { 792 | g(this._element).hasClass(mt) ? this.hide() : this.show(); 793 | }), 794 | (t.show = function () { 795 | var t, 796 | e, 797 | n = this; 798 | if ( 799 | !this._isTransitioning && 800 | !g(this._element).hasClass(mt) && 801 | (this._parent && 802 | 0 === 803 | (t = [].slice 804 | .call(this._parent.querySelectorAll(Tt)) 805 | .filter(function (t) { 806 | return "string" == typeof n._config.parent 807 | ? t.getAttribute("data-parent") === n._config.parent 808 | : t.classList.contains(pt); 809 | })).length && 810 | (t = null), 811 | !( 812 | t && 813 | (e = g(t).not(this._selector).data(ht)) && 814 | e._isTransitioning 815 | )) 816 | ) { 817 | var i = g.Event(_t.SHOW); 818 | if ((g(this._element).trigger(i), !i.isDefaultPrevented())) { 819 | t && 820 | (a._jQueryInterface.call(g(t).not(this._selector), "hide"), 821 | e || g(t).data(ht, null)); 822 | var o = this._getDimension(); 823 | g(this._element).removeClass(pt).addClass(vt), 824 | (this._element.style[o] = 0), 825 | this._triggerArray.length && 826 | g(this._triggerArray) 827 | .removeClass(yt) 828 | .attr("aria-expanded", !0), 829 | this.setTransitioning(!0); 830 | var r = "scroll" + (o[0].toUpperCase() + o.slice(1)), 831 | s = _.getTransitionDurationFromElement(this._element); 832 | g(this._element) 833 | .one(_.TRANSITION_END, function () { 834 | g(n._element).removeClass(vt).addClass(pt).addClass(mt), 835 | (n._element.style[o] = ""), 836 | n.setTransitioning(!1), 837 | g(n._element).trigger(_t.SHOWN); 838 | }) 839 | .emulateTransitionEnd(s), 840 | (this._element.style[o] = this._element[r] + "px"); 841 | } 842 | } 843 | }), 844 | (t.hide = function () { 845 | var t = this; 846 | if (!this._isTransitioning && g(this._element).hasClass(mt)) { 847 | var e = g.Event(_t.HIDE); 848 | if ((g(this._element).trigger(e), !e.isDefaultPrevented())) { 849 | var n = this._getDimension(); 850 | (this._element.style[n] = 851 | this._element.getBoundingClientRect()[n] + "px"), 852 | _.reflow(this._element), 853 | g(this._element).addClass(vt).removeClass(pt).removeClass(mt); 854 | var i = this._triggerArray.length; 855 | if (0 < i) 856 | for (var o = 0; o < i; o++) { 857 | var r = this._triggerArray[o], 858 | s = _.getSelectorFromElement(r); 859 | if (null !== s) 860 | g([].slice.call(document.querySelectorAll(s))).hasClass( 861 | mt 862 | ) || g(r).addClass(yt).attr("aria-expanded", !1); 863 | } 864 | this.setTransitioning(!0); 865 | this._element.style[n] = ""; 866 | var a = _.getTransitionDurationFromElement(this._element); 867 | g(this._element) 868 | .one(_.TRANSITION_END, function () { 869 | t.setTransitioning(!1), 870 | g(t._element) 871 | .removeClass(vt) 872 | .addClass(pt) 873 | .trigger(_t.HIDDEN); 874 | }) 875 | .emulateTransitionEnd(a); 876 | } 877 | } 878 | }), 879 | (t.setTransitioning = function (t) { 880 | this._isTransitioning = t; 881 | }), 882 | (t.dispose = function () { 883 | g.removeData(this._element, ht), 884 | (this._config = null), 885 | (this._parent = null), 886 | (this._element = null), 887 | (this._triggerArray = null), 888 | (this._isTransitioning = null); 889 | }), 890 | (t._getConfig = function (t) { 891 | return ( 892 | ((t = l({}, dt, t)).toggle = Boolean(t.toggle)), 893 | _.typeCheckConfig(ct, t, gt), 894 | t 895 | ); 896 | }), 897 | (t._getDimension = function () { 898 | return g(this._element).hasClass(Et) ? Et : Ct; 899 | }), 900 | (t._getParent = function () { 901 | var t, 902 | n = this; 903 | _.isElement(this._config.parent) 904 | ? ((t = this._config.parent), 905 | "undefined" != typeof this._config.parent.jquery && 906 | (t = this._config.parent[0])) 907 | : (t = document.querySelector(this._config.parent)); 908 | var e = 909 | '[data-toggle="collapse"][data-parent="' + 910 | this._config.parent + 911 | '"]', 912 | i = [].slice.call(t.querySelectorAll(e)); 913 | return ( 914 | g(i).each(function (t, e) { 915 | n._addAriaAndCollapsedClass(a._getTargetFromElement(e), [e]); 916 | }), 917 | t 918 | ); 919 | }), 920 | (t._addAriaAndCollapsedClass = function (t, e) { 921 | var n = g(t).hasClass(mt); 922 | e.length && g(e).toggleClass(yt, !n).attr("aria-expanded", n); 923 | }), 924 | (a._getTargetFromElement = function (t) { 925 | var e = _.getSelectorFromElement(t); 926 | return e ? document.querySelector(e) : null; 927 | }), 928 | (a._jQueryInterface = function (i) { 929 | return this.each(function () { 930 | var t = g(this), 931 | e = t.data(ht), 932 | n = l({}, dt, t.data(), "object" == typeof i && i ? i : {}); 933 | if ( 934 | (!e && n.toggle && /show|hide/.test(i) && (n.toggle = !1), 935 | e || ((e = new a(this, n)), t.data(ht, e)), 936 | "string" == typeof i) 937 | ) { 938 | if ("undefined" == typeof e[i]) 939 | throw new TypeError('No method named "' + i + '"'); 940 | e[i](); 941 | } 942 | }); 943 | }), 944 | s(a, null, [ 945 | { 946 | key: "VERSION", 947 | get: function () { 948 | return "4.3.1"; 949 | }, 950 | }, 951 | { 952 | key: "Default", 953 | get: function () { 954 | return dt; 955 | }, 956 | }, 957 | ]), 958 | a 959 | ); 960 | })(); 961 | g(document).on(_t.CLICK_DATA_API, St, function (t) { 962 | "A" === t.currentTarget.tagName && t.preventDefault(); 963 | var n = g(this), 964 | e = _.getSelectorFromElement(this), 965 | i = [].slice.call(document.querySelectorAll(e)); 966 | g(i).each(function () { 967 | var t = g(this), 968 | e = t.data(ht) ? "toggle" : n.data(); 969 | bt._jQueryInterface.call(t, e); 970 | }); 971 | }), 972 | (g.fn[ct] = bt._jQueryInterface), 973 | (g.fn[ct].Constructor = bt), 974 | (g.fn[ct].noConflict = function () { 975 | return (g.fn[ct] = ft), bt._jQueryInterface; 976 | }); 977 | var It = "dropdown", 978 | Dt = "bs.dropdown", 979 | wt = "." + Dt, 980 | At = ".data-api", 981 | Nt = g.fn[It], 982 | Ot = new RegExp("38|40|27"), 983 | kt = { 984 | HIDE: "hide" + wt, 985 | HIDDEN: "hidden" + wt, 986 | SHOW: "show" + wt, 987 | SHOWN: "shown" + wt, 988 | CLICK: "click" + wt, 989 | CLICK_DATA_API: "click" + wt + At, 990 | KEYDOWN_DATA_API: "keydown" + wt + At, 991 | KEYUP_DATA_API: "keyup" + wt + At, 992 | }, 993 | Pt = "disabled", 994 | Lt = "show", 995 | jt = "dropup", 996 | Ht = "dropright", 997 | Rt = "dropleft", 998 | xt = "dropdown-menu-right", 999 | Ft = "position-static", 1000 | Ut = '[data-toggle="dropdown"]', 1001 | Wt = ".dropdown form", 1002 | qt = ".dropdown-menu", 1003 | Mt = ".navbar-nav", 1004 | Kt = ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)", 1005 | Qt = "top-start", 1006 | Bt = "top-end", 1007 | Vt = "bottom-start", 1008 | Yt = "bottom-end", 1009 | zt = "right-start", 1010 | Xt = "left-start", 1011 | $t = { 1012 | offset: 0, 1013 | flip: !0, 1014 | boundary: "scrollParent", 1015 | reference: "toggle", 1016 | display: "dynamic", 1017 | }, 1018 | Gt = { 1019 | offset: "(number|string|function)", 1020 | flip: "boolean", 1021 | boundary: "(string|element)", 1022 | reference: "(string|element)", 1023 | display: "string", 1024 | }, 1025 | Jt = (function () { 1026 | function c(t, e) { 1027 | (this._element = t), 1028 | (this._popper = null), 1029 | (this._config = this._getConfig(e)), 1030 | (this._menu = this._getMenuElement()), 1031 | (this._inNavbar = this._detectNavbar()), 1032 | this._addEventListeners(); 1033 | } 1034 | var t = c.prototype; 1035 | return ( 1036 | (t.toggle = function () { 1037 | if (!this._element.disabled && !g(this._element).hasClass(Pt)) { 1038 | var t = c._getParentFromElement(this._element), 1039 | e = g(this._menu).hasClass(Lt); 1040 | if ((c._clearMenus(), !e)) { 1041 | var n = { relatedTarget: this._element }, 1042 | i = g.Event(kt.SHOW, n); 1043 | if ((g(t).trigger(i), !i.isDefaultPrevented())) { 1044 | if (!this._inNavbar) { 1045 | if ("undefined" == typeof u) 1046 | throw new TypeError( 1047 | "Bootstrap's dropdowns require Popper.js (https://popper.js.org/)" 1048 | ); 1049 | var o = this._element; 1050 | "parent" === this._config.reference 1051 | ? (o = t) 1052 | : _.isElement(this._config.reference) && 1053 | ((o = this._config.reference), 1054 | "undefined" != typeof this._config.reference.jquery && 1055 | (o = this._config.reference[0])), 1056 | "scrollParent" !== this._config.boundary && 1057 | g(t).addClass(Ft), 1058 | (this._popper = new u( 1059 | o, 1060 | this._menu, 1061 | this._getPopperConfig() 1062 | )); 1063 | } 1064 | "ontouchstart" in document.documentElement && 1065 | 0 === g(t).closest(Mt).length && 1066 | g(document.body).children().on("mouseover", null, g.noop), 1067 | this._element.focus(), 1068 | this._element.setAttribute("aria-expanded", !0), 1069 | g(this._menu).toggleClass(Lt), 1070 | g(t).toggleClass(Lt).trigger(g.Event(kt.SHOWN, n)); 1071 | } 1072 | } 1073 | } 1074 | }), 1075 | (t.show = function () { 1076 | if ( 1077 | !( 1078 | this._element.disabled || 1079 | g(this._element).hasClass(Pt) || 1080 | g(this._menu).hasClass(Lt) 1081 | ) 1082 | ) { 1083 | var t = { relatedTarget: this._element }, 1084 | e = g.Event(kt.SHOW, t), 1085 | n = c._getParentFromElement(this._element); 1086 | g(n).trigger(e), 1087 | e.isDefaultPrevented() || 1088 | (g(this._menu).toggleClass(Lt), 1089 | g(n).toggleClass(Lt).trigger(g.Event(kt.SHOWN, t))); 1090 | } 1091 | }), 1092 | (t.hide = function () { 1093 | if ( 1094 | !this._element.disabled && 1095 | !g(this._element).hasClass(Pt) && 1096 | g(this._menu).hasClass(Lt) 1097 | ) { 1098 | var t = { relatedTarget: this._element }, 1099 | e = g.Event(kt.HIDE, t), 1100 | n = c._getParentFromElement(this._element); 1101 | g(n).trigger(e), 1102 | e.isDefaultPrevented() || 1103 | (g(this._menu).toggleClass(Lt), 1104 | g(n).toggleClass(Lt).trigger(g.Event(kt.HIDDEN, t))); 1105 | } 1106 | }), 1107 | (t.dispose = function () { 1108 | g.removeData(this._element, Dt), 1109 | g(this._element).off(wt), 1110 | (this._element = null), 1111 | (this._menu = null) !== this._popper && 1112 | (this._popper.destroy(), (this._popper = null)); 1113 | }), 1114 | (t.update = function () { 1115 | (this._inNavbar = this._detectNavbar()), 1116 | null !== this._popper && this._popper.scheduleUpdate(); 1117 | }), 1118 | (t._addEventListeners = function () { 1119 | var e = this; 1120 | g(this._element).on(kt.CLICK, function (t) { 1121 | t.preventDefault(), t.stopPropagation(), e.toggle(); 1122 | }); 1123 | }), 1124 | (t._getConfig = function (t) { 1125 | return ( 1126 | (t = l({}, this.constructor.Default, g(this._element).data(), t)), 1127 | _.typeCheckConfig(It, t, this.constructor.DefaultType), 1128 | t 1129 | ); 1130 | }), 1131 | (t._getMenuElement = function () { 1132 | if (!this._menu) { 1133 | var t = c._getParentFromElement(this._element); 1134 | t && (this._menu = t.querySelector(qt)); 1135 | } 1136 | return this._menu; 1137 | }), 1138 | (t._getPlacement = function () { 1139 | var t = g(this._element.parentNode), 1140 | e = Vt; 1141 | return ( 1142 | t.hasClass(jt) 1143 | ? ((e = Qt), g(this._menu).hasClass(xt) && (e = Bt)) 1144 | : t.hasClass(Ht) 1145 | ? (e = zt) 1146 | : t.hasClass(Rt) 1147 | ? (e = Xt) 1148 | : g(this._menu).hasClass(xt) && (e = Yt), 1149 | e 1150 | ); 1151 | }), 1152 | (t._detectNavbar = function () { 1153 | return 0 < g(this._element).closest(".navbar").length; 1154 | }), 1155 | (t._getOffset = function () { 1156 | var e = this, 1157 | t = {}; 1158 | return ( 1159 | "function" == typeof this._config.offset 1160 | ? (t.fn = function (t) { 1161 | return ( 1162 | (t.offsets = l( 1163 | {}, 1164 | t.offsets, 1165 | e._config.offset(t.offsets, e._element) || {} 1166 | )), 1167 | t 1168 | ); 1169 | }) 1170 | : (t.offset = this._config.offset), 1171 | t 1172 | ); 1173 | }), 1174 | (t._getPopperConfig = function () { 1175 | var t = { 1176 | placement: this._getPlacement(), 1177 | modifiers: { 1178 | offset: this._getOffset(), 1179 | flip: { enabled: this._config.flip }, 1180 | preventOverflow: { boundariesElement: this._config.boundary }, 1181 | }, 1182 | }; 1183 | return ( 1184 | "static" === this._config.display && 1185 | (t.modifiers.applyStyle = { enabled: !1 }), 1186 | t 1187 | ); 1188 | }), 1189 | (c._jQueryInterface = function (e) { 1190 | return this.each(function () { 1191 | var t = g(this).data(Dt); 1192 | if ( 1193 | (t || 1194 | ((t = new c(this, "object" == typeof e ? e : null)), 1195 | g(this).data(Dt, t)), 1196 | "string" == typeof e) 1197 | ) { 1198 | if ("undefined" == typeof t[e]) 1199 | throw new TypeError('No method named "' + e + '"'); 1200 | t[e](); 1201 | } 1202 | }); 1203 | }), 1204 | (c._clearMenus = function (t) { 1205 | if (!t || (3 !== t.which && ("keyup" !== t.type || 9 === t.which))) 1206 | for ( 1207 | var e = [].slice.call(document.querySelectorAll(Ut)), 1208 | n = 0, 1209 | i = e.length; 1210 | n < i; 1211 | n++ 1212 | ) { 1213 | var o = c._getParentFromElement(e[n]), 1214 | r = g(e[n]).data(Dt), 1215 | s = { relatedTarget: e[n] }; 1216 | if ((t && "click" === t.type && (s.clickEvent = t), r)) { 1217 | var a = r._menu; 1218 | if ( 1219 | g(o).hasClass(Lt) && 1220 | !( 1221 | t && 1222 | (("click" === t.type && 1223 | /input|textarea/i.test(t.target.tagName)) || 1224 | ("keyup" === t.type && 9 === t.which)) && 1225 | g.contains(o, t.target) 1226 | ) 1227 | ) { 1228 | var l = g.Event(kt.HIDE, s); 1229 | g(o).trigger(l), 1230 | l.isDefaultPrevented() || 1231 | ("ontouchstart" in document.documentElement && 1232 | g(document.body) 1233 | .children() 1234 | .off("mouseover", null, g.noop), 1235 | e[n].setAttribute("aria-expanded", "false"), 1236 | g(a).removeClass(Lt), 1237 | g(o).removeClass(Lt).trigger(g.Event(kt.HIDDEN, s))); 1238 | } 1239 | } 1240 | } 1241 | }), 1242 | (c._getParentFromElement = function (t) { 1243 | var e, 1244 | n = _.getSelectorFromElement(t); 1245 | return n && (e = document.querySelector(n)), e || t.parentNode; 1246 | }), 1247 | (c._dataApiKeydownHandler = function (t) { 1248 | if ( 1249 | (/input|textarea/i.test(t.target.tagName) 1250 | ? !( 1251 | 32 === t.which || 1252 | (27 !== t.which && 1253 | ((40 !== t.which && 38 !== t.which) || 1254 | g(t.target).closest(qt).length)) 1255 | ) 1256 | : Ot.test(t.which)) && 1257 | (t.preventDefault(), 1258 | t.stopPropagation(), 1259 | !this.disabled && !g(this).hasClass(Pt)) 1260 | ) { 1261 | var e = c._getParentFromElement(this), 1262 | n = g(e).hasClass(Lt); 1263 | if (n && (!n || (27 !== t.which && 32 !== t.which))) { 1264 | var i = [].slice.call(e.querySelectorAll(Kt)); 1265 | if (0 !== i.length) { 1266 | var o = i.indexOf(t.target); 1267 | 38 === t.which && 0 < o && o--, 1268 | 40 === t.which && o < i.length - 1 && o++, 1269 | o < 0 && (o = 0), 1270 | i[o].focus(); 1271 | } 1272 | } else { 1273 | if (27 === t.which) { 1274 | var r = e.querySelector(Ut); 1275 | g(r).trigger("focus"); 1276 | } 1277 | g(this).trigger("click"); 1278 | } 1279 | } 1280 | }), 1281 | s(c, null, [ 1282 | { 1283 | key: "VERSION", 1284 | get: function () { 1285 | return "4.3.1"; 1286 | }, 1287 | }, 1288 | { 1289 | key: "Default", 1290 | get: function () { 1291 | return $t; 1292 | }, 1293 | }, 1294 | { 1295 | key: "DefaultType", 1296 | get: function () { 1297 | return Gt; 1298 | }, 1299 | }, 1300 | ]), 1301 | c 1302 | ); 1303 | })(); 1304 | g(document) 1305 | .on(kt.KEYDOWN_DATA_API, Ut, Jt._dataApiKeydownHandler) 1306 | .on(kt.KEYDOWN_DATA_API, qt, Jt._dataApiKeydownHandler) 1307 | .on(kt.CLICK_DATA_API + " " + kt.KEYUP_DATA_API, Jt._clearMenus) 1308 | .on(kt.CLICK_DATA_API, Ut, function (t) { 1309 | t.preventDefault(), 1310 | t.stopPropagation(), 1311 | Jt._jQueryInterface.call(g(this), "toggle"); 1312 | }) 1313 | .on(kt.CLICK_DATA_API, Wt, function (t) { 1314 | t.stopPropagation(); 1315 | }), 1316 | (g.fn[It] = Jt._jQueryInterface), 1317 | (g.fn[It].Constructor = Jt), 1318 | (g.fn[It].noConflict = function () { 1319 | return (g.fn[It] = Nt), Jt._jQueryInterface; 1320 | }); 1321 | var Zt = "modal", 1322 | te = "bs.modal", 1323 | ee = "." + te, 1324 | ne = g.fn[Zt], 1325 | ie = { backdrop: !0, keyboard: !0, focus: !0, show: !0 }, 1326 | oe = { 1327 | backdrop: "(boolean|string)", 1328 | keyboard: "boolean", 1329 | focus: "boolean", 1330 | show: "boolean", 1331 | }, 1332 | re = { 1333 | HIDE: "hide" + ee, 1334 | HIDDEN: "hidden" + ee, 1335 | SHOW: "show" + ee, 1336 | SHOWN: "shown" + ee, 1337 | FOCUSIN: "focusin" + ee, 1338 | RESIZE: "resize" + ee, 1339 | CLICK_DISMISS: "click.dismiss" + ee, 1340 | KEYDOWN_DISMISS: "keydown.dismiss" + ee, 1341 | MOUSEUP_DISMISS: "mouseup.dismiss" + ee, 1342 | MOUSEDOWN_DISMISS: "mousedown.dismiss" + ee, 1343 | CLICK_DATA_API: "click" + ee + ".data-api", 1344 | }, 1345 | se = "modal-dialog-scrollable", 1346 | ae = "modal-scrollbar-measure", 1347 | le = "modal-backdrop", 1348 | ce = "modal-open", 1349 | he = "fade", 1350 | ue = "show", 1351 | fe = ".modal-dialog", 1352 | de = ".modal-body", 1353 | ge = '[data-toggle="modal"]', 1354 | _e = '[data-dismiss="modal"]', 1355 | me = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top", 1356 | pe = ".sticky-top", 1357 | ve = (function () { 1358 | function o(t, e) { 1359 | (this._config = this._getConfig(e)), 1360 | (this._element = t), 1361 | (this._dialog = t.querySelector(fe)), 1362 | (this._backdrop = null), 1363 | (this._isShown = !1), 1364 | (this._isBodyOverflowing = !1), 1365 | (this._ignoreBackdropClick = !1), 1366 | (this._isTransitioning = !1), 1367 | (this._scrollbarWidth = 0); 1368 | } 1369 | var t = o.prototype; 1370 | return ( 1371 | (t.toggle = function (t) { 1372 | return this._isShown ? this.hide() : this.show(t); 1373 | }), 1374 | (t.show = function (t) { 1375 | var e = this; 1376 | if (!this._isShown && !this._isTransitioning) { 1377 | g(this._element).hasClass(he) && (this._isTransitioning = !0); 1378 | var n = g.Event(re.SHOW, { relatedTarget: t }); 1379 | g(this._element).trigger(n), 1380 | this._isShown || 1381 | n.isDefaultPrevented() || 1382 | ((this._isShown = !0), 1383 | this._checkScrollbar(), 1384 | this._setScrollbar(), 1385 | this._adjustDialog(), 1386 | this._setEscapeEvent(), 1387 | this._setResizeEvent(), 1388 | g(this._element).on(re.CLICK_DISMISS, _e, function (t) { 1389 | return e.hide(t); 1390 | }), 1391 | g(this._dialog).on(re.MOUSEDOWN_DISMISS, function () { 1392 | g(e._element).one(re.MOUSEUP_DISMISS, function (t) { 1393 | g(t.target).is(e._element) && (e._ignoreBackdropClick = !0); 1394 | }); 1395 | }), 1396 | this._showBackdrop(function () { 1397 | return e._showElement(t); 1398 | })); 1399 | } 1400 | }), 1401 | (t.hide = function (t) { 1402 | var e = this; 1403 | if ( 1404 | (t && t.preventDefault(), this._isShown && !this._isTransitioning) 1405 | ) { 1406 | var n = g.Event(re.HIDE); 1407 | if ( 1408 | (g(this._element).trigger(n), 1409 | this._isShown && !n.isDefaultPrevented()) 1410 | ) { 1411 | this._isShown = !1; 1412 | var i = g(this._element).hasClass(he); 1413 | if ( 1414 | (i && (this._isTransitioning = !0), 1415 | this._setEscapeEvent(), 1416 | this._setResizeEvent(), 1417 | g(document).off(re.FOCUSIN), 1418 | g(this._element).removeClass(ue), 1419 | g(this._element).off(re.CLICK_DISMISS), 1420 | g(this._dialog).off(re.MOUSEDOWN_DISMISS), 1421 | i) 1422 | ) { 1423 | var o = _.getTransitionDurationFromElement(this._element); 1424 | g(this._element) 1425 | .one(_.TRANSITION_END, function (t) { 1426 | return e._hideModal(t); 1427 | }) 1428 | .emulateTransitionEnd(o); 1429 | } else this._hideModal(); 1430 | } 1431 | } 1432 | }), 1433 | (t.dispose = function () { 1434 | [window, this._element, this._dialog].forEach(function (t) { 1435 | return g(t).off(ee); 1436 | }), 1437 | g(document).off(re.FOCUSIN), 1438 | g.removeData(this._element, te), 1439 | (this._config = null), 1440 | (this._element = null), 1441 | (this._dialog = null), 1442 | (this._backdrop = null), 1443 | (this._isShown = null), 1444 | (this._isBodyOverflowing = null), 1445 | (this._ignoreBackdropClick = null), 1446 | (this._isTransitioning = null), 1447 | (this._scrollbarWidth = null); 1448 | }), 1449 | (t.handleUpdate = function () { 1450 | this._adjustDialog(); 1451 | }), 1452 | (t._getConfig = function (t) { 1453 | return (t = l({}, ie, t)), _.typeCheckConfig(Zt, t, oe), t; 1454 | }), 1455 | (t._showElement = function (t) { 1456 | var e = this, 1457 | n = g(this._element).hasClass(he); 1458 | (this._element.parentNode && 1459 | this._element.parentNode.nodeType === Node.ELEMENT_NODE) || 1460 | document.body.appendChild(this._element), 1461 | (this._element.style.display = "block"), 1462 | this._element.removeAttribute("aria-hidden"), 1463 | this._element.setAttribute("aria-modal", !0), 1464 | g(this._dialog).hasClass(se) 1465 | ? (this._dialog.querySelector(de).scrollTop = 0) 1466 | : (this._element.scrollTop = 0), 1467 | n && _.reflow(this._element), 1468 | g(this._element).addClass(ue), 1469 | this._config.focus && this._enforceFocus(); 1470 | var i = g.Event(re.SHOWN, { relatedTarget: t }), 1471 | o = function () { 1472 | e._config.focus && e._element.focus(), 1473 | (e._isTransitioning = !1), 1474 | g(e._element).trigger(i); 1475 | }; 1476 | if (n) { 1477 | var r = _.getTransitionDurationFromElement(this._dialog); 1478 | g(this._dialog).one(_.TRANSITION_END, o).emulateTransitionEnd(r); 1479 | } else o(); 1480 | }), 1481 | (t._enforceFocus = function () { 1482 | var e = this; 1483 | g(document) 1484 | .off(re.FOCUSIN) 1485 | .on(re.FOCUSIN, function (t) { 1486 | document !== t.target && 1487 | e._element !== t.target && 1488 | 0 === g(e._element).has(t.target).length && 1489 | e._element.focus(); 1490 | }); 1491 | }), 1492 | (t._setEscapeEvent = function () { 1493 | var e = this; 1494 | this._isShown && this._config.keyboard 1495 | ? g(this._element).on(re.KEYDOWN_DISMISS, function (t) { 1496 | 27 === t.which && (t.preventDefault(), e.hide()); 1497 | }) 1498 | : this._isShown || g(this._element).off(re.KEYDOWN_DISMISS); 1499 | }), 1500 | (t._setResizeEvent = function () { 1501 | var e = this; 1502 | this._isShown 1503 | ? g(window).on(re.RESIZE, function (t) { 1504 | return e.handleUpdate(t); 1505 | }) 1506 | : g(window).off(re.RESIZE); 1507 | }), 1508 | (t._hideModal = function () { 1509 | var t = this; 1510 | (this._element.style.display = "none"), 1511 | this._element.setAttribute("aria-hidden", !0), 1512 | this._element.removeAttribute("aria-modal"), 1513 | (this._isTransitioning = !1), 1514 | this._showBackdrop(function () { 1515 | g(document.body).removeClass(ce), 1516 | t._resetAdjustments(), 1517 | t._resetScrollbar(), 1518 | g(t._element).trigger(re.HIDDEN); 1519 | }); 1520 | }), 1521 | (t._removeBackdrop = function () { 1522 | this._backdrop && 1523 | (g(this._backdrop).remove(), (this._backdrop = null)); 1524 | }), 1525 | (t._showBackdrop = function (t) { 1526 | var e = this, 1527 | n = g(this._element).hasClass(he) ? he : ""; 1528 | if (this._isShown && this._config.backdrop) { 1529 | if ( 1530 | ((this._backdrop = document.createElement("div")), 1531 | (this._backdrop.className = le), 1532 | n && this._backdrop.classList.add(n), 1533 | g(this._backdrop).appendTo(document.body), 1534 | g(this._element).on(re.CLICK_DISMISS, function (t) { 1535 | e._ignoreBackdropClick 1536 | ? (e._ignoreBackdropClick = !1) 1537 | : t.target === t.currentTarget && 1538 | ("static" === e._config.backdrop 1539 | ? e._element.focus() 1540 | : e.hide()); 1541 | }), 1542 | n && _.reflow(this._backdrop), 1543 | g(this._backdrop).addClass(ue), 1544 | !t) 1545 | ) 1546 | return; 1547 | if (!n) return void t(); 1548 | var i = _.getTransitionDurationFromElement(this._backdrop); 1549 | g(this._backdrop).one(_.TRANSITION_END, t).emulateTransitionEnd(i); 1550 | } else if (!this._isShown && this._backdrop) { 1551 | g(this._backdrop).removeClass(ue); 1552 | var o = function () { 1553 | e._removeBackdrop(), t && t(); 1554 | }; 1555 | if (g(this._element).hasClass(he)) { 1556 | var r = _.getTransitionDurationFromElement(this._backdrop); 1557 | g(this._backdrop) 1558 | .one(_.TRANSITION_END, o) 1559 | .emulateTransitionEnd(r); 1560 | } else o(); 1561 | } else t && t(); 1562 | }), 1563 | (t._adjustDialog = function () { 1564 | var t = 1565 | this._element.scrollHeight > document.documentElement.clientHeight; 1566 | !this._isBodyOverflowing && 1567 | t && 1568 | (this._element.style.paddingLeft = this._scrollbarWidth + "px"), 1569 | this._isBodyOverflowing && 1570 | !t && 1571 | (this._element.style.paddingRight = this._scrollbarWidth + "px"); 1572 | }), 1573 | (t._resetAdjustments = function () { 1574 | (this._element.style.paddingLeft = ""), 1575 | (this._element.style.paddingRight = ""); 1576 | }), 1577 | (t._checkScrollbar = function () { 1578 | var t = document.body.getBoundingClientRect(); 1579 | (this._isBodyOverflowing = t.left + t.right < window.innerWidth), 1580 | (this._scrollbarWidth = this._getScrollbarWidth()); 1581 | }), 1582 | (t._setScrollbar = function () { 1583 | var o = this; 1584 | if (this._isBodyOverflowing) { 1585 | var t = [].slice.call(document.querySelectorAll(me)), 1586 | e = [].slice.call(document.querySelectorAll(pe)); 1587 | g(t).each(function (t, e) { 1588 | var n = e.style.paddingRight, 1589 | i = g(e).css("padding-right"); 1590 | g(e) 1591 | .data("padding-right", n) 1592 | .css("padding-right", parseFloat(i) + o._scrollbarWidth + "px"); 1593 | }), 1594 | g(e).each(function (t, e) { 1595 | var n = e.style.marginRight, 1596 | i = g(e).css("margin-right"); 1597 | g(e) 1598 | .data("margin-right", n) 1599 | .css( 1600 | "margin-right", 1601 | parseFloat(i) - o._scrollbarWidth + "px" 1602 | ); 1603 | }); 1604 | var n = document.body.style.paddingRight, 1605 | i = g(document.body).css("padding-right"); 1606 | g(document.body) 1607 | .data("padding-right", n) 1608 | .css( 1609 | "padding-right", 1610 | parseFloat(i) + this._scrollbarWidth + "px" 1611 | ); 1612 | } 1613 | g(document.body).addClass(ce); 1614 | }), 1615 | (t._resetScrollbar = function () { 1616 | var t = [].slice.call(document.querySelectorAll(me)); 1617 | g(t).each(function (t, e) { 1618 | var n = g(e).data("padding-right"); 1619 | g(e).removeData("padding-right"), (e.style.paddingRight = n || ""); 1620 | }); 1621 | var e = [].slice.call(document.querySelectorAll("" + pe)); 1622 | g(e).each(function (t, e) { 1623 | var n = g(e).data("margin-right"); 1624 | "undefined" != typeof n && 1625 | g(e).css("margin-right", n).removeData("margin-right"); 1626 | }); 1627 | var n = g(document.body).data("padding-right"); 1628 | g(document.body).removeData("padding-right"), 1629 | (document.body.style.paddingRight = n || ""); 1630 | }), 1631 | (t._getScrollbarWidth = function () { 1632 | var t = document.createElement("div"); 1633 | (t.className = ae), document.body.appendChild(t); 1634 | var e = t.getBoundingClientRect().width - t.clientWidth; 1635 | return document.body.removeChild(t), e; 1636 | }), 1637 | (o._jQueryInterface = function (n, i) { 1638 | return this.each(function () { 1639 | var t = g(this).data(te), 1640 | e = l({}, ie, g(this).data(), "object" == typeof n && n ? n : {}); 1641 | if ( 1642 | (t || ((t = new o(this, e)), g(this).data(te, t)), 1643 | "string" == typeof n) 1644 | ) { 1645 | if ("undefined" == typeof t[n]) 1646 | throw new TypeError('No method named "' + n + '"'); 1647 | t[n](i); 1648 | } else e.show && t.show(i); 1649 | }); 1650 | }), 1651 | s(o, null, [ 1652 | { 1653 | key: "VERSION", 1654 | get: function () { 1655 | return "4.3.1"; 1656 | }, 1657 | }, 1658 | { 1659 | key: "Default", 1660 | get: function () { 1661 | return ie; 1662 | }, 1663 | }, 1664 | ]), 1665 | o 1666 | ); 1667 | })(); 1668 | g(document).on(re.CLICK_DATA_API, ge, function (t) { 1669 | var e, 1670 | n = this, 1671 | i = _.getSelectorFromElement(this); 1672 | i && (e = document.querySelector(i)); 1673 | var o = g(e).data(te) ? "toggle" : l({}, g(e).data(), g(this).data()); 1674 | ("A" !== this.tagName && "AREA" !== this.tagName) || t.preventDefault(); 1675 | var r = g(e).one(re.SHOW, function (t) { 1676 | t.isDefaultPrevented() || 1677 | r.one(re.HIDDEN, function () { 1678 | g(n).is(":visible") && n.focus(); 1679 | }); 1680 | }); 1681 | ve._jQueryInterface.call(g(e), o, this); 1682 | }), 1683 | (g.fn[Zt] = ve._jQueryInterface), 1684 | (g.fn[Zt].Constructor = ve), 1685 | (g.fn[Zt].noConflict = function () { 1686 | return (g.fn[Zt] = ne), ve._jQueryInterface; 1687 | }); 1688 | var ye = [ 1689 | "background", 1690 | "cite", 1691 | "href", 1692 | "itemtype", 1693 | "longdesc", 1694 | "poster", 1695 | "src", 1696 | "xlink:href", 1697 | ], 1698 | Ee = { 1699 | "*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i], 1700 | a: ["target", "href", "title", "rel"], 1701 | area: [], 1702 | b: [], 1703 | br: [], 1704 | col: [], 1705 | code: [], 1706 | div: [], 1707 | em: [], 1708 | hr: [], 1709 | h1: [], 1710 | h2: [], 1711 | h3: [], 1712 | h4: [], 1713 | h5: [], 1714 | h6: [], 1715 | i: [], 1716 | img: ["src", "alt", "title", "width", "height"], 1717 | li: [], 1718 | ol: [], 1719 | p: [], 1720 | pre: [], 1721 | s: [], 1722 | small: [], 1723 | span: [], 1724 | sub: [], 1725 | sup: [], 1726 | strong: [], 1727 | u: [], 1728 | ul: [], 1729 | }, 1730 | Ce = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi, 1731 | Te = 1732 | /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i; 1733 | function Se(t, s, e) { 1734 | if (0 === t.length) return t; 1735 | if (e && "function" == typeof e) return e(t); 1736 | for ( 1737 | var n = new window.DOMParser().parseFromString(t, "text/html"), 1738 | a = Object.keys(s), 1739 | l = [].slice.call(n.body.querySelectorAll("*")), 1740 | i = function (t, e) { 1741 | var n = l[t], 1742 | i = n.nodeName.toLowerCase(); 1743 | if (-1 === a.indexOf(n.nodeName.toLowerCase())) 1744 | return n.parentNode.removeChild(n), "continue"; 1745 | var o = [].slice.call(n.attributes), 1746 | r = [].concat(s["*"] || [], s[i] || []); 1747 | o.forEach(function (t) { 1748 | (function (t, e) { 1749 | var n = t.nodeName.toLowerCase(); 1750 | if (-1 !== e.indexOf(n)) 1751 | return ( 1752 | -1 === ye.indexOf(n) || 1753 | Boolean(t.nodeValue.match(Ce) || t.nodeValue.match(Te)) 1754 | ); 1755 | for ( 1756 | var i = e.filter(function (t) { 1757 | return t instanceof RegExp; 1758 | }), 1759 | o = 0, 1760 | r = i.length; 1761 | o < r; 1762 | o++ 1763 | ) 1764 | if (n.match(i[o])) return !0; 1765 | return !1; 1766 | })(t, r) || n.removeAttribute(t.nodeName); 1767 | }); 1768 | }, 1769 | o = 0, 1770 | r = l.length; 1771 | o < r; 1772 | o++ 1773 | ) 1774 | i(o); 1775 | return n.body.innerHTML; 1776 | } 1777 | var be = "tooltip", 1778 | Ie = "bs.tooltip", 1779 | De = "." + Ie, 1780 | we = g.fn[be], 1781 | Ae = "bs-tooltip", 1782 | Ne = new RegExp("(^|\\s)" + Ae + "\\S+", "g"), 1783 | Oe = ["sanitize", "whiteList", "sanitizeFn"], 1784 | ke = { 1785 | animation: "boolean", 1786 | template: "string", 1787 | title: "(string|element|function)", 1788 | trigger: "string", 1789 | delay: "(number|object)", 1790 | html: "boolean", 1791 | selector: "(string|boolean)", 1792 | placement: "(string|function)", 1793 | offset: "(number|string|function)", 1794 | container: "(string|element|boolean)", 1795 | fallbackPlacement: "(string|array)", 1796 | boundary: "(string|element)", 1797 | sanitize: "boolean", 1798 | sanitizeFn: "(null|function)", 1799 | whiteList: "object", 1800 | }, 1801 | Pe = { 1802 | AUTO: "auto", 1803 | TOP: "top", 1804 | RIGHT: "right", 1805 | BOTTOM: "bottom", 1806 | LEFT: "left", 1807 | }, 1808 | Le = { 1809 | animation: !0, 1810 | template: 1811 | '', 1812 | trigger: "hover focus", 1813 | title: "", 1814 | delay: 0, 1815 | html: !1, 1816 | selector: !1, 1817 | placement: "top", 1818 | offset: 0, 1819 | container: !1, 1820 | fallbackPlacement: "flip", 1821 | boundary: "scrollParent", 1822 | sanitize: !0, 1823 | sanitizeFn: null, 1824 | whiteList: Ee, 1825 | }, 1826 | je = "show", 1827 | He = "out", 1828 | Re = { 1829 | HIDE: "hide" + De, 1830 | HIDDEN: "hidden" + De, 1831 | SHOW: "show" + De, 1832 | SHOWN: "shown" + De, 1833 | INSERTED: "inserted" + De, 1834 | CLICK: "click" + De, 1835 | FOCUSIN: "focusin" + De, 1836 | FOCUSOUT: "focusout" + De, 1837 | MOUSEENTER: "mouseenter" + De, 1838 | MOUSELEAVE: "mouseleave" + De, 1839 | }, 1840 | xe = "fade", 1841 | Fe = "show", 1842 | Ue = ".tooltip-inner", 1843 | We = ".arrow", 1844 | qe = "hover", 1845 | Me = "focus", 1846 | Ke = "click", 1847 | Qe = "manual", 1848 | Be = (function () { 1849 | function i(t, e) { 1850 | if ("undefined" == typeof u) 1851 | throw new TypeError( 1852 | "Bootstrap's tooltips require Popper.js (https://popper.js.org/)" 1853 | ); 1854 | (this._isEnabled = !0), 1855 | (this._timeout = 0), 1856 | (this._hoverState = ""), 1857 | (this._activeTrigger = {}), 1858 | (this._popper = null), 1859 | (this.element = t), 1860 | (this.config = this._getConfig(e)), 1861 | (this.tip = null), 1862 | this._setListeners(); 1863 | } 1864 | var t = i.prototype; 1865 | return ( 1866 | (t.enable = function () { 1867 | this._isEnabled = !0; 1868 | }), 1869 | (t.disable = function () { 1870 | this._isEnabled = !1; 1871 | }), 1872 | (t.toggleEnabled = function () { 1873 | this._isEnabled = !this._isEnabled; 1874 | }), 1875 | (t.toggle = function (t) { 1876 | if (this._isEnabled) 1877 | if (t) { 1878 | var e = this.constructor.DATA_KEY, 1879 | n = g(t.currentTarget).data(e); 1880 | n || 1881 | ((n = new this.constructor( 1882 | t.currentTarget, 1883 | this._getDelegateConfig() 1884 | )), 1885 | g(t.currentTarget).data(e, n)), 1886 | (n._activeTrigger.click = !n._activeTrigger.click), 1887 | n._isWithActiveTrigger() 1888 | ? n._enter(null, n) 1889 | : n._leave(null, n); 1890 | } else { 1891 | if (g(this.getTipElement()).hasClass(Fe)) 1892 | return void this._leave(null, this); 1893 | this._enter(null, this); 1894 | } 1895 | }), 1896 | (t.dispose = function () { 1897 | clearTimeout(this._timeout), 1898 | g.removeData(this.element, this.constructor.DATA_KEY), 1899 | g(this.element).off(this.constructor.EVENT_KEY), 1900 | g(this.element).closest(".modal").off("hide.bs.modal"), 1901 | this.tip && g(this.tip).remove(), 1902 | (this._isEnabled = null), 1903 | (this._timeout = null), 1904 | (this._hoverState = null), 1905 | (this._activeTrigger = null) !== this._popper && 1906 | this._popper.destroy(), 1907 | (this._popper = null), 1908 | (this.element = null), 1909 | (this.config = null), 1910 | (this.tip = null); 1911 | }), 1912 | (t.show = function () { 1913 | var e = this; 1914 | if ("none" === g(this.element).css("display")) 1915 | throw new Error("Please use show on visible elements"); 1916 | var t = g.Event(this.constructor.Event.SHOW); 1917 | if (this.isWithContent() && this._isEnabled) { 1918 | g(this.element).trigger(t); 1919 | var n = _.findShadowRoot(this.element), 1920 | i = g.contains( 1921 | null !== n ? n : this.element.ownerDocument.documentElement, 1922 | this.element 1923 | ); 1924 | if (t.isDefaultPrevented() || !i) return; 1925 | var o = this.getTipElement(), 1926 | r = _.getUID(this.constructor.NAME); 1927 | o.setAttribute("id", r), 1928 | this.element.setAttribute("aria-describedby", r), 1929 | this.setContent(), 1930 | this.config.animation && g(o).addClass(xe); 1931 | var s = 1932 | "function" == typeof this.config.placement 1933 | ? this.config.placement.call(this, o, this.element) 1934 | : this.config.placement, 1935 | a = this._getAttachment(s); 1936 | this.addAttachmentClass(a); 1937 | var l = this._getContainer(); 1938 | g(o).data(this.constructor.DATA_KEY, this), 1939 | g.contains( 1940 | this.element.ownerDocument.documentElement, 1941 | this.tip 1942 | ) || g(o).appendTo(l), 1943 | g(this.element).trigger(this.constructor.Event.INSERTED), 1944 | (this._popper = new u(this.element, o, { 1945 | placement: a, 1946 | modifiers: { 1947 | offset: this._getOffset(), 1948 | flip: { behavior: this.config.fallbackPlacement }, 1949 | arrow: { element: We }, 1950 | preventOverflow: { boundariesElement: this.config.boundary }, 1951 | }, 1952 | onCreate: function (t) { 1953 | t.originalPlacement !== t.placement && 1954 | e._handlePopperPlacementChange(t); 1955 | }, 1956 | onUpdate: function (t) { 1957 | return e._handlePopperPlacementChange(t); 1958 | }, 1959 | })), 1960 | g(o).addClass(Fe), 1961 | "ontouchstart" in document.documentElement && 1962 | g(document.body).children().on("mouseover", null, g.noop); 1963 | var c = function () { 1964 | e.config.animation && e._fixTransition(); 1965 | var t = e._hoverState; 1966 | (e._hoverState = null), 1967 | g(e.element).trigger(e.constructor.Event.SHOWN), 1968 | t === He && e._leave(null, e); 1969 | }; 1970 | if (g(this.tip).hasClass(xe)) { 1971 | var h = _.getTransitionDurationFromElement(this.tip); 1972 | g(this.tip).one(_.TRANSITION_END, c).emulateTransitionEnd(h); 1973 | } else c(); 1974 | } 1975 | }), 1976 | (t.hide = function (t) { 1977 | var e = this, 1978 | n = this.getTipElement(), 1979 | i = g.Event(this.constructor.Event.HIDE), 1980 | o = function () { 1981 | e._hoverState !== je && 1982 | n.parentNode && 1983 | n.parentNode.removeChild(n), 1984 | e._cleanTipClass(), 1985 | e.element.removeAttribute("aria-describedby"), 1986 | g(e.element).trigger(e.constructor.Event.HIDDEN), 1987 | null !== e._popper && e._popper.destroy(), 1988 | t && t(); 1989 | }; 1990 | if ((g(this.element).trigger(i), !i.isDefaultPrevented())) { 1991 | if ( 1992 | (g(n).removeClass(Fe), 1993 | "ontouchstart" in document.documentElement && 1994 | g(document.body).children().off("mouseover", null, g.noop), 1995 | (this._activeTrigger[Ke] = !1), 1996 | (this._activeTrigger[Me] = !1), 1997 | (this._activeTrigger[qe] = !1), 1998 | g(this.tip).hasClass(xe)) 1999 | ) { 2000 | var r = _.getTransitionDurationFromElement(n); 2001 | g(n).one(_.TRANSITION_END, o).emulateTransitionEnd(r); 2002 | } else o(); 2003 | this._hoverState = ""; 2004 | } 2005 | }), 2006 | (t.update = function () { 2007 | null !== this._popper && this._popper.scheduleUpdate(); 2008 | }), 2009 | (t.isWithContent = function () { 2010 | return Boolean(this.getTitle()); 2011 | }), 2012 | (t.addAttachmentClass = function (t) { 2013 | g(this.getTipElement()).addClass(Ae + "-" + t); 2014 | }), 2015 | (t.getTipElement = function () { 2016 | return (this.tip = this.tip || g(this.config.template)[0]), this.tip; 2017 | }), 2018 | (t.setContent = function () { 2019 | var t = this.getTipElement(); 2020 | this.setElementContent(g(t.querySelectorAll(Ue)), this.getTitle()), 2021 | g(t).removeClass(xe + " " + Fe); 2022 | }), 2023 | (t.setElementContent = function (t, e) { 2024 | "object" != typeof e || (!e.nodeType && !e.jquery) 2025 | ? this.config.html 2026 | ? (this.config.sanitize && 2027 | (e = Se(e, this.config.whiteList, this.config.sanitizeFn)), 2028 | t.html(e)) 2029 | : t.text(e) 2030 | : this.config.html 2031 | ? g(e).parent().is(t) || t.empty().append(e) 2032 | : t.text(g(e).text()); 2033 | }), 2034 | (t.getTitle = function () { 2035 | var t = this.element.getAttribute("data-original-title"); 2036 | return ( 2037 | t || 2038 | (t = 2039 | "function" == typeof this.config.title 2040 | ? this.config.title.call(this.element) 2041 | : this.config.title), 2042 | t 2043 | ); 2044 | }), 2045 | (t._getOffset = function () { 2046 | var e = this, 2047 | t = {}; 2048 | return ( 2049 | "function" == typeof this.config.offset 2050 | ? (t.fn = function (t) { 2051 | return ( 2052 | (t.offsets = l( 2053 | {}, 2054 | t.offsets, 2055 | e.config.offset(t.offsets, e.element) || {} 2056 | )), 2057 | t 2058 | ); 2059 | }) 2060 | : (t.offset = this.config.offset), 2061 | t 2062 | ); 2063 | }), 2064 | (t._getContainer = function () { 2065 | return !1 === this.config.container 2066 | ? document.body 2067 | : _.isElement(this.config.container) 2068 | ? g(this.config.container) 2069 | : g(document).find(this.config.container); 2070 | }), 2071 | (t._getAttachment = function (t) { 2072 | return Pe[t.toUpperCase()]; 2073 | }), 2074 | (t._setListeners = function () { 2075 | var i = this; 2076 | this.config.trigger.split(" ").forEach(function (t) { 2077 | if ("click" === t) 2078 | g(i.element).on( 2079 | i.constructor.Event.CLICK, 2080 | i.config.selector, 2081 | function (t) { 2082 | return i.toggle(t); 2083 | } 2084 | ); 2085 | else if (t !== Qe) { 2086 | var e = 2087 | t === qe 2088 | ? i.constructor.Event.MOUSEENTER 2089 | : i.constructor.Event.FOCUSIN, 2090 | n = 2091 | t === qe 2092 | ? i.constructor.Event.MOUSELEAVE 2093 | : i.constructor.Event.FOCUSOUT; 2094 | g(i.element) 2095 | .on(e, i.config.selector, function (t) { 2096 | return i._enter(t); 2097 | }) 2098 | .on(n, i.config.selector, function (t) { 2099 | return i._leave(t); 2100 | }); 2101 | } 2102 | }), 2103 | g(this.element) 2104 | .closest(".modal") 2105 | .on("hide.bs.modal", function () { 2106 | i.element && i.hide(); 2107 | }), 2108 | this.config.selector 2109 | ? (this.config = l({}, this.config, { 2110 | trigger: "manual", 2111 | selector: "", 2112 | })) 2113 | : this._fixTitle(); 2114 | }), 2115 | (t._fixTitle = function () { 2116 | var t = typeof this.element.getAttribute("data-original-title"); 2117 | (this.element.getAttribute("title") || "string" !== t) && 2118 | (this.element.setAttribute( 2119 | "data-original-title", 2120 | this.element.getAttribute("title") || "" 2121 | ), 2122 | this.element.setAttribute("title", "")); 2123 | }), 2124 | (t._enter = function (t, e) { 2125 | var n = this.constructor.DATA_KEY; 2126 | (e = e || g(t.currentTarget).data(n)) || 2127 | ((e = new this.constructor( 2128 | t.currentTarget, 2129 | this._getDelegateConfig() 2130 | )), 2131 | g(t.currentTarget).data(n, e)), 2132 | t && (e._activeTrigger["focusin" === t.type ? Me : qe] = !0), 2133 | g(e.getTipElement()).hasClass(Fe) || e._hoverState === je 2134 | ? (e._hoverState = je) 2135 | : (clearTimeout(e._timeout), 2136 | (e._hoverState = je), 2137 | e.config.delay && e.config.delay.show 2138 | ? (e._timeout = setTimeout(function () { 2139 | e._hoverState === je && e.show(); 2140 | }, e.config.delay.show)) 2141 | : e.show()); 2142 | }), 2143 | (t._leave = function (t, e) { 2144 | var n = this.constructor.DATA_KEY; 2145 | (e = e || g(t.currentTarget).data(n)) || 2146 | ((e = new this.constructor( 2147 | t.currentTarget, 2148 | this._getDelegateConfig() 2149 | )), 2150 | g(t.currentTarget).data(n, e)), 2151 | t && (e._activeTrigger["focusout" === t.type ? Me : qe] = !1), 2152 | e._isWithActiveTrigger() || 2153 | (clearTimeout(e._timeout), 2154 | (e._hoverState = He), 2155 | e.config.delay && e.config.delay.hide 2156 | ? (e._timeout = setTimeout(function () { 2157 | e._hoverState === He && e.hide(); 2158 | }, e.config.delay.hide)) 2159 | : e.hide()); 2160 | }), 2161 | (t._isWithActiveTrigger = function () { 2162 | for (var t in this._activeTrigger) 2163 | if (this._activeTrigger[t]) return !0; 2164 | return !1; 2165 | }), 2166 | (t._getConfig = function (t) { 2167 | var e = g(this.element).data(); 2168 | return ( 2169 | Object.keys(e).forEach(function (t) { 2170 | -1 !== Oe.indexOf(t) && delete e[t]; 2171 | }), 2172 | "number" == 2173 | typeof (t = l( 2174 | {}, 2175 | this.constructor.Default, 2176 | e, 2177 | "object" == typeof t && t ? t : {} 2178 | )).delay && (t.delay = { show: t.delay, hide: t.delay }), 2179 | "number" == typeof t.title && (t.title = t.title.toString()), 2180 | "number" == typeof t.content && (t.content = t.content.toString()), 2181 | _.typeCheckConfig(be, t, this.constructor.DefaultType), 2182 | t.sanitize && 2183 | (t.template = Se(t.template, t.whiteList, t.sanitizeFn)), 2184 | t 2185 | ); 2186 | }), 2187 | (t._getDelegateConfig = function () { 2188 | var t = {}; 2189 | if (this.config) 2190 | for (var e in this.config) 2191 | this.constructor.Default[e] !== this.config[e] && 2192 | (t[e] = this.config[e]); 2193 | return t; 2194 | }), 2195 | (t._cleanTipClass = function () { 2196 | var t = g(this.getTipElement()), 2197 | e = t.attr("class").match(Ne); 2198 | null !== e && e.length && t.removeClass(e.join("")); 2199 | }), 2200 | (t._handlePopperPlacementChange = function (t) { 2201 | var e = t.instance; 2202 | (this.tip = e.popper), 2203 | this._cleanTipClass(), 2204 | this.addAttachmentClass(this._getAttachment(t.placement)); 2205 | }), 2206 | (t._fixTransition = function () { 2207 | var t = this.getTipElement(), 2208 | e = this.config.animation; 2209 | null === t.getAttribute("x-placement") && 2210 | (g(t).removeClass(xe), 2211 | (this.config.animation = !1), 2212 | this.hide(), 2213 | this.show(), 2214 | (this.config.animation = e)); 2215 | }), 2216 | (i._jQueryInterface = function (n) { 2217 | return this.each(function () { 2218 | var t = g(this).data(Ie), 2219 | e = "object" == typeof n && n; 2220 | if ( 2221 | (t || !/dispose|hide/.test(n)) && 2222 | (t || ((t = new i(this, e)), g(this).data(Ie, t)), 2223 | "string" == typeof n) 2224 | ) { 2225 | if ("undefined" == typeof t[n]) 2226 | throw new TypeError('No method named "' + n + '"'); 2227 | t[n](); 2228 | } 2229 | }); 2230 | }), 2231 | s(i, null, [ 2232 | { 2233 | key: "VERSION", 2234 | get: function () { 2235 | return "4.3.1"; 2236 | }, 2237 | }, 2238 | { 2239 | key: "Default", 2240 | get: function () { 2241 | return Le; 2242 | }, 2243 | }, 2244 | { 2245 | key: "NAME", 2246 | get: function () { 2247 | return be; 2248 | }, 2249 | }, 2250 | { 2251 | key: "DATA_KEY", 2252 | get: function () { 2253 | return Ie; 2254 | }, 2255 | }, 2256 | { 2257 | key: "Event", 2258 | get: function () { 2259 | return Re; 2260 | }, 2261 | }, 2262 | { 2263 | key: "EVENT_KEY", 2264 | get: function () { 2265 | return De; 2266 | }, 2267 | }, 2268 | { 2269 | key: "DefaultType", 2270 | get: function () { 2271 | return ke; 2272 | }, 2273 | }, 2274 | ]), 2275 | i 2276 | ); 2277 | })(); 2278 | (g.fn[be] = Be._jQueryInterface), 2279 | (g.fn[be].Constructor = Be), 2280 | (g.fn[be].noConflict = function () { 2281 | return (g.fn[be] = we), Be._jQueryInterface; 2282 | }); 2283 | var Ve = "popover", 2284 | Ye = "bs.popover", 2285 | ze = "." + Ye, 2286 | Xe = g.fn[Ve], 2287 | $e = "bs-popover", 2288 | Ge = new RegExp("(^|\\s)" + $e + "\\S+", "g"), 2289 | Je = l({}, Be.Default, { 2290 | placement: "right", 2291 | trigger: "click", 2292 | content: "", 2293 | template: 2294 | '', 2295 | }), 2296 | Ze = l({}, Be.DefaultType, { content: "(string|element|function)" }), 2297 | tn = "fade", 2298 | en = "show", 2299 | nn = ".popover-header", 2300 | on = ".popover-body", 2301 | rn = { 2302 | HIDE: "hide" + ze, 2303 | HIDDEN: "hidden" + ze, 2304 | SHOW: "show" + ze, 2305 | SHOWN: "shown" + ze, 2306 | INSERTED: "inserted" + ze, 2307 | CLICK: "click" + ze, 2308 | FOCUSIN: "focusin" + ze, 2309 | FOCUSOUT: "focusout" + ze, 2310 | MOUSEENTER: "mouseenter" + ze, 2311 | MOUSELEAVE: "mouseleave" + ze, 2312 | }, 2313 | sn = (function (t) { 2314 | var e, n; 2315 | function i() { 2316 | return t.apply(this, arguments) || this; 2317 | } 2318 | (n = t), 2319 | ((e = i).prototype = Object.create(n.prototype)), 2320 | ((e.prototype.constructor = e).__proto__ = n); 2321 | var o = i.prototype; 2322 | return ( 2323 | (o.isWithContent = function () { 2324 | return this.getTitle() || this._getContent(); 2325 | }), 2326 | (o.addAttachmentClass = function (t) { 2327 | g(this.getTipElement()).addClass($e + "-" + t); 2328 | }), 2329 | (o.getTipElement = function () { 2330 | return (this.tip = this.tip || g(this.config.template)[0]), this.tip; 2331 | }), 2332 | (o.setContent = function () { 2333 | var t = g(this.getTipElement()); 2334 | this.setElementContent(t.find(nn), this.getTitle()); 2335 | var e = this._getContent(); 2336 | "function" == typeof e && (e = e.call(this.element)), 2337 | this.setElementContent(t.find(on), e), 2338 | t.removeClass(tn + " " + en); 2339 | }), 2340 | (o._getContent = function () { 2341 | return ( 2342 | this.element.getAttribute("data-content") || this.config.content 2343 | ); 2344 | }), 2345 | (o._cleanTipClass = function () { 2346 | var t = g(this.getTipElement()), 2347 | e = t.attr("class").match(Ge); 2348 | null !== e && 0 < e.length && t.removeClass(e.join("")); 2349 | }), 2350 | (i._jQueryInterface = function (n) { 2351 | return this.each(function () { 2352 | var t = g(this).data(Ye), 2353 | e = "object" == typeof n ? n : null; 2354 | if ( 2355 | (t || !/dispose|hide/.test(n)) && 2356 | (t || ((t = new i(this, e)), g(this).data(Ye, t)), 2357 | "string" == typeof n) 2358 | ) { 2359 | if ("undefined" == typeof t[n]) 2360 | throw new TypeError('No method named "' + n + '"'); 2361 | t[n](); 2362 | } 2363 | }); 2364 | }), 2365 | s(i, null, [ 2366 | { 2367 | key: "VERSION", 2368 | get: function () { 2369 | return "4.3.1"; 2370 | }, 2371 | }, 2372 | { 2373 | key: "Default", 2374 | get: function () { 2375 | return Je; 2376 | }, 2377 | }, 2378 | { 2379 | key: "NAME", 2380 | get: function () { 2381 | return Ve; 2382 | }, 2383 | }, 2384 | { 2385 | key: "DATA_KEY", 2386 | get: function () { 2387 | return Ye; 2388 | }, 2389 | }, 2390 | { 2391 | key: "Event", 2392 | get: function () { 2393 | return rn; 2394 | }, 2395 | }, 2396 | { 2397 | key: "EVENT_KEY", 2398 | get: function () { 2399 | return ze; 2400 | }, 2401 | }, 2402 | { 2403 | key: "DefaultType", 2404 | get: function () { 2405 | return Ze; 2406 | }, 2407 | }, 2408 | ]), 2409 | i 2410 | ); 2411 | })(Be); 2412 | (g.fn[Ve] = sn._jQueryInterface), 2413 | (g.fn[Ve].Constructor = sn), 2414 | (g.fn[Ve].noConflict = function () { 2415 | return (g.fn[Ve] = Xe), sn._jQueryInterface; 2416 | }); 2417 | var an = "scrollspy", 2418 | ln = "bs.scrollspy", 2419 | cn = "." + ln, 2420 | hn = g.fn[an], 2421 | un = { offset: 10, method: "auto", target: "" }, 2422 | fn = { offset: "number", method: "string", target: "(string|element)" }, 2423 | dn = { 2424 | ACTIVATE: "activate" + cn, 2425 | SCROLL: "scroll" + cn, 2426 | LOAD_DATA_API: "load" + cn + ".data-api", 2427 | }, 2428 | gn = "dropdown-item", 2429 | _n = "active", 2430 | mn = '[data-spy="scroll"]', 2431 | pn = ".nav, .list-group", 2432 | vn = ".nav-link", 2433 | yn = ".nav-item", 2434 | En = ".list-group-item", 2435 | Cn = ".dropdown", 2436 | Tn = ".dropdown-item", 2437 | Sn = ".dropdown-toggle", 2438 | bn = "offset", 2439 | In = "position", 2440 | Dn = (function () { 2441 | function n(t, e) { 2442 | var n = this; 2443 | (this._element = t), 2444 | (this._scrollElement = "BODY" === t.tagName ? window : t), 2445 | (this._config = this._getConfig(e)), 2446 | (this._selector = 2447 | this._config.target + 2448 | " " + 2449 | vn + 2450 | "," + 2451 | this._config.target + 2452 | " " + 2453 | En + 2454 | "," + 2455 | this._config.target + 2456 | " " + 2457 | Tn), 2458 | (this._offsets = []), 2459 | (this._targets = []), 2460 | (this._activeTarget = null), 2461 | (this._scrollHeight = 0), 2462 | g(this._scrollElement).on(dn.SCROLL, function (t) { 2463 | return n._process(t); 2464 | }), 2465 | this.refresh(), 2466 | this._process(); 2467 | } 2468 | var t = n.prototype; 2469 | return ( 2470 | (t.refresh = function () { 2471 | var e = this, 2472 | t = this._scrollElement === this._scrollElement.window ? bn : In, 2473 | o = "auto" === this._config.method ? t : this._config.method, 2474 | r = o === In ? this._getScrollTop() : 0; 2475 | (this._offsets = []), 2476 | (this._targets = []), 2477 | (this._scrollHeight = this._getScrollHeight()), 2478 | [].slice 2479 | .call(document.querySelectorAll(this._selector)) 2480 | .map(function (t) { 2481 | var e, 2482 | n = _.getSelectorFromElement(t); 2483 | if ((n && (e = document.querySelector(n)), e)) { 2484 | var i = e.getBoundingClientRect(); 2485 | if (i.width || i.height) return [g(e)[o]().top + r, n]; 2486 | } 2487 | return null; 2488 | }) 2489 | .filter(function (t) { 2490 | return t; 2491 | }) 2492 | .sort(function (t, e) { 2493 | return t[0] - e[0]; 2494 | }) 2495 | .forEach(function (t) { 2496 | e._offsets.push(t[0]), e._targets.push(t[1]); 2497 | }); 2498 | }), 2499 | (t.dispose = function () { 2500 | g.removeData(this._element, ln), 2501 | g(this._scrollElement).off(cn), 2502 | (this._element = null), 2503 | (this._scrollElement = null), 2504 | (this._config = null), 2505 | (this._selector = null), 2506 | (this._offsets = null), 2507 | (this._targets = null), 2508 | (this._activeTarget = null), 2509 | (this._scrollHeight = null); 2510 | }), 2511 | (t._getConfig = function (t) { 2512 | if ( 2513 | "string" != 2514 | typeof (t = l({}, un, "object" == typeof t && t ? t : {})).target 2515 | ) { 2516 | var e = g(t.target).attr("id"); 2517 | e || ((e = _.getUID(an)), g(t.target).attr("id", e)), 2518 | (t.target = "#" + e); 2519 | } 2520 | return _.typeCheckConfig(an, t, fn), t; 2521 | }), 2522 | (t._getScrollTop = function () { 2523 | return this._scrollElement === window 2524 | ? this._scrollElement.pageYOffset 2525 | : this._scrollElement.scrollTop; 2526 | }), 2527 | (t._getScrollHeight = function () { 2528 | return ( 2529 | this._scrollElement.scrollHeight || 2530 | Math.max( 2531 | document.body.scrollHeight, 2532 | document.documentElement.scrollHeight 2533 | ) 2534 | ); 2535 | }), 2536 | (t._getOffsetHeight = function () { 2537 | return this._scrollElement === window 2538 | ? window.innerHeight 2539 | : this._scrollElement.getBoundingClientRect().height; 2540 | }), 2541 | (t._process = function () { 2542 | var t = this._getScrollTop() + this._config.offset, 2543 | e = this._getScrollHeight(), 2544 | n = this._config.offset + e - this._getOffsetHeight(); 2545 | if ((this._scrollHeight !== e && this.refresh(), n <= t)) { 2546 | var i = this._targets[this._targets.length - 1]; 2547 | this._activeTarget !== i && this._activate(i); 2548 | } else { 2549 | if ( 2550 | this._activeTarget && 2551 | t < this._offsets[0] && 2552 | 0 < this._offsets[0] 2553 | ) 2554 | return (this._activeTarget = null), void this._clear(); 2555 | for (var o = this._offsets.length; o--; ) { 2556 | this._activeTarget !== this._targets[o] && 2557 | t >= this._offsets[o] && 2558 | ("undefined" == typeof this._offsets[o + 1] || 2559 | t < this._offsets[o + 1]) && 2560 | this._activate(this._targets[o]); 2561 | } 2562 | } 2563 | }), 2564 | (t._activate = function (e) { 2565 | (this._activeTarget = e), this._clear(); 2566 | var t = this._selector.split(",").map(function (t) { 2567 | return ( 2568 | t + '[data-target="' + e + '"],' + t + '[href="' + e + '"]' 2569 | ); 2570 | }), 2571 | n = g([].slice.call(document.querySelectorAll(t.join(",")))); 2572 | n.hasClass(gn) 2573 | ? (n.closest(Cn).find(Sn).addClass(_n), n.addClass(_n)) 2574 | : (n.addClass(_n), 2575 | n 2576 | .parents(pn) 2577 | .prev(vn + ", " + En) 2578 | .addClass(_n), 2579 | n.parents(pn).prev(yn).children(vn).addClass(_n)), 2580 | g(this._scrollElement).trigger(dn.ACTIVATE, { relatedTarget: e }); 2581 | }), 2582 | (t._clear = function () { 2583 | [].slice 2584 | .call(document.querySelectorAll(this._selector)) 2585 | .filter(function (t) { 2586 | return t.classList.contains(_n); 2587 | }) 2588 | .forEach(function (t) { 2589 | return t.classList.remove(_n); 2590 | }); 2591 | }), 2592 | (n._jQueryInterface = function (e) { 2593 | return this.each(function () { 2594 | var t = g(this).data(ln); 2595 | if ( 2596 | (t || 2597 | ((t = new n(this, "object" == typeof e && e)), 2598 | g(this).data(ln, t)), 2599 | "string" == typeof e) 2600 | ) { 2601 | if ("undefined" == typeof t[e]) 2602 | throw new TypeError('No method named "' + e + '"'); 2603 | t[e](); 2604 | } 2605 | }); 2606 | }), 2607 | s(n, null, [ 2608 | { 2609 | key: "VERSION", 2610 | get: function () { 2611 | return "4.3.1"; 2612 | }, 2613 | }, 2614 | { 2615 | key: "Default", 2616 | get: function () { 2617 | return un; 2618 | }, 2619 | }, 2620 | ]), 2621 | n 2622 | ); 2623 | })(); 2624 | g(window).on(dn.LOAD_DATA_API, function () { 2625 | for ( 2626 | var t = [].slice.call(document.querySelectorAll(mn)), e = t.length; 2627 | e--; 2628 | 2629 | ) { 2630 | var n = g(t[e]); 2631 | Dn._jQueryInterface.call(n, n.data()); 2632 | } 2633 | }), 2634 | (g.fn[an] = Dn._jQueryInterface), 2635 | (g.fn[an].Constructor = Dn), 2636 | (g.fn[an].noConflict = function () { 2637 | return (g.fn[an] = hn), Dn._jQueryInterface; 2638 | }); 2639 | var wn = "bs.tab", 2640 | An = "." + wn, 2641 | Nn = g.fn.tab, 2642 | On = { 2643 | HIDE: "hide" + An, 2644 | HIDDEN: "hidden" + An, 2645 | SHOW: "show" + An, 2646 | SHOWN: "shown" + An, 2647 | CLICK_DATA_API: "click" + An + ".data-api", 2648 | }, 2649 | kn = "dropdown-menu", 2650 | Pn = "active", 2651 | Ln = "disabled", 2652 | jn = "fade", 2653 | Hn = "show", 2654 | Rn = ".dropdown", 2655 | xn = ".nav, .list-group", 2656 | Fn = ".active", 2657 | Un = "> li > .active", 2658 | Wn = '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]', 2659 | qn = ".dropdown-toggle", 2660 | Mn = "> .dropdown-menu .active", 2661 | Kn = (function () { 2662 | function i(t) { 2663 | this._element = t; 2664 | } 2665 | var t = i.prototype; 2666 | return ( 2667 | (t.show = function () { 2668 | var n = this; 2669 | if ( 2670 | !( 2671 | (this._element.parentNode && 2672 | this._element.parentNode.nodeType === Node.ELEMENT_NODE && 2673 | g(this._element).hasClass(Pn)) || 2674 | g(this._element).hasClass(Ln) 2675 | ) 2676 | ) { 2677 | var t, 2678 | i, 2679 | e = g(this._element).closest(xn)[0], 2680 | o = _.getSelectorFromElement(this._element); 2681 | if (e) { 2682 | var r = "UL" === e.nodeName || "OL" === e.nodeName ? Un : Fn; 2683 | i = (i = g.makeArray(g(e).find(r)))[i.length - 1]; 2684 | } 2685 | var s = g.Event(On.HIDE, { relatedTarget: this._element }), 2686 | a = g.Event(On.SHOW, { relatedTarget: i }); 2687 | if ( 2688 | (i && g(i).trigger(s), 2689 | g(this._element).trigger(a), 2690 | !a.isDefaultPrevented() && !s.isDefaultPrevented()) 2691 | ) { 2692 | o && (t = document.querySelector(o)), 2693 | this._activate(this._element, e); 2694 | var l = function () { 2695 | var t = g.Event(On.HIDDEN, { relatedTarget: n._element }), 2696 | e = g.Event(On.SHOWN, { relatedTarget: i }); 2697 | g(i).trigger(t), g(n._element).trigger(e); 2698 | }; 2699 | t ? this._activate(t, t.parentNode, l) : l(); 2700 | } 2701 | } 2702 | }), 2703 | (t.dispose = function () { 2704 | g.removeData(this._element, wn), (this._element = null); 2705 | }), 2706 | (t._activate = function (t, e, n) { 2707 | var i = this, 2708 | o = ( 2709 | !e || ("UL" !== e.nodeName && "OL" !== e.nodeName) 2710 | ? g(e).children(Fn) 2711 | : g(e).find(Un) 2712 | )[0], 2713 | r = n && o && g(o).hasClass(jn), 2714 | s = function () { 2715 | return i._transitionComplete(t, o, n); 2716 | }; 2717 | if (o && r) { 2718 | var a = _.getTransitionDurationFromElement(o); 2719 | g(o) 2720 | .removeClass(Hn) 2721 | .one(_.TRANSITION_END, s) 2722 | .emulateTransitionEnd(a); 2723 | } else s(); 2724 | }), 2725 | (t._transitionComplete = function (t, e, n) { 2726 | if (e) { 2727 | g(e).removeClass(Pn); 2728 | var i = g(e.parentNode).find(Mn)[0]; 2729 | i && g(i).removeClass(Pn), 2730 | "tab" === e.getAttribute("role") && 2731 | e.setAttribute("aria-selected", !1); 2732 | } 2733 | if ( 2734 | (g(t).addClass(Pn), 2735 | "tab" === t.getAttribute("role") && 2736 | t.setAttribute("aria-selected", !0), 2737 | _.reflow(t), 2738 | t.classList.contains(jn) && t.classList.add(Hn), 2739 | t.parentNode && g(t.parentNode).hasClass(kn)) 2740 | ) { 2741 | var o = g(t).closest(Rn)[0]; 2742 | if (o) { 2743 | var r = [].slice.call(o.querySelectorAll(qn)); 2744 | g(r).addClass(Pn); 2745 | } 2746 | t.setAttribute("aria-expanded", !0); 2747 | } 2748 | n && n(); 2749 | }), 2750 | (i._jQueryInterface = function (n) { 2751 | return this.each(function () { 2752 | var t = g(this), 2753 | e = t.data(wn); 2754 | if ( 2755 | (e || ((e = new i(this)), t.data(wn, e)), "string" == typeof n) 2756 | ) { 2757 | if ("undefined" == typeof e[n]) 2758 | throw new TypeError('No method named "' + n + '"'); 2759 | e[n](); 2760 | } 2761 | }); 2762 | }), 2763 | s(i, null, [ 2764 | { 2765 | key: "VERSION", 2766 | get: function () { 2767 | return "4.3.1"; 2768 | }, 2769 | }, 2770 | ]), 2771 | i 2772 | ); 2773 | })(); 2774 | g(document).on(On.CLICK_DATA_API, Wn, function (t) { 2775 | t.preventDefault(), Kn._jQueryInterface.call(g(this), "show"); 2776 | }), 2777 | (g.fn.tab = Kn._jQueryInterface), 2778 | (g.fn.tab.Constructor = Kn), 2779 | (g.fn.tab.noConflict = function () { 2780 | return (g.fn.tab = Nn), Kn._jQueryInterface; 2781 | }); 2782 | var Qn = "toast", 2783 | Bn = "bs.toast", 2784 | Vn = "." + Bn, 2785 | Yn = g.fn[Qn], 2786 | zn = { 2787 | CLICK_DISMISS: "click.dismiss" + Vn, 2788 | HIDE: "hide" + Vn, 2789 | HIDDEN: "hidden" + Vn, 2790 | SHOW: "show" + Vn, 2791 | SHOWN: "shown" + Vn, 2792 | }, 2793 | Xn = "fade", 2794 | $n = "hide", 2795 | Gn = "show", 2796 | Jn = "showing", 2797 | Zn = { animation: "boolean", autohide: "boolean", delay: "number" }, 2798 | ti = { animation: !0, autohide: !0, delay: 500 }, 2799 | ei = '[data-dismiss="toast"]', 2800 | ni = (function () { 2801 | function i(t, e) { 2802 | (this._element = t), 2803 | (this._config = this._getConfig(e)), 2804 | (this._timeout = null), 2805 | this._setListeners(); 2806 | } 2807 | var t = i.prototype; 2808 | return ( 2809 | (t.show = function () { 2810 | var t = this; 2811 | g(this._element).trigger(zn.SHOW), 2812 | this._config.animation && this._element.classList.add(Xn); 2813 | var e = function () { 2814 | t._element.classList.remove(Jn), 2815 | t._element.classList.add(Gn), 2816 | g(t._element).trigger(zn.SHOWN), 2817 | t._config.autohide && t.hide(); 2818 | }; 2819 | if ( 2820 | (this._element.classList.remove($n), 2821 | this._element.classList.add(Jn), 2822 | this._config.animation) 2823 | ) { 2824 | var n = _.getTransitionDurationFromElement(this._element); 2825 | g(this._element).one(_.TRANSITION_END, e).emulateTransitionEnd(n); 2826 | } else e(); 2827 | }), 2828 | (t.hide = function (t) { 2829 | var e = this; 2830 | this._element.classList.contains(Gn) && 2831 | (g(this._element).trigger(zn.HIDE), 2832 | t 2833 | ? this._close() 2834 | : (this._timeout = setTimeout(function () { 2835 | e._close(); 2836 | }, this._config.delay))); 2837 | }), 2838 | (t.dispose = function () { 2839 | clearTimeout(this._timeout), 2840 | (this._timeout = null), 2841 | this._element.classList.contains(Gn) && 2842 | this._element.classList.remove(Gn), 2843 | g(this._element).off(zn.CLICK_DISMISS), 2844 | g.removeData(this._element, Bn), 2845 | (this._element = null), 2846 | (this._config = null); 2847 | }), 2848 | (t._getConfig = function (t) { 2849 | return ( 2850 | (t = l( 2851 | {}, 2852 | ti, 2853 | g(this._element).data(), 2854 | "object" == typeof t && t ? t : {} 2855 | )), 2856 | _.typeCheckConfig(Qn, t, this.constructor.DefaultType), 2857 | t 2858 | ); 2859 | }), 2860 | (t._setListeners = function () { 2861 | var t = this; 2862 | g(this._element).on(zn.CLICK_DISMISS, ei, function () { 2863 | return t.hide(!0); 2864 | }); 2865 | }), 2866 | (t._close = function () { 2867 | var t = this, 2868 | e = function () { 2869 | t._element.classList.add($n), g(t._element).trigger(zn.HIDDEN); 2870 | }; 2871 | if ((this._element.classList.remove(Gn), this._config.animation)) { 2872 | var n = _.getTransitionDurationFromElement(this._element); 2873 | g(this._element).one(_.TRANSITION_END, e).emulateTransitionEnd(n); 2874 | } else e(); 2875 | }), 2876 | (i._jQueryInterface = function (n) { 2877 | return this.each(function () { 2878 | var t = g(this), 2879 | e = t.data(Bn); 2880 | if ( 2881 | (e || 2882 | ((e = new i(this, "object" == typeof n && n)), t.data(Bn, e)), 2883 | "string" == typeof n) 2884 | ) { 2885 | if ("undefined" == typeof e[n]) 2886 | throw new TypeError('No method named "' + n + '"'); 2887 | e[n](this); 2888 | } 2889 | }); 2890 | }), 2891 | s(i, null, [ 2892 | { 2893 | key: "VERSION", 2894 | get: function () { 2895 | return "4.3.1"; 2896 | }, 2897 | }, 2898 | { 2899 | key: "DefaultType", 2900 | get: function () { 2901 | return Zn; 2902 | }, 2903 | }, 2904 | { 2905 | key: "Default", 2906 | get: function () { 2907 | return ti; 2908 | }, 2909 | }, 2910 | ]), 2911 | i 2912 | ); 2913 | })(); 2914 | (g.fn[Qn] = ni._jQueryInterface), 2915 | (g.fn[Qn].Constructor = ni), 2916 | (g.fn[Qn].noConflict = function () { 2917 | return (g.fn[Qn] = Yn), ni._jQueryInterface; 2918 | }), 2919 | (function () { 2920 | if ("undefined" == typeof g) 2921 | throw new TypeError( 2922 | "Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript." 2923 | ); 2924 | var t = g.fn.jquery.split(" ")[0].split("."); 2925 | if ( 2926 | (t[0] < 2 && t[1] < 9) || 2927 | (1 === t[0] && 9 === t[1] && t[2] < 1) || 2928 | 4 <= t[0] 2929 | ) 2930 | throw new Error( 2931 | "Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0" 2932 | ); 2933 | })(), 2934 | (t.Util = _), 2935 | (t.Alert = p), 2936 | (t.Button = P), 2937 | (t.Carousel = lt), 2938 | (t.Collapse = bt), 2939 | (t.Dropdown = Jt), 2940 | (t.Modal = ve), 2941 | (t.Popover = sn), 2942 | (t.Scrollspy = Dn), 2943 | (t.Tab = Kn), 2944 | (t.Toast = ni), 2945 | (t.Tooltip = Be), 2946 | Object.defineProperty(t, "__esModule", { value: !0 }); 2947 | }); 2948 | //# sourceMappingURL=bootstrap.min.js.map -------------------------------------------------------------------------------- /todo/static/js/popper.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) Federico Zivolo 2017 3 | Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT). 4 | */ (function (e, t) { 5 | "object" == typeof exports && "undefined" != typeof module 6 | ? (module.exports = t()) 7 | : "function" == typeof define && define.amd 8 | ? define(t) 9 | : (e.Popper = t()); 10 | })(this, function () { 11 | "use strict"; 12 | function e(e) { 13 | return e && "[object Function]" === {}.toString.call(e); 14 | } 15 | function t(e, t) { 16 | if (1 !== e.nodeType) return []; 17 | var o = getComputedStyle(e, null); 18 | return t ? o[t] : o; 19 | } 20 | function o(e) { 21 | return "HTML" === e.nodeName ? e : e.parentNode || e.host; 22 | } 23 | function n(e) { 24 | if (!e) return document.body; 25 | switch (e.nodeName) { 26 | case "HTML": 27 | case "BODY": 28 | return e.ownerDocument.body; 29 | case "#document": 30 | return e.body; 31 | } 32 | var i = t(e), 33 | r = i.overflow, 34 | p = i.overflowX, 35 | s = i.overflowY; 36 | return /(auto|scroll)/.test(r + s + p) ? e : n(o(e)); 37 | } 38 | function r(e) { 39 | var o = e && e.offsetParent, 40 | i = o && o.nodeName; 41 | return i && "BODY" !== i && "HTML" !== i 42 | ? -1 !== ["TD", "TABLE"].indexOf(o.nodeName) && 43 | "static" === t(o, "position") 44 | ? r(o) 45 | : o 46 | : e 47 | ? e.ownerDocument.documentElement 48 | : document.documentElement; 49 | } 50 | function p(e) { 51 | var t = e.nodeName; 52 | return "BODY" !== t && ("HTML" === t || r(e.firstElementChild) === e); 53 | } 54 | function s(e) { 55 | return null === e.parentNode ? e : s(e.parentNode); 56 | } 57 | function d(e, t) { 58 | if (!e || !e.nodeType || !t || !t.nodeType) return document.documentElement; 59 | var o = e.compareDocumentPosition(t) & Node.DOCUMENT_POSITION_FOLLOWING, 60 | i = o ? e : t, 61 | n = o ? t : e, 62 | a = document.createRange(); 63 | a.setStart(i, 0), a.setEnd(n, 0); 64 | var l = a.commonAncestorContainer; 65 | if ((e !== l && t !== l) || i.contains(n)) return p(l) ? l : r(l); 66 | var f = s(e); 67 | return f.host ? d(f.host, t) : d(e, s(t).host); 68 | } 69 | function a(e) { 70 | var t = 71 | 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : "top", 72 | o = "top" === t ? "scrollTop" : "scrollLeft", 73 | i = e.nodeName; 74 | if ("BODY" === i || "HTML" === i) { 75 | var n = e.ownerDocument.documentElement, 76 | r = e.ownerDocument.scrollingElement || n; 77 | return r[o]; 78 | } 79 | return e[o]; 80 | } 81 | function l(e, t) { 82 | var o = 2 < arguments.length && void 0 !== arguments[2] && arguments[2], 83 | i = a(t, "top"), 84 | n = a(t, "left"), 85 | r = o ? -1 : 1; 86 | return ( 87 | (e.top += i * r), 88 | (e.bottom += i * r), 89 | (e.left += n * r), 90 | (e.right += n * r), 91 | e 92 | ); 93 | } 94 | function f(e, t) { 95 | var o = "x" === t ? "Left" : "Top", 96 | i = "Left" == o ? "Right" : "Bottom"; 97 | return ( 98 | parseFloat(e["border" + o + "Width"], 10) + 99 | parseFloat(e["border" + i + "Width"], 10) 100 | ); 101 | } 102 | function m(e, t, o, i) { 103 | return J( 104 | t["offset" + e], 105 | t["scroll" + e], 106 | o["client" + e], 107 | o["offset" + e], 108 | o["scroll" + e], 109 | ie() 110 | ? o["offset" + e] + 111 | i["margin" + ("Height" === e ? "Top" : "Left")] + 112 | i["margin" + ("Height" === e ? "Bottom" : "Right")] 113 | : 0 114 | ); 115 | } 116 | function h() { 117 | var e = document.body, 118 | t = document.documentElement, 119 | o = ie() && getComputedStyle(t); 120 | return { height: m("Height", e, t, o), width: m("Width", e, t, o) }; 121 | } 122 | function c(e) { 123 | return se({}, e, { right: e.left + e.width, bottom: e.top + e.height }); 124 | } 125 | function g(e) { 126 | var o = {}; 127 | if (ie()) 128 | try { 129 | o = e.getBoundingClientRect(); 130 | var i = a(e, "top"), 131 | n = a(e, "left"); 132 | (o.top += i), (o.left += n), (o.bottom += i), (o.right += n); 133 | } catch (e) {} 134 | else o = e.getBoundingClientRect(); 135 | var r = { 136 | left: o.left, 137 | top: o.top, 138 | width: o.right - o.left, 139 | height: o.bottom - o.top, 140 | }, 141 | p = "HTML" === e.nodeName ? h() : {}, 142 | s = p.width || e.clientWidth || r.right - r.left, 143 | d = p.height || e.clientHeight || r.bottom - r.top, 144 | l = e.offsetWidth - s, 145 | m = e.offsetHeight - d; 146 | if (l || m) { 147 | var g = t(e); 148 | (l -= f(g, "x")), (m -= f(g, "y")), (r.width -= l), (r.height -= m); 149 | } 150 | return c(r); 151 | } 152 | function u(e, o) { 153 | var i = ie(), 154 | r = "HTML" === o.nodeName, 155 | p = g(e), 156 | s = g(o), 157 | d = n(e), 158 | a = t(o), 159 | f = parseFloat(a.borderTopWidth, 10), 160 | m = parseFloat(a.borderLeftWidth, 10), 161 | h = c({ 162 | top: p.top - s.top - f, 163 | left: p.left - s.left - m, 164 | width: p.width, 165 | height: p.height, 166 | }); 167 | if (((h.marginTop = 0), (h.marginLeft = 0), !i && r)) { 168 | var u = parseFloat(a.marginTop, 10), 169 | b = parseFloat(a.marginLeft, 10); 170 | (h.top -= f - u), 171 | (h.bottom -= f - u), 172 | (h.left -= m - b), 173 | (h.right -= m - b), 174 | (h.marginTop = u), 175 | (h.marginLeft = b); 176 | } 177 | return ( 178 | (i ? o.contains(d) : o === d && "BODY" !== d.nodeName) && (h = l(h, o)), h 179 | ); 180 | } 181 | function b(e) { 182 | var t = e.ownerDocument.documentElement, 183 | o = u(e, t), 184 | i = J(t.clientWidth, window.innerWidth || 0), 185 | n = J(t.clientHeight, window.innerHeight || 0), 186 | r = a(t), 187 | p = a(t, "left"), 188 | s = { 189 | top: r - o.top + o.marginTop, 190 | left: p - o.left + o.marginLeft, 191 | width: i, 192 | height: n, 193 | }; 194 | return c(s); 195 | } 196 | function w(e) { 197 | var i = e.nodeName; 198 | return "BODY" === i || "HTML" === i 199 | ? !1 200 | : "fixed" === t(e, "position") || w(o(e)); 201 | } 202 | function y(e, t, i, r) { 203 | var p = { top: 0, left: 0 }, 204 | s = d(e, t); 205 | if ("viewport" === r) p = b(s); 206 | else { 207 | var a; 208 | "scrollParent" === r 209 | ? ((a = n(o(t))), 210 | "BODY" === a.nodeName && (a = e.ownerDocument.documentElement)) 211 | : "window" === r 212 | ? (a = e.ownerDocument.documentElement) 213 | : (a = r); 214 | var l = u(a, s); 215 | if ("HTML" === a.nodeName && !w(s)) { 216 | var f = h(), 217 | m = f.height, 218 | c = f.width; 219 | (p.top += l.top - l.marginTop), 220 | (p.bottom = m + l.top), 221 | (p.left += l.left - l.marginLeft), 222 | (p.right = c + l.left); 223 | } else p = l; 224 | } 225 | return (p.left += i), (p.top += i), (p.right -= i), (p.bottom -= i), p; 226 | } 227 | function E(e) { 228 | var t = e.width, 229 | o = e.height; 230 | return t * o; 231 | } 232 | function v(e, t, o, i, n) { 233 | var r = 5 < arguments.length && void 0 !== arguments[5] ? arguments[5] : 0; 234 | if (-1 === e.indexOf("auto")) return e; 235 | var p = y(o, i, r, n), 236 | s = { 237 | top: { width: p.width, height: t.top - p.top }, 238 | right: { width: p.right - t.right, height: p.height }, 239 | bottom: { width: p.width, height: p.bottom - t.bottom }, 240 | left: { width: t.left - p.left, height: p.height }, 241 | }, 242 | d = Object.keys(s) 243 | .map(function (e) { 244 | return se({ key: e }, s[e], { area: E(s[e]) }); 245 | }) 246 | .sort(function (e, t) { 247 | return t.area - e.area; 248 | }), 249 | a = d.filter(function (e) { 250 | var t = e.width, 251 | i = e.height; 252 | return t >= o.clientWidth && i >= o.clientHeight; 253 | }), 254 | l = 0 < a.length ? a[0].key : d[0].key, 255 | f = e.split("-")[1]; 256 | return l + (f ? "-" + f : ""); 257 | } 258 | function O(e, t, o) { 259 | var i = d(t, o); 260 | return u(o, i); 261 | } 262 | function L(e) { 263 | var t = getComputedStyle(e), 264 | o = parseFloat(t.marginTop) + parseFloat(t.marginBottom), 265 | i = parseFloat(t.marginLeft) + parseFloat(t.marginRight), 266 | n = { width: e.offsetWidth + i, height: e.offsetHeight + o }; 267 | return n; 268 | } 269 | function x(e) { 270 | var t = { left: "right", right: "left", bottom: "top", top: "bottom" }; 271 | return e.replace(/left|right|bottom|top/g, function (e) { 272 | return t[e]; 273 | }); 274 | } 275 | function S(e, t, o) { 276 | o = o.split("-")[0]; 277 | var i = L(e), 278 | n = { width: i.width, height: i.height }, 279 | r = -1 !== ["right", "left"].indexOf(o), 280 | p = r ? "top" : "left", 281 | s = r ? "left" : "top", 282 | d = r ? "height" : "width", 283 | a = r ? "width" : "height"; 284 | return ( 285 | (n[p] = t[p] + t[d] / 2 - i[d] / 2), 286 | (n[s] = o === s ? t[s] - i[a] : t[x(s)]), 287 | n 288 | ); 289 | } 290 | function T(e, t) { 291 | return Array.prototype.find ? e.find(t) : e.filter(t)[0]; 292 | } 293 | function D(e, t, o) { 294 | if (Array.prototype.findIndex) 295 | return e.findIndex(function (e) { 296 | return e[t] === o; 297 | }); 298 | var i = T(e, function (e) { 299 | return e[t] === o; 300 | }); 301 | return e.indexOf(i); 302 | } 303 | function C(t, o, i) { 304 | var n = void 0 === i ? t : t.slice(0, D(t, "name", i)); 305 | return ( 306 | n.forEach(function (t) { 307 | t["function"] && 308 | console.warn("`modifier.function` is deprecated, use `modifier.fn`!"); 309 | var i = t["function"] || t.fn; 310 | t.enabled && 311 | e(i) && 312 | ((o.offsets.popper = c(o.offsets.popper)), 313 | (o.offsets.reference = c(o.offsets.reference)), 314 | (o = i(o, t))); 315 | }), 316 | o 317 | ); 318 | } 319 | function N() { 320 | if (!this.state.isDestroyed) { 321 | var e = { 322 | instance: this, 323 | styles: {}, 324 | arrowStyles: {}, 325 | attributes: {}, 326 | flipped: !1, 327 | offsets: {}, 328 | }; 329 | (e.offsets.reference = O(this.state, this.popper, this.reference)), 330 | (e.placement = v( 331 | this.options.placement, 332 | e.offsets.reference, 333 | this.popper, 334 | this.reference, 335 | this.options.modifiers.flip.boundariesElement, 336 | this.options.modifiers.flip.padding 337 | )), 338 | (e.originalPlacement = e.placement), 339 | (e.offsets.popper = S(this.popper, e.offsets.reference, e.placement)), 340 | (e.offsets.popper.position = "absolute"), 341 | (e = C(this.modifiers, e)), 342 | this.state.isCreated 343 | ? this.options.onUpdate(e) 344 | : ((this.state.isCreated = !0), this.options.onCreate(e)); 345 | } 346 | } 347 | function k(e, t) { 348 | return e.some(function (e) { 349 | var o = e.name, 350 | i = e.enabled; 351 | return i && o === t; 352 | }); 353 | } 354 | function W(e) { 355 | for ( 356 | var t = [!1, "ms", "Webkit", "Moz", "O"], 357 | o = e.charAt(0).toUpperCase() + e.slice(1), 358 | n = 0; 359 | n < t.length - 1; 360 | n++ 361 | ) { 362 | var i = t[n], 363 | r = i ? "" + i + o : e; 364 | if ("undefined" != typeof document.body.style[r]) return r; 365 | } 366 | return null; 367 | } 368 | function P() { 369 | return ( 370 | (this.state.isDestroyed = !0), 371 | k(this.modifiers, "applyStyle") && 372 | (this.popper.removeAttribute("x-placement"), 373 | (this.popper.style.left = ""), 374 | (this.popper.style.position = ""), 375 | (this.popper.style.top = ""), 376 | (this.popper.style[W("transform")] = "")), 377 | this.disableEventListeners(), 378 | this.options.removeOnDestroy && 379 | this.popper.parentNode.removeChild(this.popper), 380 | this 381 | ); 382 | } 383 | function B(e) { 384 | var t = e.ownerDocument; 385 | return t ? t.defaultView : window; 386 | } 387 | function H(e, t, o, i) { 388 | var r = "BODY" === e.nodeName, 389 | p = r ? e.ownerDocument.defaultView : e; 390 | p.addEventListener(t, o, { passive: !0 }), 391 | r || H(n(p.parentNode), t, o, i), 392 | i.push(p); 393 | } 394 | function A(e, t, o, i) { 395 | (o.updateBound = i), 396 | B(e).addEventListener("resize", o.updateBound, { passive: !0 }); 397 | var r = n(e); 398 | return ( 399 | H(r, "scroll", o.updateBound, o.scrollParents), 400 | (o.scrollElement = r), 401 | (o.eventsEnabled = !0), 402 | o 403 | ); 404 | } 405 | function I() { 406 | this.state.eventsEnabled || 407 | (this.state = A( 408 | this.reference, 409 | this.options, 410 | this.state, 411 | this.scheduleUpdate 412 | )); 413 | } 414 | function M(e, t) { 415 | return ( 416 | B(e).removeEventListener("resize", t.updateBound), 417 | t.scrollParents.forEach(function (e) { 418 | e.removeEventListener("scroll", t.updateBound); 419 | }), 420 | (t.updateBound = null), 421 | (t.scrollParents = []), 422 | (t.scrollElement = null), 423 | (t.eventsEnabled = !1), 424 | t 425 | ); 426 | } 427 | function R() { 428 | this.state.eventsEnabled && 429 | (cancelAnimationFrame(this.scheduleUpdate), 430 | (this.state = M(this.reference, this.state))); 431 | } 432 | function U(e) { 433 | return "" !== e && !isNaN(parseFloat(e)) && isFinite(e); 434 | } 435 | function Y(e, t) { 436 | Object.keys(t).forEach(function (o) { 437 | var i = ""; 438 | -1 !== ["width", "height", "top", "right", "bottom", "left"].indexOf(o) && 439 | U(t[o]) && 440 | (i = "px"), 441 | (e.style[o] = t[o] + i); 442 | }); 443 | } 444 | function j(e, t) { 445 | Object.keys(t).forEach(function (o) { 446 | var i = t[o]; 447 | !1 === i ? e.removeAttribute(o) : e.setAttribute(o, t[o]); 448 | }); 449 | } 450 | function F(e, t, o) { 451 | var i = T(e, function (e) { 452 | var o = e.name; 453 | return o === t; 454 | }), 455 | n = 456 | !!i && 457 | e.some(function (e) { 458 | return e.name === o && e.enabled && e.order < i.order; 459 | }); 460 | if (!n) { 461 | var r = "`" + t + "`"; 462 | console.warn( 463 | "`" + 464 | o + 465 | "`" + 466 | " modifier is required by " + 467 | r + 468 | " modifier in order to work, be sure to include it before " + 469 | r + 470 | "!" 471 | ); 472 | } 473 | return n; 474 | } 475 | function K(e) { 476 | return "end" === e ? "start" : "start" === e ? "end" : e; 477 | } 478 | function q(e) { 479 | var t = 1 < arguments.length && void 0 !== arguments[1] && arguments[1], 480 | o = ae.indexOf(e), 481 | i = ae.slice(o + 1).concat(ae.slice(0, o)); 482 | return t ? i.reverse() : i; 483 | } 484 | function V(e, t, o, i) { 485 | var n = e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/), 486 | r = +n[1], 487 | p = n[2]; 488 | if (!r) return e; 489 | if (0 === p.indexOf("%")) { 490 | var s; 491 | switch (p) { 492 | case "%p": 493 | s = o; 494 | break; 495 | case "%": 496 | case "%r": 497 | default: 498 | s = i; 499 | } 500 | var d = c(s); 501 | return (d[t] / 100) * r; 502 | } 503 | if ("vh" === p || "vw" === p) { 504 | var a; 505 | return ( 506 | (a = 507 | "vh" === p 508 | ? J(document.documentElement.clientHeight, window.innerHeight || 0) 509 | : J(document.documentElement.clientWidth, window.innerWidth || 0)), 510 | (a / 100) * r 511 | ); 512 | } 513 | return r; 514 | } 515 | function z(e, t, o, i) { 516 | var n = [0, 0], 517 | r = -1 !== ["right", "left"].indexOf(i), 518 | p = e.split(/(\+|\-)/).map(function (e) { 519 | return e.trim(); 520 | }), 521 | s = p.indexOf( 522 | T(p, function (e) { 523 | return -1 !== e.search(/,|\s/); 524 | }) 525 | ); 526 | p[s] && 527 | -1 === p[s].indexOf(",") && 528 | console.warn( 529 | "Offsets separated by white space(s) are deprecated, use a comma (,) instead." 530 | ); 531 | var d = /\s*,\s*|\s+/, 532 | a = 533 | -1 === s 534 | ? [p] 535 | : [ 536 | p.slice(0, s).concat([p[s].split(d)[0]]), 537 | [p[s].split(d)[1]].concat(p.slice(s + 1)), 538 | ]; 539 | return ( 540 | (a = a.map(function (e, i) { 541 | var n = (1 === i ? !r : r) ? "height" : "width", 542 | p = !1; 543 | return e 544 | .reduce(function (e, t) { 545 | return "" === e[e.length - 1] && -1 !== ["+", "-"].indexOf(t) 546 | ? ((e[e.length - 1] = t), (p = !0), e) 547 | : p 548 | ? ((e[e.length - 1] += t), (p = !1), e) 549 | : e.concat(t); 550 | }, []) 551 | .map(function (e) { 552 | return V(e, n, t, o); 553 | }); 554 | })), 555 | a.forEach(function (e, t) { 556 | e.forEach(function (o, i) { 557 | U(o) && (n[t] += o * ("-" === e[i - 1] ? -1 : 1)); 558 | }); 559 | }), 560 | n 561 | ); 562 | } 563 | function G(e, t) { 564 | var o, 565 | i = t.offset, 566 | n = e.placement, 567 | r = e.offsets, 568 | p = r.popper, 569 | s = r.reference, 570 | d = n.split("-")[0]; 571 | return ( 572 | (o = U(+i) ? [+i, 0] : z(i, p, s, d)), 573 | "left" === d 574 | ? ((p.top += o[0]), (p.left -= o[1])) 575 | : "right" === d 576 | ? ((p.top += o[0]), (p.left += o[1])) 577 | : "top" === d 578 | ? ((p.left += o[0]), (p.top -= o[1])) 579 | : "bottom" === d && ((p.left += o[0]), (p.top += o[1])), 580 | (e.popper = p), 581 | e 582 | ); 583 | } 584 | for ( 585 | var _ = Math.min, 586 | X = Math.floor, 587 | J = Math.max, 588 | Q = "undefined" != typeof window && "undefined" != typeof document, 589 | Z = ["Edge", "Trident", "Firefox"], 590 | $ = 0, 591 | ee = 0; 592 | ee < Z.length; 593 | ee += 1 594 | ) 595 | if (Q && 0 <= navigator.userAgent.indexOf(Z[ee])) { 596 | $ = 1; 597 | break; 598 | } 599 | var i, 600 | te = Q && window.Promise, 601 | oe = te 602 | ? function (e) { 603 | var t = !1; 604 | return function () { 605 | t || 606 | ((t = !0), 607 | window.Promise.resolve().then(function () { 608 | (t = !1), e(); 609 | })); 610 | }; 611 | } 612 | : function (e) { 613 | var t = !1; 614 | return function () { 615 | t || 616 | ((t = !0), 617 | setTimeout(function () { 618 | (t = !1), e(); 619 | }, $)); 620 | }; 621 | }, 622 | ie = function () { 623 | return ( 624 | void 0 == i && (i = -1 !== navigator.appVersion.indexOf("MSIE 10")), i 625 | ); 626 | }, 627 | ne = function (e, t) { 628 | if (!(e instanceof t)) 629 | throw new TypeError("Cannot call a class as a function"); 630 | }, 631 | re = (function () { 632 | function e(e, t) { 633 | for (var o, n = 0; n < t.length; n++) 634 | (o = t[n]), 635 | (o.enumerable = o.enumerable || !1), 636 | (o.configurable = !0), 637 | "value" in o && (o.writable = !0), 638 | Object.defineProperty(e, o.key, o); 639 | } 640 | return function (t, o, i) { 641 | return o && e(t.prototype, o), i && e(t, i), t; 642 | }; 643 | })(), 644 | pe = function (e, t, o) { 645 | return ( 646 | t in e 647 | ? Object.defineProperty(e, t, { 648 | value: o, 649 | enumerable: !0, 650 | configurable: !0, 651 | writable: !0, 652 | }) 653 | : (e[t] = o), 654 | e 655 | ); 656 | }, 657 | se = 658 | Object.assign || 659 | function (e) { 660 | for (var t, o = 1; o < arguments.length; o++) 661 | for (var i in ((t = arguments[o]), t)) 662 | Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); 663 | return e; 664 | }, 665 | de = [ 666 | "auto-start", 667 | "auto", 668 | "auto-end", 669 | "top-start", 670 | "top", 671 | "top-end", 672 | "right-start", 673 | "right", 674 | "right-end", 675 | "bottom-end", 676 | "bottom", 677 | "bottom-start", 678 | "left-end", 679 | "left", 680 | "left-start", 681 | ], 682 | ae = de.slice(3), 683 | le = { 684 | FLIP: "flip", 685 | CLOCKWISE: "clockwise", 686 | COUNTERCLOCKWISE: "counterclockwise", 687 | }, 688 | fe = (function () { 689 | function t(o, i) { 690 | var n = this, 691 | r = 692 | 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}; 693 | ne(this, t), 694 | (this.scheduleUpdate = function () { 695 | return requestAnimationFrame(n.update); 696 | }), 697 | (this.update = oe(this.update.bind(this))), 698 | (this.options = se({}, t.Defaults, r)), 699 | (this.state = { isDestroyed: !1, isCreated: !1, scrollParents: [] }), 700 | (this.reference = o && o.jquery ? o[0] : o), 701 | (this.popper = i && i.jquery ? i[0] : i), 702 | (this.options.modifiers = {}), 703 | Object.keys(se({}, t.Defaults.modifiers, r.modifiers)).forEach( 704 | function (e) { 705 | n.options.modifiers[e] = se( 706 | {}, 707 | t.Defaults.modifiers[e] || {}, 708 | r.modifiers ? r.modifiers[e] : {} 709 | ); 710 | } 711 | ), 712 | (this.modifiers = Object.keys(this.options.modifiers) 713 | .map(function (e) { 714 | return se({ name: e }, n.options.modifiers[e]); 715 | }) 716 | .sort(function (e, t) { 717 | return e.order - t.order; 718 | })), 719 | this.modifiers.forEach(function (t) { 720 | t.enabled && 721 | e(t.onLoad) && 722 | t.onLoad(n.reference, n.popper, n.options, t, n.state); 723 | }), 724 | this.update(); 725 | var p = this.options.eventsEnabled; 726 | p && this.enableEventListeners(), (this.state.eventsEnabled = p); 727 | } 728 | return ( 729 | re(t, [ 730 | { 731 | key: "update", 732 | value: function () { 733 | return N.call(this); 734 | }, 735 | }, 736 | { 737 | key: "destroy", 738 | value: function () { 739 | return P.call(this); 740 | }, 741 | }, 742 | { 743 | key: "enableEventListeners", 744 | value: function () { 745 | return I.call(this); 746 | }, 747 | }, 748 | { 749 | key: "disableEventListeners", 750 | value: function () { 751 | return R.call(this); 752 | }, 753 | }, 754 | ]), 755 | t 756 | ); 757 | })(); 758 | return ( 759 | (fe.Utils = ("undefined" == typeof window ? global : window).PopperUtils), 760 | (fe.placements = de), 761 | (fe.Defaults = { 762 | placement: "bottom", 763 | eventsEnabled: !0, 764 | removeOnDestroy: !1, 765 | onCreate: function () {}, 766 | onUpdate: function () {}, 767 | modifiers: { 768 | shift: { 769 | order: 100, 770 | enabled: !0, 771 | fn: function (e) { 772 | var t = e.placement, 773 | o = t.split("-")[0], 774 | i = t.split("-")[1]; 775 | if (i) { 776 | var n = e.offsets, 777 | r = n.reference, 778 | p = n.popper, 779 | s = -1 !== ["bottom", "top"].indexOf(o), 780 | d = s ? "left" : "top", 781 | a = s ? "width" : "height", 782 | l = { 783 | start: pe({}, d, r[d]), 784 | end: pe({}, d, r[d] + r[a] - p[a]), 785 | }; 786 | e.offsets.popper = se({}, p, l[i]); 787 | } 788 | return e; 789 | }, 790 | }, 791 | offset: { order: 200, enabled: !0, fn: G, offset: 0 }, 792 | preventOverflow: { 793 | order: 300, 794 | enabled: !0, 795 | fn: function (e, t) { 796 | var o = t.boundariesElement || r(e.instance.popper); 797 | e.instance.reference === o && (o = r(o)); 798 | var i = y(e.instance.popper, e.instance.reference, t.padding, o); 799 | t.boundaries = i; 800 | var n = t.priority, 801 | p = e.offsets.popper, 802 | s = { 803 | primary: function (e) { 804 | var o = p[e]; 805 | return ( 806 | p[e] < i[e] && 807 | !t.escapeWithReference && 808 | (o = J(p[e], i[e])), 809 | pe({}, e, o) 810 | ); 811 | }, 812 | secondary: function (e) { 813 | var o = "right" === e ? "left" : "top", 814 | n = p[o]; 815 | return ( 816 | p[e] > i[e] && 817 | !t.escapeWithReference && 818 | (n = _( 819 | p[o], 820 | i[e] - ("right" === e ? p.width : p.height) 821 | )), 822 | pe({}, o, n) 823 | ); 824 | }, 825 | }; 826 | return ( 827 | n.forEach(function (e) { 828 | var t = 829 | -1 === ["left", "top"].indexOf(e) ? "secondary" : "primary"; 830 | p = se({}, p, s[t](e)); 831 | }), 832 | (e.offsets.popper = p), 833 | e 834 | ); 835 | }, 836 | priority: ["left", "right", "top", "bottom"], 837 | padding: 5, 838 | boundariesElement: "scrollParent", 839 | }, 840 | keepTogether: { 841 | order: 400, 842 | enabled: !0, 843 | fn: function (e) { 844 | var t = e.offsets, 845 | o = t.popper, 846 | i = t.reference, 847 | n = e.placement.split("-")[0], 848 | r = X, 849 | p = -1 !== ["top", "bottom"].indexOf(n), 850 | s = p ? "right" : "bottom", 851 | d = p ? "left" : "top", 852 | a = p ? "width" : "height"; 853 | return ( 854 | o[s] < r(i[d]) && (e.offsets.popper[d] = r(i[d]) - o[a]), 855 | o[d] > r(i[s]) && (e.offsets.popper[d] = r(i[s])), 856 | e 857 | ); 858 | }, 859 | }, 860 | arrow: { 861 | order: 500, 862 | enabled: !0, 863 | fn: function (e, o) { 864 | var i; 865 | if (!F(e.instance.modifiers, "arrow", "keepTogether")) return e; 866 | var n = o.element; 867 | if ("string" == typeof n) { 868 | if (((n = e.instance.popper.querySelector(n)), !n)) return e; 869 | } else if (!e.instance.popper.contains(n)) 870 | return ( 871 | console.warn( 872 | "WARNING: `arrow.element` must be child of its popper element!" 873 | ), 874 | e 875 | ); 876 | var r = e.placement.split("-")[0], 877 | p = e.offsets, 878 | s = p.popper, 879 | d = p.reference, 880 | a = -1 !== ["left", "right"].indexOf(r), 881 | l = a ? "height" : "width", 882 | f = a ? "Top" : "Left", 883 | m = f.toLowerCase(), 884 | h = a ? "left" : "top", 885 | g = a ? "bottom" : "right", 886 | u = L(n)[l]; 887 | d[g] - u < s[m] && (e.offsets.popper[m] -= s[m] - (d[g] - u)), 888 | d[m] + u > s[g] && (e.offsets.popper[m] += d[m] + u - s[g]), 889 | (e.offsets.popper = c(e.offsets.popper)); 890 | var b = d[m] + d[l] / 2 - u / 2, 891 | w = t(e.instance.popper), 892 | y = parseFloat(w["margin" + f], 10), 893 | E = parseFloat(w["border" + f + "Width"], 10), 894 | v = b - e.offsets.popper[m] - y - E; 895 | return ( 896 | (v = J(_(s[l] - u, v), 0)), 897 | (e.arrowElement = n), 898 | (e.offsets.arrow = 899 | ((i = {}), pe(i, m, Math.round(v)), pe(i, h, ""), i)), 900 | e 901 | ); 902 | }, 903 | element: "[x-arrow]", 904 | }, 905 | flip: { 906 | order: 600, 907 | enabled: !0, 908 | fn: function (e, t) { 909 | if (k(e.instance.modifiers, "inner")) return e; 910 | if (e.flipped && e.placement === e.originalPlacement) return e; 911 | var o = y( 912 | e.instance.popper, 913 | e.instance.reference, 914 | t.padding, 915 | t.boundariesElement 916 | ), 917 | i = e.placement.split("-")[0], 918 | n = x(i), 919 | r = e.placement.split("-")[1] || "", 920 | p = []; 921 | switch (t.behavior) { 922 | case le.FLIP: 923 | p = [i, n]; 924 | break; 925 | case le.CLOCKWISE: 926 | p = q(i); 927 | break; 928 | case le.COUNTERCLOCKWISE: 929 | p = q(i, !0); 930 | break; 931 | default: 932 | p = t.behavior; 933 | } 934 | return ( 935 | p.forEach(function (s, d) { 936 | if (i !== s || p.length === d + 1) return e; 937 | (i = e.placement.split("-")[0]), (n = x(i)); 938 | var a = e.offsets.popper, 939 | l = e.offsets.reference, 940 | f = X, 941 | m = 942 | ("left" === i && f(a.right) > f(l.left)) || 943 | ("right" === i && f(a.left) < f(l.right)) || 944 | ("top" === i && f(a.bottom) > f(l.top)) || 945 | ("bottom" === i && f(a.top) < f(l.bottom)), 946 | h = f(a.left) < f(o.left), 947 | c = f(a.right) > f(o.right), 948 | g = f(a.top) < f(o.top), 949 | u = f(a.bottom) > f(o.bottom), 950 | b = 951 | ("left" === i && h) || 952 | ("right" === i && c) || 953 | ("top" === i && g) || 954 | ("bottom" === i && u), 955 | w = -1 !== ["top", "bottom"].indexOf(i), 956 | y = 957 | !!t.flipVariations && 958 | ((w && "start" === r && h) || 959 | (w && "end" === r && c) || 960 | (!w && "start" === r && g) || 961 | (!w && "end" === r && u)); 962 | (m || b || y) && 963 | ((e.flipped = !0), 964 | (m || b) && (i = p[d + 1]), 965 | y && (r = K(r)), 966 | (e.placement = i + (r ? "-" + r : "")), 967 | (e.offsets.popper = se( 968 | {}, 969 | e.offsets.popper, 970 | S(e.instance.popper, e.offsets.reference, e.placement) 971 | )), 972 | (e = C(e.instance.modifiers, e, "flip"))); 973 | }), 974 | e 975 | ); 976 | }, 977 | behavior: "flip", 978 | padding: 5, 979 | boundariesElement: "viewport", 980 | }, 981 | inner: { 982 | order: 700, 983 | enabled: !1, 984 | fn: function (e) { 985 | var t = e.placement, 986 | o = t.split("-")[0], 987 | i = e.offsets, 988 | n = i.popper, 989 | r = i.reference, 990 | p = -1 !== ["left", "right"].indexOf(o), 991 | s = -1 === ["top", "left"].indexOf(o); 992 | return ( 993 | (n[p ? "left" : "top"] = 994 | r[o] - (s ? n[p ? "width" : "height"] : 0)), 995 | (e.placement = x(t)), 996 | (e.offsets.popper = c(n)), 997 | e 998 | ); 999 | }, 1000 | }, 1001 | hide: { 1002 | order: 800, 1003 | enabled: !0, 1004 | fn: function (e) { 1005 | if (!F(e.instance.modifiers, "hide", "preventOverflow")) return e; 1006 | var t = e.offsets.reference, 1007 | o = T(e.instance.modifiers, function (e) { 1008 | return "preventOverflow" === e.name; 1009 | }).boundaries; 1010 | if ( 1011 | t.bottom < o.top || 1012 | t.left > o.right || 1013 | t.top > o.bottom || 1014 | t.right < o.left 1015 | ) { 1016 | if (!0 === e.hide) return e; 1017 | (e.hide = !0), (e.attributes["x-out-of-boundaries"] = ""); 1018 | } else { 1019 | if (!1 === e.hide) return e; 1020 | (e.hide = !1), (e.attributes["x-out-of-boundaries"] = !1); 1021 | } 1022 | return e; 1023 | }, 1024 | }, 1025 | computeStyle: { 1026 | order: 850, 1027 | enabled: !0, 1028 | fn: function (e, t) { 1029 | var o = t.x, 1030 | i = t.y, 1031 | n = e.offsets.popper, 1032 | p = T(e.instance.modifiers, function (e) { 1033 | return "applyStyle" === e.name; 1034 | }).gpuAcceleration; 1035 | void 0 !== p && 1036 | console.warn( 1037 | "WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!" 1038 | ); 1039 | var s, 1040 | d, 1041 | a = void 0 === p ? t.gpuAcceleration : p, 1042 | l = r(e.instance.popper), 1043 | f = g(l), 1044 | m = { position: n.position }, 1045 | h = { 1046 | left: X(n.left), 1047 | top: X(n.top), 1048 | bottom: X(n.bottom), 1049 | right: X(n.right), 1050 | }, 1051 | c = "bottom" === o ? "top" : "bottom", 1052 | u = "right" === i ? "left" : "right", 1053 | b = W("transform"); 1054 | if ( 1055 | ((d = "bottom" == c ? -f.height + h.bottom : h.top), 1056 | (s = "right" == u ? -f.width + h.right : h.left), 1057 | a && b) 1058 | ) 1059 | (m[b] = "translate3d(" + s + "px, " + d + "px, 0)"), 1060 | (m[c] = 0), 1061 | (m[u] = 0), 1062 | (m.willChange = "transform"); 1063 | else { 1064 | var w = "bottom" == c ? -1 : 1, 1065 | y = "right" == u ? -1 : 1; 1066 | (m[c] = d * w), (m[u] = s * y), (m.willChange = c + ", " + u); 1067 | } 1068 | var E = { "x-placement": e.placement }; 1069 | return ( 1070 | (e.attributes = se({}, E, e.attributes)), 1071 | (e.styles = se({}, m, e.styles)), 1072 | (e.arrowStyles = se({}, e.offsets.arrow, e.arrowStyles)), 1073 | e 1074 | ); 1075 | }, 1076 | gpuAcceleration: !0, 1077 | x: "bottom", 1078 | y: "right", 1079 | }, 1080 | applyStyle: { 1081 | order: 900, 1082 | enabled: !0, 1083 | fn: function (e) { 1084 | return ( 1085 | Y(e.instance.popper, e.styles), 1086 | j(e.instance.popper, e.attributes), 1087 | e.arrowElement && 1088 | Object.keys(e.arrowStyles).length && 1089 | Y(e.arrowElement, e.arrowStyles), 1090 | e 1091 | ); 1092 | }, 1093 | onLoad: function (e, t, o, i, n) { 1094 | var r = O(n, t, e), 1095 | p = v( 1096 | o.placement, 1097 | r, 1098 | t, 1099 | e, 1100 | o.modifiers.flip.boundariesElement, 1101 | o.modifiers.flip.padding 1102 | ); 1103 | return ( 1104 | t.setAttribute("x-placement", p), 1105 | Y(t, { position: "absolute" }), 1106 | o 1107 | ); 1108 | }, 1109 | gpuAcceleration: void 0, 1110 | }, 1111 | }, 1112 | }), 1113 | fe 1114 | ); 1115 | }); 1116 | //# sourceMappingURL=popper.min.js.map 1117 | -------------------------------------------------------------------------------- /todo/templates/todo_temp/base.html: -------------------------------------------------------------------------------- 1 | {% load static %} 2 | 3 | 4 | 5 | 6 | 7 | 8 | {% include 'todo_temp/header_references.html' %} 9 | 10 | {% block title %}{% endblock %} 11 | 12 | 13 | 14 | {% block content %}{% endblock %} 15 | {% include 'todo_temp/footer_references.html' %} 16 | 17 | -------------------------------------------------------------------------------- /todo/templates/todo_temp/footer_references.html: -------------------------------------------------------------------------------- 1 | {% load static %} 2 | 3 | 4 | -------------------------------------------------------------------------------- /todo/templates/todo_temp/header_references.html: -------------------------------------------------------------------------------- 1 | {% load static %} 2 | 3 | -------------------------------------------------------------------------------- /todo/templates/todo_temp/index.html: -------------------------------------------------------------------------------- 1 | {% extends 'todo_temp/base.html' %} 2 | {% load static %} 3 | {% block title %} 4 | {% if title %} 5 | {{ title }} 6 | {% else %} 7 | {{ none }} 8 | {% endif %} 9 | {% endblock %} 10 | {% block content %} 11 |
12 |
13 |

Todo Application

14 |
15 |
16 | 17 |
18 | {% csrf_token %} 19 |
20 |
21 | 22 | 23 |
24 |
25 |
26 | 27 |
28 |
    29 | {% for i in data %} 30 |
  • 31 | {% if i.completed %} 32 | {{ i.title }} 33 | {% elif i.completed != "True" %} 34 | {{ i.title }} 35 | {% endif %} 36 | 37 | 38 | 39 | {% if i.completed %} 40 | 41 | 42 | 43 | {% elif i.completed != "True" %} 44 | 45 | 46 | 47 | {% endif %} 48 |
  • 49 | {% endfor %} 50 |
51 |
52 | {% endblock %} -------------------------------------------------------------------------------- /todo/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase -------------------------------------------------------------------------------- /todo/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls.conf import path 2 | from . import views 3 | 4 | 5 | urlpatterns = [ 6 | path(route="" , view=views.HomeView.as_view() , name = "home") , 7 | path(route="delete/" , view=views.DeleteView.as_view() , name = "delete") , 8 | path(route="complete/" , view=views.CompleteView.as_view() , name = "complete") 9 | ] -------------------------------------------------------------------------------- /todo/views.py: -------------------------------------------------------------------------------- 1 | from django.urls.base import reverse 2 | from django.shortcuts import (render , redirect) 3 | from django.http.request import HttpRequest 4 | from django.views.generic.base import View 5 | from .models import TodoDatabase 6 | 7 | 8 | 9 | 10 | 11 | class HomeView(View): 12 | def get(self , request : HttpRequest): 13 | data : TodoDatabase = TodoDatabase.objects.all() 14 | return render(request=request , template_name='todo_temp/index.html' , context={'data' : data , 'title' : 'Todo Application'}) 15 | 16 | def post(self , request : HttpRequest): 17 | title = request.POST.get('title') 18 | data : TodoDatabase = TodoDatabase(request.POST or None) 19 | if (data is not None): 20 | TodoDatabase.objects.create(title = title) 21 | return redirect(to=reverse(viewname='home')) 22 | 23 | 24 | 25 | 26 | class DeleteView(View): 27 | def get(self , request : HttpRequest , id = None): 28 | data : TodoDatabase = TodoDatabase.objects.get(id = id) 29 | data.delete() 30 | return redirect(to=reverse(viewname='home')) 31 | 32 | 33 | 34 | 35 | class CompleteView(View): 36 | def get(self , request : HttpRequest , id = None): 37 | data : TodoDatabase = TodoDatabase.objects.get(id = id) 38 | data.completed = True 39 | data.save() 40 | return redirect(to=reverse(viewname='home')) --------------------------------------------------------------------------------