PageSourceSearch

https://hup.edu.vn/lib/bootstrap/dist/js/bootstrap.js

js hup.edu.vn collected 2026-09-24 09:50:51 UTC 131,637 bytes, 4,435 lines download raw bytes

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 (global, factory) {
7  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :
8  typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :
9  (global = global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));
10}(this, function (exports, $, Popper) { 'use strict';
11
12  $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13  Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
14
15  function _defineProperties(target, props) {
16    for (var i = 0; i < props.length; i++) {
17      var descriptor = props[i];
18      descriptor.enumerable = descriptor.enumerable || false;
19      descriptor.configurable = true;
20      if ("value" in descriptor) descriptor.writable = true;
21      Object.defineProperty(target, descriptor.key, descriptor);
22    }
23  }
24
25  function _createClass(Constructor, protoProps, staticProps) {
26    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27    if (staticProps) _defineProperties(Constructor, staticProps);
28    return Constructor;
29  }
30
31  function _defineProperty(obj, key, value) {
32    if (key in obj) {
33      Object.defineProperty(obj, key, {
34        value: value,
35        enumerable: true,
36        configurable: true,
37        writable: true
38      });
39    } else {
40      obj[key] = value;
41    }
42
43    return obj;
44  }
45
46  function _objectSpread(target) {
47    for (var i = 1; i < arguments.length; i++) {
48      var source = arguments[i] != null ? arguments[i] : {};
49      var ownKeys = Object.keys(source);
50
51      if (typeof Object.getOwnPropertySymbols === 'function') {
52        ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
53          return Object.getOwnPropertyDescriptor(source, sym).enumerable;
54        }));
55      }
56
57      ownKeys.forEach(function (key) {
58        _defineProperty(target, key, source[key]);
59      });
60    }
61
62    return target;
63  }
64
65  function _inheritsLoose(subClass, superClass) {
66    subClass.prototype = Object.create(superClass.prototype);
67    subClass.prototype.constructor = subClass;
68    subClass.__proto__ = superClass;
69  }
70
71  /**
72   * --------------------------------------------------------------------------
73   * Bootstrap (v4.3.1): util.js
74   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
75   * --------------------------------------------------------------------------
76   */
77  /**
78   * ------------------------------------------------------------------------
79   * Private TransitionEnd Helpers
80   * ------------------------------------------------------------------------
81   */
82
83  var TRANSITION_END = 'transitionend';
84  var MAX_UID = 1000000;
85  var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
86
87  function toType(obj) {
88    return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
89  }
90
91  function getSpecialTransitionEndEvent() {
92    return {
93      bindType: TRANSITION_END,
94      delegateType: TRANSITION_END,
95      handle: function handle(event) {
96        if ($(event.target).is(this)) {
97          return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
98        }
99
100        return undefined; // eslint-disable-line no-undefined
101      }
102    };
103  }
104
105  function transitionEndEmulator(duration) {
106    var _this = this;
107
108    var called = false;
109    $(this).one(Util.TRANSITION_END, function () {
110      called = true;
111    });
112    setTimeout(function () {
113      if (!called) {
114        Util.triggerTransitionEnd(_this);
115      }
116    }, duration);
117    return this;
118  }
119
120  function setTransitionEndSupport() {
121    $.fn.emulateTransitionEnd = transitionEndEmulator;
122    $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
123  }
124  /**
125   * --------------------------------------------------------------------------
126   * Public Util Api
127   * --------------------------------------------------------------------------
128   */
129
130
131  var Util = {
132    TRANSITION_END: 'bsTransitionEnd',
133    getUID: function getUID(prefix) {
134      do {
135        // eslint-disable-next-line no-bitwise
136        prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
137      } while (document.getElementById(prefix));
138
139      return prefix;
140    },
141    getSelectorFromElement: function getSelectorFromElement(element) {
142      var selector = element.getAttribute('data-target');
143
144      if (!selector || selector === '#') {
145        var hrefAttr = element.getAttribute('href');
146        selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';
147      }
148
149      try {
150        return document.querySelector(selector) ? selector : null;
151      } catch (err) {
152        return null;
153      }
154    },
155    getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
156      if (!element) {
157        return 0;
158      } // Get transition-duration of the element
159
160
161      var transitionDuration = $(element).css('transition-duration');
162      var transitionDelay = $(element).css('transition-delay');
163      var floatTransitionDuration = parseFloat(transitionDuration);
164      var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
165
166      if (!floatTransitionDuration && !floatTransitionDelay) {
167        return 0;
168      } // If multiple durations are defined, take the first
169
170
171      transitionDuration = transitionDuration.split(',')[0];
172      transitionDelay = transitionDelay.split(',')[0];
173      return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
174    },
175    reflow: function reflow(element) {
176      return element.offsetHeight;
177    },
178    triggerTransitionEnd: function triggerTransitionEnd(element) {
179      $(element).trigger(TRANSITION_END);
180    },
181    // TODO: Remove in v5
182    supportsTransitionEnd: function supportsTransitionEnd() {
183      return Boolean(TRANSITION_END);
184    },
185    isElement: function isElement(obj) {
186      return (obj[0] || obj).nodeType;
187    },
188    typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
189      for (var property in configTypes) {
190        if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
191          var expectedTypes = configTypes[property];
192          var value = config[property];
193          var valueType = value && Util.isElement(value) ? 'element' : toType(value);
194
195          if (!new RegExp(expectedTypes).test(valueType)) {
196            throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
197          }
198        }
199      }
200    },
201    findShadowRoot: function findShadowRoot(element) {
202      if (!document.documentElement.attachShadow) {
203        return null;
204      } // Can find the shadow root otherwise it'll return the document
205
206
207      if (typeof element.getRootNode === 'function') {
208        var root = element.getRootNode();
209        return root instanceof ShadowRoot ? root : null;
210      }
211
212      if (element instanceof ShadowRoot) {
213        return element;
214      } // when we don't find a shadow root
215
216
217      if (!element.parentNode) {
218        return null;
219      }
220
221      return Util.findShadowRoot(element.parentNode);
222    }
223  };
224  setTransitionEndSupport();
225
226  /**
227   * ------------------------------------------------------------------------
228   * Constants
229   * ------------------------------------------------------------------------
230   */
231
232  var NAME = 'alert';
233  var VERSION = '4.3.1';
234  var DATA_KEY = 'bs.alert';
235  var EVENT_KEY = "." + DATA_KEY;
236  var DATA_API_KEY = '.data-api';
237  var JQUERY_NO_CONFLICT = $.fn[NAME];
238  var Selector = {
239    DISMISS: '[data-dismiss="alert"]'
240  };
241  var Event = {
242    CLOSE: "close" + EVENT_KEY,
243    CLOSED: "closed" + EVENT_KEY,
244    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
245  };
246  var ClassName = {
247    ALERT: 'alert',
248    FADE: 'fade',
249    SHOW: 'show'
250    /**
251     * ------------------------------------------------------------------------
252     * Class Definition
253     * ------------------------------------------------------------------------
254     */
255
256  };
257
258  var Alert =
259  /*#__PURE__*/
260  function () {
261    function Alert(element) {
262      this._element = element;
263    } // Getters
264
265
266    var _proto = Alert.prototype;
267
268    // Public
269    _proto.close = function close(element) {
270      var rootElement = this._element;
271
272      if (element) {
273        rootElement = this._getRootElement(element);
274      }
275
276      var customEvent = this._triggerCloseEvent(rootElement);
277
278      if (customEvent.isDefaultPrevented()) {
279        return;
280      }
281
282      this._removeElement(rootElement);
283    };
284
285    _proto.dispose = function dispose() {
286      $.removeData(this._element, DATA_KEY);
287      this._element = null;
288    } // Private
289    ;
290
291    _proto._getRootElement = function _getRootElement(element) {
292      var selector = Util.getSelectorFromElement(element);
293      var parent = false;
294
295      if (selector) {
296        parent = document.querySelector(selector);
297      }
298
299      if (!parent) {
300        parent = $(element).closest("." + ClassName.ALERT)[0];
301      }
302
303      return parent;
304    };
305
306    _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
307      var closeEvent = $.Event(Event.CLOSE);
308      $(element).trigger(closeEvent);
309      return closeEvent;
310    };
311
312    _proto._removeElement = function _removeElement(element) {
313      var _this = this;
314
315      $(element).removeClass(ClassName.SHOW);
316
317      if (!$(element).hasClass(ClassName.FADE)) {
318        this._destroyElement(element);
319
320        return;
321      }
322
323      var transitionDuration = Util.getTransitionDurationFromElement(element);
324      $(element).one(Util.TRANSITION_END, function (event) {
325        return _this._destroyElement(element, event);
326      }).emulateTransitionEnd(transitionDuration);
327    };
328
329    _proto._destroyElement = function _destroyElement(element) {
330      $(element).detach().trigger(Event.CLOSED).remove();
331    } // Static
332    ;
333
334    Alert._jQueryInterface = function _jQueryInterface(config) {
335      return this.each(function () {
336        var $element = $(this);
337        var data = $element.data(DATA_KEY);
338
339        if (!data) {
340          data = new Alert(this);
341          $element.data(DATA_KEY, data);
342        }
343
344        if (config === 'close') {
345          data[config](this);
346        }
347      });
348    };
349
350    Alert._handleDismiss = function _handleDismiss(alertInstance) {
351      return function (event) {
352        if (event) {
353          event.preventDefault();
354        }
355
356        alertInstance.close(this);
357      };
358    };
359
360    _createClass(Alert, null, [{
361      key: "VERSION",
362      get: function get() {
363        return VERSION;
364      }
365    }]);
366
367    return Alert;
368  }();
369  /**
370   * ------------------------------------------------------------------------
371   * Data Api implementation
372   * ------------------------------------------------------------------------
373   */
374
375
376  $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
377  /**
378   * ------------------------------------------------------------------------
379   * jQuery
380   * ------------------------------------------------------------------------
381   */
382
383  $.fn[NAME] = Alert._jQueryInterface;
384  $.fn[NAME].Constructor = Alert;
385
386  $.fn[NAME].noConflict = function () {
387    $.fn[NAME] = JQUERY_NO_CONFLICT;
388    return Alert._jQueryInterface;
389  };
390
391  /**
392   * ------------------------------------------------------------------------
393   * Constants
394   * ------------------------------------------------------------------------
395   */
396
397  var NAME$1 = 'button';
398  var VERSION$1 = '4.3.1';
399  var DATA_KEY$1 = 'bs.button';
400  var EVENT_KEY$1 = "." + DATA_KEY$1;
401  var DATA_API_KEY$1 = '.data-api';
402  var JQUERY_NO_CONFLICT$1 = $.fn[NAME$1];
403  var ClassName$1 = {
404    ACTIVE: 'active',
405    BUTTON: 'btn',
406    FOCUS: 'focus'
407  };
408  var Selector$1 = {
409    DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
410    DATA_TOGGLE: '[data-toggle="buttons"]',
411    INPUT: 'input:not([type="hidden"])',
412    ACTIVE: '.active',
413    BUTTON: '.btn'
414  };
415  var Event$1 = {
416    CLICK_DATA_API: "click" + EVENT_KEY$1 + DATA_API_KEY$1,
417    FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY$1 + DATA_API_KEY$1 + " " + ("blur" + EVENT_KEY$1 + DATA_API_KEY$1)
418    /**
419     * ------------------------------------------------------------------------
420     * Class Definition
421     * ------------------------------------------------------------------------
422     */
423
424  };
425
426  var Button =
427  /*#__PURE__*/
428  function () {
429    function Button(element) {
430      this._element = element;
431    } // Getters
432
433
434    var _proto = Button.prototype;
435
436    // Public
437    _proto.toggle = function toggle() {
438      var triggerChangeEvent = true;
439      var addAriaPressed = true;
440      var rootElement = $(this._element).closest(Selector$1.DATA_TOGGLE)[0];
441
442      if (rootElement) {
443        var input = this._element.querySelector(Selector$1.INPUT);
444
445        if (input) {
446          if (input.type === 'radio') {
447            if (input.checked && this._element.classList.contains(ClassName$1.ACTIVE)) {
448              triggerChangeEvent = false;
449            } else {
450              var activeElement = rootElement.querySelector(Selector$1.ACTIVE);
451
452              if (activeElement) {
453                $(activeElement).removeClass(ClassName$1.ACTIVE);
454              }
455            }
456          }
457
458          if (triggerChangeEvent) {
459            if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
460              return;
461            }
462
463            input.checked = !this._element.classList.contains(ClassName$1.ACTIVE);
464            $(input).trigger('change');
465          }
466
467          input.focus();
468          addAriaPressed = false;
469        }
470      }
471
472      if (addAriaPressed) {
473        this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName$1.ACTIVE));
474      }
475
476      if (triggerChangeEvent) {
477        $(this._element).toggleClass(ClassName$1.ACTIVE);
478      }
479    };
480
481    _proto.dispose = function dispose() {
482      $.removeData(this._element, DATA_KEY$1);
483      this._element = null;
484    } // Static
485    ;
486
487    Button._jQueryInterface = function _jQueryInterface(config) {
488      return this.each(function () {
489        var data = $(this).data(DATA_KEY$1);
490
491        if (!data) {
492          data = new Button(this);
493          $(this).data(DATA_KEY$1, data);
494        }
495
496        if (config === 'toggle') {
497          data[config]();
498        }
499      });
500    };
501
502    _createClass(Button, null, [{
503      key: "VERSION",
504      get: function get() {
505        return VERSION$1;
506      }
507    }]);
508
509    return Button;
510  }();
511  /**
512   * ------------------------------------------------------------------------
513   * Data Api implementation
514   * ------------------------------------------------------------------------
515   */
516
517
518  $(document).on(Event$1.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {
519    event.preventDefault();
520    var button = event.target;
521
522    if (!$(button).hasClass(ClassName$1.BUTTON)) {
523      button = $(button).closest(Selector$1.BUTTON);
524    }
525
526    Button._jQueryInterface.call($(button), 'toggle');
527  }).on(Event$1.FOCUS_BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {
528    var button = $(event.target).closest(Selector$1.BUTTON)[0];
529    $(button).toggleClass(ClassName$1.FOCUS, /^focus(in)?$/.test(event.type));
530  });
531  /**
532   * ------------------------------------------------------------------------
533   * jQuery
534   * ------------------------------------------------------------------------
535   */
536
537  $.fn[NAME$1] = Button._jQueryInterface;
538  $.fn[NAME$1].Constructor = Button;
539
540  $.fn[NAME$1].noConflict = function () {
541    $.fn[NAME$1] = JQUERY_NO_CONFLICT$1;
542    return Button._jQueryInterface;
543  };
544
545  /**
546   * ------------------------------------------------------------------------
547   * Constants
548   * ------------------------------------------------------------------------
549   */
550
551  var NAME$2 = 'carousel';
552  var VERSION$2 = '4.3.1';
553  var DATA_KEY$2 = 'bs.carousel';
554  var EVENT_KEY$2 = "." + DATA_KEY$2;
555  var DATA_API_KEY$2 = '.data-api';
556  var JQUERY_NO_CONFLICT$2 = $.fn[NAME$2];
557  var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
558
559  var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
560
561  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
562
563  var SWIPE_THRESHOLD = 40;
564  var Default = {
565    interval: 5000,
566    keyboard: true,
567    slide: false,
568    pause: 'hover',
569    wrap: true,
570    touch: true
571  };
572  var DefaultType = {
573    interval: '(number|boolean)',
574    keyboard: 'boolean',
575    slide: '(boolean|string)',
576    pause: '(string|boolean)',
577    wrap: 'boolean',
578    touch: 'boolean'
579  };
580  var Direction = {
581    NEXT: 'next',
582    PREV: 'prev',
583    LEFT: 'left',
584    RIGHT: 'right'
585  };
586  var Event$2 = {
587    SLIDE: "slide" + EVENT_KEY$2,
588    SLID: "slid" + EVENT_KEY$2,
589    KEYDOWN: "keydown" + EVENT_KEY$2,
590    MOUSEENTER: "mouseenter" + EVENT_KEY$2,
591    MOUSELEAVE: "mouseleave" + EVENT_KEY$2,
592    TOUCHSTART: "touchstart" + EVENT_KEY$2,
593    TOUCHMOVE: "touchmove" + EVENT_KEY$2,
594    TOUCHEND: "touchend" + EVENT_KEY$2,
595    POINTERDOWN: "pointerdown" + EVENT_KEY$2,
596    POINTERUP: "pointerup" + EVENT_KEY$2,
597    DRAG_START: "dragstart" + EVENT_KEY$2,
598    LOAD_DATA_API: "load" + EVENT_KEY$2 + DATA_API_KEY$2,
599    CLICK_DATA_API: "click" + EVENT_KEY$2 + DATA_API_KEY$2
600  };
601  var ClassName$2 = {
602    CAROUSEL: 'carousel',
603    ACTIVE: 'active',
604    SLIDE: 'slide',
605    RIGHT: 'carousel-item-right',
606    LEFT: 'carousel-item-left',
607    NEXT: 'carousel-item-next',
608    PREV: 'carousel-item-prev',
609    ITEM: 'carousel-item',
610    POINTER_EVENT: 'pointer-event'
611  };
612  var Selector$2 = {
613    ACTIVE: '.active',
614    ACTIVE_ITEM: '.active.carousel-item',
615    ITEM: '.carousel-item',
616    ITEM_IMG: '.carousel-item img',
617    NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
618    INDICATORS: '.carousel-indicators',
619    DATA_SLIDE: '[data-slide], [data-slide-to]',
620    DATA_RIDE: '[data-ride="carousel"]'
621  };
622  var PointerType = {
623    TOUCH: 'touch',
624    PEN: 'pen'
625    /**
626     * ------------------------------------------------------------------------
627     * Class Definition
628     * ------------------------------------------------------------------------
629     */
630
631  };
632
633  var Carousel =
634  /*#__PURE__*/
635  function () {
636    function Carousel(element, config) {
637      this._items = null;
638      this._interval = null;
639      this._activeElement = null;
640      this._isPaused = false;
641      this._isSliding = false;
642      this.touchTimeout = null;
643      this.touchStartX = 0;
644      this.touchDeltaX = 0;
645      this._config = this._getConfig(config);
646      this._element = element;
647      this._indicatorsElement = this._element.querySelector(Selector$2.INDICATORS);
648      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
649      this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);
650
651      this._addEventListeners();
652    } // Getters
653
654
655    var _proto = Carousel.prototype;
656
657    // Public
658    _proto.next = function next() {
659      if (!this._isSliding) {
660        this._slide(Direction.NEXT);
661      }
662    };
663
664    _proto.nextWhenVisible = function nextWhenVisible() {
665      // Don't call next when the page isn't visible
666      // or the carousel or its parent isn't visible
667      if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {
668        this.next();
669      }
670    };
671
672    _proto.prev = function prev() {
673      if (!this._isSliding) {
674        this._slide(Direction.PREV);
675      }
676    };
677
678    _proto.pause = function pause(event) {
679      if (!event) {
680        this._isPaused = true;
681      }
682
683      if (this._element.querySelector(Selector$2.NEXT_PREV)) {
684        Util.triggerTransitionEnd(this._element);
685        this.cycle(true);
686      }
687
688      clearInterval(this._interval);
689      this._interval = null;
690    };
691
692    _proto.cycle = function cycle(event) {
693      if (!event) {
694        this._isPaused = false;
695      }
696
697      if (this._interval) {
698        clearInterval(this._interval);
699        this._interval = null;
700      }
701
702      if (this._config.interval && !this._isPaused) {
703        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
704      }
705    };
706
707    _proto.to = function to(index) {
708      var _this = this;
709
710      this._activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);
711
712      var activeIndex = this._getItemIndex(this._activeElement);
713
714      if (index > this._items.length - 1 || index < 0) {
715        return;
716      }
717
718      if (this._isSliding) {
719        $(this._element).one(Event$2.SLID, function () {
720          return _this.to(index);
721        });
722        return;
723      }
724
725      if (activeIndex === index) {
726        this.pause();
727        this.cycle();
728        return;
729      }
730
731      var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
732
733      this._slide(direction, this._items[index]);
734    };
735
736    _proto.dispose = function dispose() {
737      $(this._element).off(EVENT_KEY$2);
738      $.removeData(this._element, DATA_KEY$2);
739      this._items = null;
740      this._config = null;
741      this._element = null;
742      this._interval = null;
743      this._isPaused = null;
744      this._isSliding = null;
745      this._activeElement = null;
746      this._indicatorsElement = null;
747    } // Private
748    ;
749
750    _proto._getConfig = function _getConfig(config) {
751      config = _objectSpread({}, Default, config);
752      Util.typeCheckConfig(NAME$2, config, DefaultType);
753      return config;
754    };
755
756    _proto._handleSwipe = function _handleSwipe() {
757      var absDeltax = Math.abs(this.touchDeltaX);
758
759      if (absDeltax <= SWIPE_THRESHOLD) {
760        return;
761      }
762
763      var direction = absDeltax / this.touchDeltaX; // swipe left
764
765      if (direction > 0) {
766        this.prev();
767      } // swipe right
768
769
770      if (direction < 0) {
771        this.next();
772      }
773    };
774
775    _proto._addEventListeners = function _addEventListeners() {
776      var _this2 = this;
777
778      if (this._config.keyboard) {
779        $(this._element).on(Event$2.KEYDOWN, function (event) {
780          return _this2._keydown(event);
781        });
782      }
783
784      if (this._config.pause === 'hover') {
785        $(this._element).on(Event$2.MOUSEENTER, function (event) {
786          return _this2.pause(event);
787        }).on(Event$2.MOUSELEAVE, function (event) {
788          return _this2.cycle(event);
789        });
790      }
791
792      if (this._config.touch) {
793        this._addTouchEventListeners();
794      }
795    };
796
797    _proto._addTouchEventListeners = function _addTouchEventListeners() {
798      var _this3 = this;
799
800      if (!this._touchSupported) {
801        return;
802      }
803
804      var start = function start(event) {
805        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
806          _this3.touchStartX = event.originalEvent.clientX;
807        } else if (!_this3._pointerEvent) {
808          _this3.touchStartX = event.originalEvent.touches[0].clientX;
809        }
810      };
811
812      var move = function move(event) {
813        // ensure swiping with one touch and not pinching
814        if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {
815          _this3.touchDeltaX = 0;
816        } else {
817          _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;
818        }
819      };
820
821      var end = function end(event) {
822        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
823          _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;
824        }
825
826        _this3._handleSwipe();
827
828        if (_this3._config.pause === 'hover') {
829          // If it's a touch-enabled device, mouseenter/leave are fired as
830          // part of the mouse compatibility events on first tap - the carousel
831          // would stop cycling until user tapped out of it;
832          // here, we listen for touchend, explicitly pause the carousel
833          // (as if it's the second time we tap on it, mouseenter compat event
834          // is NOT fired) and after a timeout (to allow for mouse compatibility
835          // events to fire) we explicitly restart cycling
836          _this3.pause();
837
838          if (_this3.touchTimeout) {
839            clearTimeout(_this3.touchTimeout);
840          }
841
842          _this3.touchTimeout = setTimeout(function (event) {
843            return _this3.cycle(event);
844          }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);
845        }
846      };
847
848      $(this._element.querySelectorAll(Selector$2.ITEM_IMG)).on(Event$2.DRAG_START, function (e) {
849        return e.preventDefault();
850      });
851
852      if (this._pointerEvent) {
853        $(this._element).on(Event$2.POINTERDOWN, function (event) {
854          return start(event);
855        });
856        $(this._element).on(Event$2.POINTERUP, function (event) {
857          return end(event);
858        });
859
860        this._element.classList.add(ClassName$2.POINTER_EVENT);
861      } else {
862        $(this._element).on(Event$2.TOUCHSTART, function (event) {
863          return start(event);
864        });
865        $(this._element).on(Event$2.TOUCHMOVE, function (event) {
866          return move(event);
867        });
868        $(this._element).on(Event$2.TOUCHEND, function (event) {
869          return end(event);
870        });
871      }
872    };
873
874    _proto._keydown = function _keydown(event) {
875      if (/input|textarea/i.test(event.target.tagName)) {
876        return;
877      }
878
879      switch (event.which) {
880        case ARROW_LEFT_KEYCODE:
881          event.preventDefault();
882          this.prev();
883          break;
884
885        case ARROW_RIGHT_KEYCODE:
886          event.preventDefault();
887          this.next();
888          break;
889
890        default:
891      }
892    };
893
894    _proto._getItemIndex = function _getItemIndex(element) {
895      this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector$2.ITEM)) : [];
896      return this._items.indexOf(element);
897    };
898
899    _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
900      var isNextDirection = direction === Direction.NEXT;
901      var isPrevDirection = direction === Direction.PREV;
902
903      var activeIndex = this._getItemIndex(activeElement);
904
905      var lastItemIndex = this._items.length - 1;
906      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
907
908      if (isGoingToWrap && !this._config.wrap) {
909        return activeElement;
910      }
911
912      var delta = direction === Direction.PREV ? -1 : 1;
913      var itemIndex = (activeIndex + delta) % this._items.length;
914      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
915    };
916
917    _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
918      var targetIndex = this._getItemIndex(relatedTarget);
919
920      var fromIndex = this._getItemIndex(this._element.querySelector(Selector$2.ACTIVE_ITEM));
921
922      var slideEvent = $.Event(Event$2.SLIDE, {
923        relatedTarget: relatedTarget,
924        direction: eventDirectionName,
925        from: fromIndex,
926        to: targetIndex
927      });
928      $(this._element).trigger(slideEvent);
929      return slideEvent;
930    };
931
932    _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
933      if (this._indicatorsElement) {
934        var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector$2.ACTIVE));
935        $(indicators).removeClass(ClassName$2.ACTIVE);
936
937        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
938
939        if (nextIndicator) {
940          $(nextIndicator).addClass(ClassName$2.ACTIVE);
941        }
942      }
943    };
944
945    _proto._slide = function _slide(direction, element) {
946      var _this4 = this;
947
948      var activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);
949
950      var activeElementIndex = this._getItemIndex(activeElement);
951
952      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
953
954      var nextElementIndex = this._getItemIndex(nextElement);
955
956      var isCycling = Boolean(this._interval);
957      var directionalClassName;
958      var orderClassName;
959      var eventDirectionName;
960
961      if (direction === Direction.NEXT) {
962        directionalClassName = ClassName$2.LEFT;
963        orderClassName = ClassName$2.NEXT;
964        eventDirectionName = Direction.LEFT;
965      } else {
966        directionalClassName = ClassName$2.RIGHT;
967        orderClassName = ClassName$2.PREV;
968        eventDirectionName = Direction.RIGHT;
969      }
970
971      if (nextElement && $(nextElement).hasClass(ClassName$2.ACTIVE)) {
972        this._isSliding = false;
973        return;
974      }
975
976      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
977
978      if (slideEvent.isDefaultPrevented()) {
979        return;
980      }
981
982      if (!activeElement || !nextElement) {
983        // Some weirdness is happening, so we bail
984        return;
985      }
986
987      this._isSliding = true;
988
989      if (isCycling) {
990        this.pause();
991      }
992
993      this._setActiveIndicatorElement(nextElement);
994
995      var slidEvent = $.Event(Event$2.SLID, {
996        relatedTarget: nextElement,
997        direction: eventDirectionName,
998        from: activeElementIndex,
999        to: nextElementIndex
1000      });
1001
1002      if ($(this._element).hasClass(ClassName$2.SLIDE)) {
1003        $(nextElement).addClass(orderClassName);
1004        Util.reflow(nextElement);
1005        $(activeElement).addClass(directionalClassName);
1006        $(nextElement).addClass(directionalClassName);
1007        var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);
1008
1009        if (nextElementInterval) {
1010          this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
1011          this._config.interval = nextElementInterval;
1012        } else {
1013          this._config.interval = this._config.defaultInterval || this._config.interval;
1014        }
1015
1016        var transitionDuration = Util.getTransitionDurationFromElement(activeElement);
1017        $(activeElement).one(Util.TRANSITION_END, function () {
1018          $(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName$2.ACTIVE);
1019          $(activeElement).removeClass(ClassName$2.ACTIVE + " " + orderClassName + " " + directionalClassName);
1020          _this4._isSliding = false;
1021          setTimeout(function () {
1022            return $(_this4._element).trigger(slidEvent);
1023          }, 0);
1024        }).emulateTransitionEnd(transitionDuration);
1025      } else {
1026        $(activeElement).removeClass(ClassName$2.ACTIVE);
1027        $(nextElement).addClass(ClassName$2.ACTIVE);
1028        this._isSliding = false;
1029        $(this._element).trigger(slidEvent);
1030      }
1031
1032      if (isCycling) {
1033        this.cycle();
1034      }
1035    } // Static
1036    ;
1037
1038    Carousel._jQueryInterface = function _jQueryInterface(config) {
1039      return this.each(function () {
1040        var data = $(this).data(DATA_KEY$2);
1041
1042        var _config = _objectSpread({}, Default, $(this).data());
1043
1044        if (typeof config === 'object') {
1045          _config = _objectSpread({}, _config, config);
1046        }
1047
1048        var action = typeof config === 'string' ? config : _config.slide;
1049
1050        if (!data) {
1051          data = new Carousel(this, _config);
1052          $(this).data(DATA_KEY$2, data);
1053        }
1054
1055        if (typeof config === 'number') {
1056          data.to(config);
1057        } else if (typeof action === 'string') {
1058          if (typeof data[action] === 'undefined') {
1059            throw new TypeError("No method named \"" + action + "\"");
1060          }
1061
1062          data[action]();
1063        } else if (_config.interval && _config.ride) {
1064          data.pause();
1065          data.cycle();
1066        }
1067      });
1068    };
1069
1070    Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
1071      var selector = Util.getSelectorFromElement(this);
1072
1073      if (!selector) {
1074        return;
1075      }
1076
1077      var target = $(selector)[0];
1078
1079      if (!target || !$(target).hasClass(ClassName$2.CAROUSEL)) {
1080        return;
1081      }
1082
1083      var config = _objectSpread({}, $(target).data(), $(this).data());
1084
1085      var slideIndex = this.getAttribute('data-slide-to');
1086
1087      if (slideIndex) {
1088        config.interval = false;
1089      }
1090
1091      Carousel._jQueryInterface.call($(target), config);
1092
1093      if (slideIndex) {
1094        $(target).data(DATA_KEY$2).to(slideIndex);
1095      }
1096
1097      event.preventDefault();
1098    };
1099
1100    _createClass(Carousel, null, [{
1101      key: "VERSION",
1102      get: function get() {
1103        return VERSION$2;
1104      }
1105    }, {
1106      key: "Default",
1107      get: function get() {
1108        return Default;
1109      }
1110    }]);
1111
1112    return Carousel;
1113  }();
1114  /**
1115   * ------------------------------------------------------------------------
1116   * Data Api implementation
1117   * ------------------------------------------------------------------------
1118   */
1119
1120
1121  $(document).on(Event$2.CLICK_DATA_API, Selector$2.DATA_SLIDE, Carousel._dataApiClickHandler);
1122  $(window).on(Event$2.LOAD_DATA_API, function () {
1123    var carousels = [].slice.call(document.querySelectorAll(Selector$2.DATA_RIDE));
1124
1125    for (var i = 0, len = carousels.length; i < len; i++) {
1126      var $carousel = $(carousels[i]);
1127
1128      Carousel._jQueryInterface.call($carousel, $carousel.data());
1129    }
1130  });
1131  /**
1132   * ------------------------------------------------------------------------
1133   * jQuery
1134   * ------------------------------------------------------------------------
1135   */
1136
1137  $.fn[NAME$2] = Carousel._jQueryInterface;
1138  $.fn[NAME$2].Constructor = Carousel;
1139
1140  $.fn[NAME$2].noConflict = function () {
1141    $.fn[NAME$2] = JQUERY_NO_CONFLICT$2;
1142    return Carousel._jQueryInterface;
1143  };
1144
1145  /**
1146   * ------------------------------------------------------------------------
1147   * Constants
1148   * ------------------------------------------------------------------------
1149   */
1150
1151  var NAME$3 = 'collapse';
1152  var VERSION$3 = '4.3.1';
1153  var DATA_KEY$3 = 'bs.collapse';
1154  var EVENT_KEY$3 = "." + DATA_KEY$3;
1155  var DATA_API_KEY$3 = '.data-api';
1156  var JQUERY_NO_CONFLICT$3 = $.fn[NAME$3];
1157  var Default$1 = {
1158    toggle: true,
1159    parent: ''
1160  };
1161  var DefaultType$1 = {
1162    toggle: 'boolean',
1163    parent: '(string|element)'
1164  };
1165  var Event$3 = {
1166    SHOW: "show" + EVENT_KEY$3,
1167    SHOWN: "shown" + EVENT_KEY$3,
1168    HIDE: "hide" + EVENT_KEY$3,
1169    HIDDEN: "hidden" + EVENT_KEY$3,
1170    CLICK_DATA_API: "click" + EVENT_KEY$3 + DATA_API_KEY$3
1171  };
1172  var ClassName$3 = {
1173    SHOW: 'show',
1174    COLLAPSE: 'collapse',
1175    COLLAPSING: 'collapsing',
1176    COLLAPSED: 'collapsed'
1177  };
1178  var Dimension = {
1179    WIDTH: 'width',
1180    HEIGHT: 'height'
1181  };
1182  var Selector$3 = {
1183    ACTIVES: '.show, .collapsing',
1184    DATA_TOGGLE: '[data-toggle="collapse"]'
1185    /**
1186     * ------------------------------------------------------------------------
1187     * Class Definition
1188     * ------------------------------------------------------------------------
1189     */
1190
1191  };
1192
1193  var Collapse =
1194  /*#__PURE__*/
1195  function () {
1196    function Collapse(element, config) {
1197      this._isTransitioning = false;
1198      this._element = element;
1199      this._config = this._getConfig(config);
1200      this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
1201      var toggleList = [].slice.call(document.querySelectorAll(Selector$3.DATA_TOGGLE));
1202
1203      for (var i = 0, len = toggleList.length; i < len; i++) {
1204        var elem = toggleList[i];
1205        var selector = Util.getSelectorFromElement(elem);
1206        var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
1207          return foundElem === element;
1208        });
1209
1210        if (selector !== null && filterElement.length > 0) {
1211          this._selector = selector;
1212
1213          this._triggerArray.push(elem);
1214        }
1215      }
1216
1217      this._parent = this._config.parent ? this._getParent() : null;
1218
1219      if (!this._config.parent) {
1220        this._addAriaAndCollapsedClass(this._element, this._triggerArray);
1221      }
1222
1223      if (this._config.toggle) {
1224        this.toggle();
1225      }
1226    } // Getters
1227
1228
1229    var _proto = Collapse.prototype;
1230
1231    // Public
1232    _proto.toggle = function toggle() {
1233      if ($(this._element).hasClass(ClassName$3.SHOW)) {
1234        this.hide();
1235      } else {
1236        this.show();
1237      }
1238    };
1239
1240    _proto.show = function show() {
1241      var _this = this;
1242
1243      if (this._isTransitioning || $(this._element).hasClass(ClassName$3.SHOW)) {
1244        return;
1245      }
1246
1247      var actives;
1248      var activesData;
1249
1250      if (this._parent) {
1251        actives = [].slice.call(this._parent.querySelectorAll(Selector$3.ACTIVES)).filter(function (elem) {
1252          if (typeof _this._config.parent === 'string') {
1253            return elem.getAttribute('data-parent') === _this._config.parent;
1254          }
1255
1256          return elem.classList.contains(ClassName$3.COLLAPSE);
1257        });
1258
1259        if (actives.length === 0) {
1260          actives = null;
1261        }
1262      }
1263
1264      if (actives) {
1265        activesData = $(actives).not(this._selector).data(DATA_KEY$3);
1266
1267        if (activesData && activesData._isTransitioning) {
1268          return;
1269        }
1270      }
1271
1272      var startEvent = $.Event(Event$3.SHOW);
1273      $(this._element).trigger(startEvent);
1274
1275      if (startEvent.isDefaultPrevented()) {
1276        return;
1277      }
1278
1279      if (actives) {
1280        Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');
1281
1282        if (!activesData) {
1283          $(actives).data(DATA_KEY$3, null);
1284        }
1285      }
1286
1287      var dimension = this._getDimension();
1288
1289      $(this._element).removeClass(ClassName$3.COLLAPSE).addClass(ClassName$3.COLLAPSING);
1290      this._element.style[dimension] = 0;
1291
1292      if (this._triggerArray.length) {
1293        $(this._triggerArray).removeClass(ClassName$3.COLLAPSED).attr('aria-expanded', true);
1294      }
1295
1296      this.setTransitioning(true);
1297
1298      var complete = function complete() {
1299        $(_this._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).addClass(ClassName$3.SHOW);
1300        _this._element.style[dimension] = '';
1301
1302        _this.setTransitioning(false);
1303
1304        $(_this._element).trigger(Event$3.SHOWN);
1305      };
1306
1307      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
1308      var scrollSize = "scroll" + capitalizedDimension;
1309      var transitionDuration = Util.getTransitionDurationFromElement(this._element);
1310      $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
1311      this._element.style[dimension] = this._element[scrollSize] + "px";
1312    };
1313
1314    _proto.hide = function hide() {
1315      var _this2 = this;
1316
1317      if (this._isTransitioning || !$(this._element).hasClass(ClassName$3.SHOW)) {
1318        return;
1319      }
1320
1321      var startEvent = $.Event(Event$3.HIDE);
1322      $(this._element).trigger(startEvent);
1323
1324      if (startEvent.isDefaultPrevented()) {
1325        return;
1326      }
1327
1328      var dimension = this._getDimension();
1329
1330      this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
1331      Util.reflow(this._element);
1332      $(this._element).addClass(ClassName$3.COLLAPSING).removeClass(ClassName$3.COLLAPSE).removeClass(ClassName$3.SHOW);
1333      var triggerArrayLength = this._triggerArray.length;
1334
1335      if (triggerArrayLength > 0) {
1336        for (var i = 0; i < triggerArrayLength; i++) {
1337          var trigger = this._triggerArray[i];
1338          var selector = Util.getSelectorFromElement(trigger);
1339
1340          if (selector !== null) {
1341            var $elem = $([].slice.call(document.querySelectorAll(selector)));
1342
1343            if (!$elem.hasClass(ClassName$3.SHOW)) {
1344              $(trigger).addClass(ClassName$3.COLLAPSED).attr('aria-expanded', false);
1345            }
1346          }
1347        }
1348      }
1349
1350      this.setTransitioning(true);
1351
1352      var complete = function complete() {
1353        _this2.setTransitioning(false);
1354
1355        $(_this2._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).trigger(Event$3.HIDDEN);
1356      };
1357
1358      this._element.style[dimension] = '';
1359      var transitionDuration = Util.getTransitionDurationFromElement(this._element);
1360      $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
1361    };
1362
1363    _proto.setTransitioning = function setTransitioning(isTransitioning) {
1364      this._isTransitioning = isTransitioning;
1365    };
1366
1367    _proto.dispose = function dispose() {
1368      $.removeData(this._element, DATA_KEY$3);
1369      this._config = null;
1370      this._parent = null;
1371      this._element = null;
1372      this._triggerArray = null;
1373      this._isTransitioning = null;
1374    } // Private
1375    ;
1376
1377    _proto._getConfig = function _getConfig(config) {
1378      config = _objectSpread({}, Default$1, config);
1379      config.toggle = Boolean(config.toggle); // Coerce string values
1380
1381      Util.typeCheckConfig(NAME$3, config, DefaultType$1);
1382      return config;
1383    };
1384
1385    _proto._getDimension = function _getDimension() {
1386      var hasWidth = $(this._element).hasClass(Dimension.WIDTH);
1387      return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
1388    };
1389
1390    _proto._getParent = function _getParent() {
1391      var _this3 = this;
1392
1393      var parent;
1394
1395      if (Util.isElement(this._config.parent)) {
1396        parent = this._config.parent; // It's a jQuery object
1397
1398        if (typeof this._config.parent.jquery !== 'undefined') {
1399          parent = this._config.parent[0];
1400        }
1401      } else {
1402        parent = document.querySelector(this._config.parent);
1403      }
1404
1405      var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
1406      var children = [].slice.call(parent.querySelectorAll(selector));
1407      $(children).each(function (i, element) {
1408        _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
1409      });
1410      return parent;
1411    };
1412
1413    _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
1414      var isOpen = $(element).hasClass(ClassName$3.SHOW);
1415
1416      if (triggerArray.length) {
1417        $(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
1418      }
1419    } // Static
1420    ;
1421
1422    Collapse._getTargetFromElement = function _getTargetFromElement(element) {
1423      var selector = Util.getSelectorFromElement(element);
1424      return selector ? document.querySelector(selector) : null;
1425    };
1426
1427    Collapse._jQueryInterface = function _jQueryInterface(config) {
1428      return this.each(function () {
1429        var $this = $(this);
1430        var data = $this.data(DATA_KEY$3);
1431
1432        var _config = _objectSpread({}, Default$1, $this.data(), typeof config === 'object' && config ? config : {});
1433
1434        if (!data && _config.toggle && /show|hide/.test(config)) {
1435          _config.toggle = false;
1436        }
1437
1438        if (!data) {
1439          data = new Collapse(this, _config);
1440          $this.data(DATA_KEY$3, data);
1441        }
1442
1443        if (typeof config === 'string') {
1444          if (typeof data[config] === 'undefined') {
1445            throw new TypeError("No method named \"" + config + "\"");
1446          }
1447
1448          data[config]();
1449        }
1450      });
1451    };
1452
1453    _createClass(Collapse, null, [{
1454      key: "VERSION",
1455      get: function get() {
1456        return VERSION$3;
1457      }
1458    }, {
1459      key: "Default",
1460      get: function get() {
1461        return Default$1;
1462      }
1463    }]);
1464
1465    return Collapse;
1466  }();
1467  /**
1468   * ------------------------------------------------------------------------
1469   * Data Api implementation
1470   * ------------------------------------------------------------------------
1471   */
1472
1473
1474  $(document).on(Event$3.CLICK_DATA_API, Selector$3.DATA_TOGGLE, function (event) {
1475    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
1476    if (event.currentTarget.tagName === 'A') {
1477      event.preventDefault();
1478    }
1479
1480    var $trigger = $(this);
1481    var selector = Util.getSelectorFromElement(this);
1482    var selectors = [].slice.call(document.querySelectorAll(selector));
1483    $(selectors).each(function () {
1484      var $target = $(this);
1485      var data = $target.data(DATA_KEY$3);
1486      var config = data ? 'toggle' : $trigger.data();
1487
1488      Collapse._jQueryInterface.call($target, config);
1489    });
1490  });
1491  /**
1492   * ------------------------------------------------------------------------
1493   * jQuery
1494   * ------------------------------------------------------------------------
1495   */
1496
1497  $.fn[NAME$3] = Collapse._jQueryInterface;
1498  $.fn[NAME$3].Constructor = Collapse;
1499
1500  $.fn[NAME$3].noConflict = function () {
1501    $.fn[NAME$3] = JQUERY_NO_CONFLICT$3;
1502    return Collapse._jQueryInterface;
1503  };
1504
1505  /**
1506   * ------------------------------------------------------------------------
1507   * Constants
1508   * ------------------------------------------------------------------------
1509   */
1510
1511  var NAME$4 = 'dropdown';
1512  var VERSION$4 = '4.3.1';
1513  var DATA_KEY$4 = 'bs.dropdown';
1514  var EVENT_KEY$4 = "." + DATA_KEY$4;
1515  var DATA_API_KEY$4 = '.data-api';
1516  var JQUERY_NO_CONFLICT$4 = $.fn[NAME$4];
1517  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
1518
1519  var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
1520
1521  var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
1522
1523  var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
1524
1525  var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
1526
1527  var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
1528
1529  var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
1530  var Event$4 = {
1531    HIDE: "hide" + EVENT_KEY$4,
1532    HIDDEN: "hidden" + EVENT_KEY$4,
1533    SHOW: "show" + EVENT_KEY$4,
1534    SHOWN: "shown" + EVENT_KEY$4,
1535    CLICK: "click" + EVENT_KEY$4,
1536    CLICK_DATA_API: "click" + EVENT_KEY$4 + DATA_API_KEY$4,
1537    KEYDOWN_DATA_API: "keydown" + EVENT_KEY$4 + DATA_API_KEY$4,
1538    KEYUP_DATA_API: "keyup" + EVENT_KEY$4 + DATA_API_KEY$4
1539  };
1540  var ClassName$4 = {
1541    DISABLED: 'disabled',
1542    SHOW: 'show',
1543    DROPUP: 'dropup',
1544    DROPRIGHT: 'dropright',
1545    DROPLEFT: 'dropleft',
1546    MENURIGHT: 'dropdown-menu-right',
1547    MENULEFT: 'dropdown-menu-left',
1548    POSITION_STATIC: 'position-static'
1549  };
1550  var Selector$4 = {
1551    DATA_TOGGLE: '[data-toggle="dropdown"]',
1552    FORM_CHILD: '.dropdown form',
1553    MENU: '.dropdown-menu',
1554    NAVBAR_NAV: '.navbar-nav',
1555    VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'
1556  };
1557  var AttachmentMap = {
1558    TOP: 'top-start',
1559    TOPEND: 'top-end',
1560    BOTTOM: 'bottom-start',
1561    BOTTOMEND: 'bottom-end',
1562    RIGHT: 'right-start',
1563    RIGHTEND: 'right-end',
1564    LEFT: 'left-start',
1565    LEFTEND: 'left-end'
1566  };
1567  var Default$2 = {
1568    offset: 0,
1569    flip: true,
1570    boundary: 'scrollParent',
1571    reference: 'toggle',
1572    display: 'dynamic'
1573  };
1574  var DefaultType$2 = {
1575    offset: '(number|string|function)',
1576    flip: 'boolean',
1577    boundary: '(string|element)',
1578    reference: '(string|element)',
1579    display: 'string'
1580    /**
1581     * ------------------------------------------------------------------------
1582     * Class Definition
1583     * ------------------------------------------------------------------------
1584     */
1585
1586  };
1587
1588  var Dropdown =
1589  /*#__PURE__*/
1590  function () {
1591    function Dropdown(element, config) {
1592      this._element = element;
1593      this._popper = null;
1594      this._config = this._getConfig(config);
1595      this._menu = this._getMenuElement();
1596      this._inNavbar = this._detectNavbar();
1597
1598      this._addEventListeners();
1599    } // Getters
1600
1601
1602    var _proto = Dropdown.prototype;
1603
1604    // Public
1605    _proto.toggle = function toggle() {
1606      if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED)) {
1607        return;
1608      }
1609
1610      var parent = Dropdown._getParentFromElement(this._element);
1611
1612      var isActive = $(this._menu).hasClass(ClassName$4.SHOW);
1613
1614      Dropdown._clearMenus();
1615
1616      if (isActive) {
1617        return;
1618      }
1619
1620      var relatedTarget = {
1621        relatedTarget: this._element
1622      };
1623      var showEvent = $.Event(Event$4.SHOW, relatedTarget);
1624      $(parent).trigger(showEvent);
1625
1626      if (showEvent.isDefaultPrevented()) {
1627        return;
1628      } // Disable totally Popper.js for Dropdown in Navbar
1629
1630
1631      if (!this._inNavbar) {
1632        /**
1633         * Check for Popper dependency
1634         * Popper - https://popper.js.org
1635         */
1636        if (typeof Popper === 'undefined') {
1637          throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org/)');
1638        }
1639
1640        var referenceElement = this._element;
1641
1642        if (this._config.reference === 'parent') {
1643          referenceElement = parent;
1644        } else if (Util.isElement(this._config.reference)) {
1645          referenceElement = this._config.reference; // Check if it's jQuery element
1646
1647          if (typeof this._config.reference.jquery !== 'undefined') {
1648            referenceElement = this._config.reference[0];
1649          }
1650        } // If boundary is not `scrollParent`, then set position to `static`
1651        // to allow the menu to "escape" the scroll parent's boundaries
1652        // https://github.com/twbs/bootstrap/issues/24251
1653
1654
1655        if (this._config.boundary !== 'scrollParent') {
1656          $(parent).addClass(ClassName$4.POSITION_STATIC);
1657        }
1658
1659        this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());
1660      } // If this is a touch-enabled device we add extra
1661      // empty mouseover listeners to the body's immediate children;
1662      // only needed because of broken event delegation on iOS
1663      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
1664
1665
1666      if ('ontouchstart' in document.documentElement && $(parent).closest(Selector$4.NAVBAR_NAV).length === 0) {
1667        $(document.body).children().on('mouseover', null, $.noop);
1668      }
1669
1670      this._element.focus();
1671
1672      this._element.setAttribute('aria-expanded', true);
1673
1674      $(this._menu).toggleClass(ClassName$4.SHOW);
1675      $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));
1676    };
1677
1678    _proto.show = function show() {
1679      if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) {
1680        return;
1681      }
1682
1683      var relatedTarget = {
1684        relatedTarget: this._element
1685      };
1686      var showEvent = $.Event(Event$4.SHOW, relatedTarget);
1687
1688      var parent = Dropdown._getParentFromElement(this._element);
1689
1690      $(parent).trigger(showEvent);
1691
1692      if (showEvent.isDefaultPrevented()) {
1693        return;
1694      }
1695
1696      $(this._menu).toggleClass(ClassName$4.SHOW);
1697      $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));
1698    };
1699
1700    _proto.hide = function hide() {
1701      if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || !$(this._menu).hasClass(ClassName$4.SHOW)) {
1702        return;
1703      }
1704
1705      var relatedTarget = {
1706        relatedTarget: this._element
1707      };
1708      var hideEvent = $.Event(Event$4.HIDE, relatedTarget);
1709
1710      var parent = Dropdown._getParentFromElement(this._element);
1711
1712      $(parent).trigger(hideEvent);
1713
1714      if (hideEvent.isDefaultPrevented()) {
1715        return;
1716      }
1717
1718      $(this._menu).toggleClass(ClassName$4.SHOW);
1719      $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));
1720    };
1721
1722    _proto.dispose = function dispose() {
1723      $.removeData(this._element, DATA_KEY$4);
1724      $(this._element).off(EVENT_KEY$4);
1725      this._element = null;
1726      this._menu = null;
1727
1728      if (this._popper !== null) {
1729        this._popper.destroy();
1730
1731        this._popper = null;
1732      }
1733    };
1734
1735    _proto.update = function update() {
1736      this._inNavbar = this._detectNavbar();
1737
1738      if (this._popper !== null) {
1739        this._popper.scheduleUpdate();
1740      }
1741    } // Private
1742    ;
1743
1744    _proto._addEventListeners = function _addEventListeners() {
1745      var _this = this;
1746
1747      $(this._element).on(Event$4.CLICK, function (event) {
1748        event.preventDefault();
1749        event.stopPropagation();
1750
1751        _this.toggle();
1752      });
1753    };
1754
1755    _proto._getConfig = function _getConfig(config) {
1756      config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config);
1757      Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
1758      return config;
1759    };
1760
1761    _proto._getMenuElement = function _getMenuElement() {
1762      if (!this._menu) {
1763        var parent = Dropdown._getParentFromElement(this._element);
1764
1765        if (parent) {
1766          this._menu = parent.querySelector(Selector$4.MENU);
1767        }
1768      }
1769
1770      return this._menu;
1771    };
1772
1773    _proto._getPlacement = function _getPlacement() {
1774      var $parentDropdown = $(this._element.parentNode);
1775      var placement = AttachmentMap.BOTTOM; // Handle dropup
1776
1777      if ($parentDropdown.hasClass(ClassName$4.DROPUP)) {
1778        placement = AttachmentMap.TOP;
1779
1780        if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {
1781          placement = AttachmentMap.TOPEND;
1782        }
1783      } else if ($parentDropdown.hasClass(ClassName$4.DROPRIGHT)) {
1784        placement = AttachmentMap.RIGHT;
1785      } else if ($parentDropdown.hasClass(ClassName$4.DROPLEFT)) {
1786        placement = AttachmentMap.LEFT;
1787      } else if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {
1788        placement = AttachmentMap.BOTTOMEND;
1789      }
1790
1791      return placement;
1792    };
1793
1794    _proto._detectNavbar = function _detectNavbar() {
1795      return $(this._element).closest('.navbar').length > 0;
1796    };
1797
1798    _proto._getOffset = function _getOffset() {
1799      var _this2 = this;
1800
1801      var offset = {};
1802
1803      if (typeof this._config.offset === 'function') {
1804        offset.fn = function (data) {
1805          data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});
1806          return data;
1807        };
1808      } else {
1809        offset.offset = this._config.offset;
1810      }
1811
1812      return offset;
1813    };
1814
1815    _proto._getPopperConfig = function _getPopperConfig() {
1816      var popperConfig = {
1817        placement: this._getPlacement(),
1818        modifiers: {
1819          offset: this._getOffset(),
1820          flip: {
1821            enabled: this._config.flip
1822          },
1823          preventOverflow: {
1824            boundariesElement: this._config.boundary
1825          }
1826        } // Disable Popper.js if we have a static display
1827
1828      };
1829
1830      if (this._config.display === 'static') {
1831        popperConfig.modifiers.applyStyle = {
1832          enabled: false
1833        };
1834      }
1835
1836      return popperConfig;
1837    } // Static
1838    ;
1839
1840    Dropdown._jQueryInterface = function _jQueryInterface(config) {
1841      return this.each(function () {
1842        var data = $(this).data(DATA_KEY$4);
1843
1844        var _config = typeof config === 'object' ? config : null;
1845
1846        if (!data) {
1847          data = new Dropdown(this, _config);
1848          $(this).data(DATA_KEY$4, data);
1849        }
1850
1851        if (typeof config === 'string') {
1852          if (typeof data[config] === 'undefined') {
1853            throw new TypeError("No method named \"" + config + "\"");
1854          }
1855
1856          data[config]();
1857        }
1858      });
1859    };
1860
1861    Dropdown._clearMenus = function _clearMenus(event) {
1862      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
1863        return;
1864      }
1865
1866      var toggles = [].slice.call(document.querySelectorAll(Selector$4.DATA_TOGGLE));
1867
1868      for (var i = 0, len = toggles.length; i < len; i++) {
1869        var parent = Dropdown._getParentFromElement(toggles[i]);
1870
1871        var context = $(toggles[i]).data(DATA_KEY$4);
1872        var relatedTarget = {
1873          relatedTarget: toggles[i]
1874        };
1875
1876        if (event && event.type === 'click') {
1877          relatedTarget.clickEvent = event;
1878        }
1879
1880        if (!context) {
1881          continue;
1882        }
1883
1884        var dropdownMenu = context._menu;
1885
1886        if (!$(parent).hasClass(ClassName$4.SHOW)) {
1887          continue;
1888        }
1889
1890        if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {
1891          continue;
1892        }
1893
1894        var hideEvent = $.Event(Event$4.HIDE, relatedTarget);
1895        $(parent).trigger(hideEvent);
1896
1897        if (hideEvent.isDefaultPrevented()) {
1898          continue;
1899        } // If this is a touch-enabled device we remove the extra
1900        // empty mouseover listeners we added for iOS support
1901
1902
1903        if ('ontouchstart' in document.documentElement) {
1904          $(document.body).children().off('mouseover', null, $.noop);
1905        }
1906
1907        toggles[i].setAttribute('aria-expanded', 'false');
1908        $(dropdownMenu).removeClass(ClassName$4.SHOW);
1909        $(parent).removeClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));
1910      }
1911    };
1912
1913    Dropdown._getParentFromElement = function _getParentFromElement(element) {
1914      var parent;
1915      var selector = Util.getSelectorFromElement(element);
1916
1917      if (selector) {
1918        parent = document.querySelector(selector);
1919      }
1920
1921      return parent || element.parentNode;
1922    } // eslint-disable-next-line complexity
1923    ;
1924
1925    Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
1926      // If not input/textarea:
1927      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command
1928      // If input/textarea:
1929      //  - If space key => not a dropdown command
1930      //  - If key is other than escape
1931      //    - If key is not up or down => not a dropdown command
1932      //    - If trigger inside the menu =>
1932 not a dropdown command
1933      if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector$4.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
1934        return;
1935      }
1936
1937      event.preventDefault();
1938      event.stopPropagation();
1939
1940      if (this.disabled || $(this).hasClass(ClassName$4.DISABLED)) {
1941        return;
1942      }
1943
1944      var parent = Dropdown._getParentFromElement(this);
1945
1946      var isActive = $(parent).hasClass(ClassName$4.SHOW);
1947
1948      if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
1949        if (event.which === ESCAPE_KEYCODE) {
1950          var toggle = parent.querySelector(Selector$4.DATA_TOGGLE);
1951          $(toggle).trigger('focus');
1952        }
1953
1954        $(this).trigger('click');
1955        return;
1956      }
1957
1958      var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS));
1959
1960      if (items.length === 0) {
1961        return;
1962      }
1963
1964      var index = items.indexOf(event.target);
1965
1966      if (event.which === ARROW_UP_KEYCODE && index > 0) {
1967        // Up
1968        index--;
1969      }
1970
1971      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
1972        // Down
1973        index++;
1974      }
1975
1976      if (index < 0) {
1977        index = 0;
1978      }
1979
1980      items[index].focus();
1981    };
1982
1983    _createClass(Dropdown, null, [{
1984      key: "VERSION",
1985      get: function get() {
1986        return VERSION$4;
1987      }
1988    }, {
1989      key: "Default",
1990      get: function get() {
1991        return Default$2;
1992      }
1993    }, {
1994      key: "DefaultType",
1995      get: function get() {
1996        return DefaultType$2;
1997      }
1998    }]);
1999
2000    return Dropdown;
2001  }();
2002  /**
2003   * ------------------------------------------------------------------------
2004   * Data Api implementation
2005   * ------------------------------------------------------------------------
2006   */
2007
2008
2009  $(document).on(Event$4.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event$4.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler).on(Event$4.CLICK_DATA_API + " " + Event$4.KEYUP_DATA_API, Dropdown._clearMenus).on(Event$4.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) {
2010    event.preventDefault();
2011    event.stopPropagation();
2012
2013    Dropdown._jQueryInterface.call($(this), 'toggle');
2014  }).on(Event$4.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) {
2015    e.stopPropagation();
2016  });
2017  /**
2018   * ------------------------------------------------------------------------
2019   * jQuery
2020   * ------------------------------------------------------------------------
2021   */
2022
2023  $.fn[NAME$4] = Dropdown._jQueryInterface;
2024  $.fn[NAME$4].Constructor = Dropdown;
2025
2026  $.fn[NAME$4].noConflict = function () {
2027    $.fn[NAME$4] = JQUERY_NO_CONFLICT$4;
2028    return Dropdown._jQueryInterface;
2029  };
2030
2031  /**
2032   * ------------------------------------------------------------------------
2033   * Constants
2034   * ------------------------------------------------------------------------
2035   */
2036
2037  var NAME$5 = 'modal';
2038  var VERSION$5 = '4.3.1';
2039  var DATA_KEY$5 = 'bs.modal';
2040  var EVENT_KEY$5 = "." + DATA_KEY$5;
2041  var DATA_API_KEY$5 = '.data-api';
2042  var JQUERY_NO_CONFLICT$5 = $.fn[NAME$5];
2043  var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key
2044
2045  var Default$3 = {
2046    backdrop: true,
2047    keyboard: true,
2048    focus: true,
2049    show: true
2050  };
2051  var DefaultType$3 = {
2052    backdrop: '(boolean|string)',
2053    keyboard: 'boolean',
2054    focus: 'boolean',
2055    show: 'boolean'
2056  };
2057  var Event$5 = {
2058    HIDE: "hide" + EVENT_KEY$5,
2059    HIDDEN: "hidden" + EVENT_KEY$5,
2060    SHOW: "show" + EVENT_KEY$5,
2061    SHOWN: "shown" + EVENT_KEY$5,
2062    FOCUSIN: "focusin" + EVENT_KEY$5,
2063    RESIZE: "resize" + EVENT_KEY$5,
2064    CLICK_DISMISS: "click.dismiss" + EVENT_KEY$5,
2065    KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY$5,
2066    MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY$5,
2067    MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY$5,
2068    CLICK_DATA_API: "click" + EVENT_KEY$5 + DATA_API_KEY$5
2069  };
2070  var ClassName$5 = {
2071    SCROLLABLE: 'modal-dialog-scrollable',
2072    SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
2073    BACKDROP: 'modal-backdrop',
2074    OPEN: 'modal-open',
2075    FADE: 'fade',
2076    SHOW: 'show'
2077  };
2078  var Selector$5 = {
2079    DIALOG: '.modal-dialog',
2080    MODAL_BODY: '.modal-body',
2081    DATA_TOGGLE: '[data-toggle="modal"]',
2082    DATA_DISMISS: '[data-dismiss="modal"]',
2083    FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
2084    STICKY_CONTENT: '.sticky-top'
2085    /**
2086     * ------------------------------------------------------------------------
2087     * Class Definition
2088     * ------------------------------------------------------------------------
2089     */
2090
2091  };
2092
2093  var Modal =
2094  /*#__PURE__*/
2095  function () {
2096    function Modal(element, config) {
2097      this._config = this._getConfig(config);
2098      this._element = element;
2099      this._dialog = element.querySelector(Selector$5.DIALOG);
2100      this._backdrop = null;
2101      this._isShown = false;
2102      this._isBodyOverflowing = false;
2103      this._ignoreBackdropClick = false;
2104      this._isTransitioning = false;
2105      this._scrollbarWidth = 0;
2106    } // Getters
2107
2108
2109    var _proto = Modal.prototype;
2110
2111    // Public
2112    _proto.toggle = function toggle(relatedTarget) {
2113      return this._isShown ? this.hide() : this.show(relatedTarget);
2114    };
2115
2116    _proto.show = function show(relatedTarget) {
2117      var _this = this;
2118
2119      if (this._isShown || this._isTransitioning) {
2120        return;
2121      }
2122
2123      if ($(this._element).hasClass(ClassName$5.FADE)) {
2124        this._isTransitioning = true;
2125      }
2126
2127      var showEvent = $.Event(Event$5.SHOW, {
2128        relatedTarget: relatedTarget
2129      });
2130      $(this._element).trigger(showEvent);
2131
2132      if (this._isShown || showEvent.isDefaultPrevented()) {
2133        return;
2134      }
2135
2136      this._isShown = true;
2137
2138      this._checkScrollbar();
2139
2140      this._setScrollbar();
2141
2142      this._adjustDialog();
2143
2144      this._setEscapeEvent();
2145
2146      this._setResizeEvent();
2147
2148      $(this._element).on(Event$5.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) {
2149        return _this.hide(event);
2150      });
2151      $(this._dialog).on(Event$5.MOUSEDOWN_DISMISS, function () {
2152        $(_this._element).one(Event$5.MOUSEUP_DISMISS, function (event) {
2153          if ($(event.target).is(_this._element)) {
2154            _this._ignoreBackdropClick = true;
2155          }
2156        });
2157      });
2158
2159      this._showBackdrop(function () {
2160        return _this._showElement(relatedTarget);
2161      });
2162    };
2163
2164    _proto.hide = function hide(event) {
2165      var _this2 = this;
2166
2167      if (event) {
2168        event.preventDefault();
2169      }
2170
2171      if (!this._isShown || this._isTransitioning) {
2172        return;
2173      }
2174
2175      var hideEvent = $.Event(Event$5.HIDE);
2176      $(this._element).trigger(hideEvent);
2177
2178      if (!this._isShown || hideEvent.isDefaultPrevented()) {
2179        return;
2180      }
2181
2182      this._isShown = false;
2183      var transition = $(this._element).hasClass(ClassName$5.FADE);
2184
2185      if (transition) {
2186        this._isTransitioning = true;
2187      }
2188
2189      this._setEscapeEvent();
2190
2191      this._setResizeEvent();
2192
2193      $(document).off(Event$5.FOCUSIN);
2194      $(this._element).removeClass(ClassName$5.SHOW);
2195      $(this._element).off(Event$5.CLICK_DISMISS);
2196      $(this._dialog).off(Event$5.MOUSEDOWN_DISMISS);
2197
2198      if (transition) {
2199        var transitionDuration = Util.getTransitionDurationFromElement(this._element);
2200        $(this._element).one(Util.TRANSITION_END, function (event) {
2201          return _this2._hideModal(event);
2202        }).emulateTransitionEnd(transitionDuration);
2203      } else {
2204        this._hideModal();
2205      }
2206    };
2207
2208    _proto.dispose = function dispose() {
2209      [window, this._element, this._dialog].forEach(function (htmlElement) {
2210        return $(htmlElement).off(EVENT_KEY$5);
2211      });
2212      /**
2213       * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`
2214       * Do not move `document` in `htmlElements` array
2215       * It will remove `Event.CLICK_DATA_API` event that should remain
2216       */
2217
2218      $(document).off(Event$5.FOCUSIN);
2219      $.removeData(this._element, DATA_KEY$5);
2220      this._config = null;
2221      this._element = null;
2222      this._dialog = null;
2223      this._backdrop = null;
2224      this._isShown = null;
2225      this._isBodyOverflowing = null;
2226      this._ignoreBackdropClick = null;
2227      this._isTransitioning = null;
2228      this._scrollbarWidth = null;
2229    };
2230
2231    _proto.handleUpdate = function handleUpdate() {
2232      this._adjustDialog();
2233    } // Private
2234    ;
2235
2236    _proto._getConfig = function _getConfig(config) {
2237      config = _objectSpread({}, Default$3, config);
2238      Util.typeCheckConfig(NAME$5, config, DefaultType$3);
2239      return config;
2240    };
2241
2242    _proto._showElement = function _showElement(relatedTarget) {
2243      var _this3 = this;
2244
2245      var transition = $(this._element).hasClass(ClassName$5.FADE);
2246
2247      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
2248        // Don't move modal's DOM position
2249        document.body.appendChild(this._element);
2250      }
2251
2252      this._element.style.display = 'block';
2253
2254      this._element.removeAttribute('aria-hidden');
2255
2256      this._element.setAttribute('aria-modal', true);
2257
2258      if ($(this._dialog).hasClass(ClassName$5.SCROLLABLE)) {
2259        this._dialog.querySelector(Selector$5.MODAL_BODY).scrollTop = 0;
2260      } else {
2261        this._element.scrollTop = 0;
2262      }
2263
2264      if (transition) {
2265        Util.reflow(this._element);
2266      }
2267
2268      $(this._element).addClass(ClassName$5.SHOW);
2269
2270      if (this._config.focus) {
2271        this._enforceFocus();
2272      }
2273
2274      var shownEvent = $.Event(Event$5.SHOWN, {
2275        relatedTarget: relatedTarget
2276      });
2277
2278      var transitionComplete = function transitionComplete() {
2279        if (_this3._config.focus) {
2280          _this3._element.focus();
2281        }
2282
2283        _this3._isTransitioning = false;
2284        $(_this3._element).trigger(shownEvent);
2285      };
2286
2287      if (transition) {
2288        var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);
2289        $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
2290      } else {
2291        transitionComplete();
2292      }
2293    };
2294
2295    _proto._enforceFocus = function _enforceFocus() {
2296      var _this4 = this;
2297
2298      $(document).off(Event$5.FOCUSIN) // Guard against infinite focus loop
2299      .on(Event$5.FOCUSIN, function (event) {
2300        if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) {
2301          _this4._element.focus();
2302        }
2303      });
2304    };
2305
2306    _proto._setEscapeEvent = function _setEscapeEvent() {
2307      var _this5 = this;
2308
2309      if (this._isShown && this._config.keyboard) {
2310        $(this._element).on(Event$5.KEYDOWN_DISMISS, function (event) {
2311          if (event.which === ESCAPE_KEYCODE$1) {
2312            event.preventDefault();
2313
2314            _this5.hide();
2315          }
2316        });
2317      } else if (!this._isShown) {
2318        $(this._element).off(Event$5.KEYDOWN_DISMISS);
2319      }
2320    };
2321
2322    _proto._setResizeEvent = function _setResizeEvent() {
2323      var _this6 = this;
2324
2325      if (this._isShown) {
2326        $(window).on(Event$5.RESIZE, function (event) {
2327          return _this6.handleUpdate(event);
2328        });
2329      } else {
2330        $(window).off(Event$5.RESIZE);
2331      }
2332    };
2333
2334    _proto._hideModal = function _hideModal() {
2335      var _this7 = this;
2336
2337      this._element.style.display = 'none';
2338
2339      this._element.setAttribute('aria-hidden', true);
2340
2341      this._element.removeAttribute('aria-modal');
2342
2343      this._isTransitioning = false;
2344
2345      this._showBackdrop(function () {
2346        $(document.body).removeClass(ClassName$5.OPEN);
2347
2348        _this7._resetAdjustments();
2349
2350        _this7._resetScrollbar();
2351
2352        $(_this7._element).trigger(Event$5.HIDDEN);
2353      });
2354    };
2355
2356    _proto._removeBackdrop = function _removeBackdrop() {
2357      if (this._backdrop) {
2358        $(this._backdrop).remove();
2359        this._backdrop = null;
2360      }
2361    };
2362
2363    _proto._showBackdrop = function _showBackdrop(callback) {
2364      var _this8 = this;
2365
2366      var animate = $(this._element).hasClass(ClassName$5.FADE) ? ClassName$5.FADE : '';
2367
2368      if (this._isShown && this._config.backdrop) {
2369        this._backdrop = document.createElement('div');
2370        this._backdrop.className = ClassName$5.BACKDROP;
2371
2372        if (animate) {
2373          this._backdrop.classList.add(animate);
2374        }
2375
2376        $(this._backdrop).appendTo(document.body);
2377        $(this._element).on(Event$5.CLICK_DISMISS, function (event) {
2378          if (_this8._ignoreBackdropClick) {
2379            _this8._ignoreBackdropClick = false;
2380            return;
2381          }
2382
2383          if (event.target !== event.currentTarget) {
2384            return;
2385          }
2386
2387          if (_this8._config.backdrop === 'static') {
2388            _this8._element.focus();
2389          } else {
2390            _this8.hide();
2391          }
2392        });
2393
2394        if (animate) {
2395          Util.reflow(this._backdrop);
2396        }
2397
2398        $(this._backdrop).addClass(ClassName$5.SHOW);
2399
2400        if (!callback) {
2401          return;
2402        }
2403
2404        if (!animate) {
2405          callback();
2406          return;
2407        }
2408
2409        var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
2410        $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
2411      } else if (!this._isShown && this._backdrop) {
2412        $(this._backdrop).removeClass(ClassName$5.SHOW);
2413
2414        var callbackRemove = function callbackRemove() {
2415          _this8._removeBackdrop();
2416
2417          if (callback) {
2418            callback();
2419          }
2420        };
2421
2422        if ($(this._element).hasClass(ClassName$5.FADE)) {
2423          var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
2424
2425          $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
2426        } else {
2427          callbackRemove();
2428        }
2429      } else if (callback) {
2430        callback();
2431      }
2432    } // ----------------------------------------------------------------------
2433    // the following methods are used to handle overflowing modals
2434    // todo (fat): these should probably be refactored out of modal.js
2435    // ----------------------------------------------------------------------
2436    ;
2437
2438    _proto._adjustDialog = function _adjustDialog() {
2439      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
2440
2441      if (!this._isBodyOverflowing && isModalOverflowing) {
2442        this._element.style.paddingLeft = this._scrollbarWidth + "px";
2443      }
2444
2445      if (this._isBodyOverflowing && !isModalOverflowing) {
2446        this._element.style.paddingRight = this._scrollbarWidth + "px";
2447      }
2448    };
2449
2450    _proto._resetAdjustments = function _resetAdjustments() {
2451      this._element.style.paddingLeft = '';
2452      this._element.style.paddingRight = '';
2453    };
2454
2455    _proto._checkScrollbar = function _checkScrollbar() {
2456      var rect = document.body.getBoundingClientRect();
2457      this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
2458      this._scrollbarWidth = this._getScrollbarWidth();
2459    };
2460
2461    _proto._setScrollbar = function _setScrollbar() {
2462      var _this9 = this;
2463
2464      if (this._isBodyOverflowing) {
2465        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
2466        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
2467        var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));
2468        var stickyContent = [].slice.call(document.querySelectorAll(Selector$5.STICKY_CONTENT)); // Adjust fixed content padding
2469
2470        $(fixedContent).each(function (index, element) {
2471          var actualPadding = element.style.paddingRight;
2472          var calculatedPadding = $(element).css('padding-right');
2473          $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
2474        }); // Adjust sticky content margin
2475
2476        $(stickyContent).each(function (index, element) {
2477          var actualMargin = element.style.marginRight;
2478          var calculatedMargin = $(element).css('margin-right');
2479          $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
2480        }); // Adjust body padding
2481
2482        var actualPadding = document.body.style.paddingRight;
2483        var calculatedPadding = $(document.body).css('padding-right');
2484        $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
2485      }
2486
2487      $(document.body).addClass(ClassName$5.OPEN);
2488    };
2489
2490    _proto._resetScrollbar = function _resetScrollbar() {
2491      // Restore fixed content padding
2492      var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));
2493      $(fixedContent).each(function (index, element) {
2494        var padding = $(element).data('padding-right');
2495        $(element).removeData('padding-right');
2496        element.style.paddingRight = padding ? padding : '';
2497      }); // Restore sticky content
2498
2499      var elements = [].slice.call(document.querySelectorAll("" + Selector$5.STICKY_CONTENT));
2500      $(elements).each(function (index, element) {
2501        var margin = $(element).data('margin-right');
2502
2503        if (typeof margin !== 'undefined') {
2504          $(element).css('margin-right', margin).removeData('margin-right');
2505        }
2506      }); // Restore body padding
2507
2508      var padding = $(document.body).data('padding-right');
2509      $(document.body).removeData('padding-right');
2510      document.body.style.paddingRight = padding ? padding : '';
2511    };
2512
2513    _proto._getScrollbarWidth = function _getScrollbarWidth() {
2514      // thx d.walsh
2515      var scrollDiv = document.createElement('div');
2516      scrollDiv.className = ClassName$5.SCROLLBAR_MEASURER;
2517      document.body.appendChild(scrollDiv);
2518      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
2519      document.body.removeChild(scrollDiv);
2520      return scrollbarWidth;
2521    } // Static
2522    ;
2523
2524    Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
2525      return this.each(function () {
2526        var data = $(this).data(DATA_KEY$5);
2527
2528        var _config = _objectSpread({}, Default$3, $(this).data(), typeof config === 'object' && config ? config : {});
2529
2530        if (!data) {
2531          data = new Modal(this, _config);
2532          $(this).data(DATA_KEY$5, data);
2533        }
2534
2535        if (typeof config === 'string') {
2536          if (typeof data[config] === 'undefined') {
2537            throw new TypeError("No method named \"" + config + "\"");
2538          }
2539
2540          data[config](relatedTarget);
2541        } else if (_config.show) {
2542          data.show(relatedTarget);
2543        }
2544      });
2545    };
2546
2547    _createClass(Modal, null, [{
2548      key: "VERSION",
2549      get: function get() {
2550        return VERSION$5;
2551      }
2552    }, {
2553      key: "Default",
2554      get: function get() {
2555        return Default$3;
2556      }
2557    }]);
2558
2559    return Modal;
2560  }();
2561  /**
2562   * ------------------------------------------------------------------------
2563   * Data Api implementation
2564   * ------------------------------------------------------------------------
2565   */
2566
2567
2568  $(document).on(Event$5.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) {
2569    var _this10 = this;
2570
2571    var target;
2572    var selector = Util.getSelectorFromElement(this);
2573
2574    if (selector) {
2575      target = document.querySelector(selector);
2576    }
2577
2578    var config = $(target).data(DATA_KEY$5) ? 'toggle' : _objectSpread({}, $(target).data(), $(this).data());
2579
2580    if (this.tagName === 'A' || this.tagName === 'AREA') {
2581      event.preventDefault();
2582    }
2583
2584    var $target = $(target).one(Event$5.SHOW, function (showEvent) {
2585      if (showEvent.isDefaultPrevented()) {
2586        // Only register focus restorer if modal will actually get shown
2587        return;
2588      }
2589
2590      $target.one(Event$5.HIDDEN, function () {
2591        if ($(_this10).is(':visible')) {
2592          _this10.focus();
2593        }
2594      });
2595    });
2596
2597    Modal._jQueryInterface.call($(target), config, this);
2598  });
2599  /**
2600   * ------------------------------------------------------------------------
2601   * jQuery
2602   * ------------------------------------------------------------------------
2603   */
2604
2605  $.fn[NAME$5] = Modal._jQueryInterface;
2606  $.fn[NAME$5].Constructor = Modal;
2607
2608  $.fn[NAME$5].noConflict = function () {
2609    $.fn[NAME$5] = JQUERY_NO_CONFLICT$5;
2610    return Modal._jQueryInterface;
2611  };
2612
2613  /**
2614   * --------------------------------------------------------------------------
2615   * Bootstrap (v4.3.1): tools/sanitizer.js
2616   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2617   * --------------------------------------------------------------------------
2618   */
2619  var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];
2620  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
2621  var DefaultWhitelist = {
2622    // Global attributes allowed on any supplied element below.
2623    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
2624    a: ['target', 'href', 'title', 'rel'],
2625    area: [],
2626    b: [],
2627    br: [],
2628    col: [],
2629    code: [],
2630    div: [],
2631    em: [],
2632    hr: [],
2633    h1: [],
2634    h2: [],
2635    h3: [],
2636    h4: [],
2637    h5: [],
2638    h6: [],
2639    i: [],
2640    img: ['src', 'alt', 'title', 'width', 'height'],
2641    li: [],
2642    ol: [],
2643    p: [],
2644    pre: [],
2645    s: [],
2646    small: [],
2647    span: [],
2648    sub: [],
2649    sup: [],
2650    strong: [],
2651    u: [],
2652    ul: []
2653    /**
2654     * A pattern that recognizes a commonly useful subset of URLs that are safe.
2655     *
2656     * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
2657     */
2658
2659  };
2660  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;
2661  /**
2662   * A pattern that matches safe data URLs. Only matches image, video and audio types.
2663   *
2664   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
2665   */
2666
2667  var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;
2668
2669  function allowedAttribute(attr, allowedAttributeList) {
2670    var attrName = attr.nodeName.toLowerCase();
2671
2672    if (allowedAttributeList.indexOf(attrName) !== -1) {
2673      if (uriAttrs.indexOf(attrName) !== -1) {
2674        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));
2675      }
2676
2677      return true;
2678    }
2679
2680    var regExp = allowedAttributeList.filter(function (attrRegex) {
2681      return attrRegex instanceof RegExp;
2682    }); // Check if a regular expression validates the attribute.
2683
2684    for (var i = 0, l = regExp.length; i < l; i++) {
2685      if (attrName.match(regExp[i])) {
2686        return true;
2687      }
2688    }
2689
2690    return false;
2691  }
2692
2693  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
2694    if (unsafeHtml.length === 0) {
2695      return unsafeHtml;
2696    }
2697
2698    if (sanitizeFn && typeof sanitizeFn === 'function') {
2699      return sanitizeFn(unsafeHtml);
2700    }
2701
2702    var domParser = new window.DOMParser();
2703    var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
2704    var whitelistKeys = Object.keys(whiteList);
2705    var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));
2706
2707    var _loop = function _loop(i, len) {
2708      var el = elements[i];
2709      var elName = el.nodeName.toLowerCase();
2710
2711      if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {
2712        el.parentNode.removeChild(el);
2713        return "continue";
2714      }
2715
2716      var attributeList = [].slice.call(el.attributes);
2717      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);
2718      attributeList.forEach(function (attr) {
2719        if (!allowedAttribute(attr, whitelistedAttributes)) {
2720          el.removeAttribute(attr.nodeName);
2721        }
2722      });
2723    };
2724
2725    for (var i = 0, len = elements.length; i < len; i++) {
2726      var _ret = _loop(i, len);
2727
2728      if (_ret === "continue") continue;
2729    }
2730
2731    return createdDocument.body.innerHTML;
2732  }
2733
2734  /**
2735   * ------------------------------------------------------------------------
2736   * Constants
2737   * ------------------------------------------------------------------------
2738   */
2739
2740  var NAME$6 = 'tooltip';
2741  var VERSION$6 = '4.3.1';
2742  var DATA_KEY$6 = 'bs.tooltip';
2743  var EVENT_KEY$6 = "." + DATA_KEY$6;
2744  var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];
2745  var CLASS_PREFIX = 'bs-tooltip';
2746  var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
2747  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];
2748  var DefaultType$4 = {
2749    animation: 'boolean',
2750    template: 'string',
2751    title: '(string|element|function)',
2752    trigger: 'string',
2753    delay: '(number|object)',
2754    html: 'boolean',
2755    selector: '(string|boolean)',
2756    placement: '(string|function)',
2757    offset: '(number|string|function)',
2758    container: '(string|element|boolean)',
2759    fallbackPlacement: '(string|array)',
2760    boundary: '(string|element)',
2761    sanitize: 'boolean',
2762    sanitizeFn: '(null|function)',
2763    whiteList: 'object'
2764  };
2765  var AttachmentMap$1 = {
2766    AUTO: 'auto',
2767    TOP: 'top',
2768    RIGHT: 'right',
2769    BOTTOM: 'bottom',
2770    LEFT: 'left'
2771  };
2772  var Default$4 = {
2773    animation: true,
2774    template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>',
2775    trigger: 'hover focus',
2776    title: '',
2777    delay: 0,
2778    html: false,
2779    selector: false,
2780    placement: 'top',
2781    offset: 0,
2782    container: false,
2783    fallbackPlacement: 'flip',
2784    boundary: 'scrollParent',
2785    sanitize: true,
2786    sanitizeFn: null,
2787    whiteList: DefaultWhitelist
2788  };
2789  var HoverState = {
2790    SHOW: 'show',
2791    OUT: 'out'
2792  };
2793  var Event$6 = {
2794    HIDE: "hide" + EVENT_KEY$6,
2795    HIDDEN: "hidden" + EVENT_KEY$6,
2796    SHOW: "show" + EVENT_KEY$6,
2797    SHOWN: "shown" + EVENT_KEY$6,
2798    INSERTED: "inserted" + EVENT_KEY$6,
2799    CLICK: "click" + EVENT_KEY$6,
2800    FOCUSIN: "focusin" + EVENT_KEY$6,
2801    FOCUSOUT: "focusout" + EVENT_KEY$6,
2802    MOUSEENTER: "mouseenter" + EVENT_KEY$6,
2803    MOUSELEAVE: "mouseleave" + EVENT_KEY$6
2804  };
2805  var ClassName$6 = {
2806    FADE: 'fade',
2807    SHOW: 'show'
2808  };
2809  var Selector$6 = {
2810    TOOLTIP: '.tooltip',
2811    TOOLTIP_INNER: '.tooltip-inner',
2812    ARROW: '.arrow'
2813  };
2814  var Trigger = {
2815    HOVER: 'hover',
2816    FOCUS: 'focus',
2817    CLICK: 'click',
2818    MANUAL: 'manual'
2819    /**
2820     * ------------------------------------------------------------------------
2821     * Class Definition
2822     * ------------------------------------------------------------------------
2823     */
2824
2825  };
2826
2827  var Tooltip =
2828  /*#__PURE__*/
2829  function () {
2830    function Tooltip(element, config) {
2831      /**
2832       * Check for Popper dependency
2833       * Popper - https://popper.js.org
2834       */
2835      if (typeof Popper === 'undefined') {
2836        throw new TypeError('Bootstrap\'s tooltips require Popper.js (https://popper.js.org/)');
2837      } // private
2838
2839
2840      this._isEnabled = true;
2841      this._timeout = 0;
2842      this._hoverState = '';
2843      this._activeTrigger = {};
2844      this._popper = null; // Protected
2845
2846      this.element = element;
2847      this.config = this._getConfig(config);
2848      this.tip = null;
2849
2850      this._setListeners();
2851    } // Getters
2852
2853
2854    var _proto = Tooltip.prototype;
2855
2856    // Public
2857    _proto.enable = function enable() {
2858      this._isEnabled = true;
2859    };
2860
2861    _proto.disable = function disable() {
2862      this._isEnabled = false;
2863    };
2864
2865    _proto.toggleEnabled = function toggleEnabled() {
2866      this._isEnabled = !this._isEnabled;
2867    };
2868
2869    _proto.toggle = function toggle(event) {
2870      if (!this._isEnabled) {
2871        return;
2872      }
2873
2874      if (event) {
2875        var dataKey = this.constructor.DATA_KEY;
2876        var context = $(event.currentTarget).data(dataKey);
2877
2878        if (!context) {
2879          context = new this.constructor(event.currentTarget, this._getDelegateConfig());
2880          $(event.currentTarget).data(dataKey, context);
2881        }
2882
2883        context._activeTrigger.click = !context._activeTrigger.click;
2884
2885        if (context._isWithActiveTrigger()) {
2886          context._enter(null, context);
2887        } else {
2888          context._leave(null, context);
2889        }
2890      } else {
2891        if ($(this.getTipElement()).hasClass(ClassName$6.SHOW)) {
2892          this._leave(null, this);
2893
2894          return;
2895        }
2896
2897        this._enter(null, this);
2898      }
2899    };
2900
2901    _proto.dispose = function dispose() {
2902      clearTimeout(this._timeout);
2903      $.removeData(this.element, this.constructor.DATA_KEY);
2904      $(this.element).off(this.constructor.EVENT_KEY);
2905      $(this.element).closest('.modal').off('hide.bs.modal');
2906
2907      if (this.tip) {
2908        $(this.tip).remove();
2909      }
2910
2911      this._isEnabled = null;
2912      this._timeout = null;
2913      this._hoverState = null;
2914      this._activeTrigger = null;
2915
2916      if (this._popper !== null) {
2917        this._popper.destroy();
2918      }
2919
2920      this._popper = null;
2921      this.element = null;
2922      this.config = null;
2923      this.tip = null;
2924    };
2925
2926    _proto.show = function show() {
2927      var _this = this;
2928
2929      if ($(this.element).css('display') === 'none') {
2930        throw new Error('Please use show on visible elements');
2931      }
2932
2933      var showEvent = $.Event(this.constructor.Event.SHOW);
2934
2935      if (this.isWithContent() && this._isEnabled) {
2936        $(this.element).trigger(showEvent);
2937        var shadowRoot = Util.findShadowRoot(this.element);
2938        var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);
2939
2940        if (showEvent.isDefaultPrevented() || !isInTheDom) {
2941          return;
2942        }
2943
2944        var tip = this.getTipElement();
2945        var tipId = Util.getUID(this.constructor.NAME);
2946        tip.setAttribute('id', tipId);
2947        this.element.setAttribute('aria-describedby', tipId);
2948        this.setContent();
2949
2950        if (this.config.animation) {
2951          $(tip).addClass(ClassName$6.FADE);
2952        }
2953
2954        var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
2955
2956        var attachment = this._getAttachment(placement);
2957
2958        this.addAttachmentClass(attachment);
2959
2960        var container = this._getContainer();
2961
2962        $(tip).data(this.constructor.DATA_KEY, this);
2963
2964        if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {
2965          $(tip).appendTo(container);
2966        }
2967
2968        $(this.element).trigger(this.constructor.Event.INSERTED);
2969        this._popper = new Popper(this.element, tip, {
2970          placement: attachment,
2971          modifiers: {
2972            offset: this._getOffset(),
2973            flip: {
2974              behavior: this.config.fallbackPlacement
2975            },
2976            arrow: {
2977              element: Selector$6.ARROW
2978            },
2979            preventOverflow: {
2980              boundariesElement: this.config.boundary
2981            }
2982          },
2983          onCreate: function onCreate(data) {
2984            if (data.originalPlacement !== data.placement) {
2985              _this._handlePopperPlacementChange(data);
2986            }
2987          },
2988          onUpdate: function onUpdate(data) {
2989            return _this._handlePopperPlacementChange(data);
2990          }
2991        });
2992        $(tip).addClass(ClassName$6.SHOW); // If this is a touch-enabled device we add extra
2993        // empty mouseover listeners to the body's immediate children;
2994        // only needed because of broken event delegation on iOS
2995        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
2996
2997        if ('ontouchstart' in document.documentElement) {
2998          $(document.body).children().on('mouseover', null, $.noop);
2999        }
3000
3001        var complete = function complete() {
3002          if (_this.config.animation) {
3003            _this._fixTransition();
3004          }
3005
3006          var prevHoverState = _this._hoverState;
3007          _this._hoverState = null;
3008          $(_this.element).trigger(_this.constructor.Event.SHOWN);
3009
3010          if (prevHoverState === HoverState.OUT) {
3011            _this._leave(null, _this);
3012          }
3013        };
3014
3015        if ($(this.tip).hasClass(ClassName$6.FADE)) {
3016          var transitionDuration = Util.getTransitionDurationFromElement(this.tip);
3017          $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
3018        } else {
3019          complete();
3020        }
3021      }
3022    };
3023
3024    _proto.hide = function hide(callback) {
3025      var _this2 = this;
3026
3027      var tip = this.getTipElement();
3028      var hideEvent = $.Event(this.constructor.Event.HIDE);
3029
3030      var complete = function complete() {
3031        if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
3032          tip.parentNode.removeChild(tip);
3033        }
3034
3035        _this2._cleanTipClass();
3036
3037        _this2.element.removeAttribute('aria-describedby');
3038
3039        $(_this2.element).trigger(_this2.constructor.Event.HIDDEN);
3040
3041        if (_this2._popper !== null) {
3042          _this2._popper.destroy();
3043        }
3044
3045        if (callback) {
3046          callback();
3047        }
3048      };
3049
3050      $(this.element).trigger(hideEvent);
3051
3052      if (hideEvent.isDefaultPrevented()) {
3053        return;
3054      }
3055
3056      $(tip).removeClass(ClassName$6.SHOW); // If this is a touch-enabled device we remove the extra
3057      // empty mouseover listeners we added for iOS support
3058
3059      if ('ontouchstart' in document.documentElement) {
3060        $(document.body).children().off('mouseover', null, $.noop);
3061      }
3062
3063      this._activeTrigger[Trigger.CLICK] = false;
3064      this._activeTrigger[Trigger.FOCUS] = false;
3065      this._activeTrigger[Trigger.HOVER] = false;
3066
3067      if ($(this.tip).hasClass(ClassName$6.FADE)) {
3068        var transitionDuration = Util.getTransitionDurationFromElement(tip);
3069        $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
3070      } else {
3071        complete();
3072      }
3073
3074      this._hoverState = '';
3075    };
3076
3077    _proto.update = function update() {
3078      if (this._popper !== null) {
3079        this._popper.scheduleUpdate();
3080      }
3081    } // Protected
3082    ;
3083
3084    _proto.isWithContent = function isWithContent() {
3085      return Boolean(this.getTitle());
3086    };
3087
3088    _proto.addAttachmentClass = function addAttachmentClass(attachment) {
3089      $(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
3090    };
3091
3092    _proto.getTipElement = function getTipElement() {
3093      this.tip = this.tip || $(this.config.template)[0];
3094      return this.tip;
3095    };
3096
3097    _proto.setContent = function setContent() {
3098      var tip = this.getTipElement();
3099      this.setElementContent($(tip.querySelectorAll(Selector$6.TOOLTIP_INNER)), this.getTitle());
3100      $(tip).removeClass(ClassName$6.FADE + " " + ClassName$6.SHOW);
3101    };
3102
3103    _proto.setElementContent = function setElementContent($element, content) {
3104      if (typeof content === 'object' && (content.nodeType || content.jquery)) {
3105        // Content is a DOM node or a jQuery
3106        if (this.config.html) {
3107          if (!$(content).parent().is($element)) {
3108            $element.empty().append(content);
3109          }
3110        } else {
3111          $element.text($(content).text());
3112        }
3113
3114        return;
3115      }
3116
3117      if (this.config.html) {
3118        if (this.config.sanitize) {
3119          content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);
3120        }
3121
3122        $element.html(content);
3123      } else {
3124        $element.text(content);
3125      }
3126    };
3127
3128    _proto.getTitle = function getTitle() {
3129      var title = this.element.getAttribute('data-original-title');
3130
3131      if (!title) {
3132        title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
3133      }
3134
3135      return title;
3136    } // Private
3137    ;
3138
3139    _proto._getOffset = function _getOffset() {
3140      var _this3 = this;
3141
3142      var offset = {};
3143
3144      if (typeof this.config.offset === 'function') {
3145        offset.fn = function (data) {
3146          data.offsets = _objectSpread({}, data.offsets, _this3.config.offset(data.offsets, _this3.element) || {});
3147          return data;
3148        };
3149      } else {
3150        offset.offset = this.config.offset;
3151      }
3152
3153      return offset;
3154    };
3155
3156    _proto._getContainer = function _getContainer() {
3157      if (this.config.container === false) {
3158        return document.body;
3159      }
3160
3161      if (Util.isElement(this.config.container)) {
3162        return $(this.config.container);
3163      }
3164
3165      return $(document).find(this.config.container);
3166    };
3167
3168    _proto._getAttachment = function _getAttachment(placement) {
3169      return AttachmentMap$1[placement.toUpperCase()];
3170    };
3171
3172    _proto._setListeners = function _setListeners() {
3173      var _this4 = this;
3174
3175      var triggers = this.config.trigger.split(' ');
3176      triggers.forEach(function (trigger) {
3177        if (trigger === 'click') {
3178          $(_this4.element).on(_this4.constructor.Event.CLICK, _this4.config.selector, function (event) {
3179            return _this4.toggle(event);
3180          });
3181        } else if (trigger !== Trigger.MANUAL) {
3182          var eventIn = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSEENTER : _this4.constructor.Event.FOCUSIN;
3183          var eventOut = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSELEAVE : _this4.constructor.Event.FOCUSOUT;
3184          $(_this4.element).on(eventIn, _this4.config.selector, function (event) {
3185            return _this4._enter(event);
3186          }).on(eventOut, _this4.config.selector, function (event) {
3187            return _this4._leave(event);
3188          });
3189        }
3190      });
3191      $(this.element).closest('.modal').on('hide.bs.modal', function () {
3192        if (_this4.element) {
3193          _this4.hide();
3194        }
3195      });
3196
3197      if (this.config.selector) {
3198        this.config = _objectSpread({}, this.config, {
3199          trigger: 'manual',
3200          selector: ''
3201        });
3202      } else {
3203        this._fixTitle();
3204      }
3205    };
3206
3207    _proto._fixTitle = function _fixTitle() {
3208      var titleType = typeof this.element.getAttribute('data-original-title');
3209
3210      if (this.element.getAttribute('title') || titleType !== 'string') {
3211        this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
3212        this.element.setAttribute('title', '');
3213      }
3214    };
3215
3216    _proto._enter = function _enter(event, context) {
3217      var dataKey = this.constructor.DATA_KEY;
3218      context = context || $(event.currentTarget).data(dataKey);
3219
3220      if (!context) {
3221        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
3222        $(event.currentTarget).data(dataKey, context);
3223      }
3224
3225      if (event) {
3226        context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
3227      }
3228
3229      if ($(context.getTipElement()).hasClass(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) {
3230        context._hoverState = HoverState.SHOW;
3231        return;
3232      }
3233
3234      clearTimeout(context._timeout);
3235      context._hoverState = HoverState.SHOW;
3236
3237      if (!context.config.delay || !context.config.delay.show) {
3238        context.show();
3239        return;
3240      }
3241
3242      context._timeout = setTimeout(function () {
3243        if (context._hoverState === HoverState.SHOW) {
3244          context.show();
3245        }
3246      }, context.config.delay.show);
3247    };
3248
3249    _proto._leave = function _leave(event, context) {
3250      var dataKey = this.constructor.DATA_KEY;
3251      context = context || $(event.currentTarget).data(dataKey);
3252
3253      if (!context) {
3254        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
3255        $(event.currentTarget).data(dataKey, context);
3256      }
3257
3258      if (event) {
3259        context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
3260      }
3261
3262      if (context._isWithActiveTrigger()) {
3263        return;
3264      }
3265
3266      clearTimeout(context._timeout);
3267      context._hoverState = HoverState.OUT;
3268
3269      if (!context.config.delay || !context.config.delay.hide) {
3270        context.hide();
3271        return;
3272      }
3273
3274      context._timeout = setTimeout(function () {
3275        if (context._hoverState === HoverState.OUT) {
3276          context.hide();
3277        }
3278      }, context.config.delay.hide);
3279    };
3280
3281    _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
3282      for (var trigger in this._activeTrigger) {
3283        if (this._activeTrigger[trigger]) {
3284          return true;
3285        }
3286      }
3287
3288      return false;
3289    };
3290
3291    _proto._getConfig = function _getConfig(config) {
3292      var dataAttributes = $(this.element).data();
3293      Object.keys(dataAttributes).forEach(function (dataAttr) {
3294        if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {
3295          delete dataAttributes[dataAttr];
3296        }
3297      });
3298      config = _objectSpread({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});
3299
3300      if (typeof config.delay === 'number') {
3301        config.delay = {
3302          show: config.delay,
3303          hide: config.delay
3304        };
3305      }
3306
3307      if (typeof config.title === 'number') {
3308        config.title = config.title.toString();
3309      }
3310
3311      if (typeof config.content === 'number') {
3312        config.content = config.content.toString();
3313      }
3314
3315      Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);
3316
3317      if (config.sanitize) {
3318        config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);
3319      }
3320
3321      return config;
3322    };
3323
3324    _proto._getDelegateConfig = function _getDelegateConfig() {
3325      var config = {};
3326
3327      if (this.config) {
3328        for (var key in this.config) {
3329          if (this.constructor.Default[key] !== this.config[key]) {
3330            config[key] = this.config[key];
3331          }
3332        }
3333      }
3334
3335      return config;
3336    };
3337
3338    _proto._cleanTipClass = function _cleanTipClass() {
3339      var $tip = $(this.getTipElement());
3340      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
3341
3342      if (tabClass !== null && tabClass.length) {
3343        $tip.removeClass(tabClass.join(''));
3344      }
3345    };
3346
3347    _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {
3348      var popperInstance = popperData.instance;
3349      this.tip = popperInstance.popper;
3350
3351      this._cleanTipClass();
3352
3353      this.addAttachmentClass(this._getAttachment(popperData.placement));
3354    };
3355
3356    _proto._fixTransition = function _fixTransition() {
3357      var tip = this.getTipElement();
3358      var initConfigAnimation = this.config.animation;
3359
3360      if (tip.getAttribute('x-placement') !== null) {
3361        return;
3362      }
3363
3364      $(tip).removeClass(ClassName$6.FADE);
3365      this.config.animation = false;
3366      this.hide();
3367      this.show();
3368      this.config.animation = initConfigAnimation;
3369    } // Static
3370    ;
3371
3372    Tooltip._jQueryInterface = function _jQueryInterface(config) {
3373      return this.each(function () {
3374        var data = $(this).data(DATA_KEY$6);
3375
3376        var _config = typeof config === 'object' && config;
3377
3378        if (!data && /dispose|hide/.test(config)) {
3379          return;
3380        }
3381
3382        if (!data) {
3383          data = new Tooltip(this, _config);
3384          $(this).data(DATA_KEY$6, data);
3385        }
3386
3387        if (typeof config === 'string') {
3388          if (typeof data[config] === 'undefined') {
3389            throw new TypeError("No method named \"" + config + "\"");
3390          }
3391
3392          data[config]();
3393        }
3394      });
3395    };
3396
3397    _createClass(Tooltip, null, [{
3398      key: "VERSION",
3399      get: function get() {
3400        return VERSION$6;
3401      }
3402    }, {
3403      key: "Default",
3404      get: function get() {
3405        return Default$4;
3406      }
3407    }, {
3408      key: "NAME",
3409      get: function get() {
3410        return NAME$6;
3411      }
3412    }, {
3413      key: "DATA_KEY",
3414      get: function get() {
3415        return DATA_KEY$6;
3416      }
3417    }, {
3418      key: "Event",
3419      get: function get() {
3420        return Event$6;
3421      }
3422    }, {
3423      key: "EVENT_KEY",
3424      get: function get() {
3425        return EVENT_KEY$6;
3426      }
3427    }, {
3428      key: "DefaultType",
3429      get: function get() {
3430        return DefaultType$4;
3431      }
3432    }]);
3433
3434    return Tooltip;
3435  }();
3436  /**
3437   * ------------------------------------------------------------------------
3438   * jQuery
3439   * ------------------------------------------------------------------------
3440   */
3441
3442
3443  $.fn[NAME$6] = Tooltip._jQueryInterface;
3444  $.fn[NAME$6].Constructor = Tooltip;
3445
3446  $.fn[NAME$6].noConflict = function () {
3447    $.fn[NAME$6] = JQUERY_NO_CONFLICT$6;
3448    return Tooltip._jQueryInterface;
3449  };
3450
3451  /**
3452   * ------------------------------------------------------------------------
3453   * Constants
3454   * ------------------------------------------------------------------------
3455   */
3456
3457  var NAME$7 = 'popover';
3458  var VERSION$7 = '4.3.1';
3459  var DATA_KEY$7 = 'bs.popover';
3460  var EVENT_KEY$7 = "." + DATA_KEY$7;
3461  var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];
3462  var CLASS_PREFIX$1 = 'bs-popover';
3463  var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g');
3464
3465  var Default$5 = _objectSpread({}, Tooltip.Default, {
3466    placement: 'right',
3467    trigger: 'click',
3468    content: '',
3469    template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
3470  });
3471
3472  var DefaultType$5 = _objectSpread({}, Tooltip.DefaultType, {
3473    content: '(string|element|function)'
3474  });
3475
3476  var ClassName$7 = {
3477    FADE: 'fade',
3478    SHOW: 'show'
3479  };
3480  var Selector$7 = {
3481    TITLE: '.popover-header',
3482    CONTENT: '.popover-body'
3483  };
3484  var Event$7 = {
3485    HIDE: "hide" + EVENT_KEY$7,
3486    HIDDEN: "hidden" + EVENT_KEY$7,
3487    SHOW: "show" + EVENT_KEY$7,
3488    SHOWN: "shown" + EVENT_KEY$7,
3489    INSERTED: "inserted" + EVENT_KEY$7,
3490    CLICK: "click" + EVENT_KEY$7,
3491    FOCUSIN: "focusin" + EVENT_KEY$7,
3492    FOCUSOUT: "focusout" + EVENT_KEY$7,
3493    MOUSEENTER: "mouseenter" + EVENT_KEY$7,
3494    MOUSELEAVE: "mouseleave" + EVENT_KEY$7
3495    /**
3496     * ------------------------------------------------------------------------
3497     * Class Definition
3498     * ------------------------------------------------------------------------
3499     */
3500
3501  };
3502
3503  var Popover =
3504  /*#__PURE__*/
3505  function (_Tooltip) {
3506    _inheritsLoose(Popover, _Tooltip);
3507
3508    function Popover() {
3509      return _Tooltip.apply(this, arguments) || this;
3510    }
3511
3512    var _proto = Popover.prototype;
3513
3514    // Overrides
3515    _proto.isWithContent = function isWithContent() {
3516      return this.getTitle() || this._getContent();
3517    };
3518
3519    _proto.addAttachmentClass = function addAttachmentClass(attachment) {
3520      $(this.getTipElement()).addClass(CLASS_PREFIX$1 + "-" + attachment);
3521    };
3522
3523    _proto.getTipElement = function getTipElement() {
3524      this.tip = this.tip || $(this.config.template)[0];
3525      return this.tip;
3526    };
3527
3528    _proto.setContent = function setContent() {
3529      var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events
3530
3531      this.setElementContent($tip.find(Selector$7.TITLE), this.getTitle());
3532
3533      var content = this._getContent();
3534
3535      if (typeof content === 'function') {
3536        content = content.call(this.element);
3537      }
3538
3539      this.setElementContent($tip.find(Selector$7.CONTENT), content);
3540      $tip.removeClass(ClassName$7.FADE + " " + ClassName$7.SHOW);
3541    } // Private
3542    ;
3543
3544    _proto._getContent = function _getContent() {
3545      return this.element.getAttribute('data-content') || this.config.content;
3546    };
3547
3548    _proto._cleanTipClass = function _cleanTipClass() {
3549      var $tip = $(this.getTipElement());
3550      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);
3551
3552      if (tabClass !== null && tabClass.length > 0) {
3553        $tip.removeClass(tabClass.join(''));
3554      }
3555    } // Static
3556    ;
3557
3558    Popover._jQueryInterface = function _jQueryInterface(config) {
3559      return this.each(function () {
3560        var data = $(this).data(DATA_KEY$7);
3561
3562        var _config = typeof config === 'object' ? config : null;
3563
3564        if (!data && /dispose|hide/.test(config)) {
3565          return;
3566        }
3567
3568        if (!data) {
3569          data = new Popover(this, _config);
3570          $(this).data(DATA_KEY$7, data);
3571        }
3572
3573        if (typeof config === 'string') {
3574          if (typeof data[config] === 'undefined') {
3575            throw new TypeError("No method named \"" + config + "\"");
3576          }
3577
3578          data[config]();
3579        }
3580      });
3581    };
3582
3583    _createClass(Popover, null, [{
3584      key: "VERSION",
3585      // Getters
3586      get: function get() {
3587        return VERSION$7;
3588      }
3589    }, {
3590      key: "Default",
3591      get: function get() {
3592        return Default$5;
3593      }
3594    }, {
3595      key: "NAME",
3596      get: function get() {
3597        return NAME$7;
3598      }
3599    }, {
3600      key: "DATA_KEY",
3601      get: function get() {
3602        return DATA_KEY$7;
3603      }
3604    }, {
3605      key: "Event",
3606      get: function get() {
3607        return Event$7;
3608      }
3609    }, {
3610      key: "EVENT_KEY",
3611      get: function get() {
3612        return EVENT_KEY$7;
3613      }
3614    }, {
3615      key: "DefaultType",
3616      get: function get() {
3617        return DefaultType$5;
3618      }
3619    }]);
3620
3621    return Popover;
3622  }(Tooltip);
3623  /**
3624   * ------------------------------------------------------------------------
3625   * jQuery
3626   * ------------------------------------------------------------------------
3627   */
3628
3629
3630  $.fn[NAME$7] = Popover._jQueryInterface;
3631  $.fn[NAME$7].Constructor = Popover;
3632
3633  $.fn[NAME$7].noConflict = function () {
3634    $.fn[NAME$7] = JQUERY_NO_CONFLICT$7;
3635    return Popover._jQueryInterface;
3636  };
3637
3638  /**
3639   * ------------------------------------------------------------------------
3640   * Constants
3641   * ------------------------------------------------------------------------
3642   */
3643
3644  var NAME$8 = 'scrollspy';
3645  var VERSION$8 = '4.3.1';
3646  var DATA_KEY$8 = 'bs.scrollspy';
3647  var EVENT_KEY$8 = "." + DATA_KEY$8;
3648  var DATA_API_KEY$6 = '.data-api';
3649  var JQUERY_NO_CONFLICT$8 = $.fn[NAME$8];
3650  var Default$6 = {
3651    offset: 10,
3652    method: 'auto',
3653    target: ''
3654  };
3655  var DefaultType$6 = {
3656    offset: 'number',
3657    method: 'string',
3658    target: '(string|element)'
3659  };
3660  var Event$8 = {
3661    ACTIVATE: "activate" + EVENT_KEY$8,
3662    SCROLL: "scroll" + EVENT_KEY$8,
3663    LOAD_DATA_API: "load" + EVENT_KEY$8 + DATA_API_KEY$6
3664  };
3665  var ClassName$8 = {
3666    DROPDOWN_ITEM: 'dropdown-item',
3667    DROPDOWN_MENU: 'dropdown-menu',
3668    ACTIVE: 'active'
3669  };
3670  var Selector$8 = {
3671    DATA_SPY: '[data-spy="scroll"]',
3672    ACTIVE: '.active',
3673    NAV_LIST_GROUP: '.nav, .list-group',
3674    NAV_LINKS: '.nav-link',
3675    NAV_ITEMS: '.nav-item',
3676    LIST_ITEMS: '.list-group-item',
3677    DROPDOWN: '.dropdown',
3678    DROPDOWN_ITEMS: '.dropdown-item',
3679    DROPDOWN_TOGGLE: '.dropdown-toggle'
3680  };
3681  var OffsetMethod = {
3682    OFFSET: 'offset',
3683    POSITION: 'position'
3684    /**
3685     * ------------------------------------------------------------------------
3686     * Class Definition
3687     * ------------------------------------------------------------------------
3688     */
3689
3690  };
3691
3692  var ScrollSpy =
3693  /*#__PURE__*/
3694  function () {
3695    function ScrollSpy(element, config) {
3696      var _this = this;
3697
3698      this._element = element;
3699      this._scrollElement = element.tagName === 'BODY' ? window : element;
3700      this._config = this._getConfig(config);
3701      this._selector = this._config.target + " " + Selector$8.NAV_LINKS + "," + (this._config.target + " " + Selector$8.LIST_ITEMS + ",") + (this._config.target + " " + Selector$8.DROPDOWN_ITEMS);
3702      this._offsets = [];
3703      this._targets = [];
3704      this._activeTarget = null;
3705      this._scrollHeight = 0;
3706      $(this._scrollElement).on(Event$8.SCROLL, function (event) {
3707        return _this._process(event);
3708      });
3709      this.refresh();
3710
3711      this._process();
3712    } // Getters
3713
3714
3715    var _proto = ScrollSpy.prototype;
3716
3717    // Public
3718    _proto.refresh = function refresh() {
3719      var _this2 = this;
3720
3721      var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;
3722      var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
3723      var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
3724      this._offsets = [];
3725      this._targets = [];
3726      this._scrollHeight = this._getScrollHeight();
3727      var targets = [].slice.call(document.querySelectorAll(this._selector));
3728      targets.map(function (element) {
3729        var target;
3730        var targetSelector = Util.getSelectorFromElement(element);
3731
3732        if (targetSelector) {
3733          target = document.querySelector(targetSelector);
3734        }
3735
3736        if (target) {
3737          var targetBCR = target.getBoundingClientRect();
3738
3739          if (targetBCR.width || targetBCR.height) {
3740            // TODO (fat): remove sketch reliance on jQuery position/offset
3741            return [$(target)[offsetMethod]().top + offsetBase, targetSelector];
3742          }
3743        }
3744
3745        return null;
3746      }).filter(function (item) {
3747        return item;
3748      }).sort(function (a, b) {
3749        return a[0] - b[0];
3750      }).forEach(function (item) {
3751        _this2._offsets.push(item[0]);
3752
3753        _this2._targets.push(item[1]);
3754      });
3755    };
3756
3757    _proto.dispose = function dispose() {
3758      $.removeData(this._element, DATA_KEY$8);
3759      $(this._scrollElement).off(EVENT_KEY$8);
3760      this._element = null;
3761      this._scrollElement = null;
3762      this._config = null;
3763      this._selector = null;
3764      this._offsets = null;
3765      this._targets = null;
3766      this._activeTarget = null;
3767      this._scrollHeight = null;
3768    } // Private
3769    ;
3770
3771    _proto._getConfig = function _getConfig(config) {
3772      config = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {});
3773
3774      if (typeof config.target !== 'string') {
3775        var id = $(config.target).attr('id');
3776
3777        if (!id) {
3778          id = Util.getUID(NAME$8);
3779          $(config.target).attr('id', id);
3780        }
3781
3782        config.target = "#" + id;
3783      }
3784
3785      Util.typeCheckConfig(NAME$8, config, DefaultType$6);
3786      return config;
3787    };
3788
3789    _proto._getScrollTop = function _getScrollTop() {
3790      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
3791    };
3792
3793    _proto._getScrollHeight = function _getScrollHeight() {
3794      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
3795    };
3796
3797    _proto._getOffsetHeight = function _getOffsetHeight() {
3798      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
3799    };
3800
3801    _proto._process = function _process() {
3802      var scrollTop = this._getScrollTop() + this._config.offset;
3803
3804      var scrollHeight = this._getScrollHeight();
3805
3806      var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
3807
3808      if (this._scrollHeight !== scrollHeight) {
3809        this.refresh();
3810      }
3811
3812      if (scrollTop >= maxScroll) {
3813        var target = this._targets[this._targets.length - 1];
3814
3815        if (this._activeTarget !== target) {
3816          this._activate(target);
3817        }
3818
3819        return;
3820      }
3821
3822      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
3823        this._activeTarget = null;
3824
3825        this._clear();
3826
3827        return;
3828      }
3829
3830      var offsetLength = this._offsets.length;
3831
3832      for (var i = offsetLength; i--;) {
3833        var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
3834
3835        if (isActiveTarget) {
3836          this._activate(this._targets[i]);
3837        }
3838      }
3839    };
3840
3841    _proto._activate = function _activate(target) {
3842      this._activeTarget = target;
3843
3844      this._clear();
3845
3846      var queries = this._selector.split(',').map(function (selector) {
3847        return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]";
3848      });
3849
3850      var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));
3851
3852      if ($link.hasClass(ClassName$8.DROPDOWN_ITEM)) {
3853        $link.closest(Selector$8.DROPDOWN).find(Selector$8.DROPDOWN_TOGGLE).addClass(ClassName$8.ACTIVE);
3854        $link.addClass(ClassName$8.ACTIVE);
3855      } else {
3856        // Set triggered link as active
3857        $link.addClass(ClassName$8.ACTIVE); // Set triggered links parents as active
3858        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
3859
3860        $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_LINKS + ", " + Selector$8.
3860LIST_ITEMS).addClass(ClassName$8.ACTIVE); // Handle special case when .nav-link is inside .nav-item
3861
3862        $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_ITEMS).children(Selector$8.NAV_LINKS).addClass(ClassName$8.ACTIVE);
3863      }
3864
3865      $(this._scrollElement).trigger(Event$8.ACTIVATE, {
3866        relatedTarget: target
3867      });
3868    };
3869
3870    _proto._clear = function _clear() {
3871      [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {
3872        return node.classList.contains(ClassName$8.ACTIVE);
3873      }).forEach(function (node) {
3874        return node.classList.remove(ClassName$8.ACTIVE);
3875      });
3876    } // Static
3877    ;
3878
3879    ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
3880      return this.each(function () {
3881        var data = $(this).data(DATA_KEY$8);
3882
3883        var _config = typeof config === 'object' && config;
3884
3885        if (!data) {
3886          data = new ScrollSpy(this, _config);
3887          $(this).data(DATA_KEY$8, data);
3888        }
3889
3890        if (typeof config === 'string') {
3891          if (typeof data[config] === 'undefined') {
3892            throw new TypeError("No method named \"" + config + "\"");
3893          }
3894
3895          data[config]();
3896        }
3897      });
3898    };
3899
3900    _createClass(ScrollSpy, null, [{
3901      key: "VERSION",
3902      get: function get() {
3903        return VERSION$8;
3904      }
3905    }, {
3906      key: "Default",
3907      get: function get() {
3908        return Default$6;
3909      }
3910    }]);
3911
3912    return ScrollSpy;
3913  }();
3914  /**
3915   * ------------------------------------------------------------------------
3916   * Data Api implementation
3917   * ------------------------------------------------------------------------
3918   */
3919
3920
3921  $(window).on(Event$8.LOAD_DATA_API, function () {
3922    var scrollSpys = [].slice.call(document.querySelectorAll(Selector$8.DATA_SPY));
3923    var scrollSpysLength = scrollSpys.length;
3924
3925    for (var i = scrollSpysLength; i--;) {
3926      var $spy = $(scrollSpys[i]);
3927
3928      ScrollSpy._jQueryInterface.call($spy, $spy.data());
3929    }
3930  });
3931  /**
3932   * ------------------------------------------------------------------------
3933   * jQuery
3934   * ------------------------------------------------------------------------
3935   */
3936
3937  $.fn[NAME$8] = ScrollSpy._jQueryInterface;
3938  $.fn[NAME$8].Constructor = ScrollSpy;
3939
3940  $.fn[NAME$8].noConflict = function () {
3941    $.fn[NAME$8] = JQUERY_NO_CONFLICT$8;
3942    return ScrollSpy._jQueryInterface;
3943  };
3944
3945  /**
3946   * ------------------------------------------------------------------------
3947   * Constants
3948   * ------------------------------------------------------------------------
3949   */
3950
3951  var NAME$9 = 'tab';
3952  var VERSION$9 = '4.3.1';
3953  var DATA_KEY$9 = 'bs.tab';
3954  var EVENT_KEY$9 = "." + DATA_KEY$9;
3955  var DATA_API_KEY$7 = '.data-api';
3956  var JQUERY_NO_CONFLICT$9 = $.fn[NAME$9];
3957  var Event$9 = {
3958    HIDE: "hide" + EVENT_KEY$9,
3959    HIDDEN: "hidden" + EVENT_KEY$9,
3960    SHOW: "show" + EVENT_KEY$9,
3961    SHOWN: "shown" + EVENT_KEY$9,
3962    CLICK_DATA_API: "click" + EVENT_KEY$9 + DATA_API_KEY$7
3963  };
3964  var ClassName$9 = {
3965    DROPDOWN_MENU: 'dropdown-menu',
3966    ACTIVE: 'active',
3967    DISABLED: 'disabled',
3968    FADE: 'fade',
3969    SHOW: 'show'
3970  };
3971  var Selector$9 = {
3972    DROPDOWN: '.dropdown',
3973    NAV_LIST_GROUP: '.nav, .list-group',
3974    ACTIVE: '.active',
3975    ACTIVE_UL: '> li > .active',
3976    DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
3977    DROPDOWN_TOGGLE: '.dropdown-toggle',
3978    DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
3979    /**
3980     * ------------------------------------------------------------------------
3981     * Class Definition
3982     * ------------------------------------------------------------------------
3983     */
3984
3985  };
3986
3987  var Tab =
3988  /*#__PURE__*/
3989  function () {
3990    function Tab(element) {
3991      this._element = element;
3992    } // Getters
3993
3994
3995    var _proto = Tab.prototype;
3996
3997    // Public
3998    _proto.show = function show() {
3999      var _this = this;
4000
4001      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName$9.ACTIVE) || $(this._element).hasClass(ClassName$9.DISABLED)) {
4002        return;
4003      }
4004
4005      var target;
4006      var previous;
4007      var listElement = $(this._element).closest(Selector$9.NAV_LIST_GROUP)[0];
4008      var selector = Util.getSelectorFromElement(this._element);
4009
4010      if (listElement) {
4011        var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector$9.ACTIVE_UL : Selector$9.ACTIVE;
4012        previous = $.makeArray($(listElement).find(itemSelector));
4013        previous = previous[previous.length - 1];
4014      }
4015
4016      var hideEvent = $.Event(Event$9.HIDE, {
4017        relatedTarget: this._element
4018      });
4019      var showEvent = $.Event(Event$9.SHOW, {
4020        relatedTarget: previous
4021      });
4022
4023      if (previous) {
4024        $(previous).trigger(hideEvent);
4025      }
4026
4027      $(this._element).trigger(showEvent);
4028
4029      if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
4030        return;
4031      }
4032
4033      if (selector) {
4034        target = document.querySelector(selector);
4035      }
4036
4037      this._activate(this._element, listElement);
4038
4039      var complete = function complete() {
4040        var hiddenEvent = $.Event(Event$9.HIDDEN, {
4041          relatedTarget: _this._element
4042        });
4043        var shownEvent = $.Event(Event$9.SHOWN, {
4044          relatedTarget: previous
4045        });
4046        $(previous).trigger(hiddenEvent);
4047        $(_this._element).trigger(shownEvent);
4048      };
4049
4050      if (target) {
4051        this._activate(target, target.parentNode, complete);
4052      } else {
4053        complete();
4054      }
4055    };
4056
4057    _proto.dispose = function dispose() {
4058      $.removeData(this._element, DATA_KEY$9);
4059      this._element = null;
4060    } // Private
4061    ;
4062
4063    _proto._activate = function _activate(element, container, callback) {
4064      var _this2 = this;
4065
4066      var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(Selector$9.ACTIVE_UL) : $(container).children(Selector$9.ACTIVE);
4067      var active = activeElements[0];
4068      var isTransitioning = callback && active && $(active).hasClass(ClassName$9.FADE);
4069
4070      var complete = function complete() {
4071        return _this2._transitionComplete(element, active, callback);
4072      };
4073
4074      if (active && isTransitioning) {
4075        var transitionDuration = Util.getTransitionDurationFromElement(active);
4076        $(active).removeClass(ClassName$9.SHOW).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4077      } else {
4078        complete();
4079      }
4080    };
4081
4082    _proto._transitionComplete = function _transitionComplete(element, active, callback) {
4083      if (active) {
4084        $(active).removeClass(ClassName$9.ACTIVE);
4085        var dropdownChild = $(active.parentNode).find(Selector$9.DROPDOWN_ACTIVE_CHILD)[0];
4086
4087        if (dropdownChild) {
4088          $(dropdownChild).removeClass(ClassName$9.ACTIVE);
4089        }
4090
4091        if (active.getAttribute('role') === 'tab') {
4092          active.setAttribute('aria-selected', false);
4093        }
4094      }
4095
4096      $(element).addClass(ClassName$9.ACTIVE);
4097
4098      if (element.getAttribute('role') === 'tab') {
4099        element.setAttribute('aria-selected', true);
4100      }
4101
4102      Util.reflow(element);
4103
4104      if (element.classList.contains(ClassName$9.FADE)) {
4105        element.classList.add(ClassName$9.SHOW);
4106      }
4107
4108      if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) {
4109        var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0];
4110
4111        if (dropdownElement) {
4112          var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector$9.DROPDOWN_TOGGLE));
4113          $(dropdownToggleList).addClass(ClassName$9.ACTIVE);
4114        }
4115
4116        element.setAttribute('aria-expanded', true);
4117      }
4118
4119      if (callback) {
4120        callback();
4121      }
4122    } // Static
4123    ;
4124
4125    Tab._jQueryInterface = function _jQueryInterface(config) {
4126      return this.each(function () {
4127        var $this = $(this);
4128        var data = $this.data(DATA_KEY$9);
4129
4130        if (!data) {
4131          data = new Tab(this);
4132          $this.data(DATA_KEY$9, data);
4133        }
4134
4135        if (typeof config === 'string') {
4136          if (typeof data[config] === 'undefined') {
4137            throw new TypeError("No method named \"" + config + "\"");
4138          }
4139
4140          data[config]();
4141        }
4142      });
4143    };
4144
4145    _createClass(Tab, null, [{
4146      key: "VERSION",
4147      get: function get() {
4148        return VERSION$9;
4149      }
4150    }]);
4151
4152    return Tab;
4153  }();
4154  /**
4155   * ------------------------------------------------------------------------
4156   * Data Api implementation
4157   * ------------------------------------------------------------------------
4158   */
4159
4160
4161  $(document).on(Event$9.CLICK_DATA_API, Selector$9.DATA_TOGGLE, function (event) {
4162    event.preventDefault();
4163
4164    Tab._jQueryInterface.call($(this), 'show');
4165  });
4166  /**
4167   * ------------------------------------------------------------------------
4168   * jQuery
4169   * ------------------------------------------------------------------------
4170   */
4171
4172  $.fn[NAME$9] = Tab._jQueryInterface;
4173  $.fn[NAME$9].Constructor = Tab;
4174
4175  $.fn[NAME$9].noConflict = function () {
4176    $.fn[NAME$9] = JQUERY_NO_CONFLICT$9;
4177    return Tab._jQueryInterface;
4178  };
4179
4180  /**
4181   * ------------------------------------------------------------------------
4182   * Constants
4183   * ------------------------------------------------------------------------
4184   */
4185
4186  var NAME$a = 'toast';
4187  var VERSION$a = '4.3.1';
4188  var DATA_KEY$a = 'bs.toast';
4189  var EVENT_KEY$a = "." + DATA_KEY$a;
4190  var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];
4191  var Event$a = {
4192    CLICK_DISMISS: "click.dismiss" + EVENT_KEY$a,
4193    HIDE: "hide" + EVENT_KEY$a,
4194    HIDDEN: "hidden" + EVENT_KEY$a,
4195    SHOW: "show" + EVENT_KEY$a,
4196    SHOWN: "shown" + EVENT_KEY$a
4197  };
4198  var ClassName$a = {
4199    FADE: 'fade',
4200    HIDE: 'hide',
4201    SHOW: 'show',
4202    SHOWING: 'showing'
4203  };
4204  var DefaultType$7 = {
4205    animation: 'boolean',
4206    autohide: 'boolean',
4207    delay: 'number'
4208  };
4209  var Default$7 = {
4210    animation: true,
4211    autohide: true,
4212    delay: 500
4213  };
4214  var Selector$a = {
4215    DATA_DISMISS: '[data-dismiss="toast"]'
4216    /**
4217     * ------------------------------------------------------------------------
4218     * Class Definition
4219     * ------------------------------------------------------------------------
4220     */
4221
4222  };
4223
4224  var Toast =
4225  /*#__PURE__*/
4226  function () {
4227    function Toast(element, config) {
4228      this._element = element;
4229      this._config = this._getConfig(config);
4230      this._timeout = null;
4231
4232      this._setListeners();
4233    } // Getters
4234
4235
4236    var _proto = Toast.prototype;
4237
4238    // Public
4239    _proto.show = function show() {
4240      var _this = this;
4241
4242      $(this._element).trigger(Event$a.SHOW);
4243
4244      if (this._config.animation) {
4245        this._element.classList.add(ClassName$a.FADE);
4246      }
4247
4248      var complete = function complete() {
4249        _this._element.classList.remove(ClassName$a.SHOWING);
4250
4251        _this._element.classList.add(ClassName$a.SHOW);
4252
4253        $(_this._element).trigger(Event$a.SHOWN);
4254
4255        if (_this._config.autohide) {
4256          _this.hide();
4257        }
4258      };
4259
4260      this._element.classList.remove(ClassName$a.HIDE);
4261
4262      this._element.classList.add(ClassName$a.SHOWING);
4263
4264      if (this._config.animation) {
4265        var transitionDuration = Util.getTransitionDurationFromElement(this._element);
4266        $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4267      } else {
4268        complete();
4269      }
4270    };
4271
4272    _proto.hide = function hide(withoutTimeout) {
4273      var _this2 = this;
4274
4275      if (!this._element.classList.contains(ClassName$a.SHOW)) {
4276        return;
4277      }
4278
4279      $(this._element).trigger(Event$a.HIDE);
4280
4281      if (withoutTimeout) {
4282        this._close();
4283      } else {
4284        this._timeout = setTimeout(function () {
4285          _this2._close();
4286        }, this._config.delay);
4287      }
4288    };
4289
4290    _proto.dispose = function dispose() {
4291      clearTimeout(this._timeout);
4292      this._timeout = null;
4293
4294      if (this._element.classList.contains(ClassName$a.SHOW)) {
4295        this._element.classList.remove(ClassName$a.SHOW);
4296      }
4297
4298      $(this._element).off(Event$a.CLICK_DISMISS);
4299      $.removeData(this._element, DATA_KEY$a);
4300      this._element = null;
4301      this._config = null;
4302    } // Private
4303    ;
4304
4305    _proto._getConfig = function _getConfig(config) {
4306      config = _objectSpread({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});
4307      Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);
4308      return config;
4309    };
4310
4311    _proto._setListeners = function _setListeners() {
4312      var _this3 = this;
4313
4314      $(this._element).on(Event$a.CLICK_DISMISS, Selector$a.DATA_DISMISS, function () {
4315        return _this3.hide(true);
4316      });
4317    };
4318
4319    _proto._close = function _close() {
4320      var _this4 = this;
4321
4322      var complete = function complete() {
4323        _this4._element.classList.add(ClassName$a.HIDE);
4324
4325        $(_this4._element).trigger(Event$a.HIDDEN);
4326      };
4327
4328      this._element.classList.remove(ClassName$a.SHOW);
4329
4330      if (this._config.animation) {
4331        var transitionDuration = Util.getTransitionDurationFromElement(this._element);
4332        $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4333      } else {
4334        complete();
4335      }
4336    } // Static
4337    ;
4338
4339    Toast._jQueryInterface = function _jQueryInterface(config) {
4340      return this.each(function () {
4341        var $element = $(this);
4342        var data = $element.data(DATA_KEY$a);
4343
4344        var _config = typeof config === 'object' && config;
4345
4346        if (!data) {
4347          data = new Toast(this, _config);
4348          $element.data(DATA_KEY$a, data);
4349        }
4350
4351        if (typeof config === 'string') {
4352          if (typeof data[config] === 'undefined') {
4353            throw new TypeError("No method named \"" + config + "\"");
4354          }
4355
4356          data[config](this);
4357        }
4358      });
4359    };
4360
4361    _createClass(Toast, null, [{
4362      key: "VERSION",
4363      get: function get() {
4364        return VERSION$a;
4365      }
4366    }, {
4367      key: "DefaultType",
4368      get: function get() {
4369        return DefaultType$7;
4370      }
4371    }, {
4372      key: "Default",
4373      get: function get() {
4374        return Default$7;
4375      }
4376    }]);
4377
4378    return Toast;
4379  }();
4380  /**
4381   * ------------------------------------------------------------------------
4382   * jQuery
4383   * ------------------------------------------------------------------------
4384   */
4385
4386
4387  $.fn[NAME$a] = Toast._jQueryInterface;
4388  $.fn[NAME$a].Constructor = Toast;
4389
4390  $.fn[NAME$a].noConflict = function () {
4391    $.fn[NAME$a] = JQUERY_NO_CONFLICT$a;
4392    return Toast._jQueryInterface;
4393  };
4394
4395  /**
4396   * --------------------------------------------------------------------------
4397   * Bootstrap (v4.3.1): index.js
4398   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
4399   * --------------------------------------------------------------------------
4400   */
4401
4402  (function () {
4403    if (typeof $ === 'undefined') {
4404      throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
4405    }
4406
4407    var version = $.fn.jquery.split(' ')[0].split('.');
4408    var minMajor = 1;
4409    var ltMajor = 2;
4410    var minMinor = 9;
4411    var minPatch = 1;
4412    var maxMajor = 4;
4413
4414    if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
4415      throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
4416    }
4417  })();
4418
4419  exports.Util = Util;
4420  exports.Alert = Alert;
4421  exports.Button = Button;
4422  exports.Carousel = Carousel;
4423  exports.Collapse = Collapse;
4424  exports.Dropdown = Dropdown;
4425  exports.Modal = Modal;
4426  exports.Popover = Popover;
4427  exports.Scrollspy = ScrollSpy;
4428  exports.Tab = Tab;
4429  exports.Toast = Toast;
4430  exports.Tooltip = Tooltip;
4431
4432  Object.defineProperty(exports, '__esModule', { value: true });
4433
4434}));
4435//# sourceMappingURL=bootstrap.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.